@atomiqlabs/chain-starknet 4.0.0-dev.12 → 4.0.0-dev.13
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/LICENSE +201 -201
- package/dist/index.d.ts +38 -38
- package/dist/index.js +54 -54
- package/dist/starknet/StarknetChainType.d.ts +13 -13
- package/dist/starknet/StarknetChainType.js +2 -2
- package/dist/starknet/StarknetInitializer.d.ts +27 -27
- package/dist/starknet/StarknetInitializer.js +69 -69
- package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
- package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +186 -186
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +379 -379
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +31 -31
- package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +74 -74
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +51 -51
- package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +113 -113
- package/dist/starknet/chain/StarknetAction.d.ts +19 -19
- package/dist/starknet/chain/StarknetAction.js +73 -73
- package/dist/starknet/chain/StarknetChainInterface.d.ts +52 -52
- package/dist/starknet/chain/StarknetChainInterface.js +91 -91
- package/dist/starknet/chain/StarknetModule.d.ts +14 -14
- package/dist/starknet/chain/StarknetModule.js +13 -13
- 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 +24 -24
- package/dist/starknet/chain/modules/StarknetAddresses.d.ts +9 -9
- package/dist/starknet/chain/modules/StarknetAddresses.js +26 -26
- package/dist/starknet/chain/modules/StarknetBlocks.d.ts +20 -20
- package/dist/starknet/chain/modules/StarknetBlocks.js +64 -64
- package/dist/starknet/chain/modules/StarknetEvents.d.ts +44 -44
- package/dist/starknet/chain/modules/StarknetEvents.js +88 -88
- package/dist/starknet/chain/modules/StarknetFees.d.ts +77 -77
- package/dist/starknet/chain/modules/StarknetFees.js +114 -114
- 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 +69 -69
- package/dist/starknet/chain/modules/StarknetTokens.js +102 -98
- package/dist/starknet/chain/modules/StarknetTransactions.d.ts +93 -93
- package/dist/starknet/chain/modules/StarknetTransactions.js +261 -260
- package/dist/starknet/contract/StarknetContractBase.d.ts +13 -13
- package/dist/starknet/contract/StarknetContractBase.js +20 -16
- 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 +51 -51
- package/dist/starknet/contract/modules/StarknetContractEvents.js +97 -97
- package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
- package/dist/starknet/events/StarknetChainEvents.js +52 -52
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +89 -90
- package/dist/starknet/events/StarknetChainEventsBrowser.js +296 -294
- package/dist/starknet/provider/RpcProviderWithRetries.d.ts +21 -21
- package/dist/starknet/provider/RpcProviderWithRetries.js +32 -32
- 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 +66 -66
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +382 -382
- package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -49
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +145 -145
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +25 -25
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +72 -72
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
- package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +191 -191
- package/dist/starknet/swaps/StarknetSwapContract.js +424 -424
- package/dist/starknet/swaps/StarknetSwapData.d.ts +74 -74
- package/dist/starknet/swaps/StarknetSwapData.js +325 -325
- package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
- package/dist/starknet/swaps/StarknetSwapModule.js +11 -11
- 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 +45 -45
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +52 -52
- 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 +69 -69
- package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
- package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +53 -53
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +100 -100
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -87
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +235 -225
- package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +62 -62
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +128 -128
- package/dist/starknet/wallet/StarknetKeypairWallet.d.ts +7 -7
- package/dist/starknet/wallet/StarknetKeypairWallet.js +35 -30
- package/dist/starknet/wallet/StarknetSigner.d.ts +12 -12
- package/dist/starknet/wallet/StarknetSigner.js +47 -46
- package/dist/utils/Utils.d.ts +37 -37
- package/dist/utils/Utils.js +260 -261
- package/package.json +43 -37
- package/src/index.ts +47 -47
- package/src/starknet/StarknetChainType.ts +28 -28
- package/src/starknet/StarknetInitializer.ts +108 -108
- package/src/starknet/btcrelay/BtcRelayAbi.ts +338 -338
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +494 -494
- package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +100 -100
- package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +141 -141
- package/src/starknet/chain/StarknetAction.ts +85 -85
- package/src/starknet/chain/StarknetChainInterface.ts +149 -149
- package/src/starknet/chain/StarknetModule.ts +19 -19
- package/src/starknet/chain/modules/ERC20Abi.ts +1029 -1029
- package/src/starknet/chain/modules/StarknetAccounts.ts +25 -25
- package/src/starknet/chain/modules/StarknetAddresses.ts +22 -22
- package/src/starknet/chain/modules/StarknetBlocks.ts +75 -74
- package/src/starknet/chain/modules/StarknetEvents.ts +104 -104
- package/src/starknet/chain/modules/StarknetFees.ts +154 -154
- package/src/starknet/chain/modules/StarknetSignatures.ts +91 -91
- package/src/starknet/chain/modules/StarknetTokens.ts +120 -116
- package/src/starknet/chain/modules/StarknetTransactions.ts +285 -283
- package/src/starknet/contract/StarknetContractBase.ts +30 -26
- package/src/starknet/contract/StarknetContractModule.ts +16 -16
- package/src/starknet/contract/modules/StarknetContractEvents.ts +134 -134
- package/src/starknet/events/StarknetChainEvents.ts +67 -67
- package/src/starknet/events/StarknetChainEventsBrowser.ts +411 -411
- package/src/starknet/provider/RpcProviderWithRetries.ts +43 -43
- package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -656
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +483 -483
- package/src/starknet/spv_swap/StarknetSpvVaultData.ts +195 -195
- package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +79 -79
- package/src/starknet/swaps/EscrowManagerAbi.ts +582 -582
- package/src/starknet/swaps/StarknetSwapContract.ts +647 -647
- package/src/starknet/swaps/StarknetSwapData.ts +455 -455
- package/src/starknet/swaps/StarknetSwapModule.ts +17 -17
- package/src/starknet/swaps/handlers/IHandler.ts +20 -20
- package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +23 -23
- package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +53 -53
- package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +73 -73
- package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +67 -67
- package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +50 -50
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +102 -102
- package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +38 -38
- package/src/starknet/swaps/modules/StarknetLpVault.ts +147 -147
- package/src/starknet/swaps/modules/StarknetSwapClaim.ts +141 -141
- package/src/starknet/swaps/modules/StarknetSwapInit.ts +300 -287
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +196 -196
- package/src/starknet/wallet/StarknetKeypairWallet.ts +44 -39
- package/src/starknet/wallet/StarknetSigner.ts +55 -55
- package/src/utils/Utils.ts +251 -252
|
@@ -1,87 +1,94 @@
|
|
|
1
|
-
import { StarknetSwapData } from "../StarknetSwapData";
|
|
2
|
-
import { StarknetSwapModule } from "../StarknetSwapModule";
|
|
3
|
-
import { StarknetSigner } from "../../wallet/StarknetSigner";
|
|
4
|
-
import { StarknetTx } from "../../chain/modules/StarknetTransactions";
|
|
5
|
-
export type StarknetPreFetchVerification = {
|
|
6
|
-
pendingBlockTime?: number;
|
|
7
|
-
};
|
|
8
|
-
export declare class StarknetSwapInit extends StarknetSwapModule {
|
|
9
|
-
private static readonly GasCosts;
|
|
10
|
-
/**
|
|
11
|
-
* bare Init action based on the data passed in swapData
|
|
12
|
-
*
|
|
13
|
-
* @param signer
|
|
14
|
-
* @param swapData
|
|
15
|
-
* @param timeout
|
|
16
|
-
* @param signature
|
|
17
|
-
* @private
|
|
18
|
-
*/
|
|
19
|
-
private Init;
|
|
20
|
-
/**
|
|
21
|
-
* Returns auth prefix to be used with a specific swap, payIn=true & payIn=false use different prefixes (these
|
|
22
|
-
* actually have no meaning for the smart contract/solana program in the Solana case)
|
|
23
|
-
*
|
|
24
|
-
* @param swapData
|
|
25
|
-
* @private
|
|
26
|
-
*/
|
|
27
|
-
private getAuthPrefix;
|
|
28
|
-
preFetchForInitSignatureVerification(): Promise<StarknetPreFetchVerification>;
|
|
29
|
-
/**
|
|
30
|
-
* Signs swap initialization authorization, using data from preFetchedBlockData if provided & still valid (subject
|
|
31
|
-
* to SIGNATURE_PREFETCH_DATA_VALIDITY)
|
|
32
|
-
*
|
|
33
|
-
* @param signer
|
|
34
|
-
* @param swapData
|
|
35
|
-
* @param authorizationTimeout
|
|
36
|
-
* @public
|
|
37
|
-
*/
|
|
38
|
-
signSwapInitialization(signer: StarknetSigner, swapData: StarknetSwapData, authorizationTimeout: number): Promise<{
|
|
39
|
-
prefix: string;
|
|
40
|
-
timeout: string;
|
|
41
|
-
signature: string;
|
|
42
|
-
}>;
|
|
43
|
-
/**
|
|
44
|
-
* Checks whether the provided signature data is valid, using preFetchedData if provided and still valid
|
|
45
|
-
*
|
|
46
|
-
* @param sender
|
|
47
|
-
* @param swapData
|
|
48
|
-
* @param timeout
|
|
49
|
-
* @param prefix
|
|
50
|
-
* @param signature
|
|
51
|
-
* @param preFetchData
|
|
52
|
-
* @public
|
|
53
|
-
*/
|
|
54
|
-
isSignatureValid(sender: string, swapData: StarknetSwapData, timeout: string, prefix: string, signature: string, preFetchData?: StarknetPreFetchVerification): Promise<null>;
|
|
55
|
-
/**
|
|
56
|
-
* Gets expiry of the provided signature data, this is a minimum of slot expiry & swap signature expiry
|
|
57
|
-
*
|
|
58
|
-
* @param timeout
|
|
59
|
-
* @public
|
|
60
|
-
*/
|
|
61
|
-
getSignatureExpiry(timeout: string): Promise<number>;
|
|
62
|
-
/**
|
|
63
|
-
* Checks whether signature is expired
|
|
64
|
-
*
|
|
65
|
-
* @param timeout
|
|
66
|
-
* @param preFetchData
|
|
67
|
-
* @public
|
|
68
|
-
*/
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* @param
|
|
74
|
-
* @
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
1
|
+
import { StarknetSwapData } from "../StarknetSwapData";
|
|
2
|
+
import { StarknetSwapModule } from "../StarknetSwapModule";
|
|
3
|
+
import { StarknetSigner } from "../../wallet/StarknetSigner";
|
|
4
|
+
import { StarknetTx } from "../../chain/modules/StarknetTransactions";
|
|
5
|
+
export type StarknetPreFetchVerification = {
|
|
6
|
+
pendingBlockTime?: number;
|
|
7
|
+
};
|
|
8
|
+
export declare class StarknetSwapInit extends StarknetSwapModule {
|
|
9
|
+
private static readonly GasCosts;
|
|
10
|
+
/**
|
|
11
|
+
* bare Init action based on the data passed in swapData
|
|
12
|
+
*
|
|
13
|
+
* @param signer
|
|
14
|
+
* @param swapData
|
|
15
|
+
* @param timeout
|
|
16
|
+
* @param signature
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
private Init;
|
|
20
|
+
/**
|
|
21
|
+
* Returns auth prefix to be used with a specific swap, payIn=true & payIn=false use different prefixes (these
|
|
22
|
+
* actually have no meaning for the smart contract/solana program in the Solana case)
|
|
23
|
+
*
|
|
24
|
+
* @param swapData
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
private getAuthPrefix;
|
|
28
|
+
preFetchForInitSignatureVerification(): Promise<StarknetPreFetchVerification>;
|
|
29
|
+
/**
|
|
30
|
+
* Signs swap initialization authorization, using data from preFetchedBlockData if provided & still valid (subject
|
|
31
|
+
* to SIGNATURE_PREFETCH_DATA_VALIDITY)
|
|
32
|
+
*
|
|
33
|
+
* @param signer
|
|
34
|
+
* @param swapData
|
|
35
|
+
* @param authorizationTimeout
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
signSwapInitialization(signer: StarknetSigner, swapData: StarknetSwapData, authorizationTimeout: number): Promise<{
|
|
39
|
+
prefix: string;
|
|
40
|
+
timeout: string;
|
|
41
|
+
signature: string;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Checks whether the provided signature data is valid, using preFetchedData if provided and still valid
|
|
45
|
+
*
|
|
46
|
+
* @param sender
|
|
47
|
+
* @param swapData
|
|
48
|
+
* @param timeout
|
|
49
|
+
* @param prefix
|
|
50
|
+
* @param signature
|
|
51
|
+
* @param preFetchData
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
54
|
+
isSignatureValid(sender: string, swapData: StarknetSwapData, timeout: string, prefix: string, signature: string, preFetchData?: StarknetPreFetchVerification): Promise<null>;
|
|
55
|
+
/**
|
|
56
|
+
* Gets expiry of the provided signature data, this is a minimum of slot expiry & swap signature expiry
|
|
57
|
+
*
|
|
58
|
+
* @param timeout
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
getSignatureExpiry(timeout: string): Promise<number>;
|
|
62
|
+
/**
|
|
63
|
+
* Checks whether signature is soft expired, compares the timestamp to the current "pre-confirmed" block timestamp
|
|
64
|
+
*
|
|
65
|
+
* @param timeout
|
|
66
|
+
* @param preFetchData
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
isSignatureSoftExpired(timeout: string, preFetchData?: StarknetPreFetchVerification): Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* Checks whether signature is expired for good, compares the timestamp to the current "latest" block timestamp
|
|
72
|
+
*
|
|
73
|
+
* @param timeout
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
isSignatureExpired(timeout: string): Promise<boolean>;
|
|
77
|
+
/**
|
|
78
|
+
* Creates init transaction with a valid signature from an LP
|
|
79
|
+
*
|
|
80
|
+
* @param sender
|
|
81
|
+
* @param swapData swap to initialize
|
|
82
|
+
* @param timeout init signature timeout
|
|
83
|
+
* @param prefix init signature prefix
|
|
84
|
+
* @param signature init signature
|
|
85
|
+
* @param skipChecks whether to skip signature validity checks
|
|
86
|
+
* @param feeRate fee rate to use for the transaction
|
|
87
|
+
*/
|
|
88
|
+
txsInit(sender: string, swapData: StarknetSwapData, timeout: string, prefix: string, signature: string, skipChecks?: boolean, feeRate?: string): Promise<StarknetTx[]>;
|
|
89
|
+
/**
|
|
90
|
+
* Get the estimated solana fee of the init transaction, this includes the required deposit for creating swap PDA
|
|
91
|
+
* and also deposit for ATAs
|
|
92
|
+
*/
|
|
93
|
+
getInitFee(swapData?: StarknetSwapData, feeRate?: string): Promise<bigint>;
|
|
94
|
+
}
|
|
@@ -1,225 +1,235 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StarknetSwapInit = void 0;
|
|
4
|
-
const base_1 = require("@atomiqlabs/base");
|
|
5
|
-
const Utils_1 = require("../../../utils/Utils");
|
|
6
|
-
const buffer_1 = require("buffer");
|
|
7
|
-
const StarknetAction_1 = require("../../chain/StarknetAction");
|
|
8
|
-
const StarknetSwapModule_1 = require("../StarknetSwapModule");
|
|
9
|
-
const starknet_1 = require("starknet");
|
|
10
|
-
const StarknetFees_1 = require("../../chain/modules/StarknetFees");
|
|
11
|
-
const Initialize = [
|
|
12
|
-
{ name: 'Swap hash', type: 'felt' },
|
|
13
|
-
{ name: 'Offerer', type: 'ContractAddress' },
|
|
14
|
-
{ name: 'Claimer', type: 'ContractAddress' },
|
|
15
|
-
{ name: 'Token amount', type: 'TokenAmount' },
|
|
16
|
-
{ name: 'Pay in', type: 'bool' },
|
|
17
|
-
{ name: 'Pay out', type: 'bool' },
|
|
18
|
-
{ name: 'Tracking reputation', type: 'bool' },
|
|
19
|
-
{ name: 'Claim handler', type: 'ContractAddress' },
|
|
20
|
-
{ name: 'Claim data', type: 'felt' },
|
|
21
|
-
{ name: 'Refund handler', type: 'ContractAddress' },
|
|
22
|
-
{ name: 'Refund data', type: 'felt' },
|
|
23
|
-
{ name: 'Security deposit', type: 'TokenAmount' },
|
|
24
|
-
{ name: 'Claimer bounty', type: 'TokenAmount' },
|
|
25
|
-
{ name: 'Claim action hash', type: 'felt' },
|
|
26
|
-
{ name: 'Deadline', type: 'timestamp' }
|
|
27
|
-
];
|
|
28
|
-
class StarknetSwapInit extends StarknetSwapModule_1.StarknetSwapModule {
|
|
29
|
-
/**
|
|
30
|
-
* bare Init action based on the data passed in swapData
|
|
31
|
-
*
|
|
32
|
-
* @param signer
|
|
33
|
-
* @param swapData
|
|
34
|
-
* @param timeout
|
|
35
|
-
* @param signature
|
|
36
|
-
* @private
|
|
37
|
-
*/
|
|
38
|
-
Init(signer, swapData, timeout, signature) {
|
|
39
|
-
return new StarknetAction_1.StarknetAction(signer, this.root, this.swapContract.populateTransaction.initialize(swapData.toEscrowStruct(), signature ?? [], timeout, swapData.extraData == null || swapData.extraData === "" ? [] : (0, Utils_1.bufferToBytes31Span)(buffer_1.Buffer.from(swapData.extraData, "hex")).map(Utils_1.toHex)), swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN : StarknetSwapInit.GasCosts.INIT);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Returns auth prefix to be used with a specific swap, payIn=true & payIn=false use different prefixes (these
|
|
43
|
-
* actually have no meaning for the smart contract/solana program in the Solana case)
|
|
44
|
-
*
|
|
45
|
-
* @param swapData
|
|
46
|
-
* @private
|
|
47
|
-
*/
|
|
48
|
-
getAuthPrefix(swapData) {
|
|
49
|
-
return swapData.isPayIn() ? "claim_initialize" : "initialize";
|
|
50
|
-
}
|
|
51
|
-
async preFetchForInitSignatureVerification() {
|
|
52
|
-
return {
|
|
53
|
-
pendingBlockTime: await this.root.Blocks.getBlockTime(
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Signs swap initialization authorization, using data from preFetchedBlockData if provided & still valid (subject
|
|
58
|
-
* to SIGNATURE_PREFETCH_DATA_VALIDITY)
|
|
59
|
-
*
|
|
60
|
-
* @param signer
|
|
61
|
-
* @param swapData
|
|
62
|
-
* @param authorizationTimeout
|
|
63
|
-
* @public
|
|
64
|
-
*/
|
|
65
|
-
async signSwapInitialization(signer, swapData, authorizationTimeout) {
|
|
66
|
-
const authTimeout = Math.floor(Date.now() / 1000) + authorizationTimeout;
|
|
67
|
-
const signature = await this.root.Signatures.signTypedMessage(signer, Initialize, "Initialize", {
|
|
68
|
-
"Swap hash": "0x" + swapData.getEscrowHash(),
|
|
69
|
-
"Offerer": swapData.offerer,
|
|
70
|
-
"Claimer": swapData.claimer,
|
|
71
|
-
"Token amount": {
|
|
72
|
-
token_address: swapData.token,
|
|
73
|
-
amount: starknet_1.cairo.uint256(swapData.amount)
|
|
74
|
-
},
|
|
75
|
-
"Pay in": swapData.isPayIn(),
|
|
76
|
-
"Pay out": swapData.isPayOut(),
|
|
77
|
-
"Tracking reputation": swapData.reputation,
|
|
78
|
-
"Refund handler": swapData.refundHandler,
|
|
79
|
-
"Claim handler": swapData.claimHandler,
|
|
80
|
-
"Claim data": "0x" + swapData.getClaimHash(),
|
|
81
|
-
"Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x" + swapData.refundData,
|
|
82
|
-
"Security deposit": {
|
|
83
|
-
token_address: swapData.feeToken,
|
|
84
|
-
amount: starknet_1.cairo.uint256(swapData.securityDeposit)
|
|
85
|
-
},
|
|
86
|
-
"Claimer bounty": {
|
|
87
|
-
token_address: swapData.feeToken,
|
|
88
|
-
amount: starknet_1.cairo.uint256(swapData.claimerBounty)
|
|
89
|
-
},
|
|
90
|
-
"Claim action hash": 0n,
|
|
91
|
-
"Deadline": (0, Utils_1.toHex)(authTimeout)
|
|
92
|
-
});
|
|
93
|
-
return {
|
|
94
|
-
prefix: this.getAuthPrefix(swapData),
|
|
95
|
-
timeout: authTimeout.toString(10),
|
|
96
|
-
signature
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Checks whether the provided signature data is valid, using preFetchedData if provided and still valid
|
|
101
|
-
*
|
|
102
|
-
* @param sender
|
|
103
|
-
* @param swapData
|
|
104
|
-
* @param timeout
|
|
105
|
-
* @param prefix
|
|
106
|
-
* @param signature
|
|
107
|
-
* @param preFetchData
|
|
108
|
-
* @public
|
|
109
|
-
*/
|
|
110
|
-
async isSignatureValid(sender, swapData, timeout, prefix, signature, preFetchData) {
|
|
111
|
-
if (!swapData.isOfferer(sender) && !swapData.isClaimer(sender))
|
|
112
|
-
throw new base_1.SignatureVerificationError("TX sender not offerer nor claimer");
|
|
113
|
-
const signer = swapData.isOfferer(sender) ? swapData.claimer : swapData.offerer;
|
|
114
|
-
if (!swapData.isPayIn() && await this.contract.isExpired(sender.toString(), swapData)) {
|
|
115
|
-
throw new base_1.SignatureVerificationError("Swap will expire too soon!");
|
|
116
|
-
}
|
|
117
|
-
if (prefix !== this.getAuthPrefix(swapData))
|
|
118
|
-
throw new base_1.SignatureVerificationError("Invalid prefix");
|
|
119
|
-
const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
120
|
-
const timeoutBN = BigInt(timeout);
|
|
121
|
-
const isExpired = (timeoutBN - currentTimestamp) < BigInt(this.contract.authGracePeriod);
|
|
122
|
-
if (isExpired)
|
|
123
|
-
throw new base_1.SignatureVerificationError("Authorization expired!");
|
|
124
|
-
if (await this.
|
|
125
|
-
throw new base_1.SignatureVerificationError("Authorization expired!");
|
|
126
|
-
const valid = await this.root.Signatures.isValidSignature(signature, signer, Initialize, "Initialize", {
|
|
127
|
-
"Swap hash": "0x" + swapData.getEscrowHash(),
|
|
128
|
-
"Offerer": swapData.offerer,
|
|
129
|
-
"Claimer": swapData.claimer,
|
|
130
|
-
"Token amount": {
|
|
131
|
-
token_address: swapData.token,
|
|
132
|
-
amount: starknet_1.cairo.uint256(swapData.amount)
|
|
133
|
-
},
|
|
134
|
-
"Pay in": swapData.isPayIn(),
|
|
135
|
-
"Pay out": swapData.isPayOut(),
|
|
136
|
-
"Tracking reputation": swapData.reputation,
|
|
137
|
-
"Refund handler": swapData.refundHandler,
|
|
138
|
-
"Claim handler": swapData.claimHandler,
|
|
139
|
-
"Claim data": "0x" + swapData.getClaimHash(),
|
|
140
|
-
"Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x" + swapData.refundData,
|
|
141
|
-
"Security deposit": {
|
|
142
|
-
token_address: swapData.feeToken,
|
|
143
|
-
amount: starknet_1.cairo.uint256(swapData.securityDeposit)
|
|
144
|
-
},
|
|
145
|
-
"Claimer bounty": {
|
|
146
|
-
token_address: swapData.feeToken,
|
|
147
|
-
amount: starknet_1.cairo.uint256(swapData.claimerBounty)
|
|
148
|
-
},
|
|
149
|
-
"Claim action hash": 0n,
|
|
150
|
-
"Deadline": (0, Utils_1.toHex)(timeoutBN)
|
|
151
|
-
});
|
|
152
|
-
if (!valid)
|
|
153
|
-
throw new base_1.SignatureVerificationError("Invalid signature!");
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Gets expiry of the provided signature data, this is a minimum of slot expiry & swap signature expiry
|
|
158
|
-
*
|
|
159
|
-
* @param timeout
|
|
160
|
-
* @public
|
|
161
|
-
*/
|
|
162
|
-
async getSignatureExpiry(timeout) {
|
|
163
|
-
const now = Date.now();
|
|
164
|
-
const timeoutExpiryTime = (parseInt(timeout) - this.contract.authGracePeriod) * 1000;
|
|
165
|
-
if (timeoutExpiryTime < now)
|
|
166
|
-
return 0;
|
|
167
|
-
return timeoutExpiryTime;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Checks whether signature is expired
|
|
171
|
-
*
|
|
172
|
-
* @param timeout
|
|
173
|
-
* @param preFetchData
|
|
174
|
-
* @public
|
|
175
|
-
*/
|
|
176
|
-
async
|
|
177
|
-
if (preFetchData == null || preFetchData.pendingBlockTime == null) {
|
|
178
|
-
preFetchData = await this.preFetchForInitSignatureVerification();
|
|
179
|
-
}
|
|
180
|
-
return preFetchData.pendingBlockTime > parseInt(timeout);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
* @param
|
|
186
|
-
* @
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
if (
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StarknetSwapInit = void 0;
|
|
4
|
+
const base_1 = require("@atomiqlabs/base");
|
|
5
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
6
|
+
const buffer_1 = require("buffer");
|
|
7
|
+
const StarknetAction_1 = require("../../chain/StarknetAction");
|
|
8
|
+
const StarknetSwapModule_1 = require("../StarknetSwapModule");
|
|
9
|
+
const starknet_1 = require("starknet");
|
|
10
|
+
const StarknetFees_1 = require("../../chain/modules/StarknetFees");
|
|
11
|
+
const Initialize = [
|
|
12
|
+
{ name: 'Swap hash', type: 'felt' },
|
|
13
|
+
{ name: 'Offerer', type: 'ContractAddress' },
|
|
14
|
+
{ name: 'Claimer', type: 'ContractAddress' },
|
|
15
|
+
{ name: 'Token amount', type: 'TokenAmount' },
|
|
16
|
+
{ name: 'Pay in', type: 'bool' },
|
|
17
|
+
{ name: 'Pay out', type: 'bool' },
|
|
18
|
+
{ name: 'Tracking reputation', type: 'bool' },
|
|
19
|
+
{ name: 'Claim handler', type: 'ContractAddress' },
|
|
20
|
+
{ name: 'Claim data', type: 'felt' },
|
|
21
|
+
{ name: 'Refund handler', type: 'ContractAddress' },
|
|
22
|
+
{ name: 'Refund data', type: 'felt' },
|
|
23
|
+
{ name: 'Security deposit', type: 'TokenAmount' },
|
|
24
|
+
{ name: 'Claimer bounty', type: 'TokenAmount' },
|
|
25
|
+
{ name: 'Claim action hash', type: 'felt' },
|
|
26
|
+
{ name: 'Deadline', type: 'timestamp' }
|
|
27
|
+
];
|
|
28
|
+
class StarknetSwapInit extends StarknetSwapModule_1.StarknetSwapModule {
|
|
29
|
+
/**
|
|
30
|
+
* bare Init action based on the data passed in swapData
|
|
31
|
+
*
|
|
32
|
+
* @param signer
|
|
33
|
+
* @param swapData
|
|
34
|
+
* @param timeout
|
|
35
|
+
* @param signature
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
Init(signer, swapData, timeout, signature) {
|
|
39
|
+
return new StarknetAction_1.StarknetAction(signer, this.root, this.swapContract.populateTransaction.initialize(swapData.toEscrowStruct(), signature ?? [], timeout, swapData.extraData == null || swapData.extraData === "" ? [] : (0, Utils_1.bufferToBytes31Span)(buffer_1.Buffer.from(swapData.extraData, "hex")).map(Utils_1.toHex)), swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN : StarknetSwapInit.GasCosts.INIT);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns auth prefix to be used with a specific swap, payIn=true & payIn=false use different prefixes (these
|
|
43
|
+
* actually have no meaning for the smart contract/solana program in the Solana case)
|
|
44
|
+
*
|
|
45
|
+
* @param swapData
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
getAuthPrefix(swapData) {
|
|
49
|
+
return swapData.isPayIn() ? "claim_initialize" : "initialize";
|
|
50
|
+
}
|
|
51
|
+
async preFetchForInitSignatureVerification() {
|
|
52
|
+
return {
|
|
53
|
+
pendingBlockTime: await this.root.Blocks.getBlockTime(starknet_1.BlockTag.PRE_CONFIRMED)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Signs swap initialization authorization, using data from preFetchedBlockData if provided & still valid (subject
|
|
58
|
+
* to SIGNATURE_PREFETCH_DATA_VALIDITY)
|
|
59
|
+
*
|
|
60
|
+
* @param signer
|
|
61
|
+
* @param swapData
|
|
62
|
+
* @param authorizationTimeout
|
|
63
|
+
* @public
|
|
64
|
+
*/
|
|
65
|
+
async signSwapInitialization(signer, swapData, authorizationTimeout) {
|
|
66
|
+
const authTimeout = Math.floor(Date.now() / 1000) + authorizationTimeout;
|
|
67
|
+
const signature = await this.root.Signatures.signTypedMessage(signer, Initialize, "Initialize", {
|
|
68
|
+
"Swap hash": "0x" + swapData.getEscrowHash(),
|
|
69
|
+
"Offerer": swapData.offerer,
|
|
70
|
+
"Claimer": swapData.claimer,
|
|
71
|
+
"Token amount": {
|
|
72
|
+
token_address: swapData.token,
|
|
73
|
+
amount: starknet_1.cairo.uint256(swapData.amount)
|
|
74
|
+
},
|
|
75
|
+
"Pay in": swapData.isPayIn(),
|
|
76
|
+
"Pay out": swapData.isPayOut(),
|
|
77
|
+
"Tracking reputation": swapData.reputation,
|
|
78
|
+
"Refund handler": swapData.refundHandler,
|
|
79
|
+
"Claim handler": swapData.claimHandler,
|
|
80
|
+
"Claim data": "0x" + swapData.getClaimHash(),
|
|
81
|
+
"Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x" + swapData.refundData,
|
|
82
|
+
"Security deposit": {
|
|
83
|
+
token_address: swapData.feeToken,
|
|
84
|
+
amount: starknet_1.cairo.uint256(swapData.securityDeposit)
|
|
85
|
+
},
|
|
86
|
+
"Claimer bounty": {
|
|
87
|
+
token_address: swapData.feeToken,
|
|
88
|
+
amount: starknet_1.cairo.uint256(swapData.claimerBounty)
|
|
89
|
+
},
|
|
90
|
+
"Claim action hash": 0n,
|
|
91
|
+
"Deadline": (0, Utils_1.toHex)(authTimeout)
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
prefix: this.getAuthPrefix(swapData),
|
|
95
|
+
timeout: authTimeout.toString(10),
|
|
96
|
+
signature
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Checks whether the provided signature data is valid, using preFetchedData if provided and still valid
|
|
101
|
+
*
|
|
102
|
+
* @param sender
|
|
103
|
+
* @param swapData
|
|
104
|
+
* @param timeout
|
|
105
|
+
* @param prefix
|
|
106
|
+
* @param signature
|
|
107
|
+
* @param preFetchData
|
|
108
|
+
* @public
|
|
109
|
+
*/
|
|
110
|
+
async isSignatureValid(sender, swapData, timeout, prefix, signature, preFetchData) {
|
|
111
|
+
if (!swapData.isOfferer(sender) && !swapData.isClaimer(sender))
|
|
112
|
+
throw new base_1.SignatureVerificationError("TX sender not offerer nor claimer");
|
|
113
|
+
const signer = swapData.isOfferer(sender) ? swapData.claimer : swapData.offerer;
|
|
114
|
+
if (!swapData.isPayIn() && await this.contract.isExpired(sender.toString(), swapData)) {
|
|
115
|
+
throw new base_1.SignatureVerificationError("Swap will expire too soon!");
|
|
116
|
+
}
|
|
117
|
+
if (prefix !== this.getAuthPrefix(swapData))
|
|
118
|
+
throw new base_1.SignatureVerificationError("Invalid prefix");
|
|
119
|
+
const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
120
|
+
const timeoutBN = BigInt(timeout);
|
|
121
|
+
const isExpired = (timeoutBN - currentTimestamp) < BigInt(this.contract.authGracePeriod);
|
|
122
|
+
if (isExpired)
|
|
123
|
+
throw new base_1.SignatureVerificationError("Authorization expired!");
|
|
124
|
+
if (await this.isSignatureSoftExpired(timeout, preFetchData))
|
|
125
|
+
throw new base_1.SignatureVerificationError("Authorization expired!");
|
|
126
|
+
const valid = await this.root.Signatures.isValidSignature(signature, signer, Initialize, "Initialize", {
|
|
127
|
+
"Swap hash": "0x" + swapData.getEscrowHash(),
|
|
128
|
+
"Offerer": swapData.offerer,
|
|
129
|
+
"Claimer": swapData.claimer,
|
|
130
|
+
"Token amount": {
|
|
131
|
+
token_address: swapData.token,
|
|
132
|
+
amount: starknet_1.cairo.uint256(swapData.amount)
|
|
133
|
+
},
|
|
134
|
+
"Pay in": swapData.isPayIn(),
|
|
135
|
+
"Pay out": swapData.isPayOut(),
|
|
136
|
+
"Tracking reputation": swapData.reputation,
|
|
137
|
+
"Refund handler": swapData.refundHandler,
|
|
138
|
+
"Claim handler": swapData.claimHandler,
|
|
139
|
+
"Claim data": "0x" + swapData.getClaimHash(),
|
|
140
|
+
"Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x" + swapData.refundData,
|
|
141
|
+
"Security deposit": {
|
|
142
|
+
token_address: swapData.feeToken,
|
|
143
|
+
amount: starknet_1.cairo.uint256(swapData.securityDeposit)
|
|
144
|
+
},
|
|
145
|
+
"Claimer bounty": {
|
|
146
|
+
token_address: swapData.feeToken,
|
|
147
|
+
amount: starknet_1.cairo.uint256(swapData.claimerBounty)
|
|
148
|
+
},
|
|
149
|
+
"Claim action hash": 0n,
|
|
150
|
+
"Deadline": (0, Utils_1.toHex)(timeoutBN)
|
|
151
|
+
});
|
|
152
|
+
if (!valid)
|
|
153
|
+
throw new base_1.SignatureVerificationError("Invalid signature!");
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Gets expiry of the provided signature data, this is a minimum of slot expiry & swap signature expiry
|
|
158
|
+
*
|
|
159
|
+
* @param timeout
|
|
160
|
+
* @public
|
|
161
|
+
*/
|
|
162
|
+
async getSignatureExpiry(timeout) {
|
|
163
|
+
const now = Date.now();
|
|
164
|
+
const timeoutExpiryTime = (parseInt(timeout) - this.contract.authGracePeriod) * 1000;
|
|
165
|
+
if (timeoutExpiryTime < now)
|
|
166
|
+
return 0;
|
|
167
|
+
return timeoutExpiryTime;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Checks whether signature is soft expired, compares the timestamp to the current "pre-confirmed" block timestamp
|
|
171
|
+
*
|
|
172
|
+
* @param timeout
|
|
173
|
+
* @param preFetchData
|
|
174
|
+
* @public
|
|
175
|
+
*/
|
|
176
|
+
async isSignatureSoftExpired(timeout, preFetchData) {
|
|
177
|
+
if (preFetchData == null || preFetchData.pendingBlockTime == null) {
|
|
178
|
+
preFetchData = await this.preFetchForInitSignatureVerification();
|
|
179
|
+
}
|
|
180
|
+
return preFetchData.pendingBlockTime > parseInt(timeout);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Checks whether signature is expired for good, compares the timestamp to the current "latest" block timestamp
|
|
184
|
+
*
|
|
185
|
+
* @param timeout
|
|
186
|
+
* @public
|
|
187
|
+
*/
|
|
188
|
+
async isSignatureExpired(timeout) {
|
|
189
|
+
const blockTime = await this.root.Blocks.getBlockTime(starknet_1.BlockTag.LATEST);
|
|
190
|
+
return blockTime > parseInt(timeout);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Creates init transaction with a valid signature from an LP
|
|
194
|
+
*
|
|
195
|
+
* @param sender
|
|
196
|
+
* @param swapData swap to initialize
|
|
197
|
+
* @param timeout init signature timeout
|
|
198
|
+
* @param prefix init signature prefix
|
|
199
|
+
* @param signature init signature
|
|
200
|
+
* @param skipChecks whether to skip signature validity checks
|
|
201
|
+
* @param feeRate fee rate to use for the transaction
|
|
202
|
+
*/
|
|
203
|
+
async txsInit(sender, swapData, timeout, prefix, signature, skipChecks, feeRate) {
|
|
204
|
+
if (!skipChecks) {
|
|
205
|
+
const [_, payStatus] = await Promise.all([
|
|
206
|
+
swapData.isOfferer(sender) && !swapData.reputation ? Promise.resolve() : (0, Utils_1.tryWithRetries)(() => this.isSignatureValid(sender, swapData, timeout, prefix, signature), this.retryPolicy, (e) => e instanceof base_1.SignatureVerificationError),
|
|
207
|
+
(0, Utils_1.tryWithRetries)(() => this.contract.getCommitStatus(sender, swapData), this.retryPolicy)
|
|
208
|
+
]);
|
|
209
|
+
if (payStatus.type !== base_1.SwapCommitStateType.NOT_COMMITED)
|
|
210
|
+
throw new base_1.SwapDataVerificationError("Invoice already being paid for or paid");
|
|
211
|
+
}
|
|
212
|
+
feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
|
|
213
|
+
const initAction = this.Init(sender, swapData, BigInt(timeout), JSON.parse(signature));
|
|
214
|
+
if (swapData.payIn && swapData.isOfferer(sender))
|
|
215
|
+
initAction.addAction(this.root.Tokens.Approve(sender, this.swapContract.address, swapData.token, swapData.amount), 0); //Add erc20 approve
|
|
216
|
+
if (swapData.getTotalDeposit() !== 0n)
|
|
217
|
+
initAction.addAction(this.root.Tokens.Approve(sender, this.swapContract.address, swapData.feeToken, swapData.getTotalDeposit()), 0); //Add deposit erc20 approve
|
|
218
|
+
this.logger.debug("txsInitPayIn(): create swap init TX, swap: " + swapData.getClaimHash() +
|
|
219
|
+
" feerate: " + feeRate);
|
|
220
|
+
return [await initAction.tx(feeRate)];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get the estimated solana fee of the init transaction, this includes the required deposit for creating swap PDA
|
|
224
|
+
* and also deposit for ATAs
|
|
225
|
+
*/
|
|
226
|
+
async getInitFee(swapData, feeRate) {
|
|
227
|
+
feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
|
|
228
|
+
return StarknetFees_1.StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN : StarknetSwapInit.GasCosts.INIT, feeRate);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
exports.StarknetSwapInit = StarknetSwapInit;
|
|
232
|
+
StarknetSwapInit.GasCosts = {
|
|
233
|
+
INIT: { l1DataGas: 750, l2Gas: 8000000, l1Gas: 0 },
|
|
234
|
+
INIT_PAY_IN: { l1DataGas: 500, l2Gas: 4800000, l1Gas: 0 },
|
|
235
|
+
};
|