diff --git a/CHANGELOG.md b/CHANGELOG.md index 3565f11f1a..33106c95d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,8 @@ `isSearchBySentFromOrToQuery` and `isSearchByTagsQuery`. - @cosmjs/launchpad: Change type of `TxsResponse.logs` and `BroadcastTxsResponse.logs` to `unknown[]`. +- @cosmjs/launchpad: Export `StdSignDoc` and create helpers to make and + serialize a `StdSignDoc`: `makeStdSignDoc` and `serializeSignDoc`. - @cosmjs/launchpad-ledger: Add package supporting Ledger device integration for Launchpad. Two new classes are provided: `LedgerSigner` (for most use cases) and `LaunchpadLedger` for more fine-grained access. diff --git a/packages/launchpad/src/encoding.ts b/packages/launchpad/src/encoding.ts index 3c09e77528..6f11b1682c 100644 --- a/packages/launchpad/src/encoding.ts +++ b/packages/launchpad/src/encoding.ts @@ -29,14 +29,38 @@ function sortJson(json: any): any { * @see https://docs.cosmos.network/master/modules/auth/03_types.html#stdsigndoc */ export interface StdSignDoc { - readonly account_number: string; readonly chain_id: string; - readonly fee: StdFee; - readonly memo: string; - readonly msgs: readonly Msg[]; + readonly account_number: string; readonly sequence: string; + readonly fee: StdFee; + readonly msgs: readonly Msg[]; + readonly memo: string; } +export function makeStdSignDoc( + msgs: readonly Msg[], + fee: StdFee, + chainId: string, + memo: string, + accountNumber: number | string, + sequence: number | string, +): StdSignDoc { + return { + chain_id: chainId, + account_number: uint64ToString(accountNumber), + sequence: uint64ToString(sequence), + fee: fee, + msgs: msgs, + memo: memo, + }; +} + +export function serializeSignDoc(signDoc: StdSignDoc): Uint8Array { + const sortedSignDoc = sortJson(signDoc); + return toUtf8(JSON.stringify(sortedSignDoc)); +} + +/** A convenience helper to create the StdSignDoc and serialize it */ export function makeSignBytes( msgs: readonly Msg[], fee: StdFee, @@ -45,14 +69,5 @@ export function makeSignBytes( accountNumber: number | string, sequence: number | string, ): Uint8Array { - const signDoc: StdSignDoc = { - account_number: uint64ToString(accountNumber), - chain_id: chainId, - fee: fee, - memo: memo, - msgs: msgs, - sequence: uint64ToString(sequence), - }; - const sortedSignDoc = sortJson(signDoc); - return toUtf8(JSON.stringify(sortedSignDoc)); + return serializeSignDoc(makeStdSignDoc(msgs, fee, chainId, memo, accountNumber, sequence)); } diff --git a/packages/launchpad/src/index.ts b/packages/launchpad/src/index.ts index 7cc9469504..7cf967f8f9 100644 --- a/packages/launchpad/src/index.ts +++ b/packages/launchpad/src/index.ts @@ -28,7 +28,7 @@ export { isSearchBySentFromOrToQuery, isSearchByTagsQuery, } from "./cosmosclient"; -export { makeSignBytes, StdSignDoc } from "./encoding"; +export { makeSignBytes, makeStdSignDoc, serializeSignDoc, StdSignDoc } from "./encoding"; export { buildFeeTable, FeeTable, GasLimits, GasPrice } from "./gas"; export { AuthAccountsResponse, diff --git a/packages/launchpad/types/encoding.d.ts b/packages/launchpad/types/encoding.d.ts index 51c2c0c4c7..bb0268626e 100644 --- a/packages/launchpad/types/encoding.d.ts +++ b/packages/launchpad/types/encoding.d.ts @@ -6,13 +6,23 @@ import { StdFee } from "./types"; * @see https://docs.cosmos.network/master/modules/auth/03_types.html#stdsigndoc */ export interface StdSignDoc { - readonly account_number: string; readonly chain_id: string; - readonly fee: StdFee; - readonly memo: string; - readonly msgs: readonly Msg[]; + readonly account_number: string; readonly sequence: string; + readonly fee: StdFee; + readonly msgs: readonly Msg[]; + readonly memo: string; } +export declare function makeStdSignDoc( + msgs: readonly Msg[], + fee: StdFee, + chainId: string, + memo: string, + accountNumber: number | string, + sequence: number | string, +): StdSignDoc; +export declare function serializeSignDoc(signDoc: StdSignDoc): Uint8Array; +/** A convenience helper to create the StdSignDoc and serialize it */ export declare function makeSignBytes( msgs: readonly Msg[], fee: StdFee, diff --git a/packages/launchpad/types/index.d.ts b/packages/launchpad/types/index.d.ts index ed0097b2cf..6d9b9ee8c7 100644 --- a/packages/launchpad/types/index.d.ts +++ b/packages/launchpad/types/index.d.ts @@ -26,7 +26,7 @@ export { isSearchBySentFromOrToQuery, isSearchByTagsQuery, } from "./cosmosclient"; -export { makeSignBytes, StdSignDoc } from "./encoding"; +export { makeSignBytes, makeStdSignDoc, serializeSignDoc, StdSignDoc } from "./encoding"; export { buildFeeTable, FeeTable, GasLimits, GasPrice } from "./gas"; export { AuthAccountsResponse,