@gnolang/tm2-js-client 2.0.4 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +430 -0
- package/CONTRIBUTING.md +83 -0
- package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/defineProperty.cjs +12 -0
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/defineProperty.mjs +3 -3
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/toPrimitive.cjs +4 -4
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/toPrimitive.mjs +3 -3
- package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/toPropertyKey.cjs +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/toPropertyKey.mjs +9 -0
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/typeof.cjs +2 -2
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.143.0/helpers/esm}/typeof.mjs +2 -2
- package/dist/_virtual/_rolldown/runtime.cjs +1 -1
- package/dist/index.d.cts +5 -0
- package/dist/index.d.mts +5 -0
- package/dist/proto/google/protobuf/any.cjs +3 -4
- package/dist/proto/google/protobuf/any.cjs.map +1 -1
- package/dist/proto/google/protobuf/any.d.cts +3 -4
- package/dist/proto/google/protobuf/any.d.cts.map +1 -1
- package/dist/proto/google/protobuf/any.d.mts +3 -4
- package/dist/proto/google/protobuf/any.d.mts.map +1 -1
- package/dist/proto/google/protobuf/any.mjs +3 -3
- package/dist/proto/google/protobuf/any.mjs.map +1 -1
- package/dist/proto/index.cjs +15 -4
- package/dist/proto/index.d.cts +2 -1
- package/dist/proto/index.d.mts +2 -1
- package/dist/proto/index.mjs +5 -5
- package/dist/proto/tm2/abci.cjs +3 -4
- package/dist/proto/tm2/abci.cjs.map +1 -1
- package/dist/proto/tm2/abci.d.cts +3 -4
- package/dist/proto/tm2/abci.d.cts.map +1 -1
- package/dist/proto/tm2/abci.d.mts +3 -4
- package/dist/proto/tm2/abci.d.mts.map +1 -1
- package/dist/proto/tm2/abci.mjs +3 -3
- package/dist/proto/tm2/abci.mjs.map +1 -1
- package/dist/proto/tm2/multisig.cjs +3 -4
- package/dist/proto/tm2/multisig.cjs.map +1 -1
- package/dist/proto/tm2/multisig.d.cts +3 -4
- package/dist/proto/tm2/multisig.d.cts.map +1 -1
- package/dist/proto/tm2/multisig.d.mts +3 -4
- package/dist/proto/tm2/multisig.d.mts.map +1 -1
- package/dist/proto/tm2/multisig.mjs +3 -3
- package/dist/proto/tm2/multisig.mjs.map +1 -1
- package/dist/proto/tm2/tx.cjs +15 -7
- package/dist/proto/tm2/tx.cjs.map +1 -1
- package/dist/proto/tm2/tx.d.cts +4 -3
- package/dist/proto/tm2/tx.d.cts.map +1 -1
- package/dist/proto/tm2/tx.d.mts +4 -3
- package/dist/proto/tm2/tx.d.mts.map +1 -1
- package/dist/proto/tm2/tx.mjs +15 -6
- package/dist/proto/tm2/tx.mjs.map +1 -1
- package/dist/provider/endpoints.cjs.map +1 -1
- package/dist/provider/endpoints.d.cts.map +1 -1
- package/dist/provider/endpoints.d.mts.map +1 -1
- package/dist/provider/endpoints.mjs.map +1 -1
- package/dist/provider/errors/errors.cjs +2 -2
- package/dist/provider/errors/errors.cjs.map +1 -1
- package/dist/provider/errors/errors.d.cts.map +1 -1
- package/dist/provider/errors/errors.d.mts.map +1 -1
- package/dist/provider/errors/errors.mjs +1 -1
- package/dist/provider/errors/errors.mjs.map +1 -1
- package/dist/provider/errors/index.cjs +20 -1
- package/dist/provider/errors/index.d.cts +2 -1
- package/dist/provider/errors/index.d.mts +2 -1
- package/dist/provider/errors/index.mjs +2 -2
- package/dist/provider/index.cjs +61 -9
- package/dist/provider/index.d.cts +7 -1
- package/dist/provider/index.d.mts +7 -1
- package/dist/provider/index.mjs +10 -10
- package/dist/provider/jsonrpc/index.cjs +2 -1
- package/dist/provider/jsonrpc/index.d.cts +2 -1
- package/dist/provider/jsonrpc/index.d.mts +2 -1
- package/dist/provider/jsonrpc/index.mjs +2 -2
- package/dist/provider/jsonrpc/jsonrpc.cjs +2 -2
- package/dist/provider/jsonrpc/jsonrpc.cjs.map +1 -1
- package/dist/provider/jsonrpc/jsonrpc.d.cts +0 -1
- package/dist/provider/jsonrpc/jsonrpc.d.cts.map +1 -1
- package/dist/provider/jsonrpc/jsonrpc.d.mts +0 -1
- package/dist/provider/jsonrpc/jsonrpc.d.mts.map +1 -1
- package/dist/provider/jsonrpc/jsonrpc.mjs +2 -1
- package/dist/provider/jsonrpc/jsonrpc.mjs.map +1 -1
- package/dist/provider/provider.cjs +8 -9
- package/dist/provider/provider.cjs.map +1 -1
- package/dist/provider/provider.d.cts +2 -1
- package/dist/provider/provider.d.cts.map +1 -1
- package/dist/provider/provider.d.mts +2 -1
- package/dist/provider/provider.d.mts.map +1 -1
- package/dist/provider/provider.mjs +43 -26
- package/dist/provider/provider.mjs.map +1 -1
- package/dist/provider/types/abci.d.cts.map +1 -1
- package/dist/provider/types/abci.d.mts.map +1 -1
- package/dist/provider/types/common.d.cts +1 -2
- package/dist/provider/types/common.d.cts.map +1 -1
- package/dist/provider/types/common.d.mts +1 -2
- package/dist/provider/types/common.d.mts.map +1 -1
- package/dist/provider/types/index.cjs +2 -1
- package/dist/provider/types/index.d.cts +2 -1
- package/dist/provider/types/index.d.mts +2 -1
- package/dist/provider/types/index.mjs +2 -2
- package/dist/provider/types/jsonrpc.d.cts.map +1 -1
- package/dist/provider/types/jsonrpc.d.mts.map +1 -1
- package/dist/provider/utility/adapters.cjs +1 -1
- package/dist/provider/utility/adapters.cjs.map +1 -1
- package/dist/provider/utility/adapters.d.cts +1 -1
- package/dist/provider/utility/adapters.d.cts.map +1 -1
- package/dist/provider/utility/adapters.d.mts +1 -1
- package/dist/provider/utility/adapters.d.mts.map +1 -1
- package/dist/provider/utility/adapters.mjs +1 -1
- package/dist/provider/utility/adapters.mjs.map +1 -1
- package/dist/provider/utility/errors.utility.cjs.map +1 -1
- package/dist/provider/utility/errors.utility.mjs.map +1 -1
- package/dist/provider/utility/index.cjs +27 -3
- package/dist/provider/utility/index.d.cts +2 -1
- package/dist/provider/utility/index.d.mts +2 -1
- package/dist/provider/utility/index.mjs +4 -4
- package/dist/provider/utility/provider.utility.cjs +0 -1
- package/dist/provider/utility/provider.utility.cjs.map +1 -1
- package/dist/provider/utility/provider.utility.d.cts +2 -1
- package/dist/provider/utility/provider.utility.d.cts.map +1 -1
- package/dist/provider/utility/provider.utility.d.mts +2 -1
- package/dist/provider/utility/provider.utility.d.mts.map +1 -1
- package/dist/provider/utility/provider.utility.mjs +2 -1
- package/dist/provider/utility/provider.utility.mjs.map +1 -1
- package/dist/provider/utility/requests.utility.cjs +0 -1
- package/dist/provider/utility/requests.utility.cjs.map +1 -1
- package/dist/provider/utility/requests.utility.d.cts +1 -1
- package/dist/provider/utility/requests.utility.d.cts.map +1 -1
- package/dist/provider/utility/requests.utility.d.mts +1 -1
- package/dist/provider/utility/requests.utility.d.mts.map +1 -1
- package/dist/provider/utility/requests.utility.mjs.map +1 -1
- package/dist/provider/websocket/index.cjs +2 -1
- package/dist/provider/websocket/index.d.cts +2 -1
- package/dist/provider/websocket/index.d.mts +2 -1
- package/dist/provider/websocket/index.mjs +2 -2
- package/dist/provider/websocket/ws.cjs +2 -2
- package/dist/provider/websocket/ws.cjs.map +1 -1
- package/dist/provider/websocket/ws.d.cts +0 -1
- package/dist/provider/websocket/ws.d.cts.map +1 -1
- package/dist/provider/websocket/ws.d.mts +0 -1
- package/dist/provider/websocket/ws.d.mts.map +1 -1
- package/dist/provider/websocket/ws.mjs +2 -1
- package/dist/provider/websocket/ws.mjs.map +1 -1
- package/dist/services/index.cjs +2 -1
- package/dist/services/index.d.cts +2 -1
- package/dist/services/index.d.mts +2 -1
- package/dist/services/index.mjs +2 -2
- package/dist/services/rest/restService.cjs +1 -1
- package/dist/services/rest/restService.cjs.map +1 -1
- package/dist/services/rest/restService.d.cts +0 -1
- package/dist/services/rest/restService.d.cts.map +1 -1
- package/dist/services/rest/restService.d.mts +0 -1
- package/dist/services/rest/restService.d.mts.map +1 -1
- package/dist/services/rest/restService.mjs.map +1 -1
- package/dist/services/rest/restService.types.d.cts +1 -1
- package/dist/services/rest/restService.types.d.cts.map +1 -1
- package/dist/services/rest/restService.types.d.mts +1 -1
- package/dist/services/rest/restService.types.d.mts.map +1 -1
- package/dist/utility/compact-bit-array.cjs +1 -1
- package/dist/utility/compact-bit-array.cjs.map +1 -1
- package/dist/utility/compact-bit-array.d.cts +0 -1
- package/dist/utility/compact-bit-array.d.cts.map +1 -1
- package/dist/utility/compact-bit-array.d.mts +0 -1
- package/dist/utility/compact-bit-array.d.mts.map +1 -1
- package/dist/utility/compact-bit-array.mjs +1 -1
- package/dist/utility/compact-bit-array.mjs.map +1 -1
- package/dist/utility/index.cjs +3 -1
- package/dist/utility/index.d.cts +2 -1
- package/dist/utility/index.d.mts +2 -1
- package/dist/utility/index.mjs +2 -2
- package/dist/wallet/index.cjs +16 -5
- package/dist/wallet/index.d.cts +6 -1
- package/dist/wallet/index.d.mts +6 -1
- package/dist/wallet/index.mjs +6 -6
- package/dist/wallet/key/index.cjs +2 -1
- package/dist/wallet/key/index.d.cts +2 -1
- package/dist/wallet/key/index.d.mts +2 -1
- package/dist/wallet/key/index.mjs +2 -2
- package/dist/wallet/key/key.cjs +9 -10
- package/dist/wallet/key/key.cjs.map +1 -1
- package/dist/wallet/key/key.d.cts +0 -1
- package/dist/wallet/key/key.d.cts.map +1 -1
- package/dist/wallet/key/key.d.mts +0 -1
- package/dist/wallet/key/key.d.mts.map +1 -1
- package/dist/wallet/key/key.mjs +1 -1
- package/dist/wallet/key/key.mjs.map +1 -1
- package/dist/wallet/ledger/index.cjs +2 -1
- package/dist/wallet/ledger/index.d.cts +2 -1
- package/dist/wallet/ledger/index.d.mts +2 -1
- package/dist/wallet/ledger/index.mjs +2 -2
- package/dist/wallet/ledger/ledger.cjs +9 -10
- package/dist/wallet/ledger/ledger.cjs.map +1 -1
- package/dist/wallet/ledger/ledger.d.cts +0 -1
- package/dist/wallet/ledger/ledger.d.cts.map +1 -1
- package/dist/wallet/ledger/ledger.d.mts +0 -1
- package/dist/wallet/ledger/ledger.d.mts.map +1 -1
- package/dist/wallet/ledger/ledger.mjs +3 -2
- package/dist/wallet/ledger/ledger.mjs.map +1 -1
- package/dist/wallet/signer.d.cts.map +1 -1
- package/dist/wallet/signer.d.mts.map +1 -1
- package/dist/wallet/types/index.cjs +2 -1
- package/dist/wallet/types/index.d.cts +2 -1
- package/dist/wallet/types/index.d.mts +2 -1
- package/dist/wallet/types/index.mjs +2 -2
- package/dist/wallet/types/sign.d.cts.map +1 -1
- package/dist/wallet/types/sign.d.mts.map +1 -1
- package/dist/wallet/types/wallet.d.cts.map +1 -1
- package/dist/wallet/types/wallet.d.mts.map +1 -1
- package/dist/wallet/utility/index.cjs +8 -1
- package/dist/wallet/utility/index.d.cts +2 -1
- package/dist/wallet/utility/index.d.mts +2 -1
- package/dist/wallet/utility/index.mjs +2 -2
- package/dist/wallet/utility/utility.cjs +1 -1
- package/dist/wallet/utility/utility.cjs.map +1 -1
- package/dist/wallet/utility/utility.d.cts +0 -1
- package/dist/wallet/utility/utility.d.cts.map +1 -1
- package/dist/wallet/utility/utility.d.mts +0 -1
- package/dist/wallet/utility/utility.d.mts.map +1 -1
- package/dist/wallet/utility/utility.mjs.map +1 -1
- package/dist/wallet/wallet.cjs +18 -18
- package/dist/wallet/wallet.cjs.map +1 -1
- package/dist/wallet/wallet.d.cts +3 -1
- package/dist/wallet/wallet.d.cts.map +1 -1
- package/dist/wallet/wallet.d.mts +3 -1
- package/dist/wallet/wallet.d.mts.map +1 -1
- package/dist/wallet/wallet.mjs +6 -4
- package/dist/wallet/wallet.mjs.map +1 -1
- package/package.json +39 -36
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.cjs +0 -12
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/toPropertyKey.cjs +0 -9
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/toPropertyKey.mjs +0 -9
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.cts","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ledger.d.cts","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"mappings":";;;;;;cAoBa,wBAAwB;mBAClB;mBACA;mBACA;;;;;;;EASf,YAAA,WAAW,iBACX,sBACA;EAOF,kBAAuB;EAevB,oBAAyB,QAAQ;EAQjC,qBAA0B,QAAQ;EAIlC,WAAkB,MAAM,eAAa,QAAQ;EAQ7C,kBACE,MAAM,YACN,WAAW,eACV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.mts","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ledger.d.mts","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"mappings":";;;;;;cAoBa,wBAAwB;mBAClB;mBACA;mBACA;;;;;;;EASf,YAAA,WAAW,iBACX,sBACA;EAOF,kBAAuB;EAevB,oBAAyB,QAAQ;EAQjC,qBAA0B,QAAQ;EAIlC,WAAkB,MAAM,eAAa,QAAQ;EAQ7C,kBACE,MAAM,YACN,WAAW,eACV"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _defineProperty from "../../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/defineProperty.mjs";
|
|
2
2
|
import { generateHDPath } from "../utility/utility.mjs";
|
|
3
3
|
import "../utility/index.mjs";
|
|
4
4
|
import { Secp256k1, Secp256k1Signature, sha256 } from "@cosmjs/crypto";
|
|
@@ -20,7 +20,8 @@ var LedgerSigner = class {
|
|
|
20
20
|
_defineProperty(this, "addressPrefix", void 0);
|
|
21
21
|
_defineProperty(this, "getAddress", async () => {
|
|
22
22
|
if (!this.connector) throw new Error("Ledger not connected");
|
|
23
|
-
|
|
23
|
+
const compressedPubKey = await this.connector.getPubkey(this.hdPath);
|
|
24
|
+
return pubkeyToAddress(encodeSecp256k1Pubkey(compressedPubKey), this.addressPrefix);
|
|
24
25
|
});
|
|
25
26
|
_defineProperty(this, "getPublicKey", async () => {
|
|
26
27
|
if (!this.connector) throw new Error("Ledger not connected");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.mjs","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"sourcesContent":["import {\n encodeSecp256k1Pubkey, pubkeyToAddress,\n} from \"@cosmjs/amino\";\nimport {\n HdPath, Secp256k1, Secp256k1Signature, sha256,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Signer,\n} from \"../signer.js\";\nimport {\n defaultAddressPrefix, generateHDPath,\n} from \"../utility/index.js\";\n\n/**\n * LedgerSigner implements the logic for the Ledger device signer\n */\nexport class LedgerSigner implements Signer {\n private readonly connector: LedgerConnector;\n private readonly hdPath: HdPath;\n private readonly addressPrefix: string;\n\n /**\n * Creates a new Ledger device signer instance\n * @param {LedgerConnector} connector the Ledger connector\n * @param {number} accountIndex the desired account index\n * @param {string} addressPrefix the address prefix\n */\n constructor(\n connector: LedgerConnector,\n accountIndex: number,\n addressPrefix: string = defaultAddressPrefix,\n ) {\n this.connector = connector;\n this.hdPath = generateHDPath(accountIndex);\n this.addressPrefix = addressPrefix;\n }\n\n getAddress = async (): Promise<string> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n const compressedPubKey: Uint8Array = await this.connector.getPubkey(\n this.hdPath,\n );\n\n return pubkeyToAddress(\n encodeSecp256k1Pubkey(compressedPubKey),\n this.addressPrefix,\n );\n };\n\n getPublicKey = async (): Promise<Uint8Array> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n return this.connector.getPubkey(this.hdPath);\n };\n\n getPrivateKey = async (): Promise<Uint8Array> => {\n throw new Error(\"Ledger does not support private key exports\");\n };\n\n signData = async (data: Uint8Array): Promise<Uint8Array> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n return this.connector.sign(data, this.hdPath);\n };\n\n verifySignature = async (\n data: Uint8Array,\n signature: Uint8Array,\n ): Promise<boolean> => {\n const publicKey = await this.getPublicKey();\n\n return Secp256k1.verifySignature(\n Secp256k1Signature.fromFixedLength(signature),\n sha256(data),\n publicKey,\n );\n };\n}\n"],"mappings":";;;;;;;;;AAoBA,IAAa,eAAb,MAA4C;;;;;;;CAW1C,YACE,WACA,cACA,gBAAA,KACA;
|
|
1
|
+
{"version":3,"file":"ledger.mjs","names":[],"sources":["../../../src/wallet/ledger/ledger.ts"],"sourcesContent":["import {\n encodeSecp256k1Pubkey, pubkeyToAddress,\n} from \"@cosmjs/amino\";\nimport {\n HdPath, Secp256k1, Secp256k1Signature, sha256,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Signer,\n} from \"../signer.js\";\nimport {\n defaultAddressPrefix, generateHDPath,\n} from \"../utility/index.js\";\n\n/**\n * LedgerSigner implements the logic for the Ledger device signer\n */\nexport class LedgerSigner implements Signer {\n private readonly connector: LedgerConnector;\n private readonly hdPath: HdPath;\n private readonly addressPrefix: string;\n\n /**\n * Creates a new Ledger device signer instance\n * @param {LedgerConnector} connector the Ledger connector\n * @param {number} accountIndex the desired account index\n * @param {string} addressPrefix the address prefix\n */\n constructor(\n connector: LedgerConnector,\n accountIndex: number,\n addressPrefix: string = defaultAddressPrefix,\n ) {\n this.connector = connector;\n this.hdPath = generateHDPath(accountIndex);\n this.addressPrefix = addressPrefix;\n }\n\n getAddress = async (): Promise<string> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n const compressedPubKey: Uint8Array = await this.connector.getPubkey(\n this.hdPath,\n );\n\n return pubkeyToAddress(\n encodeSecp256k1Pubkey(compressedPubKey),\n this.addressPrefix,\n );\n };\n\n getPublicKey = async (): Promise<Uint8Array> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n return this.connector.getPubkey(this.hdPath);\n };\n\n getPrivateKey = async (): Promise<Uint8Array> => {\n throw new Error(\"Ledger does not support private key exports\");\n };\n\n signData = async (data: Uint8Array): Promise<Uint8Array> => {\n if (!this.connector) {\n throw new Error(\"Ledger not connected\");\n }\n\n return this.connector.sign(data, this.hdPath);\n };\n\n verifySignature = async (\n data: Uint8Array,\n signature: Uint8Array,\n ): Promise<boolean> => {\n const publicKey = await this.getPublicKey();\n\n return Secp256k1.verifySignature(\n Secp256k1Signature.fromFixedLength(signature),\n sha256(data),\n publicKey,\n );\n };\n}\n"],"mappings":";;;;;;;;;AAoBA,IAAa,eAAb,MAA4C;;;;;;;CAW1C,YACE,WACA,cACA,gBAAA,KACA;EAde,gBAAA,MAAA,aAAA,KAAA,CAAA;EACA,gBAAA,MAAA,UAAA,KAAA,CAAA;EACA,gBAAA,MAAA,iBAAA,KAAA,CAAA;EAkBjB,gBAAA,MAAA,cAAa,YAA6B;GACxC,IAAI,CAAC,KAAK,WACR,MAAM,IAAI,MAAM,sBAAsB;GAGxC,MAAM,mBAA+B,MAAM,KAAK,UAAU,UACxD,KAAK,MACP;GAEA,OAAO,gBACL,sBAAsB,gBAAgB,GACtC,KAAK,aACP;EACF,CAAA;EAEA,gBAAA,MAAA,gBAAe,YAAiC;GAC9C,IAAI,CAAC,KAAK,WACR,MAAM,IAAI,MAAM,sBAAsB;GAGxC,OAAO,KAAK,UAAU,UAAU,KAAK,MAAM;EAC7C,CAAA;EAEA,gBAAA,MAAA,iBAAgB,YAAiC;GAC/C,MAAM,IAAI,MAAM,6CAA6C;EAC/D,CAAA;EAEA,gBAAA,MAAA,YAAW,OAAO,SAA0C;GAC1D,IAAI,CAAC,KAAK,WACR,MAAM,IAAI,MAAM,sBAAsB;GAGxC,OAAO,KAAK,UAAU,KAAK,MAAM,KAAK,MAAM;EAC9C,CAAA;EAEA,gBAAA,MAAA,mBAAkB,OAChB,MACA,cACqB;GACrB,MAAM,YAAY,MAAM,KAAK,aAAa;GAE1C,OAAO,UAAU,gBACf,mBAAmB,gBAAgB,SAAS,GAC5C,OAAO,IAAI,GACX,SACF;EACF,CAAA;EAnDE,KAAK,YAAY;EACjB,KAAK,SAAS,eAAe,YAAY;EACzC,KAAK,gBAAgB;CACvB;AAiDF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.cts","names":[],"sources":["../../src/wallet/signer.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"signer.d.cts","names":[],"sources":["../../src/wallet/signer.ts"],"mappings":";;;;;UAIiB;;;;EAIf,cAAc;;;;EAKd,gBAAgB,QAAQ;;;;EAKxB,iBAAiB,QAAQ;;;;;EAMzB,SAAS,MAAM,aAAa,QAAQ;;;;;;EAOpC,gBAAgB,MAAM,YAAY,WAAW,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.mts","names":[],"sources":["../../src/wallet/signer.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"signer.d.mts","names":[],"sources":["../../src/wallet/signer.ts"],"mappings":";;;;;UAIiB;;;;EAIf,cAAc;;;;EAKd,gBAAgB,QAAQ;;;;EAKxB,iBAAiB,QAAQ;;;;;EAMzB,SAAS,MAAM,aAAa,QAAQ;;;;;;EAOpC,gBAAgB,MAAM,YAAY,WAAW,aAAa"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { Secp256k1PubKeyType, TxSignPayload } from "./sign.cjs";
|
|
2
|
-
import { AccountWalletOption, CreateWalletOptions } from "./wallet.cjs";
|
|
2
|
+
import { AccountWalletOption, CreateWalletOptions } from "./wallet.cjs";
|
|
3
|
+
export { AccountWalletOption, CreateWalletOptions, Secp256k1PubKeyType, TxSignPayload };
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { Secp256k1PubKeyType, TxSignPayload } from "./sign.mjs";
|
|
2
|
-
import { AccountWalletOption, CreateWalletOptions } from "./wallet.mjs";
|
|
2
|
+
import { AccountWalletOption, CreateWalletOptions } from "./wallet.mjs";
|
|
3
|
+
export { AccountWalletOption, CreateWalletOptions, Secp256k1PubKeyType, TxSignPayload };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./sign.mjs";
|
|
1
|
+
import { Secp256k1PubKeyType } from "./sign.mjs";
|
|
2
2
|
import "./wallet.mjs";
|
|
3
|
-
export {};
|
|
3
|
+
export { Secp256k1PubKeyType };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.d.cts","names":[],"sources":["../../../src/wallet/types/sign.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sign.d.cts","names":[],"sources":["../../../src/wallet/types/sign.ts"],"mappings":";;;;;UAIiB;EAEf;EAGA;EAGA;EAEA;IAGE;IAEA;;EASF;EAEA;;cAGW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.d.mts","names":[],"sources":["../../../src/wallet/types/sign.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sign.d.mts","names":[],"sources":["../../../src/wallet/types/sign.ts"],"mappings":";;;;;UAIiB;EAEf;EAGA;EAGA;EAEA;IAGE;IAEA;;EASF;EAEA;;cAGW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.cts","names":[],"sources":["../../../src/wallet/types/wallet.ts"],"mappings":";UAAiB
|
|
1
|
+
{"version":3,"file":"wallet.d.cts","names":[],"sources":["../../../src/wallet/types/wallet.ts"],"mappings":";UAAiB;EAEf;EAEA;;KAGU,sBAAsB,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.mts","names":[],"sources":["../../../src/wallet/types/wallet.ts"],"mappings":";UAAiB
|
|
1
|
+
{"version":3,"file":"wallet.d.mts","names":[],"sources":["../../../src/wallet/types/wallet.ts"],"mappings":";UAAiB;EAEf;EAEA;;KAGU,sBAAsB,KAAK"}
|
|
@@ -1 +1,8 @@
|
|
|
1
|
-
require("./utility.cjs");
|
|
1
|
+
const require_utility = require("./utility.cjs");
|
|
2
|
+
exports.defaultAddressPrefix = require_utility.defaultAddressPrefix;
|
|
3
|
+
exports.encodeCharacterSet = require_utility.encodeCharacterSet;
|
|
4
|
+
exports.generateEntropy = require_utility.generateEntropy;
|
|
5
|
+
exports.generateHDPath = require_utility.generateHDPath;
|
|
6
|
+
exports.generateKeyPair = require_utility.generateKeyPair;
|
|
7
|
+
exports.sortedJsonStringify = require_utility.sortedJsonStringify;
|
|
8
|
+
exports.stringToUTF8 = require_utility.stringToUTF8;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.cjs";
|
|
1
|
+
import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.cjs";
|
|
2
|
+
export { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.mjs";
|
|
1
|
+
import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.mjs";
|
|
2
|
+
export { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./utility.mjs";
|
|
2
|
-
export {};
|
|
1
|
+
import { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility.mjs";
|
|
2
|
+
export { defaultAddressPrefix, encodeCharacterSet, generateEntropy, generateHDPath, generateKeyPair, sortedJsonStringify, stringToUTF8 };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
2
2
|
let _cosmjs_crypto = require("@cosmjs/crypto");
|
|
3
3
|
let crypto = require("crypto");
|
|
4
|
-
crypto = require_runtime.__toESM(crypto);
|
|
4
|
+
crypto = require_runtime.__toESM(crypto, 1);
|
|
5
5
|
//#region src/wallet/utility/utility.ts
|
|
6
6
|
/**
|
|
7
7
|
* Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.cjs","names":["Slip10RawIndex","Bip39","EnglishMnemonic","Slip10","Slip10Curve","Secp256k1"],"sources":["../../../src/wallet/utility/utility.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Bip39,\n EnglishMnemonic,\n HdPath,\n Secp256k1,\n Slip10,\n Slip10Curve,\n Slip10RawIndex,\n} from \"@cosmjs/crypto\";\nimport crypto from \"crypto\";\n\n/**\n * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',\n * where 'i' is the account index\n * @param {number} [index=0] the account index\n */\nexport const generateHDPath = (index?: number): HdPath => {\n return [Slip10RawIndex.hardened(44), Slip10RawIndex.hardened(118), Slip10RawIndex.hardened(0), Slip10RawIndex.normal(0), Slip10RawIndex.normal(index ? index : 0)];\n};\n\n/**\n * Generates random entropy of the specified size (in B)\n * @param {number} [size=32] the entropy size in bytes\n */\nexport const generateEntropy = (size?: number): Uint8Array => {\n const array = new Uint8Array(size ? size : 32);\n\n // Generate random data\n crypto.randomFillSync(array);\n\n return array;\n};\n\ninterface keyPair {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\n/**\n * Generates a new Secp256k1 key-pair using\n * the provided English mnemonic and account index\n * @param {string} mnemonic the English mnemonic\n * @param {number} [accountIndex=0] the account index\n */\nexport const generateKeyPair = async (\n mnemonic: string,\n accountIndex?: number,\n): Promise<keyPair> => {\n // Generate the seed\n const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(mnemonic));\n\n // Derive the private key\n const {\n privkey: privateKey,\n } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n generateHDPath(accountIndex),\n );\n\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n return {\n publicKey: publicKey,\n privateKey: privateKey,\n };\n};\n\n// Address prefix for TM2 networks\nexport const defaultAddressPrefix = \"g\";\n\n/**\n * Encodes a string into a Uint8Array\n * @param {string} str the string to be encoded\n */\nexport const stringToUTF8 = (str: string): Uint8Array => {\n return new TextEncoder().encode(str);\n};\n\n/**\n * Escapes <,>,& in string.\n * Golang's json marshaller escapes <,>,& by default.\n * https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/encoding/json/encode.go;l=46-53\n */\nexport function encodeCharacterSet(data: string) {\n return data\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\nfunction sortedObject(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(sortedObject);\n }\n const sortedKeys = Object.keys(obj).sort();\n const result: Record<string, any> = {\n };\n // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code\n sortedKeys.forEach((key) => {\n result[key] = sortedObject(obj[key]);\n });\n return result;\n}\n\n/** Returns a JSON string with objects sorted by key */\n\nexport function sortedJsonStringify(obj: any): string {\n return JSON.stringify(sortedObject(obj));\n}\n"],"mappings":";;;;;;;;;;AAiBA,MAAa,kBAAkB,UAA2B;
|
|
1
|
+
{"version":3,"file":"utility.cjs","names":["Slip10RawIndex","Bip39","EnglishMnemonic","Slip10","Slip10Curve","Secp256k1"],"sources":["../../../src/wallet/utility/utility.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Bip39,\n EnglishMnemonic,\n HdPath,\n Secp256k1,\n Slip10,\n Slip10Curve,\n Slip10RawIndex,\n} from \"@cosmjs/crypto\";\nimport crypto from \"crypto\";\n\n/**\n * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',\n * where 'i' is the account index\n * @param {number} [index=0] the account index\n */\nexport const generateHDPath = (index?: number): HdPath => {\n return [Slip10RawIndex.hardened(44), Slip10RawIndex.hardened(118), Slip10RawIndex.hardened(0), Slip10RawIndex.normal(0), Slip10RawIndex.normal(index ? index : 0)];\n};\n\n/**\n * Generates random entropy of the specified size (in B)\n * @param {number} [size=32] the entropy size in bytes\n */\nexport const generateEntropy = (size?: number): Uint8Array => {\n const array = new Uint8Array(size ? size : 32);\n\n // Generate random data\n crypto.randomFillSync(array);\n\n return array;\n};\n\ninterface keyPair {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\n/**\n * Generates a new Secp256k1 key-pair using\n * the provided English mnemonic and account index\n * @param {string} mnemonic the English mnemonic\n * @param {number} [accountIndex=0] the account index\n */\nexport const generateKeyPair = async (\n mnemonic: string,\n accountIndex?: number,\n): Promise<keyPair> => {\n // Generate the seed\n const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(mnemonic));\n\n // Derive the private key\n const {\n privkey: privateKey,\n } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n generateHDPath(accountIndex),\n );\n\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n return {\n publicKey: publicKey,\n privateKey: privateKey,\n };\n};\n\n// Address prefix for TM2 networks\nexport const defaultAddressPrefix = \"g\";\n\n/**\n * Encodes a string into a Uint8Array\n * @param {string} str the string to be encoded\n */\nexport const stringToUTF8 = (str: string): Uint8Array => {\n return new TextEncoder().encode(str);\n};\n\n/**\n * Escapes <,>,& in string.\n * Golang's json marshaller escapes <,>,& by default.\n * https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/encoding/json/encode.go;l=46-53\n */\nexport function encodeCharacterSet(data: string) {\n return data\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\nfunction sortedObject(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(sortedObject);\n }\n const sortedKeys = Object.keys(obj).sort();\n const result: Record<string, any> = {\n };\n // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code\n sortedKeys.forEach((key) => {\n result[key] = sortedObject(obj[key]);\n });\n return result;\n}\n\n/** Returns a JSON string with objects sorted by key */\n\nexport function sortedJsonStringify(obj: any): string {\n return JSON.stringify(sortedObject(obj));\n}\n"],"mappings":";;;;;;;;;;AAiBA,MAAa,kBAAkB,UAA2B;CACxD,OAAO;EAACA,eAAAA,eAAe,SAAS,EAAE;EAAGA,eAAAA,eAAe,SAAS,GAAG;EAAGA,eAAAA,eAAe,SAAS,CAAC;EAAGA,eAAAA,eAAe,OAAO,CAAC;EAAGA,eAAAA,eAAe,OAAO,QAAQ,QAAQ,CAAC;CAAC;AACnK;;;;;AAMA,MAAa,mBAAmB,SAA8B;CAC5D,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO,EAAE;CAG7C,OAAA,QAAO,eAAe,KAAK;CAE3B,OAAO;AACT;;;;;;;AAaA,MAAa,kBAAkB,OAC7B,UACA,iBACqB;CAErB,MAAM,OAAO,MAAMC,eAAAA,MAAM,eAAe,IAAIC,eAAAA,gBAAgB,QAAQ,CAAC;CAGrE,MAAM,EACJ,SAAS,eACPC,eAAAA,OAAO,WACTC,eAAAA,YAAY,WACZ,MACA,eAAe,YAAY,CAC7B;CAGA,MAAM,EACJ,QAAQ,cACN,MAAMC,eAAAA,UAAU,YAAY,UAAU;CAE1C,OAAO;EACM;EACC;CACd;AACF;AAGA,MAAa,uBAAuB;;;;;AAMpC,MAAa,gBAAgB,QAA4B;CACvD,OAAO,IAAI,YAAY,CAAC,CAAC,OAAO,GAAG;AACrC;;;;;;AAOA,SAAgB,mBAAmB,MAAc;CAC/C,OAAO,KACJ,QAAQ,MAAM,SAAS,CAAC,CACxB,QAAQ,MAAM,SAAS,CAAC,CACxB,QAAQ,MAAM,SAAS;AAC5B;AAEA,SAAS,aAAa,KAAe;CACnC,IAAI,OAAO,QAAQ,YAAY,QAAQ,MACrC,OAAO;CAET,IAAI,MAAM,QAAQ,GAAG,GACnB,OAAO,IAAI,IAAI,YAAY;CAE7B,MAAM,aAAa,OAAO,KAAK,GAAG,CAAC,CAAC,KAAK;CACzC,MAAM,SAA8B,CACpC;CAEA,WAAW,SAAS,QAAQ;EAC1B,OAAO,OAAO,aAAa,IAAI,IAAI;CACrC,CAAC;CACD,OAAO;AACT;;AAIA,SAAgB,oBAAoB,KAAkB;CACpD,OAAO,KAAK,UAAU,aAAa,GAAG,CAAC;AACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.d.cts","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"utility.d.cts","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"mappings":";;;;;;;cAiBa,iBAAkB,mBAAiB;;;;;cAQnC,kBAAmB,kBAAgB;UAStC;EACR,YAAY;EACZ,WAAW;;;;;;;;cASA,kBACX,kBACA,0BACC,QAAQ;cAyBE;;;;;cAMA,eAAgB,gBAAc;;;;;;iBAS3B,mBAAmB;;iBA0BnB,oBAAoB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.d.mts","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"utility.d.mts","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"mappings":";;;;;;;cAiBa,iBAAkB,mBAAiB;;;;;cAQnC,kBAAmB,kBAAgB;UAStC;EACR,YAAY;EACZ,WAAW;;;;;;;;cASA,kBACX,kBACA,0BACC,QAAQ;cAyBE;;;;;cAMA,eAAgB,gBAAc;;;;;;iBAS3B,mBAAmB;;iBA0BnB,oBAAoB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.mjs","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Bip39,\n EnglishMnemonic,\n HdPath,\n Secp256k1,\n Slip10,\n Slip10Curve,\n Slip10RawIndex,\n} from \"@cosmjs/crypto\";\nimport crypto from \"crypto\";\n\n/**\n * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',\n * where 'i' is the account index\n * @param {number} [index=0] the account index\n */\nexport const generateHDPath = (index?: number): HdPath => {\n return [Slip10RawIndex.hardened(44), Slip10RawIndex.hardened(118), Slip10RawIndex.hardened(0), Slip10RawIndex.normal(0), Slip10RawIndex.normal(index ? index : 0)];\n};\n\n/**\n * Generates random entropy of the specified size (in B)\n * @param {number} [size=32] the entropy size in bytes\n */\nexport const generateEntropy = (size?: number): Uint8Array => {\n const array = new Uint8Array(size ? size : 32);\n\n // Generate random data\n crypto.randomFillSync(array);\n\n return array;\n};\n\ninterface keyPair {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\n/**\n * Generates a new Secp256k1 key-pair using\n * the provided English mnemonic and account index\n * @param {string} mnemonic the English mnemonic\n * @param {number} [accountIndex=0] the account index\n */\nexport const generateKeyPair = async (\n mnemonic: string,\n accountIndex?: number,\n): Promise<keyPair> => {\n // Generate the seed\n const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(mnemonic));\n\n // Derive the private key\n const {\n privkey: privateKey,\n } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n generateHDPath(accountIndex),\n );\n\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n return {\n publicKey: publicKey,\n privateKey: privateKey,\n };\n};\n\n// Address prefix for TM2 networks\nexport const defaultAddressPrefix = \"g\";\n\n/**\n * Encodes a string into a Uint8Array\n * @param {string} str the string to be encoded\n */\nexport const stringToUTF8 = (str: string): Uint8Array => {\n return new TextEncoder().encode(str);\n};\n\n/**\n * Escapes <,>,& in string.\n * Golang's json marshaller escapes <,>,& by default.\n * https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/encoding/json/encode.go;l=46-53\n */\nexport function encodeCharacterSet(data: string) {\n return data\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\nfunction sortedObject(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(sortedObject);\n }\n const sortedKeys = Object.keys(obj).sort();\n const result: Record<string, any> = {\n };\n // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code\n sortedKeys.forEach((key) => {\n result[key] = sortedObject(obj[key]);\n });\n return result;\n}\n\n/** Returns a JSON string with objects sorted by key */\n\nexport function sortedJsonStringify(obj: any): string {\n return JSON.stringify(sortedObject(obj));\n}\n"],"mappings":";;;;;;;;AAiBA,MAAa,kBAAkB,UAA2B;
|
|
1
|
+
{"version":3,"file":"utility.mjs","names":[],"sources":["../../../src/wallet/utility/utility.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Bip39,\n EnglishMnemonic,\n HdPath,\n Secp256k1,\n Slip10,\n Slip10Curve,\n Slip10RawIndex,\n} from \"@cosmjs/crypto\";\nimport crypto from \"crypto\";\n\n/**\n * Generates the HD path, for the specified index, in the form 'm/44'/118'/0'/0/i',\n * where 'i' is the account index\n * @param {number} [index=0] the account index\n */\nexport const generateHDPath = (index?: number): HdPath => {\n return [Slip10RawIndex.hardened(44), Slip10RawIndex.hardened(118), Slip10RawIndex.hardened(0), Slip10RawIndex.normal(0), Slip10RawIndex.normal(index ? index : 0)];\n};\n\n/**\n * Generates random entropy of the specified size (in B)\n * @param {number} [size=32] the entropy size in bytes\n */\nexport const generateEntropy = (size?: number): Uint8Array => {\n const array = new Uint8Array(size ? size : 32);\n\n // Generate random data\n crypto.randomFillSync(array);\n\n return array;\n};\n\ninterface keyPair {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\n/**\n * Generates a new Secp256k1 key-pair using\n * the provided English mnemonic and account index\n * @param {string} mnemonic the English mnemonic\n * @param {number} [accountIndex=0] the account index\n */\nexport const generateKeyPair = async (\n mnemonic: string,\n accountIndex?: number,\n): Promise<keyPair> => {\n // Generate the seed\n const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(mnemonic));\n\n // Derive the private key\n const {\n privkey: privateKey,\n } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n generateHDPath(accountIndex),\n );\n\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n return {\n publicKey: publicKey,\n privateKey: privateKey,\n };\n};\n\n// Address prefix for TM2 networks\nexport const defaultAddressPrefix = \"g\";\n\n/**\n * Encodes a string into a Uint8Array\n * @param {string} str the string to be encoded\n */\nexport const stringToUTF8 = (str: string): Uint8Array => {\n return new TextEncoder().encode(str);\n};\n\n/**\n * Escapes <,>,& in string.\n * Golang's json marshaller escapes <,>,& by default.\n * https://cs.opensource.google/go/go/+/refs/tags/go1.20.6:src/encoding/json/encode.go;l=46-53\n */\nexport function encodeCharacterSet(data: string) {\n return data\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\nfunction sortedObject(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(sortedObject);\n }\n const sortedKeys = Object.keys(obj).sort();\n const result: Record<string, any> = {\n };\n // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code\n sortedKeys.forEach((key) => {\n result[key] = sortedObject(obj[key]);\n });\n return result;\n}\n\n/** Returns a JSON string with objects sorted by key */\n\nexport function sortedJsonStringify(obj: any): string {\n return JSON.stringify(sortedObject(obj));\n}\n"],"mappings":";;;;;;;;AAiBA,MAAa,kBAAkB,UAA2B;CACxD,OAAO;EAAC,eAAe,SAAS,EAAE;EAAG,eAAe,SAAS,GAAG;EAAG,eAAe,SAAS,CAAC;EAAG,eAAe,OAAO,CAAC;EAAG,eAAe,OAAO,QAAQ,QAAQ,CAAC;CAAC;AACnK;;;;;AAMA,MAAa,mBAAmB,SAA8B;CAC5D,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO,EAAE;CAG7C,OAAO,eAAe,KAAK;CAE3B,OAAO;AACT;;;;;;;AAaA,MAAa,kBAAkB,OAC7B,UACA,iBACqB;CAErB,MAAM,OAAO,MAAM,MAAM,eAAe,IAAI,gBAAgB,QAAQ,CAAC;CAGrE,MAAM,EACJ,SAAS,eACP,OAAO,WACT,YAAY,WACZ,MACA,eAAe,YAAY,CAC7B;CAGA,MAAM,EACJ,QAAQ,cACN,MAAM,UAAU,YAAY,UAAU;CAE1C,OAAO;EACM;EACC;CACd;AACF;AAGA,MAAa,uBAAuB;;;;;AAMpC,MAAa,gBAAgB,QAA4B;CACvD,OAAO,IAAI,YAAY,CAAC,CAAC,OAAO,GAAG;AACrC;;;;;;AAOA,SAAgB,mBAAmB,MAAc;CAC/C,OAAO,KACJ,QAAQ,MAAM,SAAS,CAAC,CACxB,QAAQ,MAAM,SAAS,CAAC,CACxB,QAAQ,MAAM,SAAS;AAC5B;AAEA,SAAS,aAAa,KAAe;CACnC,IAAI,OAAO,QAAQ,YAAY,QAAQ,MACrC,OAAO;CAET,IAAI,MAAM,QAAQ,GAAG,GACnB,OAAO,IAAI,IAAI,YAAY;CAE7B,MAAM,aAAa,OAAO,KAAK,GAAG,CAAC,CAAC,KAAK;CACzC,MAAM,SAA8B,CACpC;CAEA,WAAW,SAAS,QAAQ;EAC1B,OAAO,OAAO,aAAa,IAAI,IAAI;CACrC,CAAC;CACD,OAAO;AACT;;AAIA,SAAgB,oBAAoB,KAAkB;CACpD,OAAO,KAAK,UAAU,aAAa,GAAG,CAAC;AACzC"}
|
package/dist/wallet/wallet.cjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
1
|
const require_tx = require("../proto/tm2/tx.cjs");
|
|
3
2
|
require("../proto/index.cjs");
|
|
4
|
-
const require_defineProperty = require("../_virtual/_@oxc-project_runtime@0.
|
|
3
|
+
const require_defineProperty = require("../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/defineProperty.cjs");
|
|
5
4
|
const require_requests_utility = require("../provider/utility/requests.utility.cjs");
|
|
6
5
|
require("../provider/index.cjs");
|
|
7
6
|
const require_utility = require("./utility/utility.cjs");
|
|
@@ -21,7 +20,7 @@ var _Wallet;
|
|
|
21
20
|
*/
|
|
22
21
|
var Wallet = class {
|
|
23
22
|
constructor() {
|
|
24
|
-
require_defineProperty.
|
|
23
|
+
require_defineProperty.default(
|
|
25
24
|
this,
|
|
26
25
|
/**
|
|
27
26
|
* Connects the wallet to the specified {@link Provider}
|
|
@@ -32,7 +31,7 @@ var Wallet = class {
|
|
|
32
31
|
this.provider = provider;
|
|
33
32
|
}
|
|
34
33
|
);
|
|
35
|
-
require_defineProperty.
|
|
34
|
+
require_defineProperty.default(
|
|
36
35
|
this,
|
|
37
36
|
/**
|
|
38
37
|
* Fetches the address associated with the wallet
|
|
@@ -42,7 +41,7 @@ var Wallet = class {
|
|
|
42
41
|
return this.signer.getAddress();
|
|
43
42
|
}
|
|
44
43
|
);
|
|
45
|
-
require_defineProperty.
|
|
44
|
+
require_defineProperty.default(
|
|
46
45
|
this,
|
|
47
46
|
/**
|
|
48
47
|
* Fetches the account sequence for the wallet
|
|
@@ -55,7 +54,7 @@ var Wallet = class {
|
|
|
55
54
|
return this.provider.getAccountSequence(address, height);
|
|
56
55
|
}
|
|
57
56
|
);
|
|
58
|
-
require_defineProperty.
|
|
57
|
+
require_defineProperty.default(
|
|
59
58
|
this,
|
|
60
59
|
/**
|
|
61
60
|
* Fetches the account number for the wallet. Errors out if the
|
|
@@ -69,7 +68,7 @@ var Wallet = class {
|
|
|
69
68
|
return this.provider.getAccountNumber(address, height);
|
|
70
69
|
}
|
|
71
70
|
);
|
|
72
|
-
require_defineProperty.
|
|
71
|
+
require_defineProperty.default(
|
|
73
72
|
this,
|
|
74
73
|
/**
|
|
75
74
|
* Fetches the account balance for the specific denomination
|
|
@@ -82,7 +81,7 @@ var Wallet = class {
|
|
|
82
81
|
return this.provider.getBalance(address, denomination ? denomination : "ugnot");
|
|
83
82
|
}
|
|
84
83
|
);
|
|
85
|
-
require_defineProperty.
|
|
84
|
+
require_defineProperty.default(
|
|
86
85
|
this,
|
|
87
86
|
/**
|
|
88
87
|
* Fetches the current (recommended) average gas price
|
|
@@ -93,7 +92,7 @@ var Wallet = class {
|
|
|
93
92
|
return this.provider.getGasPrice();
|
|
94
93
|
}
|
|
95
94
|
);
|
|
96
|
-
require_defineProperty.
|
|
95
|
+
require_defineProperty.default(
|
|
97
96
|
this,
|
|
98
97
|
/**
|
|
99
98
|
* Estimates the gas limit for the transaction
|
|
@@ -105,7 +104,7 @@ var Wallet = class {
|
|
|
105
104
|
return this.provider.estimateGas(tx);
|
|
106
105
|
}
|
|
107
106
|
);
|
|
108
|
-
require_defineProperty.
|
|
107
|
+
require_defineProperty.default(
|
|
109
108
|
this,
|
|
110
109
|
/**
|
|
111
110
|
* Returns the connected provider, if any
|
|
@@ -115,7 +114,7 @@ var Wallet = class {
|
|
|
115
114
|
return this.provider;
|
|
116
115
|
}
|
|
117
116
|
);
|
|
118
|
-
require_defineProperty.
|
|
117
|
+
require_defineProperty.default(
|
|
119
118
|
this,
|
|
120
119
|
/**
|
|
121
120
|
* Generates a transaction signature, and appends it to the transaction
|
|
@@ -157,7 +156,8 @@ var Wallet = class {
|
|
|
157
156
|
type_url: require_sign.Secp256k1PubKeyType,
|
|
158
157
|
value: require_tx.PubKeySecp256k1.encode(wrappedKey).finish()
|
|
159
158
|
},
|
|
160
|
-
signature: await this.getSigner().signData(signBytes)
|
|
159
|
+
signature: await this.getSigner().signData(signBytes),
|
|
160
|
+
session_addr: ""
|
|
161
161
|
};
|
|
162
162
|
return {
|
|
163
163
|
...tx,
|
|
@@ -165,7 +165,7 @@ var Wallet = class {
|
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
167
|
);
|
|
168
|
-
require_defineProperty.
|
|
168
|
+
require_defineProperty.default(
|
|
169
169
|
this,
|
|
170
170
|
/**
|
|
171
171
|
* Returns the associated signer
|
|
@@ -191,30 +191,30 @@ var Wallet = class {
|
|
|
191
191
|
}
|
|
192
192
|
};
|
|
193
193
|
_Wallet = Wallet;
|
|
194
|
-
require_defineProperty.
|
|
194
|
+
require_defineProperty.default(Wallet, "createRandom", async (options) => {
|
|
195
195
|
const { publicKey, privateKey } = await require_utility.generateKeyPair(_cosmjs_crypto.Bip39.encode(require_utility.generateEntropy()).toString(), 0);
|
|
196
196
|
const wallet = new _Wallet();
|
|
197
197
|
wallet.signer = new require_key.KeySigner(privateKey, _cosmjs_crypto.Secp256k1.compressPubkey(publicKey), options?.addressPrefix);
|
|
198
198
|
return wallet;
|
|
199
199
|
});
|
|
200
|
-
require_defineProperty.
|
|
200
|
+
require_defineProperty.default(Wallet, "fromSigner", async (signer) => {
|
|
201
201
|
const wallet = new _Wallet();
|
|
202
202
|
wallet.signer = signer;
|
|
203
203
|
return wallet;
|
|
204
204
|
});
|
|
205
|
-
require_defineProperty.
|
|
205
|
+
require_defineProperty.default(Wallet, "fromMnemonic", async (mnemonic, options) => {
|
|
206
206
|
const { publicKey, privateKey } = await require_utility.generateKeyPair(mnemonic, options?.accountIndex);
|
|
207
207
|
const wallet = new _Wallet();
|
|
208
208
|
wallet.signer = new require_key.KeySigner(privateKey, _cosmjs_crypto.Secp256k1.compressPubkey(publicKey), options?.addressPrefix);
|
|
209
209
|
return wallet;
|
|
210
210
|
});
|
|
211
|
-
require_defineProperty.
|
|
211
|
+
require_defineProperty.default(Wallet, "fromPrivateKey", async (privateKey, options) => {
|
|
212
212
|
const { pubkey: publicKey } = await _cosmjs_crypto.Secp256k1.makeKeypair(privateKey);
|
|
213
213
|
const wallet = new _Wallet();
|
|
214
214
|
wallet.signer = new require_key.KeySigner(privateKey, _cosmjs_crypto.Secp256k1.compressPubkey(publicKey), options?.addressPrefix);
|
|
215
215
|
return wallet;
|
|
216
216
|
});
|
|
217
|
-
require_defineProperty.
|
|
217
|
+
require_defineProperty.default(Wallet, "fromLedger", (connector, options) => {
|
|
218
218
|
const wallet = new _Wallet();
|
|
219
219
|
wallet.signer = new require_ledger.LedgerSigner(connector, options?.accountIndex ?? 0, options?.addressPrefix);
|
|
220
220
|
return wallet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.cjs","names":["stringToUTF8","encodeCharacterSet","sortedJsonStringify","Secp256k1PubKeyType","PubKeySecp256k1","uint8ArrayToBase64","Tx","generateKeyPair","Bip39","generateEntropy","Wallet","KeySigner","Secp256k1","LedgerSigner"],"sources":["../../src/wallet/wallet.ts"],"sourcesContent":["import {\n Bip39, Secp256k1,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Any, PubKeySecp256k1, Tx, TxSignature,\n} from \"../proto/index.js\";\nimport {\n BroadcastTransactionMap,\n Provider,\n Status,\n uint8ArrayToBase64,\n} from \"../provider/index.js\";\nimport {\n KeySigner,\n} from \"./key/index.js\";\nimport {\n LedgerSigner,\n} from \"./ledger/index.js\";\nimport {\n Signer,\n} from \"./signer.js\";\nimport {\n AccountWalletOption,\n CreateWalletOptions,\n Secp256k1PubKeyType,\n TxSignPayload,\n} from \"./types/index.js\";\nimport {\n encodeCharacterSet,\n generateEntropy,\n generateKeyPair,\n stringToUTF8,\n} from \"./utility/index.js\";\nimport {\n sortedJsonStringify,\n} from \"./utility/index.js\";\nexport interface SignTransactionOptions {\n accountNumber?: string\n sequence?: string\n}\n\n/**\n * Wallet is a single account abstraction\n * that can interact with the blockchain\n */\nexport class Wallet {\n protected declare provider: Provider;\n protected declare signer: Signer;\n\n /**\n * Connects the wallet to the specified {@link Provider}\n * @param {Provider} provider the active {@link Provider}, if any\n */\n connect = (provider: Provider) => {\n this.provider = provider;\n };\n\n // Wallet initialization //\n\n /**\n * Generates a private key-based wallet, using a random seed\n * @param {AccountWalletOption} options the account options\n */\n static createRandom = async (\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n Bip39.encode(generateEntropy()).toString(),\n 0,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a custom signer-based wallet\n * @param {Signer} signer the custom signer implementing the Signer interface\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromSigner = async (signer: Signer): Promise<Wallet> => {\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = signer;\n\n return wallet;\n };\n\n /**\n * Generates a bip39 mnemonic-based wallet\n * @param {string} mnemonic the bip39 mnemonic\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromMnemonic = async (\n mnemonic: string,\n options?: CreateWalletOptions,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n mnemonic,\n options?.accountIndex,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a private key-based wallet\n * @param {string} privateKey the private key\n * @param {AccountWalletOption} options the account options\n */\n static fromPrivateKey = async (\n privateKey: Uint8Array,\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Creates a Ledger-based wallet\n * @param {LedgerConnector} connector the Ledger device connector\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromLedger = (\n connector: LedgerConnector,\n options?: CreateWalletOptions,\n ): Wallet => {\n const wallet: Wallet = new Wallet();\n\n wallet.signer = new LedgerSigner(\n connector,\n options?.accountIndex ?? 0,\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n // Account manipulation //\n\n /**\n * Fetches the address associated with the wallet\n */\n getAddress = (): Promise<string> => {\n return this.signer.getAddress();\n };\n\n /**\n * Fetches the account sequence for the wallet\n * @param {number} [height=latest] the block height\n */\n getAccountSequence = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountSequence(address, height);\n };\n\n /**\n * Fetches the account number for the wallet. Errors out if the\n * account is not initialized\n * @param {number} [height=latest] the block height\n */\n getAccountNumber = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountNumber(address, height);\n };\n\n /**\n * Fetches the account balance for the specific denomination\n * @param {string} [denomination=ugnot] the fund denomination\n */\n getBalance = async (denomination?: string): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getBalance(\n address,\n denomination ? denomination : \"ugnot\",\n );\n };\n\n /**\n * Fetches the current (recommended) average gas price\n */\n getGasPrice = async (): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.getGasPrice();\n };\n\n /**\n * Estimates the gas limit for the transaction\n * @param {Tx} tx the transaction that needs estimating\n */\n estimateGas = async (tx: Tx): Promise<bigint> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.estimateGas(tx);\n };\n\n /**\n * Returns the connected provider, if any\n */\n getProvider = (): Provider => {\n return this.provider;\n };\n\n /**\n * Generates a transaction signature, and appends it to the transaction\n * @param {Tx} tx the transaction to be signed\n * @param {(messages: Any[]) => any[]} decodeTxMessages tx message decode callback\n * that should expand the concrete message fields into an object. Required because\n * the transaction sign bytes are generated using sorted JSON, which requires\n * encoded message values to be decoded for sorting\n */\n signTransaction = async (\n tx: Tx,\n decodeTxMessages: (messages: Any[]) => unknown[],\n opts?: SignTransactionOptions,\n ): Promise<Tx> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Make sure the tx fee is initialized\n if (!tx.fee) {\n throw new Error(\"invalid transaction fee provided\");\n }\n\n // Extract the relevant chain data\n const status: Status = await this.provider.getStatus();\n const chainID: string = status.node_info.network;\n\n // Extract the relevant account data\n let accountNumber = opts?.accountNumber;\n let accountSequence = opts?.sequence;\n if (accountNumber === undefined || accountSequence === undefined) {\n const address: string = await this.getAddress();\n const account = await this.provider.getAccount(address);\n if (accountNumber === undefined) {\n accountNumber = account.BaseAccount.account_number;\n }\n if (accountSequence === undefined) {\n accountSequence = account.BaseAccount.sequence;\n }\n }\n const publicKey: Uint8Array = await this.signer.getPublicKey();\n\n // Create the signature payload\n const signPayload: TxSignPayload = {\n chain_id: chainID,\n account_number: accountNumber,\n sequence: accountSequence,\n fee: {\n gas_fee: tx.fee.gas_fee,\n gas_wanted: tx.fee.gas_wanted.toString(10),\n },\n msgs: decodeTxMessages(tx.messages), // unrolled message objects\n memo: tx.memo,\n };\n\n // The TM2 node does signature verification using\n // a sorted JSON object, so the payload needs to be sorted\n // before signing\n const signBytes: Uint8Array = stringToUTF8(\n encodeCharacterSet(sortedJsonStringify(signPayload)),\n );\n\n // The public key needs to be encoded using protobuf for Amino\n const wrappedKey: PubKeySecp256k1 = {\n key: publicKey,\n };\n\n // Generate the signature\n const txSignature: TxSignature = {\n pub_key: {\n type_url: Secp256k1PubKeyType,\n value: PubKeySecp256k1.encode(wrappedKey).finish(),\n },\n signature: await this.getSigner().signData(signBytes),\n };\n\n // Append the signature\n return {\n ...tx,\n signatures: [...tx.signatures, txSignature],\n };\n };\n\n /**\n * Encodes and sends the transaction. If the type of endpoint\n * is a broadcast commit, waits for the transaction to be committed to the chain.\n * The transaction needs to be signed beforehand.\n * Returns the transaction hash (base-64)\n * @param {Tx} tx the signed transaction\n * @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)\n */\n async sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: Tx,\n endpoint: K,\n ): Promise<BroadcastTransactionMap[K][\"result\"]> {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Encode the transaction to base-64\n const encodedTx: string = uint8ArrayToBase64(Tx.encode(tx).finish());\n\n // Send the encoded transaction\n return this.provider.sendTransaction(encodedTx, endpoint);\n }\n\n /**\n * Returns the associated signer\n */\n getSigner = (): Signer => {\n return this.signer;\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wallet.cjs","names":["stringToUTF8","encodeCharacterSet","sortedJsonStringify","Secp256k1PubKeyType","PubKeySecp256k1","uint8ArrayToBase64","Tx","generateKeyPair","Bip39","generateEntropy","Wallet","KeySigner","Secp256k1","LedgerSigner"],"sources":["../../src/wallet/wallet.ts"],"sourcesContent":["import {\n Bip39, Secp256k1,\n} from \"@cosmjs/crypto\";\nimport {\n LedgerConnector,\n} from \"@cosmjs/ledger-amino\";\n\nimport {\n Any, PubKeySecp256k1, Tx, TxSignature,\n} from \"../proto/index.js\";\nimport {\n BroadcastTransactionMap,\n Provider,\n Status,\n uint8ArrayToBase64,\n} from \"../provider/index.js\";\nimport {\n KeySigner,\n} from \"./key/index.js\";\nimport {\n LedgerSigner,\n} from \"./ledger/index.js\";\nimport {\n Signer,\n} from \"./signer.js\";\nimport {\n AccountWalletOption,\n CreateWalletOptions,\n Secp256k1PubKeyType,\n TxSignPayload,\n} from \"./types/index.js\";\nimport {\n encodeCharacterSet,\n generateEntropy,\n generateKeyPair,\n stringToUTF8,\n} from \"./utility/index.js\";\nimport {\n sortedJsonStringify,\n} from \"./utility/index.js\";\nexport interface SignTransactionOptions {\n accountNumber?: string\n sequence?: string\n}\n\n/**\n * Wallet is a single account abstraction\n * that can interact with the blockchain\n */\nexport class Wallet {\n protected declare provider: Provider;\n protected declare signer: Signer;\n\n /**\n * Connects the wallet to the specified {@link Provider}\n * @param {Provider} provider the active {@link Provider}, if any\n */\n connect = (provider: Provider) => {\n this.provider = provider;\n };\n\n // Wallet initialization //\n\n /**\n * Generates a private key-based wallet, using a random seed\n * @param {AccountWalletOption} options the account options\n */\n static createRandom = async (\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n Bip39.encode(generateEntropy()).toString(),\n 0,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a custom signer-based wallet\n * @param {Signer} signer the custom signer implementing the Signer interface\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromSigner = async (signer: Signer): Promise<Wallet> => {\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = signer;\n\n return wallet;\n };\n\n /**\n * Generates a bip39 mnemonic-based wallet\n * @param {string} mnemonic the bip39 mnemonic\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromMnemonic = async (\n mnemonic: string,\n options?: CreateWalletOptions,\n ): Promise<Wallet> => {\n const {\n publicKey, privateKey,\n } = await generateKeyPair(\n mnemonic,\n options?.accountIndex,\n );\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Generates a private key-based wallet\n * @param {string} privateKey the private key\n * @param {AccountWalletOption} options the account options\n */\n static fromPrivateKey = async (\n privateKey: Uint8Array,\n options?: AccountWalletOption,\n ): Promise<Wallet> => {\n // Derive the public key\n const {\n pubkey: publicKey,\n } = await Secp256k1.makeKeypair(privateKey);\n\n // Initialize the wallet\n const wallet: Wallet = new Wallet();\n wallet.signer = new KeySigner(\n privateKey,\n Secp256k1.compressPubkey(publicKey),\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n /**\n * Creates a Ledger-based wallet\n * @param {LedgerConnector} connector the Ledger device connector\n * @param {CreateWalletOptions} options the wallet generation options\n */\n static fromLedger = (\n connector: LedgerConnector,\n options?: CreateWalletOptions,\n ): Wallet => {\n const wallet: Wallet = new Wallet();\n\n wallet.signer = new LedgerSigner(\n connector,\n options?.accountIndex ?? 0,\n options?.addressPrefix,\n );\n\n return wallet;\n };\n\n // Account manipulation //\n\n /**\n * Fetches the address associated with the wallet\n */\n getAddress = (): Promise<string> => {\n return this.signer.getAddress();\n };\n\n /**\n * Fetches the account sequence for the wallet\n * @param {number} [height=latest] the block height\n */\n getAccountSequence = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountSequence(address, height);\n };\n\n /**\n * Fetches the account number for the wallet. Errors out if the\n * account is not initialized\n * @param {number} [height=latest] the block height\n */\n getAccountNumber = async (height?: number): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getAccountNumber(address, height);\n };\n\n /**\n * Fetches the account balance for the specific denomination\n * @param {string} [denomination=ugnot] the fund denomination\n */\n getBalance = async (denomination?: string): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Get the address\n const address: string = await this.getAddress();\n\n return this.provider.getBalance(\n address,\n denomination ? denomination : \"ugnot\",\n );\n };\n\n /**\n * Fetches the current (recommended) average gas price\n */\n getGasPrice = async (): Promise<number> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.getGasPrice();\n };\n\n /**\n * Estimates the gas limit for the transaction\n * @param {Tx} tx the transaction that needs estimating\n */\n estimateGas = async (tx: Tx): Promise<bigint> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n return this.provider.estimateGas(tx);\n };\n\n /**\n * Returns the connected provider, if any\n */\n getProvider = (): Provider => {\n return this.provider;\n };\n\n /**\n * Generates a transaction signature, and appends it to the transaction\n * @param {Tx} tx the transaction to be signed\n * @param {(messages: Any[]) => any[]} decodeTxMessages tx message decode callback\n * that should expand the concrete message fields into an object. Required because\n * the transaction sign bytes are generated using sorted JSON, which requires\n * encoded message values to be decoded for sorting\n */\n signTransaction = async (\n tx: Tx,\n decodeTxMessages: (messages: Any[]) => unknown[],\n opts?: SignTransactionOptions,\n ): Promise<Tx> => {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Make sure the tx fee is initialized\n if (!tx.fee) {\n throw new Error(\"invalid transaction fee provided\");\n }\n\n // Extract the relevant chain data\n const status: Status = await this.provider.getStatus();\n const chainID: string = status.node_info.network;\n\n // Extract the relevant account data\n let accountNumber = opts?.accountNumber;\n let accountSequence = opts?.sequence;\n if (accountNumber === undefined || accountSequence === undefined) {\n const address: string = await this.getAddress();\n const account = await this.provider.getAccount(address);\n if (accountNumber === undefined) {\n accountNumber = account.BaseAccount.account_number;\n }\n if (accountSequence === undefined) {\n accountSequence = account.BaseAccount.sequence;\n }\n }\n const publicKey: Uint8Array = await this.signer.getPublicKey();\n\n // Create the signature payload\n const signPayload: TxSignPayload = {\n chain_id: chainID,\n account_number: accountNumber,\n sequence: accountSequence,\n fee: {\n gas_fee: tx.fee.gas_fee,\n gas_wanted: tx.fee.gas_wanted.toString(10),\n },\n msgs: decodeTxMessages(tx.messages), // unrolled message objects\n memo: tx.memo,\n };\n\n // The TM2 node does signature verification using\n // a sorted JSON object, so the payload needs to be sorted\n // before signing\n const signBytes: Uint8Array = stringToUTF8(\n encodeCharacterSet(sortedJsonStringify(signPayload)),\n );\n\n // The public key needs to be encoded using protobuf for Amino\n const wrappedKey: PubKeySecp256k1 = {\n key: publicKey,\n };\n\n // Generate the signature\n const txSignature: TxSignature = {\n pub_key: {\n type_url: Secp256k1PubKeyType,\n value: PubKeySecp256k1.encode(wrappedKey).finish(),\n },\n signature: await this.getSigner().signData(signBytes),\n session_addr: \"\",\n };\n\n // Append the signature\n return {\n ...tx,\n signatures: [...tx.signatures, txSignature],\n };\n };\n\n /**\n * Encodes and sends the transaction. If the type of endpoint\n * is a broadcast commit, waits for the transaction to be committed to the chain.\n * The transaction needs to be signed beforehand.\n * Returns the transaction hash (base-64)\n * @param {Tx} tx the signed transaction\n * @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)\n */\n async sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: Tx,\n endpoint: K,\n ): Promise<BroadcastTransactionMap[K][\"result\"]> {\n if (!this.provider) {\n throw new Error(\"provider not connected\");\n }\n\n // Encode the transaction to base-64\n const encodedTx: string = uint8ArrayToBase64(Tx.encode(tx).finish());\n\n // Send the encoded transaction\n return this.provider.sendTransaction(encodedTx, endpoint);\n }\n\n /**\n * Returns the associated signer\n */\n getSigner = (): Signer => {\n return this.signer;\n };\n}\n"],"mappings":"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"}
|
package/dist/wallet/wallet.d.cts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Any } from "../proto/google/protobuf/any.cjs";
|
|
2
2
|
import { Tx } from "../proto/tm2/tx.cjs";
|
|
3
|
+
import "../proto/index.cjs";
|
|
3
4
|
import { BroadcastTransactionMap } from "../provider/types/common.cjs";
|
|
4
5
|
import { Provider } from "../provider/provider.cjs";
|
|
6
|
+
import "../provider/index.cjs";
|
|
5
7
|
import { Signer } from "./signer.cjs";
|
|
6
8
|
import { AccountWalletOption, CreateWalletOptions } from "./types/wallet.cjs";
|
|
9
|
+
import "./types/index.cjs";
|
|
7
10
|
import { LedgerConnector } from "@cosmjs/ledger-amino";
|
|
8
|
-
|
|
9
11
|
//#region src/wallet/wallet.d.ts
|
|
10
12
|
interface SignTransactionOptions {
|
|
11
13
|
accountNumber?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.cts","names":[],"sources":["../../src/wallet/wallet.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.d.cts","names":[],"sources":["../../src/wallet/wallet.ts"],"mappings":";;;;;;;;;;;UAwCiB;EACf;EACA;;;;;;cAOW;YACO,UAAU;YACV,QAAQ;;;;;EAM1B,UAAW,UAAU;;;;;SAUd,eACL,UAAU,wBACT,QAAQ;;;;;;SAwBJ,aAAoB,QAAQ,WAAS,QAAQ;;;;;;SAa7C,eACL,kBACA,UAAU,wBACT,QAAQ;;;;;;SAwBJ,iBACL,YAAY,YACZ,UAAU,wBACT,QAAQ;;;;;;SAsBJ,aACL,WAAW,iBACX,UAAU,wBACT;;;;EAiBH,kBAAiB;;;;;EAQjB,qBAA4B,oBAAkB;;;;;;EAgB9C,mBAA0B,oBAAkB;;;;;EAe5C,aAAoB,0BAAwB;;;;EAiB5C,mBAAwB;;;;;EAYxB,cAAqB,IAAI,OAAK;;;;EAW9B,mBAAkB;;;;;;;;;EAYlB,kBACE,IAAI,IACJ,mBAAmB,UAAU,qBAC7B,OAAO,2BACN,QAAQ;;;;;;;;;EA+EL,gBAAgB,gBAAgB,yBACpC,IAAI,IACJ,UAAU,IACT,QAAQ,wBAAwB;;;;EAenC,iBAAgB"}
|
package/dist/wallet/wallet.d.mts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Any } from "../proto/google/protobuf/any.mjs";
|
|
2
2
|
import { Tx } from "../proto/tm2/tx.mjs";
|
|
3
|
+
import "../proto/index.mjs";
|
|
3
4
|
import { BroadcastTransactionMap } from "../provider/types/common.mjs";
|
|
4
5
|
import { Provider } from "../provider/provider.mjs";
|
|
6
|
+
import "../provider/index.mjs";
|
|
5
7
|
import { Signer } from "./signer.mjs";
|
|
6
8
|
import { AccountWalletOption, CreateWalletOptions } from "./types/wallet.mjs";
|
|
9
|
+
import "./types/index.mjs";
|
|
7
10
|
import { LedgerConnector } from "@cosmjs/ledger-amino";
|
|
8
|
-
|
|
9
11
|
//#region src/wallet/wallet.d.ts
|
|
10
12
|
interface SignTransactionOptions {
|
|
11
13
|
accountNumber?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.mts","names":[],"sources":["../../src/wallet/wallet.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.d.mts","names":[],"sources":["../../src/wallet/wallet.ts"],"mappings":";;;;;;;;;;;UAwCiB;EACf;EACA;;;;;;cAOW;YACO,UAAU;YACV,QAAQ;;;;;EAM1B,UAAW,UAAU;;;;;SAUd,eACL,UAAU,wBACT,QAAQ;;;;;;SAwBJ,aAAoB,QAAQ,WAAS,QAAQ;;;;;;SAa7C,eACL,kBACA,UAAU,wBACT,QAAQ;;;;;;SAwBJ,iBACL,YAAY,YACZ,UAAU,wBACT,QAAQ;;;;;;SAsBJ,aACL,WAAW,iBACX,UAAU,wBACT;;;;EAiBH,kBAAiB;;;;;EAQjB,qBAA4B,oBAAkB;;;;;;EAgB9C,mBAA0B,oBAAkB;;;;;EAe5C,aAAoB,0BAAwB;;;;EAiB5C,mBAAwB;;;;;EAYxB,cAAqB,IAAI,OAAK;;;;EAW9B,mBAAkB;;;;;;;;;EAYlB,kBACE,IAAI,IACJ,mBAAmB,UAAU,qBAC7B,OAAO,2BACN,QAAQ;;;;;;;;;EA+EL,gBAAgB,gBAAgB,yBACpC,IAAI,IACJ,UAAU,IACT,QAAQ,wBAAwB;;;;EAenC,iBAAgB"}
|
package/dist/wallet/wallet.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PubKeySecp256k1, Tx } from "../proto/tm2/tx.mjs";
|
|
2
2
|
import "../proto/index.mjs";
|
|
3
|
-
import
|
|
3
|
+
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/defineProperty.mjs";
|
|
4
4
|
import { uint8ArrayToBase64 } from "../provider/utility/requests.utility.mjs";
|
|
5
5
|
import "../provider/index.mjs";
|
|
6
6
|
import { encodeCharacterSet, generateEntropy, generateKeyPair, sortedJsonStringify, stringToUTF8 } from "./utility/utility.mjs";
|
|
@@ -138,7 +138,7 @@ var Wallet = class {
|
|
|
138
138
|
if (accountSequence === void 0) accountSequence = account.BaseAccount.sequence;
|
|
139
139
|
}
|
|
140
140
|
const publicKey = await this.signer.getPublicKey();
|
|
141
|
-
const
|
|
141
|
+
const signPayload = {
|
|
142
142
|
chain_id: chainID,
|
|
143
143
|
account_number: accountNumber,
|
|
144
144
|
sequence: accountSequence,
|
|
@@ -148,14 +148,16 @@ var Wallet = class {
|
|
|
148
148
|
},
|
|
149
149
|
msgs: decodeTxMessages(tx.messages),
|
|
150
150
|
memo: tx.memo
|
|
151
|
-
}
|
|
151
|
+
};
|
|
152
|
+
const signBytes = stringToUTF8(encodeCharacterSet(sortedJsonStringify(signPayload)));
|
|
152
153
|
const wrappedKey = { key: publicKey };
|
|
153
154
|
const txSignature = {
|
|
154
155
|
pub_key: {
|
|
155
156
|
type_url: Secp256k1PubKeyType,
|
|
156
157
|
value: PubKeySecp256k1.encode(wrappedKey).finish()
|
|
157
158
|
},
|
|
158
|
-
signature: await this.getSigner().signData(signBytes)
|
|
159
|
+
signature: await this.getSigner().signData(signBytes),
|
|
160
|
+
session_addr: ""
|
|
159
161
|
};
|
|
160
162
|
return {
|
|
161
163
|
...tx,
|