@atomiqlabs/chain-starknet 8.0.13 → 8.1.10
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/dist/index.d.ts +18 -18
- package/dist/index.js +42 -42
- package/dist/starknet/StarknetChainType.d.ts +19 -19
- package/dist/starknet/StarknetChainType.js +2 -2
- package/dist/starknet/StarknetInitializer.d.ts +66 -63
- package/dist/starknet/StarknetInitializer.js +101 -101
- package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
- package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +196 -196
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +419 -411
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +70 -70
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +115 -115
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +91 -91
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +155 -155
- package/dist/starknet/chain/StarknetAction.d.ts +19 -19
- package/dist/starknet/chain/StarknetAction.js +74 -74
- package/dist/starknet/chain/StarknetChainInterface.d.ts +142 -143
- package/dist/starknet/chain/StarknetChainInterface.js +198 -199
- package/dist/starknet/chain/StarknetModule.d.ts +8 -8
- package/dist/starknet/chain/StarknetModule.js +12 -12
- package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
- package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
- package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
- package/dist/starknet/chain/modules/StarknetAccounts.js +26 -26
- package/dist/starknet/chain/modules/StarknetAddresses.d.ts +10 -10
- package/dist/starknet/chain/modules/StarknetAddresses.js +27 -27
- package/dist/starknet/chain/modules/StarknetBlocks.d.ts +27 -27
- package/dist/starknet/chain/modules/StarknetBlocks.js +82 -82
- package/dist/starknet/chain/modules/StarknetEvents.d.ts +47 -47
- package/dist/starknet/chain/modules/StarknetEvents.js +90 -90
- package/dist/starknet/chain/modules/StarknetFees.d.ts +118 -104
- package/dist/starknet/chain/modules/StarknetFees.js +150 -146
- package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
- package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
- package/dist/starknet/chain/modules/StarknetTokens.d.ts +66 -66
- package/dist/starknet/chain/modules/StarknetTokens.js +99 -99
- package/dist/starknet/chain/modules/StarknetTransactions.d.ts +122 -115
- package/dist/starknet/chain/modules/StarknetTransactions.js +633 -612
- package/dist/starknet/contract/StarknetContractBase.d.ts +14 -13
- package/dist/starknet/contract/StarknetContractBase.js +21 -20
- package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
- package/dist/starknet/contract/StarknetContractModule.js +11 -11
- package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +56 -57
- package/dist/starknet/contract/modules/StarknetContractEvents.js +111 -111
- package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
- package/dist/starknet/events/StarknetChainEvents.js +61 -61
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +178 -190
- package/dist/starknet/events/StarknetChainEventsBrowser.js +523 -582
- package/dist/starknet/provider/RpcProviderWithRetries.d.ts +49 -53
- package/dist/starknet/provider/RpcProviderWithRetries.js +94 -94
- package/dist/starknet/provider/WebSocketChannelWithRetries.d.ts +21 -21
- package/dist/starknet/provider/WebSocketChannelWithRetries.js +46 -46
- package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
- package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +225 -219
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +663 -621
- package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +108 -108
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +190 -190
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +56 -56
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +103 -103
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
- package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +309 -278
- package/dist/starknet/swaps/StarknetSwapContract.js +755 -579
- package/dist/starknet/swaps/StarknetSwapData.d.ts +234 -234
- package/dist/starknet/swaps/StarknetSwapData.js +474 -474
- package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
- package/dist/starknet/swaps/StarknetSwapModule.js +12 -12
- package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
- package/dist/starknet/swaps/handlers/IHandler.js +2 -2
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +42 -45
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +50 -54
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
- package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +67 -67
- package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
- package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +52 -52
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +99 -99
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -94
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +239 -239
- package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +60 -60
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +126 -126
- package/dist/starknet/wallet/StarknetBrowserSigner.d.ts +11 -11
- package/dist/starknet/wallet/StarknetBrowserSigner.js +17 -17
- package/dist/starknet/wallet/StarknetPersistentSigner.d.ts +76 -76
- package/dist/starknet/wallet/StarknetPersistentSigner.js +291 -291
- package/dist/starknet/wallet/StarknetSigner.d.ts +72 -72
- package/dist/starknet/wallet/StarknetSigner.js +114 -114
- package/dist/starknet/wallet/accounts/StarknetKeypairWallet.d.ts +18 -18
- package/dist/starknet/wallet/accounts/StarknetKeypairWallet.js +45 -45
- package/dist/utils/Utils.d.ts +77 -77
- package/dist/utils/Utils.js +304 -303
- package/package.json +2 -2
- package/src/starknet/StarknetInitializer.ts +6 -3
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +19 -6
- package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +7 -7
- package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +6 -6
- package/src/starknet/chain/StarknetAction.ts +1 -0
- package/src/starknet/chain/StarknetChainInterface.ts +0 -2
- package/src/starknet/chain/modules/StarknetFees.ts +15 -2
- package/src/starknet/chain/modules/StarknetTransactions.ts +24 -0
- package/src/starknet/contract/StarknetContractBase.ts +7 -4
- package/src/starknet/contract/StarknetContractModule.ts +1 -1
- package/src/starknet/contract/modules/StarknetContractEvents.ts +7 -7
- package/src/starknet/events/StarknetChainEventsBrowser.ts +2 -64
- package/src/starknet/provider/RpcProviderWithRetries.ts +1 -1
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +84 -18
- package/src/starknet/swaps/StarknetSwapContract.ts +242 -6
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +0 -4
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { AbstractSigner } from "@atomiqlabs/base";
|
|
2
|
-
import { Account, DeployAccountContractPayload, Invocation, DeployAccountContractTransaction } from "starknet";
|
|
3
|
-
import { StarknetTx, StarknetTxDeployAccount, StarknetTxInvoke } from "../chain/modules/StarknetTransactions";
|
|
4
|
-
/**
|
|
5
|
-
* Starknet signer implementation wrapping a starknet.js {@link Account}, for browser
|
|
6
|
-
* based wallet use {@link StarknetBrowserSigner}
|
|
7
|
-
*
|
|
8
|
-
* @category Wallets
|
|
9
|
-
*/
|
|
10
|
-
export declare class StarknetSigner implements AbstractSigner {
|
|
11
|
-
type: "AtomiqAbstractSigner";
|
|
12
|
-
readonly isManagingNoncesInternally: boolean;
|
|
13
|
-
readonly account: Account;
|
|
14
|
-
/**
|
|
15
|
-
* Constructs a signer wrapping a starknet.js {@link Account}
|
|
16
|
-
*
|
|
17
|
-
* @param account
|
|
18
|
-
*/
|
|
19
|
-
constructor(account: Account);
|
|
20
|
-
constructor(account: Account, isManagingNoncesInternally?: boolean);
|
|
21
|
-
/**
|
|
22
|
-
* @inheritDoc
|
|
23
|
-
*/
|
|
24
|
-
getAddress(): string;
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* @param tx
|
|
28
|
-
* @protected
|
|
29
|
-
*/
|
|
30
|
-
protected _signTransaction(tx: StarknetTx): Promise<StarknetTx>;
|
|
31
|
-
/**
|
|
32
|
-
* Signs the provided starknet transaction and returns its signed version
|
|
33
|
-
*
|
|
34
|
-
* @param tx A starknet transaction to sign
|
|
35
|
-
*/
|
|
36
|
-
signTransaction?(tx: StarknetTx): Promise<StarknetTx>;
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
39
|
-
* @param tx
|
|
40
|
-
* @protected
|
|
41
|
-
*/
|
|
42
|
-
protected signInvoke(tx: StarknetTxInvoke): Promise<Invocation>;
|
|
43
|
-
/**
|
|
44
|
-
* @param tx
|
|
45
|
-
* @protected
|
|
46
|
-
*/
|
|
47
|
-
protected signDeployAccount(tx: StarknetTxDeployAccount): Promise<DeployAccountContractTransaction>;
|
|
48
|
-
/**
|
|
49
|
-
* Signs and sends the provided starknet transaction. Note that onBeforePublish is not really called before the
|
|
50
|
-
* tx is sent out in this default case, since this is not supported by the starknet web based wallets
|
|
51
|
-
*
|
|
52
|
-
* @param tx A transaction to sign and send
|
|
53
|
-
* @param onBeforePublish A callback called after the transaction has been sent
|
|
54
|
-
*/
|
|
55
|
-
sendTransaction(tx: StarknetTx, onBeforePublish?: (txId: string, rawTx: string) => Promise<void>): Promise<string>;
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
* @param tx
|
|
59
|
-
* @protected
|
|
60
|
-
*/
|
|
61
|
-
protected sendInvoke(tx: StarknetTxInvoke): Promise<string>;
|
|
62
|
-
/**
|
|
63
|
-
*
|
|
64
|
-
* @param tx
|
|
65
|
-
* @protected
|
|
66
|
-
*/
|
|
67
|
-
protected sendDeployAccount(tx: StarknetTxDeployAccount): Promise<string>;
|
|
68
|
-
/**
|
|
69
|
-
* Returns the payload for deploying the signer account's contract on Starknet
|
|
70
|
-
*/
|
|
71
|
-
getDeployPayload(): Promise<DeployAccountContractPayload | null>;
|
|
72
|
-
}
|
|
1
|
+
import { AbstractSigner } from "@atomiqlabs/base";
|
|
2
|
+
import { Account, DeployAccountContractPayload, Invocation, DeployAccountContractTransaction } from "starknet";
|
|
3
|
+
import { StarknetTx, StarknetTxDeployAccount, StarknetTxInvoke } from "../chain/modules/StarknetTransactions";
|
|
4
|
+
/**
|
|
5
|
+
* Starknet signer implementation wrapping a starknet.js {@link Account}, for browser
|
|
6
|
+
* based wallet use {@link StarknetBrowserSigner}
|
|
7
|
+
*
|
|
8
|
+
* @category Wallets
|
|
9
|
+
*/
|
|
10
|
+
export declare class StarknetSigner implements AbstractSigner {
|
|
11
|
+
type: "AtomiqAbstractSigner";
|
|
12
|
+
readonly isManagingNoncesInternally: boolean;
|
|
13
|
+
readonly account: Account;
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a signer wrapping a starknet.js {@link Account}
|
|
16
|
+
*
|
|
17
|
+
* @param account
|
|
18
|
+
*/
|
|
19
|
+
constructor(account: Account);
|
|
20
|
+
constructor(account: Account, isManagingNoncesInternally?: boolean);
|
|
21
|
+
/**
|
|
22
|
+
* @inheritDoc
|
|
23
|
+
*/
|
|
24
|
+
getAddress(): string;
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @param tx
|
|
28
|
+
* @protected
|
|
29
|
+
*/
|
|
30
|
+
protected _signTransaction(tx: StarknetTx): Promise<StarknetTx>;
|
|
31
|
+
/**
|
|
32
|
+
* Signs the provided starknet transaction and returns its signed version
|
|
33
|
+
*
|
|
34
|
+
* @param tx A starknet transaction to sign
|
|
35
|
+
*/
|
|
36
|
+
signTransaction?(tx: StarknetTx): Promise<StarknetTx>;
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
* @param tx
|
|
40
|
+
* @protected
|
|
41
|
+
*/
|
|
42
|
+
protected signInvoke(tx: StarknetTxInvoke): Promise<Invocation>;
|
|
43
|
+
/**
|
|
44
|
+
* @param tx
|
|
45
|
+
* @protected
|
|
46
|
+
*/
|
|
47
|
+
protected signDeployAccount(tx: StarknetTxDeployAccount): Promise<DeployAccountContractTransaction>;
|
|
48
|
+
/**
|
|
49
|
+
* Signs and sends the provided starknet transaction. Note that onBeforePublish is not really called before the
|
|
50
|
+
* tx is sent out in this default case, since this is not supported by the starknet web based wallets
|
|
51
|
+
*
|
|
52
|
+
* @param tx A transaction to sign and send
|
|
53
|
+
* @param onBeforePublish A callback called after the transaction has been sent
|
|
54
|
+
*/
|
|
55
|
+
sendTransaction(tx: StarknetTx, onBeforePublish?: (txId: string, rawTx: string) => Promise<void>): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
* @param tx
|
|
59
|
+
* @protected
|
|
60
|
+
*/
|
|
61
|
+
protected sendInvoke(tx: StarknetTxInvoke): Promise<string>;
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
* @param tx
|
|
65
|
+
* @protected
|
|
66
|
+
*/
|
|
67
|
+
protected sendDeployAccount(tx: StarknetTxDeployAccount): Promise<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Returns the payload for deploying the signer account's contract on Starknet
|
|
70
|
+
*/
|
|
71
|
+
getDeployPayload(): Promise<DeployAccountContractPayload | null>;
|
|
72
|
+
}
|
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StarknetSigner = void 0;
|
|
4
|
-
const Utils_1 = require("../../utils/Utils");
|
|
5
|
-
const StarknetTransactions_1 = require("../chain/modules/StarknetTransactions");
|
|
6
|
-
/**
|
|
7
|
-
* Starknet signer implementation wrapping a starknet.js {@link Account}, for browser
|
|
8
|
-
* based wallet use {@link StarknetBrowserSigner}
|
|
9
|
-
*
|
|
10
|
-
* @category Wallets
|
|
11
|
-
*/
|
|
12
|
-
class StarknetSigner {
|
|
13
|
-
constructor(account, isManagingNoncesInternally = false) {
|
|
14
|
-
this.type = "AtomiqAbstractSigner";
|
|
15
|
-
this.account = account;
|
|
16
|
-
this.isManagingNoncesInternally = isManagingNoncesInternally;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* @inheritDoc
|
|
20
|
-
*/
|
|
21
|
-
getAddress() {
|
|
22
|
-
return (0, Utils_1.toHex)(this.account.address);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
* @param tx
|
|
27
|
-
* @protected
|
|
28
|
-
*/
|
|
29
|
-
async _signTransaction(tx) {
|
|
30
|
-
if ((0, StarknetTransactions_1.isStarknetTxInvoke)(tx)) {
|
|
31
|
-
tx.signed = await this.signInvoke(tx);
|
|
32
|
-
}
|
|
33
|
-
else if ((0, StarknetTransactions_1.isStarknetTxDeployAccount)(tx)) {
|
|
34
|
-
tx.signed = await this.signDeployAccount(tx);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
throw new Error("Unsupported transaction type!");
|
|
38
|
-
}
|
|
39
|
-
(0, Utils_1.calculateHash)(tx);
|
|
40
|
-
return tx;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Signs the provided starknet transaction and returns its signed version
|
|
44
|
-
*
|
|
45
|
-
* @param tx A starknet transaction to sign
|
|
46
|
-
*/
|
|
47
|
-
signTransaction(tx) {
|
|
48
|
-
return this._signTransaction(tx);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
52
|
-
* @param tx
|
|
53
|
-
* @protected
|
|
54
|
-
*/
|
|
55
|
-
signInvoke(tx) {
|
|
56
|
-
return this.account.buildInvocation(tx.tx, tx.details);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* @param tx
|
|
60
|
-
* @protected
|
|
61
|
-
*/
|
|
62
|
-
signDeployAccount(tx) {
|
|
63
|
-
return this.account.buildAccountDeployPayload(tx.tx, tx.details);
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Signs and sends the provided starknet transaction. Note that onBeforePublish is not really called before the
|
|
67
|
-
* tx is sent out in this default case, since this is not supported by the starknet web based wallets
|
|
68
|
-
*
|
|
69
|
-
* @param tx A transaction to sign and send
|
|
70
|
-
* @param onBeforePublish A callback called after the transaction has been sent
|
|
71
|
-
*/
|
|
72
|
-
async sendTransaction(tx, onBeforePublish) {
|
|
73
|
-
if ((0, StarknetTransactions_1.isStarknetTxInvoke)(tx)) {
|
|
74
|
-
tx.txId = await this.sendInvoke(tx);
|
|
75
|
-
}
|
|
76
|
-
else if ((0, StarknetTransactions_1.isStarknetTxDeployAccount)(tx)) {
|
|
77
|
-
tx.txId = await this.sendDeployAccount(tx);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
throw new Error("Unsupported transaction type!");
|
|
81
|
-
}
|
|
82
|
-
if (onBeforePublish != null)
|
|
83
|
-
await onBeforePublish(tx.txId, StarknetTransactions_1.StarknetTransactions.serializeTx(tx));
|
|
84
|
-
return tx.txId;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
*
|
|
88
|
-
* @param tx
|
|
89
|
-
* @protected
|
|
90
|
-
*/
|
|
91
|
-
async sendInvoke(tx) {
|
|
92
|
-
const result = await this.account.execute(tx.tx, tx.details);
|
|
93
|
-
return result.transaction_hash;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
*
|
|
97
|
-
* @param tx
|
|
98
|
-
* @protected
|
|
99
|
-
*/
|
|
100
|
-
async sendDeployAccount(tx) {
|
|
101
|
-
const result = await this.account.deployAccount(tx.tx, tx.details);
|
|
102
|
-
return result.transaction_hash;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Returns the payload for deploying the signer account's contract on Starknet
|
|
106
|
-
*/
|
|
107
|
-
async getDeployPayload() {
|
|
108
|
-
const _account = this.account;
|
|
109
|
-
if (_account.getDeploymentData == null)
|
|
110
|
-
return null;
|
|
111
|
-
return _account.getDeploymentData();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
exports.StarknetSigner = StarknetSigner;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StarknetSigner = void 0;
|
|
4
|
+
const Utils_1 = require("../../utils/Utils");
|
|
5
|
+
const StarknetTransactions_1 = require("../chain/modules/StarknetTransactions");
|
|
6
|
+
/**
|
|
7
|
+
* Starknet signer implementation wrapping a starknet.js {@link Account}, for browser
|
|
8
|
+
* based wallet use {@link StarknetBrowserSigner}
|
|
9
|
+
*
|
|
10
|
+
* @category Wallets
|
|
11
|
+
*/
|
|
12
|
+
class StarknetSigner {
|
|
13
|
+
constructor(account, isManagingNoncesInternally = false) {
|
|
14
|
+
this.type = "AtomiqAbstractSigner";
|
|
15
|
+
this.account = account;
|
|
16
|
+
this.isManagingNoncesInternally = isManagingNoncesInternally;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @inheritDoc
|
|
20
|
+
*/
|
|
21
|
+
getAddress() {
|
|
22
|
+
return (0, Utils_1.toHex)(this.account.address);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @param tx
|
|
27
|
+
* @protected
|
|
28
|
+
*/
|
|
29
|
+
async _signTransaction(tx) {
|
|
30
|
+
if ((0, StarknetTransactions_1.isStarknetTxInvoke)(tx)) {
|
|
31
|
+
tx.signed = await this.signInvoke(tx);
|
|
32
|
+
}
|
|
33
|
+
else if ((0, StarknetTransactions_1.isStarknetTxDeployAccount)(tx)) {
|
|
34
|
+
tx.signed = await this.signDeployAccount(tx);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new Error("Unsupported transaction type!");
|
|
38
|
+
}
|
|
39
|
+
(0, Utils_1.calculateHash)(tx);
|
|
40
|
+
return tx;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Signs the provided starknet transaction and returns its signed version
|
|
44
|
+
*
|
|
45
|
+
* @param tx A starknet transaction to sign
|
|
46
|
+
*/
|
|
47
|
+
signTransaction(tx) {
|
|
48
|
+
return this._signTransaction(tx);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
* @param tx
|
|
53
|
+
* @protected
|
|
54
|
+
*/
|
|
55
|
+
signInvoke(tx) {
|
|
56
|
+
return this.account.buildInvocation(tx.tx, tx.details);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @param tx
|
|
60
|
+
* @protected
|
|
61
|
+
*/
|
|
62
|
+
signDeployAccount(tx) {
|
|
63
|
+
return this.account.buildAccountDeployPayload(tx.tx, tx.details);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Signs and sends the provided starknet transaction. Note that onBeforePublish is not really called before the
|
|
67
|
+
* tx is sent out in this default case, since this is not supported by the starknet web based wallets
|
|
68
|
+
*
|
|
69
|
+
* @param tx A transaction to sign and send
|
|
70
|
+
* @param onBeforePublish A callback called after the transaction has been sent
|
|
71
|
+
*/
|
|
72
|
+
async sendTransaction(tx, onBeforePublish) {
|
|
73
|
+
if ((0, StarknetTransactions_1.isStarknetTxInvoke)(tx)) {
|
|
74
|
+
tx.txId = await this.sendInvoke(tx);
|
|
75
|
+
}
|
|
76
|
+
else if ((0, StarknetTransactions_1.isStarknetTxDeployAccount)(tx)) {
|
|
77
|
+
tx.txId = await this.sendDeployAccount(tx);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
throw new Error("Unsupported transaction type!");
|
|
81
|
+
}
|
|
82
|
+
if (onBeforePublish != null)
|
|
83
|
+
await onBeforePublish(tx.txId, StarknetTransactions_1.StarknetTransactions.serializeTx(tx));
|
|
84
|
+
return tx.txId;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
*
|
|
88
|
+
* @param tx
|
|
89
|
+
* @protected
|
|
90
|
+
*/
|
|
91
|
+
async sendInvoke(tx) {
|
|
92
|
+
const result = await this.account.execute(tx.tx, tx.details);
|
|
93
|
+
return result.transaction_hash;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
* @param tx
|
|
98
|
+
* @protected
|
|
99
|
+
*/
|
|
100
|
+
async sendDeployAccount(tx) {
|
|
101
|
+
const result = await this.account.deployAccount(tx.tx, tx.details);
|
|
102
|
+
return result.transaction_hash;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns the payload for deploying the signer account's contract on Starknet
|
|
106
|
+
*/
|
|
107
|
+
async getDeployPayload() {
|
|
108
|
+
const _account = this.account;
|
|
109
|
+
if (_account.getDeploymentData == null)
|
|
110
|
+
return null;
|
|
111
|
+
return _account.getDeploymentData();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.StarknetSigner = StarknetSigner;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Account, DeployAccountContractPayload, Provider } from "starknet";
|
|
2
|
-
/**
|
|
3
|
-
* Keypair-based wallet implementation using OpenZeppelin Account
|
|
4
|
-
*
|
|
5
|
-
* @category Wallets
|
|
6
|
-
*/
|
|
7
|
-
export declare class StarknetKeypairWallet extends Account {
|
|
8
|
-
readonly publicKey: string;
|
|
9
|
-
constructor(provider: Provider, privateKey: string);
|
|
10
|
-
/**
|
|
11
|
-
* @inheritDoc
|
|
12
|
-
*/
|
|
13
|
-
getDeploymentData(): DeployAccountContractPayload;
|
|
14
|
-
/**
|
|
15
|
-
* Generates a random Stark Curve private key for the OZ account
|
|
16
|
-
*/
|
|
17
|
-
static generateRandomPrivateKey(): string;
|
|
18
|
-
}
|
|
1
|
+
import { Account, DeployAccountContractPayload, Provider } from "starknet";
|
|
2
|
+
/**
|
|
3
|
+
* Keypair-based wallet implementation using OpenZeppelin Account
|
|
4
|
+
*
|
|
5
|
+
* @category Wallets
|
|
6
|
+
*/
|
|
7
|
+
export declare class StarknetKeypairWallet extends Account {
|
|
8
|
+
readonly publicKey: string;
|
|
9
|
+
constructor(provider: Provider, privateKey: string);
|
|
10
|
+
/**
|
|
11
|
+
* @inheritDoc
|
|
12
|
+
*/
|
|
13
|
+
getDeploymentData(): DeployAccountContractPayload;
|
|
14
|
+
/**
|
|
15
|
+
* Generates a random Stark Curve private key for the OZ account
|
|
16
|
+
*/
|
|
17
|
+
static generateRandomPrivateKey(): string;
|
|
18
|
+
}
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StarknetKeypairWallet = void 0;
|
|
4
|
-
const starknet_1 = require("starknet");
|
|
5
|
-
const Utils_1 = require("../../../utils/Utils");
|
|
6
|
-
const buffer_1 = require("buffer");
|
|
7
|
-
const OZaccountClassHash = '0x00261c293c8084cd79086214176b33e5911677cec55104fddc8d25b0b736dcad';
|
|
8
|
-
/**
|
|
9
|
-
* Keypair-based wallet implementation using OpenZeppelin Account
|
|
10
|
-
*
|
|
11
|
-
* @category Wallets
|
|
12
|
-
*/
|
|
13
|
-
class StarknetKeypairWallet extends starknet_1.Account {
|
|
14
|
-
constructor(provider, privateKey) {
|
|
15
|
-
const publicKey = starknet_1.ec.starkCurve.getStarkKey((0, Utils_1.toHex)(privateKey));
|
|
16
|
-
// Calculate future address of the account
|
|
17
|
-
const OZaccountConstructorCallData = starknet_1.CallData.compile({ publicKey });
|
|
18
|
-
const OZcontractAddress = starknet_1.hash.calculateContractAddressFromHash(publicKey, OZaccountClassHash, OZaccountConstructorCallData, 0);
|
|
19
|
-
super({
|
|
20
|
-
provider,
|
|
21
|
-
address: OZcontractAddress,
|
|
22
|
-
signer: privateKey,
|
|
23
|
-
cairoVersion: "1"
|
|
24
|
-
});
|
|
25
|
-
this.publicKey = publicKey;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* @inheritDoc
|
|
29
|
-
*/
|
|
30
|
-
getDeploymentData() {
|
|
31
|
-
return {
|
|
32
|
-
classHash: OZaccountClassHash,
|
|
33
|
-
constructorCalldata: starknet_1.CallData.compile({ publicKey: this.publicKey }),
|
|
34
|
-
addressSalt: this.publicKey,
|
|
35
|
-
contractAddress: this.address
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Generates a random Stark Curve private key for the OZ account
|
|
40
|
-
*/
|
|
41
|
-
static generateRandomPrivateKey() {
|
|
42
|
-
return "0x" + buffer_1.Buffer.from(starknet_1.ec.starkCurve.utils.randomPrivateKey()).toString("hex");
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.StarknetKeypairWallet = StarknetKeypairWallet;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StarknetKeypairWallet = void 0;
|
|
4
|
+
const starknet_1 = require("starknet");
|
|
5
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
6
|
+
const buffer_1 = require("buffer");
|
|
7
|
+
const OZaccountClassHash = '0x00261c293c8084cd79086214176b33e5911677cec55104fddc8d25b0b736dcad';
|
|
8
|
+
/**
|
|
9
|
+
* Keypair-based wallet implementation using OpenZeppelin Account
|
|
10
|
+
*
|
|
11
|
+
* @category Wallets
|
|
12
|
+
*/
|
|
13
|
+
class StarknetKeypairWallet extends starknet_1.Account {
|
|
14
|
+
constructor(provider, privateKey) {
|
|
15
|
+
const publicKey = starknet_1.ec.starkCurve.getStarkKey((0, Utils_1.toHex)(privateKey));
|
|
16
|
+
// Calculate future address of the account
|
|
17
|
+
const OZaccountConstructorCallData = starknet_1.CallData.compile({ publicKey });
|
|
18
|
+
const OZcontractAddress = starknet_1.hash.calculateContractAddressFromHash(publicKey, OZaccountClassHash, OZaccountConstructorCallData, 0);
|
|
19
|
+
super({
|
|
20
|
+
provider,
|
|
21
|
+
address: OZcontractAddress,
|
|
22
|
+
signer: privateKey,
|
|
23
|
+
cairoVersion: "1"
|
|
24
|
+
});
|
|
25
|
+
this.publicKey = publicKey;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @inheritDoc
|
|
29
|
+
*/
|
|
30
|
+
getDeploymentData() {
|
|
31
|
+
return {
|
|
32
|
+
classHash: OZaccountClassHash,
|
|
33
|
+
constructorCalldata: starknet_1.CallData.compile({ publicKey: this.publicKey }),
|
|
34
|
+
addressSalt: this.publicKey,
|
|
35
|
+
contractAddress: this.address
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Generates a random Stark Curve private key for the OZ account
|
|
40
|
+
*/
|
|
41
|
+
static generateRandomPrivateKey() {
|
|
42
|
+
return "0x" + buffer_1.Buffer.from(starknet_1.ec.starkCurve.utils.randomPrivateKey()).toString("hex");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.StarknetKeypairWallet = StarknetKeypairWallet;
|
package/dist/utils/Utils.d.ts
CHANGED
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import { BigNumberish, Signature, Uint256, ResourceBounds, ResourceBoundsBN } from "starknet";
|
|
2
|
-
import { StarknetTx } from "../starknet/chain/modules/StarknetTransactions";
|
|
3
|
-
import { Buffer } from "buffer";
|
|
4
|
-
export type ReplaceBigInt<T> = T extends bigint ? string : T extends (infer U)[] ? ReplaceBigInt<U>[] : T extends readonly (infer U)[] ? readonly ReplaceBigInt<U>[] : T extends object ? {
|
|
5
|
-
[K in keyof T]: ReplaceBigInt<T[K]>;
|
|
6
|
-
} : T;
|
|
7
|
-
export type NoBigInt = number | string | boolean | NoBigIntObject | NoBigIntArray;
|
|
8
|
-
type NoBigIntArray = NoBigInt[];
|
|
9
|
-
interface NoBigIntObject {
|
|
10
|
-
[key: string]: NoBigInt;
|
|
11
|
-
}
|
|
12
|
-
export type Serialized<T> = {
|
|
13
|
-
[K in keyof T as T[K] extends Function ? never : K]: T[K] extends infer U ? U extends bigint ? string : U extends object ? Serialized<U> : U : never;
|
|
14
|
-
};
|
|
15
|
-
export declare function isUint256(val: any): val is Uint256;
|
|
16
|
-
export declare function timeoutPromise(timeoutMillis: number, abortSignal?: AbortSignal): Promise<void>;
|
|
17
|
-
export declare function onceAsync<T>(executor: () => Promise<T>): () => Promise<T>;
|
|
18
|
-
export type LoggerType = {
|
|
19
|
-
debug: (msg: string, ...args: any[]) => void;
|
|
20
|
-
info: (msg: string, ...args: any[]) => void;
|
|
21
|
-
warn: (msg: string, ...args: any[]) => void;
|
|
22
|
-
error: (msg: string, ...args: any[]) => void;
|
|
23
|
-
};
|
|
24
|
-
export declare function getLogger(prefix: string): LoggerType;
|
|
25
|
-
export declare function tryWithRetries<T>(func: () => Promise<T>, retryPolicy?: {
|
|
26
|
-
maxRetries?: number;
|
|
27
|
-
delay?: number;
|
|
28
|
-
exponential?: boolean;
|
|
29
|
-
}, errorAllowed?: (e: any) => boolean, abortSignal?: AbortSignal): Promise<T>;
|
|
30
|
-
export declare function toHex(value: number | bigint | string | Buffer, length?: number): string;
|
|
31
|
-
export declare function toHex(value: undefined | null, length?: number): null;
|
|
32
|
-
export declare function toHex(value: number | bigint | string | Buffer | undefined | null, length?: number): string | null;
|
|
33
|
-
export declare function calculateHash(tx: StarknetTx): string;
|
|
34
|
-
export declare function u32ArrayToBuffer(arr: BigNumberish[]): Buffer;
|
|
35
|
-
export declare function bufferToU32Array(buffer: Buffer): number[];
|
|
36
|
-
export declare function u32ReverseEndianness(value: number): number;
|
|
37
|
-
export declare function bigNumberishToBuffer(value: BigNumberish | Uint256, length?: number): Buffer;
|
|
38
|
-
export declare function toBigInt(value: BigNumberish | Uint256): bigint;
|
|
39
|
-
export declare function toBigInt(value: null | undefined): null;
|
|
40
|
-
export declare function toBigInt(value: BigNumberish | Uint256 | null | undefined): bigint | null;
|
|
41
|
-
export declare function bytes31SpanToBuffer(span: BigNumberish[], length: number): Buffer;
|
|
42
|
-
export declare function bufferToBytes31Span(buffer: Buffer, startIndex?: number, endIndex?: number): bigint[];
|
|
43
|
-
export declare function bufferToByteArray(buffer: Buffer, startIndex?: number, endIndex?: number): BigNumberish[];
|
|
44
|
-
export declare function poseidonHashRange(buffer: Buffer, startIndex?: number, endIndex?: number): BigNumberish;
|
|
45
|
-
export declare function findLastIndex<T>(array: T[], callback: (value: T, index: number) => boolean): number;
|
|
46
|
-
export declare function bigIntMax(a: bigint, b: bigint): bigint;
|
|
47
|
-
export declare function serializeSignature(signature?: Signature): ReplaceBigInt<Signature> | undefined;
|
|
48
|
-
export declare function deserializeSignature(signature?: ReplaceBigInt<Signature>): Signature | undefined;
|
|
49
|
-
export declare function serializeResourceBounds(resourceBounds: {
|
|
50
|
-
l2_gas: {
|
|
51
|
-
max_amount: BigNumberish;
|
|
52
|
-
max_price_per_unit: BigNumberish;
|
|
53
|
-
};
|
|
54
|
-
l1_gas: {
|
|
55
|
-
max_amount: BigNumberish;
|
|
56
|
-
max_price_per_unit: BigNumberish;
|
|
57
|
-
};
|
|
58
|
-
l1_data_gas: {
|
|
59
|
-
max_amount: BigNumberish;
|
|
60
|
-
max_price_per_unit: BigNumberish;
|
|
61
|
-
};
|
|
62
|
-
}): {
|
|
63
|
-
l2_gas: {
|
|
64
|
-
max_amount: string;
|
|
65
|
-
max_price_per_unit: string;
|
|
66
|
-
};
|
|
67
|
-
l1_gas: {
|
|
68
|
-
max_amount: string;
|
|
69
|
-
max_price_per_unit: string;
|
|
70
|
-
};
|
|
71
|
-
l1_data_gas: {
|
|
72
|
-
max_amount: string;
|
|
73
|
-
max_price_per_unit: string;
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
export declare function deserializeResourceBounds(resourceBounds: ResourceBounds): ResourceBoundsBN;
|
|
77
|
-
export {};
|
|
1
|
+
import { BigNumberish, Signature, Uint256, ResourceBounds, ResourceBoundsBN } from "starknet";
|
|
2
|
+
import { StarknetTx } from "../starknet/chain/modules/StarknetTransactions";
|
|
3
|
+
import { Buffer } from "buffer";
|
|
4
|
+
export type ReplaceBigInt<T> = T extends bigint ? string : T extends (infer U)[] ? ReplaceBigInt<U>[] : T extends readonly (infer U)[] ? readonly ReplaceBigInt<U>[] : T extends object ? {
|
|
5
|
+
[K in keyof T]: ReplaceBigInt<T[K]>;
|
|
6
|
+
} : T;
|
|
7
|
+
export type NoBigInt = number | string | boolean | NoBigIntObject | NoBigIntArray;
|
|
8
|
+
type NoBigIntArray = NoBigInt[];
|
|
9
|
+
interface NoBigIntObject {
|
|
10
|
+
[key: string]: NoBigInt;
|
|
11
|
+
}
|
|
12
|
+
export type Serialized<T> = {
|
|
13
|
+
[K in keyof T as T[K] extends Function ? never : K]: T[K] extends infer U ? U extends bigint ? string : U extends object ? Serialized<U> : U : never;
|
|
14
|
+
};
|
|
15
|
+
export declare function isUint256(val: any): val is Uint256;
|
|
16
|
+
export declare function timeoutPromise(timeoutMillis: number, abortSignal?: AbortSignal): Promise<void>;
|
|
17
|
+
export declare function onceAsync<T>(executor: () => Promise<T>): () => Promise<T>;
|
|
18
|
+
export type LoggerType = {
|
|
19
|
+
debug: (msg: string, ...args: any[]) => void;
|
|
20
|
+
info: (msg: string, ...args: any[]) => void;
|
|
21
|
+
warn: (msg: string, ...args: any[]) => void;
|
|
22
|
+
error: (msg: string, ...args: any[]) => void;
|
|
23
|
+
};
|
|
24
|
+
export declare function getLogger(prefix: string): LoggerType;
|
|
25
|
+
export declare function tryWithRetries<T>(func: () => Promise<T>, retryPolicy?: {
|
|
26
|
+
maxRetries?: number;
|
|
27
|
+
delay?: number;
|
|
28
|
+
exponential?: boolean;
|
|
29
|
+
}, errorAllowed?: (e: any) => boolean, abortSignal?: AbortSignal): Promise<T>;
|
|
30
|
+
export declare function toHex(value: number | bigint | string | Buffer, length?: number): string;
|
|
31
|
+
export declare function toHex(value: undefined | null, length?: number): null;
|
|
32
|
+
export declare function toHex(value: number | bigint | string | Buffer | undefined | null, length?: number): string | null;
|
|
33
|
+
export declare function calculateHash(tx: StarknetTx): string;
|
|
34
|
+
export declare function u32ArrayToBuffer(arr: BigNumberish[]): Buffer;
|
|
35
|
+
export declare function bufferToU32Array(buffer: Buffer): number[];
|
|
36
|
+
export declare function u32ReverseEndianness(value: number): number;
|
|
37
|
+
export declare function bigNumberishToBuffer(value: BigNumberish | Uint256, length?: number): Buffer;
|
|
38
|
+
export declare function toBigInt(value: BigNumberish | Uint256): bigint;
|
|
39
|
+
export declare function toBigInt(value: null | undefined): null;
|
|
40
|
+
export declare function toBigInt(value: BigNumberish | Uint256 | null | undefined): bigint | null;
|
|
41
|
+
export declare function bytes31SpanToBuffer(span: BigNumberish[], length: number): Buffer;
|
|
42
|
+
export declare function bufferToBytes31Span(buffer: Buffer, startIndex?: number, endIndex?: number): bigint[];
|
|
43
|
+
export declare function bufferToByteArray(buffer: Buffer, startIndex?: number, endIndex?: number): BigNumberish[];
|
|
44
|
+
export declare function poseidonHashRange(buffer: Buffer, startIndex?: number, endIndex?: number): BigNumberish;
|
|
45
|
+
export declare function findLastIndex<T>(array: T[], callback: (value: T, index: number) => boolean): number;
|
|
46
|
+
export declare function bigIntMax(a: bigint, b: bigint): bigint;
|
|
47
|
+
export declare function serializeSignature(signature?: Signature): ReplaceBigInt<Signature> | undefined;
|
|
48
|
+
export declare function deserializeSignature(signature?: ReplaceBigInt<Signature>): Signature | undefined;
|
|
49
|
+
export declare function serializeResourceBounds(resourceBounds: {
|
|
50
|
+
l2_gas: {
|
|
51
|
+
max_amount: BigNumberish;
|
|
52
|
+
max_price_per_unit: BigNumberish;
|
|
53
|
+
};
|
|
54
|
+
l1_gas: {
|
|
55
|
+
max_amount: BigNumberish;
|
|
56
|
+
max_price_per_unit: BigNumberish;
|
|
57
|
+
};
|
|
58
|
+
l1_data_gas: {
|
|
59
|
+
max_amount: BigNumberish;
|
|
60
|
+
max_price_per_unit: BigNumberish;
|
|
61
|
+
};
|
|
62
|
+
}): {
|
|
63
|
+
l2_gas: {
|
|
64
|
+
max_amount: string;
|
|
65
|
+
max_price_per_unit: string;
|
|
66
|
+
};
|
|
67
|
+
l1_gas: {
|
|
68
|
+
max_amount: string;
|
|
69
|
+
max_price_per_unit: string;
|
|
70
|
+
};
|
|
71
|
+
l1_data_gas: {
|
|
72
|
+
max_amount: string;
|
|
73
|
+
max_price_per_unit: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export declare function deserializeResourceBounds(resourceBounds: ResourceBounds): ResourceBoundsBN;
|
|
77
|
+
export {};
|