@layerzerolabs/lz-corekit-aptos 2.3.8

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,12 @@
1
+ # @layerzerolabs/lz-corekit-aptos
2
+
3
+ ## 2.3.8
4
+
5
+ ### Patch Changes
6
+
7
+ - e0f5d04: deploy contracts to Ebi mainnet
8
+ - Updated dependencies [e0f5d04]
9
+ - @layerzerolabs/lz-core@2.3.8
10
+ - @layerzerolabs/tron-utilities@2.3.8
11
+ - @layerzerolabs/lz-utilities@2.3.8
12
+ - @layerzerolabs/lz-aptos-sdk-v1@2.3.8
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @layerzerolabs/lz-corekit
package/dist/index.cjs ADDED
@@ -0,0 +1,192 @@
1
+ 'use strict';
2
+
3
+ var aptos2 = require('aptos');
4
+ var ethers = require('ethers');
5
+ var lzCore = require('@layerzerolabs/lz-core');
6
+ var lzUtilities = require('@layerzerolabs/lz-utilities');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var aptos2__namespace = /*#__PURE__*/_interopNamespace(aptos2);
27
+
28
+ // src/providers/aptos.ts
29
+ var AptosProvider = class _AptosProvider {
30
+ constructor(url) {
31
+ this.nativeProvider = new aptos2__namespace.AptosClient(url);
32
+ }
33
+ static from(source) {
34
+ if (typeof source === "string") {
35
+ return new _AptosProvider(source);
36
+ } else {
37
+ throw new Error("Invalid parameters");
38
+ }
39
+ }
40
+ get native() {
41
+ return this.nativeProvider;
42
+ }
43
+ async getBalance(address) {
44
+ if (!lzUtilities.isHexString(address)) {
45
+ throw new Error("Invalid Aptos address");
46
+ }
47
+ const aptosCoin = "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>";
48
+ const resources = await this.nativeProvider.getAccountResources(address);
49
+ const accountResource = resources.find((r) => r.type === aptosCoin);
50
+ if (accountResource === void 0) {
51
+ throw new Error("Account resource not found");
52
+ }
53
+ const { coin } = accountResource.data;
54
+ return BigInt(coin.value).toString();
55
+ }
56
+ async getBlock(blockTag) {
57
+ let blockNumber = 0;
58
+ if (typeof blockTag === "number") {
59
+ blockNumber = blockTag;
60
+ } else if (blockTag === "latest") {
61
+ blockNumber = await this.nativeProvider.getLedgerInfo().then((ledgerInfo) => ethers.BigNumber.from(ledgerInfo.block_height).toNumber());
62
+ } else {
63
+ throw new Error("Invalid blockTag");
64
+ }
65
+ const response = await this.nativeProvider.getBlockByHeight(blockNumber);
66
+ return lzCore.Block.from(response);
67
+ }
68
+ async getBlockWithTransactions(blockTag) {
69
+ let blockNumber = 0;
70
+ if (typeof blockTag === "number") {
71
+ blockNumber = blockTag;
72
+ } else if (blockTag === "latest") {
73
+ blockNumber = await this.getBlockNumber();
74
+ } else {
75
+ throw new Error("Invalid blockTag");
76
+ }
77
+ const response = await this.nativeProvider.getBlockByHeight(blockNumber, true);
78
+ return lzCore.BlockWithTransactions.from(response);
79
+ }
80
+ async getBlockNumber() {
81
+ return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => ethers.BigNumber.from(ledgerInfo.block_height).toNumber());
82
+ }
83
+ async getSlot(_finality) {
84
+ await Promise.resolve();
85
+ throw new Error("Method not implemented.");
86
+ }
87
+ async getBlockTimestamp(blockTag) {
88
+ if (typeof blockTag === "number") {
89
+ return this.nativeProvider.getBlockByHeight(blockTag).then((block) => ethers.BigNumber.from(block.block_timestamp).toNumber());
90
+ } else if (blockTag === "latest") {
91
+ return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => ethers.BigNumber.from(ledgerInfo.ledger_timestamp).toNumber());
92
+ } else {
93
+ throw new Error("Invalid blockTag");
94
+ }
95
+ }
96
+ async getTransaction(txHash) {
97
+ if (!lzUtilities.isHexString(txHash)) {
98
+ throw new Error("Invalid Aptos transaction hash");
99
+ }
100
+ const response = await this.nativeProvider.getTransactionByHash(txHash);
101
+ return lzCore.TransactionResponse.from(response);
102
+ }
103
+ async getTransactionReceipt(txHash) {
104
+ if (!lzUtilities.isHexString(txHash)) {
105
+ throw new Error("Invalid Aptos transaction hash");
106
+ }
107
+ const response = await this.nativeProvider.getTransactionByHash(txHash);
108
+ return lzCore.TransactionReceipt.from(response);
109
+ }
110
+ async getTransactionCount(addressOrName, _blockTag) {
111
+ const _addressOrName = await Promise.resolve(addressOrName);
112
+ if (!lzUtilities.isHexString(_addressOrName)) {
113
+ throw new Error("Invalid Aptos transaction hash");
114
+ }
115
+ const response = await this.nativeProvider.getAccount(_addressOrName);
116
+ return parseInt(response.sequence_number);
117
+ }
118
+ async sendTransaction(transaction, _sendOptions) {
119
+ const stx = transaction.signed;
120
+ const response = await this.nativeProvider.submitSignedBCSTransaction(stx);
121
+ return lzCore.TransactionPending.from(response);
122
+ }
123
+ async sendAndConfirm(transaction, opts) {
124
+ const pending = (await this.sendTransaction(transaction, opts)).pending;
125
+ const response = await this.nativeProvider.waitForTransactionWithResult(pending.hash);
126
+ return lzCore.TransactionReceipt.from(response);
127
+ }
128
+ };
129
+ var AptosSigner = class {
130
+ constructor(signer) {
131
+ this.nativeSigner = signer;
132
+ }
133
+ static from(source, path) {
134
+ if (source instanceof aptos2__namespace.AptosClient) {
135
+ return new this(source);
136
+ } else if (typeof source === "string" && path === void 0) {
137
+ const signer = new aptos2__namespace.AptosAccount(Buffer.from(lzUtilities.trim0x(source)));
138
+ return new this(signer);
139
+ } else if (typeof source === "string" && path !== void 0) {
140
+ const signer = aptos2__namespace.AptosAccount.fromDerivePath("m/44'/637'/0'/0'/0'", source);
141
+ return new this(signer);
142
+ } else {
143
+ throw new Error("Invalid parameters");
144
+ }
145
+ }
146
+ get native() {
147
+ return this.nativeSigner;
148
+ }
149
+ connect(provider) {
150
+ if (!(provider instanceof AptosProvider)) {
151
+ throw new Error("Only aptos.AptosClient is supported.");
152
+ }
153
+ this.provider = provider;
154
+ return this;
155
+ }
156
+ async getAddress() {
157
+ return Promise.resolve(this.nativeSigner.address().toString());
158
+ }
159
+ get address() {
160
+ return this.nativeSigner.address().toString();
161
+ }
162
+ async sendAndConfirm(transaction, opts) {
163
+ if (this.provider === void 0) {
164
+ throw new Error("provider is required");
165
+ }
166
+ return this.provider.sendAndConfirm(transaction, opts);
167
+ }
168
+ async sendTransaction(transaction, sendOptions) {
169
+ if (this.provider === void 0) {
170
+ throw new Error("provider is required");
171
+ }
172
+ return this.provider.sendTransaction(transaction, sendOptions);
173
+ }
174
+ async signTransaction(transaction) {
175
+ let nativeProvider = this.provider?.native;
176
+ if (nativeProvider === void 0) {
177
+ nativeProvider = new aptos2__namespace.AptosClient("");
178
+ }
179
+ const tx = transaction.request;
180
+ const response = await nativeProvider.signTransaction(this.nativeSigner, tx);
181
+ return lzCore.SignedTransaction.from(response);
182
+ }
183
+ async signBuffer(buffer) {
184
+ const rv = this.nativeSigner.signBuffer(Buffer.from(buffer)).toUint8Array();
185
+ return Promise.resolve(rv);
186
+ }
187
+ };
188
+
189
+ exports.AptosProvider = AptosProvider;
190
+ exports.AptosSigner = AptosSigner;
191
+ //# sourceMappingURL=out.js.map
192
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/aptos.ts","../src/signers/aptos.ts"],"names":["aptos","SignedTransaction"],"mappings":"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","sourcesContent":["import { Finality } from '@solana/web3.js'\nimport * as aptos from 'aptos'\nimport { BigNumber } from 'ethers'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\nimport { isHexString } from '@layerzerolabs/lz-utilities'\n\nexport class AptosProvider implements Provider {\n readonly nativeProvider: aptos.AptosClient\n\n private constructor(url: string) {\n this.nativeProvider = new aptos.AptosClient(url)\n }\n\n static from(url: string): AptosProvider\n static from(source: string): AptosProvider {\n if (typeof source === 'string') {\n return new AptosProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): aptos.AptosClient {\n return this.nativeProvider\n }\n\n async getBalance(address: string): Promise<string> {\n if (!isHexString(address)) {\n throw new Error('Invalid Aptos address')\n }\n\n const aptosCoin = '0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>'\n const resources = await this.nativeProvider.getAccountResources(address)\n const accountResource = resources.find((r) => r.type === aptosCoin)\n if (accountResource === undefined) {\n throw new Error('Account resource not found')\n }\n\n const { coin } = accountResource.data as { coin: { value: string } }\n return BigInt(coin.value).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\n .getLedgerInfo()\n .then((ledgerInfo) => BigNumber.from(ledgerInfo.block_height).toNumber())\n } else {\n throw new Error('Invalid blockTag')\n }\n\n const response = await this.nativeProvider.getBlockByHeight(blockNumber)\n return Block.from(response)\n }\n\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n let blockNumber = 0\n if (typeof blockTag === 'number') {\n blockNumber = blockTag\n } else if (blockTag === 'latest') {\n blockNumber = await this.getBlockNumber()\n } else {\n throw new Error('Invalid blockTag')\n }\n\n const response = await this.nativeProvider.getBlockByHeight(blockNumber, true)\n return BlockWithTransactions.from(response)\n }\n\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider\n .getLedgerInfo()\n .then((ledgerInfo) => BigNumber.from(ledgerInfo.block_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\n .getBlockByHeight(blockTag)\n .then((block) => BigNumber.from(block.block_timestamp).toNumber())\n } else if (blockTag === 'latest') {\n return this.nativeProvider\n .getLedgerInfo()\n .then((ledgerInfo) => BigNumber.from(ledgerInfo.ledger_timestamp).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 Aptos transaction hash')\n }\n\n const response = await this.nativeProvider.getTransactionByHash(txHash)\n return TransactionResponse.from(response)\n }\n\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n if (!isHexString(txHash)) {\n throw new Error('Invalid Aptos transaction hash')\n }\n\n const response = await this.nativeProvider.getTransactionByHash(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 if (!isHexString(_addressOrName)) {\n throw new Error('Invalid Aptos transaction hash')\n }\n\n const response = await this.nativeProvider.getAccount(_addressOrName)\n return parseInt(response.sequence_number)\n }\n\n async sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending> {\n type NativeSignedTransaction = Parameters<typeof this.nativeProvider.submitSignedBCSTransaction>[0]\n const stx = transaction.signed as NativeSignedTransaction\n\n const response = await this.nativeProvider.submitSignedBCSTransaction(stx)\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}\n","import * as aptos from 'aptos'\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 { AptosProvider } from '../providers'\n\nexport class AptosSigner implements Signer {\n public nativeSigner: aptos.AptosAccount\n public provider: AptosProvider | undefined\n\n private constructor(signer: aptos.AptosAccount) {\n this.nativeSigner = signer\n }\n\n static from(signer: aptos.AptosAccount): Signer\n static from(privKey: string): Signer\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\n\n static from(source: string | aptos.AptosAccount, path?: string): Signer {\n if (source instanceof aptos.AptosClient) {\n return new this(source as aptos.AptosAccount)\n } else if (typeof source === 'string' && path === undefined) {\n const signer = new aptos.AptosAccount(Buffer.from(trim0x(source)))\n return new this(signer)\n } else if (typeof source === 'string' && path !== undefined) {\n const signer = aptos.AptosAccount.fromDerivePath(\"m/44'/637'/0'/0'/0'\", source)\n return new this(signer)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): aptos.AptosAccount {\n return this.nativeSigner\n }\n\n connect(provider: Provider): Signer {\n if (!(provider instanceof AptosProvider)) {\n throw new Error('Only aptos.AptosClient is supported.')\n }\n\n this.provider = provider\n return this\n }\n\n async getAddress(): Promise<string> {\n return Promise.resolve(this.nativeSigner.address().toString())\n }\n\n get address(): string {\n return this.nativeSigner.address().toString()\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\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 let nativeProvider = this.provider?.native\n if (nativeProvider === undefined) {\n nativeProvider = new aptos.AptosClient('')\n }\n\n type NativeTransactionRequest = Parameters<aptos.AptosClient['signTransaction']>[1]\n const tx = transaction.request as NativeTransactionRequest\n\n // signTransaction is an offline operation\n const response = await nativeProvider.signTransaction(this.nativeSigner, tx)\n return SignedTransaction.from(response)\n }\n\n async signBuffer(buffer: Uint8Array): Promise<Uint8Array> {\n const rv = this.nativeSigner.signBuffer(Buffer.from(buffer)).toUint8Array()\n return Promise.resolve(rv)\n }\n}\n"]}
@@ -0,0 +1,45 @@
1
+ import { Finality } from '@solana/web3.js';
2
+ import * as aptos from 'aptos';
3
+ import { Provider, Block, BlockWithTransactions, TransactionResponse, TransactionReceipt, BlockTag, SignedTransaction, TransactionPending, Signer, TransactionRequest } from '@layerzerolabs/lz-core';
4
+
5
+ declare class AptosProvider implements Provider {
6
+ readonly nativeProvider: aptos.AptosClient;
7
+ private constructor();
8
+ static from(url: string): AptosProvider;
9
+ get native(): aptos.AptosClient;
10
+ getBalance(address: string): Promise<string>;
11
+ getBlock(blockTag: string | number): Promise<Block>;
12
+ getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions>;
13
+ getBlockNumber(): Promise<number>;
14
+ getSlot(_finality?: Finality): Promise<number>;
15
+ getBlockTimestamp(blockTag: string | number): Promise<number>;
16
+ getTransaction(txHash: string): Promise<TransactionResponse>;
17
+ getTransactionReceipt(txHash: string): Promise<TransactionReceipt>;
18
+ getTransactionCount(addressOrName: string | Promise<string>, _blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;
19
+ sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending>;
20
+ sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
21
+ }
22
+
23
+ declare class AptosSigner implements Signer {
24
+ nativeSigner: aptos.AptosAccount;
25
+ provider: AptosProvider | undefined;
26
+ private constructor();
27
+ static from(signer: aptos.AptosAccount): Signer;
28
+ static from(privKey: string): Signer;
29
+ /**
30
+ *
31
+ * @param mnemonic
32
+ * @param path e.g. m/44'/637'/0'/0'/0'
33
+ */
34
+ static from(mnemonic: string, path: string): Signer;
35
+ get native(): aptos.AptosAccount;
36
+ connect(provider: Provider): Signer;
37
+ getAddress(): Promise<string>;
38
+ get address(): string;
39
+ sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
40
+ sendTransaction(transaction: SignedTransaction, sendOptions?: object): Promise<TransactionPending>;
41
+ signTransaction(transaction: TransactionRequest): Promise<SignedTransaction>;
42
+ signBuffer(buffer: Uint8Array): Promise<Uint8Array>;
43
+ }
44
+
45
+ export { AptosProvider, AptosSigner };
@@ -0,0 +1,45 @@
1
+ import { Finality } from '@solana/web3.js';
2
+ import * as aptos from 'aptos';
3
+ import { Provider, Block, BlockWithTransactions, TransactionResponse, TransactionReceipt, BlockTag, SignedTransaction, TransactionPending, Signer, TransactionRequest } from '@layerzerolabs/lz-core';
4
+
5
+ declare class AptosProvider implements Provider {
6
+ readonly nativeProvider: aptos.AptosClient;
7
+ private constructor();
8
+ static from(url: string): AptosProvider;
9
+ get native(): aptos.AptosClient;
10
+ getBalance(address: string): Promise<string>;
11
+ getBlock(blockTag: string | number): Promise<Block>;
12
+ getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions>;
13
+ getBlockNumber(): Promise<number>;
14
+ getSlot(_finality?: Finality): Promise<number>;
15
+ getBlockTimestamp(blockTag: string | number): Promise<number>;
16
+ getTransaction(txHash: string): Promise<TransactionResponse>;
17
+ getTransactionReceipt(txHash: string): Promise<TransactionReceipt>;
18
+ getTransactionCount(addressOrName: string | Promise<string>, _blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;
19
+ sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending>;
20
+ sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
21
+ }
22
+
23
+ declare class AptosSigner implements Signer {
24
+ nativeSigner: aptos.AptosAccount;
25
+ provider: AptosProvider | undefined;
26
+ private constructor();
27
+ static from(signer: aptos.AptosAccount): Signer;
28
+ static from(privKey: string): Signer;
29
+ /**
30
+ *
31
+ * @param mnemonic
32
+ * @param path e.g. m/44'/637'/0'/0'/0'
33
+ */
34
+ static from(mnemonic: string, path: string): Signer;
35
+ get native(): aptos.AptosAccount;
36
+ connect(provider: Provider): Signer;
37
+ getAddress(): Promise<string>;
38
+ get address(): string;
39
+ sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
40
+ sendTransaction(transaction: SignedTransaction, sendOptions?: object): Promise<TransactionPending>;
41
+ signTransaction(transaction: TransactionRequest): Promise<SignedTransaction>;
42
+ signBuffer(buffer: Uint8Array): Promise<Uint8Array>;
43
+ }
44
+
45
+ export { AptosProvider, AptosSigner };
package/dist/index.mjs ADDED
@@ -0,0 +1,169 @@
1
+ import * as aptos2 from 'aptos';
2
+ import { BigNumber } from 'ethers';
3
+ import { Block, BlockWithTransactions, TransactionResponse, TransactionReceipt, TransactionPending, SignedTransaction } from '@layerzerolabs/lz-core';
4
+ import { isHexString, trim0x } from '@layerzerolabs/lz-utilities';
5
+
6
+ // src/providers/aptos.ts
7
+ var AptosProvider = class _AptosProvider {
8
+ constructor(url) {
9
+ this.nativeProvider = new aptos2.AptosClient(url);
10
+ }
11
+ static from(source) {
12
+ if (typeof source === "string") {
13
+ return new _AptosProvider(source);
14
+ } else {
15
+ throw new Error("Invalid parameters");
16
+ }
17
+ }
18
+ get native() {
19
+ return this.nativeProvider;
20
+ }
21
+ async getBalance(address) {
22
+ if (!isHexString(address)) {
23
+ throw new Error("Invalid Aptos address");
24
+ }
25
+ const aptosCoin = "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>";
26
+ const resources = await this.nativeProvider.getAccountResources(address);
27
+ const accountResource = resources.find((r) => r.type === aptosCoin);
28
+ if (accountResource === void 0) {
29
+ throw new Error("Account resource not found");
30
+ }
31
+ const { coin } = accountResource.data;
32
+ return BigInt(coin.value).toString();
33
+ }
34
+ async getBlock(blockTag) {
35
+ let blockNumber = 0;
36
+ if (typeof blockTag === "number") {
37
+ blockNumber = blockTag;
38
+ } else if (blockTag === "latest") {
39
+ blockNumber = await this.nativeProvider.getLedgerInfo().then((ledgerInfo) => BigNumber.from(ledgerInfo.block_height).toNumber());
40
+ } else {
41
+ throw new Error("Invalid blockTag");
42
+ }
43
+ const response = await this.nativeProvider.getBlockByHeight(blockNumber);
44
+ return Block.from(response);
45
+ }
46
+ async getBlockWithTransactions(blockTag) {
47
+ let blockNumber = 0;
48
+ if (typeof blockTag === "number") {
49
+ blockNumber = blockTag;
50
+ } else if (blockTag === "latest") {
51
+ blockNumber = await this.getBlockNumber();
52
+ } else {
53
+ throw new Error("Invalid blockTag");
54
+ }
55
+ const response = await this.nativeProvider.getBlockByHeight(blockNumber, true);
56
+ return BlockWithTransactions.from(response);
57
+ }
58
+ async getBlockNumber() {
59
+ return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => BigNumber.from(ledgerInfo.block_height).toNumber());
60
+ }
61
+ async getSlot(_finality) {
62
+ await Promise.resolve();
63
+ throw new Error("Method not implemented.");
64
+ }
65
+ async getBlockTimestamp(blockTag) {
66
+ if (typeof blockTag === "number") {
67
+ return this.nativeProvider.getBlockByHeight(blockTag).then((block) => BigNumber.from(block.block_timestamp).toNumber());
68
+ } else if (blockTag === "latest") {
69
+ return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => BigNumber.from(ledgerInfo.ledger_timestamp).toNumber());
70
+ } else {
71
+ throw new Error("Invalid blockTag");
72
+ }
73
+ }
74
+ async getTransaction(txHash) {
75
+ if (!isHexString(txHash)) {
76
+ throw new Error("Invalid Aptos transaction hash");
77
+ }
78
+ const response = await this.nativeProvider.getTransactionByHash(txHash);
79
+ return TransactionResponse.from(response);
80
+ }
81
+ async getTransactionReceipt(txHash) {
82
+ if (!isHexString(txHash)) {
83
+ throw new Error("Invalid Aptos transaction hash");
84
+ }
85
+ const response = await this.nativeProvider.getTransactionByHash(txHash);
86
+ return TransactionReceipt.from(response);
87
+ }
88
+ async getTransactionCount(addressOrName, _blockTag) {
89
+ const _addressOrName = await Promise.resolve(addressOrName);
90
+ if (!isHexString(_addressOrName)) {
91
+ throw new Error("Invalid Aptos transaction hash");
92
+ }
93
+ const response = await this.nativeProvider.getAccount(_addressOrName);
94
+ return parseInt(response.sequence_number);
95
+ }
96
+ async sendTransaction(transaction, _sendOptions) {
97
+ const stx = transaction.signed;
98
+ const response = await this.nativeProvider.submitSignedBCSTransaction(stx);
99
+ return TransactionPending.from(response);
100
+ }
101
+ async sendAndConfirm(transaction, opts) {
102
+ const pending = (await this.sendTransaction(transaction, opts)).pending;
103
+ const response = await this.nativeProvider.waitForTransactionWithResult(pending.hash);
104
+ return TransactionReceipt.from(response);
105
+ }
106
+ };
107
+ var AptosSigner = class {
108
+ constructor(signer) {
109
+ this.nativeSigner = signer;
110
+ }
111
+ static from(source, path) {
112
+ if (source instanceof aptos2.AptosClient) {
113
+ return new this(source);
114
+ } else if (typeof source === "string" && path === void 0) {
115
+ const signer = new aptos2.AptosAccount(Buffer.from(trim0x(source)));
116
+ return new this(signer);
117
+ } else if (typeof source === "string" && path !== void 0) {
118
+ const signer = aptos2.AptosAccount.fromDerivePath("m/44'/637'/0'/0'/0'", source);
119
+ return new this(signer);
120
+ } else {
121
+ throw new Error("Invalid parameters");
122
+ }
123
+ }
124
+ get native() {
125
+ return this.nativeSigner;
126
+ }
127
+ connect(provider) {
128
+ if (!(provider instanceof AptosProvider)) {
129
+ throw new Error("Only aptos.AptosClient is supported.");
130
+ }
131
+ this.provider = provider;
132
+ return this;
133
+ }
134
+ async getAddress() {
135
+ return Promise.resolve(this.nativeSigner.address().toString());
136
+ }
137
+ get address() {
138
+ return this.nativeSigner.address().toString();
139
+ }
140
+ async sendAndConfirm(transaction, opts) {
141
+ if (this.provider === void 0) {
142
+ throw new Error("provider is required");
143
+ }
144
+ return this.provider.sendAndConfirm(transaction, opts);
145
+ }
146
+ async sendTransaction(transaction, sendOptions) {
147
+ if (this.provider === void 0) {
148
+ throw new Error("provider is required");
149
+ }
150
+ return this.provider.sendTransaction(transaction, sendOptions);
151
+ }
152
+ async signTransaction(transaction) {
153
+ let nativeProvider = this.provider?.native;
154
+ if (nativeProvider === void 0) {
155
+ nativeProvider = new aptos2.AptosClient("");
156
+ }
157
+ const tx = transaction.request;
158
+ const response = await nativeProvider.signTransaction(this.nativeSigner, tx);
159
+ return SignedTransaction.from(response);
160
+ }
161
+ async signBuffer(buffer) {
162
+ const rv = this.nativeSigner.signBuffer(Buffer.from(buffer)).toUint8Array();
163
+ return Promise.resolve(rv);
164
+ }
165
+ };
166
+
167
+ export { AptosProvider, AptosSigner };
168
+ //# sourceMappingURL=out.js.map
169
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/aptos.ts","../src/signers/aptos.ts"],"names":["aptos","SignedTransaction"],"mappings":"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","sourcesContent":["import { Finality } from '@solana/web3.js'\nimport * as aptos from 'aptos'\nimport { BigNumber } from 'ethers'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\nimport { isHexString } from '@layerzerolabs/lz-utilities'\n\nexport class AptosProvider implements Provider {\n readonly nativeProvider: aptos.AptosClient\n\n private constructor(url: string) {\n this.nativeProvider = new aptos.AptosClient(url)\n }\n\n static from(url: string): AptosProvider\n static from(source: string): AptosProvider {\n if (typeof source === 'string') {\n return new AptosProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): aptos.AptosClient {\n return this.nativeProvider\n }\n\n async getBalance(address: string): Promise<string> {\n if (!isHexString(address)) {\n throw new Error('Invalid Aptos address')\n }\n\n const aptosCoin = '0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>'\n const resources = await this.nativeProvider.getAccountResources(address)\n const accountResource = resources.find((r) => r.type === aptosCoin)\n if (accountResource === undefined) {\n throw new Error('Account resource not found')\n }\n\n const { coin } = accountResource.data as { coin: { value: string } }\n return BigInt(coin.value).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\n .getLedgerInfo()\n .then((ledgerInfo) => BigNumber.from(ledgerInfo.block_height).toNumber())\n } else {\n throw new Error('Invalid blockTag')\n }\n\n const response = await this.nativeProvider.getBlockByHeight(blockNumber)\n return Block.from(response)\n }\n\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n let blockNumber = 0\n if (typeof blockTag === 'number') {\n blockNumber = blockTag\n } else if (blockTag === 'latest') {\n blockNumber = await this.getBlockNumber()\n } else {\n throw new Error('Invalid blockTag')\n }\n\n const response = await this.nativeProvider.getBlockByHeight(blockNumber, true)\n return BlockWithTransactions.from(response)\n }\n\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider\n .getLedgerInfo()\n .then((ledgerInfo) => BigNumber.from(ledgerInfo.block_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\n .getBlockByHeight(blockTag)\n .then((block) => BigNumber.from(block.block_timestamp).toNumber())\n } else if (blockTag === 'latest') {\n return this.nativeProvider\n .getLedgerInfo()\n .then((ledgerInfo) => BigNumber.from(ledgerInfo.ledger_timestamp).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 Aptos transaction hash')\n }\n\n const response = await this.nativeProvider.getTransactionByHash(txHash)\n return TransactionResponse.from(response)\n }\n\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n if (!isHexString(txHash)) {\n throw new Error('Invalid Aptos transaction hash')\n }\n\n const response = await this.nativeProvider.getTransactionByHash(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 if (!isHexString(_addressOrName)) {\n throw new Error('Invalid Aptos transaction hash')\n }\n\n const response = await this.nativeProvider.getAccount(_addressOrName)\n return parseInt(response.sequence_number)\n }\n\n async sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending> {\n type NativeSignedTransaction = Parameters<typeof this.nativeProvider.submitSignedBCSTransaction>[0]\n const stx = transaction.signed as NativeSignedTransaction\n\n const response = await this.nativeProvider.submitSignedBCSTransaction(stx)\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}\n","import * as aptos from 'aptos'\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 { AptosProvider } from '../providers'\n\nexport class AptosSigner implements Signer {\n public nativeSigner: aptos.AptosAccount\n public provider: AptosProvider | undefined\n\n private constructor(signer: aptos.AptosAccount) {\n this.nativeSigner = signer\n }\n\n static from(signer: aptos.AptosAccount): Signer\n static from(privKey: string): Signer\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\n\n static from(source: string | aptos.AptosAccount, path?: string): Signer {\n if (source instanceof aptos.AptosClient) {\n return new this(source as aptos.AptosAccount)\n } else if (typeof source === 'string' && path === undefined) {\n const signer = new aptos.AptosAccount(Buffer.from(trim0x(source)))\n return new this(signer)\n } else if (typeof source === 'string' && path !== undefined) {\n const signer = aptos.AptosAccount.fromDerivePath(\"m/44'/637'/0'/0'/0'\", source)\n return new this(signer)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): aptos.AptosAccount {\n return this.nativeSigner\n }\n\n connect(provider: Provider): Signer {\n if (!(provider instanceof AptosProvider)) {\n throw new Error('Only aptos.AptosClient is supported.')\n }\n\n this.provider = provider\n return this\n }\n\n async getAddress(): Promise<string> {\n return Promise.resolve(this.nativeSigner.address().toString())\n }\n\n get address(): string {\n return this.nativeSigner.address().toString()\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\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 let nativeProvider = this.provider?.native\n if (nativeProvider === undefined) {\n nativeProvider = new aptos.AptosClient('')\n }\n\n type NativeTransactionRequest = Parameters<aptos.AptosClient['signTransaction']>[1]\n const tx = transaction.request as NativeTransactionRequest\n\n // signTransaction is an offline operation\n const response = await nativeProvider.signTransaction(this.nativeSigner, tx)\n return SignedTransaction.from(response)\n }\n\n async signBuffer(buffer: Uint8Array): Promise<Uint8Array> {\n const rv = this.nativeSigner.signBuffer(Buffer.from(buffer)).toUint8Array()\n return Promise.resolve(rv)\n }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@layerzerolabs/lz-corekit-aptos",
3
+ "version": "2.3.8",
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
+ "@coral-xyz/anchor": "^0.29.0",
27
+ "@layerzerolabs/lz-aptos-sdk-v1": "^2.3.8",
28
+ "@layerzerolabs/lz-core": "^2.3.8",
29
+ "@layerzerolabs/lz-utilities": "^2.3.8",
30
+ "@layerzerolabs/tron-utilities": "^2.3.8",
31
+ "@solana/web3.js": "^1.91.8",
32
+ "aptos": "^1.20.0",
33
+ "bip39": "^3.1.0",
34
+ "ed25519-hd-key": "^1.3.0",
35
+ "ethers": "^5.7.2",
36
+ "mem": "^8.1.1",
37
+ "tiny-invariant": "^1.3.1",
38
+ "tronweb": "^5.3.1"
39
+ },
40
+ "devDependencies": {
41
+ "@jest/globals": "^29.7.0",
42
+ "@layerzerolabs/tronweb-typescript": "^0.0.0",
43
+ "@layerzerolabs/tsup-config-next": "^2.3.8",
44
+ "@layerzerolabs/typescript-config-next": "^2.3.8",
45
+ "@types/jest": "^29.5.10",
46
+ "@types/tronweb": "npm:@layerzerolabs/tronweb-typescript@workspace:^",
47
+ "jest": "^29.7.0",
48
+ "jest-extended": "^4.0.2",
49
+ "rimraf": "^5.0.5",
50
+ "ts-jest": "^29.1.1",
51
+ "tsup": "^8.0.1",
52
+ "typescript": "~5.2.2"
53
+ },
54
+ "publishConfig": {
55
+ "access": "public"
56
+ }
57
+ }