@layerzerolabs/lz-corekit-initia 3.0.26 → 3.0.28

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 CHANGED
@@ -1,5 +1,25 @@
1
1
  # @layerzerolabs/lz-corekit-initia
2
2
 
3
+ ## 3.0.28
4
+
5
+ ### Patch Changes
6
+
7
+ - 0ced4cd: fix zksync artifacts
8
+ - Updated dependencies [0ced4cd]
9
+ - @layerzerolabs/lz-core@3.0.28
10
+ - @layerzerolabs/lz-utilities@3.0.28
11
+ - @layerzerolabs/move-definitions@3.0.28
12
+
13
+ ## 3.0.27
14
+
15
+ ### Patch Changes
16
+
17
+ - 53724af: ton
18
+ - Updated dependencies [53724af]
19
+ - @layerzerolabs/lz-core@3.0.27
20
+ - @layerzerolabs/lz-utilities@3.0.27
21
+ - @layerzerolabs/move-definitions@3.0.27
22
+
3
23
  ## 3.0.26
4
24
 
5
25
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -5,6 +5,8 @@ var lzCore = require('@layerzerolabs/lz-core');
5
5
  var lzUtilities = require('@layerzerolabs/lz-utilities');
6
6
 
7
7
  // src/providers/initia.ts
8
+ var POLL_INTERVAL = 500;
9
+ var CONFIRM_TIMEOUT = 3e4;
8
10
  var InitiaProvider = class _InitiaProvider {
9
11
  /**
10
12
  * Creates an instance of InitiaProvider.
@@ -154,12 +156,12 @@ var InitiaProvider = class _InitiaProvider {
154
156
  async getTransactionCount(addressOrName, _blockTag) {
155
157
  const _addressOrName = await Promise.resolve(addressOrName);
156
158
  let accAddress;
157
- if (!lzUtilities.isHex(_addressOrName)) {
159
+ if (lzUtilities.isHex(_addressOrName)) {
158
160
  accAddress = initia_js.AccAddress.fromHex(_addressOrName);
159
161
  } else if (_addressOrName.startsWith("init")) {
160
162
  accAddress = _addressOrName;
161
163
  } else {
162
- throw new Error("Invalid Initia address");
164
+ throw new Error(`Invalid Initia address ${_addressOrName}`);
163
165
  }
164
166
  const response = await this.nativeProvider.auth.accountInfo(accAddress);
165
167
  return response.getSequenceNumber();
@@ -173,7 +175,7 @@ var InitiaProvider = class _InitiaProvider {
173
175
  */
174
176
  async sendTransaction(transaction, _sendOptions) {
175
177
  const stx = transaction.signed;
176
- const response = await this.nativeProvider.tx.broadcast(stx);
178
+ const response = await this.nativeProvider.tx.broadcastAsync(stx);
177
179
  return lzCore.TransactionPending.from(response);
178
180
  }
179
181
  /**
@@ -185,11 +187,31 @@ var InitiaProvider = class _InitiaProvider {
185
187
  * @throws {Error} If the transaction fails.
186
188
  */
187
189
  async confirmTransaction(pending, _opts) {
188
- const nativePending = pending.pending;
189
- if (nativePending.code !== 0) {
190
- throw new Error(nativePending.raw_log);
190
+ let reponse;
191
+ let txhash;
192
+ if (typeof pending.pending === "string") {
193
+ txhash = pending.pending;
194
+ } else if (typeof pending.pending === "object" && pending.pending !== null && "txhash" in pending.pending && typeof pending.pending.txhash === "string") {
195
+ txhash = pending.pending.txhash;
196
+ } else {
197
+ throw new Error(`Invalid pending transaction: ${JSON.stringify(pending, null, 2)}`);
191
198
  }
192
- return Promise.resolve(lzCore.TransactionReceipt.from(nativePending));
199
+ for (let i = 0; i <= CONFIRM_TIMEOUT / POLL_INTERVAL; i++) {
200
+ try {
201
+ reponse = await this.nativeProvider.tx.txInfo(txhash);
202
+ } catch (error) {
203
+ }
204
+ if (reponse !== void 0) {
205
+ break;
206
+ }
207
+ await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL));
208
+ }
209
+ if (reponse === void 0) {
210
+ throw new Error(`Transaction ${txhash} not found`);
211
+ } else if (reponse.code !== 0) {
212
+ throw new Error(reponse.raw_log);
213
+ }
214
+ return Promise.resolve(lzCore.TransactionReceipt.from(reponse));
193
215
  }
194
216
  /**
195
217
  * Sends a signed transaction and waits for confirmation.
@@ -199,8 +221,9 @@ var InitiaProvider = class _InitiaProvider {
199
221
  * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.
200
222
  */
201
223
  async sendAndConfirm(transaction, opts) {
202
- const pending = await this.sendTransaction(transaction, opts);
203
- return this.confirmTransaction(pending, opts);
224
+ const stx = transaction.signed;
225
+ const response = await this.nativeProvider.tx.broadcast(stx);
226
+ return this.confirmTransaction(lzCore.TransactionPending.from(response), opts);
204
227
  }
205
228
  };
