@layerzerolabs/lz-corekit-initia 2.3.45-initia-oft.5

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 ADDED
@@ -0,0 +1,91 @@
1
+ # @layerzerolabs/lz-corekit-initia
2
+
3
+ ## 2.3.45-initia-oft.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Build Initia,aptos,movement,bsc snapshot images with newest images
8
+ - Updated dependencies
9
+ - @layerzerolabs/lz-core@2.3.45-initia-oft.5
10
+ - @layerzerolabs/lz-utilities@2.3.45-initia-oft.5
11
+ - @layerzerolabs/move-definitions@2.3.45-initia-oft.5
12
+
13
+ ## 2.3.45-initia-oft.4
14
+
15
+ ### Patch Changes
16
+
17
+ - Build initia images with newest contracts
18
+ - Updated dependencies
19
+ - @layerzerolabs/lz-core@2.3.45-initia-oft.4
20
+ - @layerzerolabs/lz-utilities@2.3.45-initia-oft.4
21
+ - @layerzerolabs/move-definitions@2.3.45-initia-oft.4
22
+
23
+ ## 2.3.45-initia-oft.3
24
+
25
+ ### Patch Changes
26
+
27
+ - Fix Aptos OFT SDK to fit newest contracts
28
+ - Updated dependencies
29
+ - @layerzerolabs/lz-core@2.3.45-initia-oft.3
30
+ - @layerzerolabs/lz-utilities@2.3.45-initia-oft.3
31
+ - @layerzerolabs/move-definitions@2.3.45-initia-oft.3
32
+
33
+ ## 2.3.45-initia-oft.2
34
+
35
+ ### Patch Changes
36
+
37
+ - Fix bug in Initia OFT sdk
38
+ - Updated dependencies
39
+ - @layerzerolabs/lz-core@2.3.45-initia-oft.2
40
+ - @layerzerolabs/lz-utilities@2.3.45-initia-oft.2
41
+ - @layerzerolabs/move-definitions@2.3.45-initia-oft.2
42
+
43
+ ## 2.3.45-initia-oft.1
44
+
45
+ ### Patch Changes
46
+
47
+ - Build new initia images with newest contracts
48
+ - Updated dependencies
49
+ - @layerzerolabs/lz-core@2.3.45-initia-oft.1
50
+ - @layerzerolabs/lz-utilities@2.3.45-initia-oft.1
51
+ - @layerzerolabs/move-definitions@2.3.45-initia-oft.1
52
+
53
+ ## 2.3.45-initia-oft.0
54
+
55
+ ### Patch Changes
56
+
57
+ - Build new initia images with testnet deployments
58
+ - Updated dependencies
59
+ - @layerzerolabs/lz-core@2.3.45-initia-oft.0
60
+ - @layerzerolabs/lz-utilities@2.3.45-initia-oft.0
61
+ - @layerzerolabs/move-definitions@2.3.45-initia-oft.0
62
+
63
+ ## 2.3.43-initia-oft.2
64
+
65
+ ### Patch Changes
66
+
67
+ - Build new Initia snapshot images with multi tokens
68
+ - Updated dependencies
69
+ - @layerzerolabs/lz-core@2.3.43-initia-oft.2
70
+ - @layerzerolabs/lz-utilities@2.3.43-initia-oft.2
71
+ - @layerzerolabs/move-definitions@2.3.43-initia-oft.2
72
+
73
+ ## 2.3.43-initia-oft.1
74
+
75
+ ### Patch Changes
76
+
77
+ - Update Initia Snapshot image with newest contracts
78
+ - Updated dependencies
79
+ - @layerzerolabs/move-definitions@2.3.43-initia-oft.1
80
+ - @layerzerolabs/lz-core@2.3.43-initia-oft.1
81
+ - @layerzerolabs/lz-utilities@2.3.43-initia-oft.1
82
+
83
+ ## 2.3.43-initia-oft.0
84
+
85
+ ### Patch Changes
86
+
87
+ - Building new Initia snapshot image, including OFT TokenOne
88
+ - Updated dependencies
89
+ - @layerzerolabs/move-definitions@2.3.43-initia-oft.0
90
+ - @layerzerolabs/lz-core@2.3.43-initia-oft.0
91
+ - @layerzerolabs/lz-utilities@2.3.43-initia-oft.0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @layerzerolabs/lz-corekit
package/dist/index.cjs ADDED
@@ -0,0 +1,270 @@
1
+ 'use strict';
2
+
3
+ var initia_js = require('@initia/initia.js');
4
+ var ethers = require('ethers');
5
+ var lzCore = require('@layerzerolabs/lz-core');
6
+ var lzUtilities = require('@layerzerolabs/lz-utilities');
7
+
8
+ // src/providers/initia.ts
9
+ var InitiaProvider = class _InitiaProvider {
10
+ constructor(url) {
11
+ this.url = url;
12
+ this.nativeProvider = new initia_js.LCDClient(url);
13
+ }
14
+ static from(source) {
15
+ if (typeof source === "string") {
16
+ return new _InitiaProvider(source);
17
+ } else {
18
+ throw new Error("Invalid parameters");
19
+ }
20
+ }
21
+ get native() {
22
+ return this.nativeProvider;
23
+ }
24
+ async getBalance(address) {
25
+ let accAddress;
26
+ if (!lzUtilities.isHexString(address)) {
27
+ accAddress = initia_js.AccAddress.fromHex(address);
28
+ } else if (address.startsWith("init")) {
29
+ accAddress = address;
30
+ } else {
31
+ throw new Error("Invalid Aptos address");
32
+ }
33
+ const resources = await this.nativeProvider.bank.balance(accAddress);
34
+ const coins = resources[0];
35
+ return coins.toString();
36
+ }
37
+ async getBlock(blockTag) {
38
+ let blockNumber = 0;
39
+ if (typeof blockTag === "number") {
40
+ blockNumber = blockTag;
41
+ } else if (blockTag === "latest") {
42
+ blockNumber = await this.nativeProvider.tendermint.blockInfo().then((ledgerInfo) => ethers.BigNumber.from(ledgerInfo.block.header.height).toNumber());
43
+ } else {
44
+ throw new Error("Invalid blockTag");
45
+ }
46
+ const response = await this.nativeProvider.tendermint.blockInfo(blockNumber);
47
+ return lzCore.Block.from(response);
48
+ }
49
+ async getBlockWithTransactions(blockTag) {
50
+ return Promise.reject(new Error("Method not implemented."));
51
+ }
52
+ async getBlockNumber() {
53
+ return this.nativeProvider.tendermint.blockInfo().then((ledgerInfo) => ethers.BigNumber.from(ledgerInfo.block.header.height).toNumber());
54
+ }
55
+ async getSlot(_finality) {
56
+ await Promise.resolve();
57
+ throw new Error("Method not implemented.");
58
+ }
59
+ async getBlockTimestamp(blockTag) {
60
+ if (typeof blockTag === "number") {
61
+ return this.nativeProvider.tendermint.blockInfo(blockTag).then((block) => ethers.BigNumber.from(block.block.header.time).toNumber());
62
+ } else if (blockTag === "latest") {
63
+ return this.nativeProvider.tendermint.blockInfo().then((block) => ethers.BigNumber.from(block.block.header.time).toNumber());
64
+ } else {
65
+ throw new Error("Invalid blockTag");
66
+ }
67
+ }
68
+ async getTransaction(txHash) {
69
+ if (!lzUtilities.isHexString(txHash)) {
70
+ throw new Error("Invalid Initia transaction hash");
71
+ }
72
+ const response = await this.nativeProvider.tx.txInfo(txHash);
73
+ return lzCore.TransactionResponse.from(response);
74
+ }
75
+ async getTransactionReceipt(txHash) {
76
+ if (!lzUtilities.isHexString(txHash)) {
77
+ throw new Error("Invalid Initia transaction hash");
78
+ }
79
+ const response = await this.nativeProvider.tx.txInfo(txHash);
80
+ return lzCore.TransactionReceipt.from(response);
81
+ }
82
+ async getTransactionCount(addressOrName, _blockTag) {
83
+ const _addressOrName = await Promise.resolve(addressOrName);
84
+ let accAddress;
85
+ if (!lzUtilities.isHexString(_addressOrName)) {
86
+ accAddress = initia_js.AccAddress.fromHex(_addressOrName);
87
+ } else if (_addressOrName.startsWith("init")) {
88
+ accAddress = _addressOrName;
89
+ } else {
90
+ throw new Error("Invalid Aptos address");
91
+ }
92
+ const response = await this.nativeProvider.auth.accountInfo(accAddress);
93
+ return response.getSequenceNumber();
94
+ }
95
+ async sendTransaction(transaction, _sendOptions) {
96
+ const stx = transaction.signed;
97
+ const response = await this.nativeProvider.tx.broadcast(stx);
98
+ return lzCore.TransactionPending.from(response);
99
+ }
100
+ async sendAndConfirm(transaction, opts) {
101
+ const stx = transaction.signed;
102
+ const response = await this.nativeProvider.tx.broadcast(stx);
103
+ if (response.code !== 0) {
104
+ throw new Error(response.raw_log);
105
+ }
106
+ return lzCore.TransactionReceipt.from(response);
107
+ }
108
+ };
109
+ function convertPayloadToMsgExecute(sender, payload) {
110
+ const functionStructs = payload.function.split("::");
111
+ const moduleAddress = functionStructs[0];
112
+ const moduleName = functionStructs[1];
113
+ const functionName = functionStructs[2];
114
+ const args = covertPayloadArgs(payload.functionArgumentTypes ?? [], payload.functionArguments);
115
+ const msg = new initia_js.MsgExecute(
116
+ sender,
117
+ // sender address
118
+ moduleAddress,
119
+ // module owner address
120
+ moduleName,
121
+ // module name
122
+ functionName,
123
+ // function name
124
+ [],
125
+ // type arguments
126
+ args
127
+ );
128
+ return msg;
129
+ }
130
+ function covertPayloadArgs(functionArgumentTypes, functionArguments) {
131
+ const args = [];
132
+ for (let i = 0; i < functionArguments.length; i++) {
133
+ args.push(convertArg(functionArgumentTypes[i], functionArguments[i]));
134
+ }
135
+ return args;
136
+ }
137
+ function convertArg(argsType, arg) {
138
+ switch (argsType) {
139
+ case "bool":
140
+ return initia_js.bcs.bool().serialize(arg).toBase64();
141
+ case "u256":
142
+ return initia_js.bcs.u256().serialize(arg).toBase64();
143
+ case "u128":
144
+ return initia_js.bcs.u128().serialize(arg).toBase64();
145
+ case "u64":
146
+ return initia_js.bcs.u64().serialize(arg).toBase64();
147
+ case "u32":
148
+ return initia_js.bcs.u32().serialize(arg).toBase64();
149
+ case "u16":
150
+ return initia_js.bcs.u16().serialize(arg).toBase64();
151
+ case "u8":
152
+ return initia_js.bcs.u8().serialize(arg).toBase64();
153
+ case "address":
154
+ return initia_js.bcs.address().serialize(arg).toBase64();
155
+ case "vector<u8>":
156
+ return initia_js.bcs.vector(initia_js.bcs.u8()).serialize(arg).toBase64();
157
+ case "vector<address>":
158
+ return initia_js.bcs.vector(initia_js.bcs.address()).serialize(arg).toBase64();
159
+ case "vector<vector<u8>>":
160
+ return initia_js.bcs.vector(initia_js.bcs.vector(initia_js.bcs.u8())).serialize(arg).toBase64();
161
+ default:
162
+ throw new Error(`Invalid type argsType: ${argsType.toString()}`);
163
+ }
164
+ }
165
+
166
+ // src/signers/initia.ts
167
+ var InitiaSigner = class {
168
+ constructor(signer) {
169
+ this.nativeKey = signer;
170
+ }
171
+ static from(source, path) {
172
+ if (source instanceof initia_js.MnemonicKey) {
173
+ return new this(source);
174
+ } else if (typeof source === "string" && path === void 0) {
175
+ const signer = new initia_js.RawKey(Buffer.from(lzUtilities.trim0x(source)));
176
+ return new this(signer);
177
+ } else if (typeof source === "string" && path !== void 0) {
178
+ if (path.startsWith("m/")) {
179
+ const [_, coinType, account, __, index] = path.match(/\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0];
180
+ const normalizeMnemonics = source.trim().split(/\s+/).map((part) => part.toLowerCase()).join(" ");
181
+ const key = new initia_js.MnemonicKey({
182
+ mnemonic: normalizeMnemonics,
183
+ coinType,
184
+ account,
185
+ index
186
+ });
187
+ return new this(key);
188
+ }
189
+ }
190
+ throw new Error("Invalid parameters");
191
+ }
192
+ get native() {
193
+ if (!this.nativeSigner) {
194
+ throw new Error("Connect the native provider first with InitiaSigner.connect()");
195
+ }
196
+ return this.nativeSigner;
197
+ }
198
+ connect(provider) {
199
+ if (!(provider instanceof InitiaProvider)) {
200
+ throw new Error("Only InitiaProvider is supported.");
201
+ }
202
+ this.provider = provider;
203
+ this.nativeSigner = new initia_js.Wallet(this.provider.native, this.nativeKey);
204
+ return this;
205
+ }
206
+ async getAddress() {
207
+ return Promise.resolve(initia_js.AccAddress.toHex(this.nativeKey.accAddress));
208
+ }
209
+ get address() {
210
+ return initia_js.AccAddress.toHex(this.nativeKey.accAddress);
211
+ }
212
+ async sendAndConfirm(transaction, opts) {
213
+ if (this.provider === void 0) {
214
+ throw new Error("provider is required");
215
+ }
216
+ return this.provider.sendAndConfirm(transaction, opts);
217
+ }
218
+ async sendTransaction(transaction, sendOptions) {
219
+ if (this.provider === void 0) {
220
+ throw new Error("provider is required");
221
+ }
222
+ return this.provider.sendTransaction(transaction, sendOptions);
223
+ }
224
+ async signTransaction(transaction) {
225
+ if (!this.nativeSigner) {
226
+ throw new Error("Connect the native provider first with InitiaSigner.connect()");
227
+ }
228
+ const tx = transaction.request;
229
+ const { account_number, sequence } = await this.nativeSigner.accountNumberAndSequence();
230
+ const response = await this.nativeSigner.key.signTx(tx, {
231
+ accountNumber: account_number,
232
+ sequence,
233
+ chainId: await this.nativeSigner.lcd.tendermint.chainId(),
234
+ signMode: initia_js.ModeInfo.SignMode.SIGN_MODE_DIRECT
235
+ });
236
+ return lzCore.SignedTransaction.from(response);
237
+ }
238
+ async signBuffer(buffer) {
239
+ return this.nativeKey.sign(Buffer.from(buffer));
240
+ }
241
+ async buildTransaction(buildTxRequest) {
242
+ const sender = this.nativeSigner.key.accAddress.toString();
243
+ const msg = convertPayloadToMsgExecute(sender, buildTxRequest.payload);
244
+ const createOptions = {
245
+ msgs: [msg]
246
+ };
247
+ if (buildTxRequest.options?.gas !== void 0) {
248
+ createOptions.gas = buildTxRequest.options.gas;
249
+ }
250
+ if (buildTxRequest.options?.gasPrice !== void 0) {
251
+ if (isNaN(Number(buildTxRequest.options.gasPrice)) && buildTxRequest.options.gasPrice.endsWith("uinit")) {
252
+ createOptions.gasPrices = buildTxRequest.options.gasPrice;
253
+ } else if (!isNaN(Number(buildTxRequest.options.gasPrice))) {
254
+ createOptions.gasPrices = `${buildTxRequest.options.gasPrice}uinit`;
255
+ } else {
256
+ throw Error(`Invalid gas price for initia :${buildTxRequest.options.gasPrice}`);
257
+ }
258
+ }
259
+ const tx = await this.nativeSigner.createTx(createOptions);
260
+ return lzCore.TransactionRequest.from(tx);
261
+ }
262
+ };
263
+
264
+ exports.InitiaProvider = InitiaProvider;
265
+ exports.InitiaSigner = InitiaSigner;
266
+ exports.convertArg = convertArg;
267
+ exports.convertPayloadToMsgExecute = convertPayloadToMsgExecute;
268
+ exports.covertPayloadArgs = covertPayloadArgs;
269
+ //# sourceMappingURL=out.js.map
270
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/initia.ts","../src/signers/initia.ts","../src/signers/utils.ts"],"names":["AccAddress","SignedTransaction"],"mappings":"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","sourcesContent":["import { AccAddress, LCDClient } from '@initia/initia.js'\nimport { BigNumber } from 'ethers'\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 { isHexString } from '@layerzerolabs/lz-utilities'\n\nexport class InitiaProvider implements Provider {\n readonly nativeProvider: LCDClient\n\n private constructor(public url: string) {\n this.nativeProvider = new LCDClient(url)\n }\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 get native(): LCDClient {\n return this.nativeProvider\n }\n\n async getBalance(address: string): Promise<string> {\n let accAddress: AccAddress\n if (!isHexString(address)) {\n accAddress = AccAddress.fromHex(address)\n } else if (address.startsWith('init')) {\n accAddress = address\n } else {\n throw new Error('Invalid Aptos 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 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) => BigNumber.from(ledgerInfo.block.header.height).toNumber())\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 async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.tendermint\n .blockInfo()\n .then((ledgerInfo) => BigNumber.from(ledgerInfo.block.header.height).toNumber())\n }\n\n async getSlot(_finality?: Finality): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n async getBlockTimestamp(blockTag: string | number): Promise<number> {\n if (typeof blockTag === 'number') {\n return this.nativeProvider.tendermint\n .blockInfo(blockTag)\n .then((block) => BigNumber.from(block.block.header.time).toNumber())\n } else if (blockTag === 'latest') {\n return this.nativeProvider.tendermint\n .blockInfo()\n .then((block) => BigNumber.from(block.block.header.time).toNumber())\n } else {\n throw new Error('Invalid blockTag')\n }\n }\n\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n if (!isHexString(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 async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n if (!isHexString(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 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 (!isHexString(_addressOrName)) {\n accAddress = AccAddress.fromHex(_addressOrName)\n } else if (_addressOrName.startsWith('init')) {\n accAddress = _addressOrName\n } else {\n throw new Error('Invalid Aptos address')\n }\n const response = await this.nativeProvider.auth.accountInfo(accAddress)\n return response.getSequenceNumber()\n }\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 async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n // const pending = (await this.sendTransaction(transaction, opts)).pending as aptos.Types.PendingTransaction\n // const response = await this.nativeProvider.waitForTransactionWithResult(pending.hash)\n // return TransactionReceipt.from(response)\n\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (((response as any).code as number) !== 0) {\n throw new Error(response.raw_log)\n }\n return TransactionReceipt.from(response)\n }\n}\n","import { AccAddress, CreateTxOptions, 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\nimport { InitiaBuildTxRequest } from './types'\nimport { convertPayloadToMsgExecute } from './utils'\n\nexport class InitiaSigner implements Signer<InitiaBuildTxRequest> {\n public nativeKey: MnemonicKey | RawKey\n public nativeSigner: Wallet | undefined\n public provider: InitiaProvider | undefined\n\n private constructor(signer: MnemonicKey | RawKey) {\n this.nativeKey = signer\n }\n\n static from(signer: MnemonicKey): Signer<InitiaBuildTxRequest>\n static from(privKey: string): Signer<InitiaBuildTxRequest>\n /**\n *\n * @param mnemonic\n * @param path e.g. m/44'/637'/0'/0'/0'\n */\n static from(mnemonic: string, path: string): Signer<InitiaBuildTxRequest>\n\n static from(source: string | MnemonicKey, path?: string): Signer<InitiaBuildTxRequest> {\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))) // 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 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 connect(provider: Provider): Signer<InitiaBuildTxRequest> {\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 async getAddress(): Promise<string> {\n return Promise.resolve(AccAddress.toHex(this.nativeKey.accAddress))\n }\n\n get address(): string {\n return AccAddress.toHex(this.nativeKey.accAddress)\n }\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 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 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\n const { account_number, sequence } = await this.nativeSigner.accountNumberAndSequence()\n\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 async signBuffer(buffer: Uint8Array): Promise<Uint8Array> {\n return this.nativeKey.sign(Buffer.from(buffer))\n }\n\n async buildTransaction(buildTxRequest: InitiaBuildTxRequest): Promise<TransactionRequest> {\n const sender = this.nativeSigner!.key.accAddress.toString()\n const msg = convertPayloadToMsgExecute(sender, buildTxRequest.payload)\n const createOptions: CreateTxOptions & {\n sequence?: number\n } = {\n msgs: [msg],\n }\n if (buildTxRequest.options?.gas !== undefined) {\n createOptions.gas = buildTxRequest.options.gas\n }\n if (buildTxRequest.options?.gasPrice !== undefined) {\n if (isNaN(Number(buildTxRequest.options.gasPrice)) && buildTxRequest.options.gasPrice.endsWith('uinit')) {\n createOptions.gasPrices = buildTxRequest.options.gasPrice\n } else if (!isNaN(Number(buildTxRequest.options.gasPrice))) {\n createOptions.gasPrices = `${buildTxRequest.options.gasPrice}uinit`\n } else {\n throw Error(`Invalid gas price for initia :${buildTxRequest.options.gasPrice}`)\n }\n }\n // createOptions.sequence = initial + offset\n const tx = await this.nativeSigner!.createTx(createOptions)\n return TransactionRequest.from(tx)\n }\n}\n","import { Msg, MsgExecute, bcs } from '@initia/initia.js'\n\nimport { EntryFunctionArgumentTypes, InputEntryFunctionData } from '@layerzerolabs/move-definitions'\n\nexport function convertPayloadToMsgExecute(sender: string, payload: InputEntryFunctionData): Msg {\n const functionStructs = payload.function.split('::')\n const moduleAddress = functionStructs[0]\n const moduleName = functionStructs[1]\n const functionName = functionStructs[2]\n const args = covertPayloadArgs(payload.functionArgumentTypes ?? [], payload.functionArguments)\n const msg = new MsgExecute(\n sender, // sender address\n moduleAddress, // module owner address\n moduleName, // module name\n functionName, // function name\n [], // type arguments\n args\n )\n return msg\n}\nexport function covertPayloadArgs(\n functionArgumentTypes: string[],\n functionArguments: EntryFunctionArgumentTypes[]\n): string[] {\n const args: string[] = []\n for (let i = 0; i < functionArguments.length; i++) {\n args.push(convertArg(functionArgumentTypes[i], functionArguments[i]))\n }\n return args\n}\n\nexport function convertArg(argsType: string, arg: EntryFunctionArgumentTypes): string {\n switch (argsType) {\n case 'bool':\n return bcs\n .bool()\n .serialize(arg as boolean)\n .toBase64()\n case 'u256':\n return bcs\n .u256()\n .serialize(arg as bigint)\n .toBase64()\n case 'u128':\n return bcs\n .u128()\n .serialize(arg as bigint)\n .toBase64()\n case 'u64':\n return bcs\n .u64()\n .serialize(arg as bigint)\n .toBase64()\n case 'u32':\n return bcs\n .u32()\n .serialize(arg as number)\n .toBase64()\n case 'u16':\n return bcs\n .u16()\n .serialize(arg as number)\n .toBase64()\n case 'u8':\n return bcs\n .u8()\n .serialize(arg as number)\n .toBase64()\n case 'address':\n return bcs\n .address()\n .serialize(arg as string)\n .toBase64()\n case 'vector<u8>':\n return bcs\n .vector(bcs.u8())\n .serialize(arg as unknown as Uint8Array)\n .toBase64()\n case 'vector<address>':\n return bcs\n .vector(bcs.address())\n .serialize(arg as unknown as string[])\n .toBase64()\n case 'vector<vector<u8>>':\n return bcs\n .vector(bcs.vector(bcs.u8()))\n .serialize(arg as unknown as Uint8Array[])\n .toBase64()\n default:\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(`Invalid type argsType: ${argsType.toString()}`)\n }\n}\n"]}
@@ -0,0 +1,62 @@
1
+ import { LCDClient, MnemonicKey, RawKey, Wallet, Msg } from '@initia/initia.js';
2
+ import { Provider, Block, BlockWithTransactions, Finality, TransactionResponse, TransactionReceipt, BlockTag, SignedTransaction, TransactionPending, Signer, TransactionRequest } from '@layerzerolabs/lz-core';
3
+ import { InputEntryFunctionData, EntryFunctionArgumentTypes } from '@layerzerolabs/move-definitions';
4
+
5
+ declare class InitiaProvider implements Provider {
6
+ url: string;
7
+ readonly nativeProvider: LCDClient;
8
+ private constructor();
9
+ static from(url: string): InitiaProvider;
10
+ get native(): LCDClient;
11
+ getBalance(address: string): Promise<string>;
12
+ getBlock(blockTag: string | number): Promise<Block>;
13
+ getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions>;
14
+ getBlockNumber(): Promise<number>;
15
+ getSlot(_finality?: Finality): Promise<number>;
16
+ getBlockTimestamp(blockTag: string | number): Promise<number>;
17
+ getTransaction(txHash: string): Promise<TransactionResponse>;
18
+ getTransactionReceipt(txHash: string): Promise<TransactionReceipt>;
19
+ getTransactionCount(addressOrName: string | Promise<string>, _blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;
20
+ sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending>;
21
+ sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
22
+ }
23
+
24
+ interface InitiaBuildTxRequest {
25
+ payload: InputEntryFunctionData;
26
+ options?: InitiaBuildTxRequestOptions;
27
+ }
28
+ interface InitiaBuildTxRequestOptions {
29
+ sequence?: number;
30
+ gas?: string;
31
+ gasPrice?: string;
32
+ }
33
+
34
+ declare class InitiaSigner implements Signer<InitiaBuildTxRequest> {
35
+ nativeKey: MnemonicKey | RawKey;
36
+ nativeSigner: Wallet | undefined;
37
+ provider: InitiaProvider | undefined;
38
+ private constructor();
39
+ static from(signer: MnemonicKey): Signer<InitiaBuildTxRequest>;
40
+ static from(privKey: string): Signer<InitiaBuildTxRequest>;
41
+ /**
42
+ *
43
+ * @param mnemonic
44
+ * @param path e.g. m/44'/637'/0'/0'/0'
45
+ */
46
+ static from(mnemonic: string, path: string): Signer<InitiaBuildTxRequest>;
47
+ get native(): Wallet;
48
+ connect(provider: Provider): Signer<InitiaBuildTxRequest>;
49
+ getAddress(): Promise<string>;
50
+ get address(): string;
51
+ sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
52
+ sendTransaction(transaction: SignedTransaction, sendOptions?: object): Promise<TransactionPending>;
53
+ signTransaction(transaction: TransactionRequest): Promise<SignedTransaction>;
54
+ signBuffer(buffer: Uint8Array): Promise<Uint8Array>;
55
+ buildTransaction(buildTxRequest: InitiaBuildTxRequest): Promise<TransactionRequest>;
56
+ }
57
+
58
+ declare function convertPayloadToMsgExecute(sender: string, payload: InputEntryFunctionData): Msg;
59
+ declare function covertPayloadArgs(functionArgumentTypes: string[], functionArguments: EntryFunctionArgumentTypes[]): string[];
60
+ declare function convertArg(argsType: string, arg: EntryFunctionArgumentTypes): string;
61
+
62
+ export { type InitiaBuildTxRequest, type InitiaBuildTxRequestOptions, InitiaProvider, InitiaSigner, convertArg, convertPayloadToMsgExecute, covertPayloadArgs };
@@ -0,0 +1,62 @@
1
+ import { LCDClient, MnemonicKey, RawKey, Wallet, Msg } from '@initia/initia.js';
2
+ import { Provider, Block, BlockWithTransactions, Finality, TransactionResponse, TransactionReceipt, BlockTag, SignedTransaction, TransactionPending, Signer, TransactionRequest } from '@layerzerolabs/lz-core';
3
+ import { InputEntryFunctionData, EntryFunctionArgumentTypes } from '@layerzerolabs/move-definitions';
4
+
5
+ declare class InitiaProvider implements Provider {
6
+ url: string;
7
+ readonly nativeProvider: LCDClient;
8
+ private constructor();
9
+ static from(url: string): InitiaProvider;
10
+ get native(): LCDClient;
11
+ getBalance(address: string): Promise<string>;
12
+ getBlock(blockTag: string | number): Promise<Block>;
13
+ getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions>;
14
+ getBlockNumber(): Promise<number>;
15
+ getSlot(_finality?: Finality): Promise<number>;
16
+ getBlockTimestamp(blockTag: string | number): Promise<number>;
17
+ getTransaction(txHash: string): Promise<TransactionResponse>;
18
+ getTransactionReceipt(txHash: string): Promise<TransactionReceipt>;
19
+ getTransactionCount(addressOrName: string | Promise<string>, _blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;
20
+ sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending>;
21
+ sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
22
+ }
23
+
24
+ interface InitiaBuildTxRequest {
25
+ payload: InputEntryFunctionData;
26
+ options?: InitiaBuildTxRequestOptions;
27
+ }
28
+ interface InitiaBuildTxRequestOptions {
29
+ sequence?: number;
30
+ gas?: string;
31
+ gasPrice?: string;
32
+ }
33
+
34
+ declare class InitiaSigner implements Signer<InitiaBuildTxRequest> {
35
+ nativeKey: MnemonicKey | RawKey;
36
+ nativeSigner: Wallet | undefined;
37
+ provider: InitiaProvider | undefined;
38
+ private constructor();
39
+ static from(signer: MnemonicKey): Signer<InitiaBuildTxRequest>;
40
+ static from(privKey: string): Signer<InitiaBuildTxRequest>;
41
+ /**
42
+ *
43
+ * @param mnemonic
44
+ * @param path e.g. m/44'/637'/0'/0'/0'
45
+ */
46
+ static from(mnemonic: string, path: string): Signer<InitiaBuildTxRequest>;
47
+ get native(): Wallet;
48
+ connect(provider: Provider): Signer<InitiaBuildTxRequest>;
49
+ getAddress(): Promise<string>;
50
+ get address(): string;
51
+ sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
52
+ sendTransaction(transaction: SignedTransaction, sendOptions?: object): Promise<TransactionPending>;
53
+ signTransaction(transaction: TransactionRequest): Promise<SignedTransaction>;
54
+ signBuffer(buffer: Uint8Array): Promise<Uint8Array>;
55
+ buildTransaction(buildTxRequest: InitiaBuildTxRequest): Promise<TransactionRequest>;
56
+ }
57
+
58
+ declare function convertPayloadToMsgExecute(sender: string, payload: InputEntryFunctionData): Msg;
59
+ declare function covertPayloadArgs(functionArgumentTypes: string[], functionArguments: EntryFunctionArgumentTypes[]): string[];
60
+ declare function convertArg(argsType: string, arg: EntryFunctionArgumentTypes): string;
61
+
62
+ export { type InitiaBuildTxRequest, type InitiaBuildTxRequestOptions, InitiaProvider, InitiaSigner, convertArg, convertPayloadToMsgExecute, covertPayloadArgs };
package/dist/index.mjs ADDED
@@ -0,0 +1,264 @@
1
+ import { LCDClient, AccAddress, MsgExecute, bcs, MnemonicKey, RawKey, Wallet, ModeInfo } from '@initia/initia.js';
2
+ import { BigNumber } from 'ethers';
3
+ import { Block, TransactionResponse, TransactionReceipt, TransactionPending, SignedTransaction, TransactionRequest } from '@layerzerolabs/lz-core';
4
+ import { isHexString, trim0x } from '@layerzerolabs/lz-utilities';
5
+
6
+ // src/providers/initia.ts
7
+ var InitiaProvider = class _InitiaProvider {
8
+ constructor(url) {
9
+ this.url = url;
10
+ this.nativeProvider = new LCDClient(url);
11
+ }
12
+ static from(source) {
13
+ if (typeof source === "string") {
14
+ return new _InitiaProvider(source);
15
+ } else {
16
+ throw new Error("Invalid parameters");
17
+ }
18
+ }
19
+ get native() {
20
+ return this.nativeProvider;
21
+ }
22
+ async getBalance(address) {
23
+ let accAddress;
24
+ if (!isHexString(address)) {
25
+ accAddress = AccAddress.fromHex(address);
26
+ } else if (address.startsWith("init")) {
27
+ accAddress = address;
28
+ } else {
29
+ throw new Error("Invalid Aptos address");
30
+ }
31
+ const resources = await this.nativeProvider.bank.balance(accAddress);
32
+ const coins = resources[0];
33
+ return coins.toString();
34
+ }
35
+ async getBlock(blockTag) {
36
+ let blockNumber = 0;
37
+ if (typeof blockTag === "number") {
38
+ blockNumber = blockTag;
39
+ } else if (blockTag === "latest") {
40
+ blockNumber = await this.nativeProvider.tendermint.blockInfo().then((ledgerInfo) => BigNumber.from(ledgerInfo.block.header.height).toNumber());
41
+ } else {
42
+ throw new Error("Invalid blockTag");
43
+ }
44
+ const response = await this.nativeProvider.tendermint.blockInfo(blockNumber);
45
+ return Block.from(response);
46
+ }
47
+ async getBlockWithTransactions(blockTag) {
48
+ return Promise.reject(new Error("Method not implemented."));
49
+ }
50
+ async getBlockNumber() {
51
+ return this.nativeProvider.tendermint.blockInfo().then((ledgerInfo) => BigNumber.from(ledgerInfo.block.header.height).toNumber());
52
+ }
53
+ async getSlot(_finality) {
54
+ await Promise.resolve();
55
+ throw new Error("Method not implemented.");
56
+ }
57
+ async getBlockTimestamp(blockTag) {
58
+ if (typeof blockTag === "number") {
59
+ return this.nativeProvider.tendermint.blockInfo(blockTag).then((block) => BigNumber.from(block.block.header.time).toNumber());
60
+ } else if (blockTag === "latest") {
61
+ return this.nativeProvider.tendermint.blockInfo().then((block) => BigNumber.from(block.block.header.time).toNumber());
62
+ } else {
63
+ throw new Error("Invalid blockTag");
64
+ }
65
+ }
66
+ async getTransaction(txHash) {
67
+ if (!isHexString(txHash)) {
68
+ throw new Error("Invalid Initia transaction hash");
69
+ }
70
+ const response = await this.nativeProvider.tx.txInfo(txHash);
71
+ return TransactionResponse.from(response);
72
+ }
73
+ async getTransactionReceipt(txHash) {
74
+ if (!isHexString(txHash)) {
75
+ throw new Error("Invalid Initia transaction hash");
76
+ }
77
+ const response = await this.nativeProvider.tx.txInfo(txHash);
78
+ return TransactionReceipt.from(response);
79
+ }
80
+ async getTransactionCount(addressOrName, _blockTag) {
81
+ const _addressOrName = await Promise.resolve(addressOrName);
82
+ let accAddress;
83
+ if (!isHexString(_addressOrName)) {
84
+ accAddress = AccAddress.fromHex(_addressOrName);
85
+ } else if (_addressOrName.startsWith("init")) {
86
+ accAddress = _addressOrName;
87
+ } else {
88
+ throw new Error("Invalid Aptos address");
89
+ }
90
+ const response = await this.nativeProvider.auth.accountInfo(accAddress);
91
+ return response.getSequenceNumber();
92
+ }
93
+ async sendTransaction(transaction, _sendOptions) {
94
+ const stx = transaction.signed;
95
+ const response = await this.nativeProvider.tx.broadcast(stx);
96
+ return TransactionPending.from(response);
97
+ }
98
+ async sendAndConfirm(transaction, opts) {
99
+ const stx = transaction.signed;
100
+ const response = await this.nativeProvider.tx.broadcast(stx);
101
+ if (response.code !== 0) {
102
+ throw new Error(response.raw_log);
103
+ }
104
+ return TransactionReceipt.from(response);
105
+ }
106
+ };
107
+ function convertPayloadToMsgExecute(sender, payload) {
108
+ const functionStructs = payload.function.split("::");
109
+ const moduleAddress = functionStructs[0];
110
+ const moduleName = functionStructs[1];
111
+ const functionName = functionStructs[2];
112
+ const args = covertPayloadArgs(payload.functionArgumentTypes ?? [], payload.functionArguments);
113
+ const msg = new MsgExecute(
114
+ sender,
115
+ // sender address
116
+ moduleAddress,
117
+ // module owner address
118
+ moduleName,
119
+ // module name
120
+ functionName,
121
+ // function name
122
+ [],
123
+ // type arguments
124
+ args
125
+ );
126
+ return msg;
127
+ }
128
+ function covertPayloadArgs(functionArgumentTypes, functionArguments) {
129
+ const args = [];
130
+ for (let i = 0; i < functionArguments.length; i++) {
131
+ args.push(convertArg(functionArgumentTypes[i], functionArguments[i]));
132
+ }
133
+ return args;
134
+ }
135
+ function convertArg(argsType, arg) {
136
+ switch (argsType) {
137
+ case "bool":
138
+ return bcs.bool().serialize(arg).toBase64();
139
+ case "u256":
140
+ return bcs.u256().serialize(arg).toBase64();
141
+ case "u128":
142
+ return bcs.u128().serialize(arg).toBase64();
143
+ case "u64":
144
+ return bcs.u64().serialize(arg).toBase64();
145
+ case "u32":
146
+ return bcs.u32().serialize(arg).toBase64();
147
+ case "u16":
148
+ return bcs.u16().serialize(arg).toBase64();
149
+ case "u8":
150
+ return bcs.u8().serialize(arg).toBase64();
151
+ case "address":
152
+ return bcs.address().serialize(arg).toBase64();
153
+ case "vector<u8>":
154
+ return bcs.vector(bcs.u8()).serialize(arg).toBase64();
155
+ case "vector<address>":
156
+ return bcs.vector(bcs.address()).serialize(arg).toBase64();
157
+ case "vector<vector<u8>>":
158
+ return bcs.vector(bcs.vector(bcs.u8())).serialize(arg).toBase64();
159
+ default:
160
+ throw new Error(`Invalid type argsType: ${argsType.toString()}`);
161
+ }
162
+ }
163
+
164
+ // src/signers/initia.ts
165
+ var InitiaSigner = class {
166
+ constructor(signer) {
167
+ this.nativeKey = signer;
168
+ }
169
+ static from(source, path) {
170
+ if (source instanceof MnemonicKey) {
171
+ return new this(source);
172
+ } else if (typeof source === "string" && path === void 0) {
173
+ const signer = new RawKey(Buffer.from(trim0x(source)));
174
+ return new this(signer);
175
+ } else if (typeof source === "string" && path !== void 0) {
176
+ if (path.startsWith("m/")) {
177
+ const [_, coinType, account, __, index] = path.match(/\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0];
178
+ const normalizeMnemonics = source.trim().split(/\s+/).map((part) => part.toLowerCase()).join(" ");
179
+ const key = new MnemonicKey({
180
+ mnemonic: normalizeMnemonics,
181
+ coinType,
182
+ account,
183
+ index
184
+ });
185
+ return new this(key);
186
+ }
187
+ }
188
+ throw new Error("Invalid parameters");
189
+ }
190
+ get native() {
191
+ if (!this.nativeSigner) {
192
+ throw new Error("Connect the native provider first with InitiaSigner.connect()");
193
+ }
194
+ return this.nativeSigner;
195
+ }
196
+ connect(provider) {
197
+ if (!(provider instanceof InitiaProvider)) {
198
+ throw new Error("Only InitiaProvider is supported.");
199
+ }
200
+ this.provider = provider;
201
+ this.nativeSigner = new Wallet(this.provider.native, this.nativeKey);
202
+ return this;
203
+ }
204
+ async getAddress() {
205
+ return Promise.resolve(AccAddress.toHex(this.nativeKey.accAddress));
206
+ }
207
+ get address() {
208
+ return AccAddress.toHex(this.nativeKey.accAddress);
209
+ }
210
+ async sendAndConfirm(transaction, opts) {
211
+ if (this.provider === void 0) {
212
+ throw new Error("provider is required");
213
+ }
214
+ return this.provider.sendAndConfirm(transaction, opts);
215
+ }
216
+ async sendTransaction(transaction, sendOptions) {
217
+ if (this.provider === void 0) {
218
+ throw new Error("provider is required");
219
+ }
220
+ return this.provider.sendTransaction(transaction, sendOptions);
221
+ }
222
+ async signTransaction(transaction) {
223
+ if (!this.nativeSigner) {
224
+ throw new Error("Connect the native provider first with InitiaSigner.connect()");
225
+ }
226
+ const tx = transaction.request;
227
+ const { account_number, sequence } = await this.nativeSigner.accountNumberAndSequence();
228
+ const response = await this.nativeSigner.key.signTx(tx, {
229
+ accountNumber: account_number,
230
+ sequence,
231
+ chainId: await this.nativeSigner.lcd.tendermint.chainId(),
232
+ signMode: ModeInfo.SignMode.SIGN_MODE_DIRECT
233
+ });
234
+ return SignedTransaction.from(response);
235
+ }
236
+ async signBuffer(buffer) {
237
+ return this.nativeKey.sign(Buffer.from(buffer));
238
+ }
239
+ async buildTransaction(buildTxRequest) {
240
+ const sender = this.nativeSigner.key.accAddress.toString();
241
+ const msg = convertPayloadToMsgExecute(sender, buildTxRequest.payload);
242
+ const createOptions = {
243
+ msgs: [msg]
244
+ };
245
+ if (buildTxRequest.options?.gas !== void 0) {
246
+ createOptions.gas = buildTxRequest.options.gas;
247
+ }
248
+ if (buildTxRequest.options?.gasPrice !== void 0) {
249
+ if (isNaN(Number(buildTxRequest.options.gasPrice)) && buildTxRequest.options.gasPrice.endsWith("uinit")) {
250
+ createOptions.gasPrices = buildTxRequest.options.gasPrice;
251
+ } else if (!isNaN(Number(buildTxRequest.options.gasPrice))) {
252
+ createOptions.gasPrices = `${buildTxRequest.options.gasPrice}uinit`;
253
+ } else {
254
+ throw Error(`Invalid gas price for initia :${buildTxRequest.options.gasPrice}`);
255
+ }
256
+ }
257
+ const tx = await this.nativeSigner.createTx(createOptions);
258
+ return TransactionRequest.from(tx);
259
+ }
260
+ };
261
+
262
+ export { InitiaProvider, InitiaSigner, convertArg, convertPayloadToMsgExecute, covertPayloadArgs };
263
+ //# sourceMappingURL=out.js.map
264
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/initia.ts","../src/signers/initia.ts","../src/signers/utils.ts"],"names":["AccAddress","SignedTransaction"],"mappings":"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","sourcesContent":["import { AccAddress, LCDClient } from '@initia/initia.js'\nimport { BigNumber } from 'ethers'\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 { isHexString } from '@layerzerolabs/lz-utilities'\n\nexport class InitiaProvider implements Provider {\n readonly nativeProvider: LCDClient\n\n private constructor(public url: string) {\n this.nativeProvider = new LCDClient(url)\n }\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 get native(): LCDClient {\n return this.nativeProvider\n }\n\n async getBalance(address: string): Promise<string> {\n let accAddress: AccAddress\n if (!isHexString(address)) {\n accAddress = AccAddress.fromHex(address)\n } else if (address.startsWith('init')) {\n accAddress = address\n } else {\n throw new Error('Invalid Aptos 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 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) => BigNumber.from(ledgerInfo.block.header.height).toNumber())\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 async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.tendermint\n .blockInfo()\n .then((ledgerInfo) => BigNumber.from(ledgerInfo.block.header.height).toNumber())\n }\n\n async getSlot(_finality?: Finality): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n async getBlockTimestamp(blockTag: string | number): Promise<number> {\n if (typeof blockTag === 'number') {\n return this.nativeProvider.tendermint\n .blockInfo(blockTag)\n .then((block) => BigNumber.from(block.block.header.time).toNumber())\n } else if (blockTag === 'latest') {\n return this.nativeProvider.tendermint\n .blockInfo()\n .then((block) => BigNumber.from(block.block.header.time).toNumber())\n } else {\n throw new Error('Invalid blockTag')\n }\n }\n\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n if (!isHexString(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 async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n if (!isHexString(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 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 (!isHexString(_addressOrName)) {\n accAddress = AccAddress.fromHex(_addressOrName)\n } else if (_addressOrName.startsWith('init')) {\n accAddress = _addressOrName\n } else {\n throw new Error('Invalid Aptos address')\n }\n const response = await this.nativeProvider.auth.accountInfo(accAddress)\n return response.getSequenceNumber()\n }\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 async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n // const pending = (await this.sendTransaction(transaction, opts)).pending as aptos.Types.PendingTransaction\n // const response = await this.nativeProvider.waitForTransactionWithResult(pending.hash)\n // return TransactionReceipt.from(response)\n\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (((response as any).code as number) !== 0) {\n throw new Error(response.raw_log)\n }\n return TransactionReceipt.from(response)\n }\n}\n","import { AccAddress, CreateTxOptions, 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\nimport { InitiaBuildTxRequest } from './types'\nimport { convertPayloadToMsgExecute } from './utils'\n\nexport class InitiaSigner implements Signer<InitiaBuildTxRequest> {\n public nativeKey: MnemonicKey | RawKey\n public nativeSigner: Wallet | undefined\n public provider: InitiaProvider | undefined\n\n private constructor(signer: MnemonicKey | RawKey) {\n this.nativeKey = signer\n }\n\n static from(signer: MnemonicKey): Signer<InitiaBuildTxRequest>\n static from(privKey: string): Signer<InitiaBuildTxRequest>\n /**\n *\n * @param mnemonic\n * @param path e.g. m/44'/637'/0'/0'/0'\n */\n static from(mnemonic: string, path: string): Signer<InitiaBuildTxRequest>\n\n static from(source: string | MnemonicKey, path?: string): Signer<InitiaBuildTxRequest> {\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))) // 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 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 connect(provider: Provider): Signer<InitiaBuildTxRequest> {\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 async getAddress(): Promise<string> {\n return Promise.resolve(AccAddress.toHex(this.nativeKey.accAddress))\n }\n\n get address(): string {\n return AccAddress.toHex(this.nativeKey.accAddress)\n }\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 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 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\n const { account_number, sequence } = await this.nativeSigner.accountNumberAndSequence()\n\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 async signBuffer(buffer: Uint8Array): Promise<Uint8Array> {\n return this.nativeKey.sign(Buffer.from(buffer))\n }\n\n async buildTransaction(buildTxRequest: InitiaBuildTxRequest): Promise<TransactionRequest> {\n const sender = this.nativeSigner!.key.accAddress.toString()\n const msg = convertPayloadToMsgExecute(sender, buildTxRequest.payload)\n const createOptions: CreateTxOptions & {\n sequence?: number\n } = {\n msgs: [msg],\n }\n if (buildTxRequest.options?.gas !== undefined) {\n createOptions.gas = buildTxRequest.options.gas\n }\n if (buildTxRequest.options?.gasPrice !== undefined) {\n if (isNaN(Number(buildTxRequest.options.gasPrice)) && buildTxRequest.options.gasPrice.endsWith('uinit')) {\n createOptions.gasPrices = buildTxRequest.options.gasPrice\n } else if (!isNaN(Number(buildTxRequest.options.gasPrice))) {\n createOptions.gasPrices = `${buildTxRequest.options.gasPrice}uinit`\n } else {\n throw Error(`Invalid gas price for initia :${buildTxRequest.options.gasPrice}`)\n }\n }\n // createOptions.sequence = initial + offset\n const tx = await this.nativeSigner!.createTx(createOptions)\n return TransactionRequest.from(tx)\n }\n}\n","import { Msg, MsgExecute, bcs } from '@initia/initia.js'\n\nimport { EntryFunctionArgumentTypes, InputEntryFunctionData } from '@layerzerolabs/move-definitions'\n\nexport function convertPayloadToMsgExecute(sender: string, payload: InputEntryFunctionData): Msg {\n const functionStructs = payload.function.split('::')\n const moduleAddress = functionStructs[0]\n const moduleName = functionStructs[1]\n const functionName = functionStructs[2]\n const args = covertPayloadArgs(payload.functionArgumentTypes ?? [], payload.functionArguments)\n const msg = new MsgExecute(\n sender, // sender address\n moduleAddress, // module owner address\n moduleName, // module name\n functionName, // function name\n [], // type arguments\n args\n )\n return msg\n}\nexport function covertPayloadArgs(\n functionArgumentTypes: string[],\n functionArguments: EntryFunctionArgumentTypes[]\n): string[] {\n const args: string[] = []\n for (let i = 0; i < functionArguments.length; i++) {\n args.push(convertArg(functionArgumentTypes[i], functionArguments[i]))\n }\n return args\n}\n\nexport function convertArg(argsType: string, arg: EntryFunctionArgumentTypes): string {\n switch (argsType) {\n case 'bool':\n return bcs\n .bool()\n .serialize(arg as boolean)\n .toBase64()\n case 'u256':\n return bcs\n .u256()\n .serialize(arg as bigint)\n .toBase64()\n case 'u128':\n return bcs\n .u128()\n .serialize(arg as bigint)\n .toBase64()\n case 'u64':\n return bcs\n .u64()\n .serialize(arg as bigint)\n .toBase64()\n case 'u32':\n return bcs\n .u32()\n .serialize(arg as number)\n .toBase64()\n case 'u16':\n return bcs\n .u16()\n .serialize(arg as number)\n .toBase64()\n case 'u8':\n return bcs\n .u8()\n .serialize(arg as number)\n .toBase64()\n case 'address':\n return bcs\n .address()\n .serialize(arg as string)\n .toBase64()\n case 'vector<u8>':\n return bcs\n .vector(bcs.u8())\n .serialize(arg as unknown as Uint8Array)\n .toBase64()\n case 'vector<address>':\n return bcs\n .vector(bcs.address())\n .serialize(arg as unknown as string[])\n .toBase64()\n case 'vector<vector<u8>>':\n return bcs\n .vector(bcs.vector(bcs.u8()))\n .serialize(arg as unknown as Uint8Array[])\n .toBase64()\n default:\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(`Invalid type argsType: ${argsType.toString()}`)\n }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@layerzerolabs/lz-corekit-initia",
3
+ "version": "2.3.45-initia-oft.5",
4
+ "description": "LayerZero Core Library",
5
+ "license": "BUSL-1.1",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.mjs",
10
+ "require": "./dist/index.cjs"
11
+ },
12
+ "./package.json": "./package.json"
13
+ },
14
+ "main": "./dist/index.cjs",
15
+ "types": "./dist/index.d.ts",
16
+ "files": [
17
+ "dist/**/*"
18
+ ],
19
+ "scripts": {
20
+ "build": "$npm_execpath clean-prebuild && $npm_execpath build-ts",
21
+ "build-ts": "$npm_execpath tsc --noEmit && $npm_execpath tsup",
22
+ "clean": "$npm_execpath clean-prebuild && rimraf .turbo",
23
+ "clean-prebuild": "rimraf dist"
24
+ },
25
+ "dependencies": {
26
+ "@initia/initia.js": "^0.2.11",
27
+ "@layerzerolabs/lz-core": "^2.3.45-initia-oft.5",
28
+ "@layerzerolabs/lz-utilities": "^2.3.45-initia-oft.5",
29
+ "@layerzerolabs/move-definitions": "^2.3.45-initia-oft.5",
30
+ "ethers": "^5.7.2"
31
+ },
32
+ "devDependencies": {
33
+ "@jest/globals": "^29.7.0",
34
+ "@layerzerolabs/tsup-config-next": "^2.3.45-initia-oft.5",
35
+ "@layerzerolabs/typescript-config-next": "^2.3.45-initia-oft.5",
36
+ "@types/jest": "^29.5.10",
37
+ "jest": "^29.7.0",
38
+ "jest-extended": "^4.0.2",
39
+ "rimraf": "^5.0.5",
40
+ "ts-jest": "^29.1.1",
41
+ "tsup": "^8.0.1",
42
+ "typescript": "~5.2.2"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public"
46
+ }
47
+ }