@layerzerolabs/lz-corekit-aptos 3.0.11 → 3.0.12
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 +10 -0
- package/dist/index.cjs +24 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +4 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.mjs +24 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @layerzerolabs/lz-corekit-aptos
|
|
2
2
|
|
|
3
|
+
## 3.0.12
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1f77709: endpoints: superposition mainnet and some testnets
|
|
8
|
+
- Updated dependencies [1f77709]
|
|
9
|
+
- @layerzerolabs/lz-core@3.0.12
|
|
10
|
+
- @layerzerolabs/lz-utilities@3.0.12
|
|
11
|
+
- @layerzerolabs/lz-aptos-sdk-v1@3.0.12
|
|
12
|
+
|
|
3
13
|
## 3.0.11
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var aptos2 = require('aptos');
|
|
4
|
-
var ethers = require('ethers');
|
|
5
4
|
var lzCore = require('@layerzerolabs/lz-core');
|
|
6
5
|
var lzUtilities = require('@layerzerolabs/lz-utilities');
|
|
7
6
|
|
|
@@ -61,7 +60,7 @@ var AptosProvider = class _AptosProvider {
|
|
|
61
60
|
if (typeof blockTag === "number") {
|
|
62
61
|
blockNumber = blockTag;
|
|
63
62
|
} else if (blockTag === "latest") {
|
|
64
|
-
blockNumber = await this.nativeProvider.getLedgerInfo().then((ledgerInfo) =>
|
|
63
|
+
blockNumber = await this.nativeProvider.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.block_height));
|
|
65
64
|
} else {
|
|
66
65
|
throw new Error("Invalid blockTag");
|
|
67
66
|
}
|
|
@@ -81,7 +80,7 @@ var AptosProvider = class _AptosProvider {
|
|
|
81
80
|
return lzCore.BlockWithTransactions.from(response);
|
|
82
81
|
}
|
|
83
82
|
async getBlockNumber() {
|
|
84
|
-
return this.nativeProvider.getLedgerInfo().then((ledgerInfo) =>
|
|
83
|
+
return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.block_height));
|
|
85
84
|
}
|
|
86
85
|
async getSlot(_finality) {
|
|
87
86
|
await Promise.resolve();
|
|
@@ -89,9 +88,9 @@ var AptosProvider = class _AptosProvider {
|
|
|
89
88
|
}
|
|
90
89
|
async getBlockTimestamp(blockTag) {
|
|
91
90
|
if (typeof blockTag === "number") {
|
|
92
|
-
return this.nativeProvider.getBlockByHeight(blockTag).then((block) =>
|
|
91
|
+
return this.nativeProvider.getBlockByHeight(blockTag).then((block) => Number(block.block_timestamp));
|
|
93
92
|
} else if (blockTag === "latest") {
|
|
94
|
-
return this.nativeProvider.getLedgerInfo().then((ledgerInfo) =>
|
|
93
|
+
return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.ledger_timestamp));
|
|
95
94
|
} else {
|
|
96
95
|
throw new Error("Invalid blockTag");
|
|
97
96
|
}
|
|
@@ -123,31 +122,42 @@ var AptosProvider = class _AptosProvider {
|
|
|
123
122
|
const response = await this.nativeProvider.submitSignedBCSTransaction(stx);
|
|
124
123
|
return lzCore.TransactionPending.from(response);
|
|
125
124
|
}
|
|
126
|
-
async
|
|
127
|
-
const
|
|
128
|
-
const response = await this.nativeProvider.waitForTransactionWithResult(
|
|
125
|
+
async confirmTransaction(pending, opts) {
|
|
126
|
+
const nativePending = pending.pending;
|
|
127
|
+
const response = await this.nativeProvider.waitForTransactionWithResult(nativePending.hash);
|
|
128
|
+
if (response.type !== "user_transaction") {
|
|
129
|
+
throw new Error(`Invalid response type: ${response.type}`);
|
|
130
|
+
}
|
|
129
131
|
const userTransaction = response;
|
|
130
132
|
if (!userTransaction.success) {
|
|
131
133
|
throw new Error(`aptos transaction failed ,vm_status: ${userTransaction.vm_status}`);
|
|
132
134
|
}
|
|
133
135
|
return lzCore.TransactionReceipt.from(response);
|
|
134
136
|
}
|
|
137
|
+
async sendAndConfirm(transaction, opts) {
|
|
138
|
+
const pending = await this.sendTransaction(transaction, opts);
|
|
139
|
+
return this.confirmTransaction(pending, opts);
|
|
140
|
+
}
|
|
135
141
|
};
|
|
136
142
|
var AptosSigner = class {
|
|
137
143
|
constructor(signer) {
|
|
138
144
|
this.nativeSigner = signer;
|
|
139
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
*
|
|
148
|
+
* @param source
|
|
149
|
+
* @param path e.g. m/44'/637'/0'/0'/0'
|
|
150
|
+
*/
|
|
140
151
|
static from(source, path) {
|
|
141
152
|
if (source instanceof aptos2__namespace.AptosAccount) {
|
|
142
153
|
return new this(source);
|
|
143
|
-
}
|
|
154
|
+
}
|
|
155
|
+
if (path === void 0) {
|
|
144
156
|
const signer = new aptos2__namespace.AptosAccount(Buffer.from(lzUtilities.trim0x(source)));
|
|
145
157
|
return new this(signer);
|
|
146
|
-
} else if (
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
return new this(signer);
|
|
150
|
-
}
|
|
158
|
+
} else if (path.startsWith("m/")) {
|
|
159
|
+
const signer = aptos2__namespace.AptosAccount.fromDerivePath(path, source);
|
|
160
|
+
return new this(signer);
|
|
151
161
|
}
|
|
152
162
|
throw new Error("Invalid parameters");
|
|
153
163
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/aptos.ts","../src/signers/aptos.ts"],"names":["aptos","SignedTransaction"],"mappings":"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","sourcesContent":["import * as aptos from 'aptos'\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 AptosProvider implements Provider {\n readonly nativeProvider: aptos.AptosClient\n\n private constructor(\n public readonly url: string,\n public readonly faucet?: string,\n public readonly indexer?: string\n ) {\n this.nativeProvider = new aptos.AptosClient(url)\n }\n static from(source: string, faucet?: string, indexer?: string): AptosProvider {\n if (typeof source === 'string') {\n return new AptosProvider(source, faucet, indexer)\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 const userTransaction = response as aptos.Types.UserTransaction\n if (!userTransaction.success) {\n throw new Error(`aptos transaction failed ,vm_status: ${userTransaction.vm_status}`)\n }\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.AptosAccount) {\n return new this(source)\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 if (path.startsWith('m/')) {\n const signer = aptos.AptosAccount.fromDerivePath(path, source)\n return new this(signer)\n }\n }\n throw new Error('Invalid parameters')\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 const nativeProvider = this.provider?.native\n if (nativeProvider === undefined) {\n throw new Error('Connect the native provider first with AptosSigner.connect()')\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 async buildTransaction(buildTxRequest: unknown): Promise<TransactionRequest> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/providers/aptos.ts","../src/signers/aptos.ts"],"names":["aptos","SignedTransaction"],"mappings":"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","sourcesContent":["import * as aptos from 'aptos'\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 AptosProvider implements Provider {\n readonly nativeProvider: aptos.AptosClient\n\n private constructor(\n public readonly url: string,\n public readonly faucet?: string,\n public readonly indexer?: string\n ) {\n this.nativeProvider = new aptos.AptosClient(url)\n }\n\n static from(source: string, faucet?: string, indexer?: string): AptosProvider {\n if (typeof source === 'string') {\n return new AptosProvider(source, faucet, indexer)\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) => Number(ledgerInfo.block_height))\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.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.block_height))\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.getBlockByHeight(blockTag).then((block) => Number(block.block_timestamp))\n } else if (blockTag === 'latest') {\n return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.ledger_timestamp))\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] // Uint8Array\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 confirmTransaction(pending: TransactionPending, opts?: object): Promise<TransactionReceipt> {\n const nativePending = pending.pending as aptos.Types.PendingTransaction\n const response = await this.nativeProvider.waitForTransactionWithResult(nativePending.hash)\n if (response.type !== 'user_transaction') {\n throw new Error(`Invalid response type: ${response.type}`)\n }\n const userTransaction = response as aptos.Types.UserTransaction\n if (!userTransaction.success) {\n throw new Error(`aptos transaction failed ,vm_status: ${userTransaction.vm_status}`)\n }\n return TransactionReceipt.from(response)\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n const pending = await this.sendTransaction(transaction, opts)\n return this.confirmTransaction(pending, opts)\n }\n}\n","import * 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 /**\n *\n * @param source\n * @param path e.g. m/44'/637'/0'/0'/0'\n */\n static from(source: string | aptos.AptosAccount, path?: string): AptosSigner {\n if (source instanceof aptos.AptosAccount) {\n return new this(source)\n }\n if (path === undefined) {\n const signer = new aptos.AptosAccount(Buffer.from(trim0x(source)))\n return new this(signer)\n } else if (path.startsWith('m/')) {\n const signer = aptos.AptosAccount.fromDerivePath(path, source)\n return new this(signer)\n }\n throw new Error('Invalid parameters')\n }\n\n get native(): aptos.AptosAccount {\n return this.nativeSigner\n }\n\n connect(provider: Provider): this {\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 const nativeProvider = this.provider?.native\n if (nativeProvider === undefined) {\n throw new Error('Connect the native provider first with AptosSigner.connect()')\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 async buildTransaction(buildTxRequest: unknown): Promise<TransactionRequest> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -19,6 +19,7 @@ declare class AptosProvider implements Provider {
|
|
|
19
19
|
getTransactionReceipt(txHash: string): Promise<TransactionReceipt>;
|
|
20
20
|
getTransactionCount(addressOrName: string | Promise<string>, _blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;
|
|
21
21
|
sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending>;
|
|
22
|
+
confirmTransaction(pending: TransactionPending, opts?: object): Promise<TransactionReceipt>;
|
|
22
23
|
sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
|
|
23
24
|
}
|
|
24
25
|
|
|
@@ -26,16 +27,14 @@ declare class AptosSigner implements Signer {
|
|
|
26
27
|
nativeSigner: aptos.AptosAccount;
|
|
27
28
|
provider: AptosProvider | undefined;
|
|
28
29
|
private constructor();
|
|
29
|
-
static from(signer: aptos.AptosAccount): Signer;
|
|
30
|
-
static from(privKey: string): Signer;
|
|
31
30
|
/**
|
|
32
31
|
*
|
|
33
|
-
* @param
|
|
32
|
+
* @param source
|
|
34
33
|
* @param path e.g. m/44'/637'/0'/0'/0'
|
|
35
34
|
*/
|
|
36
|
-
static from(
|
|
35
|
+
static from(source: string | aptos.AptosAccount, path?: string): AptosSigner;
|
|
37
36
|
get native(): aptos.AptosAccount;
|
|
38
|
-
connect(provider: Provider):
|
|
37
|
+
connect(provider: Provider): this;
|
|
39
38
|
getAddress(): Promise<string>;
|
|
40
39
|
get address(): string;
|
|
41
40
|
sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ declare class AptosProvider implements Provider {
|
|
|
19
19
|
getTransactionReceipt(txHash: string): Promise<TransactionReceipt>;
|
|
20
20
|
getTransactionCount(addressOrName: string | Promise<string>, _blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;
|
|
21
21
|
sendTransaction(transaction: SignedTransaction, _sendOptions?: object): Promise<TransactionPending>;
|
|
22
|
+
confirmTransaction(pending: TransactionPending, opts?: object): Promise<TransactionReceipt>;
|
|
22
23
|
sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
|
|
23
24
|
}
|
|
24
25
|
|
|
@@ -26,16 +27,14 @@ declare class AptosSigner implements Signer {
|
|
|
26
27
|
nativeSigner: aptos.AptosAccount;
|
|
27
28
|
provider: AptosProvider | undefined;
|
|
28
29
|
private constructor();
|
|
29
|
-
static from(signer: aptos.AptosAccount): Signer;
|
|
30
|
-
static from(privKey: string): Signer;
|
|
31
30
|
/**
|
|
32
31
|
*
|
|
33
|
-
* @param
|
|
32
|
+
* @param source
|
|
34
33
|
* @param path e.g. m/44'/637'/0'/0'/0'
|
|
35
34
|
*/
|
|
36
|
-
static from(
|
|
35
|
+
static from(source: string | aptos.AptosAccount, path?: string): AptosSigner;
|
|
37
36
|
get native(): aptos.AptosAccount;
|
|
38
|
-
connect(provider: Provider):
|
|
37
|
+
connect(provider: Provider): this;
|
|
39
38
|
getAddress(): Promise<string>;
|
|
40
39
|
get address(): string;
|
|
41
40
|
sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt>;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as aptos2 from 'aptos';
|
|
2
|
-
import { BigNumber } from 'ethers';
|
|
3
2
|
import { Block, BlockWithTransactions, TransactionResponse, TransactionReceipt, TransactionPending, SignedTransaction } from '@layerzerolabs/lz-core';
|
|
4
3
|
import { isHexString, trim0x } from '@layerzerolabs/lz-utilities';
|
|
5
4
|
|
|
@@ -39,7 +38,7 @@ var AptosProvider = class _AptosProvider {
|
|
|
39
38
|
if (typeof blockTag === "number") {
|
|
40
39
|
blockNumber = blockTag;
|
|
41
40
|
} else if (blockTag === "latest") {
|
|
42
|
-
blockNumber = await this.nativeProvider.getLedgerInfo().then((ledgerInfo) =>
|
|
41
|
+
blockNumber = await this.nativeProvider.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.block_height));
|
|
43
42
|
} else {
|
|
44
43
|
throw new Error("Invalid blockTag");
|
|
45
44
|
}
|
|
@@ -59,7 +58,7 @@ var AptosProvider = class _AptosProvider {
|
|
|
59
58
|
return BlockWithTransactions.from(response);
|
|
60
59
|
}
|
|
61
60
|
async getBlockNumber() {
|
|
62
|
-
return this.nativeProvider.getLedgerInfo().then((ledgerInfo) =>
|
|
61
|
+
return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.block_height));
|
|
63
62
|
}
|
|
64
63
|
async getSlot(_finality) {
|
|
65
64
|
await Promise.resolve();
|
|
@@ -67,9 +66,9 @@ var AptosProvider = class _AptosProvider {
|
|
|
67
66
|
}
|
|
68
67
|
async getBlockTimestamp(blockTag) {
|
|
69
68
|
if (typeof blockTag === "number") {
|
|
70
|
-
return this.nativeProvider.getBlockByHeight(blockTag).then((block) =>
|
|
69
|
+
return this.nativeProvider.getBlockByHeight(blockTag).then((block) => Number(block.block_timestamp));
|
|
71
70
|
} else if (blockTag === "latest") {
|
|
72
|
-
return this.nativeProvider.getLedgerInfo().then((ledgerInfo) =>
|
|
71
|
+
return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.ledger_timestamp));
|
|
73
72
|
} else {
|
|
74
73
|
throw new Error("Invalid blockTag");
|
|
75
74
|
}
|
|
@@ -101,31 +100,42 @@ var AptosProvider = class _AptosProvider {
|
|
|
101
100
|
const response = await this.nativeProvider.submitSignedBCSTransaction(stx);
|
|
102
101
|
return TransactionPending.from(response);
|
|
103
102
|
}
|
|
104
|
-
async
|
|
105
|
-
const
|
|
106
|
-
const response = await this.nativeProvider.waitForTransactionWithResult(
|
|
103
|
+
async confirmTransaction(pending, opts) {
|
|
104
|
+
const nativePending = pending.pending;
|
|
105
|
+
const response = await this.nativeProvider.waitForTransactionWithResult(nativePending.hash);
|
|
106
|
+
if (response.type !== "user_transaction") {
|
|
107
|
+
throw new Error(`Invalid response type: ${response.type}`);
|
|
108
|
+
}
|
|
107
109
|
const userTransaction = response;
|
|
108
110
|
if (!userTransaction.success) {
|
|
109
111
|
throw new Error(`aptos transaction failed ,vm_status: ${userTransaction.vm_status}`);
|
|
110
112
|
}
|
|
111
113
|
return TransactionReceipt.from(response);
|
|
112
114
|
}
|
|
115
|
+
async sendAndConfirm(transaction, opts) {
|
|
116
|
+
const pending = await this.sendTransaction(transaction, opts);
|
|
117
|
+
return this.confirmTransaction(pending, opts);
|
|
118
|
+
}
|
|
113
119
|
};
|
|
114
120
|
var AptosSigner = class {
|
|
115
121
|
constructor(signer) {
|
|
116
122
|
this.nativeSigner = signer;
|
|
117
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
*
|
|
126
|
+
* @param source
|
|
127
|
+
* @param path e.g. m/44'/637'/0'/0'/0'
|
|
128
|
+
*/
|
|
118
129
|
static from(source, path) {
|
|
119
130
|
if (source instanceof aptos2.AptosAccount) {
|
|
120
131
|
return new this(source);
|
|
121
|
-
}
|
|
132
|
+
}
|
|
133
|
+
if (path === void 0) {
|
|
122
134
|
const signer = new aptos2.AptosAccount(Buffer.from(trim0x(source)));
|
|
123
135
|
return new this(signer);
|
|
124
|
-
} else if (
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return new this(signer);
|
|
128
|
-
}
|
|
136
|
+
} else if (path.startsWith("m/")) {
|
|
137
|
+
const signer = aptos2.AptosAccount.fromDerivePath(path, source);
|
|
138
|
+
return new this(signer);
|
|
129
139
|
}
|
|
130
140
|
throw new Error("Invalid parameters");
|
|
131
141
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/aptos.ts","../src/signers/aptos.ts"],"names":["aptos","SignedTransaction"],"mappings":"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","sourcesContent":["import * as aptos from 'aptos'\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 AptosProvider implements Provider {\n readonly nativeProvider: aptos.AptosClient\n\n private constructor(\n public readonly url: string,\n public readonly faucet?: string,\n public readonly indexer?: string\n ) {\n this.nativeProvider = new aptos.AptosClient(url)\n }\n static from(source: string, faucet?: string, indexer?: string): AptosProvider {\n if (typeof source === 'string') {\n return new AptosProvider(source, faucet, indexer)\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 const userTransaction = response as aptos.Types.UserTransaction\n if (!userTransaction.success) {\n throw new Error(`aptos transaction failed ,vm_status: ${userTransaction.vm_status}`)\n }\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.AptosAccount) {\n return new this(source)\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 if (path.startsWith('m/')) {\n const signer = aptos.AptosAccount.fromDerivePath(path, source)\n return new this(signer)\n }\n }\n throw new Error('Invalid parameters')\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 const nativeProvider = this.provider?.native\n if (nativeProvider === undefined) {\n throw new Error('Connect the native provider first with AptosSigner.connect()')\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 async buildTransaction(buildTxRequest: unknown): Promise<TransactionRequest> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/providers/aptos.ts","../src/signers/aptos.ts"],"names":["aptos","SignedTransaction"],"mappings":"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","sourcesContent":["import * as aptos from 'aptos'\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 AptosProvider implements Provider {\n readonly nativeProvider: aptos.AptosClient\n\n private constructor(\n public readonly url: string,\n public readonly faucet?: string,\n public readonly indexer?: string\n ) {\n this.nativeProvider = new aptos.AptosClient(url)\n }\n\n static from(source: string, faucet?: string, indexer?: string): AptosProvider {\n if (typeof source === 'string') {\n return new AptosProvider(source, faucet, indexer)\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) => Number(ledgerInfo.block_height))\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.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.block_height))\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.getBlockByHeight(blockTag).then((block) => Number(block.block_timestamp))\n } else if (blockTag === 'latest') {\n return this.nativeProvider.getLedgerInfo().then((ledgerInfo) => Number(ledgerInfo.ledger_timestamp))\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] // Uint8Array\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 confirmTransaction(pending: TransactionPending, opts?: object): Promise<TransactionReceipt> {\n const nativePending = pending.pending as aptos.Types.PendingTransaction\n const response = await this.nativeProvider.waitForTransactionWithResult(nativePending.hash)\n if (response.type !== 'user_transaction') {\n throw new Error(`Invalid response type: ${response.type}`)\n }\n const userTransaction = response as aptos.Types.UserTransaction\n if (!userTransaction.success) {\n throw new Error(`aptos transaction failed ,vm_status: ${userTransaction.vm_status}`)\n }\n return TransactionReceipt.from(response)\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: object): Promise<TransactionReceipt> {\n const pending = await this.sendTransaction(transaction, opts)\n return this.confirmTransaction(pending, opts)\n }\n}\n","import * 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 /**\n *\n * @param source\n * @param path e.g. m/44'/637'/0'/0'/0'\n */\n static from(source: string | aptos.AptosAccount, path?: string): AptosSigner {\n if (source instanceof aptos.AptosAccount) {\n return new this(source)\n }\n if (path === undefined) {\n const signer = new aptos.AptosAccount(Buffer.from(trim0x(source)))\n return new this(signer)\n } else if (path.startsWith('m/')) {\n const signer = aptos.AptosAccount.fromDerivePath(path, source)\n return new this(signer)\n }\n throw new Error('Invalid parameters')\n }\n\n get native(): aptos.AptosAccount {\n return this.nativeSigner\n }\n\n connect(provider: Provider): this {\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 const nativeProvider = this.provider?.native\n if (nativeProvider === undefined) {\n throw new Error('Connect the native provider first with AptosSigner.connect()')\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 async buildTransaction(buildTxRequest: unknown): Promise<TransactionRequest> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/lz-corekit-aptos",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.12",
|
|
4
4
|
"description": "LayerZero Core Library",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"exports": {
|
|
@@ -23,23 +23,16 @@
|
|
|
23
23
|
"clean-prebuild": "rimraf dist"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@layerzerolabs/lz-aptos-sdk-v1": "^3.0.
|
|
27
|
-
"@layerzerolabs/lz-core": "^3.0.
|
|
28
|
-
"@layerzerolabs/lz-utilities": "^3.0.
|
|
29
|
-
"
|
|
30
|
-
"aptos": "^1.20.0",
|
|
31
|
-
"bip39": "^3.1.0",
|
|
32
|
-
"ed25519-hd-key": "^1.3.0",
|
|
33
|
-
"ethers": "^5.7.2",
|
|
34
|
-
"mem": "^8.1.1",
|
|
35
|
-
"tiny-invariant": "^1.3.1",
|
|
36
|
-
"tronweb": "^5.3.1"
|
|
26
|
+
"@layerzerolabs/lz-aptos-sdk-v1": "^3.0.12",
|
|
27
|
+
"@layerzerolabs/lz-core": "^3.0.12",
|
|
28
|
+
"@layerzerolabs/lz-utilities": "^3.0.12",
|
|
29
|
+
"aptos": "^1.20.0"
|
|
37
30
|
},
|
|
38
31
|
"devDependencies": {
|
|
39
32
|
"@jest/globals": "^29.7.0",
|
|
40
33
|
"@layerzerolabs/tronweb-typescript": "^0.0.0",
|
|
41
|
-
"@layerzerolabs/tsup-config-next": "^3.0.
|
|
42
|
-
"@layerzerolabs/typescript-config-next": "^3.0.
|
|
34
|
+
"@layerzerolabs/tsup-config-next": "^3.0.12",
|
|
35
|
+
"@layerzerolabs/typescript-config-next": "^3.0.12",
|
|
43
36
|
"@types/jest": "^29.5.10",
|
|
44
37
|
"@types/tronweb": "npm:@layerzerolabs/tronweb-typescript@workspace:^",
|
|
45
38
|
"jest": "^29.7.0",
|