@atomiqlabs/chain-starknet 4.0.0-dev.9 → 5.0.0
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/starknet/StarknetInitializer.d.ts +1 -9
- package/dist/starknet/StarknetInitializer.js +3 -8
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +5 -5
- package/dist/starknet/chain/StarknetAction.d.ts +10 -2
- package/dist/starknet/chain/StarknetAction.js +21 -21
- package/dist/starknet/chain/modules/StarknetAccounts.js +1 -1
- package/dist/starknet/chain/modules/StarknetFees.d.ts +8 -30
- package/dist/starknet/chain/modules/StarknetFees.js +26 -40
- package/dist/starknet/chain/modules/StarknetSignatures.js +1 -1
- package/dist/starknet/chain/modules/StarknetTokens.d.ts +4 -6
- package/dist/starknet/chain/modules/StarknetTokens.js +2 -2
- package/dist/starknet/chain/modules/StarknetTransactions.js +2 -2
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +2 -1
- package/dist/starknet/events/StarknetChainEventsBrowser.js +3 -1
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +2 -3
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +8 -14
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +0 -1
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +0 -1
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +0 -11
- package/dist/starknet/swaps/EscrowManagerAbi.d.ts +0 -26
- package/dist/starknet/swaps/EscrowManagerAbi.js +0 -36
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +2 -3
- package/dist/starknet/swaps/StarknetSwapContract.js +19 -6
- package/dist/starknet/swaps/StarknetSwapData.d.ts +1 -8
- package/dist/starknet/swaps/StarknetSwapData.js +7 -51
- package/dist/starknet/swaps/handlers/IHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +1 -1
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +1 -1
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +1 -1
- package/dist/starknet/swaps/modules/StarknetLpVault.js +2 -2
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +8 -8
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +0 -2
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +10 -70
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +4 -4
- package/dist/utils/Utils.js +8 -12
- package/package.json +3 -3
- package/src/starknet/StarknetInitializer.ts +4 -17
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +6 -9
- package/src/starknet/chain/StarknetAction.ts +20 -15
- package/src/starknet/chain/modules/StarknetAccounts.ts +1 -1
- package/src/starknet/chain/modules/StarknetFees.ts +31 -53
- package/src/starknet/chain/modules/StarknetSignatures.ts +4 -5
- package/src/starknet/chain/modules/StarknetTokens.ts +2 -2
- package/src/starknet/chain/modules/StarknetTransactions.ts +2 -2
- package/src/starknet/events/StarknetChainEventsBrowser.ts +3 -1
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +8 -14
- package/src/starknet/spv_swap/StarknetSpvVaultData.ts +0 -1
- package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +2 -13
- package/src/starknet/swaps/EscrowManagerAbi.ts +0 -36
- package/src/starknet/swaps/StarknetSwapContract.ts +23 -8
- package/src/starknet/swaps/StarknetSwapData.ts +9 -70
- package/src/starknet/swaps/handlers/IHandler.ts +1 -1
- package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +1 -1
- package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +3 -3
- package/src/starknet/swaps/modules/StarknetLpVault.ts +2 -2
- package/src/starknet/swaps/modules/StarknetSwapClaim.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapInit.ts +12 -71
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +7 -6
- package/src/utils/Utils.ts +6 -10
|
@@ -21,38 +21,6 @@ exports.EscrowManagerAbi = [
|
|
|
21
21
|
}
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
|
-
{
|
|
25
|
-
"type": "struct",
|
|
26
|
-
"name": "escrow_manager::structs::escrow::EscrowExecution",
|
|
27
|
-
"members": [
|
|
28
|
-
{
|
|
29
|
-
"name": "hash",
|
|
30
|
-
"type": "core::felt252"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"name": "expiry",
|
|
34
|
-
"type": "core::integer::u64"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"name": "fee",
|
|
38
|
-
"type": "core::integer::u256"
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"type": "enum",
|
|
44
|
-
"name": "core::option::Option::<escrow_manager::structs::escrow::EscrowExecution>",
|
|
45
|
-
"variants": [
|
|
46
|
-
{
|
|
47
|
-
"name": "Some",
|
|
48
|
-
"type": "escrow_manager::structs::escrow::EscrowExecution"
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"name": "None",
|
|
52
|
-
"type": "()"
|
|
53
|
-
}
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
24
|
{
|
|
57
25
|
"type": "struct",
|
|
58
26
|
"name": "escrow_manager::structs::escrow::EscrowData",
|
|
@@ -104,10 +72,6 @@ exports.EscrowManagerAbi = [
|
|
|
104
72
|
{
|
|
105
73
|
"name": "claimer_bounty",
|
|
106
74
|
"type": "core::integer::u256"
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"name": "success_action",
|
|
110
|
-
"type": "core::option::Option::<escrow_manager::structs::escrow::EscrowExecution>"
|
|
111
75
|
}
|
|
112
76
|
]
|
|
113
77
|
},
|
|
@@ -15,7 +15,6 @@ import { StarknetSwapClaim } from "./modules/StarknetSwapClaim";
|
|
|
15
15
|
import { IHandler } from "./handlers/IHandler";
|
|
16
16
|
import { StarknetBtcStoredHeader } from "../btcrelay/headers/StarknetBtcStoredHeader";
|
|
17
17
|
export declare class StarknetSwapContract extends StarknetContractBase<typeof EscrowManagerAbi> implements SwapContract<StarknetSwapData, StarknetTx, never, StarknetPreFetchVerification, StarknetSigner, "STARKNET"> {
|
|
18
|
-
readonly supportsInitWithoutClaimer = true;
|
|
19
18
|
readonly chainId: "STARKNET";
|
|
20
19
|
readonly claimWithSecretTimeout: number;
|
|
21
20
|
readonly claimWithTxDataTimeout: number;
|
|
@@ -183,9 +182,9 @@ export declare class StarknetSwapContract extends StarknetContractBase<typeof Es
|
|
|
183
182
|
/**
|
|
184
183
|
* Get the estimated solana fee of the commit transaction
|
|
185
184
|
*/
|
|
186
|
-
getCommitFee(
|
|
185
|
+
getCommitFee(swapData: StarknetSwapData, feeRate?: string): Promise<bigint>;
|
|
187
186
|
/**
|
|
188
187
|
* Get the estimated solana transaction fee of the refund transaction
|
|
189
188
|
*/
|
|
190
|
-
getRefundFee(
|
|
189
|
+
getRefundFee(swapData: StarknetSwapData, feeRate?: string): Promise<bigint>;
|
|
191
190
|
}
|
|
@@ -19,8 +19,8 @@ const ESCROW_STATE_COMMITTED = 1;
|
|
|
19
19
|
const ESCROW_STATE_CLAIMED = 2;
|
|
20
20
|
const ESCROW_STATE_REFUNDED = 3;
|
|
21
21
|
const swapContractAddreses = {
|
|
22
|
-
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "
|
|
23
|
-
[starknet_1.constants.StarknetChainId.SN_MAIN]: "
|
|
22
|
+
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: "0x06874044dae5bbe712775cdb576d6aef45fc87a22ce629f2b101a7d591d4e7ca",
|
|
23
|
+
[starknet_1.constants.StarknetChainId.SN_MAIN]: "0x04fb26d02d2cf612566cd86cab299716d926272e9f49514670233952ecaf8f0c"
|
|
24
24
|
};
|
|
25
25
|
const defaultClaimAddresses = {
|
|
26
26
|
[starknet_1.constants.StarknetChainId.SN_SEPOLIA]: {
|
|
@@ -47,7 +47,6 @@ const defaultRefundAddresses = {
|
|
|
47
47
|
class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
48
48
|
constructor(chainInterface, btcRelay, contractAddress = swapContractAddreses[chainInterface.starknetChainId], handlerAddresses) {
|
|
49
49
|
super(chainInterface, contractAddress, EscrowManagerAbi_1.EscrowManagerAbi);
|
|
50
|
-
this.supportsInitWithoutClaimer = true;
|
|
51
50
|
////////////////////////
|
|
52
51
|
//// Constants
|
|
53
52
|
this.chainId = "STARKNET";
|
|
@@ -76,7 +75,7 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
76
75
|
handlerAddresses.claim = { ...defaultClaimAddresses[chainInterface.starknetChainId], ...handlerAddresses.claim };
|
|
77
76
|
ClaimHandlers_1.claimHandlersList.forEach(handlerCtor => {
|
|
78
77
|
const handler = new handlerCtor(handlerAddresses.claim[handlerCtor.type]);
|
|
79
|
-
this.claimHandlersByAddress[
|
|
78
|
+
this.claimHandlersByAddress[handler.address] = handler;
|
|
80
79
|
this.claimHandlersBySwapType[handlerCtor.type] = handler;
|
|
81
80
|
});
|
|
82
81
|
this.timelockRefundHandler = new TimelockRefundHandler_1.TimelockRefundHandler(handlerAddresses.refund.timelock);
|
|
@@ -255,6 +254,20 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
255
254
|
getClaimTxId: async () => {
|
|
256
255
|
const events = await this.Events.getContractBlockEvents(["escrow_manager::events::Claim"], [null, null, null, "0x" + escrowHash], blockHeight, blockHeight);
|
|
257
256
|
return events.length === 0 ? null : events[0].txHash;
|
|
257
|
+
},
|
|
258
|
+
getClaimResult: async () => {
|
|
259
|
+
const events = await this.Events.getContractBlockEvents(["escrow_manager::events::Claim"], [null, null, null, "0x" + escrowHash], blockHeight, blockHeight);
|
|
260
|
+
if (events.length === 0)
|
|
261
|
+
return null;
|
|
262
|
+
const event = events[0];
|
|
263
|
+
const claimHandlerHex = (0, Utils_1.toHex)(event.params.claim_handler);
|
|
264
|
+
const claimHandler = this.claimHandlersByAddress[claimHandlerHex];
|
|
265
|
+
if (claimHandler == null) {
|
|
266
|
+
starknet_1.logger.warn("getCommitStatus(): getClaimResult(" + escrowHash + "): Unknown claim handler with claim: " + claimHandlerHex);
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
const witnessResult = claimHandler.parseWitnessResult(event.params.witness_result);
|
|
270
|
+
return witnessResult;
|
|
258
271
|
}
|
|
259
272
|
};
|
|
260
273
|
default:
|
|
@@ -397,13 +410,13 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
397
410
|
/**
|
|
398
411
|
* Get the estimated solana fee of the commit transaction
|
|
399
412
|
*/
|
|
400
|
-
getCommitFee(
|
|
413
|
+
getCommitFee(swapData, feeRate) {
|
|
401
414
|
return this.Init.getInitFee(swapData, feeRate);
|
|
402
415
|
}
|
|
403
416
|
/**
|
|
404
417
|
* Get the estimated solana transaction fee of the refund transaction
|
|
405
418
|
*/
|
|
406
|
-
getRefundFee(
|
|
419
|
+
getRefundFee(swapData, feeRate) {
|
|
407
420
|
return this.Refund.getRefundFee(swapData, feeRate);
|
|
408
421
|
}
|
|
409
422
|
}
|
|
@@ -4,11 +4,6 @@ import { StringToPrimitiveType } from "abi-wan-kanabi/dist/kanabi";
|
|
|
4
4
|
import { EscrowManagerAbi } from "./EscrowManagerAbi";
|
|
5
5
|
import { IClaimHandler } from "./handlers/claim/ClaimHandlers";
|
|
6
6
|
export type StarknetSwapDataType = StringToPrimitiveType<typeof EscrowManagerAbi, "escrow_manager::structs::escrow::EscrowData">;
|
|
7
|
-
export type StarknetSuccessAction = {
|
|
8
|
-
executionHash: string;
|
|
9
|
-
executionExpiry: bigint;
|
|
10
|
-
executionFee: bigint;
|
|
11
|
-
};
|
|
12
7
|
export declare class StarknetSwapData extends SwapData {
|
|
13
8
|
static toFlags(value: number | bigint | string): {
|
|
14
9
|
payOut: boolean;
|
|
@@ -33,9 +28,8 @@ export declare class StarknetSwapData extends SwapData {
|
|
|
33
28
|
securityDeposit: bigint;
|
|
34
29
|
claimerBounty: bigint;
|
|
35
30
|
extraData: string;
|
|
36
|
-
successAction?: StarknetSuccessAction;
|
|
37
31
|
kind: ChainSwapType;
|
|
38
|
-
constructor(offerer: string, claimer: string, token: string, refundHandler: string, claimHandler: string, payOut: boolean, payIn: boolean, reputation: boolean, sequence: bigint, claimData: string, refundData: string, amount: bigint, feeToken: string, securityDeposit: bigint, claimerBounty: bigint, kind: ChainSwapType, extraData: string
|
|
32
|
+
constructor(offerer: string, claimer: string, token: string, refundHandler: string, claimHandler: string, payOut: boolean, payIn: boolean, reputation: boolean, sequence: bigint, claimData: string, refundData: string, amount: bigint, feeToken: string, securityDeposit: bigint, claimerBounty: bigint, kind: ChainSwapType, extraData: string);
|
|
39
33
|
constructor(data: any);
|
|
40
34
|
getOfferer(): string;
|
|
41
35
|
setOfferer(newOfferer: string): void;
|
|
@@ -70,5 +64,4 @@ export declare class StarknetSwapData extends SwapData {
|
|
|
70
64
|
equals(other: StarknetSwapData): boolean;
|
|
71
65
|
toEscrowStruct(): StarknetSwapDataType;
|
|
72
66
|
static fromSerializedFeltArray(span: BigNumberish[], claimHandlerImpl: IClaimHandler<any, any>): StarknetSwapData;
|
|
73
|
-
hasSuccessAction(): boolean;
|
|
74
67
|
}
|
|
@@ -8,14 +8,6 @@ const Utils_1 = require("../../utils/Utils");
|
|
|
8
8
|
const FLAG_PAY_OUT = 0x01n;
|
|
9
9
|
const FLAG_PAY_IN = 0x02n;
|
|
10
10
|
const FLAG_REPUTATION = 0x04n;
|
|
11
|
-
function successActionEquals(a, b) {
|
|
12
|
-
if (a != null && b != null) {
|
|
13
|
-
return a.executionHash.toLowerCase() === b.executionHash.toLowerCase() &&
|
|
14
|
-
a.executionExpiry === b.executionExpiry &&
|
|
15
|
-
a.executionFee === b.executionFee;
|
|
16
|
-
}
|
|
17
|
-
return a === b;
|
|
18
|
-
}
|
|
19
11
|
class StarknetSwapData extends base_1.SwapData {
|
|
20
12
|
static toFlags(value) {
|
|
21
13
|
const val = (0, Utils_1.toBigInt)(value);
|
|
@@ -32,7 +24,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
32
24
|
(this.payIn ? FLAG_PAY_IN : 0n) +
|
|
33
25
|
(this.reputation ? FLAG_REPUTATION : 0n);
|
|
34
26
|
}
|
|
35
|
-
constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData
|
|
27
|
+
constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData) {
|
|
36
28
|
super();
|
|
37
29
|
if (claimer != null || token != null || refundHandler != null || claimHandler != null ||
|
|
38
30
|
payOut != null || payIn != null || reputation != null || sequence != null || claimData != null || refundData != null ||
|
|
@@ -54,7 +46,6 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
54
46
|
this.claimerBounty = claimerBounty;
|
|
55
47
|
this.kind = kind;
|
|
56
48
|
this.extraData = extraData;
|
|
57
|
-
this.successAction = successAction;
|
|
58
49
|
}
|
|
59
50
|
else {
|
|
60
51
|
this.offerer = offererOrData.offerer;
|
|
@@ -74,11 +65,6 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
74
65
|
this.claimerBounty = offererOrData.claimerBounty == null ? null : BigInt(offererOrData.claimerBounty);
|
|
75
66
|
this.kind = offererOrData.kind;
|
|
76
67
|
this.extraData = offererOrData.extraData;
|
|
77
|
-
this.successAction = offererOrData.successAction == null ? null : {
|
|
78
|
-
executionHash: offererOrData.successAction.executionHash,
|
|
79
|
-
executionExpiry: BigInt(offererOrData.successAction.executionExpiry),
|
|
80
|
-
executionFee: BigInt(offererOrData.successAction.executionFee),
|
|
81
|
-
};
|
|
82
68
|
}
|
|
83
69
|
}
|
|
84
70
|
getOfferer() {
|
|
@@ -116,12 +102,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
116
102
|
securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),
|
|
117
103
|
claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),
|
|
118
104
|
kind: this.kind,
|
|
119
|
-
extraData: this.extraData
|
|
120
|
-
successAction: this.successAction == null ? null : {
|
|
121
|
-
executionHash: this.successAction.executionHash,
|
|
122
|
-
executionExpiry: this.successAction.executionExpiry.toString(10),
|
|
123
|
-
executionFee: this.successAction.executionFee.toString(10)
|
|
124
|
-
}
|
|
105
|
+
extraData: this.extraData
|
|
125
106
|
};
|
|
126
107
|
}
|
|
127
108
|
getAmount() {
|
|
@@ -149,7 +130,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
149
130
|
const amountValue = starknet_1.cairo.uint256("0x" + this.amount.toString(16));
|
|
150
131
|
const securityDepositValue = starknet_1.cairo.uint256("0x" + this.securityDeposit.toString(16));
|
|
151
132
|
const claimerBountyValue = starknet_1.cairo.uint256("0x" + this.claimerBounty.toString(16));
|
|
152
|
-
|
|
133
|
+
let escrowHash = starknet_1.hash.computePoseidonHashOnElements([
|
|
153
134
|
this.offerer,
|
|
154
135
|
this.claimer,
|
|
155
136
|
this.token,
|
|
@@ -165,14 +146,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
165
146
|
securityDepositValue.high,
|
|
166
147
|
claimerBountyValue.low,
|
|
167
148
|
claimerBountyValue.high
|
|
168
|
-
];
|
|
169
|
-
if (this.successAction != null) {
|
|
170
|
-
elements.push(this.successAction.executionHash);
|
|
171
|
-
elements.push(this.successAction.executionExpiry);
|
|
172
|
-
const feeValue = starknet_1.cairo.uint256("0x" + this.successAction.executionFee.toString(16));
|
|
173
|
-
elements.push(feeValue.low, feeValue.high);
|
|
174
|
-
}
|
|
175
|
-
let escrowHash = starknet_1.hash.computePoseidonHashOnElements(elements);
|
|
149
|
+
]);
|
|
176
150
|
if (escrowHash.startsWith("0x"))
|
|
177
151
|
escrowHash = escrowHash.slice(2);
|
|
178
152
|
return escrowHash.padStart(64, "0");
|
|
@@ -269,8 +243,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
269
243
|
other.refundData.toLowerCase() === this.refundData.toLowerCase() &&
|
|
270
244
|
other.amount === this.amount &&
|
|
271
245
|
other.securityDeposit === this.securityDeposit &&
|
|
272
|
-
other.claimerBounty === this.claimerBounty
|
|
273
|
-
successActionEquals(other.successAction, this.successAction);
|
|
246
|
+
other.claimerBounty === this.claimerBounty;
|
|
274
247
|
}
|
|
275
248
|
toEscrowStruct() {
|
|
276
249
|
return {
|
|
@@ -285,12 +258,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
285
258
|
amount: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.amount)),
|
|
286
259
|
fee_token: this.feeToken,
|
|
287
260
|
security_deposit: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.securityDeposit)),
|
|
288
|
-
claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty))
|
|
289
|
-
success_action: new starknet_1.CairoOption(this.successAction == null ? starknet_1.CairoOptionVariant.None : starknet_1.CairoOptionVariant.Some, this.successAction == null ? undefined : {
|
|
290
|
-
hash: this.successAction.executionHash,
|
|
291
|
-
expiry: this.successAction.executionExpiry,
|
|
292
|
-
fee: starknet_1.cairo.uint256(this.successAction.executionFee)
|
|
293
|
-
})
|
|
261
|
+
claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty))
|
|
294
262
|
};
|
|
295
263
|
}
|
|
296
264
|
static fromSerializedFeltArray(span, claimHandlerImpl) {
|
|
@@ -306,19 +274,7 @@ class StarknetSwapData extends base_1.SwapData {
|
|
|
306
274
|
const feeToken = (0, Utils_1.toHex)(span.shift());
|
|
307
275
|
const securityDeposit = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
|
|
308
276
|
const claimerBounty = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
|
|
309
|
-
|
|
310
|
-
let successAction = null;
|
|
311
|
-
if (hasSuccessAction) {
|
|
312
|
-
successAction = {
|
|
313
|
-
executionHash: (0, Utils_1.toHex)(span.shift()),
|
|
314
|
-
executionExpiry: (0, Utils_1.toBigInt)(span.shift()),
|
|
315
|
-
executionFee: (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() })
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null, successAction);
|
|
319
|
-
}
|
|
320
|
-
hasSuccessAction() {
|
|
321
|
-
return this.successAction != null;
|
|
277
|
+
return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null);
|
|
322
278
|
}
|
|
323
279
|
}
|
|
324
280
|
exports.StarknetSwapData = StarknetSwapData;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../StarknetSwapData";
|
|
2
2
|
import { BigNumberish } from "starknet";
|
|
3
|
+
import { StarknetGas } from "../../chain/StarknetAction";
|
|
3
4
|
import { StarknetTx } from "../../chain/modules/StarknetTransactions";
|
|
4
|
-
import { StarknetGas } from "../../chain/modules/StarknetFees";
|
|
5
5
|
export interface IHandler<TCommitmentData, TWitnessData> {
|
|
6
6
|
readonly address: string;
|
|
7
7
|
getCommitment(data: TCommitmentData): BigNumberish;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
2
|
+
import { StarknetGas } from "../../../chain/StarknetAction";
|
|
2
3
|
import { IHandler } from "../IHandler";
|
|
3
4
|
import { BigNumberish } from "starknet";
|
|
4
|
-
import { StarknetGas } from "../../../chain/modules/StarknetFees";
|
|
5
5
|
export interface IClaimHandler<C, W> extends IHandler<C, W> {
|
|
6
6
|
getType(): ChainSwapType;
|
|
7
7
|
parseWitnessResult(result: BigNumberish[]): string;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../../StarknetSwapData";
|
|
2
2
|
import { BigNumberish } from "starknet";
|
|
3
3
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
4
|
+
import { StarknetGas } from "../../../chain/StarknetAction";
|
|
4
5
|
import { Buffer } from "buffer";
|
|
5
6
|
import { StarknetTx } from "../../../chain/modules/StarknetTransactions";
|
|
6
7
|
import { IClaimHandler } from "./ClaimHandlers";
|
|
7
|
-
import { StarknetGas } from "../../../chain/modules/StarknetFees";
|
|
8
8
|
export declare class HashlockClaimHandler implements IClaimHandler<Buffer, string> {
|
|
9
9
|
readonly address: string;
|
|
10
10
|
static readonly type: ChainSwapType;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../../../StarknetSwapData";
|
|
2
|
+
import { StarknetGas } from "../../../../chain/StarknetAction";
|
|
2
3
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
3
4
|
import { BigNumberish } from "starknet";
|
|
4
5
|
import { StarknetTx } from "../../../../chain/modules/StarknetTransactions";
|
|
5
6
|
import { BitcoinCommitmentData, IBitcoinClaimHandler } from "./IBitcoinClaimHandler";
|
|
6
7
|
import { BitcoinOutputWitnessData } from "./BitcoinOutputClaimHandler";
|
|
7
8
|
import { Buffer } from "buffer";
|
|
8
|
-
import { StarknetGas } from "../../../../chain/modules/StarknetFees";
|
|
9
9
|
export type BitcoinNoncedOutputCommitmentData = {
|
|
10
10
|
output: Buffer;
|
|
11
11
|
amount: bigint;
|
|
@@ -45,4 +45,4 @@ class BitcoinNoncedOutputClaimHandler extends IBitcoinClaimHandler_1.IBitcoinCla
|
|
|
45
45
|
}
|
|
46
46
|
exports.BitcoinNoncedOutputClaimHandler = BitcoinNoncedOutputClaimHandler;
|
|
47
47
|
BitcoinNoncedOutputClaimHandler.type = base_1.ChainSwapType.CHAIN_NONCED;
|
|
48
|
-
BitcoinNoncedOutputClaimHandler.gas = {
|
|
48
|
+
BitcoinNoncedOutputClaimHandler.gas = { l1: 20000 };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../../../StarknetSwapData";
|
|
2
|
+
import { StarknetGas } from "../../../../chain/StarknetAction";
|
|
2
3
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
3
4
|
import { BigNumberish } from "starknet";
|
|
4
5
|
import { StarknetTx } from "../../../../chain/modules/StarknetTransactions";
|
|
5
6
|
import { BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler } from "./IBitcoinClaimHandler";
|
|
6
7
|
import { Buffer } from "buffer";
|
|
7
|
-
import { StarknetGas } from "../../../../chain/modules/StarknetFees";
|
|
8
8
|
export type BitcoinOutputCommitmentData = {
|
|
9
9
|
output: Buffer;
|
|
10
10
|
amount: bigint;
|
|
@@ -37,4 +37,4 @@ class BitcoinOutputClaimHandler extends IBitcoinClaimHandler_1.IBitcoinClaimHand
|
|
|
37
37
|
}
|
|
38
38
|
exports.BitcoinOutputClaimHandler = BitcoinOutputClaimHandler;
|
|
39
39
|
BitcoinOutputClaimHandler.type = base_1.ChainSwapType.CHAIN;
|
|
40
|
-
BitcoinOutputClaimHandler.gas = {
|
|
40
|
+
BitcoinOutputClaimHandler.gas = { l1: 20000 };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../../../StarknetSwapData";
|
|
2
|
+
import { StarknetGas } from "../../../../chain/StarknetAction";
|
|
2
3
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
3
4
|
import { BigNumberish } from "starknet";
|
|
4
5
|
import { StarknetTx } from "../../../../chain/modules/StarknetTransactions";
|
|
5
6
|
import { BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler } from "./IBitcoinClaimHandler";
|
|
6
|
-
import { StarknetGas } from "../../../../chain/modules/StarknetFees";
|
|
7
7
|
export type BitcoinTxIdCommitmentData = {
|
|
8
8
|
txId: string;
|
|
9
9
|
};
|
|
@@ -27,4 +27,4 @@ class BitcoinTxIdClaimHandler extends IBitcoinClaimHandler_1.IBitcoinClaimHandle
|
|
|
27
27
|
}
|
|
28
28
|
exports.BitcoinTxIdClaimHandler = BitcoinTxIdClaimHandler;
|
|
29
29
|
BitcoinTxIdClaimHandler.type = base_1.ChainSwapType.CHAIN_TXID;
|
|
30
|
-
BitcoinTxIdClaimHandler.gas = {
|
|
30
|
+
BitcoinTxIdClaimHandler.gas = { l1: 20000 };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IClaimHandler } from "../ClaimHandlers";
|
|
2
2
|
import { StarknetSwapData } from "../../../StarknetSwapData";
|
|
3
|
+
import { StarknetGas } from "../../../../chain/StarknetAction";
|
|
3
4
|
import { ChainSwapType, RelaySynchronizer } from "@atomiqlabs/base";
|
|
4
5
|
import { BigNumberish } from "starknet";
|
|
5
6
|
import { StarknetBtcStoredHeader } from "../../../../btcrelay/headers/StarknetBtcStoredHeader";
|
|
6
7
|
import { StarknetTx } from "../../../../chain/modules/StarknetTransactions";
|
|
7
8
|
import { StarknetBtcRelay } from "../../../../btcrelay/StarknetBtcRelay";
|
|
8
|
-
import { StarknetGas } from "../../../../chain/modules/StarknetFees";
|
|
9
9
|
export type BitcoinCommitmentData = {
|
|
10
10
|
btcRelay: StarknetBtcRelay<any>;
|
|
11
11
|
confirmations: number;
|
|
@@ -49,4 +49,4 @@ class IBitcoinClaimHandler {
|
|
|
49
49
|
exports.IBitcoinClaimHandler = IBitcoinClaimHandler;
|
|
50
50
|
IBitcoinClaimHandler.address = "";
|
|
51
51
|
IBitcoinClaimHandler.type = base_1.ChainSwapType.CHAIN_TXID;
|
|
52
|
-
IBitcoinClaimHandler.gas = {
|
|
52
|
+
IBitcoinClaimHandler.gas = { l1: 20000 };
|
|
@@ -2,7 +2,7 @@ import { StarknetTx } from "../../../chain/modules/StarknetTransactions";
|
|
|
2
2
|
import { StarknetSwapData } from "../../StarknetSwapData";
|
|
3
3
|
import { BigNumberish } from "starknet";
|
|
4
4
|
import { IHandler } from "../IHandler";
|
|
5
|
-
import { StarknetGas } from "../../../chain/
|
|
5
|
+
import { StarknetGas } from "../../../chain/StarknetAction";
|
|
6
6
|
export declare class TimelockRefundHandler implements IHandler<bigint, never> {
|
|
7
7
|
readonly address: string;
|
|
8
8
|
static readonly gas: StarknetGas;
|
|
@@ -117,6 +117,6 @@ class StarknetLpVault extends StarknetSwapModule_1.StarknetSwapModule {
|
|
|
117
117
|
}
|
|
118
118
|
exports.StarknetLpVault = StarknetLpVault;
|
|
119
119
|
StarknetLpVault.GasCosts = {
|
|
120
|
-
WITHDRAW: {
|
|
121
|
-
DEPOSIT: { l1:
|
|
120
|
+
WITHDRAW: { l1: 750, l2: 0 },
|
|
121
|
+
DEPOSIT: { l1: 750, l2: 0 }
|
|
122
122
|
};
|
|
@@ -18,7 +18,7 @@ class StarknetSwapClaim extends StarknetSwapModule_1.StarknetSwapModule {
|
|
|
18
18
|
* @private
|
|
19
19
|
*/
|
|
20
20
|
Claim(signer, swapData, witness, claimHandlerGas) {
|
|
21
|
-
return new StarknetAction_1.StarknetAction(signer, this.root, this.swapContract.populateTransaction.claim(swapData.toEscrowStruct(), witness), (0,
|
|
21
|
+
return new StarknetAction_1.StarknetAction(signer, this.root, this.swapContract.populateTransaction.claim(swapData.toEscrowStruct(), witness), (0, StarknetAction_1.sumStarknetGas)(swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM, claimHandlerGas));
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Creates transactions claiming the swap using a secret (for HTLC swaps)
|
|
@@ -36,7 +36,7 @@ class StarknetSwapClaim extends StarknetSwapModule_1.StarknetSwapModule {
|
|
|
36
36
|
if (checkExpiry && await this.contract.isExpired(swapData.claimer.toString(), swapData)) {
|
|
37
37
|
throw new base_1.SwapDataVerificationError("Not enough time to reliably pay the invoice");
|
|
38
38
|
}
|
|
39
|
-
const claimHandler = this.contract.claimHandlersByAddress[
|
|
39
|
+
const claimHandler = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
|
|
40
40
|
if (claimHandler == null)
|
|
41
41
|
throw new base_1.SwapDataVerificationError("Unknown claim handler!");
|
|
42
42
|
if (claimHandler.getType() !== base_1.ChainSwapType.HTLC)
|
|
@@ -61,7 +61,7 @@ class StarknetSwapClaim extends StarknetSwapModule_1.StarknetSwapModule {
|
|
|
61
61
|
* @param feeRate fee rate to be used for the transactions
|
|
62
62
|
*/
|
|
63
63
|
async txsClaimWithTxData(signer, swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, feeRate) {
|
|
64
|
-
const claimHandler = this.contract.claimHandlersByAddress[
|
|
64
|
+
const claimHandler = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
|
|
65
65
|
if (claimHandler == null)
|
|
66
66
|
throw new base_1.SwapDataVerificationError("Unknown claim handler!");
|
|
67
67
|
if (claimHandler.getType() !== base_1.ChainSwapType.CHAIN_NONCED &&
|
|
@@ -87,14 +87,14 @@ class StarknetSwapClaim extends StarknetSwapModule_1.StarknetSwapModule {
|
|
|
87
87
|
async getClaimFee(swapData, feeRate) {
|
|
88
88
|
feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
|
|
89
89
|
let gasRequired = swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM;
|
|
90
|
-
const claimHandler = this.contract.claimHandlersByAddress[
|
|
90
|
+
const claimHandler = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
|
|
91
91
|
if (claimHandler != null)
|
|
92
|
-
gasRequired = (0,
|
|
93
|
-
return StarknetFees_1.StarknetFees.getGasFee(gasRequired, feeRate);
|
|
92
|
+
gasRequired = (0, StarknetAction_1.sumStarknetGas)(gasRequired, claimHandler.getGas(swapData));
|
|
93
|
+
return StarknetFees_1.StarknetFees.getGasFee(gasRequired.l1, feeRate);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
exports.StarknetSwapClaim = StarknetSwapClaim;
|
|
97
97
|
StarknetSwapClaim.GasCosts = {
|
|
98
|
-
CLAIM: {
|
|
99
|
-
CLAIM_PAY_OUT: {
|
|
98
|
+
CLAIM: { l1: 500, l2: 0 },
|
|
99
|
+
CLAIM_PAY_OUT: { l1: 1000, l2: 0 }
|
|
100
100
|
};
|
|
@@ -10,7 +10,6 @@ export declare class StarknetSwapInit extends StarknetSwapModule {
|
|
|
10
10
|
/**
|
|
11
11
|
* bare Init action based on the data passed in swapData
|
|
12
12
|
*
|
|
13
|
-
* @param signer
|
|
14
13
|
* @param swapData
|
|
15
14
|
* @param timeout
|
|
16
15
|
* @param signature
|
|
@@ -43,7 +42,6 @@ export declare class StarknetSwapInit extends StarknetSwapModule {
|
|
|
43
42
|
/**
|
|
44
43
|
* Checks whether the provided signature data is valid, using preFetchedData if provided and still valid
|
|
45
44
|
*
|
|
46
|
-
* @param sender
|
|
47
45
|
* @param swapData
|
|
48
46
|
* @param timeout
|
|
49
47
|
* @param prefix
|