From 862de2af4bf771b04097d81d87f9b23f05b6170d Mon Sep 17 00:00:00 2001 From: "Justin R. Evans" <330911+jurevans@users.noreply.github.com> Date: Wed, 28 Aug 2024 07:21:57 -0400 Subject: [PATCH 1/6] feat/1012: Improve Tx API in SDK (#1033) * feat: add Tx schema and type for inspecting transactions from SDK * feat: continue hooking up new Tx type * fix: serialize and deserialize properly * feat: support all existing Tx * feat: improve signing & broadcast API * docs: regenerate docs for types & sdk --- .../src/Setup/Ledger/LedgerConfirmation.tsx | 1 + .../src/background/approvals/handler.test.ts | 16 +- .../src/background/approvals/service.test.ts | 18 +- .../src/background/approvals/service.ts | 29 +- .../src/background/approvals/types.ts | 19 +- .../src/background/keyring/keyring.ts | 6 +- .../src/background/keyring/service.ts | 6 +- apps/extension/src/provider/Namada.ts | 8 +- apps/extension/src/provider/Signer.ts | 4 +- apps/extension/src/utils/index.ts | 31 +- .../src/App/Governance/SubmitVote.tsx | 4 +- .../src/atoms/notifications/functions.ts | 8 +- .../src/hooks/useTransactionNotifications.tsx | 5 +- apps/namadillo/src/lib/query.ts | 42 ++- apps/namadillo/src/types/events.ts | 4 +- packages/sdk/docs/classes/BuiltTx.md | 140 --------- packages/sdk/docs/classes/Crypto.md | 14 +- packages/sdk/docs/classes/EncodedTx.md | 122 -------- packages/sdk/docs/classes/Ledger.md | 18 +- packages/sdk/docs/classes/Masp.md | 16 +- packages/sdk/docs/classes/Mnemonic.md | 10 +- packages/sdk/docs/classes/Rpc.md | 39 +-- packages/sdk/docs/classes/Sdk.md | 44 +-- packages/sdk/docs/classes/SignedTx.md | 61 ---- packages/sdk/docs/classes/Signing.md | 14 +- packages/sdk/docs/classes/Tx.md | 130 ++++----- packages/sdk/docs/enums/KdfType.md | 4 +- packages/sdk/docs/enums/PhraseSize.md | 4 +- packages/sdk/docs/modules.md | 47 ++- packages/sdk/examples/submitTransfer.ts | 14 +- packages/sdk/src/index.ts | 4 +- packages/sdk/src/rpc/rpc.ts | 24 +- packages/sdk/src/signing.ts | 13 +- packages/sdk/src/tests/tx.test.ts | 6 +- packages/sdk/src/tx/tx.ts | 134 ++++----- packages/sdk/src/tx/types.ts | 61 +--- packages/shared/lib/src/sdk/args.rs | 2 +- packages/shared/lib/src/sdk/mod.rs | 274 +++++------------- packages/shared/lib/src/sdk/tx.rs | 129 ++++++++- .../docs/classes/BatchTxResultMsgValue.md | 6 +- packages/types/docs/classes/BondMsgValue.md | 8 +- .../docs/classes/ClaimRewardsMsgValue.md | 6 +- .../types/docs/classes/CommitmentMsgValue.md | 10 +- .../docs/classes/EthBridgeTransferMsgValue.md | 18 +- .../types/docs/classes/IbcTransferMsgValue.md | 22 +- packages/types/docs/classes/Message.md | 4 +- .../types/docs/classes/RedelegateMsgValue.md | 10 +- .../types/docs/classes/RevealPkMsgValue.md | 4 +- .../types/docs/classes/SignatureMsgValue.md | 12 +- .../types/docs/classes/SigningDataMsgValue.md | 87 ++++++ .../docs/classes/TransferDataMsgValue.md | 6 +- .../types/docs/classes/TransferMsgValue.md | 6 +- .../TransparentTransferDataMsgValue.md | 10 +- .../classes/TransparentTransferMsgValue.md | 4 +- .../types/docs/classes/TxDetailsMsgValue.md | 4 +- packages/types/docs/classes/TxMsgValue.md | 76 +++++ .../types/docs/classes/TxResponseMsgValue.md | 16 +- packages/types/docs/classes/UnbondMsgValue.md | 8 +- .../docs/classes/VoteProposalMsgValue.md | 8 +- .../types/docs/classes/WithdrawMsgValue.md | 6 +- .../types/docs/classes/WrapperTxMsgValue.md | 14 +- packages/types/docs/enums/AccountType.md | 8 +- packages/types/docs/enums/BridgeType.md | 4 +- packages/types/docs/enums/Events.md | 8 +- packages/types/docs/enums/KeplrEvents.md | 2 +- packages/types/docs/enums/MetamaskEvents.md | 4 +- packages/types/docs/interfaces/IMessage.md | 2 +- packages/types/docs/interfaces/Namada.md | 18 +- packages/types/docs/interfaces/Signer.md | 14 +- packages/types/docs/modules.md | 184 ++++++------ packages/types/src/namada.ts | 5 +- packages/types/src/signer.ts | 8 +- packages/types/src/tx/schema/index.ts | 4 + packages/types/src/tx/schema/tx.ts | 53 ++++ packages/types/src/tx/types.ts | 4 + 75 files changed, 1003 insertions(+), 1185 deletions(-) delete mode 100644 packages/sdk/docs/classes/BuiltTx.md delete mode 100644 packages/sdk/docs/classes/EncodedTx.md delete mode 100644 packages/sdk/docs/classes/SignedTx.md create mode 100644 packages/types/docs/classes/SigningDataMsgValue.md create mode 100644 packages/types/docs/classes/TxMsgValue.md create mode 100644 packages/types/src/tx/schema/tx.ts diff --git a/apps/extension/src/Setup/Ledger/LedgerConfirmation.tsx b/apps/extension/src/Setup/Ledger/LedgerConfirmation.tsx index c716b0186..a5a30b8d0 100644 --- a/apps/extension/src/Setup/Ledger/LedgerConfirmation.tsx +++ b/apps/extension/src/Setup/Ledger/LedgerConfirmation.tsx @@ -22,6 +22,7 @@ export const LedgerConfirmation = (): JSX.Element => { Finish Setup diff --git a/apps/extension/src/background/approvals/handler.test.ts b/apps/extension/src/background/approvals/handler.test.ts index fdc0b38aa..408b65297 100644 --- a/apps/extension/src/background/approvals/handler.test.ts +++ b/apps/extension/src/background/approvals/handler.test.ts @@ -1,4 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ +import { WrapperTxMsgValue } from "@namada/types"; +import BigNumber from "bignumber.js"; import createMockInstance from "jest-create-mock-instance"; import { ApproveConnectInterfaceMsg, @@ -46,7 +48,19 @@ describe("approvals handler", () => { }; const approveTxMsg = new ApproveSignTxMsg( - [{ txBytes: "", signingDataBytes: [""] }], + [ + { + args: new WrapperTxMsgValue({ + token: "", + feeAmount: BigNumber(0), + gasLimit: BigNumber(0), + chainId: "", + }), + hash: "", + bytes: "", + signingData: [], + }, + ], "signer" ); diff --git a/apps/extension/src/background/approvals/service.test.ts b/apps/extension/src/background/approvals/service.test.ts index d54c41122..783eb71cf 100644 --- a/apps/extension/src/background/approvals/service.test.ts +++ b/apps/extension/src/background/approvals/service.test.ts @@ -1,9 +1,11 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ +import { WrapperTxMsgValue } from "@namada/types"; import { paramsToUrl } from "@namada/utils"; import { ChainsService } from "background/chains"; import { KeyRingService } from "background/keyring"; import { SdkService } from "background/sdk"; import { VaultService } from "background/vault"; +import BigNumber from "bignumber.js"; import { ExtensionBroadcaster } from "extension"; import createMockInstance from "jest-create-mock-instance"; import { LocalStorage } from "storage"; @@ -210,16 +212,22 @@ describe("approvals service", () => { it("should reject resolver", async () => { const tabId = 1; const signer = "signer"; - // data expected to be base64-encoded - const txBytes = "dHhEYXRh"; // "txData" - const signingDataBytes = "c2lnbmluZ0RhdGE="; // "signingData" + // tx bytes expected to be base64-encoded + const bytes = "dHhEYXRh"; // "txData" (keyRingService.queryAccountDetails as any).mockResolvedValue(() => ({})); const signaturePromise = service.approveSignTx(signer, [ { - txBytes, - signingDataBytes: [signingDataBytes], + args: new WrapperTxMsgValue({ + token: "", + feeAmount: BigNumber(0), + gasLimit: BigNumber(0), + chainId: "", + }), + hash: "", + bytes, + signingData: [], }, ]); diff --git a/apps/extension/src/background/approvals/service.ts b/apps/extension/src/background/approvals/service.ts index 58ff79ae0..b255be9f6 100644 --- a/apps/extension/src/background/approvals/service.ts +++ b/apps/extension/src/background/approvals/service.ts @@ -1,8 +1,7 @@ -import { fromBase64, toBase64 } from "@cosmjs/encoding"; +import { toBase64 } from "@cosmjs/encoding"; import { v4 as uuid } from "uuid"; import browser, { Windows } from "webextension-polyfill"; -import { BuiltTx } from "@heliax/namada-sdk/web"; import { KVStore } from "@namada/storage"; import { SignArbitraryResponse, TxDetails } from "@namada/types"; import { paramsToUrl } from "@namada/utils"; @@ -14,6 +13,7 @@ import { SdkService } from "background/sdk"; import { VaultService } from "background/vault"; import { ExtensionBroadcaster } from "extension"; import { LocalStorage } from "storage"; +import { fromEncodedTx } from "utils"; import { EncodedTxData, PendingTx } from "./types"; export class ApprovalsService { @@ -50,12 +50,10 @@ export class ApprovalsService { const pendingTx: PendingTx = { signer, - txs: txs.map(({ txBytes, signingDataBytes }) => ({ - txBytes: fromBase64(txBytes), - signingDataBytes: signingDataBytes.map((bytes) => fromBase64(bytes)), - })), + txs: txs.map((encodedTx) => fromEncodedTx(encodedTx)), checksums, }; + await this.txStore.set(msgId, pendingTx); const url = `${browser.runtime.getURL( @@ -122,16 +120,9 @@ export class ApprovalsService { throw new Error(`Signing data for ${msgId} not found!`); } - const txs = pendingTx.txs.map(({ txBytes, signingDataBytes }) => { - return new BuiltTx( - txBytes, - signingDataBytes.map((sdBytes) => [...sdBytes]) - ); - }); - try { const signedBytes: Uint8Array[] = []; - for await (const tx of txs) { + for await (const tx of pendingTx.txs) { signedBytes.push(await this.keyRingService.sign(tx, signer)); } resolvers.resolve(signedBytes); @@ -165,8 +156,8 @@ export class ApprovalsService { const { tx } = this.sdkService.getSdk(); try { - const signedTxs = pendingTx.txs.map(({ txBytes }, i) => { - return tx.appendSignature(txBytes, responseSign[i]); + const signedTxs = pendingTx.txs.map(({ bytes }, i) => { + return tx.appendSignature(bytes, responseSign[i]); }); resolvers.resolve(signedTxs); } catch (e) { @@ -303,8 +294,8 @@ export class ApprovalsService { } const { tx } = this.sdkService.getSdk(); - return pendingTx.txs.map(({ txBytes }) => - tx.deserialize(txBytes, pendingTx.checksums || {}) + return pendingTx.txs.map(({ bytes }) => + tx.deserialize(bytes, pendingTx.checksums || {}) ); } @@ -316,7 +307,7 @@ export class ApprovalsService { } if (pendingTx.txs) { - return pendingTx.txs.map(({ txBytes }) => toBase64(txBytes)); + return pendingTx.txs.map(({ bytes }) => toBase64(bytes)); } } diff --git a/apps/extension/src/background/approvals/types.ts b/apps/extension/src/background/approvals/types.ts index 2e56657fd..b52c9f7be 100644 --- a/apps/extension/src/background/approvals/types.ts +++ b/apps/extension/src/background/approvals/types.ts @@ -1,17 +1,24 @@ -import { TxData } from "@namada/types"; +import { SigningDataProps, TxProps } from "@namada/types"; export type ApprovedOriginsStore = string[]; export type PendingTx = { - txs: TxData[]; + txs: TxProps[]; signer: string; checksums?: Record; }; export type PendingSignArbitrary = string; -// base64 encoded Tx data for use with postMessage -export type EncodedTxData = { - txBytes: string; - signingDataBytes: string[]; +// base64 encoded Uint8Arrays for use with postMessage +export type EncodedSigningData = Pick< + SigningDataProps, + "publicKeys" | "threshold" | "feePayer" | "owner" +> & { + accountPublicKeysMap?: string; +}; + +export type EncodedTxData = Pick & { + bytes: string; + signingData: EncodedSigningData[]; }; diff --git a/apps/extension/src/background/keyring/keyring.ts b/apps/extension/src/background/keyring/keyring.ts index d91dc6df2..c784ef4f8 100644 --- a/apps/extension/src/background/keyring/keyring.ts +++ b/apps/extension/src/background/keyring/keyring.ts @@ -5,6 +5,7 @@ import { Bip44Path, DerivedAccount, SignArbitraryResponse, + TxProps, } from "@namada/types"; import { Result, assertNever, truncateInMiddle } from "@namada/utils"; @@ -19,7 +20,6 @@ import { UtilityStore, } from "./types"; -import { BuiltTx } from "@namada/shared"; import { SdkService } from "background/sdk"; import { VaultService } from "background/vault"; import { KeyStore, KeyStoreType, SensitiveType, VaultStorage } from "storage"; @@ -544,14 +544,14 @@ export class KeyRing { } async sign( - builtTx: BuiltTx, + txProps: TxProps, signer: string, chainId: string ): Promise { await this.vaultService.assertIsUnlocked(); const key = await this.getSigningKey(signer); const { signing } = this.sdkService.getSdk(); - return await signing.sign(builtTx, key, chainId); + return await signing.sign(txProps, key, chainId); } async signArbitrary( diff --git a/apps/extension/src/background/keyring/service.ts b/apps/extension/src/background/keyring/service.ts index a343739e1..c98311d11 100644 --- a/apps/extension/src/background/keyring/service.ts +++ b/apps/extension/src/background/keyring/service.ts @@ -5,10 +5,10 @@ import { Bip44Path, DerivedAccount, SignArbitraryResponse, + TxProps, } from "@namada/types"; import { Result, truncateInMiddle } from "@namada/utils"; -import { BuiltTx } from "@namada/shared"; import { ChainsService } from "background/chains"; import { SdkService } from "background/sdk/service"; import { VaultService } from "background/vault"; @@ -167,9 +167,9 @@ export class KeyRingService { return await IndexedDBKVStore.durabilityCheck(); } - async sign(builtTx: BuiltTx, signer: string): Promise { + async sign(txProps: TxProps, signer: string): Promise { const { chainId } = await this.chainsService.getChain(); - return await this._keyRing.sign(builtTx, signer, chainId); + return await this._keyRing.sign(txProps, signer, chainId); } async signArbitrary( diff --git a/apps/extension/src/provider/Namada.ts b/apps/extension/src/provider/Namada.ts index 775db3a44..653b8285a 100644 --- a/apps/extension/src/provider/Namada.ts +++ b/apps/extension/src/provider/Namada.ts @@ -1,4 +1,3 @@ -import { toBase64 } from "@cosmjs/encoding"; import { Chain, DerivedAccount, @@ -10,6 +9,7 @@ import { } from "@namada/types"; import { MessageRequester, Ports } from "router"; +import { toEncodedTx } from "utils"; import { ApproveConnectInterfaceMsg, ApproveSignArbitraryMsg, @@ -65,10 +65,8 @@ export class Namada implements INamada { return await this.requester?.sendMessage( Ports.Background, new ApproveSignTxMsg( - txs.map(({ txBytes, signingDataBytes }) => ({ - txBytes: toBase64(txBytes), - signingDataBytes: signingDataBytes.map((bytes) => toBase64(bytes)), - })), + // Encode all transactions for use with postMessage + txs.map((txProps) => toEncodedTx(txProps)), signer, checksums ) diff --git a/apps/extension/src/provider/Signer.ts b/apps/extension/src/provider/Signer.ts index b1cff4997..1884d98f4 100644 --- a/apps/extension/src/provider/Signer.ts +++ b/apps/extension/src/provider/Signer.ts @@ -5,7 +5,7 @@ import { Signer as ISigner, Namada, SignArbitraryResponse, - TxData, + TxProps, } from "@namada/types"; export class Signer implements ISigner { @@ -44,7 +44,7 @@ export class Signer implements ISigner { } public async sign( - tx: TxData | TxData[], + tx: TxProps | TxProps[], signer: string, checksums?: Record ): Promise { diff --git a/apps/extension/src/utils/index.ts b/apps/extension/src/utils/index.ts index e269f8f85..a6d040afd 100644 --- a/apps/extension/src/utils/index.ts +++ b/apps/extension/src/utils/index.ts @@ -1,7 +1,10 @@ +import { fromBase64, toBase64 } from "@cosmjs/encoding"; +import { TxProps } from "@namada/types"; import { v5 as uuid } from "uuid"; import browser from "webextension-polyfill"; import { Result } from "@namada/utils"; +import { EncodedTxData } from "background/approvals"; /** * Query the current extension tab and close it @@ -55,11 +58,33 @@ export const validatePrivateKey = ( ): Result => privateKey.length > PRIVATE_KEY_MAX_LENGTH ? Result.err({ t: "TooLong", maxLength: PRIVATE_KEY_MAX_LENGTH }) - : !/^[0-9a-f]*$/.test(privateKey) ? Result.err({ t: "BadCharacter" }) - : Result.ok(null); + : !/^[0-9a-f]*$/.test(privateKey) ? Result.err({ t: "BadCharacter" }) + : Result.ok(null); // Remove prefix from private key, which may be present when exporting keys from CLI export const filterPrivateKeyPrefix = (privateKey: string): string => privateKey.length === PRIVATE_KEY_MAX_LENGTH + 2 ? privateKey.replace(/^00/, "") - : privateKey; + : privateKey; + +// Convert any Uint8Arrays in TxProps to string, and construct EncodedTxData +export const toEncodedTx = (txProps: TxProps): EncodedTxData => ({ + ...txProps, + bytes: toBase64(txProps.bytes), + signingData: txProps.signingData.map((sd) => ({ + ...sd, + accountPublicKeysMap: + sd.accountPublicKeysMap ? toBase64(sd.accountPublicKeysMap) : undefined, + })), +}); + +// Convert base64 strings back to Uint8Arrays in EncodedTxData to restore TxProps +export const fromEncodedTx = (encodedTxData: EncodedTxData): TxProps => ({ + ...encodedTxData, + bytes: fromBase64(encodedTxData.bytes), + signingData: encodedTxData.signingData.map((sd) => ({ + ...sd, + accountPublicKeysMap: + sd.accountPublicKeysMap ? fromBase64(sd.accountPublicKeysMap) : undefined, + })), +}); diff --git a/apps/namadillo/src/App/Governance/SubmitVote.tsx b/apps/namadillo/src/App/Governance/SubmitVote.tsx index b742d5353..546d32372 100644 --- a/apps/namadillo/src/App/Governance/SubmitVote.tsx +++ b/apps/namadillo/src/App/Governance/SubmitVote.tsx @@ -1,4 +1,3 @@ -import { BuiltTx } from "@heliax/namada-sdk/web"; import { ActionButton, Modal, @@ -7,6 +6,7 @@ import { TickedRadioList, } from "@namada/components"; import { + TxProps, VoteProposalProps, VoteType, isVoteType, @@ -80,7 +80,7 @@ export const WithProposalId: React.FC<{ proposalId: bigint }> = ({ const onCloseModal = (): void => navigate(-1); - const dispatchPendingNotification = (txs: BuiltTx[]): void => { + const dispatchPendingNotification = (txs: TxProps[]): void => { dispatchNotification({ id: createNotificationId(txs), type: "pending", diff --git a/apps/namadillo/src/atoms/notifications/functions.ts b/apps/namadillo/src/atoms/notifications/functions.ts index d54dbe4a5..e785b2cbe 100644 --- a/apps/namadillo/src/atoms/notifications/functions.ts +++ b/apps/namadillo/src/atoms/notifications/functions.ts @@ -1,9 +1,9 @@ -import { BuiltTx } from "@heliax/namada-sdk/web"; +import { TxProps } from "@namada/types"; -export const createNotificationId = (data?: BuiltTx | BuiltTx[]): string => { +export const createNotificationId = (data?: TxProps | TxProps[]): string => { if (!data) return Date.now().toString(); if (Array.isArray(data)) { - return data.map((tx) => tx.tx_hash()).join(";"); + return data.map((tx) => tx.hash).join(";"); } - return data.tx_hash(); + return data.hash; }; diff --git a/apps/namadillo/src/hooks/useTransactionNotifications.tsx b/apps/namadillo/src/hooks/useTransactionNotifications.tsx index 56e96494d..e66dc6b8b 100644 --- a/apps/namadillo/src/hooks/useTransactionNotifications.tsx +++ b/apps/namadillo/src/hooks/useTransactionNotifications.tsx @@ -1,6 +1,5 @@ -import { BuiltTx } from "@heliax/namada-sdk/web"; import { Stack } from "@namada/components"; -import { RedelegateMsgValue } from "@namada/types"; +import { RedelegateMsgValue, TxProps } from "@namada/types"; import { shortenAddress } from "@namada/utils"; import { NamCurrency } from "App/Common/NamCurrency"; import { @@ -22,7 +21,7 @@ const getTotalAmountFromTransactionList = (txs: TxWithAmount[]): BigNumber => }, new BigNumber(0)); const parseTxsData = ( - tx: BuiltTx, + tx: TxProps, data: T[] ): { id: string; total: BigNumber } => { const id = createNotificationId(tx); diff --git a/apps/namadillo/src/lib/query.ts b/apps/namadillo/src/lib/query.ts index 4f908387e..8d4c84c27 100644 --- a/apps/namadillo/src/lib/query.ts +++ b/apps/namadillo/src/lib/query.ts @@ -1,10 +1,10 @@ -import { BuiltTx, EncodedTx } from "@heliax/namada-sdk/web"; import { getIntegration } from "@namada/integrations"; import { Account, AccountType, Signer, - WrapperTxMsgValue, + TxMsgValue, + TxProps, WrapperTxProps, } from "@namada/types"; import { getIndexerApi } from "atoms/api"; @@ -22,8 +22,8 @@ export type TransactionPair = { export type EncodedTxData = { type: string; - txs: BuiltTx[]; - wrapperTxMsg: Uint8Array; + txs: TxProps[]; + wrapperTxProps: WrapperTxProps; meta?: { props: T[]; }; @@ -35,7 +35,7 @@ export type TransactionNotification = { }; export type PreparedTransaction = { - encodedTx: EncodedTx; + encodedTx: WrapperTxProps; signedTx: Uint8Array; meta: T; }; @@ -46,7 +46,7 @@ const getTxProps = ( account: Account, gasConfig: GasConfig, chain: ChainSettings -): WrapperTxMsgValue => { +): WrapperTxProps => { invariant( !!account.publicKey, "Account doesn't contain a publicKey attached to it" @@ -78,19 +78,19 @@ export const isPublicKeyRevealed = async ( * Builds an batch transactions based on the provided query properties. * Each transaction is built through the provided transaction function `txFn`. * @param {T[]} queryProps - An array of properties used to build transactions. - * @param {(WrapperTxProps, T) => Promise} txFn - Function to build each transaction. + * @param {(WrapperTxProps, T) => Promise} txFn - Function to build each transaction. */ export const buildTx = async ( account: Account, gasConfig: GasConfig, chain: ChainSettings, queryProps: T[], - txFn: (wrapperTxProps: WrapperTxProps, props: T) => Promise + txFn: (wrapperTxProps: WrapperTxProps, props: T) => Promise ): Promise> => { const { tx } = await getSdkInstance(); const wrapperTxProps = getTxProps(account, gasConfig, chain); - const txs: EncodedTx[] = []; - const builtTxs: BuiltTx[] = []; + const txs: TxMsgValue[] = []; + const txProps: TxProps[] = []; // Determine if RevealPK is needed: const publicKeyRevealed = await isPublicKeyRevealed(account.address); @@ -106,14 +106,14 @@ export const buildTx = async ( txs.push(...encodedTxs); if (account.type === AccountType.Ledger) { - builtTxs.push(...txs.map(({ tx }) => tx)); + txProps.push(...txs); } else { - builtTxs.push(tx.buildBatch(txs.map(({ tx }) => tx))); + txProps.push(tx.buildBatch(txs)); } return { - txs: builtTxs, - wrapperTxMsg: tx.encodeTxArgs(wrapperTxProps), + txs: txProps, + wrapperTxProps, type: txFn.name, meta: { props: queryProps, @@ -139,10 +139,7 @@ export const signTx = async ( try { // Sign txs const signedTxBytes = await signingClient.sign( - typedEncodedTx.txs.map((builtTx) => ({ - txBytes: builtTx.tx_bytes(), - signingDataBytes: builtTx.signing_data_bytes(), - })), + typedEncodedTx.txs, owner, checksums ); @@ -170,7 +167,7 @@ export const buildTxPair = async ( gasConfig: GasConfig, chain: ChainSettings, queryProps: T[], - txFn: (wrapperTxProps: WrapperTxProps, props: T) => Promise, + txFn: (wrapperTxProps: WrapperTxProps, props: T) => Promise, owner: string ): Promise> => { const encodedTxData = await buildTx( @@ -203,12 +200,7 @@ export const broadcastTx = async ( }) ); try { - // TODO: rpc.broadcastTx returns a TxResponseProps object now, containing hashes and - // applied status of each commitment - await rpc.broadcastTx({ - wrapperTxMsg: encodedTx.wrapperTxMsg, - tx: signedTx, - }); + await rpc.broadcastTx(signedTx, encodedTx.wrapperTxProps); eventType && window.dispatchEvent( new CustomEvent(`${eventType}.Success`, { diff --git a/apps/namadillo/src/types/events.ts b/apps/namadillo/src/types/events.ts index b5057a16f..a9da61870 100644 --- a/apps/namadillo/src/types/events.ts +++ b/apps/namadillo/src/types/events.ts @@ -1,7 +1,7 @@ -import { BuiltTx } from "@heliax/namada-sdk/web"; import { BondProps, RedelegateProps, + TxProps, UnbondProps, VoteProposalProps, WithdrawProps, @@ -27,7 +27,7 @@ export type TransactionEventHandlers = { export interface EventData extends CustomEvent { detail: { - tx: BuiltTx; + tx: TxProps; data: T[]; error?: Error; }; diff --git a/packages/sdk/docs/classes/BuiltTx.md b/packages/sdk/docs/classes/BuiltTx.md deleted file mode 100644 index b0427a2b4..000000000 --- a/packages/sdk/docs/classes/BuiltTx.md +++ /dev/null @@ -1,140 +0,0 @@ -[@heliax/namada-sdk](../README.md) / [Exports](../modules.md) / BuiltTx - -# Class: BuiltTx - -## Table of contents - -### Constructors - -- [constructor](BuiltTx.md#constructor) - -### Methods - -- [free](BuiltTx.md#free) -- [signing\_data\_bytes](BuiltTx.md#signing_data_bytes) -- [tx\_bytes](BuiltTx.md#tx_bytes) -- [tx\_hash](BuiltTx.md#tx_hash) -- [tx\_hashes](BuiltTx.md#tx_hashes) -- [tx\_type](BuiltTx.md#tx_type) -- [wrapper\_tx\_msg](BuiltTx.md#wrapper_tx_msg) - -## Constructors - -### constructor - -• **new BuiltTx**(`tx_type`, `tx_bytes`, `signing_data_bytes`, `wrapper_tx_msg`): [`BuiltTx`](BuiltTx.md) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `tx_type` | [`TxType`](../enums/TxType.md) | -| `tx_bytes` | `Uint8Array` | -| `signing_data_bytes` | `any` | -| `wrapper_tx_msg` | `Uint8Array` | - -#### Returns - -[`BuiltTx`](BuiltTx.md) - -#### Defined in - -shared/src/shared/shared.d.ts:72 - -## Methods - -### free - -▸ **free**(): `void` - -#### Returns - -`void` - -#### Defined in - -shared/src/shared/shared.d.ts:65 - -___ - -### signing\_data\_bytes - -▸ **signing_data_bytes**(): `any` - -#### Returns - -`any` - -#### Defined in - -shared/src/shared/shared.d.ts:88 - -___ - -### tx\_bytes - -▸ **tx_bytes**(): `Uint8Array` - -#### Returns - -`Uint8Array` - -#### Defined in - -shared/src/shared/shared.d.ts:76 - -___ - -### tx\_hash - -▸ **tx_hash**(): `string` - -#### Returns - -`string` - -#### Defined in - -shared/src/shared/shared.d.ts:80 - -___ - -### tx\_hashes - -▸ **tx_hashes**(): `string`[] - -#### Returns - -`string`[] - -#### Defined in - -shared/src/shared/shared.d.ts:84 - -___ - -### tx\_type - -▸ **tx_type**(): [`TxType`](../enums/TxType.md) - -#### Returns - -[`TxType`](../enums/TxType.md) - -#### Defined in - -shared/src/shared/shared.d.ts:92 - -___ - -### wrapper\_tx\_msg - -▸ **wrapper_tx_msg**(): `Uint8Array` - -#### Returns - -`Uint8Array` - -#### Defined in - -shared/src/shared/shared.d.ts:96 diff --git a/packages/sdk/docs/classes/Crypto.md b/packages/sdk/docs/classes/Crypto.md index b3cac94b9..ba727a932 100644 --- a/packages/sdk/docs/classes/Crypto.md +++ b/packages/sdk/docs/classes/Crypto.md @@ -40,7 +40,7 @@ Class Crypto handles AES encryption tasks #### Defined in -[sdk/src/crypto/crypto.ts:20](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/crypto.ts#L20) +[sdk/src/crypto/crypto.ts:20](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/crypto.ts#L20) ## Properties @@ -52,7 +52,7 @@ WebAssembly Memory for crypto #### Defined in -[sdk/src/crypto/crypto.ts:20](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/crypto.ts#L20) +[sdk/src/crypto/crypto.ts:20](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/crypto.ts#L20) ## Methods @@ -75,7 +75,7 @@ decrypted text #### Defined in -[sdk/src/crypto/crypto.ts:115](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/crypto.ts#L115) +[sdk/src/crypto/crypto.ts:115](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/crypto.ts#L115) ___ @@ -100,7 +100,7 @@ crypto record #### Defined in -[sdk/src/crypto/crypto.ts:61](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/crypto.ts#L61) +[sdk/src/crypto/crypto.ts:61](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/crypto.ts#L61) ___ @@ -126,7 +126,7 @@ array of encrypted bytes #### Defined in -[sdk/src/crypto/crypto.ts:98](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/crypto.ts#L98) +[sdk/src/crypto/crypto.ts:98](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/crypto.ts#L98) ___ @@ -153,7 +153,7 @@ crypto record used for storage #### Defined in -[sdk/src/crypto/crypto.ts:30](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/crypto.ts#L30) +[sdk/src/crypto/crypto.ts:30](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/crypto.ts#L30) ___ @@ -178,4 +178,4 @@ encryption parameters #### Defined in -[sdk/src/crypto/crypto.ts:73](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/crypto.ts#L73) +[sdk/src/crypto/crypto.ts:73](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/crypto.ts#L73) diff --git a/packages/sdk/docs/classes/EncodedTx.md b/packages/sdk/docs/classes/EncodedTx.md deleted file mode 100644 index f83278193..000000000 --- a/packages/sdk/docs/classes/EncodedTx.md +++ /dev/null @@ -1,122 +0,0 @@ -[@heliax/namada-sdk](../README.md) / [Exports](../modules.md) / EncodedTx - -# Class: EncodedTx - -Wrap results of tx building along with TxMsg - -## Table of contents - -### Constructors - -- [constructor](EncodedTx.md#constructor) - -### Properties - -- [tx](EncodedTx.md#tx) -- [wrapperTxMsg](EncodedTx.md#wrappertxmsg) - -### Methods - -- [free](EncodedTx.md#free) -- [hash](EncodedTx.md#hash) -- [toBytes](EncodedTx.md#tobytes) - -## Constructors - -### constructor - -• **new EncodedTx**(`wrapperTxMsg`, `tx`): [`EncodedTx`](EncodedTx.md) - -Create an EncodedTx class - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `wrapperTxMsg` | `Uint8Array` | Borsh-serialized wrapper tx args | -| `tx` | [`BuiltTx`](BuiltTx.md) | Specific tx struct instance | - -#### Returns - -[`EncodedTx`](EncodedTx.md) - -#### Defined in - -[sdk/src/tx/types.ts:12](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L12) - -## Properties - -### tx - -• `Readonly` **tx**: [`BuiltTx`](BuiltTx.md) - -Specific tx struct instance - -#### Defined in - -[sdk/src/tx/types.ts:14](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L14) - -___ - -### wrapperTxMsg - -• `Readonly` **wrapperTxMsg**: `Uint8Array` - -Borsh-serialized wrapper tx args - -#### Defined in - -[sdk/src/tx/types.ts:13](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L13) - -## Methods - -### free - -▸ **free**(): `void` - -Clear tx bytes resource - -#### Returns - -`void` - -#### Defined in - -[sdk/src/tx/types.ts:39](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L39) - -___ - -### hash - -▸ **hash**(): `string` - -Return the inner Tx hash of the built Tx - -#### Returns - -`string` - -string of tx hash - -#### Defined in - -[sdk/src/tx/types.ts:32](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L32) - -___ - -### toBytes - -▸ **toBytes**(): `Uint8Array` - -Return serialized tx bytes for external signing. This will clear -the BuiltTx struct instance from wasm memory, then return the bytes. - -#### Returns - -`Uint8Array` - -Serialized tx bytes - -#### Defined in - -[sdk/src/tx/types.ts:22](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L22) diff --git a/packages/sdk/docs/classes/Ledger.md b/packages/sdk/docs/classes/Ledger.md index 806e41843..7f09a130f 100644 --- a/packages/sdk/docs/classes/Ledger.md +++ b/packages/sdk/docs/classes/Ledger.md @@ -42,7 +42,7 @@ Functionality for interacting with NamadaApp for Ledger Hardware Wallets #### Defined in -[sdk/src/ledger.ts:54](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L54) +[sdk/src/ledger.ts:53](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L53) ## Properties @@ -54,7 +54,7 @@ Inititalized NamadaApp class from Zondax package #### Defined in -[sdk/src/ledger.ts:54](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L54) +[sdk/src/ledger.ts:53](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L53) ## Methods @@ -75,7 +75,7 @@ void #### Defined in -[sdk/src/ledger.ts:176](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L176) +[sdk/src/ledger.ts:174](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L174) ___ @@ -102,7 +102,7 @@ Address and public key #### Defined in -[sdk/src/ledger.ts:97](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L97) +[sdk/src/ledger.ts:96](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L96) ___ @@ -123,7 +123,7 @@ Error message if error is found #### Defined in -[sdk/src/ledger.ts:159](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L159) +[sdk/src/ledger.ts:157](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L157) ___ @@ -150,7 +150,7 @@ Address and public key #### Defined in -[sdk/src/ledger.ts:118](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L118) +[sdk/src/ledger.ts:116](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L116) ___ @@ -178,7 +178,7 @@ Response signature #### Defined in -[sdk/src/ledger.ts:144](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L144) +[sdk/src/ledger.ts:142](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L142) ___ @@ -199,7 +199,7 @@ Version and info of NamadaApp #### Defined in -[sdk/src/ledger.ts:80](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L80) +[sdk/src/ledger.ts:79](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L79) ___ @@ -225,4 +225,4 @@ Ledger class instance #### Defined in -[sdk/src/ledger.ts:62](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L62) +[sdk/src/ledger.ts:61](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L61) diff --git a/packages/sdk/docs/classes/Masp.md b/packages/sdk/docs/classes/Masp.md index 6da032bd1..44f2214b3 100644 --- a/packages/sdk/docs/classes/Masp.md +++ b/packages/sdk/docs/classes/Masp.md @@ -41,7 +41,7 @@ Class representing utilities related to MASP #### Defined in -[sdk/src/masp.ts:10](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/masp.ts#L10) +[sdk/src/masp.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/masp.ts#L10) ## Properties @@ -53,7 +53,7 @@ Instance of Sdk struct from wasm lib #### Defined in -[sdk/src/masp.ts:10](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/masp.ts#L10) +[sdk/src/masp.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/masp.ts#L10) ## Methods @@ -80,7 +80,7 @@ void #### Defined in -[sdk/src/masp.ts:69](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/masp.ts#L69) +[sdk/src/masp.ts:69](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/masp.ts#L69) ___ @@ -107,7 +107,7 @@ void #### Defined in -[sdk/src/masp.ts:47](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/masp.ts#L47) +[sdk/src/masp.ts:47](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/masp.ts#L47) ___ @@ -134,7 +134,7 @@ void #### Defined in -[sdk/src/masp.ts:58](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/masp.ts#L58) +[sdk/src/masp.ts:58](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/masp.ts#L58) ___ @@ -154,7 +154,7 @@ void #### Defined in -[sdk/src/masp.ts:26](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/masp.ts#L26) +[sdk/src/masp.ts:26](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/masp.ts#L26) ___ @@ -174,7 +174,7 @@ True if MASP parameters are loaded #### Defined in -[sdk/src/masp.ts:17](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/masp.ts#L17) +[sdk/src/masp.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/masp.ts#L17) ___ @@ -200,4 +200,4 @@ void #### Defined in -[sdk/src/masp.ts:36](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/masp.ts#L36) +[sdk/src/masp.ts:36](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/masp.ts#L36) diff --git a/packages/sdk/docs/classes/Mnemonic.md b/packages/sdk/docs/classes/Mnemonic.md index bf072838f..0883b1034 100644 --- a/packages/sdk/docs/classes/Mnemonic.md +++ b/packages/sdk/docs/classes/Mnemonic.md @@ -38,7 +38,7 @@ Class for accessing mnemonic functionality from wasm #### Defined in -[sdk/src/mnemonic.ts:18](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/mnemonic.ts#L18) +[sdk/src/mnemonic.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/mnemonic.ts#L18) ## Properties @@ -50,7 +50,7 @@ Memory accessor for crypto lib #### Defined in -[sdk/src/mnemonic.ts:18](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/mnemonic.ts#L18) +[sdk/src/mnemonic.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/mnemonic.ts#L18) ## Methods @@ -76,7 +76,7 @@ Promise that resolves to array of words #### Defined in -[sdk/src/mnemonic.ts:26](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/mnemonic.ts#L26) +[sdk/src/mnemonic.ts:26](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/mnemonic.ts#L26) ___ @@ -101,7 +101,7 @@ Seed bytes #### Defined in -[sdk/src/mnemonic.ts:44](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/mnemonic.ts#L44) +[sdk/src/mnemonic.ts:44](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/mnemonic.ts#L44) ___ @@ -131,4 +131,4 @@ Object with validation result and error message if invalid #### Defined in -[sdk/src/mnemonic.ts:62](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/mnemonic.ts#L62) +[sdk/src/mnemonic.ts:62](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/mnemonic.ts#L62) diff --git a/packages/sdk/docs/classes/Rpc.md b/packages/sdk/docs/classes/Rpc.md index 05e60c74e..57255592b 100644 --- a/packages/sdk/docs/classes/Rpc.md +++ b/packages/sdk/docs/classes/Rpc.md @@ -51,7 +51,7 @@ API for executing RPC requests with Namada #### Defined in -[sdk/src/rpc/rpc.ts:31](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L31) +[sdk/src/rpc/rpc.ts:36](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L36) ## Properties @@ -63,7 +63,7 @@ Instance of Query struct from wasm lib #### Defined in -[sdk/src/rpc/rpc.ts:33](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L33) +[sdk/src/rpc/rpc.ts:38](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L38) ___ @@ -75,13 +75,13 @@ Instance of Sdk struct from wasm lib #### Defined in -[sdk/src/rpc/rpc.ts:32](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L32) +[sdk/src/rpc/rpc.ts:37](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L37) ## Methods ### broadcastTx -▸ **broadcastTx**(`signedTx`): `Promise`\<`TxResponseMsgValue`\> +▸ **broadcastTx**(`signedTxBytes`, `args`): `Promise`\<`TxResponseMsgValue`\> Broadcast a Tx to the ledger @@ -89,7 +89,8 @@ Broadcast a Tx to the ledger | Name | Type | Description | | :------ | :------ | :------ | -| `signedTx` | [`SignedTx`](SignedTx.md) | Transaction with signature | +| `signedTxBytes` | `Uint8Array` | Transaction with signature | +| `args` | `WrapperTxMsgValue` | WrapperTxProps | #### Returns @@ -101,7 +102,7 @@ TxResponseProps object #### Defined in -[sdk/src/rpc/rpc.ts:217](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L217) +[sdk/src/rpc/rpc.ts:223](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L223) ___ @@ -121,7 +122,7 @@ Array of all validator addresses #### Defined in -[sdk/src/rpc/rpc.ts:73](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L73) +[sdk/src/rpc/rpc.ts:78](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L78) ___ @@ -148,7 +149,7 @@ Query balances from chain #### Defined in -[sdk/src/rpc/rpc.ts:43](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L43) +[sdk/src/rpc/rpc.ts:48](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L48) ___ @@ -168,7 +169,7 @@ Object #### Defined in -[sdk/src/rpc/rpc.ts:198](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L198) +[sdk/src/rpc/rpc.ts:203](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L203) ___ @@ -194,7 +195,7 @@ Promise resolving to delegators votes #### Defined in -[sdk/src/rpc/rpc.ts:97](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L97) +[sdk/src/rpc/rpc.ts:102](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L102) ___ @@ -214,7 +215,7 @@ Query gas costs #### Defined in -[sdk/src/rpc/rpc.ts:189](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L189) +[sdk/src/rpc/rpc.ts:194](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L194) ___ @@ -234,7 +235,7 @@ Address of native token #### Defined in -[sdk/src/rpc/rpc.ts:52](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L52) +[sdk/src/rpc/rpc.ts:57](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L57) ___ @@ -261,7 +262,7 @@ String of public key if found #### Defined in -[sdk/src/rpc/rpc.ts:63](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L63) +[sdk/src/rpc/rpc.ts:68](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L68) ___ @@ -287,7 +288,7 @@ Promise resolving to pending ethereum transfers #### Defined in -[sdk/src/rpc/rpc.ts:180](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L180) +[sdk/src/rpc/rpc.ts:185](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L185) ___ @@ -313,7 +314,7 @@ Promise resolving to staking positions #### Defined in -[sdk/src/rpc/rpc.ts:134](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L134) +[sdk/src/rpc/rpc.ts:139](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L139) ___ @@ -339,7 +340,7 @@ Promise resolving to staking totals #### Defined in -[sdk/src/rpc/rpc.ts:107](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L107) +[sdk/src/rpc/rpc.ts:112](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L112) ___ @@ -363,7 +364,7 @@ Total bonds amount #### Defined in -[sdk/src/rpc/rpc.ts:170](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L170) +[sdk/src/rpc/rpc.ts:175](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L175) ___ @@ -390,7 +391,7 @@ Promise resolving to total delegations #### Defined in -[sdk/src/rpc/rpc.ts:84](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L84) +[sdk/src/rpc/rpc.ts:89](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L89) ___ @@ -414,4 +415,4 @@ Sync the shielded context #### Defined in -[sdk/src/rpc/rpc.ts:229](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/rpc.ts#L229) +[sdk/src/rpc/rpc.ts:241](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/rpc.ts#L241) diff --git a/packages/sdk/docs/classes/Sdk.md b/packages/sdk/docs/classes/Sdk.md index 3fbf2aae0..a82dc00c3 100644 --- a/packages/sdk/docs/classes/Sdk.md +++ b/packages/sdk/docs/classes/Sdk.md @@ -62,7 +62,7 @@ API for interacting with Namada SDK #### Defined in -[sdk/src/sdk.ts:23](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L23) +[sdk/src/sdk.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L23) ## Properties @@ -74,7 +74,7 @@ Memory accessor for crypto lib #### Defined in -[sdk/src/sdk.ts:26](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L26) +[sdk/src/sdk.ts:26](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L26) ___ @@ -86,7 +86,7 @@ Address of chain's native token #### Defined in -[sdk/src/sdk.ts:28](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L28) +[sdk/src/sdk.ts:28](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L28) ___ @@ -98,7 +98,7 @@ Instance of Query struct from wasm lib #### Defined in -[sdk/src/sdk.ts:25](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L25) +[sdk/src/sdk.ts:25](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L25) ___ @@ -110,7 +110,7 @@ Instance of Sdk struct from wasm lib #### Defined in -[sdk/src/sdk.ts:24](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L24) +[sdk/src/sdk.ts:24](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L24) ___ @@ -122,7 +122,7 @@ RPC url #### Defined in -[sdk/src/sdk.ts:27](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L27) +[sdk/src/sdk.ts:27](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L27) ## Accessors @@ -140,7 +140,7 @@ Utilities for encrypting and decrypting data #### Defined in -[sdk/src/sdk.ts:166](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L166) +[sdk/src/sdk.ts:166](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L166) ___ @@ -158,7 +158,7 @@ key-related functionality #### Defined in -[sdk/src/sdk.ts:142](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L142) +[sdk/src/sdk.ts:142](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L142) ___ @@ -176,7 +176,7 @@ Masp utilities for handling params #### Defined in -[sdk/src/sdk.ts:158](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L158) +[sdk/src/sdk.ts:158](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L158) ___ @@ -194,7 +194,7 @@ mnemonic-related functionality #### Defined in -[sdk/src/sdk.ts:134](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L134) +[sdk/src/sdk.ts:134](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L134) ___ @@ -212,7 +212,7 @@ rpc client #### Defined in -[sdk/src/sdk.ts:118](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L118) +[sdk/src/sdk.ts:118](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L118) ___ @@ -230,7 +230,7 @@ Non-Tx signing functionality #### Defined in -[sdk/src/sdk.ts:150](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L150) +[sdk/src/sdk.ts:150](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L150) ___ @@ -248,7 +248,7 @@ tx-related functionality #### Defined in -[sdk/src/sdk.ts:126](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L126) +[sdk/src/sdk.ts:126](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L126) ## Methods @@ -266,7 +266,7 @@ Utilities for encrypting and decrypting data #### Defined in -[sdk/src/sdk.ts:100](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L100) +[sdk/src/sdk.ts:100](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L100) ___ @@ -284,7 +284,7 @@ key-related functionality #### Defined in -[sdk/src/sdk.ts:76](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L76) +[sdk/src/sdk.ts:76](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L76) ___ @@ -302,7 +302,7 @@ Masp utilities for handling params #### Defined in -[sdk/src/sdk.ts:92](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L92) +[sdk/src/sdk.ts:92](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L92) ___ @@ -320,7 +320,7 @@ mnemonic-related functionality #### Defined in -[sdk/src/sdk.ts:68](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L68) +[sdk/src/sdk.ts:68](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L68) ___ @@ -338,7 +338,7 @@ Namada RPC client #### Defined in -[sdk/src/sdk.ts:52](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L52) +[sdk/src/sdk.ts:52](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L52) ___ @@ -356,7 +356,7 @@ Non-Tx signing functionality #### Defined in -[sdk/src/sdk.ts:84](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L84) +[sdk/src/sdk.ts:84](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L84) ___ @@ -374,7 +374,7 @@ Tx-related functionality #### Defined in -[sdk/src/sdk.ts:60](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L60) +[sdk/src/sdk.ts:60](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L60) ___ @@ -400,7 +400,7 @@ Class for interacting with NamadaApp for Ledger Hardware Wallets #### Defined in -[sdk/src/sdk.ts:110](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L110) +[sdk/src/sdk.ts:110](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L110) ___ @@ -425,4 +425,4 @@ this instance of Sdk #### Defined in -[sdk/src/sdk.ts:37](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/sdk.ts#L37) +[sdk/src/sdk.ts:37](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/sdk.ts#L37) diff --git a/packages/sdk/docs/classes/SignedTx.md b/packages/sdk/docs/classes/SignedTx.md deleted file mode 100644 index 441c28e9b..000000000 --- a/packages/sdk/docs/classes/SignedTx.md +++ /dev/null @@ -1,61 +0,0 @@ -[@heliax/namada-sdk](../README.md) / [Exports](../modules.md) / SignedTx - -# Class: SignedTx - -Wrap results of tx signing to simplify passing between Sdk functions - -## Table of contents - -### Constructors - -- [constructor](SignedTx.md#constructor) - -### Properties - -- [tx](SignedTx.md#tx) -- [wrapperTxMsg](SignedTx.md#wrappertxmsg) - -## Constructors - -### constructor - -• **new SignedTx**(`wrapperTxMsg`, `tx`): [`SignedTx`](SignedTx.md) - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `wrapperTxMsg` | `Uint8Array` | Serialized wrapper tx msg bytes | -| `tx` | `Uint8Array` | Serialized tx bytes | - -#### Returns - -[`SignedTx`](SignedTx.md) - -#### Defined in - -[sdk/src/tx/types.ts:52](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L52) - -## Properties - -### tx - -• `Readonly` **tx**: `Uint8Array` - -Serialized tx bytes - -#### Defined in - -[sdk/src/tx/types.ts:56](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L56) - -___ - -### wrapperTxMsg - -• `Readonly` **wrapperTxMsg**: `Uint8Array` - -Serialized wrapper tx msg bytes - -#### Defined in - -[sdk/src/tx/types.ts:54](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/types.ts#L54) diff --git a/packages/sdk/docs/classes/Signing.md b/packages/sdk/docs/classes/Signing.md index 77fa89e3a..812b6958b 100644 --- a/packages/sdk/docs/classes/Signing.md +++ b/packages/sdk/docs/classes/Signing.md @@ -40,7 +40,7 @@ Signing constructor #### Defined in -[sdk/src/signing.ts:13](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/signing.ts#L13) +[sdk/src/signing.ts:14](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/signing.ts#L14) ## Properties @@ -52,13 +52,13 @@ Instance of Sdk struct from wasm lib #### Defined in -[sdk/src/signing.ts:13](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/signing.ts#L13) +[sdk/src/signing.ts:14](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/signing.ts#L14) ## Methods ### sign -▸ **sign**(`builtTx`, `signingKey`, `chainId?`): `Promise`\<`Uint8Array`\> +▸ **sign**(`txProps`, `signingKey`, `chainId?`): `Promise`\<`Uint8Array`\> Sign Namada transaction @@ -66,7 +66,7 @@ Sign Namada transaction | Name | Type | Description | | :------ | :------ | :------ | -| `builtTx` | [`BuiltTx`](BuiltTx.md) | BuiltTx instance | +| `txProps` | `TxMsgValue` | TxProps | | `signingKey` | `string` | private key | | `chainId?` | `string` | optional chain ID, will enforce validation if present | @@ -78,7 +78,7 @@ signed tx bytes - Promise resolving to Uint8Array #### Defined in -[sdk/src/signing.ts:22](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/signing.ts#L22) +[sdk/src/signing.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/signing.ts#L23) ___ @@ -103,7 +103,7 @@ hash and signature #### Defined in -[sdk/src/signing.ts:36](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/signing.ts#L36) +[sdk/src/signing.ts:41](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/signing.ts#L41) ___ @@ -129,4 +129,4 @@ void #### Defined in -[sdk/src/signing.ts:47](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/signing.ts#L47) +[sdk/src/signing.ts:52](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/signing.ts#L52) diff --git a/packages/sdk/docs/classes/Tx.md b/packages/sdk/docs/classes/Tx.md index 25227cb46..230f2f704 100644 --- a/packages/sdk/docs/classes/Tx.md +++ b/packages/sdk/docs/classes/Tx.md @@ -30,7 +30,6 @@ SDK functionality related to transactions - [buildWithdraw](Tx.md#buildwithdraw) - [deserialize](Tx.md#deserialize) - [encodeTxArgs](Tx.md#encodetxargs) -- [revealPk](Tx.md#revealpk) ## Constructors @@ -50,7 +49,7 @@ SDK functionality related to transactions #### Defined in -[sdk/src/tx/tx.ts:48](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L48) +[sdk/src/tx/tx.ts:44](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L44) ## Properties @@ -62,7 +61,7 @@ Instance of Sdk struct from wasm lib #### Defined in -[sdk/src/tx/tx.ts:48](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L48) +[sdk/src/tx/tx.ts:44](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L44) ## Methods @@ -87,13 +86,13 @@ Append signature for transactions signed by Ledger Hardware Wallet #### Defined in -[sdk/src/tx/tx.ts:306](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L306) +[sdk/src/tx/tx.ts:285](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L285) ___ ### buildBatch -▸ **buildBatch**(`txs`, `wrapperTxMsg`): [`BuiltTx`](BuiltTx.md) +▸ **buildBatch**(`txs`): `TxMsgValue` Build a batched transaction @@ -101,24 +100,23 @@ Build a batched transaction | Name | Type | Description | | :------ | :------ | :------ | -| `txs` | [`BuiltTx`](BuiltTx.md)[] | array of BuiltTx types | -| `wrapperTxMsg` | `Uint8Array` | Uint8Array of serialized WrapperTxMsg | +| `txs` | `TxMsgValue`[] | array of TxProp | #### Returns -[`BuiltTx`](BuiltTx.md) +`TxMsgValue` -a BuiltTx type +a serialized TxMsgValue type #### Defined in -[sdk/src/tx/tx.ts:279](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L279) +[sdk/src/tx/tx.ts:268](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L268) ___ ### buildBond -▸ **buildBond**(`wrapperTxProps`, `bondProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildBond**(`wrapperTxProps`, `bondProps`): `Promise`\<`TxMsgValue`\> Build Bond Tx @@ -131,21 +129,21 @@ Build Bond Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:96](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L96) +[sdk/src/tx/tx.ts:90](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L90) ___ ### buildClaimRewards -▸ **buildClaimRewards**(`wrapperTxProps`, `claimRewardsProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildClaimRewards**(`wrapperTxProps`, `claimRewardsProps`): `Promise`\<`TxMsgValue`\> Build Claim Rewards Tx @@ -158,21 +156,21 @@ Build Claim Rewards Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:256](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L256) +[sdk/src/tx/tx.ts:247](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L247) ___ ### buildEthBridgeTransfer -▸ **buildEthBridgeTransfer**(`wrapperTxProps`, `ethBridgeTransferProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildEthBridgeTransfer**(`wrapperTxProps`, `ethBridgeTransferProps`): `Promise`\<`TxMsgValue`\> Build Ethereum Bridge Transfer Tx @@ -185,21 +183,21 @@ Build Ethereum Bridge Transfer Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:208](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L208) +[sdk/src/tx/tx.ts:200](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L200) ___ ### buildIbcTransfer -▸ **buildIbcTransfer**(`wrapperTxProps`, `ibcTransferProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildIbcTransfer**(`wrapperTxProps`, `ibcTransferProps`): `Promise`\<`TxMsgValue`\> Build Ibc Transfer Tx @@ -212,21 +210,21 @@ Build Ibc Transfer Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:184](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L184) +[sdk/src/tx/tx.ts:177](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L177) ___ ### buildRedelegate -▸ **buildRedelegate**(`wrapperTxProps`, `redelegateProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildRedelegate**(`wrapperTxProps`, `redelegateProps`): `Promise`\<`TxMsgValue`\> Build Redelegate Tx @@ -239,21 +237,21 @@ Build Redelegate Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:160](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L160) +[sdk/src/tx/tx.ts:154](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L154) ___ ### buildRevealPk -▸ **buildRevealPk**(`wrapperTxProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildRevealPk**(`wrapperTxProps`): `Promise`\<`TxMsgValue`\> Build RevealPK Tx @@ -265,21 +263,21 @@ Build RevealPK Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:82](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L82) +[sdk/src/tx/tx.ts:77](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L77) ___ ### buildTransparentTransfer -▸ **buildTransparentTransfer**(`wrapperTxProps`, `transferProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildTransparentTransfer**(`wrapperTxProps`, `transferProps`): `Promise`\<`TxMsgValue`\> Build Transfer Tx @@ -292,21 +290,21 @@ Build Transfer Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:57](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L57) +[sdk/src/tx/tx.ts:53](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L53) ___ ### buildUnbond -▸ **buildUnbond**(`wrapperTxProps`, `unbondProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildUnbond**(`wrapperTxProps`, `unbondProps`): `Promise`\<`TxMsgValue`\> Build Unbond Tx @@ -319,21 +317,21 @@ Build Unbond Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:115](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L115) +[sdk/src/tx/tx.ts:111](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L111) ___ ### buildVoteProposal -▸ **buildVoteProposal**(`wrapperTxProps`, `voteProposalProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildVoteProposal**(`wrapperTxProps`, `voteProposalProps`): `Promise`\<`TxMsgValue`\> Build Vote Proposal Tx @@ -346,21 +344,21 @@ Build Vote Proposal Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:232](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L232) +[sdk/src/tx/tx.ts:223](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L223) ___ ### buildWithdraw -▸ **buildWithdraw**(`wrapperTxProps`, `withdrawProps`): `Promise`\<[`EncodedTx`](EncodedTx.md)\> +▸ **buildWithdraw**(`wrapperTxProps`, `withdrawProps`): `Promise`\<`TxMsgValue`\> Build Withdraw Tx @@ -373,15 +371,15 @@ Build Withdraw Tx #### Returns -`Promise`\<[`EncodedTx`](EncodedTx.md)\> +`Promise`\<`TxMsgValue`\> -promise that resolves to an EncodedTx +promise that resolves to an TxMsgValue **`Async`** #### Defined in -[sdk/src/tx/tx.ts:138](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L138) +[sdk/src/tx/tx.ts:133](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L133) ___ @@ -406,7 +404,7 @@ a TxDetails object #### Defined in -[sdk/src/tx/tx.ts:359](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L359) +[sdk/src/tx/tx.ts:338](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L338) ___ @@ -430,32 +428,4 @@ Serialized WrapperTxMsgValue #### Defined in -[sdk/src/tx/tx.ts:347](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L347) - -___ - -### revealPk - -▸ **revealPk**(`signingKey`, `wrapperTxProps`, `chainId?`): `Promise`\<`void`\> - -Reveal Public Key using serialized Tx - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `signingKey` | `string` | signing key | -| `wrapperTxProps` | `WrapperTxMsgValue` | properties of the transaction | -| `chainId?` | `string` | optional chain ID - will enforce validation if present | - -#### Returns - -`Promise`\<`void`\> - -void - -**`Async`** - -#### Defined in - -[sdk/src/tx/tx.ts:291](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/tx/tx.ts#L291) +[sdk/src/tx/tx.ts:326](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/tx/tx.ts#L326) diff --git a/packages/sdk/docs/enums/KdfType.md b/packages/sdk/docs/enums/KdfType.md index 9740042e5..6166f8e90 100644 --- a/packages/sdk/docs/enums/KdfType.md +++ b/packages/sdk/docs/enums/KdfType.md @@ -17,7 +17,7 @@ #### Defined in -[sdk/src/crypto/types.ts:38](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/types.ts#L38) +[sdk/src/crypto/types.ts:38](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/types.ts#L38) ___ @@ -27,4 +27,4 @@ ___ #### Defined in -[sdk/src/crypto/types.ts:39](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/types.ts#L39) +[sdk/src/crypto/types.ts:39](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/types.ts#L39) diff --git a/packages/sdk/docs/enums/PhraseSize.md b/packages/sdk/docs/enums/PhraseSize.md index 8c4260877..01c6efb6e 100644 --- a/packages/sdk/docs/enums/PhraseSize.md +++ b/packages/sdk/docs/enums/PhraseSize.md @@ -17,7 +17,7 @@ #### Defined in -crypto/src/crypto/crypto.d.ts:6 +crypto/src/crypto/crypto.d.ts:13 ___ @@ -27,4 +27,4 @@ ___ #### Defined in -crypto/src/crypto/crypto.d.ts:7 +crypto/src/crypto/crypto.d.ts:14 diff --git a/packages/sdk/docs/modules.md b/packages/sdk/docs/modules.md index 1e0399d8c..8b426b549 100644 --- a/packages/sdk/docs/modules.md +++ b/packages/sdk/docs/modules.md @@ -12,15 +12,12 @@ ### Classes -- [BuiltTx](classes/BuiltTx.md) - [Crypto](classes/Crypto.md) -- [EncodedTx](classes/EncodedTx.md) - [Ledger](classes/Ledger.md) - [Masp](classes/Masp.md) - [Mnemonic](classes/Mnemonic.md) - [Rpc](classes/Rpc.md) - [Sdk](classes/Sdk.md) -- [SignedTx](classes/SignedTx.md) - [Signing](classes/Signing.md) - [Tx](classes/Tx.md) @@ -72,7 +69,7 @@ Address and public key type #### Defined in -[sdk/src/keys/types.ts:4](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/keys/types.ts#L4) +[sdk/src/keys/types.ts:4](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/keys/types.ts#L4) ___ @@ -89,7 +86,7 @@ ___ #### Defined in -[sdk/src/ledger.ts:17](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L17) +[sdk/src/ledger.ts:16](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L16) ___ @@ -99,7 +96,7 @@ ___ #### Defined in -[sdk/src/crypto/types.ts:23](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/types.ts#L23) +[sdk/src/crypto/types.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/types.ts#L23) ___ @@ -112,7 +109,7 @@ Balance #### Defined in -[sdk/src/rpc/types.ts:69](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/types.ts#L69) +[sdk/src/rpc/types.ts:69](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/types.ts#L69) ___ @@ -131,7 +128,7 @@ ___ #### Defined in -[sdk/src/rpc/types.ts:27](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/types.ts#L27) +[sdk/src/rpc/types.ts:27](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/types.ts#L27) ___ @@ -159,7 +156,7 @@ ___ #### Defined in -[sdk/src/crypto/types.ts:42](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/types.ts#L42) +[sdk/src/crypto/types.ts:42](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/types.ts#L42) ___ @@ -172,7 +169,7 @@ Record #### Defined in -[sdk/src/rpc/types.ts:51](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/types.ts#L51) +[sdk/src/rpc/types.ts:51](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/types.ts#L51) ___ @@ -185,7 +182,7 @@ Record #### Defined in -[sdk/src/rpc/types.ts:57](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/types.ts#L57) +[sdk/src/rpc/types.ts:57](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/types.ts#L57) ___ @@ -204,7 +201,7 @@ ___ #### Defined in -[sdk/src/crypto/types.ts:30](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/types.ts#L30) +[sdk/src/crypto/types.ts:30](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/types.ts#L30) ___ @@ -221,7 +218,7 @@ ___ #### Defined in -[sdk/src/ledger.ts:18](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L18) +[sdk/src/ledger.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L17) ___ @@ -241,7 +238,7 @@ Shielded keys and address #### Defined in -[sdk/src/keys/types.ts:19](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/keys/types.ts#L19) +[sdk/src/keys/types.ts:19](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/keys/types.ts#L19) ___ @@ -258,7 +255,7 @@ ___ #### Defined in -[sdk/src/rpc/types.ts:42](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/types.ts#L42) +[sdk/src/rpc/types.ts:42](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/types.ts#L42) ___ @@ -278,7 +275,7 @@ ___ #### Defined in -[sdk/src/rpc/types.ts:19](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/types.ts#L19) +[sdk/src/rpc/types.ts:19](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/types.ts#L19) ___ @@ -288,7 +285,7 @@ ___ #### Defined in -[shared/src/types.ts:3](https://github.com/anoma/namada-interface/blob/316cbce5/packages/shared/src/types.ts#L3) +[shared/src/types.ts:3](https://github.com/anoma/namada-interface/blob/48e796bf/packages/shared/src/types.ts#L3) ___ @@ -300,7 +297,7 @@ Public and private keypair with address #### Defined in -[sdk/src/keys/types.ts:12](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/keys/types.ts#L12) +[sdk/src/keys/types.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/keys/types.ts#L12) ___ @@ -320,7 +317,7 @@ ___ #### Defined in -[sdk/src/rpc/types.ts:34](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/rpc/types.ts#L34) +[sdk/src/rpc/types.ts:34](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/rpc/types.ts#L34) ## Variables @@ -338,7 +335,7 @@ ___ #### Defined in -[sdk/src/crypto/types.ts:3](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/crypto/types.ts#L3) +[sdk/src/crypto/types.ts:3](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/crypto/types.ts#L3) ___ @@ -348,7 +345,7 @@ ___ #### Defined in -[sdk/src/ledger.ts:41](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L41) +[sdk/src/ledger.ts:40](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L40) ___ @@ -358,7 +355,7 @@ ___ #### Defined in -[shared/src/types.ts:28](https://github.com/anoma/namada-interface/blob/316cbce5/packages/shared/src/types.ts#L28) +[shared/src/types.ts:28](https://github.com/anoma/namada-interface/blob/48e796bf/packages/shared/src/types.ts#L28) ## Functions @@ -378,7 +375,7 @@ Transport object #### Defined in -[sdk/src/ledger.ts:37](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L37) +[sdk/src/ledger.ts:36](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L36) ___ @@ -398,7 +395,7 @@ Transport object #### Defined in -[sdk/src/ledger.ts:28](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/ledger.ts#L28) +[sdk/src/ledger.ts:27](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/ledger.ts#L27) ___ @@ -418,4 +415,4 @@ ___ #### Defined in -[sdk/src/keys/keys.ts:173](https://github.com/anoma/namada-interface/blob/316cbce5/packages/sdk/src/keys/keys.ts#L173) +[sdk/src/keys/keys.ts:173](https://github.com/anoma/namada-interface/blob/48e796bf/packages/sdk/src/keys/keys.ts#L173) diff --git a/packages/sdk/examples/submitTransfer.ts b/packages/sdk/examples/submitTransfer.ts index 10fcfa2bf..b6c09c3e7 100644 --- a/packages/sdk/examples/submitTransfer.ts +++ b/packages/sdk/examples/submitTransfer.ts @@ -20,7 +20,7 @@ export const submitTransfer = async ( const { chainId, publicKey } = tx; const { source, target, amount } = transfer; - const wrapperTxMsgValue = { + const wrapperTxProps = { token: nativeToken, feeAmount: BigNumber(5), gasLimit: BigNumber(20_000), @@ -39,22 +39,16 @@ export const submitTransfer = async ( const { cryptoMemory } = initSync(); const sdk = getSdk(cryptoMemory, nodeUrl, "storage path", nativeToken); - console.log("Revealing public key..."); - await sdk.tx.revealPk(signingKey, wrapperTxMsgValue); - console.log("Building transfer transaction..."); - const encodedTx = await sdk.tx.buildTransparentTransfer(wrapperTxMsgValue, { + const encodedTx = await sdk.tx.buildTransparentTransfer(wrapperTxProps, { data: [transparentTransferMsgValue], }); console.log("Signing transaction..."); - const signedTx = await sdk.signing.sign(encodedTx.tx, signingKey); + const signedTx = await sdk.signing.sign(encodedTx, signingKey); console.log("Broadcasting transaction..."); - await sdk.rpc.broadcastTx({ - wrapperTxMsg: encodedTx.wrapperTxMsg, - tx: signedTx, - }); + await sdk.rpc.broadcastTx(signedTx, wrapperTxProps); process.exit(0); } catch (error) { console.error("Error:", error); diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 52e6a3952..2ef149d0b 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -21,8 +21,8 @@ export type { Unbonds, } from "./rpc"; -export { BuiltTx, TxType, TxTypeLabel } from "./tx"; -export type { EncodedTx, SignedTx, SupportedTx } from "./tx"; +export { TxType, TxTypeLabel } from "./tx"; +export type { SupportedTx } from "./tx"; export { Sdk } from "./sdk"; diff --git a/packages/sdk/src/rpc/rpc.ts b/packages/sdk/src/rpc/rpc.ts index 32d3c93f0..0be729db2 100644 --- a/packages/sdk/src/rpc/rpc.ts +++ b/packages/sdk/src/rpc/rpc.ts @@ -4,9 +4,14 @@ import { Sdk as SdkWasm, TransferToEthereum, } from "@namada/shared"; -import { TxResponseMsgValue, TxResponseProps } from "@namada/types"; +import { + Message, + TxResponseMsgValue, + TxResponseProps, + WrapperTxMsgValue, + WrapperTxProps, +} from "@namada/types"; -import { SignedTx } from "../tx/types"; import { Balance, BondsResponse, @@ -211,12 +216,19 @@ export class Rpc { /** * Broadcast a Tx to the ledger * @async - * @param signedTx - Transaction with signature + * @param signedTxBytes - Transaction with signature + * @param args - WrapperTxProps * @returns TxResponseProps object */ - async broadcastTx(signedTx: SignedTx): Promise { - const { wrapperTxMsg, tx } = signedTx; - const response = await this.sdk.process_tx(tx, wrapperTxMsg); + async broadcastTx( + signedTxBytes: Uint8Array, + args: WrapperTxProps + ): Promise { + const wrapperTxMsgValue = new WrapperTxMsgValue(args); + const msg = new Message(); + const encodedArgs = msg.encode(wrapperTxMsgValue); + + const response = await this.sdk.process_tx(signedTxBytes, encodedArgs); return deserialize(Buffer.from(response), TxResponseMsgValue); } diff --git a/packages/sdk/src/signing.ts b/packages/sdk/src/signing.ts index ce766889f..4c3dcb385 100644 --- a/packages/sdk/src/signing.ts +++ b/packages/sdk/src/signing.ts @@ -1,4 +1,5 @@ -import { BuiltTx, Sdk as SdkWasm } from "@namada/shared"; +import { Sdk as SdkWasm } from "@namada/shared"; +import { Message, TxMsgValue, TxProps } from "@namada/types"; type Signature = [string, string]; @@ -14,17 +15,21 @@ export class Signing { /** * Sign Namada transaction - * @param builtTx - BuiltTx instance + * @param txProps - TxProps * @param signingKey - private key * @param [chainId] - optional chain ID, will enforce validation if present * @returns signed tx bytes - Promise resolving to Uint8Array */ async sign( - builtTx: BuiltTx, + txProps: TxProps, signingKey: string, chainId?: string ): Promise { - return await this.sdk.sign_tx(builtTx, signingKey, chainId); + const txMsgValue = new TxMsgValue(txProps); + const msg = new Message(); + const txBytes = msg.encode(txMsgValue); + + return await this.sdk.sign_tx(txBytes, signingKey, chainId); } /** diff --git a/packages/sdk/src/tests/tx.test.ts b/packages/sdk/src/tests/tx.test.ts index 80b71b94d..2cccf9778 100644 --- a/packages/sdk/src/tests/tx.test.ts +++ b/packages/sdk/src/tests/tx.test.ts @@ -43,12 +43,12 @@ describe("Tx", () => { amount: BigNumber(123), }; - const encodedTx = await tx.buildTransparentTransfer(txProps, { + const builtTx = await tx.buildTransparentTransfer(txProps, { data: [transferProps], }); - expect(encodedTx).toBeDefined(); + expect(tx).toBeDefined(); - const txBytes = encodedTx.toBytes(); + const txBytes = builtTx.bytes; // TODO: Better test here, this is just a placeholder expect(txBytes.length).toEqual(1000); expect(addressExistsRoute).toHaveBeenCalledTimes(2); diff --git a/packages/sdk/src/tx/tx.ts b/packages/sdk/src/tx/tx.ts index 62bc6096d..c4d458557 100644 --- a/packages/sdk/src/tx/tx.ts +++ b/packages/sdk/src/tx/tx.ts @@ -1,10 +1,5 @@ import { deserialize } from "@dao-xyz/borsh"; -import { - BuiltTx, - Sdk as SdkWasm, - TxType, - deserialize_tx, -} from "@namada/shared"; +import { Sdk as SdkWasm, TxType, deserialize_tx } from "@namada/shared"; import { BondMsgValue, BondProps, @@ -25,6 +20,8 @@ import { TransparentTransferProps, TxDetails, TxDetailsMsgValue, + TxMsgValue, + TxProps, UnbondMsgValue, UnbondProps, VoteProposalMsgValue, @@ -36,7 +33,6 @@ import { } from "@namada/types"; import { ResponseSign } from "@zondax/ledger-namada"; import { WasmHash } from "../rpc"; -import { EncodedTx } from "./types"; /** * SDK functionality related to transactions @@ -52,12 +48,12 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param transferProps - properties of the transfer - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildTransparentTransfer( wrapperTxProps: WrapperTxProps, transferProps: TransparentTransferProps - ): Promise { + ): Promise { const transferMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); @@ -65,25 +61,23 @@ export class Tx { new TransparentTransferMsgValue(transferProps) ); - const builtTx = await this.sdk.build_transparent_transfer( + const serializedTx = await this.sdk.build_transparent_transfer( encodedTransfer, encodedWrapperArgs ); - - return new EncodedTx(encodedWrapperArgs, builtTx); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** * Build RevealPK Tx * @async * @param wrapperTxProps - properties of the transaction - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ - async buildRevealPk(wrapperTxProps: WrapperTxProps): Promise { + async buildRevealPk(wrapperTxProps: WrapperTxProps): Promise { const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); - const builtTx = await this.sdk.build_reveal_pk(encodedWrapperArgs); - - return new EncodedTx(encodedWrapperArgs, builtTx); + const serializedTx = await this.sdk.build_reveal_pk(encodedWrapperArgs); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** @@ -91,18 +85,20 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param bondProps - properties of the bond tx - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildBond( wrapperTxProps: WrapperTxProps, bondProps: BondProps - ): Promise { + ): Promise { const bondMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); const encodedBond = bondMsg.encode(new BondMsgValue(bondProps)); - const builtTx = await this.sdk.build_bond(encodedBond, encodedWrapperArgs); - - return new EncodedTx(encodedWrapperArgs, builtTx); + const serializedTx = await this.sdk.build_bond( + encodedBond, + encodedWrapperArgs + ); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** @@ -110,22 +106,21 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param unbondProps - properties of the unbond tx - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildUnbond( wrapperTxProps: WrapperTxProps, unbondProps: UnbondProps - ): Promise { + ): Promise { const unbondMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); const encodedUnbond = unbondMsg.encode(new UnbondMsgValue(unbondProps)); - const builtTx = await this.sdk.build_unbond( + const serializedTx = await this.sdk.build_unbond( encodedUnbond, encodedWrapperArgs ); - - return new EncodedTx(encodedWrapperArgs, builtTx); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** @@ -133,21 +128,20 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param withdrawProps - properties of the withdraw tx - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildWithdraw( wrapperTxProps: WrapperTxProps, withdrawProps: WithdrawProps - ): Promise { + ): Promise { const bondMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); const encodedWithdraw = bondMsg.encode(new WithdrawMsgValue(withdrawProps)); - const builtTx = await this.sdk.build_withdraw( + const serializedTx = await this.sdk.build_withdraw( encodedWithdraw, encodedWrapperArgs ); - - return new EncodedTx(encodedWrapperArgs, builtTx); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** @@ -155,23 +149,22 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param redelegateProps - properties of the redelegate tx - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildRedelegate( wrapperTxProps: WrapperTxProps, redelegateProps: RedelegateProps - ): Promise { + ): Promise { const redelegateMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); const encodedRedelegate = redelegateMsg.encode( new RedelegateMsgValue(redelegateProps) ); - const builtTx = await this.sdk.build_redelegate( + const serializedTx = await this.sdk.build_redelegate( encodedRedelegate, encodedWrapperArgs ); - - return new EncodedTx(encodedWrapperArgs, builtTx); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** @@ -179,23 +172,22 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param ibcTransferProps - properties of the ibc transfer tx - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildIbcTransfer( wrapperTxProps: WrapperTxProps, ibcTransferProps: IbcTransferProps - ): Promise { + ): Promise { const ibcTransferMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); const encodedIbcTransfer = ibcTransferMsg.encode( new IbcTransferMsgValue(ibcTransferProps) ); - const builtTx = await this.sdk.build_ibc_transfer( + const serializedTx = await this.sdk.build_ibc_transfer( encodedIbcTransfer, encodedWrapperArgs ); - - return new EncodedTx(encodedWrapperArgs, builtTx); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** @@ -203,23 +195,22 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param ethBridgeTransferProps - properties of the eth bridge transfer tx - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildEthBridgeTransfer( wrapperTxProps: WrapperTxProps, ethBridgeTransferProps: EthBridgeTransferProps - ): Promise { + ): Promise { const ethBridgeTransferMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); const encodedEthBridgeTransfer = ethBridgeTransferMsg.encode( new EthBridgeTransferMsgValue(ethBridgeTransferProps) ); - const builtTx = await this.sdk.build_eth_bridge_transfer( + const serializedTx = await this.sdk.build_eth_bridge_transfer( encodedEthBridgeTransfer, encodedWrapperArgs ); - - return new EncodedTx(encodedWrapperArgs, builtTx); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** @@ -227,23 +218,23 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param voteProposalProps - properties of the vote proposal tx - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildVoteProposal( wrapperTxProps: WrapperTxProps, voteProposalProps: VoteProposalProps - ): Promise { + ): Promise { const voteProposalMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); const encodedVoteProposal = voteProposalMsg.encode( new VoteProposalMsgValue(voteProposalProps) ); - const builtTx = await this.sdk.build_vote_proposal( + const serializedTx = await this.sdk.build_vote_proposal( encodedVoteProposal, encodedWrapperArgs ); - return new EncodedTx(encodedWrapperArgs, builtTx); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** @@ -251,49 +242,38 @@ export class Tx { * @async * @param wrapperTxProps - properties of the transaction * @param claimRewardsProps - properties of the claim rewards tx - * @returns promise that resolves to an EncodedTx + * @returns promise that resolves to an TxMsgValue */ async buildClaimRewards( wrapperTxProps: WrapperTxProps, claimRewardsProps: ClaimRewardsProps - ): Promise { + ): Promise { const claimRewardsMsg = new Message(); const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); const encodedClaimRewards = claimRewardsMsg.encode( new ClaimRewardsMsgValue(claimRewardsProps) ); - - const builtTx = await this.sdk.build_claim_rewards( + const serializedTx = await this.sdk.build_claim_rewards( encodedClaimRewards, encodedWrapperArgs ); - return new EncodedTx(encodedWrapperArgs, builtTx); + return deserialize(Buffer.from(serializedTx), TxMsgValue); } /** * Build a batched transaction - * @param txs - array of BuiltTx types - * @returns a BuiltTx type - */ - buildBatch(txs: BuiltTx[]): BuiltTx { - return SdkWasm.build_batch(txs); - } - - /** - * Reveal Public Key using serialized Tx - * @async - * @param signingKey - signing key - * @param wrapperTxProps - properties of the transaction - * @param [chainId] - optional chain ID - will enforce validation if present - * @returns void + * @param txs - array of TxProp + * @returns a serialized TxMsgValue type */ - async revealPk( - signingKey: string, - wrapperTxProps: WrapperTxProps, - chainId?: string - ): Promise { - const encodedWrapperArgs = this.encodeTxArgs(wrapperTxProps); - return await this.sdk.reveal_pk(signingKey, encodedWrapperArgs, chainId); + buildBatch(txs: TxProps[]): TxProps { + const encodedTxs = txs.map((txProps) => { + const txMsgValue = new TxMsgValue(txProps); + const msg = new Message(); + return msg.encode(txMsgValue); + }); + + const batch = SdkWasm.build_batch(encodedTxs.map((tx) => [...tx])); + return deserialize(Buffer.from(batch), TxMsgValue); } /** diff --git a/packages/sdk/src/tx/types.ts b/packages/sdk/src/tx/types.ts index 4884b7086..36f2e314b 100644 --- a/packages/sdk/src/tx/types.ts +++ b/packages/sdk/src/tx/types.ts @@ -1,61 +1,2 @@ -import { BuiltTx } from "@namada/shared"; - -/** - * Wrap results of tx building along with TxMsg - */ -export class EncodedTx { - /** - * Create an EncodedTx class - * @param wrapperTxMsg - Borsh-serialized wrapper tx args - * @param tx - Specific tx struct instance - */ - constructor( - public readonly wrapperTxMsg: Uint8Array, - public readonly tx: BuiltTx - ) {} - - /** - * Return serialized tx bytes for external signing. This will clear - * the BuiltTx struct instance from wasm memory, then return the bytes. - * @returns Serialized tx bytes - */ - toBytes(): Uint8Array { - const bytes = new Uint8Array(this.tx.tx_bytes()); - this.free(); - return bytes; - } - - /** - * Return the inner Tx hash of the built Tx - * @returns string of tx hash - */ - hash(): string { - return this.tx.tx_hash(); - } - - /** - * Clear tx bytes resource - */ - free(): void { - this.tx.free(); - } -} - -/** - * Wrap results of tx signing to simplify passing between Sdk functions - */ -export class SignedTx { - /** - * @param wrapperTxMsg - Serialized wrapper tx msg bytes - * @param tx - Serialized tx bytes - */ - constructor( - // Serialized WrapperTxMsg - public readonly wrapperTxMsg: Uint8Array, - // Built Tx - public readonly tx: Uint8Array - ) {} -} - -export { BuiltTx, TxType, TxTypeLabel } from "@namada/shared"; +export { TxType, TxTypeLabel } from "@namada/shared"; export type { SupportedTx } from "@namada/shared"; diff --git a/packages/shared/lib/src/sdk/args.rs b/packages/shared/lib/src/sdk/args.rs index d5a1f00ff..d0cd5be1e 100644 --- a/packages/shared/lib/src/sdk/args.rs +++ b/packages/shared/lib/src/sdk/args.rs @@ -28,7 +28,7 @@ impl RevealPkMsg { } } -#[derive(BorshSerialize, BorshDeserialize, Debug)] +#[derive(BorshSerialize, BorshDeserialize, Clone, Debug)] #[borsh(crate = "namada_sdk::borsh")] pub struct WrapperTxMsg { token: String, diff --git a/packages/shared/lib/src/sdk/mod.rs b/packages/shared/lib/src/sdk/mod.rs index 37c603538..dd289f263 100644 --- a/packages/shared/lib/src/sdk/mod.rs +++ b/packages/shared/lib/src/sdk/mod.rs @@ -13,9 +13,8 @@ use crate::utils::set_panic_hook; use crate::utils::to_bytes; use crate::utils::to_js_result; use gloo_utils::format::JsValueSerdeExt; -use js_sys::Uint8Array; use namada_sdk::address::Address; -use namada_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; +use namada_sdk::borsh::{self, BorshDeserialize}; use namada_sdk::eth_bridge::bridge_pool::build_bridge_pool_tx; use namada_sdk::hash::Hash; use namada_sdk::key::{common, ed25519, SigScheme}; @@ -23,86 +22,16 @@ use namada_sdk::masp::ShieldedContext; use namada_sdk::rpc::query_epoch; use namada_sdk::signing::SigningTxData; use namada_sdk::string_encoding::Format; -use namada_sdk::tx::Tx; use namada_sdk::tx::{ build_batch, build_bond, build_claim_rewards, build_ibc_transfer, build_redelegation, build_reveal_pk, build_transparent_transfer, build_unbond, build_vote_proposal, build_withdraw, - is_reveal_pk_needed, process_tx, ProcessTxResponse, + process_tx, ProcessTxResponse, Tx, }; use namada_sdk::wallet::{Store, Wallet}; use namada_sdk::{Namada, NamadaImpl}; use std::str::FromStr; use wasm_bindgen::{prelude::wasm_bindgen, JsError, JsValue}; -#[wasm_bindgen] -#[derive(BorshSerialize, BorshDeserialize)] -#[borsh(crate = "namada_sdk::borsh")] -pub struct BatchTxResult { - hash: String, - is_applied: bool, -} - -#[wasm_bindgen] -#[derive(BorshSerialize, BorshDeserialize)] -#[borsh(crate = "namada_sdk::borsh")] -pub struct TxResponse { - code: String, - commitments: Vec, - gas_used: String, - hash: String, - height: String, - info: String, - log: String, -} - -#[wasm_bindgen] -#[derive(Clone)] -pub struct BuiltTx { - tx: Vec, - signing_data: Vec, -} - -#[wasm_bindgen] -impl BuiltTx { - #[wasm_bindgen(constructor)] - pub fn new(tx: Vec, signing_data_bytes: JsValue) -> Result { - let signing_data_bytes: Vec> = signing_data_bytes - .into_serde() - .expect("Deserializing should not fail"); - - let mut signing_data: Vec = vec![]; - - for bytes in signing_data_bytes { - let sd: tx::SigningData = borsh::from_slice(&bytes)?; - let signing_tx_data: SigningTxData = sd.to_signing_tx_data()?; - signing_data.push(signing_tx_data); - } - - Ok(BuiltTx { tx, signing_data }) - } - - pub fn tx_bytes(&self) -> Vec { - self.tx.clone() - } - - pub fn tx_hash(&self) -> Result { - let tx: Tx = borsh::from_slice(&self.tx_bytes())?; - to_js_result(tx.header_hash().to_string()) - } - - pub fn signing_data_bytes(&self) -> Result { - let mut signing_data_bytes: Vec> = vec![]; - - for signing_tx_data in self.signing_data.clone() { - let signing_data = tx::SigningData::from_signing_tx_data(signing_tx_data)?; - let bytes = signing_data.to_bytes()?; - signing_data_bytes.push(bytes); - } - - Ok(JsValue::from_serde(&signing_data_bytes)?) - } -} - /// Represents the Sdk public API. #[wasm_bindgen] pub struct Sdk { @@ -217,19 +146,20 @@ impl Sdk { pub async fn sign_tx( &self, - built_tx: BuiltTx, + tx: Vec, private_key: Option, chain_id: Option, ) -> Result { - let mut tx: Tx = borsh::from_slice(&built_tx.tx)?; + let tx: tx::Tx = borsh::from_slice(&tx)?; + let mut namada_tx: Tx = borsh::from_slice(&tx.tx_bytes())?; // If chain_id is provided, validate this against value in Tx header if let Some(c) = chain_id { - if c != tx.header.chain_id.to_string() { + if c != namada_tx.header.chain_id.to_string() { return Err(JsError::new(&format!( "chain_id {} does not match Tx header chain_id {}", &c, - tx.header.chain_id.as_str() + namada_tx.header.chain_id.as_str() ))); } } @@ -242,12 +172,12 @@ impl Sdk { None => vec![], }; - for signing_tx_data in built_tx.signing_data { + for signing_tx_data in tx.signing_tx_data()? { if let Some(account_public_keys_map) = signing_tx_data.account_public_keys_map.clone() { // We only sign the raw header for transfers from transparent source if !signing_keys.is_empty() { // Sign the raw header - tx.sign_raw( + namada_tx.sign_raw( signing_keys.clone(), account_public_keys_map, signing_tx_data.owner.clone(), @@ -261,9 +191,9 @@ impl Sdk { let key = signing_keys[0].clone(); // Sign the fee header - tx.sign_wrapper(key); + namada_tx.sign_wrapper(key); - to_js_result(borsh::to_vec(&tx)?) + to_js_result(borsh::to_vec(&namada_tx)?) } // Broadcast Tx @@ -275,16 +205,13 @@ impl Sdk { let hash = tx.header_hash().to_string(); let resp = process_tx(&self.namada, &args, tx.clone()).await?; - let mut batch_tx_results: Vec = vec![]; + let mut batch_tx_results: Vec = vec![]; for cmt in cmts { let response = resp.is_applied_and_valid(Some(&tx.header_hash()), &cmt); let hash = cmt.get_hash().to_string(); - batch_tx_results.push(BatchTxResult { - hash, - is_applied: response.is_some(), - }); + batch_tx_results.push(tx::BatchTxResult::new(hash, response.is_some())); } // Collect results and return @@ -296,15 +223,8 @@ impl Sdk { let info = tx_response.info.to_string(); let log = tx_response.log.to_string(); - let response = TxResponse { - code, - commitments: batch_tx_results, - gas_used, - hash, - height, - info, - log, - }; + let response = + tx::TxResponse::new(code, batch_tx_results, gas_used, hash, height, info, log); to_js_result(borsh::to_vec(&response)?) } _ => return Err(JsError::new(&format!("Tx not applied: {}", &hash))), @@ -312,26 +232,43 @@ impl Sdk { } /// Build a batch Tx from built transactions and return the bytes - pub fn build_batch(built_txs: Vec) -> Result { + pub fn build_batch(txs: JsValue) -> Result { + let mut built_txs: Vec = vec![]; + let built_txs_bytes: Vec> = txs.into_serde().unwrap(); + + for bytes in built_txs_bytes.iter() { + let tx: tx::Tx = borsh::from_slice(&bytes)?; + built_txs.push(tx); + } + + // Get wrapper args + let first_tx = built_txs + .get(0) + .expect("At least one Tx is required for building batches!"); + + let args = first_tx.args(); + let mut txs: Vec<(Tx, SigningTxData)> = vec![]; - // Iterate through provided BuiltTx and deserialize bytes to Tx + // Iterate through provided tx::Tx and deserialize bytes to Namada Tx for built_tx in built_txs.into_iter() { - let tx: Tx = Tx::try_from_slice(&built_tx.tx_bytes())?; - let first_signing_data = built_tx - .signing_data - .iter() - .nth(0) + let tx_bytes = built_tx.tx_bytes(); + let signing_tx_data = built_tx.signing_tx_data()?; + let tx: Tx = Tx::try_from_slice(&tx_bytes)?; + let first_signing_data = signing_tx_data + .get(0) .expect("At least one signing data should be present on a Tx"); + txs.push((tx, first_signing_data.to_owned())); } let (tx, signing_data) = build_batch(txs.clone())?; - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, + to_js_result(borsh::to_vec(&tx::Tx::new( + tx, + &borsh::to_vec(&args)?, signing_data, - }) + )?)?) } // Append signatures and return tx bytes @@ -370,179 +307,102 @@ impl Sdk { &self, transfer_msg: &[u8], wrapper_tx_msg: &[u8], - _gas_payer: Option, - ) -> Result { + ) -> Result { let mut args = args::transparent_transfer_tx_args(transfer_msg, wrapper_tx_msg)?; let (tx, signing_data) = build_transparent_transfer(&self.namada, &mut args).await?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } pub async fn build_ibc_transfer( &self, ibc_transfer_msg: &[u8], wrapper_tx_msg: &[u8], - _gas_payer: Option, - ) -> Result { + ) -> Result { let args = args::ibc_transfer_tx_args(ibc_transfer_msg, wrapper_tx_msg)?; let (tx, signing_data, _) = build_ibc_transfer(&self.namada, &args).await?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } pub async fn build_eth_bridge_transfer( &self, eth_bridge_transfer_msg: &[u8], wrapper_tx_msg: &[u8], - _gas_payer: Option, - ) -> Result { + ) -> Result { let args = args::eth_bridge_transfer_tx_args(eth_bridge_transfer_msg, wrapper_tx_msg)?; let (tx, signing_data) = build_bridge_pool_tx(&self.namada, args.clone()).await?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } pub async fn build_vote_proposal( &self, vote_proposal_msg: &[u8], wrapper_tx_msg: &[u8], - _gas_payer: Option, - ) -> Result { + ) -> Result { let args = args::vote_proposal_tx_args(vote_proposal_msg, wrapper_tx_msg)?; let epoch = query_epoch(self.namada.client()).await?; let (tx, signing_data) = build_vote_proposal(&self.namada, &args, epoch) .await .map_err(JsError::from)?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } pub async fn build_claim_rewards( &self, claim_rewards_msg: &[u8], wrapper_tx_msg: &[u8], - ) -> Result { + ) -> Result { let args = args::claim_rewards_tx_args(claim_rewards_msg, wrapper_tx_msg)?; let (tx, signing_data) = build_claim_rewards(&self.namada, &args) .await .map_err(JsError::from)?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } pub async fn build_bond( &self, bond_msg: &[u8], wrapper_tx_msg: &[u8], - _gas_payer: Option, - ) -> Result { + ) -> Result { let args = args::bond_tx_args(bond_msg, wrapper_tx_msg)?; let (tx, signing_data) = build_bond(&self.namada, &args).await?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } pub async fn build_unbond( &self, unbond_msg: &[u8], wrapper_tx_msg: &[u8], - _gas_payer: Option, - ) -> Result { + ) -> Result { let args = args::unbond_tx_args(unbond_msg, wrapper_tx_msg)?; let (tx, signing_data, _) = build_unbond(&self.namada, &args).await?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } pub async fn build_withdraw( &self, withdraw_msg: &[u8], wrapper_tx_msg: &[u8], - _gas_payer: Option, - ) -> Result { + ) -> Result { let args = args::withdraw_tx_args(withdraw_msg, wrapper_tx_msg)?; let (tx, signing_data) = build_withdraw(&self.namada, &args).await?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } pub async fn build_redelegate( &self, redelegate_msg: &[u8], wrapper_tx_msg: &[u8], - _gas_payer: Option, - ) -> Result { + ) -> Result { let args = args::redelegate_tx_args(redelegate_msg, wrapper_tx_msg)?; let (tx, signing_data) = build_redelegation(&self.namada, &args).await?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } - pub async fn build_reveal_pk(&self, wrapper_tx_msg: &[u8]) -> Result { + pub async fn build_reveal_pk(&self, wrapper_tx_msg: &[u8]) -> Result { let args = args::tx_args_from_slice(wrapper_tx_msg)?; let public_key = args.signing_keys[0].clone(); - let (tx, signing_data) = build_reveal_pk(&self.namada, &args.clone(), &public_key).await?; - - Ok(BuiltTx { - tx: borsh::to_vec(&tx)?, - signing_data: vec![signing_data], - }) - } - - // Helper function to reveal public key - pub async fn reveal_pk( - &self, - signing_key: String, - wrapper_tx_msg: &[u8], - chain_id: Option, - ) -> Result<(), JsError> { - let args = args::tx_args_from_slice(wrapper_tx_msg)?; - let pk = &args - .signing_keys - .clone() - .into_iter() - .nth(0) - .expect("No public key provided"); - let address = Address::from(pk); - - if is_reveal_pk_needed(self.namada.client(), &address).await? { - let built_tx = self.build_reveal_pk(wrapper_tx_msg).await?; - // Conversion from JsValue so we can use self.sign_tx - let tx_bytes = - Uint8Array::new(&self.sign_tx(built_tx, Some(signing_key), chain_id).await?) - .to_vec(); - self.process_tx(&tx_bytes, wrapper_tx_msg).await?; - } - - Ok(()) + self.serialize_tx_result(tx, wrapper_tx_msg, signing_data) } // Sign arbitrary data with the provided signing key @@ -569,6 +429,16 @@ impl Sdk { to_js_result(result) } + + fn serialize_tx_result( + &self, + tx: Tx, + wrapper_tx_msg: &[u8], + signing_data: SigningTxData, + ) -> Result { + let tx = tx::Tx::new(tx, wrapper_tx_msg, vec![signing_data])?; + to_js_result(borsh::to_vec(&tx)?) + } } #[wasm_bindgen(module = "/src/sdk/mod.js")] diff --git a/packages/shared/lib/src/sdk/tx.rs b/packages/shared/lib/src/sdk/tx.rs index 1b79d416b..019ea48a7 100644 --- a/packages/shared/lib/src/sdk/tx.rs +++ b/packages/shared/lib/src/sdk/tx.rs @@ -4,9 +4,8 @@ use std::str::FromStr; use gloo_utils::format::JsValueSerdeExt; use namada_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; use namada_sdk::signing::SigningTxData; -use namada_sdk::tx; use namada_sdk::tx::{ - TX_BOND_WASM, TX_CLAIM_REWARDS_WASM, TX_REDELEGATE_WASM, TX_REVEAL_PK, TX_TRANSFER_WASM, + self, TX_BOND_WASM, TX_CLAIM_REWARDS_WASM, TX_REDELEGATE_WASM, TX_REVEAL_PK, TX_TRANSFER_WASM, TX_UNBOND_WASM, TX_VOTE_PROPOSAL, TX_WITHDRAW_WASM, }; use namada_sdk::uint::Uint; @@ -34,11 +33,11 @@ pub enum TxType { ClaimRewards = 11, } -#[derive(BorshSerialize, BorshDeserialize)] +#[derive(BorshSerialize, BorshDeserialize, Clone, Debug)] #[borsh(crate = "namada_sdk::borsh")] pub struct SigningData { owner: Option, - public_keys: Vec, + public_keys: Vec, threshold: u8, account_public_keys_map: Option>, fee_payer: String, @@ -51,17 +50,24 @@ impl SigningData { Some(addr) => Some(addr.to_string()), None => None, }; - let public_keys = borsh::to_vec(&signing_tx_data.public_keys)?; - let fee_payer = signing_tx_data.fee_payer.to_string(); + let public_keys = signing_tx_data + .public_keys + .into_iter() + .map(|pk| pk.to_string()) + .collect(); + let account_public_keys_map = match signing_tx_data.account_public_keys_map { Some(pk_map) => Some(borsh::to_vec(&pk_map)?), None => None, }; + let fee_payer = signing_tx_data.fee_payer.to_string(); + let threshold = signing_tx_data.threshold; + Ok(SigningData { owner, public_keys, - threshold: signing_tx_data.threshold, + threshold, account_public_keys_map, fee_payer, }) @@ -73,7 +79,13 @@ impl SigningData { Some(addr) => Some(Address::from_str(&addr)?), None => None, }; - let public_keys = borsh::from_slice(&self.public_keys)?; + + let mut public_keys: Vec = vec![]; + for pk in self.public_keys.clone() { + let pk = PublicKey::from_str(&pk)?; + public_keys.push(pk); + } + let fee_payer = PublicKey::from_str(&self.fee_payer)?; let threshold = self.threshold; let account_public_keys_map = match &self.account_public_keys_map { @@ -89,9 +101,56 @@ impl SigningData { account_public_keys_map, }) } +} + +/// Serializable Tx for exported build functions +#[derive(BorshSerialize, BorshDeserialize, Clone, Debug)] +#[borsh(crate = "namada_sdk::borsh")] +pub struct Tx { + args: WrapperTxMsg, + hash: String, + bytes: Vec, + signing_data: Vec, +} + +impl Tx { + pub fn new( + tx: tx::Tx, + args: &[u8], + signing_tx_data: Vec, + ) -> Result { + let args: WrapperTxMsg = borsh::from_slice(&args)?; + let mut signing_data: Vec = vec![]; + for sd in signing_tx_data.into_iter() { + let sd = SigningData::from_signing_tx_data(sd)?; + signing_data.push(sd); + } + let hash = tx.header_hash().to_string(); + let bytes: Vec = borsh::to_vec(&tx)?; + + Ok(Tx { + args, + hash, + bytes, + signing_data, + }) + } + + pub fn tx_bytes(&self) -> Vec { + self.bytes.clone() + } + + pub fn signing_tx_data(&self) -> Result, JsError> { + let mut signing_tx_data: Vec = vec![]; + for sd in self.signing_data.clone().iter() { + signing_tx_data.push(sd.to_signing_tx_data()?); + } + + Ok(signing_tx_data) + } - pub fn to_bytes(&self) -> Result, JsError> { - Ok(borsh::to_vec(&self)?) + pub fn args(&self) -> WrapperTxMsg { + self.args.clone() } } @@ -205,3 +264,53 @@ impl TxDetails { Ok(tx_details?) } } + +#[wasm_bindgen] +#[derive(BorshSerialize, BorshDeserialize)] +#[borsh(crate = "namada_sdk::borsh")] +pub struct BatchTxResult { + hash: String, + is_applied: bool, +} + +impl BatchTxResult { + pub fn new(hash: String, is_applied: bool) -> BatchTxResult { + BatchTxResult { hash, is_applied } + } +} + +/// Serializable response for process_tx calls +#[wasm_bindgen] +#[derive(BorshSerialize, BorshDeserialize)] +#[borsh(crate = "namada_sdk::borsh")] +pub struct TxResponse { + code: String, + commitments: Vec, + gas_used: String, + hash: String, + height: String, + info: String, + log: String, +} + +impl TxResponse { + pub fn new( + code: String, + commitments: Vec, + gas_used: String, + hash: String, + height: String, + info: String, + log: String, + ) -> TxResponse { + TxResponse { + code, + commitments, + gas_used, + hash, + height, + info, + log, + } + } +} diff --git a/packages/types/docs/classes/BatchTxResultMsgValue.md b/packages/types/docs/classes/BatchTxResultMsgValue.md index 08d0150ee..9f48541d2 100644 --- a/packages/types/docs/classes/BatchTxResultMsgValue.md +++ b/packages/types/docs/classes/BatchTxResultMsgValue.md @@ -31,7 +31,7 @@ #### Defined in -[tx/schema/batchTxResult.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/batchTxResult.ts#L12) +[tx/schema/batchTxResult.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/batchTxResult.ts#L12) ## Properties @@ -41,7 +41,7 @@ #### Defined in -[tx/schema/batchTxResult.ts:7](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/batchTxResult.ts#L7) +[tx/schema/batchTxResult.ts:7](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/batchTxResult.ts#L7) ___ @@ -51,4 +51,4 @@ ___ #### Defined in -[tx/schema/batchTxResult.ts:10](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/batchTxResult.ts#L10) +[tx/schema/batchTxResult.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/batchTxResult.ts#L10) diff --git a/packages/types/docs/classes/BondMsgValue.md b/packages/types/docs/classes/BondMsgValue.md index 8a6ddf0dd..64251b738 100644 --- a/packages/types/docs/classes/BondMsgValue.md +++ b/packages/types/docs/classes/BondMsgValue.md @@ -32,7 +32,7 @@ #### Defined in -[tx/schema/bond.ts:17](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/bond.ts#L17) +[tx/schema/bond.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/bond.ts#L17) ## Properties @@ -42,7 +42,7 @@ #### Defined in -[tx/schema/bond.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/bond.ts#L15) +[tx/schema/bond.ts:15](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/bond.ts#L15) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[tx/schema/bond.ts:9](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/bond.ts#L9) +[tx/schema/bond.ts:9](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/bond.ts#L9) ___ @@ -62,4 +62,4 @@ ___ #### Defined in -[tx/schema/bond.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/bond.ts#L12) +[tx/schema/bond.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/bond.ts#L12) diff --git a/packages/types/docs/classes/ClaimRewardsMsgValue.md b/packages/types/docs/classes/ClaimRewardsMsgValue.md index 73cad790f..61d524a2c 100644 --- a/packages/types/docs/classes/ClaimRewardsMsgValue.md +++ b/packages/types/docs/classes/ClaimRewardsMsgValue.md @@ -31,7 +31,7 @@ #### Defined in -[tx/schema/claimRewards.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/claimRewards.ts#L12) +[tx/schema/claimRewards.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/claimRewards.ts#L12) ## Properties @@ -41,7 +41,7 @@ #### Defined in -[tx/schema/claimRewards.ts:10](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/claimRewards.ts#L10) +[tx/schema/claimRewards.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/claimRewards.ts#L10) ___ @@ -51,4 +51,4 @@ ___ #### Defined in -[tx/schema/claimRewards.ts:7](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/claimRewards.ts#L7) +[tx/schema/claimRewards.ts:7](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/claimRewards.ts#L7) diff --git a/packages/types/docs/classes/CommitmentMsgValue.md b/packages/types/docs/classes/CommitmentMsgValue.md index 0c7ce0ffa..ad41ff544 100644 --- a/packages/types/docs/classes/CommitmentMsgValue.md +++ b/packages/types/docs/classes/CommitmentMsgValue.md @@ -34,7 +34,7 @@ #### Defined in -[tx/schema/txDetails.ts:19](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txDetails.ts#L19) +[tx/schema/txDetails.ts:19](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txDetails.ts#L19) ___ @@ -44,7 +44,7 @@ ___ #### Defined in -[tx/schema/txDetails.ts:10](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txDetails.ts#L10) +[tx/schema/txDetails.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txDetails.ts#L10) ___ @@ -54,7 +54,7 @@ ___ #### Defined in -[tx/schema/txDetails.ts:16](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txDetails.ts#L16) +[tx/schema/txDetails.ts:16](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txDetails.ts#L16) ___ @@ -64,7 +64,7 @@ ___ #### Defined in -[tx/schema/txDetails.ts:13](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txDetails.ts#L13) +[tx/schema/txDetails.ts:13](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txDetails.ts#L13) ___ @@ -74,4 +74,4 @@ ___ #### Defined in -[tx/schema/txDetails.ts:7](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txDetails.ts#L7) +[tx/schema/txDetails.ts:7](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txDetails.ts#L7) diff --git a/packages/types/docs/classes/EthBridgeTransferMsgValue.md b/packages/types/docs/classes/EthBridgeTransferMsgValue.md index e32bb8370..f9003674f 100644 --- a/packages/types/docs/classes/EthBridgeTransferMsgValue.md +++ b/packages/types/docs/classes/EthBridgeTransferMsgValue.md @@ -37,7 +37,7 @@ #### Defined in -[tx/schema/ethBridgeTransfer.ts:32](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L32) +[tx/schema/ethBridgeTransfer.ts:32](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L32) ## Properties @@ -47,7 +47,7 @@ #### Defined in -[tx/schema/ethBridgeTransfer.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L21) +[tx/schema/ethBridgeTransfer.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L21) ___ @@ -57,7 +57,7 @@ ___ #### Defined in -[tx/schema/ethBridgeTransfer.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L12) +[tx/schema/ethBridgeTransfer.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L12) ___ @@ -67,7 +67,7 @@ ___ #### Defined in -[tx/schema/ethBridgeTransfer.ts:24](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L24) +[tx/schema/ethBridgeTransfer.ts:24](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L24) ___ @@ -77,7 +77,7 @@ ___ #### Defined in -[tx/schema/ethBridgeTransfer.ts:27](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L27) +[tx/schema/ethBridgeTransfer.ts:27](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L27) ___ @@ -87,7 +87,7 @@ ___ #### Defined in -[tx/schema/ethBridgeTransfer.ts:30](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L30) +[tx/schema/ethBridgeTransfer.ts:30](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L30) ___ @@ -97,7 +97,7 @@ ___ #### Defined in -[tx/schema/ethBridgeTransfer.ts:9](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L9) +[tx/schema/ethBridgeTransfer.ts:9](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L9) ___ @@ -107,7 +107,7 @@ ___ #### Defined in -[tx/schema/ethBridgeTransfer.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L15) +[tx/schema/ethBridgeTransfer.ts:15](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L15) ___ @@ -117,4 +117,4 @@ ___ #### Defined in -[tx/schema/ethBridgeTransfer.ts:18](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ethBridgeTransfer.ts#L18) +[tx/schema/ethBridgeTransfer.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ethBridgeTransfer.ts#L18) diff --git a/packages/types/docs/classes/IbcTransferMsgValue.md b/packages/types/docs/classes/IbcTransferMsgValue.md index 859988901..9a4ca68aa 100644 --- a/packages/types/docs/classes/IbcTransferMsgValue.md +++ b/packages/types/docs/classes/IbcTransferMsgValue.md @@ -39,7 +39,7 @@ #### Defined in -[tx/schema/ibcTransfer.ts:38](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L38) +[tx/schema/ibcTransfer.ts:38](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L38) ## Properties @@ -49,7 +49,7 @@ #### Defined in -[tx/schema/ibcTransfer.ts:18](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L18) +[tx/schema/ibcTransfer.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L18) ___ @@ -59,7 +59,7 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:24](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L24) +[tx/schema/ibcTransfer.ts:24](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L24) ___ @@ -69,7 +69,7 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:33](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L33) +[tx/schema/ibcTransfer.ts:33](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L33) ___ @@ -79,7 +79,7 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L21) +[tx/schema/ibcTransfer.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L21) ___ @@ -89,7 +89,7 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L12) +[tx/schema/ibcTransfer.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L12) ___ @@ -99,7 +99,7 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:36](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L36) +[tx/schema/ibcTransfer.ts:36](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L36) ___ @@ -109,7 +109,7 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:9](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L9) +[tx/schema/ibcTransfer.ts:9](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L9) ___ @@ -119,7 +119,7 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:27](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L27) +[tx/schema/ibcTransfer.ts:27](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L27) ___ @@ -129,7 +129,7 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:30](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L30) +[tx/schema/ibcTransfer.ts:30](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L30) ___ @@ -139,4 +139,4 @@ ___ #### Defined in -[tx/schema/ibcTransfer.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/ibcTransfer.ts#L15) +[tx/schema/ibcTransfer.ts:15](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/ibcTransfer.ts#L15) diff --git a/packages/types/docs/classes/Message.md b/packages/types/docs/classes/Message.md index e984f955d..6169fafd6 100644 --- a/packages/types/docs/classes/Message.md +++ b/packages/types/docs/classes/Message.md @@ -61,7 +61,7 @@ #### Defined in -[tx/messages/index.ts:9](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/messages/index.ts#L9) +[tx/messages/index.ts:9](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/messages/index.ts#L9) ___ @@ -88,4 +88,4 @@ ___ #### Defined in -[tx/messages/index.ts:17](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/messages/index.ts#L17) +[tx/messages/index.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/messages/index.ts#L17) diff --git a/packages/types/docs/classes/RedelegateMsgValue.md b/packages/types/docs/classes/RedelegateMsgValue.md index 06c0ab8ee..84e03f1a5 100644 --- a/packages/types/docs/classes/RedelegateMsgValue.md +++ b/packages/types/docs/classes/RedelegateMsgValue.md @@ -33,7 +33,7 @@ #### Defined in -[tx/schema/redelegate.ts:19](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/redelegate.ts#L19) +[tx/schema/redelegate.ts:19](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/redelegate.ts#L19) ## Properties @@ -43,7 +43,7 @@ #### Defined in -[tx/schema/redelegate.ts:17](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/redelegate.ts#L17) +[tx/schema/redelegate.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/redelegate.ts#L17) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[tx/schema/redelegate.ts:14](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/redelegate.ts#L14) +[tx/schema/redelegate.ts:14](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/redelegate.ts#L14) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[tx/schema/redelegate.ts:8](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/redelegate.ts#L8) +[tx/schema/redelegate.ts:8](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/redelegate.ts#L8) ___ @@ -73,4 +73,4 @@ ___ #### Defined in -[tx/schema/redelegate.ts:11](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/redelegate.ts#L11) +[tx/schema/redelegate.ts:11](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/redelegate.ts#L11) diff --git a/packages/types/docs/classes/RevealPkMsgValue.md b/packages/types/docs/classes/RevealPkMsgValue.md index b6b59e1fc..e0d5638f1 100644 --- a/packages/types/docs/classes/RevealPkMsgValue.md +++ b/packages/types/docs/classes/RevealPkMsgValue.md @@ -30,7 +30,7 @@ #### Defined in -[tx/schema/revealPk.ts:8](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/revealPk.ts#L8) +[tx/schema/revealPk.ts:8](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/revealPk.ts#L8) ## Properties @@ -40,4 +40,4 @@ #### Defined in -[tx/schema/revealPk.ts:6](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/revealPk.ts#L6) +[tx/schema/revealPk.ts:6](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/revealPk.ts#L6) diff --git a/packages/types/docs/classes/SignatureMsgValue.md b/packages/types/docs/classes/SignatureMsgValue.md index 74b99362a..429fa0371 100644 --- a/packages/types/docs/classes/SignatureMsgValue.md +++ b/packages/types/docs/classes/SignatureMsgValue.md @@ -34,7 +34,7 @@ #### Defined in -[tx/schema/signature.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/signature.ts#L21) +[tx/schema/signature.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/signature.ts#L21) ## Properties @@ -44,7 +44,7 @@ #### Defined in -[tx/schema/signature.ts:7](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/signature.ts#L7) +[tx/schema/signature.ts:7](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/signature.ts#L7) ___ @@ -54,7 +54,7 @@ ___ #### Defined in -[tx/schema/signature.ts:10](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/signature.ts#L10) +[tx/schema/signature.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/signature.ts#L10) ___ @@ -64,7 +64,7 @@ ___ #### Defined in -[tx/schema/signature.ts:13](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/signature.ts#L13) +[tx/schema/signature.ts:13](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/signature.ts#L13) ___ @@ -74,7 +74,7 @@ ___ #### Defined in -[tx/schema/signature.ts:16](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/signature.ts#L16) +[tx/schema/signature.ts:16](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/signature.ts#L16) ___ @@ -84,4 +84,4 @@ ___ #### Defined in -[tx/schema/signature.ts:19](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/signature.ts#L19) +[tx/schema/signature.ts:19](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/signature.ts#L19) diff --git a/packages/types/docs/classes/SigningDataMsgValue.md b/packages/types/docs/classes/SigningDataMsgValue.md new file mode 100644 index 000000000..9515d3770 --- /dev/null +++ b/packages/types/docs/classes/SigningDataMsgValue.md @@ -0,0 +1,87 @@ +[@namada/types](../README.md) / [Exports](../modules.md) / SigningDataMsgValue + +# Class: SigningDataMsgValue + +## Table of contents + +### Constructors + +- [constructor](SigningDataMsgValue.md#constructor) + +### Properties + +- [accountPublicKeysMap](SigningDataMsgValue.md#accountpublickeysmap) +- [feePayer](SigningDataMsgValue.md#feepayer) +- [owner](SigningDataMsgValue.md#owner) +- [publicKeys](SigningDataMsgValue.md#publickeys) +- [threshold](SigningDataMsgValue.md#threshold) + +## Constructors + +### constructor + +• **new SigningDataMsgValue**(`data`): [`SigningDataMsgValue`](SigningDataMsgValue.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | [`SigningDataMsgValue`](SigningDataMsgValue.md) | + +#### Returns + +[`SigningDataMsgValue`](SigningDataMsgValue.md) + +#### Defined in + +[tx/schema/tx.ts:26](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L26) + +## Properties + +### accountPublicKeysMap + +• `Optional` **accountPublicKeysMap**: `Uint8Array` + +#### Defined in + +[tx/schema/tx.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L21) + +___ + +### feePayer + +• **feePayer**: `string` + +#### Defined in + +[tx/schema/tx.ts:24](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L24) + +___ + +### owner + +• `Optional` **owner**: `string` + +#### Defined in + +[tx/schema/tx.ts:8](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L8) + +___ + +### publicKeys + +• **publicKeys**: `string`[] + +#### Defined in + +[tx/schema/tx.ts:11](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L11) + +___ + +### threshold + +• **threshold**: `number` + +#### Defined in + +[tx/schema/tx.ts:14](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L14) diff --git a/packages/types/docs/classes/TransferDataMsgValue.md b/packages/types/docs/classes/TransferDataMsgValue.md index 09c535d8a..ad4de723b 100644 --- a/packages/types/docs/classes/TransferDataMsgValue.md +++ b/packages/types/docs/classes/TransferDataMsgValue.md @@ -32,7 +32,7 @@ #### Defined in -[tx/schema/transfer.ts:49](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L49) +[tx/schema/transfer.ts:49](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L49) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[tx/schema/transfer.ts:43](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L43) +[tx/schema/transfer.ts:43](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L43) ___ @@ -52,4 +52,4 @@ ___ #### Defined in -[tx/schema/transfer.ts:46](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L46) +[tx/schema/transfer.ts:46](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L46) diff --git a/packages/types/docs/classes/TransferMsgValue.md b/packages/types/docs/classes/TransferMsgValue.md index 3883ac984..632577f0d 100644 --- a/packages/types/docs/classes/TransferMsgValue.md +++ b/packages/types/docs/classes/TransferMsgValue.md @@ -32,7 +32,7 @@ #### Defined in -[tx/schema/transfer.ts:60](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L60) +[tx/schema/transfer.ts:60](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L60) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[tx/schema/transfer.ts:54](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L54) +[tx/schema/transfer.ts:54](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L54) ___ @@ -52,4 +52,4 @@ ___ #### Defined in -[tx/schema/transfer.ts:57](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L57) +[tx/schema/transfer.ts:57](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L57) diff --git a/packages/types/docs/classes/TransparentTransferDataMsgValue.md b/packages/types/docs/classes/TransparentTransferDataMsgValue.md index 595ecf29f..ca565d56b 100644 --- a/packages/types/docs/classes/TransparentTransferDataMsgValue.md +++ b/packages/types/docs/classes/TransparentTransferDataMsgValue.md @@ -33,7 +33,7 @@ #### Defined in -[tx/schema/transfer.ts:23](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L23) +[tx/schema/transfer.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L23) ## Properties @@ -43,7 +43,7 @@ #### Defined in -[tx/schema/transfer.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L21) +[tx/schema/transfer.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L21) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[tx/schema/transfer.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L12) +[tx/schema/transfer.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L12) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[tx/schema/transfer.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L15) +[tx/schema/transfer.ts:15](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L15) ___ @@ -73,4 +73,4 @@ ___ #### Defined in -[tx/schema/transfer.ts:18](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L18) +[tx/schema/transfer.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L18) diff --git a/packages/types/docs/classes/TransparentTransferMsgValue.md b/packages/types/docs/classes/TransparentTransferMsgValue.md index ab7364a3c..1b60ae621 100644 --- a/packages/types/docs/classes/TransparentTransferMsgValue.md +++ b/packages/types/docs/classes/TransparentTransferMsgValue.md @@ -30,7 +30,7 @@ #### Defined in -[tx/schema/transfer.ts:32](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L32) +[tx/schema/transfer.ts:32](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L32) ## Properties @@ -40,4 +40,4 @@ #### Defined in -[tx/schema/transfer.ts:30](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/transfer.ts#L30) +[tx/schema/transfer.ts:30](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/transfer.ts#L30) diff --git a/packages/types/docs/classes/TxDetailsMsgValue.md b/packages/types/docs/classes/TxDetailsMsgValue.md index a53a2110b..75d51c268 100644 --- a/packages/types/docs/classes/TxDetailsMsgValue.md +++ b/packages/types/docs/classes/TxDetailsMsgValue.md @@ -31,7 +31,7 @@ #### Defined in -[tx/schema/txDetails.ts:27](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txDetails.ts#L27) +[tx/schema/txDetails.ts:27](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txDetails.ts#L27) ___ @@ -41,4 +41,4 @@ ___ #### Defined in -[tx/schema/txDetails.ts:24](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txDetails.ts#L24) +[tx/schema/txDetails.ts:24](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txDetails.ts#L24) diff --git a/packages/types/docs/classes/TxMsgValue.md b/packages/types/docs/classes/TxMsgValue.md new file mode 100644 index 000000000..30c0d66af --- /dev/null +++ b/packages/types/docs/classes/TxMsgValue.md @@ -0,0 +1,76 @@ +[@namada/types](../README.md) / [Exports](../modules.md) / TxMsgValue + +# Class: TxMsgValue + +## Table of contents + +### Constructors + +- [constructor](TxMsgValue.md#constructor) + +### Properties + +- [args](TxMsgValue.md#args) +- [bytes](TxMsgValue.md#bytes) +- [hash](TxMsgValue.md#hash) +- [signingData](TxMsgValue.md#signingdata) + +## Constructors + +### constructor + +• **new TxMsgValue**(`data`): [`TxMsgValue`](TxMsgValue.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | [`TxMsgValue`](TxMsgValue.md) | + +#### Returns + +[`TxMsgValue`](TxMsgValue.md) + +#### Defined in + +[tx/schema/tx.ts:44](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L44) + +## Properties + +### args + +• **args**: [`WrapperTxMsgValue`](WrapperTxMsgValue.md) + +#### Defined in + +[tx/schema/tx.ts:33](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L33) + +___ + +### bytes + +• **bytes**: `Uint8Array` + +#### Defined in + +[tx/schema/tx.ts:39](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L39) + +___ + +### hash + +• **hash**: `string` + +#### Defined in + +[tx/schema/tx.ts:36](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L36) + +___ + +### signingData + +• **signingData**: [`SigningDataMsgValue`](SigningDataMsgValue.md)[] + +#### Defined in + +[tx/schema/tx.ts:42](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/tx.ts#L42) diff --git a/packages/types/docs/classes/TxResponseMsgValue.md b/packages/types/docs/classes/TxResponseMsgValue.md index 9d5cef29c..4e5b02148 100644 --- a/packages/types/docs/classes/TxResponseMsgValue.md +++ b/packages/types/docs/classes/TxResponseMsgValue.md @@ -36,7 +36,7 @@ #### Defined in -[tx/schema/txResponse.ts:28](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txResponse.ts#L28) +[tx/schema/txResponse.ts:28](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txResponse.ts#L28) ## Properties @@ -46,7 +46,7 @@ #### Defined in -[tx/schema/txResponse.ts:8](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txResponse.ts#L8) +[tx/schema/txResponse.ts:8](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txResponse.ts#L8) ___ @@ -56,7 +56,7 @@ ___ #### Defined in -[tx/schema/txResponse.ts:11](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txResponse.ts#L11) +[tx/schema/txResponse.ts:11](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txResponse.ts#L11) ___ @@ -66,7 +66,7 @@ ___ #### Defined in -[tx/schema/txResponse.ts:14](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txResponse.ts#L14) +[tx/schema/txResponse.ts:14](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txResponse.ts#L14) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[tx/schema/txResponse.ts:17](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txResponse.ts#L17) +[tx/schema/txResponse.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txResponse.ts#L17) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[tx/schema/txResponse.ts:20](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txResponse.ts#L20) +[tx/schema/txResponse.ts:20](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txResponse.ts#L20) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[tx/schema/txResponse.ts:23](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txResponse.ts#L23) +[tx/schema/txResponse.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txResponse.ts#L23) ___ @@ -106,4 +106,4 @@ ___ #### Defined in -[tx/schema/txResponse.ts:26](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/txResponse.ts#L26) +[tx/schema/txResponse.ts:26](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/txResponse.ts#L26) diff --git a/packages/types/docs/classes/UnbondMsgValue.md b/packages/types/docs/classes/UnbondMsgValue.md index 7fafb385f..00d52f862 100644 --- a/packages/types/docs/classes/UnbondMsgValue.md +++ b/packages/types/docs/classes/UnbondMsgValue.md @@ -32,7 +32,7 @@ #### Defined in -[tx/schema/unbond.ts:17](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/unbond.ts#L17) +[tx/schema/unbond.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/unbond.ts#L17) ## Properties @@ -42,7 +42,7 @@ #### Defined in -[tx/schema/unbond.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/unbond.ts#L15) +[tx/schema/unbond.ts:15](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/unbond.ts#L15) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[tx/schema/unbond.ts:9](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/unbond.ts#L9) +[tx/schema/unbond.ts:9](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/unbond.ts#L9) ___ @@ -62,4 +62,4 @@ ___ #### Defined in -[tx/schema/unbond.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/unbond.ts#L12) +[tx/schema/unbond.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/unbond.ts#L12) diff --git a/packages/types/docs/classes/VoteProposalMsgValue.md b/packages/types/docs/classes/VoteProposalMsgValue.md index 892b5fcf7..8281d7eb7 100644 --- a/packages/types/docs/classes/VoteProposalMsgValue.md +++ b/packages/types/docs/classes/VoteProposalMsgValue.md @@ -32,7 +32,7 @@ #### Defined in -[tx/schema/voteProposal.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/voteProposal.ts#L15) +[tx/schema/voteProposal.ts:15](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/voteProposal.ts#L15) ## Properties @@ -42,7 +42,7 @@ #### Defined in -[tx/schema/voteProposal.ts:10](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/voteProposal.ts#L10) +[tx/schema/voteProposal.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/voteProposal.ts#L10) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[tx/schema/voteProposal.ts:7](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/voteProposal.ts#L7) +[tx/schema/voteProposal.ts:7](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/voteProposal.ts#L7) ___ @@ -62,4 +62,4 @@ ___ #### Defined in -[tx/schema/voteProposal.ts:13](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/voteProposal.ts#L13) +[tx/schema/voteProposal.ts:13](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/voteProposal.ts#L13) diff --git a/packages/types/docs/classes/WithdrawMsgValue.md b/packages/types/docs/classes/WithdrawMsgValue.md index 04859924e..a21e0b064 100644 --- a/packages/types/docs/classes/WithdrawMsgValue.md +++ b/packages/types/docs/classes/WithdrawMsgValue.md @@ -31,7 +31,7 @@ #### Defined in -[tx/schema/withdraw.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/withdraw.ts#L12) +[tx/schema/withdraw.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/withdraw.ts#L12) ## Properties @@ -41,7 +41,7 @@ #### Defined in -[tx/schema/withdraw.ts:7](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/withdraw.ts#L7) +[tx/schema/withdraw.ts:7](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/withdraw.ts#L7) ___ @@ -51,4 +51,4 @@ ___ #### Defined in -[tx/schema/withdraw.ts:10](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/withdraw.ts#L10) +[tx/schema/withdraw.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/withdraw.ts#L10) diff --git a/packages/types/docs/classes/WrapperTxMsgValue.md b/packages/types/docs/classes/WrapperTxMsgValue.md index baa8d861d..485deea7b 100644 --- a/packages/types/docs/classes/WrapperTxMsgValue.md +++ b/packages/types/docs/classes/WrapperTxMsgValue.md @@ -35,7 +35,7 @@ #### Defined in -[tx/schema/wrapperTx.ts:26](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/wrapperTx.ts#L26) +[tx/schema/wrapperTx.ts:26](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/wrapperTx.ts#L26) ## Properties @@ -45,7 +45,7 @@ #### Defined in -[tx/schema/wrapperTx.ts:18](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/wrapperTx.ts#L18) +[tx/schema/wrapperTx.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/wrapperTx.ts#L18) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[tx/schema/wrapperTx.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/wrapperTx.ts#L12) +[tx/schema/wrapperTx.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/wrapperTx.ts#L12) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[tx/schema/wrapperTx.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/wrapperTx.ts#L15) +[tx/schema/wrapperTx.ts:15](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/wrapperTx.ts#L15) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[tx/schema/wrapperTx.ts:24](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/wrapperTx.ts#L24) +[tx/schema/wrapperTx.ts:24](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/wrapperTx.ts#L24) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[tx/schema/wrapperTx.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/wrapperTx.ts#L21) +[tx/schema/wrapperTx.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/wrapperTx.ts#L21) ___ @@ -95,4 +95,4 @@ ___ #### Defined in -[tx/schema/wrapperTx.ts:9](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/wrapperTx.ts#L9) +[tx/schema/wrapperTx.ts:9](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/wrapperTx.ts#L9) diff --git a/packages/types/docs/enums/AccountType.md b/packages/types/docs/enums/AccountType.md index 6e1a30957..25945ff95 100644 --- a/packages/types/docs/enums/AccountType.md +++ b/packages/types/docs/enums/AccountType.md @@ -19,7 +19,7 @@ #### Defined in -[account.ts:18](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/account.ts#L18) +[account.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/account.ts#L18) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[account.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/account.ts#L12) +[account.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/account.ts#L12) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[account.ts:14](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/account.ts#L14) +[account.ts:14](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/account.ts#L14) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[account.ts:16](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/account.ts#L16) +[account.ts:16](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/account.ts#L16) diff --git a/packages/types/docs/enums/BridgeType.md b/packages/types/docs/enums/BridgeType.md index 17bfd4c7f..c6d8d4dad 100644 --- a/packages/types/docs/enums/BridgeType.md +++ b/packages/types/docs/enums/BridgeType.md @@ -17,7 +17,7 @@ #### Defined in -[chain.ts:14](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/chain.ts#L14) +[chain.ts:14](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/chain.ts#L14) ___ @@ -27,4 +27,4 @@ ___ #### Defined in -[chain.ts:13](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/chain.ts#L13) +[chain.ts:13](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/chain.ts#L13) diff --git a/packages/types/docs/enums/Events.md b/packages/types/docs/enums/Events.md index 7967439ba..fff8d9b64 100644 --- a/packages/types/docs/enums/Events.md +++ b/packages/types/docs/enums/Events.md @@ -19,7 +19,7 @@ #### Defined in -[events.ts:5](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/events.ts#L5) +[events.ts:5](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/events.ts#L5) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[events.ts:8](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/events.ts#L8) +[events.ts:8](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/events.ts#L8) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[events.ts:7](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/events.ts#L7) +[events.ts:7](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/events.ts#L7) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[events.ts:6](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/events.ts#L6) +[events.ts:6](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/events.ts#L6) diff --git a/packages/types/docs/enums/KeplrEvents.md b/packages/types/docs/enums/KeplrEvents.md index ddefeda68..24e1b301b 100644 --- a/packages/types/docs/enums/KeplrEvents.md +++ b/packages/types/docs/enums/KeplrEvents.md @@ -16,4 +16,4 @@ #### Defined in -[events.ts:13](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/events.ts#L13) +[events.ts:13](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/events.ts#L13) diff --git a/packages/types/docs/enums/MetamaskEvents.md b/packages/types/docs/enums/MetamaskEvents.md index 833cf8896..86ae449ec 100644 --- a/packages/types/docs/enums/MetamaskEvents.md +++ b/packages/types/docs/enums/MetamaskEvents.md @@ -17,7 +17,7 @@ #### Defined in -[events.ts:18](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/events.ts#L18) +[events.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/events.ts#L18) ___ @@ -27,4 +27,4 @@ ___ #### Defined in -[events.ts:19](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/events.ts#L19) +[events.ts:19](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/events.ts#L19) diff --git a/packages/types/docs/interfaces/IMessage.md b/packages/types/docs/interfaces/IMessage.md index 4c27e1cfa..525f23564 100644 --- a/packages/types/docs/interfaces/IMessage.md +++ b/packages/types/docs/interfaces/IMessage.md @@ -36,4 +36,4 @@ #### Defined in -[tx/messages/index.ts:5](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/messages/index.ts#L5) +[tx/messages/index.ts:5](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/messages/index.ts#L5) diff --git a/packages/types/docs/interfaces/Namada.md b/packages/types/docs/interfaces/Namada.md index dbb86a2fd..f1cb12428 100644 --- a/packages/types/docs/interfaces/Namada.md +++ b/packages/types/docs/interfaces/Namada.md @@ -35,7 +35,7 @@ #### Defined in -[namada.ts:37](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L37) +[namada.ts:38](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L38) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[namada.ts:38](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L38) +[namada.ts:39](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L39) ## Methods @@ -73,7 +73,7 @@ ___ #### Defined in -[namada.ts:28](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L28) +[namada.ts:29](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L29) ___ @@ -87,7 +87,7 @@ ___ #### Defined in -[namada.ts:29](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L29) +[namada.ts:30](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L30) ___ @@ -107,7 +107,7 @@ ___ #### Defined in -[namada.ts:31](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L31) +[namada.ts:32](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L32) ___ @@ -121,7 +121,7 @@ ___ #### Defined in -[namada.ts:30](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L30) +[namada.ts:31](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L31) ___ @@ -141,7 +141,7 @@ ___ #### Defined in -[namada.ts:32](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L32) +[namada.ts:33](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L33) ___ @@ -161,7 +161,7 @@ ___ #### Defined in -[namada.ts:33](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L33) +[namada.ts:34](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L34) ___ @@ -181,4 +181,4 @@ ___ #### Defined in -[namada.ts:36](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L36) +[namada.ts:37](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L37) diff --git a/packages/types/docs/interfaces/Signer.md b/packages/types/docs/interfaces/Signer.md index 33ae918f8..3453908b7 100644 --- a/packages/types/docs/interfaces/Signer.md +++ b/packages/types/docs/interfaces/Signer.md @@ -34,7 +34,7 @@ #### Defined in -[signer.ts:14](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/signer.ts#L14) +[signer.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/signer.ts#L10) ___ @@ -58,13 +58,13 @@ ___ #### Defined in -[signer.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/signer.ts#L15) +[signer.ts:11](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/signer.ts#L11) ___ ### sign -• **sign**: (`tx`: [`TxData`](../modules.md#txdata) \| [`TxData`](../modules.md#txdata)[], `signer`: `string`, `checksums?`: `Record`\<`string`, `string`\>) => `Promise`\<`undefined` \| `Uint8Array`[]\> +• **sign**: (`tx`: [`TxMsgValue`](../classes/TxMsgValue.md) \| [`TxMsgValue`](../classes/TxMsgValue.md)[], `signer`: `string`, `checksums?`: `Record`\<`string`, `string`\>) => `Promise`\<`undefined` \| `Uint8Array`[]\> #### Type declaration @@ -74,7 +74,7 @@ ___ | Name | Type | | :------ | :------ | -| `tx` | [`TxData`](../modules.md#txdata) \| [`TxData`](../modules.md#txdata)[] | +| `tx` | [`TxMsgValue`](../classes/TxMsgValue.md) \| [`TxMsgValue`](../classes/TxMsgValue.md)[] | | `signer` | `string` | | `checksums?` | `Record`\<`string`, `string`\> | @@ -84,7 +84,7 @@ ___ #### Defined in -[signer.ts:16](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/signer.ts#L16) +[signer.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/signer.ts#L12) ___ @@ -109,7 +109,7 @@ ___ #### Defined in -[signer.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/signer.ts#L21) +[signer.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/signer.ts#L17) ___ @@ -135,4 +135,4 @@ ___ #### Defined in -[signer.ts:25](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/signer.ts#L25) +[signer.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/signer.ts#L21) diff --git a/packages/types/docs/modules.md b/packages/types/docs/modules.md index cafea986b..4a1a461a3 100644 --- a/packages/types/docs/modules.md +++ b/packages/types/docs/modules.md @@ -24,11 +24,13 @@ - [RedelegateMsgValue](classes/RedelegateMsgValue.md) - [RevealPkMsgValue](classes/RevealPkMsgValue.md) - [SignatureMsgValue](classes/SignatureMsgValue.md) +- [SigningDataMsgValue](classes/SigningDataMsgValue.md) - [TransferDataMsgValue](classes/TransferDataMsgValue.md) - [TransferMsgValue](classes/TransferMsgValue.md) - [TransparentTransferDataMsgValue](classes/TransparentTransferDataMsgValue.md) - [TransparentTransferMsgValue](classes/TransparentTransferMsgValue.md) - [TxDetailsMsgValue](classes/TxDetailsMsgValue.md) +- [TxMsgValue](classes/TxMsgValue.md) - [TxResponseMsgValue](classes/TxResponseMsgValue.md) - [UnbondMsgValue](classes/UnbondMsgValue.md) - [VoteProposalMsgValue](classes/VoteProposalMsgValue.md) @@ -81,6 +83,7 @@ - [SignArbitraryResponse](modules.md#signarbitraryresponse) - [SignProps](modules.md#signprops) - [SignatureProps](modules.md#signatureprops) +- [SigningDataProps](modules.md#signingdataprops) - [SupportedTxProps](modules.md#supportedtxprops) - [TallyType](modules.md#tallytype) - [TokenBalances](modules.md#tokenbalances) @@ -89,8 +92,8 @@ - [TransferProps](modules.md#transferprops) - [TransparentTransferDataProps](modules.md#transparenttransferdataprops) - [TransparentTransferProps](modules.md#transparenttransferprops) -- [TxData](modules.md#txdata) - [TxDetails](modules.md#txdetails) +- [TxProps](modules.md#txprops) - [TxResponseProps](modules.md#txresponseprops) - [UnbondProps](modules.md#unbondprops) - [ValidatorVote](modules.md#validatorvote) @@ -133,7 +136,7 @@ #### Defined in -[account.ts:32](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/account.ts#L32) +[account.ts:32](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/account.ts#L32) ___ @@ -150,7 +153,7 @@ ___ #### Defined in -[proposals.ts:34](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L34) +[proposals.ts:34](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L34) ___ @@ -167,7 +170,7 @@ ___ #### Defined in -[namada.ts:22](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L22) +[namada.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L23) ___ @@ -177,7 +180,7 @@ ___ #### Defined in -[tx/types.ts:20](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L20) +[tx/types.ts:22](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L22) ___ @@ -195,7 +198,7 @@ ___ #### Defined in -[account.ts:3](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/account.ts#L3) +[account.ts:3](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/account.ts#L3) ___ @@ -205,7 +208,7 @@ ___ #### Defined in -[tx/types.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L21) +[tx/types.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L23) ___ @@ -232,7 +235,7 @@ ___ #### Defined in -[chain.ts:49](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/chain.ts#L49) +[chain.ts:49](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/chain.ts#L49) ___ @@ -242,7 +245,7 @@ ___ #### Defined in -[chain.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/chain.ts#L21) +[chain.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/chain.ts#L21) ___ @@ -252,7 +255,7 @@ ___ #### Defined in -[tx/types.ts:32](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L32) +[tx/types.ts:36](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L36) ___ @@ -262,7 +265,7 @@ ___ #### Defined in -[tx/types.ts:49](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L49) +[tx/types.ts:53](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L53) ___ @@ -272,7 +275,7 @@ ___ #### Defined in -[tokens/Cosmos.ts:13](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Cosmos.ts#L13) +[tokens/Cosmos.ts:13](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Cosmos.ts#L13) ___ @@ -282,7 +285,7 @@ ___ #### Defined in -[tokens/Cosmos.ts:6](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Cosmos.ts#L6) +[tokens/Cosmos.ts:6](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Cosmos.ts#L6) ___ @@ -304,7 +307,7 @@ ___ #### Defined in -[chain.ts:1](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/chain.ts#L1) +[chain.ts:1](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/chain.ts#L1) ___ @@ -320,7 +323,7 @@ ___ #### Defined in -[proposals.ts:55](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L55) +[proposals.ts:55](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L55) ___ @@ -337,7 +340,7 @@ ___ #### Defined in -[proposals.ts:56](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L56) +[proposals.ts:56](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L56) ___ @@ -347,7 +350,7 @@ ___ #### Defined in -[proposals.ts:84](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L84) +[proposals.ts:84](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L84) ___ @@ -370,7 +373,7 @@ ___ #### Defined in -[account.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/account.ts#L21) +[account.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/account.ts#L21) ___ @@ -380,7 +383,7 @@ ___ #### Defined in -[tx/types.ts:22](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L22) +[tx/types.ts:24](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L24) ___ @@ -398,7 +401,7 @@ ___ #### Defined in -[chain.ts:23](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/chain.ts#L23) +[chain.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/chain.ts#L23) ___ @@ -408,7 +411,7 @@ ___ #### Defined in -[chain.ts:18](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/chain.ts#L18) +[chain.ts:18](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/chain.ts#L18) ___ @@ -418,7 +421,7 @@ ___ #### Defined in -[tx/types.ts:23](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L23) +[tx/types.ts:25](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L25) ___ @@ -428,7 +431,7 @@ ___ #### Defined in -[utils.ts:1](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/utils.ts#L1) +[utils.ts:1](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/utils.ts#L1) ___ @@ -442,7 +445,7 @@ ___ #### Defined in -[utils.ts:2](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/utils.ts#L2) +[utils.ts:2](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/utils.ts#L2) ___ @@ -461,7 +464,7 @@ ___ #### Defined in -[proposals.ts:47](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L47) +[proposals.ts:47](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L47) ___ @@ -478,7 +481,7 @@ ___ #### Defined in -[proposals.ts:58](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L58) +[proposals.ts:58](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L58) ___ @@ -495,7 +498,7 @@ ___ #### Defined in -[proposals.ts:57](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L57) +[proposals.ts:57](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L57) ___ @@ -513,7 +516,7 @@ ___ #### Defined in -[proposals.ts:40](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L40) +[proposals.ts:40](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L40) ___ @@ -523,7 +526,7 @@ ___ #### Defined in -[proposals.ts:15](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L15) +[proposals.ts:15](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L15) ___ @@ -533,7 +536,7 @@ ___ #### Defined in -[proposals.ts:10](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L10) +[proposals.ts:10](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L10) ___ @@ -543,7 +546,7 @@ ___ #### Defined in -[proposals.ts:59](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L59) +[proposals.ts:59](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L59) ___ @@ -553,7 +556,7 @@ ___ #### Defined in -[proposals.ts:61](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L61) +[proposals.ts:61](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L61) ___ @@ -563,7 +566,7 @@ ___ #### Defined in -[tx/types.ts:24](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L24) +[tx/types.ts:26](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L26) ___ @@ -573,17 +576,17 @@ ___ #### Defined in -[tx/types.ts:35](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L35) +[tx/types.ts:39](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L39) ___ ### Schema -Ƭ **Schema**: [`BatchTxResultMsgValue`](classes/BatchTxResultMsgValue.md) \| [`EthBridgeTransferMsgValue`](classes/EthBridgeTransferMsgValue.md) \| [`IbcTransferMsgValue`](classes/IbcTransferMsgValue.md) \| [`SignatureMsgValue`](classes/SignatureMsgValue.md) \| [`BondMsgValue`](classes/BondMsgValue.md) \| [`UnbondMsgValue`](classes/UnbondMsgValue.md) \| [`VoteProposalMsgValue`](classes/VoteProposalMsgValue.md) \| [`ClaimRewardsMsgValue`](classes/ClaimRewardsMsgValue.md) \| [`WithdrawMsgValue`](classes/WithdrawMsgValue.md) \| [`TransferMsgValue`](classes/TransferMsgValue.md) \| [`TransferDataMsgValue`](classes/TransferDataMsgValue.md) \| [`TransparentTransferMsgValue`](classes/TransparentTransferMsgValue.md) \| [`TransparentTransferDataMsgValue`](classes/TransparentTransferDataMsgValue.md) \| [`TxResponseMsgValue`](classes/TxResponseMsgValue.md) \| [`WrapperTxMsgValue`](classes/WrapperTxMsgValue.md) \| [`RedelegateMsgValue`](classes/RedelegateMsgValue.md) \| [`CommitmentMsgValue`](classes/CommitmentMsgValue.md) \| [`TxDetailsMsgValue`](classes/TxDetailsMsgValue.md) \| [`RevealPkMsgValue`](classes/RevealPkMsgValue.md) +Ƭ **Schema**: [`BatchTxResultMsgValue`](classes/BatchTxResultMsgValue.md) \| [`EthBridgeTransferMsgValue`](classes/EthBridgeTransferMsgValue.md) \| [`IbcTransferMsgValue`](classes/IbcTransferMsgValue.md) \| [`SignatureMsgValue`](classes/SignatureMsgValue.md) \| [`BondMsgValue`](classes/BondMsgValue.md) \| [`UnbondMsgValue`](classes/UnbondMsgValue.md) \| [`VoteProposalMsgValue`](classes/VoteProposalMsgValue.md) \| [`ClaimRewardsMsgValue`](classes/ClaimRewardsMsgValue.md) \| [`WithdrawMsgValue`](classes/WithdrawMsgValue.md) \| [`SigningDataMsgValue`](classes/SigningDataMsgValue.md) \| [`TransferMsgValue`](classes/TransferMsgValue.md) \| [`TransferDataMsgValue`](classes/TransferDataMsgValue.md) \| [`TransparentTransferMsgValue`](classes/TransparentTransferMsgValue.md) \| [`TransparentTransferDataMsgValue`](classes/TransparentTransferDataMsgValue.md) \| [`TxMsgValue`](classes/TxMsgValue.md) \| [`TxResponseMsgValue`](classes/TxResponseMsgValue.md) \| [`WrapperTxMsgValue`](classes/WrapperTxMsgValue.md) \| [`RedelegateMsgValue`](classes/RedelegateMsgValue.md) \| [`CommitmentMsgValue`](classes/CommitmentMsgValue.md) \| [`TxDetailsMsgValue`](classes/TxDetailsMsgValue.md) \| [`RevealPkMsgValue`](classes/RevealPkMsgValue.md) #### Defined in -[tx/schema/index.ts:39](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/index.ts#L39) +[tx/schema/index.ts:41](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/index.ts#L41) ___ @@ -600,7 +603,7 @@ ___ #### Defined in -[namada.ts:5](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L5) +[namada.ts:6](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L6) ___ @@ -617,7 +620,7 @@ ___ #### Defined in -[signer.ts:3](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/signer.ts#L3) +[signer.ts:4](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/signer.ts#L4) ___ @@ -631,11 +634,11 @@ ___ | :------ | :------ | | `checksums?` | `Record`\<`string`, `string`\> | | `signer` | `string` | -| `txs` | [`TxData`](modules.md#txdata)[] | +| `txs` | [`TxProps`](modules.md#txprops)[] | #### Defined in -[namada.ts:10](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L10) +[namada.ts:11](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L11) ___ @@ -645,7 +648,17 @@ ___ #### Defined in -[tx/types.ts:25](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L25) +[tx/types.ts:27](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L27) + +___ + +### SigningDataProps + +Ƭ **SigningDataProps**: [`SigningDataMsgValue`](classes/SigningDataMsgValue.md) + +#### Defined in + +[tx/types.ts:33](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L33) ___ @@ -655,7 +668,7 @@ ___ #### Defined in -[tx/types.ts:37](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L37) +[tx/types.ts:41](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L41) ___ @@ -665,7 +678,7 @@ ___ #### Defined in -[proposals.ts:100](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L100) +[proposals.ts:100](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L100) ___ @@ -681,7 +694,7 @@ ___ #### Defined in -[tokens/types.ts:19](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/types.ts#L19) +[tokens/types.ts:19](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/types.ts#L19) ___ @@ -713,7 +726,7 @@ ___ #### Defined in -[tokens/types.ts:5](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/types.ts#L5) +[tokens/types.ts:5](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/types.ts#L5) ___ @@ -723,7 +736,7 @@ ___ #### Defined in -[tokens/Namada.ts:21](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Namada.ts#L21) +[tokens/Namada.ts:21](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Namada.ts#L21) ___ @@ -733,7 +746,7 @@ ___ #### Defined in -[tx/types.ts:26](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L26) +[tx/types.ts:28](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L28) ___ @@ -743,7 +756,7 @@ ___ #### Defined in -[tx/types.ts:28](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L28) +[tx/types.ts:30](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L30) ___ @@ -753,34 +766,27 @@ ___ #### Defined in -[tx/types.ts:27](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L27) +[tx/types.ts:29](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L29) ___ -### TxData - -Ƭ **TxData**: `Object` - -#### Type declaration +### TxDetails -| Name | Type | -| :------ | :------ | -| `signingDataBytes` | `Uint8Array`[] | -| `txBytes` | `Uint8Array` | +Ƭ **TxDetails**: [`WrapperTxProps`](modules.md#wrappertxprops) & \{ `commitments`: [`CommitmentDetailProps`](modules.md#commitmentdetailprops)[] } #### Defined in -[signer.ts:8](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/signer.ts#L8) +[tx/types.ts:59](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L59) ___ -### TxDetails +### TxProps -Ƭ **TxDetails**: [`WrapperTxProps`](modules.md#wrappertxprops) & \{ `commitments`: [`CommitmentDetailProps`](modules.md#commitmentdetailprops)[] } +Ƭ **TxProps**: [`TxMsgValue`](classes/TxMsgValue.md) #### Defined in -[tx/types.ts:55](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L55) +[tx/types.ts:31](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L31) ___ @@ -790,7 +796,7 @@ ___ #### Defined in -[tx/types.ts:29](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L29) +[tx/types.ts:32](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L32) ___ @@ -800,7 +806,7 @@ ___ #### Defined in -[tx/types.ts:30](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L30) +[tx/types.ts:34](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L34) ___ @@ -810,7 +816,7 @@ ___ #### Defined in -[proposals.ts:76](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L76) +[proposals.ts:76](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L76) ___ @@ -828,7 +834,7 @@ ___ #### Defined in -[namada.ts:16](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L16) +[namada.ts:17](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L17) ___ @@ -838,7 +844,7 @@ ___ #### Defined in -[proposals.ts:92](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L92) +[proposals.ts:92](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L92) ___ @@ -848,7 +854,7 @@ ___ #### Defined in -[tx/types.ts:31](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L31) +[tx/types.ts:35](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L35) ___ @@ -858,7 +864,7 @@ ___ #### Defined in -[proposals.ts:64](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L64) +[proposals.ts:64](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L64) ___ @@ -868,7 +874,7 @@ ___ #### Defined in -[proposals.ts:69](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L69) +[proposals.ts:69](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L69) ___ @@ -878,7 +884,7 @@ ___ #### Defined in -[namada.ts:41](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/namada.ts#L41) +[namada.ts:42](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/namada.ts#L42) ___ @@ -888,7 +894,7 @@ ___ #### Defined in -[tx/types.ts:33](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L33) +[tx/types.ts:37](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L37) ___ @@ -898,7 +904,7 @@ ___ #### Defined in -[tx/types.ts:34](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/types.ts#L34) +[tx/types.ts:38](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/types.ts#L38) ## Variables @@ -915,7 +921,7 @@ ___ #### Defined in -[tx/schema/utils.ts:4](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tx/schema/utils.ts#L4) +[tx/schema/utils.ts:4](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tx/schema/utils.ts#L4) ___ @@ -925,7 +931,7 @@ ___ #### Defined in -[tokens/Cosmos.ts:5](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Cosmos.ts#L5) +[tokens/Cosmos.ts:5](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Cosmos.ts#L5) ___ @@ -935,7 +941,7 @@ ___ #### Defined in -[tokens/Cosmos.ts:22](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Cosmos.ts#L22) +[tokens/Cosmos.ts:22](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Cosmos.ts#L22) ___ @@ -962,7 +968,7 @@ ___ #### Defined in -[chain.ts:30](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/chain.ts#L30) +[chain.ts:30](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/chain.ts#L30) ___ @@ -972,7 +978,7 @@ ___ #### Defined in -[tokens/Namada.ts:11](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Namada.ts#L11) +[tokens/Namada.ts:11](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Namada.ts#L11) ___ @@ -982,7 +988,7 @@ ___ #### Defined in -[tokens/Namada.ts:23](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Namada.ts#L23) +[tokens/Namada.ts:23](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Namada.ts#L23) ___ @@ -992,7 +998,7 @@ ___ #### Defined in -[proposals.ts:3](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L3) +[proposals.ts:3](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L3) ___ @@ -1002,7 +1008,7 @@ ___ #### Defined in -[proposals.ts:94](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L94) +[proposals.ts:94](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L94) ___ @@ -1012,7 +1018,7 @@ ___ #### Defined in -[proposals.ts:63](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L63) +[proposals.ts:63](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L63) ## Functions @@ -1032,7 +1038,7 @@ vote is DelegatorVote #### Defined in -[proposals.ts:89](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L89) +[proposals.ts:89](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L89) ___ @@ -1052,7 +1058,7 @@ str is "pending" \| "ongoing" \| "passed" \| "rejected" #### Defined in -[proposals.ts:12](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L12) +[proposals.ts:12](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L12) ___ @@ -1072,7 +1078,7 @@ tallyType is "two-thirds" \| "one-half-over-one-third" \| "less-one-half-over-on #### Defined in -[proposals.ts:102](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L102) +[proposals.ts:102](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L102) ___ @@ -1092,7 +1098,7 @@ vote is ValidatorVote #### Defined in -[proposals.ts:81](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L81) +[proposals.ts:81](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L81) ___ @@ -1112,7 +1118,7 @@ str is "yay" \| "nay" \| "abstain" #### Defined in -[proposals.ts:66](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/proposals.ts#L66) +[proposals.ts:66](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/proposals.ts#L66) ___ @@ -1132,7 +1138,7 @@ ___ #### Defined in -[tokens/Cosmos.ts:66](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Cosmos.ts#L66) +[tokens/Cosmos.ts:66](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Cosmos.ts#L66) ___ @@ -1152,4 +1158,4 @@ ___ #### Defined in -[tokens/Cosmos.ts:48](https://github.com/anoma/namada-interface/blob/c6b0e5a0/packages/types/src/tokens/Cosmos.ts#L48) +[tokens/Cosmos.ts:48](https://github.com/anoma/namada-interface/blob/48e796bf/packages/types/src/tokens/Cosmos.ts#L48) diff --git a/packages/types/src/namada.ts b/packages/types/src/namada.ts index 5874384e4..6f6e001db 100644 --- a/packages/types/src/namada.ts +++ b/packages/types/src/namada.ts @@ -1,6 +1,7 @@ import { DerivedAccount } from "./account"; import { Chain } from "./chain"; -import { SignArbitraryResponse, Signer, TxData } from "./signer"; +import { SignArbitraryResponse, Signer } from "./signer"; +import { TxProps } from "./tx"; export type SignArbitraryProps = { signer: string; @@ -9,7 +10,7 @@ export type SignArbitraryProps = { export type SignProps = { signer: string; - txs: TxData[]; + txs: TxProps[]; checksums?: Record; }; diff --git a/packages/types/src/signer.ts b/packages/types/src/signer.ts index ccfebc423..e2c4d8611 100644 --- a/packages/types/src/signer.ts +++ b/packages/types/src/signer.ts @@ -1,20 +1,16 @@ import { Account } from "./account"; +import { TxProps } from "./tx"; export type SignArbitraryResponse = { hash: string; signature: string; }; -export type TxData = { - txBytes: Uint8Array; - signingDataBytes: Uint8Array[]; -}; - export interface Signer { accounts: (chainId?: string) => Promise; defaultAccount: (chainId?: string) => Promise; sign: ( - tx: TxData | TxData[], + tx: TxProps | TxProps[], signer: string, checksums?: Record ) => Promise; diff --git a/packages/types/src/tx/schema/index.ts b/packages/types/src/tx/schema/index.ts index 06fe927c1..02eca0fec 100644 --- a/packages/types/src/tx/schema/index.ts +++ b/packages/types/src/tx/schema/index.ts @@ -7,6 +7,7 @@ export * from "./redelegate"; export * from "./revealPk"; export * from "./signature"; export * from "./transfer"; +export * from "./tx"; export * from "./txDetails"; export * from "./txResponse"; export * from "./unbond"; @@ -29,6 +30,7 @@ import { TransparentTransferDataMsgValue, TransparentTransferMsgValue, } from "./transfer"; +import { SigningDataMsgValue, TxMsgValue } from "./tx"; import { CommitmentMsgValue, TxDetailsMsgValue } from "./txDetails"; import { TxResponseMsgValue } from "./txResponse"; import { UnbondMsgValue } from "./unbond"; @@ -46,10 +48,12 @@ export type Schema = | VoteProposalMsgValue | ClaimRewardsMsgValue | WithdrawMsgValue + | SigningDataMsgValue | TransferMsgValue | TransferDataMsgValue | TransparentTransferMsgValue | TransparentTransferDataMsgValue + | TxMsgValue | TxResponseMsgValue | WrapperTxMsgValue | RedelegateMsgValue diff --git a/packages/types/src/tx/schema/tx.ts b/packages/types/src/tx/schema/tx.ts new file mode 100644 index 000000000..5b282a63b --- /dev/null +++ b/packages/types/src/tx/schema/tx.ts @@ -0,0 +1,53 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { field, option, vec } from "@dao-xyz/borsh"; +import { SigningDataProps, TxProps } from "../types"; +import { WrapperTxMsgValue } from "./wrapperTx"; + +export class SigningDataMsgValue { + @field({ type: option("string") }) + owner?: string; + + @field({ type: vec("string") }) + publicKeys!: string[]; + + @field({ type: "u8" }) + threshold!: number; + + // Contains a borsh-serialized AccountPublicKeysMap + // TODO: We may be able to deserialize this further and + // restore the original HashMap, but for now, just store + // the vec of the serialized HashMap + @field({ type: option(vec("u8")) }) + accountPublicKeysMap?: Uint8Array; + + @field({ type: "string" }) + feePayer!: string; + + constructor(data: SigningDataProps) { + Object.assign(this, data); + } +} + +export class TxMsgValue { + @field({ type: WrapperTxMsgValue }) + args!: WrapperTxMsgValue; + + @field({ type: "string" }) + hash!: string; + + @field({ type: vec("u8") }) + bytes!: Uint8Array; + + @field({ type: vec(SigningDataMsgValue) }) + signingData!: SigningDataMsgValue[]; + + constructor(data: TxProps) { + Object.assign(this, { + ...data, + args: new WrapperTxMsgValue(data.args), + signingData: data.signingData.map( + (props) => new SigningDataMsgValue(props) + ), + }); + } +} diff --git a/packages/types/src/tx/types.ts b/packages/types/src/tx/types.ts index 5f5968106..64a0c038c 100644 --- a/packages/types/src/tx/types.ts +++ b/packages/types/src/tx/types.ts @@ -6,9 +6,11 @@ import { IbcTransferMsgValue, RedelegateMsgValue, SignatureMsgValue, + SigningDataMsgValue, TransferMsgValue, TransparentTransferDataMsgValue, TransparentTransferMsgValue, + TxMsgValue, TxResponseMsgValue, UnbondMsgValue, VoteProposalMsgValue, @@ -26,7 +28,9 @@ export type SignatureProps = SignatureMsgValue; export type TransferProps = TransferMsgValue; export type TransparentTransferProps = TransparentTransferMsgValue; export type TransparentTransferDataProps = TransparentTransferDataMsgValue; +export type TxProps = TxMsgValue; export type TxResponseProps = TxResponseMsgValue; +export type SigningDataProps = SigningDataMsgValue; export type UnbondProps = UnbondMsgValue; export type VoteProposalProps = VoteProposalMsgValue; export type ClaimRewardsProps = ClaimRewardsMsgValue; From cf5ce7cb7ce7127e6cf2f626affe9823fba30e9c Mon Sep 17 00:00:00 2001 From: Pedro Rezende Date: Wed, 28 Aug 2024 16:57:23 -0300 Subject: [PATCH 2/6] Namadillo: Refactoring Unbonding and Withdraw, moving them to MyValidator type (#1037) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: moving withdraw and unbonding to MyValidator correctly * feat: handle validators when unbonding all tokens * refactor(staking): using optional chaining instead of a condition * refactor(namadillo): making the property names clearer * refactor(namadillo): removing unnecessary ! * refactor(namadillo): making structure a bit clearer and more compatible to the indexer responses --------- Co-authored-by: Harrison Mendonça --- .../src/App/Staking/MyValidatorsTable.tsx | 4 +- .../src/App/Staking/StakingOverview.tsx | 28 +--- .../src/App/Staking/StakingSummary.tsx | 5 +- .../src/App/Staking/UnbondingAmountsTable.tsx | 33 ++--- .../src/App/Staking/UnstakeBondingTable.tsx | 4 +- .../src/App/Staking/WithdrawalButton.tsx | 53 ++++---- apps/namadillo/src/atoms/syncStatus/atoms.ts | 7 +- apps/namadillo/src/atoms/validators/atoms.ts | 109 +++------------- .../src/atoms/validators/functions.ts | 120 ++++++++++-------- .../src/atoms/validators/services.ts | 49 ++----- apps/namadillo/src/types.d.ts | 20 ++- 11 files changed, 176 insertions(+), 256 deletions(-) diff --git a/apps/namadillo/src/App/Staking/MyValidatorsTable.tsx b/apps/namadillo/src/App/Staking/MyValidatorsTable.tsx index 8bc6ea9cf..7e7398563 100644 --- a/apps/namadillo/src/App/Staking/MyValidatorsTable.tsx +++ b/apps/namadillo/src/App/Staking/MyValidatorsTable.tsx @@ -19,7 +19,9 @@ export const MyValidatorsTable = (): JSX.Element => { const validators = myValidators.isSuccess ? - myValidators.data.map((v: MyValidator) => v.validator) + myValidators.data + .filter((v) => v.stakedAmount?.gt(0)) + .map((v: MyValidator) => v.validator) : []; const stakedAmountByAddress: Record = diff --git a/apps/namadillo/src/App/Staking/StakingOverview.tsx b/apps/namadillo/src/App/Staking/StakingOverview.tsx index 085a3cfd2..5b30f7de2 100644 --- a/apps/namadillo/src/App/Staking/StakingOverview.tsx +++ b/apps/namadillo/src/App/Staking/StakingOverview.tsx @@ -4,37 +4,21 @@ import { PageWithSidebar } from "App/Common/PageWithSidebar"; import { ValidatorDiversification } from "App/Sidebars/ValidatorDiversification"; import { YourStakingDistribution } from "App/Sidebars/YourStakingDistribution"; import { namadaExtensionConnectedAtom } from "atoms/settings"; -import { - myValidatorsAtom, - stakedAmountByAddressAtom, - unbondedAmountByAddressAtom, - withdrawableAmountByAddressAtom, -} from "atoms/validators"; +import { myValidatorsAtom } from "atoms/validators"; import { useAtomValue } from "jotai"; import { AllValidatorsTable } from "./AllValidatorsTable"; import { MyValidatorsTable } from "./MyValidatorsTable"; import { StakingSummary } from "./StakingSummary"; import { UnbondingAmountsTable } from "./UnbondingAmountsTable"; -// This is the default view for the staking. it displays all the relevant -// staking information of the user and allows unstake the active staking -// positions directly from here. -// * Unstaking happens by calling a callback that triggers a modal -// view in the parent -// * user can also navigate to sibling view for validator details export const StakingOverview = (): JSX.Element => { const isConnected = useAtomValue(namadaExtensionConnectedAtom); const myValidators = useAtomValue(myValidatorsAtom); - const unbondedAmounts = useAtomValue(unbondedAmountByAddressAtom); - const withdrawableAmounts = useAtomValue(withdrawableAmountByAddressAtom); - const stakedByAddress = useAtomValue(stakedAmountByAddressAtom); - const hasStaking = - stakedByAddress.isSuccess && Object.keys(stakedByAddress.data).length > 0; - const hasUnbonded = - unbondedAmounts.isSuccess && Object.keys(unbondedAmounts.data).length > 0; - const hasWithdraws = - withdrawableAmounts.isSuccess && - Object.keys(withdrawableAmounts.data).length > 0; + const hasStaking = myValidators.data?.some((v) => v.stakedAmount?.gt(0)); + const hasUnbonded = myValidators.data?.some((v) => v.unbondedAmount?.gt(0)); + const hasWithdraws = myValidators.data?.some( + (v) => v.withdrawableAmount?.gt(0) + ); return ( diff --git a/apps/namadillo/src/App/Staking/StakingSummary.tsx b/apps/namadillo/src/App/Staking/StakingSummary.tsx index 237af16ed..d90536589 100644 --- a/apps/namadillo/src/App/Staking/StakingSummary.tsx +++ b/apps/namadillo/src/App/Staking/StakingSummary.tsx @@ -40,7 +40,10 @@ export const StakingSummary = (): JSX.Element => { return [ { value: balance, color: "#ffffff" }, { value: totalStaked.totalBonded, color: "#00ffff" }, - { value: totalStaked.totalUnbonded, color: "#DD1599" }, + { + value: totalStaked.totalUnbonded.plus(totalStaked.totalWithdrawable), + color: "#DD1599", + }, ]; }; diff --git a/apps/namadillo/src/App/Staking/UnbondingAmountsTable.tsx b/apps/namadillo/src/App/Staking/UnbondingAmountsTable.tsx index 1c56f5179..515ddf828 100644 --- a/apps/namadillo/src/App/Staking/UnbondingAmountsTable.tsx +++ b/apps/namadillo/src/App/Staking/UnbondingAmountsTable.tsx @@ -2,16 +2,17 @@ import { StyledTable, TableRow } from "@namada/components"; import { AtomErrorBoundary } from "App/Common/AtomErrorBoundary"; import { NamCurrency } from "App/Common/NamCurrency"; import { WalletAddress } from "App/Common/WalletAddress"; -import { myUnbondsAtom } from "atoms/validators"; +import { myValidatorsAtom } from "atoms/validators"; import BigNumber from "bignumber.js"; import { useAtomValue } from "jotai"; import { useMemo } from "react"; import { twMerge } from "tailwind-merge"; +import { UnbondEntry } from "types"; import { ValidatorCard } from "./ValidatorCard"; import { WithdrawalButton } from "./WithdrawalButton"; export const UnbondingAmountsTable = (): JSX.Element => { - const myUnbonds = useAtomValue(myUnbondsAtom); + const myValidators = useAtomValue(myValidatorsAtom); const headers = [ "Validator", "Address", @@ -20,15 +21,12 @@ export const UnbondingAmountsTable = (): JSX.Element => { ]; const rows = useMemo(() => { - if (!myUnbonds.isSuccess) return []; + if (!myValidators.isSuccess) return []; const rowsList: TableRow[] = []; - for (const myValidator of myUnbonds.data) { - const { validator, unbondedAmount, withdrawableAmount } = myValidator; - - const amount = new BigNumber(unbondedAmount || withdrawableAmount || 0); - - if (amount.gt(0)) { + for (const myValidator of myValidators.data) { + const { validator } = myValidator; + myValidator.unbondItems.forEach((entry: UnbondEntry) => { rowsList.push({ cells: [ { key={`my-validator-currency-${validator.address}`} className="text-right leading-tight" > - + ,
- {myValidator.timeLeft} + {entry.timeLeft}
,
- +
, ], }); - } + }); } return rowsList; - }, [myUnbonds]); + }, [myValidators]); return ( { const change = { validatorId: myValidator.validator.address, - amount: myValidator.withdrawableAmount!, + amount: unbondingEntry.amount, }; const { gasPrice } = useGasEstimate(); @@ -49,29 +51,26 @@ export const WithdrawalButton = ({ }; }, []); - const onWithdraw = useCallback( - async (myValidator: MyValidator) => { - invariant( - account, - "Extension is not connected or you don't have an account" - ); - invariant(gasPrice, "Gas price loading is still pending"); - invariant(gasLimits.isSuccess, "Gas limit loading is still pending"); - invariant( - myValidator.withdrawableAmount, - "Validator doesn't have amounts available for withdrawal" - ); - createWithdrawTx({ - changes: [change], - gasConfig: { - gasPrice: gasPrice!, - gasLimit: gasLimits.data!.Withdraw.native, - }, - account: account!, - }); - }, - [myValidator.withdrawableAmount, gasPrice, gasLimits.isSuccess] - ); + const onWithdraw = useCallback(async () => { + invariant( + account, + "Extension is not connected or you don't have an account" + ); + invariant(gasPrice, "Gas price loading is still pending"); + invariant(gasLimits.isSuccess, "Gas limit loading is still pending"); + invariant( + unbondingEntry.amount, + "Validator doesn't have amounts available for withdrawal" + ); + createWithdrawTx({ + changes: [change], + gasConfig: { + gasPrice: gasPrice, + gasLimit: gasLimits.data.Withdraw.native, + }, + account, + }); + }, [unbondingEntry.amount, change, gasPrice, gasLimits.isSuccess]); const dispatchNotification = useSetAtom(dispatchToastNotificationAtom); @@ -133,8 +132,8 @@ export const WithdrawalButton = ({ onWithdraw(myValidator)} + disabled={!unbondingEntry.canWithdraw || isPending || isSuccess} + onClick={() => onWithdraw()} > {isSuccess && "Claimed"} {isPending && "Processing"} diff --git a/apps/namadillo/src/atoms/syncStatus/atoms.ts b/apps/namadillo/src/atoms/syncStatus/atoms.ts index be2fd3c4e..f50f58dde 100644 --- a/apps/namadillo/src/atoms/syncStatus/atoms.ts +++ b/apps/namadillo/src/atoms/syncStatus/atoms.ts @@ -1,11 +1,7 @@ import { accountBalanceAtom } from "atoms/accounts/atoms"; import { allProposalsAtom, votedProposalIdsAtom } from "atoms/proposals/atoms"; import { indexerHeartbeatAtom, rpcHeartbeatAtom } from "atoms/settings/atoms"; -import { - allValidatorsAtom, - myUnbondsAtom, - myValidatorsAtom, -} from "atoms/validators/atoms"; +import { allValidatorsAtom, myValidatorsAtom } from "atoms/validators/atoms"; import { atom } from "jotai"; export const syncStatusAtom = atom((get) => { @@ -17,7 +13,6 @@ export const syncStatusAtom = atom((get) => { // Staking get(accountBalanceAtom), get(myValidatorsAtom), - get(myUnbondsAtom), get(allValidatorsAtom), // Governance diff --git a/apps/namadillo/src/atoms/validators/atoms.ts b/apps/namadillo/src/atoms/validators/atoms.ts index f1c8a50ce..6583e9f4c 100644 --- a/apps/namadillo/src/atoms/validators/atoms.ts +++ b/apps/namadillo/src/atoms/validators/atoms.ts @@ -3,17 +3,13 @@ import { indexerApiAtom } from "atoms/api"; import { chainParametersAtom } from "atoms/chain"; import { shouldUpdateBalanceAtom } from "atoms/etc"; import { queryDependentFn } from "atoms/utils"; -import BigNumber from "bignumber.js"; -import { - AtomWithQueryResult, - UndefinedInitialDataOptions, - atomWithQuery, -} from "jotai-tanstack-query"; -import { MyUnbondingValidator, MyValidator, Validator } from "types"; +import { atomWithQuery } from "jotai-tanstack-query"; +import { MyValidator, Validator } from "types"; +import { toMyValidators } from "./functions"; import { fetchAllValidators, - fetchMyUnbonds, - fetchMyValidators, + fetchMyBondedAmounts, + fetchMyUnbondedAmounts, fetchVotingPower, } from "./services"; @@ -51,85 +47,20 @@ export const myValidatorsAtom = atomWithQuery((get) => { return { queryKey: ["my-validators", account.data?.address], refetchInterval: enablePolling ? 1000 : false, - ...queryDependentFn( - async (): Promise => - fetchMyValidators( - api, - account.data!, - chainParameters.data!, - votingPower.data! - ), - [account, chainParameters, votingPower] - ), + ...queryDependentFn(async (): Promise => { + const bondedAmountsQuery = fetchMyBondedAmounts(api, account.data!); + const unbondedAmountsQuery = fetchMyUnbondedAmounts(api, account.data!); + const [unbondedAmounts, bondedAmounts] = await Promise.all([ + unbondedAmountsQuery, + bondedAmountsQuery, + ]); + return toMyValidators( + bondedAmounts, + unbondedAmounts, + votingPower.data!, + chainParameters.data!.epochInfo, + chainParameters.data!.apr + ); + }, [account, chainParameters, votingPower]), }; }); - -export const myUnbondsAtom = atomWithQuery((get) => { - const chainParameters = get(chainParametersAtom); - const account = get(defaultAccountAtom); - const votingPower = get(votingPowerAtom); - const api = get(indexerApiAtom); - - // TODO: Refactor after this event subscription is enabled in the indexer - const enablePolling = get(shouldUpdateBalanceAtom); - return { - queryKey: ["my-unbonds", account.data?.address], - refetchInterval: enablePolling ? 1000 : false, - ...queryDependentFn( - async (): Promise => - fetchMyUnbonds( - api, - account.data!, - chainParameters.data!, - votingPower.data! - ), - [account, chainParameters, votingPower] - ), - }; -}); - -export const unbondedAmountByAddressAtom = atomWithQuery((get) => - deriveFromMyValidatorsAtom( - "unbonded-amount", - "unbondedAmount", - get(myUnbondsAtom) - ) -); - -export const withdrawableAmountByAddressAtom = atomWithQuery((get) => - deriveFromMyValidatorsAtom( - "withdrawable-amount", - "withdrawableAmount", - get(myUnbondsAtom) - ) -); - -export const stakedAmountByAddressAtom = atomWithQuery((get) => - deriveFromMyValidatorsAtom( - "staked-amount", - "stakedAmount", - get(myValidatorsAtom) - ) -); - -const deriveFromMyValidatorsAtom = ( - key: string, - property: "stakedAmount" | "unbondedAmount" | "withdrawableAmount", - myValidators: AtomWithQueryResult< - (MyValidator | MyUnbondingValidator)[], - Error - > -): UndefinedInitialDataOptions> => { - return { - queryKey: [key, myValidators.data], - enabled: myValidators.isSuccess, - queryFn: async () => { - return myValidators.data!.reduce((prev, current) => { - if (current[property]?.gt(0)) { - return { ...prev, [current.validator.address]: current[property] }; - } - return prev; - }, {}); - }, - }; -}; diff --git a/apps/namadillo/src/atoms/validators/functions.ts b/apps/namadillo/src/atoms/validators/functions.ts index b3974d086..abbadc6da 100644 --- a/apps/namadillo/src/atoms/validators/functions.ts +++ b/apps/namadillo/src/atoms/validators/functions.ts @@ -6,7 +6,7 @@ import { } from "@anomaorg/namada-indexer-client"; import { singleUnitDurationFromInterval } from "@namada/utils"; import BigNumber from "bignumber.js"; -import { EpochInfo, MyUnbondingValidator, MyValidator, Validator } from "types"; +import { Address, EpochInfo, MyValidator, UnbondEntry, Validator } from "types"; export const toValidator = ( indexerValidator: IndexerValidator, @@ -45,67 +45,85 @@ export const toValidator = ( }; }; +export const calculateUnbondingTimeLeft = (unbond: IndexerUnbond): string => { + const timeNow = Math.round(Date.now() / 1000); + const withdrawTime = Number(unbond.withdrawTime); + const canWithdraw = unbond.canWithdraw; + const timeLeft = + canWithdraw ? "" + // If can't withdraw but estimation is incorrect display withdraw epoch + : withdrawTime < timeNow ? `Epoch ${unbond.withdrawEpoch}` + : singleUnitDurationFromInterval(timeNow, withdrawTime); + return timeLeft; +}; + +/** + * Parses the results returned by the indexer into a MyValidator structure, returning + * an array of MyValidators objects + */ export const toMyValidators = ( indexerBonds: IndexerBond[], + indexerUnbonds: IndexerUnbond[], totalVotingPower: IndexerVotingPower, epochInfo: EpochInfo, apr: BigNumber ): MyValidator[] => { - return indexerBonds.map((indexerBond) => { - const validator = toValidator( - indexerBond.validator, - totalVotingPower, - epochInfo, - apr - ); + const myValidators: Record = {}; - return { - uuid: String(indexerBond.validator.validatorId), - stakingStatus: "bonded", - stakedAmount: BigNumber(indexerBond.amount), - unbondedAmount: BigNumber(0), - withdrawableAmount: BigNumber(0), - validator, - }; - }); -}; + const createEntryIfDoesntExist = (validator: IndexerValidator): void => { + if (!myValidators.hasOwnProperty(validator.address)) { + myValidators[validator.address] = { + withdrawableAmount: new BigNumber(0), + stakedAmount: new BigNumber(0), + unbondedAmount: new BigNumber(0), + bondItems: [], + unbondItems: [], + validator: toValidator(validator, totalVotingPower, epochInfo, apr), + }; + } + }; -export const toUnbondingValidators = ( - indexerBonds: IndexerUnbond[], - totalVotingPower: IndexerVotingPower, - epochInfo: EpochInfo, - apr: BigNumber -): MyUnbondingValidator[] => { - const timeNow = Math.round(Date.now() / 1000); + const addBondToAddress = ( + address: Address, + key: "bondItems" | "unbondItems", + bond: IndexerBond | IndexerUnbond + ): void => { + const { validator: _, ...bondsWithoutValidator } = bond; + myValidators[address]![key].push(bondsWithoutValidator); + }; - return indexerBonds.map((indexerUnbond) => { - const validator = toValidator( - indexerUnbond.validator, - totalVotingPower, - epochInfo, - apr - ); - const withdrawTime = Number(indexerUnbond.withdrawTime); + const incrementAmount = ( + address: Address, + prop: keyof Pick< + MyValidator, + "stakedAmount" | "withdrawableAmount" | "unbondedAmount" + >, + amount: BigNumber | string + ): void => { + myValidators[address][prop] = myValidators[address][prop]!.plus(amount); + }; - const canWithdraw = indexerUnbond.canWithdraw; - const timeLeft = - canWithdraw ? "" - // If can't withdraw but estimation is incorrect display withdraw epoch - : withdrawTime < timeNow ? `Epoch ${indexerUnbond.withdrawEpoch}` - : singleUnitDurationFromInterval(timeNow, withdrawTime); + for (const bond of indexerBonds) { + const { address } = bond.validator; + createEntryIfDoesntExist(bond.validator); + incrementAmount(address, "stakedAmount", bond.amount); + addBondToAddress(address, "bondItems", { ...bond }); + } - const amountValue = BigNumber(indexerUnbond.amount); - const amount = { - [canWithdraw ? "withdrawableAmount" : "unbondedAmount"]: amountValue, + for (const unbond of indexerUnbonds) { + const { address } = unbond.validator; + createEntryIfDoesntExist(unbond.validator); + const unbondingDetails: UnbondEntry = { + ...unbond, + timeLeft: calculateUnbondingTimeLeft(unbond), }; + addBondToAddress(address, "unbondItems", unbondingDetails); + if (unbond.canWithdraw) { + incrementAmount(address, "withdrawableAmount", unbond.amount); + } else { + incrementAmount(address, "unbondedAmount", unbond.amount); + } + } - return { - uuid: String(indexerUnbond.validator.validatorId), - stakingStatus: "unbonded", - stakedAmount: BigNumber(0), - timeLeft, - validator, - ...amount, - }; - }); + return Object.values(myValidators); }; diff --git a/apps/namadillo/src/atoms/validators/services.ts b/apps/namadillo/src/atoms/validators/services.ts index 7ae8dd3db..842001c3b 100644 --- a/apps/namadillo/src/atoms/validators/services.ts +++ b/apps/namadillo/src/atoms/validators/services.ts @@ -2,20 +2,13 @@ import { DefaultApi, ValidatorStatus as IndexerValidatorStatus, VotingPower as IndexerVotingPower, + MergedBond, + Unbond, VotingPower, } from "@anomaorg/namada-indexer-client"; import { Account } from "@namada/types"; -import { - ChainParameters, - MyUnbondingValidator, - MyValidator, - Validator, -} from "types"; -import { - toMyValidators, - toUnbondingValidators, - toValidator, -} from "./functions"; +import { ChainParameters, Validator } from "types"; +import { toValidator } from "./functions"; export const fetchVotingPower = async ( api: DefaultApi @@ -41,40 +34,22 @@ export const fetchAllValidators = async ( ); }; -export const fetchMyValidators = async ( +export const fetchMyBondedAmounts = async ( api: DefaultApi, - account: Account, - chainParameters: ChainParameters, - votingPower: IndexerVotingPower -): Promise => { - const epochInfo = chainParameters.epochInfo; - const apr = chainParameters.apr; + account: Account +): Promise => { const bondsResponse = await api.apiV1PosMergedBondsAddressGet( account.address ); - return toMyValidators( - bondsResponse.data.results, - votingPower, - epochInfo, - apr - ); + return bondsResponse.data.results; }; -export const fetchMyUnbonds = async ( +export const fetchMyUnbondedAmounts = async ( api: DefaultApi, - account: Account, - chainParameters: ChainParameters, - votingPower: IndexerVotingPower -): Promise => { - const epochInfo = chainParameters.epochInfo; - const apr = chainParameters.apr; + account: Account +): Promise => { const unbondsResponse = await api.apiV1PosMergedUnbondsAddressGet( account.address ); - return toUnbondingValidators( - unbondsResponse.data.results, - votingPower, - epochInfo, - apr - ); + return unbondsResponse.data.results; }; diff --git a/apps/namadillo/src/types.d.ts b/apps/namadillo/src/types.d.ts index a41fe1d6b..863b2159b 100644 --- a/apps/namadillo/src/types.d.ts +++ b/apps/namadillo/src/types.d.ts @@ -1,3 +1,7 @@ +import { + Bond as IndexerBond, + Unbond as IndexerUnbond, +} from "@anomaorg/namada-indexer-client"; import { ChainKey, ExtensionKey } from "@namada/types"; import BigNumber from "bignumber.js"; @@ -75,16 +79,22 @@ export type Validator = Unique & { imageUrl?: string; }; +export type UnbondEntry = Omit< + | (IndexerUnbond & { + timeLeft: string; + }) + | "validator" +>; + +export type BondEntry = Omit; + export type MyValidator = { - stakingStatus: string; stakedAmount?: BigNumber; unbondedAmount?: BigNumber; withdrawableAmount?: BigNumber; validator: Validator; -}; - -export type MyUnbondingValidator = MyValidator & { - timeLeft: string; + bondItems: BondEntry[]; + unbondItems: UnbondEntry[]; }; export type StakingTotals = { From c423c0c2d9c6016091a7aa59bb87094e1b6a7a6a Mon Sep 17 00:00:00 2001 From: Eric Corson Date: Tue, 27 Aug 2024 14:38:38 +0900 Subject: [PATCH 3/6] fix: start toast timeout when toast type changes (#1049) This fixes toasts not automatically closing when a pending toast turns into a success/failure toast. --- apps/namadillo/src/App/Common/Toast.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/namadillo/src/App/Common/Toast.tsx b/apps/namadillo/src/App/Common/Toast.tsx index 81fbba365..224ec402a 100644 --- a/apps/namadillo/src/App/Common/Toast.tsx +++ b/apps/namadillo/src/App/Common/Toast.tsx @@ -61,7 +61,7 @@ const Toast = ({ notification, onClose }: ToastProps): JSX.Element => { useEffect(() => { startTimeout(); - }, []); + }, [notification.type]); return ( Date: Tue, 27 Aug 2024 14:49:44 +0900 Subject: [PATCH 4/6] fix: set default timeout for success/error toasts (#1049) --- apps/namadillo/src/App/Common/Toast.tsx | 12 +++++++++--- apps/namadillo/src/App/Staking/IncrementBonding.tsx | 1 - apps/namadillo/src/App/Staking/ReDelegate.tsx | 1 - .../src/hooks/useTransactionNotifications.tsx | 9 --------- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/apps/namadillo/src/App/Common/Toast.tsx b/apps/namadillo/src/App/Common/Toast.tsx index 224ec402a..132c27524 100644 --- a/apps/namadillo/src/App/Common/Toast.tsx +++ b/apps/namadillo/src/App/Common/Toast.tsx @@ -40,22 +40,28 @@ const Toast = ({ notification, onClose }: ToastProps): JSX.Element => { const [viewDetails, setViewDetails] = useState(false); const interval = useRef(); + const timeout = + notification.timeout ?? + (notification.type === "success" || notification.type === "error" ? + 5000 + : undefined); + const closeNotification = (): void => { onClose(notification); }; const keepNotification = (): void => { - if (notification.timeout && interval.current) { + if (interval.current) { clearTimeout(interval.current); interval.current = undefined; } }; const startTimeout = (): void => { - if (notification.timeout && !interval.current) { + if (typeof timeout !== "undefined" && !interval.current) { interval.current = setTimeout(() => { closeNotification(); - }, notification.timeout); + }, timeout); } }; diff --git a/apps/namadillo/src/App/Staking/IncrementBonding.tsx b/apps/namadillo/src/App/Staking/IncrementBonding.tsx index 2f4a6dc95..b970ca2f3 100644 --- a/apps/namadillo/src/App/Staking/IncrementBonding.tsx +++ b/apps/namadillo/src/App/Staking/IncrementBonding.tsx @@ -151,7 +151,6 @@ const IncrementBonding = (): JSX.Element => { bondTransactionError instanceof Error ? bondTransactionError.message : undefined, - timeout: 5000, type: "error", }); } diff --git a/apps/namadillo/src/App/Staking/ReDelegate.tsx b/apps/namadillo/src/App/Staking/ReDelegate.tsx index f910ee022..e19def6a2 100644 --- a/apps/namadillo/src/App/Staking/ReDelegate.tsx +++ b/apps/namadillo/src/App/Staking/ReDelegate.tsx @@ -113,7 +113,6 @@ export const ReDelegate = (): JSX.Element => { redelegateTxError.message : undefined, type: "error", - timeout: 5000, }); } }, [isError]); diff --git a/apps/namadillo/src/hooks/useTransactionNotifications.tsx b/apps/namadillo/src/hooks/useTransactionNotifications.tsx index e66dc6b8b..744fe75c0 100644 --- a/apps/namadillo/src/hooks/useTransactionNotifications.tsx +++ b/apps/namadillo/src/hooks/useTransactionNotifications.tsx @@ -86,7 +86,6 @@ export const useTransactionNotifications = (): void => { ), details: e.detail.error?.message, - timeout: 5000, }); }); @@ -104,7 +103,6 @@ export const useTransactionNotifications = (): void => { ), details: getAmountByValidatorList(e.detail.data), type: "success", - timeout: 5000, }); }); @@ -121,7 +119,6 @@ export const useTransactionNotifications = (): void => { ), details: getAmountByValidatorList(e.detail.data), type: "success", - timeout: 5000, }); }); @@ -149,7 +146,6 @@ export const useTransactionNotifications = (): void => { title: "Withdrawal Success", description: `Your withdrawal transaction has succeeded`, type: "success", - timeout: 5000, }); }); @@ -162,7 +158,6 @@ export const useTransactionNotifications = (): void => { description: <>Your withdrawal transaction has failed, details: e.detail.error?.message, type: "error", - timeout: 5000, }); }); @@ -179,7 +174,6 @@ export const useTransactionNotifications = (): void => { ), type: "error", - timeout: 5000, }); }); @@ -197,7 +191,6 @@ export const useTransactionNotifications = (): void => { ), details: getReDelegateDetailList(e.detail.data), type: "success", - timeout: 5000, }); }); @@ -210,7 +203,6 @@ export const useTransactionNotifications = (): void => { title: "Staking transaction failed", description: <>Your vote transaction has failed., details: e.detail.error?.message, - timeout: 5000, }); }); @@ -222,7 +214,6 @@ export const useTransactionNotifications = (): void => { title: "Staking transaction succeeded", description: `Your vote transaction has succeeded`, type: "success", - timeout: 5000, }); }); }; From 96860cd440edc856efd0a235ab530825061260e8 Mon Sep 17 00:00:00 2001 From: Eric Corson Date: Tue, 27 Aug 2024 16:39:35 +0900 Subject: [PATCH 5/6] fix: don't flash lock screen when opening extension (#1050) This fixes a Firefox bug where the saved password prompt pops up when opening the unlocked extension. Fixes #968. --- apps/extension/src/App/App.tsx | 22 ++++++++++------- apps/extension/src/context/AccountContext.tsx | 6 ++--- apps/extension/src/context/VaultContext.tsx | 24 +++++++++++-------- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/apps/extension/src/App/App.tsx b/apps/extension/src/App/App.tsx index 82e93722d..f993c3fcc 100644 --- a/apps/extension/src/App/App.tsx +++ b/apps/extension/src/App/App.tsx @@ -9,36 +9,42 @@ import routes from "./routes"; export const App: React.FC = () => { const location = useLocation(); - const { isLocked, unlock, passwordInitialized } = useVaultContext(); + const { lockStatus, unlock, passwordInitialized } = useVaultContext(); const displayReturnButton = (): boolean => { const setupRoute = routes.setup(); const indexRoute = routes.viewAccountList(); return Boolean( - !isLocked && - isLocked !== undefined && + lockStatus === "unlocked" && !matchPath(setupRoute, location.pathname) && !matchPath(indexRoute, location.pathname) ); }; - const shouldLock = passwordInitialized && isLocked; - if (passwordInitialized === undefined) return null; + if (passwordInitialized === undefined || lockStatus === "pending") { + return null; + } + + const shouldLock = passwordInitialized && lockStatus === "locked"; return ( } > - {shouldLock ? : } + {shouldLock ? + + : } ); }; diff --git a/apps/extension/src/context/AccountContext.tsx b/apps/extension/src/context/AccountContext.tsx index 60636062f..111e66133 100644 --- a/apps/extension/src/context/AccountContext.tsx +++ b/apps/extension/src/context/AccountContext.tsx @@ -64,7 +64,7 @@ export const AccountContextWrapper = ({ children, }: AccountContextProps): JSX.Element => { const requester = useRequester(); - const { isLocked, logout } = useVaultContext(); + const { lockStatus, logout } = useVaultContext(); const [accounts, setAccounts] = useState([]); const [parentAccounts, setParentAccounts] = useState([]); @@ -166,11 +166,11 @@ export const AccountContextWrapper = ({ }; useEffect(() => { - if (!isLocked) { + if (lockStatus === "unlocked") { void fetchAll(); void fetchActiveAccountId(); } - }, [isLocked]); + }, [lockStatus]); useEffect(() => { setParentAccounts(accounts.filter((account) => !account.parentId)); diff --git a/apps/extension/src/context/VaultContext.tsx b/apps/extension/src/context/VaultContext.tsx index 7513c6caa..8ed27dd67 100644 --- a/apps/extension/src/context/VaultContext.tsx +++ b/apps/extension/src/context/VaultContext.tsx @@ -17,13 +17,15 @@ import React, { createContext, useContext, useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import { Ports } from "router"; +type LockStatus = "locked" | "unlocked" | "pending"; + // Add types here type VaultContextType = { lock: () => Promise; unlock: (password: string) => Promise; logout: () => Promise; checkPassword: (password: string) => Promise; - isLocked: boolean; + lockStatus: LockStatus; changePassword: ( oldPassword: string, newPassword: string @@ -38,7 +40,7 @@ const createVaultContext = (): VaultContextType => { unlock: async (_password: string) => false, logout: async () => {}, checkPassword: async (_password: string) => false, - isLocked: true, + lockStatus: "locked", changePassword: async (_oldPassword: string, _newPassword: string) => Result.ok(null), passwordInitialized: undefined, @@ -57,7 +59,7 @@ export const VaultContextWrapper = ({ }: VaultContextWrapperProps): JSX.Element => { const requester = useRequester(); const navigate = useNavigate(); - const [locked, setLocked] = useState(true); + const [lockStatus, setLockStatus] = useState("pending"); const [passwordInitialized, setPasswordInitialized] = useState< undefined | boolean >(); @@ -69,20 +71,20 @@ export const VaultContextWrapper = ({ ); if (unlocked) { - setLocked(!unlocked); + setLockStatus("unlocked"); } return unlocked; }; const lock = async (): Promise => { await requester.sendMessage(Ports.Background, new LockVaultMsg()); - setLocked(true); + setLockStatus("locked"); }; const logout = async (): Promise => { await requester.sendMessage(Ports.Background, new LogoutMsg()); setPasswordInitialized(false); - setLocked(true); + setLockStatus("locked"); navigate(routes.setup()); }; @@ -114,13 +116,15 @@ export const VaultContextWrapper = ({ }; const queryIsLocked = async (): Promise => { - setLocked( - await requester.sendMessage(Ports.Background, new CheckIsLockedMsg()) + const isLocked = await requester.sendMessage( + Ports.Background, + new CheckIsLockedMsg() ); + setLockStatus(isLocked ? "locked" : "unlocked"); }; useEventListener(Events.ExtensionLocked, () => { - setLocked(true); + setLockStatus("locked"); }); useEffect(() => { @@ -133,7 +137,7 @@ export const VaultContextWrapper = ({ value={{ lock, unlock, - isLocked: locked, + lockStatus, checkPassword, passwordInitialized, changePassword, From 976fe32e559e880a486a09b3e4d885e0100a8a9a Mon Sep 17 00:00:00 2001 From: Mateusz Jasiuk Date: Thu, 29 Aug 2024 10:26:40 +0200 Subject: [PATCH 6/6] bug: governance and unbonding fixes (#1044) * refactor: use new api client * feat: use maxBlockTime to calculate unbonding period * feat: properly disable vote button and poll proposal changes * chore: fix PR comments --- apps/namadillo/package.json | 2 +- .../src/App/Governance/ProposalHeader.tsx | 4 +- .../App/Governance/ProposalStatusSummary.tsx | 7 ++- .../src/App/Governance/SubmitVote.tsx | 3 +- apps/namadillo/src/atoms/api.ts | 6 ++- apps/namadillo/src/atoms/chain/services.ts | 1 + apps/namadillo/src/atoms/etc.ts | 9 +++- apps/namadillo/src/atoms/proposals/atoms.ts | 51 +++++++++++-------- .../src/atoms/proposals/functions.ts | 11 ++-- apps/namadillo/src/atoms/settings/services.ts | 5 +- .../src/atoms/validators/functions.ts | 8 +-- .../src/hooks/useTransactionCallbacks.tsx | 13 ++++- apps/namadillo/src/types.d.ts | 1 + yarn.lock | 33 +++++++++--- 14 files changed, 108 insertions(+), 46 deletions(-) diff --git a/apps/namadillo/package.json b/apps/namadillo/package.json index 39f6905f6..5d2a3ebd6 100644 --- a/apps/namadillo/package.json +++ b/apps/namadillo/package.json @@ -7,7 +7,7 @@ "license": "MIT", "private": true, "dependencies": { - "@anomaorg/namada-indexer-client": "0.0.21", + "@anomaorg/namada-indexer-client": "0.0.23", "@cosmjs/encoding": "^0.32.3", "@tailwindcss/container-queries": "^0.1.1", "@tanstack/react-query": "^5.40.0", diff --git a/apps/namadillo/src/App/Governance/ProposalHeader.tsx b/apps/namadillo/src/App/Governance/ProposalHeader.tsx index 314ae66e4..b50e9fdee 100644 --- a/apps/namadillo/src/App/Governance/ProposalHeader.tsx +++ b/apps/namadillo/src/App/Governance/ProposalHeader.tsx @@ -296,7 +296,9 @@ const VoteButton: React.FC<{ }> = ({ proposal, voted, proposalId }) => { const navigate = useNavigate(); const isExtensionConnected = useAtomValue(namadaExtensionConnectedAtom); - const canVote = useAtomValue(canVoteAtom); + const canVote = useAtomValue( + canVoteAtom(proposal.data?.startEpoch || BigInt(-1)) + ); if (!isExtensionConnected) { return null; diff --git a/apps/namadillo/src/App/Governance/ProposalStatusSummary.tsx b/apps/namadillo/src/App/Governance/ProposalStatusSummary.tsx index 5b51f2473..25a902df6 100644 --- a/apps/namadillo/src/App/Governance/ProposalStatusSummary.tsx +++ b/apps/namadillo/src/App/Governance/ProposalStatusSummary.tsx @@ -1,7 +1,7 @@ import BigNumber from "bignumber.js"; import clsx from "clsx"; import { AnimatePresence, motion } from "framer-motion"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { PieChart, PieChartData, Stack } from "@namada/components"; import { formatPercentage } from "@namada/utils"; @@ -165,6 +165,11 @@ const Loaded: React.FC<{ highestVoteType ); + useEffect(() => { + // Reset the hovered vote type when the highest vote type changes(on data poll) + setHoveredVoteType(highestVoteType); + }, [highestVoteType]); + const votedProportion = totalVotingPower.isEqualTo(0) ? BigNumber(0) diff --git a/apps/namadillo/src/App/Governance/SubmitVote.tsx b/apps/namadillo/src/App/Governance/SubmitVote.tsx index 546d32372..f373c5f67 100644 --- a/apps/namadillo/src/App/Governance/SubmitVote.tsx +++ b/apps/namadillo/src/App/Governance/SubmitVote.tsx @@ -73,11 +73,12 @@ export const WithProposalId: React.FC<{ proposalId: bigint }> = ({ const [selectedVoteType, setSelectedVoteType] = useState(); const proposalQueryResult = useAtomValue(proposalFamily(proposalId)); - const canVote = useAtomValue(canVoteAtom); const proposal = proposalQueryResult.isSuccess ? proposalQueryResult.data : null; + const canVote = useAtomValue(canVoteAtom(proposal?.startEpoch || BigInt(-1))); + const onCloseModal = (): void => navigate(-1); const dispatchPendingNotification = (txs: TxProps[]): void => { diff --git a/apps/namadillo/src/atoms/api.ts b/apps/namadillo/src/atoms/api.ts index 0c158192b..24257cbad 100644 --- a/apps/namadillo/src/atoms/api.ts +++ b/apps/namadillo/src/atoms/api.ts @@ -1,4 +1,4 @@ -import { DefaultApi } from "@anomaorg/namada-indexer-client"; +import { Configuration, DefaultApi } from "@anomaorg/namada-indexer-client"; import { Atom, atom, getDefaultStore } from "jotai"; import { indexerUrlAtom } from "./settings"; @@ -14,5 +14,7 @@ export const getIndexerApi = (): DefaultApi => { // Helper function to use outside of hooks const getApi = (get: (atom: Atom) => Value): DefaultApi => { const indexerUrl = get(indexerUrlAtom); - return new DefaultApi({ basePath: indexerUrl }); + const configuration = new Configuration({ basePath: indexerUrl }); + + return new DefaultApi(configuration); }; diff --git a/apps/namadillo/src/atoms/chain/services.ts b/apps/namadillo/src/atoms/chain/services.ts index 3692f883c..b36025858 100644 --- a/apps/namadillo/src/atoms/chain/services.ts +++ b/apps/namadillo/src/atoms/chain/services.ts @@ -23,6 +23,7 @@ export const fetchChainParameters = async ( 1, minEpochDuration: Number(parameters.minDuration), minNumOfBlocks: Number(parameters.minNumOfBlocks), + maxBlockTime: Number(parameters.maxBlockTime), epochSwitchBlocksDelay: Number(parameters.epochSwitchBlocksDelay), }, apr: BigNumber(parameters.apr), diff --git a/apps/namadillo/src/atoms/etc.ts b/apps/namadillo/src/atoms/etc.ts index e3e2f615d..c27577ce0 100644 --- a/apps/namadillo/src/atoms/etc.ts +++ b/apps/namadillo/src/atoms/etc.ts @@ -6,6 +6,7 @@ import { atomWithStorage } from "jotai/utils"; type ControlRoutineProps = { shouldUpdateAmount: boolean; + shouldUpdateProposal: boolean; lastBlockHeight: BigNumber | undefined; }; @@ -13,6 +14,7 @@ export const controlRoutineAtom = atomWithStorage( "namadillo:etc", { shouldUpdateAmount: false, + shouldUpdateProposal: false, lastBlockHeight: undefined, } ); @@ -29,7 +31,12 @@ export const shouldUpdateBalanceAtom = atom( changeProps("shouldUpdateAmount") ); +export const shouldUpdateProposalAtom = atom( + (get) => get(controlRoutineAtom).shouldUpdateProposal, + changeProps("shouldUpdateProposal") +); + export const lastBlockHeightAtom = atom( - (get) => get(controlRoutineAtom).shouldUpdateAmount, + (get) => get(controlRoutineAtom).lastBlockHeight, changeProps("lastBlockHeight") ); diff --git a/apps/namadillo/src/atoms/proposals/atoms.ts b/apps/namadillo/src/atoms/proposals/atoms.ts index de5756839..86df789a3 100644 --- a/apps/namadillo/src/atoms/proposals/atoms.ts +++ b/apps/namadillo/src/atoms/proposals/atoms.ts @@ -21,15 +21,16 @@ import { fetchVotedProposalIds, } from "./functions"; -import { - Bond as NamadaIndexerBond, - BondStatusEnum as NamadaIndexerBondStatusEnum, -} from "@anomaorg/namada-indexer-client"; +import { Bond as NamadaIndexerBond } from "@anomaorg/namada-indexer-client"; +import { shouldUpdateProposalAtom } from "atoms/etc"; export const proposalFamily = atomFamily((id: bigint) => atomWithQuery((get) => { const api = get(indexerApiAtom); + const enablePolling = get(shouldUpdateProposalAtom); return { + // TODO: subscribe to indexer events when it's done + refetchInterval: enablePolling ? 1000 : false, queryKey: ["proposal", id.toString()], queryFn: () => fetchProposalById(api, id), }; @@ -96,7 +97,11 @@ export const paginatedProposalsFamily = atomFamily( export const votedProposalIdsAtom = atomWithQuery((get) => { const account = get(defaultAccountAtom); const api = get(indexerApiAtom); + const enablePolling = get(shouldUpdateProposalAtom); + return { + // TODO: subscribe to indexer events when it's done + refetchInterval: enablePolling ? 1000 : false, queryKey: ["voted-proposal-ids", account.data], ...queryDependentFn(async () => { if (typeof account.data === "undefined") { @@ -107,25 +112,29 @@ export const votedProposalIdsAtom = atomWithQuery((get) => { }; }); -export const canVoteAtom = atomWithQuery((get) => { - const account = get(defaultAccountAtom); - const api = get(indexerApiAtom); +export const canVoteAtom = atomFamily((proposalStartEpoch: bigint) => + atomWithQuery((get) => { + const account = get(defaultAccountAtom); + const api = get(indexerApiAtom); - return { - queryKey: ["can-vote"], - enabled: account.isSuccess, - queryFn: async () => { - const all_bonds = await api.apiV1PosBondAddressGet(account.data!.address); + return { + queryKey: ["can-vote", account.data, api], + enabled: account.isSuccess, + queryFn: async () => { + const all_bonds = await api.apiV1PosBondAddressGet( + account.data!.address + ); - return all_bonds.data.results.reduce( - (acc: boolean, current: NamadaIndexerBond) => { - return acc || current.status === NamadaIndexerBondStatusEnum.Active; - }, - false - ); - }, - }; -}); + return all_bonds.data.results.reduce( + (acc: boolean, current: NamadaIndexerBond) => { + return acc || Number(current.startEpoch) <= proposalStartEpoch; + }, + false + ); + }, + }; + }) +); type CreateVoteTxArgs = { proposalId: bigint; diff --git a/apps/namadillo/src/atoms/proposals/functions.ts b/apps/namadillo/src/atoms/proposals/functions.ts index 435c2e55c..cc4bbc1a6 100644 --- a/apps/namadillo/src/atoms/proposals/functions.ts +++ b/apps/namadillo/src/atoms/proposals/functions.ts @@ -1,4 +1,5 @@ import { + ApiV1GovProposalGetStatusEnum as ApiIndexerProposalStatusEnum, DefaultApi, Proposal as IndexerProposal, ProposalStatusEnum as IndexerProposalStatusEnum, @@ -257,16 +258,16 @@ const fromIndexerStatus = ( const toIndexerStatus = ( proposalStatus: ProposalStatus -): IndexerProposalStatusEnum => { +): ApiIndexerProposalStatusEnum => { switch (proposalStatus) { case "pending": - return IndexerProposalStatusEnum.Pending; + return ApiIndexerProposalStatusEnum.Pending; case "ongoing": - return IndexerProposalStatusEnum.Voting; + return ApiIndexerProposalStatusEnum.VotingPeriod; case "passed": - return IndexerProposalStatusEnum.Passed; + return ApiIndexerProposalStatusEnum.Passed; case "rejected": - return IndexerProposalStatusEnum.Rejected; + return ApiIndexerProposalStatusEnum.Rejected; default: return assertNever(proposalStatus); } diff --git a/apps/namadillo/src/atoms/settings/services.ts b/apps/namadillo/src/atoms/settings/services.ts index 2dbbff95b..3ac430f7a 100644 --- a/apps/namadillo/src/atoms/settings/services.ts +++ b/apps/namadillo/src/atoms/settings/services.ts @@ -1,4 +1,4 @@ -import { DefaultApi } from "@anomaorg/namada-indexer-client"; +import { Configuration, DefaultApi } from "@anomaorg/namada-indexer-client"; import { isUrlValid } from "@namada/utils"; import toml from "toml"; import { SettingsTomlOptions } from "types"; @@ -8,7 +8,8 @@ export const isIndexerAlive = async (url: string): Promise => { return false; } try { - const api = new DefaultApi({ basePath: url }); + const configuration = new Configuration({ basePath: url }); + const api = new DefaultApi(configuration); const response = await api.healthGet(); return response.status === 200; } catch { diff --git a/apps/namadillo/src/atoms/validators/functions.ts b/apps/namadillo/src/atoms/validators/functions.ts index abbadc6da..a458dd06f 100644 --- a/apps/namadillo/src/atoms/validators/functions.ts +++ b/apps/namadillo/src/atoms/validators/functions.ts @@ -1,5 +1,6 @@ import { Bond as IndexerBond, + MergedBond as IndexerMergedBond, Unbond as IndexerUnbond, Validator as IndexerValidator, VotingPower as IndexerVotingPower, @@ -18,10 +19,9 @@ export const toValidator = ( const expectedApr = nominalApr.times(1 - commission.toNumber()); // Because epoch duration is in reality longer by epochSwitchBlocksDelay we have to account for that - const timePerBlock = epochInfo.minEpochDuration / epochInfo.minNumOfBlocks; const realMinEpochDuration = epochInfo.minEpochDuration + - timePerBlock * epochInfo.epochSwitchBlocksDelay; + epochInfo.maxBlockTime * epochInfo.epochSwitchBlocksDelay; const unbondingPeriod = singleUnitDurationFromInterval( 0, @@ -62,7 +62,7 @@ export const calculateUnbondingTimeLeft = (unbond: IndexerUnbond): string => { * an array of MyValidators objects */ export const toMyValidators = ( - indexerBonds: IndexerBond[], + indexerBonds: IndexerBond[] | IndexerMergedBond[], indexerUnbonds: IndexerUnbond[], totalVotingPower: IndexerVotingPower, epochInfo: EpochInfo, @@ -86,7 +86,7 @@ export const toMyValidators = ( const addBondToAddress = ( address: Address, key: "bondItems" | "unbondItems", - bond: IndexerBond | IndexerUnbond + bond: IndexerBond | IndexerMergedBond | IndexerUnbond ): void => { const { validator: _, ...bondsWithoutValidator } = bond; myValidators[address]![key].push(bondsWithoutValidator); diff --git a/apps/namadillo/src/hooks/useTransactionCallbacks.tsx b/apps/namadillo/src/hooks/useTransactionCallbacks.tsx index a0d38a6d1..4b837cd6b 100644 --- a/apps/namadillo/src/hooks/useTransactionCallbacks.tsx +++ b/apps/namadillo/src/hooks/useTransactionCallbacks.tsx @@ -1,5 +1,5 @@ import { accountBalanceAtom } from "atoms/accounts"; -import { shouldUpdateBalanceAtom } from "atoms/etc"; +import { shouldUpdateBalanceAtom, shouldUpdateProposalAtom } from "atoms/etc"; import { useAtomValue, useSetAtom } from "jotai"; import { useTransactionEventListener } from "utils"; @@ -19,4 +19,15 @@ export const useTransactionCallback = (): void => { useTransactionEventListener("Bond.Success", onBalanceUpdate); useTransactionEventListener("Unbond.Success", onBalanceUpdate); useTransactionEventListener("Withdraw.Success", onBalanceUpdate); + + const shouldUpdateProposal = useSetAtom(shouldUpdateProposalAtom); + + useTransactionEventListener("VoteProposal.Success", () => { + shouldUpdateProposal(true); + + // This does not guarantee that the proposal will be updated, + // but because this is temporary solution(don't quote me on this), it should be fine :) + const timePolling = 12 * 1000; + setTimeout(() => shouldUpdateProposal(false), timePolling); + }); }; diff --git a/apps/namadillo/src/types.d.ts b/apps/namadillo/src/types.d.ts index 863b2159b..18a5ec784 100644 --- a/apps/namadillo/src/types.d.ts +++ b/apps/namadillo/src/types.d.ts @@ -47,6 +47,7 @@ export type EpochInfo = { unbondingPeriodInEpochs: number; minEpochDuration: number; minNumOfBlocks: number; + maxBlockTime: number; epochSwitchBlocksDelay: number; }; diff --git a/yarn.lock b/yarn.lock index 3bd7bed2b..7fc6f8e61 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,12 +45,12 @@ __metadata: languageName: node linkType: hard -"@anomaorg/namada-indexer-client@npm:0.0.21": - version: 0.0.21 - resolution: "@anomaorg/namada-indexer-client@npm:0.0.21" +"@anomaorg/namada-indexer-client@npm:0.0.23": + version: 0.0.23 + resolution: "@anomaorg/namada-indexer-client@npm:0.0.23" dependencies: - axios: "npm:^0.21.1" - checksum: 4b9632145eee1d20672ad65eef447ed90e3abfc2fee09a5c3e40fc5fd9321ff83aff03acf4be75abe1c74c83fc635216f46f5c58155c11a291656bb822f05465 + axios: "npm:^1.6.1" + checksum: 1249a851ad5ad09daa88bc621fbc33fe520a3f5912ab02d472c4d7b52f26fb83cee2f7818c634a55abb137dfdf5226d0ecd057e24895573199da069a5111e1cd languageName: node linkType: hard @@ -8448,7 +8448,7 @@ __metadata: version: 0.0.0-use.local resolution: "@namada/namadillo@workspace:apps/namadillo" dependencies: - "@anomaorg/namada-indexer-client": "npm:0.0.21" + "@anomaorg/namada-indexer-client": "npm:0.0.23" "@cosmjs/encoding": "npm:^0.32.3" "@playwright/test": "npm:^1.24.1" "@release-it/keep-a-changelog": "npm:^5.0.0" @@ -12954,6 +12954,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.6.1": + version: 1.7.4 + resolution: "axios@npm:1.7.4" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 5ea1a93140ca1d49db25ef8e1bd8cfc59da6f9220159a944168860ad15a2743ea21c5df2967795acb15cbe81362f5b157fdebbea39d53117ca27658bab9f7f17 + languageName: node + linkType: hard + "axobject-query@npm:^2.2.0": version: 2.2.0 resolution: "axobject-query@npm:2.2.0" @@ -19364,6 +19375,16 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" + peerDependenciesMeta: + debug: + optional: true + checksum: 9ff767f0d7be6aa6870c82ac79cf0368cd73e01bbc00e9eb1c2a16fbb198ec105e3c9b6628bb98e9f3ac66fe29a957b9645bcb9a490bb7aa0d35f908b6b85071 + languageName: node + linkType: hard + "for-each@npm:^0.3.3": version: 0.3.3 resolution: "for-each@npm:0.3.3"