206
229
  var InitiaSigner = class {
@@ -324,14 +347,8 @@ var InitiaSigner = class {
324
347
  if (!this.nativeSigner) {
325
348
  throw new Error("Connect the native provider first with InitiaSigner.connect()");
326
349
  }
327
- const tx = transaction.request;
328
- const { account_number, sequence } = await this.nativeSigner.accountNumberAndSequence();
329
- const response = await this.nativeSigner.key.signTx(tx, {
330
- accountNumber: account_number,
331
- sequence,
332
- chainId: await this.nativeSigner.lcd.tendermint.chainId(),
333
- signMode: initia_js.ModeInfo.SignMode.SIGN_MODE_DIRECT
334
- });
350
+ const request = transaction.request;
351
+ const response = await this.nativeSigner.createAndSignTx(request);
335
352
  return lzCore.SignedTransaction.from(response);
336
353
  }
337
354
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/providers/initia.ts","../src/signers/initia.ts"],"names":["LCDClient","isHex","AccAddress","Block","TransactionResponse","TransactionReceipt","TransactionPending","MnemonicKey","RawKey","trim0x","Wallet","ModeInfo","SignedTransaction"],"mappings":"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","file":"index.cjs","sourcesContent":["import { AccAddress, LCDClient, WaitTxBroadcastResult } from '@initia/initia.js'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Finality,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\nimport { isHex } from '@layerzerolabs/lz-utilities'\n\n/**\n * Represents an Initia blockchain provider.\n * Implements the Provider interface for interacting with Initia-compatible blockchains.\n */\nexport class InitiaProvider implements Provider {\n readonly nativeProvider: LCDClient\n\n /**\n * Creates an instance of InitiaProvider.\n *\n * @param {string} url - The URL of the Initia node.\n */\n private constructor(public url: string) {\n this.nativeProvider = new LCDClient(url)\n }\n\n /**\n * Creates an instance of InitiaProvider from the given URL.\n *\n * @param {string} url - The URL of the Initia node.\n * @returns {InitiaProvider} The created InitiaProvider instance.\n * @throws {Error} If the URL parameter is invalid.\n */\n static from(url: string): InitiaProvider\n static from(source: string): InitiaProvider {\n if (typeof source === 'string') {\n return new InitiaProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n /**\n * Gets the native Initia provider instance.\n *\n * @returns {LCDClient} The native Initia provider instance.\n */\n get native(): LCDClient {\n return this.nativeProvider\n }\n\n /**\n * Gets the balance of the specified address.\n *\n * @param {string} address - The address to get the balance of.\n * @returns {Promise<string>} A promise that resolves to the balance of the address.\n * @throws {Error} If the address is not a valid Initia address.\n */\n async getBalance(address: string): Promise<string> {\n let accAddress: AccAddress\n if (!isHex(address)) {\n accAddress = AccAddress.fromHex(address)\n } else if (address.startsWith('init')) {\n accAddress = address\n } else {\n throw new Error('Invalid Initia address')\n }\n\n //todo convert all address to aclAddress\n const resources = await this.nativeProvider.bank.balance(accAddress)\n const coins = resources[0]\n return coins.toString()\n }\n\n /**\n * Gets the block specified by blockTag.\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<Block>} A promise that resolves to the block.\n * @throws {Error} If the blockTag is invalid.\n */\n async getBlock(blockTag: string | number): Promise<Block> {\n let blockNumber = 0\n if (typeof blockTag === 'number') {\n blockNumber = blockTag\n } else if (blockTag === 'latest') {\n blockNumber = await this.nativeProvider.tendermint\n .blockInfo()\n .then((ledgerInfo) => Number(ledgerInfo.block.header.height))\n } else {\n throw new Error('Invalid blockTag')\n }\n\n const response = await this.nativeProvider.tendermint.blockInfo(blockNumber)\n return Block.from(response)\n }\n\n /**\n * Gets the block with transactions specified by blockTag.\n * Later: could invoke txInfosByHeight method in TxAPI\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<BlockWithTransactions>} A promise that resolves to the block with transactions.\n * @throws {Error} Method not implemented.\n */\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n\n /**\n * Gets the current block number.\n *\n * @returns {Promise<number>} A promise that resolves to the current block number.\n */\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.tendermint.blockInfo().then((ledgerInfo) => Number(ledgerInfo.block.header.height))\n }\n\n /**\n * Gets the current slot number for commitment, not suitable for Initia.\n *\n * @param {Finality} [finality] - The commitment level (optional).\n * @returns {Promise<number>} A promise that resolves to the current slot number.\n * @throws {Error} Method not implemented.\n */\n async getSlot(_finality?: Finality): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n /**\n * Gets the UNIX timestamp for the block identified by blockTag.\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<number>} A promise that resolves to the UNIX timestamp of the block.\n * @throws {Error} If the blockTag is invalid.\n */\n async getBlockTimestamp(blockTag: string | number): Promise<number> {\n if (typeof blockTag === 'number') {\n return this.nativeProvider.tendermint.blockInfo(blockTag).then((block) => Number(block.block.header.time))\n } else if (blockTag === 'latest') {\n return this.nativeProvider.tendermint.blockInfo().then((block) => Number(block.block.header.time))\n } else {\n throw new Error('Invalid blockTag')\n }\n }\n\n /**\n * Gets information about a transaction.\n *\n * @param {string} txHash - The hash of the transaction.\n * @returns {Promise<TransactionResponse>} A promise that resolves to the transaction response.\n * @throws {Error} If the transaction hash is invalid.\n */\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n if (!isHex(txHash)) {\n throw new Error('Invalid Initia transaction hash')\n }\n\n const response = await this.nativeProvider.tx.txInfo(txHash)\n return TransactionResponse.from(response)\n }\n\n /**\n * Gets the receipt of a transaction.\n *\n * @param {string} txHash - The hash of the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the transaction hash is invalid.\n */\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n if (!isHex(txHash)) {\n throw new Error('Invalid Initia transaction hash')\n }\n\n const response = await this.nativeProvider.tx.txInfo(txHash)\n return TransactionReceipt.from(response)\n }\n\n /**\n * Gets the number of transactions sent from the specified address.\n *\n * @param {string | Promise<string>} addressOrName - The address to get the number of transactions from.\n * @param {BlockTag | Promise<BlockTag>} [blockTag] - The block tag to get the number of transactions from (optional).\n * @returns {Promise<number>} A promise that resolves to the number of transactions sent from the address.\n * @throws {Error} If the address is invalid.\n */\n async getTransactionCount(\n addressOrName: string | Promise<string>,\n _blockTag?: BlockTag | Promise<BlockTag>\n ): Promise<number> {\n const _addressOrName = await Promise.resolve(addressOrName)\n\n let accAddress: AccAddress\n if (!isHex(_addressOrName)) {\n accAddress = AccAddress.fromHex(_addressOrName)\n } else if (_addressOrName.startsWith('init')) {\n accAddress = _addressOrName\n } else {\n throw new Error('Invalid Initia address')\n }\n\n const response = await this.nativeProvider.auth.accountInfo(accAddress)\n return response.getSequenceNumber()\n }\n\n /**\n * Sends a signed transaction to the blockchain.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [sendOptions] - Optional parameters for sending the transaction.\n * @returns {Promise<TransactionPending>} A promise that resolves to the pending transaction.\n */\n async sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending> {\n type NativeSignedTransaction = Parameters<typeof this.nativeProvider.tx.broadcast>[0]\n const stx = transaction.signed as NativeSignedTransaction\n\n const response = await this.nativeProvider.tx.broadcast(stx) //TODO need change to broadcastAsync ??\n return TransactionPending.from(response)\n }\n\n /**\n * Confirms a pending transaction.\n *\n * @param {TransactionPending} pending - The pending transaction to confirm.\n * @param {object} [opts] - Optional parameters for the confirmation.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the transaction fails.\n */\n async confirmTransaction(pending: TransactionPending, _opts?: object): Promise<TransactionReceipt> {\n const nativePending = pending.pending as WaitTxBroadcastResult\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (((nativePending as any).code as number) !== 0) {\n throw new Error(nativePending.raw_log)\n }\n return Promise.resolve(TransactionReceipt.from(nativePending))\n }\n\n /**\n * Sends a signed transaction and waits for confirmation.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [opts] - Optional parameters for sending and confirming the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n */\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n const pending = await this.sendTransaction(transaction, opts)\n return this.confirmTransaction(pending, opts)\n }\n}\n","import { AccAddress, Key, MnemonicKey, ModeInfo, RawKey, Wallet } from '@initia/initia.js'\n\nimport {\n Provider,\n SignedTransaction,\n Signer,\n TransactionPending,\n TransactionReceipt,\n TransactionRequest,\n} from '@layerzerolabs/lz-core'\nimport { trim0x } from '@layerzerolabs/lz-utilities'\n\nimport { InitiaProvider } from '../providers'\n\n/**\n * Represents an Initia blockchain signer.\n * Implements the Signer interface for interacting with Initia-compatible blockchains.\n */\nexport class InitiaSigner implements Signer {\n public nativeKey: MnemonicKey | RawKey\n public nativeSigner: Wallet | undefined\n public provider: InitiaProvider | undefined\n\n /**\n * Creates an instance of InitiaSigner.\n *\n * @param {MnemonicKey | RawKey} signer - The Initia key to use as the signer.\n */\n private constructor(signer: MnemonicKey | RawKey) {\n this.nativeKey = signer\n }\n\n /**\n * Creates an instance of InitiaSigner from a MnemonicKey.\n *\n * @param {MnemonicKey} signer - The MnemonicKey to create the signer from.\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(signer: MnemonicKey): Signer\n\n /**\n * Creates an instance of InitiaSigner from a private key.\n *\n * @param {string} privKey - The private key to create the signer from.\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(privKey: string): Signer\n\n /**\n * Creates an instance of InitiaSigner from a mnemonic and derivation path.\n *\n * @param {string} mnemonic - The mnemonic to create the signer from.\n * @param {string} path - The derivation path (e.g., m/44'/637'/0'/0'/0').\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(mnemonic: string, path: string): Signer\n\n /**\n * Creates an instance of InitiaSigner from the given source.\n *\n * @param {string | MnemonicKey} source - The source to create the signer from.\n * @param {string} [path] - The derivation path (optional).\n * @returns {Signer} The created InitiaSigner instance.\n * @throws {Error} If the parameters are invalid.\n */\n static from(source: string | MnemonicKey, path?: string): Signer {\n if (source instanceof MnemonicKey) {\n return new this(source)\n } else if (typeof source === 'string' && path === undefined) {\n const signer = new RawKey(Buffer.from(trim0x(source), 'hex')) // todo double check\n return new this(signer)\n } else if (typeof source === 'string' && path !== undefined) {\n if (path.startsWith('m/')) {\n const [_, coinType, account, __, index] = path.match(/\\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0]\n const normalizeMnemonics = source\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n const key = new MnemonicKey({\n mnemonic: normalizeMnemonics,\n coinType,\n account,\n index,\n })\n return new this(key)\n }\n }\n throw new Error('Invalid parameters')\n }\n\n /**\n * Gets the native Initia wallet instance.\n * Invoke connect method first to make sure the native provider is not undefined.\n *\n * @returns {Wallet} The native Initia wallet instance.\n * @throws {Error} If the native provider is not connected.\n */\n get native(): Wallet {\n if (!this.nativeSigner) {\n throw new Error('Connect the native provider first with InitiaSigner.connect()')\n }\n return this.nativeSigner\n }\n\n /**\n * Connects the signer to a provider.\n *\n * @param {Provider} provider - The provider to connect to.\n * @returns {Signer} The connected signer.\n * @throws {Error} If the provider is not an instance of InitiaProvider.\n */\n connect(provider: Provider): Signer {\n if (!(provider instanceof InitiaProvider)) {\n throw new Error('Only InitiaProvider is supported.')\n }\n\n this.provider = provider\n this.nativeSigner = new Wallet(this.provider.native, this.nativeKey)\n return this\n }\n\n /**\n * Gets the address of the signer.\n *\n * @returns {Promise<string>} A promise that resolves to the address of the signer.\n */\n async getAddress(): Promise<string> {\n return Promise.resolve(AccAddress.toHex(this.nativeKey.accAddress))\n }\n\n /**\n * Gets the address of the signer.\n *\n * @returns {string} The address of the signer.\n */\n get address(): string {\n return AccAddress.toHex(this.nativeKey.accAddress)\n }\n\n /**\n * Sends a signed transaction and waits for confirmation.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [opts] - Optional parameters for sending and confirming the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the provider is not connected.\n */\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n if (this.provider === undefined) {\n throw new Error('provider is required')\n }\n return this.provider.sendAndConfirm(transaction, opts)\n }\n\n /**\n * Sends a signed transaction.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [sendOptions] - Optional parameters for sending the transaction.\n * @returns {Promise<TransactionPending>} A promise that resolves to the pending transaction.\n * @throws {Error} If the provider is not connected.\n */\n async sendTransaction(transaction: SignedTransaction, sendOptions?: object): Promise<TransactionPending> {\n if (this.provider === undefined) {\n throw new Error('provider is required')\n }\n\n return this.provider.sendTransaction(transaction, sendOptions)\n }\n\n /**\n * Signs a transaction.\n *\n * @param {TransactionRequest} transaction - The transaction request to sign.\n * @returns {Promise<SignedTransaction>} A promise that resolves to the signed transaction.\n * @throws {Error} If the native provider is not connected.\n */\n async signTransaction(transaction: TransactionRequest): Promise<SignedTransaction> {\n if (!this.nativeSigner) {\n throw new Error('Connect the native provider first with InitiaSigner.connect()')\n }\n\n type NativeTransactionRequest = Parameters<Key['signTx']>[0]\n const tx = transaction.request as NativeTransactionRequest\n const { account_number, sequence } = await this.nativeSigner.accountNumberAndSequence()\n const response = await this.nativeSigner.key.signTx(tx, {\n accountNumber: account_number,\n sequence,\n chainId: await this.nativeSigner.lcd.tendermint.chainId(),\n signMode: ModeInfo.SignMode.SIGN_MODE_DIRECT,\n })\n return SignedTransaction.from(response)\n }\n\n /**\n * Signs a buffer (e.g., a message hash) using the native Initia signer.\n *\n * @param {Uint8Array} buffer - The buffer to sign.\n * @returns {Promise<Uint8Array>} A promise that resolves to the signed buffer as a Uint8Array.\n */\n async signBuffer(buffer: Uint8Array): Promise<Uint8Array> {\n return this.nativeKey.sign(Buffer.from(buffer))\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/providers/initia.ts","../src/signers/initia.ts"],"names":["LCDClient","isHex","AccAddress","Block","TransactionResponse","TransactionReceipt","TransactionPending","MnemonicKey","RawKey","trim0x","Wallet","SignedTransaction"],"mappings":"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","file":"index.cjs","sourcesContent":["import { AccAddress, LCDClient, TxInfo } from '@initia/initia.js'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Finality,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\nimport { isHex } from '@layerzerolabs/lz-utilities'\nconst POLL_INTERVAL = 500\nconst CONFIRM_TIMEOUT = 30000\n/**\n * Represents an Initia blockchain provider.\n * Implements the Provider interface for interacting with Initia-compatible blockchains.\n */\nexport class InitiaProvider implements Provider {\n readonly nativeProvider: LCDClient\n\n /**\n * Creates an instance of InitiaProvider.\n *\n * @param {string} url - The URL of the Initia node.\n */\n private constructor(public url: string) {\n this.nativeProvider = new LCDClient(url)\n }\n\n /**\n * Creates an instance of InitiaProvider from the given URL.\n *\n * @param {string} url - The URL of the Initia node.\n * @returns {InitiaProvider} The created InitiaProvider instance.\n * @throws {Error} If the URL parameter is invalid.\n */\n static from(url: string): InitiaProvider\n static from(source: string): InitiaProvider {\n if (typeof source === 'string') {\n return new InitiaProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n /**\n * Gets the native Initia provider instance.\n *\n * @returns {LCDClient} The native Initia provider instance.\n */\n get native(): LCDClient {\n return this.nativeProvider\n }\n\n /**\n * Gets the balance of the specified address.\n *\n * @param {string} address - The address to get the balance of.\n * @returns {Promise<string>} A promise that resolves to the balance of the address.\n * @throws {Error} If the address is not a valid Initia address.\n */\n async getBalance(address: string): Promise<string> {\n let accAddress: AccAddress\n if (!isHex(address)) {\n accAddress = AccAddress.fromHex(address)\n } else if (address.startsWith('init')) {\n accAddress = address\n } else {\n throw new Error('Invalid Initia address')\n }\n\n //todo convert all address to aclAddress\n const resources = await this.nativeProvider.bank.balance(accAddress)\n const coins = resources[0]\n return coins.toString()\n }\n\n /**\n * Gets the block specified by blockTag.\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<Block>} A promise that resolves to the block.\n * @throws {Error} If the blockTag is invalid.\n */\n async getBlock(blockTag: string | number): Promise<Block> {\n let blockNumber = 0\n if (typeof blockTag === 'number') {\n blockNumber = blockTag\n } else if (blockTag === 'latest') {\n blockNumber = await this.nativeProvider.tendermint\n .blockInfo()\n .then((ledgerInfo) => Number(ledgerInfo.block.header.height))\n } else {\n throw new Error('Invalid blockTag')\n }\n\n const response = await this.nativeProvider.tendermint.blockInfo(blockNumber)\n return Block.from(response)\n }\n\n /**\n * Gets the block with transactions specified by blockTag.\n * Later: could invoke txInfosByHeight method in TxAPI\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<BlockWithTransactions>} A promise that resolves to the block with transactions.\n * @throws {Error} Method not implemented.\n */\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n\n /**\n * Gets the current block number.\n *\n * @returns {Promise<number>} A promise that resolves to the current block number.\n */\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.tendermint.blockInfo().then((ledgerInfo) => Number(ledgerInfo.block.header.height))\n }\n\n /**\n * Gets the current slot number for commitment, not suitable for Initia.\n *\n * @param {Finality} [finality] - The commitment level (optional).\n * @returns {Promise<number>} A promise that resolves to the current slot number.\n * @throws {Error} Method not implemented.\n */\n async getSlot(_finality?: Finality): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n /**\n * Gets the UNIX timestamp for the block identified by blockTag.\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<number>} A promise that resolves to the UNIX timestamp of the block.\n * @throws {Error} If the blockTag is invalid.\n */\n async getBlockTimestamp(blockTag: string | number): Promise<number> {\n if (typeof blockTag === 'number') {\n return this.nativeProvider.tendermint.blockInfo(blockTag).then((block) => Number(block.block.header.time))\n } else if (blockTag === 'latest') {\n return this.nativeProvider.tendermint.blockInfo().then((block) => Number(block.block.header.time))\n } else {\n throw new Error('Invalid blockTag')\n }\n }\n\n /**\n * Gets information about a transaction.\n *\n * @param {string} txHash - The hash of the transaction.\n * @returns {Promise<TransactionResponse>} A promise that resolves to the transaction response.\n * @throws {Error} If the transaction hash is invalid.\n */\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n if (!isHex(txHash)) {\n throw new Error('Invalid Initia transaction hash')\n }\n\n const response = await this.nativeProvider.tx.txInfo(txHash)\n return TransactionResponse.from(response)\n }\n\n /**\n * Gets the receipt of a transaction.\n *\n * @param {string} txHash - The hash of the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the transaction hash is invalid.\n */\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n if (!isHex(txHash)) {\n throw new Error('Invalid Initia transaction hash')\n }\n\n const response = await this.nativeProvider.tx.txInfo(txHash)\n return TransactionReceipt.from(response)\n }\n\n /**\n * Gets the number of transactions sent from the specified address.\n *\n * @param {string | Promise<string>} addressOrName - The address to get the number of transactions from.\n * @param {BlockTag | Promise<BlockTag>} [blockTag] - The block tag to get the number of transactions from (optional).\n * @returns {Promise<number>} A promise that resolves to the number of transactions sent from the address.\n * @throws {Error} If the address is invalid.\n */\n async getTransactionCount(\n addressOrName: string | Promise<string>,\n _blockTag?: BlockTag | Promise<BlockTag>\n ): Promise<number> {\n const _addressOrName = await Promise.resolve(addressOrName)\n\n let accAddress: AccAddress\n if (isHex(_addressOrName)) {\n accAddress = AccAddress.fromHex(_addressOrName)\n } else if (_addressOrName.startsWith('init')) {\n accAddress = _addressOrName\n } else {\n throw new Error(`Invalid Initia address ${_addressOrName}`)\n }\n\n const response = await this.nativeProvider.auth.accountInfo(accAddress)\n return response.getSequenceNumber()\n }\n\n /**\n * Sends a signed transaction to the blockchain.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [sendOptions] - Optional parameters for sending the transaction.\n * @returns {Promise<TransactionPending>} A promise that resolves to the pending transaction.\n */\n async sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending> {\n type NativeSignedTransaction = Parameters<typeof this.nativeProvider.tx.broadcastAsync>[0]\n const stx = transaction.signed as NativeSignedTransaction\n\n const response = await this.nativeProvider.tx.broadcastAsync(stx)\n return TransactionPending.from(response)\n }\n\n /**\n * Confirms a pending transaction.\n *\n * @param {TransactionPending} pending - The pending transaction to confirm.\n * @param {object} [opts] - Optional parameters for the confirmation.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the transaction fails.\n */\n async confirmTransaction(pending: TransactionPending, _opts?: object): Promise<TransactionReceipt> {\n let reponse: TxInfo | undefined\n let txhash: string\n if (typeof pending.pending === 'string') {\n txhash = pending.pending\n } else if (\n typeof pending.pending === 'object' &&\n pending.pending !== null &&\n 'txhash' in pending.pending &&\n typeof pending.pending.txhash === 'string'\n ) {\n // eslint-disable-next-line @typescript-eslint/prefer-destructuring\n txhash = pending.pending.txhash\n } else {\n throw new Error(`Invalid pending transaction: ${JSON.stringify(pending, null, 2)}`)\n }\n for (let i = 0; i <= CONFIRM_TIMEOUT / POLL_INTERVAL; i++) {\n try {\n reponse = await this.nativeProvider.tx.txInfo(txhash)\n } catch (error) {\n /* empty */\n }\n if (reponse !== undefined) {\n break\n }\n await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL))\n }\n if (reponse === undefined) {\n throw new Error(`Transaction ${txhash} not found`)\n } else if (reponse.code !== 0) {\n throw new Error(reponse.raw_log)\n }\n return Promise.resolve(TransactionReceipt.from(reponse))\n }\n\n /**\n * Sends a signed transaction and waits for confirmation.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [opts] - Optional parameters for sending and confirming the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n */\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n type NativeSignedTransaction = Parameters<typeof this.nativeProvider.tx.broadcast>[0]\n const stx = transaction.signed as NativeSignedTransaction\n const response = await this.nativeProvider.tx.broadcast(stx)\n return this.confirmTransaction(TransactionPending.from(response), opts)\n }\n}\n","import { AccAddress, CreateTxOptions, MnemonicKey, RawKey, Wallet } from '@initia/initia.js'\n\nimport {\n Provider,\n SignedTransaction,\n Signer,\n TransactionPending,\n TransactionReceipt,\n TransactionRequest,\n} from '@layerzerolabs/lz-core'\nimport { trim0x } from '@layerzerolabs/lz-utilities'\n\nimport { InitiaProvider } from '../providers'\n\n/**\n * Represents an Initia blockchain signer.\n * Implements the Signer interface for interacting with Initia-compatible blockchains.\n */\nexport class InitiaSigner implements Signer {\n public nativeKey: MnemonicKey | RawKey\n public nativeSigner: Wallet | undefined\n public provider: InitiaProvider | undefined\n\n /**\n * Creates an instance of InitiaSigner.\n *\n * @param {MnemonicKey | RawKey} signer - The Initia key to use as the signer.\n */\n private constructor(signer: MnemonicKey | RawKey) {\n this.nativeKey = signer\n }\n\n /**\n * Creates an instance of InitiaSigner from a MnemonicKey.\n *\n * @param {MnemonicKey} signer - The MnemonicKey to create the signer from.\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(signer: MnemonicKey): Signer\n\n /**\n * Creates an instance of InitiaSigner from a private key.\n *\n * @param {string} privKey - The private key to create the signer from.\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(privKey: string): Signer\n\n /**\n * Creates an instance of InitiaSigner from a mnemonic and derivation path.\n *\n * @param {string} mnemonic - The mnemonic to create the signer from.\n * @param {string} path - The derivation path (e.g., m/44'/637'/0'/0'/0').\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(mnemonic: string, path: string): Signer\n\n /**\n * Creates an instance of InitiaSigner from the given source.\n *\n * @param {string | MnemonicKey} source - The source to create the signer from.\n * @param {string} [path] - The derivation path (optional).\n * @returns {Signer} The created InitiaSigner instance.\n * @throws {Error} If the parameters are invalid.\n */\n static from(source: string | MnemonicKey, path?: string): Signer {\n if (source instanceof MnemonicKey) {\n return new this(source)\n } else if (typeof source === 'string' && path === undefined) {\n const signer = new RawKey(Buffer.from(trim0x(source), 'hex')) // todo double check\n return new this(signer)\n } else if (typeof source === 'string' && path !== undefined) {\n if (path.startsWith('m/')) {\n const [_, coinType, account, __, index] = path.match(/\\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0]\n const normalizeMnemonics = source\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n const key = new MnemonicKey({\n mnemonic: normalizeMnemonics,\n coinType,\n account,\n index,\n })\n return new this(key)\n }\n }\n throw new Error('Invalid parameters')\n }\n\n /**\n * Gets the native Initia wallet instance.\n * Invoke connect method first to make sure the native provider is not undefined.\n *\n * @returns {Wallet} The native Initia wallet instance.\n * @throws {Error} If the native provider is not connected.\n */\n get native(): Wallet {\n if (!this.nativeSigner) {\n throw new Error('Connect the native provider first with InitiaSigner.connect()')\n }\n return this.nativeSigner\n }\n\n /**\n * Connects the signer to a provider.\n *\n * @param {Provider} provider - The provider to connect to.\n * @returns {Signer} The connected signer.\n * @throws {Error} If the provider is not an instance of InitiaProvider.\n */\n connect(provider: Provider): Signer {\n if (!(provider instanceof InitiaProvider)) {\n throw new Error('Only InitiaProvider is supported.')\n }\n\n this.provider = provider\n this.nativeSigner = new Wallet(this.provider.native, this.nativeKey)\n return this\n }\n\n /**\n * Gets the address of the signer.\n *\n * @returns {Promise<string>} A promise that resolves to the address of the signer.\n */\n async getAddress(): Promise<string> {\n return Promise.resolve(AccAddress.toHex(this.nativeKey.accAddress))\n }\n\n /**\n * Gets the address of the signer.\n *\n * @returns {string} The address of the signer.\n */\n get address(): string {\n return AccAddress.toHex(this.nativeKey.accAddress)\n }\n\n /**\n * Sends a signed transaction and waits for confirmation.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [opts] - Optional parameters for sending and confirming the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the provider is not connected.\n */\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n if (this.provider === undefined) {\n throw new Error('provider is required')\n }\n return this.provider.sendAndConfirm(transaction, opts)\n }\n\n /**\n * Sends a signed transaction.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [sendOptions] - Optional parameters for sending the transaction.\n * @returns {Promise<TransactionPending>} A promise that resolves to the pending transaction.\n * @throws {Error} If the provider is not connected.\n */\n async sendTransaction(transaction: SignedTransaction, sendOptions?: object): Promise<TransactionPending> {\n if (this.provider === undefined) {\n throw new Error('provider is required')\n }\n\n return this.provider.sendTransaction(transaction, sendOptions)\n }\n\n /**\n * Signs a transaction.\n *\n * @param {TransactionRequest} transaction - The transaction request to sign.\n * @returns {Promise<SignedTransaction>} A promise that resolves to the signed transaction.\n * @throws {Error} If the native provider is not connected.\n */\n async signTransaction(transaction: TransactionRequest): Promise<SignedTransaction> {\n if (!this.nativeSigner) {\n throw new Error('Connect the native provider first with InitiaSigner.connect()')\n }\n const request = transaction.request as CreateTxOptions\n const response = await this.nativeSigner.createAndSignTx(request)\n return SignedTransaction.from(response)\n }\n\n /**\n * Signs a buffer (e.g., a message hash) using the native Initia signer.\n *\n * @param {Uint8Array} buffer - The buffer to sign.\n * @returns {Promise<Uint8Array>} A promise that resolves to the signed buffer as a Uint8Array.\n */\n async signBuffer(buffer: Uint8Array): Promise<Uint8Array> {\n return this.nativeKey.sign(Buffer.from(buffer))\n }\n}\n"]}
package/dist/index.mjs CHANGED
@@ -1,8 +1,10 @@
1
- import { LCDClient, AccAddress, MnemonicKey, RawKey, Wallet, ModeInfo } from '@initia/initia.js';
1
+ import { LCDClient, AccAddress, MnemonicKey, RawKey, Wallet } from '@initia/initia.js';
2
2
  import { Block, TransactionResponse, TransactionReceipt, TransactionPending, SignedTransaction } from '@layerzerolabs/lz-core';
3
3
  import { isHex, trim0x } from '@layerzerolabs/lz-utilities';
4
4
 
5
5
  // src/providers/initia.ts
6
+ var POLL_INTERVAL = 500;
7
+ var CONFIRM_TIMEOUT = 3e4;
6
8
  var InitiaProvider = class _InitiaProvider {
7
9
  /**
8
10
  * Creates an instance of InitiaProvider.
@@ -152,12 +154,12 @@ var InitiaProvider = class _InitiaProvider {
152
154
  async getTransactionCount(addressOrName, _blockTag) {
153
155
  const _addressOrName = await Promise.resolve(addressOrName);
154
156
  let accAddress;
155
- if (!isHex(_addressOrName)) {
157
+ if (isHex(_addressOrName)) {
156
158
  accAddress = AccAddress.fromHex(_addressOrName);
157
159
  } else if (_addressOrName.startsWith("init")) {
158
160
  accAddress = _addressOrName;
159
161
  } else {
160
- throw new Error("Invalid Initia address");
162
+ throw new Error(`Invalid Initia address ${_addressOrName}`);
161
163
  }
162
164
  const response = await this.nativeProvider.auth.accountInfo(accAddress);
163
165
  return response.getSequenceNumber();
@@ -171,7 +173,7 @@ var InitiaProvider = class _InitiaProvider {
171
173
  */
172
174
  async sendTransaction(transaction, _sendOptions) {
173
175
  const stx = transaction.signed;
174
- const response = await this.nativeProvider.tx.broadcast(stx);
176
+ const response = await this.nativeProvider.tx.broadcastAsync(stx);
175
177
  return TransactionPending.from(response);
176
178
  }
177
179
  /**
@@ -183,11 +185,31 @@ var InitiaProvider = class _InitiaProvider {
183
185
  * @throws {Error} If the transaction fails.
184
186
  */
185
187
  async confirmTransaction(pending, _opts) {
186
- const nativePending = pending.pending;
187
- if (nativePending.code !== 0) {
188
- throw new Error(nativePending.raw_log);
188
+ let reponse;
189
+ let txhash;
190
+ if (typeof pending.pending === "string") {
191
+ txhash = pending.pending;
192
+ } else if (typeof pending.pending === "object" && pending.pending !== null && "txhash" in pending.pending && typeof pending.pending.txhash === "string") {
193
+ txhash = pending.pending.txhash;
194
+ } else {
195
+ throw new Error(`Invalid pending transaction: ${JSON.stringify(pending, null, 2)}`);
189
196
  }
190
- return Promise.resolve(TransactionReceipt.from(nativePending));
197
+ for (let i = 0; i <= CONFIRM_TIMEOUT / POLL_INTERVAL; i++) {
198
+ try {
199
+ reponse = await this.nativeProvider.tx.txInfo(txhash);
200
+ } catch (error) {
201
+ }
202
+ if (reponse !== void 0) {
203
+ break;
204
+ }
205
+ await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL));
206
+ }
207
+ if (reponse === void 0) {
208
+ throw new Error(`Transaction ${txhash} not found`);
209
+ } else if (reponse.code !== 0) {
210
+ throw new Error(reponse.raw_log);
211
+ }
212
+ return Promise.resolve(TransactionReceipt.from(reponse));
191
213
  }
192
214
  /**
193
215
  * Sends a signed transaction and waits for confirmation.
@@ -197,8 +219,9 @@ var InitiaProvider = class _InitiaProvider {
197
219
  * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.
198
220
  */
199
221
  async sendAndConfirm(transaction, opts) {
200
- const pending = await this.sendTransaction(transaction, opts);
201
- return this.confirmTransaction(pending, opts);
222
+ const stx = transaction.signed;
223
+ const response = await this.nativeProvider.tx.broadcast(stx);
224
+ return this.confirmTransaction(TransactionPending.from(response), opts);
202
225
  }
203
226
  };
204
227
  var InitiaSigner = class {
@@ -322,14 +345,8 @@ var InitiaSigner = class {
322
345
  if (!this.nativeSigner) {
323
346
  throw new Error("Connect the native provider first with InitiaSigner.connect()");
324
347
  }
325
- const tx = transaction.request;
326
- const { account_number, sequence } = await this.nativeSigner.accountNumberAndSequence();
327
- const response = await this.nativeSigner.key.signTx(tx, {
328
- accountNumber: account_number,
329
- sequence,
330
- chainId: await this.nativeSigner.lcd.tendermint.chainId(),
331
- signMode: ModeInfo.SignMode.SIGN_MODE_DIRECT
332
- });
348
+ const request = transaction.request;
349
+ const response = await this.nativeSigner.createAndSignTx(request);
333
350
  return SignedTransaction.from(response);
334
351
  }
335
352
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/providers/initia.ts","../src/signers/initia.ts"],"names":["AccAddress","SignedTransaction"],"mappings":"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","file":"index.mjs","sourcesContent":["import { AccAddress, LCDClient, WaitTxBroadcastResult } from '@initia/initia.js'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Finality,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\nimport { isHex } from '@layerzerolabs/lz-utilities'\n\n/**\n * Represents an Initia blockchain provider.\n * Implements the Provider interface for interacting with Initia-compatible blockchains.\n */\nexport class InitiaProvider implements Provider {\n readonly nativeProvider: LCDClient\n\n /**\n * Creates an instance of InitiaProvider.\n *\n * @param {string} url - The URL of the Initia node.\n */\n private constructor(public url: string) {\n this.nativeProvider = new LCDClient(url)\n }\n\n /**\n * Creates an instance of InitiaProvider from the given URL.\n *\n * @param {string} url - The URL of the Initia node.\n * @returns {InitiaProvider} The created InitiaProvider instance.\n * @throws {Error} If the URL parameter is invalid.\n */\n static from(url: string): InitiaProvider\n static from(source: string): InitiaProvider {\n if (typeof source === 'string') {\n return new InitiaProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n /**\n * Gets the native Initia provider instance.\n *\n * @returns {LCDClient} The native Initia provider instance.\n */\n get native(): LCDClient {\n return this.nativeProvider\n }\n\n /**\n * Gets the balance of the specified address.\n *\n * @param {string} address - The address to get the balance of.\n * @returns {Promise<string>} A promise that resolves to the balance of the address.\n * @throws {Error} If the address is not a valid Initia address.\n */\n async getBalance(address: string): Promise<string> {\n let accAddress: AccAddress\n if (!isHex(address)) {\n accAddress = AccAddress.fromHex(address)\n } else if (address.startsWith('init')) {\n accAddress = address\n } else {\n throw new Error('Invalid Initia address')\n }\n\n //todo convert all address to aclAddress\n const resources = await this.nativeProvider.bank.balance(accAddress)\n const coins = resources[0]\n return coins.toString()\n }\n\n /**\n * Gets the block specified by blockTag.\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<Block>} A promise that resolves to the block.\n * @throws {Error} If the blockTag is invalid.\n */\n async getBlock(blockTag: string | number): Promise<Block> {\n let blockNumber = 0\n if (typeof blockTag === 'number') {\n blockNumber = blockTag\n } else if (blockTag === 'latest') {\n blockNumber = await this.nativeProvider.tendermint\n .blockInfo()\n .then((ledgerInfo) => Number(ledgerInfo.block.header.height))\n } else {\n throw new Error('Invalid blockTag')\n }\n\n const response = await this.nativeProvider.tendermint.blockInfo(blockNumber)\n return Block.from(response)\n }\n\n /**\n * Gets the block with transactions specified by blockTag.\n * Later: could invoke txInfosByHeight method in TxAPI\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<BlockWithTransactions>} A promise that resolves to the block with transactions.\n * @throws {Error} Method not implemented.\n */\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n\n /**\n * Gets the current block number.\n *\n * @returns {Promise<number>} A promise that resolves to the current block number.\n */\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.tendermint.blockInfo().then((ledgerInfo) => Number(ledgerInfo.block.header.height))\n }\n\n /**\n * Gets the current slot number for commitment, not suitable for Initia.\n *\n * @param {Finality} [finality] - The commitment level (optional).\n * @returns {Promise<number>} A promise that resolves to the current slot number.\n * @throws {Error} Method not implemented.\n */\n async getSlot(_finality?: Finality): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n /**\n * Gets the UNIX timestamp for the block identified by blockTag.\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<number>} A promise that resolves to the UNIX timestamp of the block.\n * @throws {Error} If the blockTag is invalid.\n */\n async getBlockTimestamp(blockTag: string | number): Promise<number> {\n if (typeof blockTag === 'number') {\n return this.nativeProvider.tendermint.blockInfo(blockTag).then((block) => Number(block.block.header.time))\n } else if (blockTag === 'latest') {\n return this.nativeProvider.tendermint.blockInfo().then((block) => Number(block.block.header.time))\n } else {\n throw new Error('Invalid blockTag')\n }\n }\n\n /**\n * Gets information about a transaction.\n *\n * @param {string} txHash - The hash of the transaction.\n * @returns {Promise<TransactionResponse>} A promise that resolves to the transaction response.\n * @throws {Error} If the transaction hash is invalid.\n */\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n if (!isHex(txHash)) {\n throw new Error('Invalid Initia transaction hash')\n }\n\n const response = await this.nativeProvider.tx.txInfo(txHash)\n return TransactionResponse.from(response)\n }\n\n /**\n * Gets the receipt of a transaction.\n *\n * @param {string} txHash - The hash of the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the transaction hash is invalid.\n */\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n if (!isHex(txHash)) {\n throw new Error('Invalid Initia transaction hash')\n }\n\n const response = await this.nativeProvider.tx.txInfo(txHash)\n return TransactionReceipt.from(response)\n }\n\n /**\n * Gets the number of transactions sent from the specified address.\n *\n * @param {string | Promise<string>} addressOrName - The address to get the number of transactions from.\n * @param {BlockTag | Promise<BlockTag>} [blockTag] - The block tag to get the number of transactions from (optional).\n * @returns {Promise<number>} A promise that resolves to the number of transactions sent from the address.\n * @throws {Error} If the address is invalid.\n */\n async getTransactionCount(\n addressOrName: string | Promise<string>,\n _blockTag?: BlockTag | Promise<BlockTag>\n ): Promise<number> {\n const _addressOrName = await Promise.resolve(addressOrName)\n\n let accAddress: AccAddress\n if (!isHex(_addressOrName)) {\n accAddress = AccAddress.fromHex(_addressOrName)\n } else if (_addressOrName.startsWith('init')) {\n accAddress = _addressOrName\n } else {\n throw new Error('Invalid Initia address')\n }\n\n const response = await this.nativeProvider.auth.accountInfo(accAddress)\n return response.getSequenceNumber()\n }\n\n /**\n * Sends a signed transaction to the blockchain.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [sendOptions] - Optional parameters for sending the transaction.\n * @returns {Promise<TransactionPending>} A promise that resolves to the pending transaction.\n */\n async sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending> {\n type NativeSignedTransaction = Parameters<typeof this.nativeProvider.tx.broadcast>[0]\n const stx = transaction.signed as NativeSignedTransaction\n\n const response = await this.nativeProvider.tx.broadcast(stx) //TODO need change to broadcastAsync ??\n return TransactionPending.from(response)\n }\n\n /**\n * Confirms a pending transaction.\n *\n * @param {TransactionPending} pending - The pending transaction to confirm.\n * @param {object} [opts] - Optional parameters for the confirmation.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the transaction fails.\n */\n async confirmTransaction(pending: TransactionPending, _opts?: object): Promise<TransactionReceipt> {\n const nativePending = pending.pending as WaitTxBroadcastResult\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (((nativePending as any).code as number) !== 0) {\n throw new Error(nativePending.raw_log)\n }\n return Promise.resolve(TransactionReceipt.from(nativePending))\n }\n\n /**\n * Sends a signed transaction and waits for confirmation.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [opts] - Optional parameters for sending and confirming the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n */\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n const pending = await this.sendTransaction(transaction, opts)\n return this.confirmTransaction(pending, opts)\n }\n}\n","import { AccAddress, Key, MnemonicKey, ModeInfo, RawKey, Wallet } from '@initia/initia.js'\n\nimport {\n Provider,\n SignedTransaction,\n Signer,\n TransactionPending,\n TransactionReceipt,\n TransactionRequest,\n} from '@layerzerolabs/lz-core'\nimport { trim0x } from '@layerzerolabs/lz-utilities'\n\nimport { InitiaProvider } from '../providers'\n\n/**\n * Represents an Initia blockchain signer.\n * Implements the Signer interface for interacting with Initia-compatible blockchains.\n */\nexport class InitiaSigner implements Signer {\n public nativeKey: MnemonicKey | RawKey\n public nativeSigner: Wallet | undefined\n public provider: InitiaProvider | undefined\n\n /**\n * Creates an instance of InitiaSigner.\n *\n * @param {MnemonicKey | RawKey} signer - The Initia key to use as the signer.\n */\n private constructor(signer: MnemonicKey | RawKey) {\n this.nativeKey = signer\n }\n\n /**\n * Creates an instance of InitiaSigner from a MnemonicKey.\n *\n * @param {MnemonicKey} signer - The MnemonicKey to create the signer from.\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(signer: MnemonicKey): Signer\n\n /**\n * Creates an instance of InitiaSigner from a private key.\n *\n * @param {string} privKey - The private key to create the signer from.\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(privKey: string): Signer\n\n /**\n * Creates an instance of InitiaSigner from a mnemonic and derivation path.\n *\n * @param {string} mnemonic - The mnemonic to create the signer from.\n * @param {string} path - The derivation path (e.g., m/44'/637'/0'/0'/0').\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(mnemonic: string, path: string): Signer\n\n /**\n * Creates an instance of InitiaSigner from the given source.\n *\n * @param {string | MnemonicKey} source - The source to create the signer from.\n * @param {string} [path] - The derivation path (optional).\n * @returns {Signer} The created InitiaSigner instance.\n * @throws {Error} If the parameters are invalid.\n */\n static from(source: string | MnemonicKey, path?: string): Signer {\n if (source instanceof MnemonicKey) {\n return new this(source)\n } else if (typeof source === 'string' && path === undefined) {\n const signer = new RawKey(Buffer.from(trim0x(source), 'hex')) // todo double check\n return new this(signer)\n } else if (typeof source === 'string' && path !== undefined) {\n if (path.startsWith('m/')) {\n const [_, coinType, account, __, index] = path.match(/\\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0]\n const normalizeMnemonics = source\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n const key = new MnemonicKey({\n mnemonic: normalizeMnemonics,\n coinType,\n account,\n index,\n })\n return new this(key)\n }\n }\n throw new Error('Invalid parameters')\n }\n\n /**\n * Gets the native Initia wallet instance.\n * Invoke connect method first to make sure the native provider is not undefined.\n *\n * @returns {Wallet} The native Initia wallet instance.\n * @throws {Error} If the native provider is not connected.\n */\n get native(): Wallet {\n if (!this.nativeSigner) {\n throw new Error('Connect the native provider first with InitiaSigner.connect()')\n }\n return this.nativeSigner\n }\n\n /**\n * Connects the signer to a provider.\n *\n * @param {Provider} provider - The provider to connect to.\n * @returns {Signer} The connected signer.\n * @throws {Error} If the provider is not an instance of InitiaProvider.\n */\n connect(provider: Provider): Signer {\n if (!(provider instanceof InitiaProvider)) {\n throw new Error('Only InitiaProvider is supported.')\n }\n\n this.provider = provider\n this.nativeSigner = new Wallet(this.provider.native, this.nativeKey)\n return this\n }\n\n /**\n * Gets the address of the signer.\n *\n * @returns {Promise<string>} A promise that resolves to the address of the signer.\n */\n async getAddress(): Promise<string> {\n return Promise.resolve(AccAddress.toHex(this.nativeKey.accAddress))\n }\n\n /**\n * Gets the address of the signer.\n *\n * @returns {string} The address of the signer.\n */\n get address(): string {\n return AccAddress.toHex(this.nativeKey.accAddress)\n }\n\n /**\n * Sends a signed transaction and waits for confirmation.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [opts] - Optional parameters for sending and confirming the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the provider is not connected.\n */\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n if (this.provider === undefined) {\n throw new Error('provider is required')\n }\n return this.provider.sendAndConfirm(transaction, opts)\n }\n\n /**\n * Sends a signed transaction.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [sendOptions] - Optional parameters for sending the transaction.\n * @returns {Promise<TransactionPending>} A promise that resolves to the pending transaction.\n * @throws {Error} If the provider is not connected.\n */\n async sendTransaction(transaction: SignedTransaction, sendOptions?: object): Promise<TransactionPending> {\n if (this.provider === undefined) {\n throw new Error('provider is required')\n }\n\n return this.provider.sendTransaction(transaction, sendOptions)\n }\n\n /**\n * Signs a transaction.\n *\n * @param {TransactionRequest} transaction - The transaction request to sign.\n * @returns {Promise<SignedTransaction>} A promise that resolves to the signed transaction.\n * @throws {Error} If the native provider is not connected.\n */\n async signTransaction(transaction: TransactionRequest): Promise<SignedTransaction> {\n if (!this.nativeSigner) {\n throw new Error('Connect the native provider first with InitiaSigner.connect()')\n }\n\n type NativeTransactionRequest = Parameters<Key['signTx']>[0]\n const tx = transaction.request as NativeTransactionRequest\n const { account_number, sequence } = await this.nativeSigner.accountNumberAndSequence()\n const response = await this.nativeSigner.key.signTx(tx, {\n accountNumber: account_number,\n sequence,\n chainId: await this.nativeSigner.lcd.tendermint.chainId(),\n signMode: ModeInfo.SignMode.SIGN_MODE_DIRECT,\n })\n return SignedTransaction.from(response)\n }\n\n /**\n * Signs a buffer (e.g., a message hash) using the native Initia signer.\n *\n * @param {Uint8Array} buffer - The buffer to sign.\n * @returns {Promise<Uint8Array>} A promise that resolves to the signed buffer as a Uint8Array.\n */\n async signBuffer(buffer: Uint8Array): Promise<Uint8Array> {\n return this.nativeKey.sign(Buffer.from(buffer))\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/providers/initia.ts","../src/signers/initia.ts"],"names":["AccAddress","SignedTransaction"],"mappings":"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","file":"index.mjs","sourcesContent":["import { AccAddress, LCDClient, TxInfo } from '@initia/initia.js'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Finality,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\nimport { isHex } from '@layerzerolabs/lz-utilities'\nconst POLL_INTERVAL = 500\nconst CONFIRM_TIMEOUT = 30000\n/**\n * Represents an Initia blockchain provider.\n * Implements the Provider interface for interacting with Initia-compatible blockchains.\n */\nexport class InitiaProvider implements Provider {\n readonly nativeProvider: LCDClient\n\n /**\n * Creates an instance of InitiaProvider.\n *\n * @param {string} url - The URL of the Initia node.\n */\n private constructor(public url: string) {\n this.nativeProvider = new LCDClient(url)\n }\n\n /**\n * Creates an instance of InitiaProvider from the given URL.\n *\n * @param {string} url - The URL of the Initia node.\n * @returns {InitiaProvider} The created InitiaProvider instance.\n * @throws {Error} If the URL parameter is invalid.\n */\n static from(url: string): InitiaProvider\n static from(source: string): InitiaProvider {\n if (typeof source === 'string') {\n return new InitiaProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n /**\n * Gets the native Initia provider instance.\n *\n * @returns {LCDClient} The native Initia provider instance.\n */\n get native(): LCDClient {\n return this.nativeProvider\n }\n\n /**\n * Gets the balance of the specified address.\n *\n * @param {string} address - The address to get the balance of.\n * @returns {Promise<string>} A promise that resolves to the balance of the address.\n * @throws {Error} If the address is not a valid Initia address.\n */\n async getBalance(address: string): Promise<string> {\n let accAddress: AccAddress\n if (!isHex(address)) {\n accAddress = AccAddress.fromHex(address)\n } else if (address.startsWith('init')) {\n accAddress = address\n } else {\n throw new Error('Invalid Initia address')\n }\n\n //todo convert all address to aclAddress\n const resources = await this.nativeProvider.bank.balance(accAddress)\n const coins = resources[0]\n return coins.toString()\n }\n\n /**\n * Gets the block specified by blockTag.\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<Block>} A promise that resolves to the block.\n * @throws {Error} If the blockTag is invalid.\n */\n async getBlock(blockTag: string | number): Promise<Block> {\n let blockNumber = 0\n if (typeof blockTag === 'number') {\n blockNumber = blockTag\n } else if (blockTag === 'latest') {\n blockNumber = await this.nativeProvider.tendermint\n .blockInfo()\n .then((ledgerInfo) => Number(ledgerInfo.block.header.height))\n } else {\n throw new Error('Invalid blockTag')\n }\n\n const response = await this.nativeProvider.tendermint.blockInfo(blockNumber)\n return Block.from(response)\n }\n\n /**\n * Gets the block with transactions specified by blockTag.\n * Later: could invoke txInfosByHeight method in TxAPI\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<BlockWithTransactions>} A promise that resolves to the block with transactions.\n * @throws {Error} Method not implemented.\n */\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n\n /**\n * Gets the current block number.\n *\n * @returns {Promise<number>} A promise that resolves to the current block number.\n */\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.tendermint.blockInfo().then((ledgerInfo) => Number(ledgerInfo.block.header.height))\n }\n\n /**\n * Gets the current slot number for commitment, not suitable for Initia.\n *\n * @param {Finality} [finality] - The commitment level (optional).\n * @returns {Promise<number>} A promise that resolves to the current slot number.\n * @throws {Error} Method not implemented.\n */\n async getSlot(_finality?: Finality): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n /**\n * Gets the UNIX timestamp for the block identified by blockTag.\n *\n * @param {BlockTag} blockTag - The block tag to specify the block.\n * @returns {Promise<number>} A promise that resolves to the UNIX timestamp of the block.\n * @throws {Error} If the blockTag is invalid.\n */\n async getBlockTimestamp(blockTag: string | number): Promise<number> {\n if (typeof blockTag === 'number') {\n return this.nativeProvider.tendermint.blockInfo(blockTag).then((block) => Number(block.block.header.time))\n } else if (blockTag === 'latest') {\n return this.nativeProvider.tendermint.blockInfo().then((block) => Number(block.block.header.time))\n } else {\n throw new Error('Invalid blockTag')\n }\n }\n\n /**\n * Gets information about a transaction.\n *\n * @param {string} txHash - The hash of the transaction.\n * @returns {Promise<TransactionResponse>} A promise that resolves to the transaction response.\n * @throws {Error} If the transaction hash is invalid.\n */\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n if (!isHex(txHash)) {\n throw new Error('Invalid Initia transaction hash')\n }\n\n const response = await this.nativeProvider.tx.txInfo(txHash)\n return TransactionResponse.from(response)\n }\n\n /**\n * Gets the receipt of a transaction.\n *\n * @param {string} txHash - The hash of the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the transaction hash is invalid.\n */\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n if (!isHex(txHash)) {\n throw new Error('Invalid Initia transaction hash')\n }\n\n const response = await this.nativeProvider.tx.txInfo(txHash)\n return TransactionReceipt.from(response)\n }\n\n /**\n * Gets the number of transactions sent from the specified address.\n *\n * @param {string | Promise<string>} addressOrName - The address to get the number of transactions from.\n * @param {BlockTag | Promise<BlockTag>} [blockTag] - The block tag to get the number of transactions from (optional).\n * @returns {Promise<number>} A promise that resolves to the number of transactions sent from the address.\n * @throws {Error} If the address is invalid.\n */\n async getTransactionCount(\n addressOrName: string | Promise<string>,\n _blockTag?: BlockTag | Promise<BlockTag>\n ): Promise<number> {\n const _addressOrName = await Promise.resolve(addressOrName)\n\n let accAddress: AccAddress\n if (isHex(_addressOrName)) {\n accAddress = AccAddress.fromHex(_addressOrName)\n } else if (_addressOrName.startsWith('init')) {\n accAddress = _addressOrName\n } else {\n throw new Error(`Invalid Initia address ${_addressOrName}`)\n }\n\n const response = await this.nativeProvider.auth.accountInfo(accAddress)\n return response.getSequenceNumber()\n }\n\n /**\n * Sends a signed transaction to the blockchain.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [sendOptions] - Optional parameters for sending the transaction.\n * @returns {Promise<TransactionPending>} A promise that resolves to the pending transaction.\n */\n async sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending> {\n type NativeSignedTransaction = Parameters<typeof this.nativeProvider.tx.broadcastAsync>[0]\n const stx = transaction.signed as NativeSignedTransaction\n\n const response = await this.nativeProvider.tx.broadcastAsync(stx)\n return TransactionPending.from(response)\n }\n\n /**\n * Confirms a pending transaction.\n *\n * @param {TransactionPending} pending - The pending transaction to confirm.\n * @param {object} [opts] - Optional parameters for the confirmation.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the transaction fails.\n */\n async confirmTransaction(pending: TransactionPending, _opts?: object): Promise<TransactionReceipt> {\n let reponse: TxInfo | undefined\n let txhash: string\n if (typeof pending.pending === 'string') {\n txhash = pending.pending\n } else if (\n typeof pending.pending === 'object' &&\n pending.pending !== null &&\n 'txhash' in pending.pending &&\n typeof pending.pending.txhash === 'string'\n ) {\n // eslint-disable-next-line @typescript-eslint/prefer-destructuring\n txhash = pending.pending.txhash\n } else {\n throw new Error(`Invalid pending transaction: ${JSON.stringify(pending, null, 2)}`)\n }\n for (let i = 0; i <= CONFIRM_TIMEOUT / POLL_INTERVAL; i++) {\n try {\n reponse = await this.nativeProvider.tx.txInfo(txhash)\n } catch (error) {\n /* empty */\n }\n if (reponse !== undefined) {\n break\n }\n await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL))\n }\n if (reponse === undefined) {\n throw new Error(`Transaction ${txhash} not found`)\n } else if (reponse.code !== 0) {\n throw new Error(reponse.raw_log)\n }\n return Promise.resolve(TransactionReceipt.from(reponse))\n }\n\n /**\n * Sends a signed transaction and waits for confirmation.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [opts] - Optional parameters for sending and confirming the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n */\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n type NativeSignedTransaction = Parameters<typeof this.nativeProvider.tx.broadcast>[0]\n const stx = transaction.signed as NativeSignedTransaction\n const response = await this.nativeProvider.tx.broadcast(stx)\n return this.confirmTransaction(TransactionPending.from(response), opts)\n }\n}\n","import { AccAddress, CreateTxOptions, MnemonicKey, RawKey, Wallet } from '@initia/initia.js'\n\nimport {\n Provider,\n SignedTransaction,\n Signer,\n TransactionPending,\n TransactionReceipt,\n TransactionRequest,\n} from '@layerzerolabs/lz-core'\nimport { trim0x } from '@layerzerolabs/lz-utilities'\n\nimport { InitiaProvider } from '../providers'\n\n/**\n * Represents an Initia blockchain signer.\n * Implements the Signer interface for interacting with Initia-compatible blockchains.\n */\nexport class InitiaSigner implements Signer {\n public nativeKey: MnemonicKey | RawKey\n public nativeSigner: Wallet | undefined\n public provider: InitiaProvider | undefined\n\n /**\n * Creates an instance of InitiaSigner.\n *\n * @param {MnemonicKey | RawKey} signer - The Initia key to use as the signer.\n */\n private constructor(signer: MnemonicKey | RawKey) {\n this.nativeKey = signer\n }\n\n /**\n * Creates an instance of InitiaSigner from a MnemonicKey.\n *\n * @param {MnemonicKey} signer - The MnemonicKey to create the signer from.\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(signer: MnemonicKey): Signer\n\n /**\n * Creates an instance of InitiaSigner from a private key.\n *\n * @param {string} privKey - The private key to create the signer from.\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(privKey: string): Signer\n\n /**\n * Creates an instance of InitiaSigner from a mnemonic and derivation path.\n *\n * @param {string} mnemonic - The mnemonic to create the signer from.\n * @param {string} path - The derivation path (e.g., m/44'/637'/0'/0'/0').\n * @returns {Signer} The created InitiaSigner instance.\n */\n static from(mnemonic: string, path: string): Signer\n\n /**\n * Creates an instance of InitiaSigner from the given source.\n *\n * @param {string | MnemonicKey} source - The source to create the signer from.\n * @param {string} [path] - The derivation path (optional).\n * @returns {Signer} The created InitiaSigner instance.\n * @throws {Error} If the parameters are invalid.\n */\n static from(source: string | MnemonicKey, path?: string): Signer {\n if (source instanceof MnemonicKey) {\n return new this(source)\n } else if (typeof source === 'string' && path === undefined) {\n const signer = new RawKey(Buffer.from(trim0x(source), 'hex')) // todo double check\n return new this(signer)\n } else if (typeof source === 'string' && path !== undefined) {\n if (path.startsWith('m/')) {\n const [_, coinType, account, __, index] = path.match(/\\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0]\n const normalizeMnemonics = source\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n const key = new MnemonicKey({\n mnemonic: normalizeMnemonics,\n coinType,\n account,\n index,\n })\n return new this(key)\n }\n }\n throw new Error('Invalid parameters')\n }\n\n /**\n * Gets the native Initia wallet instance.\n * Invoke connect method first to make sure the native provider is not undefined.\n *\n * @returns {Wallet} The native Initia wallet instance.\n * @throws {Error} If the native provider is not connected.\n */\n get native(): Wallet {\n if (!this.nativeSigner) {\n throw new Error('Connect the native provider first with InitiaSigner.connect()')\n }\n return this.nativeSigner\n }\n\n /**\n * Connects the signer to a provider.\n *\n * @param {Provider} provider - The provider to connect to.\n * @returns {Signer} The connected signer.\n * @throws {Error} If the provider is not an instance of InitiaProvider.\n */\n connect(provider: Provider): Signer {\n if (!(provider instanceof InitiaProvider)) {\n throw new Error('Only InitiaProvider is supported.')\n }\n\n this.provider = provider\n this.nativeSigner = new Wallet(this.provider.native, this.nativeKey)\n return this\n }\n\n /**\n * Gets the address of the signer.\n *\n * @returns {Promise<string>} A promise that resolves to the address of the signer.\n */\n async getAddress(): Promise<string> {\n return Promise.resolve(AccAddress.toHex(this.nativeKey.accAddress))\n }\n\n /**\n * Gets the address of the signer.\n *\n * @returns {string} The address of the signer.\n */\n get address(): string {\n return AccAddress.toHex(this.nativeKey.accAddress)\n }\n\n /**\n * Sends a signed transaction and waits for confirmation.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [opts] - Optional parameters for sending and confirming the transaction.\n * @returns {Promise<TransactionReceipt>} A promise that resolves to the transaction receipt.\n * @throws {Error} If the provider is not connected.\n */\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n if (this.provider === undefined) {\n throw new Error('provider is required')\n }\n return this.provider.sendAndConfirm(transaction, opts)\n }\n\n /**\n * Sends a signed transaction.\n *\n * @param {SignedTransaction} transaction - The signed transaction to send.\n * @param {object} [sendOptions] - Optional parameters for sending the transaction.\n * @returns {Promise<TransactionPending>} A promise that resolves to the pending transaction.\n * @throws {Error} If the provider is not connected.\n */\n async sendTransaction(transaction: SignedTransaction, sendOptions?: object): Promise<TransactionPending> {\n if (this.provider === undefined) {\n throw new Error('provider is required')\n }\n\n return this.provider.sendTransaction(transaction, sendOptions)\n }\n\n /**\n * Signs a transaction.\n *\n * @param {TransactionRequest} transaction - The transaction request to sign.\n * @returns {Promise<SignedTransaction>} A promise that resolves to the signed transaction.\n * @throws {Error} If the native provider is not connected.\n */\n async signTransaction(transaction: TransactionRequest): Promise<SignedTransaction> {\n if (!this.nativeSigner) {\n throw new Error('Connect the native provider first with InitiaSigner.connect()')\n }\n const request = transaction.request as CreateTxOptions\n const response = await this.nativeSigner.createAndSignTx(request)\n return SignedTransaction.from(response)\n }\n\n /**\n * Signs a buffer (e.g., a message hash) using the native Initia signer.\n *\n * @param {Uint8Array} buffer - The buffer to sign.\n * @returns {Promise<Uint8Array>} A promise that resolves to the signed buffer as a Uint8Array.\n */\n async signBuffer(buffer: Uint8Array): Promise<Uint8Array> {\n return this.nativeKey.sign(Buffer.from(buffer))\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/lz-corekit-initia",
3
- "version": "3.0.26",
3
+ "version": "3.0.28",
4
4
  "description": "LayerZero Core Library",
5
5
  "license": "BUSL-1.1",
6
6
  "exports": {
@@ -24,14 +24,14 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@initia/initia.js": "^0.2.11",
27
- "@layerzerolabs/lz-core": "^3.0.26",
28
- "@layerzerolabs/lz-utilities": "^3.0.26",
29
- "@layerzerolabs/move-definitions": "^3.0.26"
27
+ "@layerzerolabs/lz-core": "^3.0.28",
28
+ "@layerzerolabs/lz-utilities": "^3.0.28",
29
+ "@layerzerolabs/move-definitions": "^3.0.28"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@jest/globals": "^29.7.0",
33
- "@layerzerolabs/tsup-config-next": "^3.0.26",
34
- "@layerzerolabs/typescript-config-next": "^3.0.26",
33
+ "@layerzerolabs/tsup-config-next": "^3.0.28",
34
+ "@layerzerolabs/typescript-config-next": "^3.0.28",
35
35
  "@types/jest": "^29.5.10",
36
36
  "jest": "^29.7.0",
37
37
  "jest-extended": "^4.0.2",