@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 +91 -0
- package/README.md +1 -0
- package/dist/index.cjs +270 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +62 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.mjs +264 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +47 -0
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"]}
|
package/dist/index.d.mts
ADDED
|
@@ -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.d.ts
ADDED
|
@@ -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
|
+
}
|