@atomiqlabs/chain-starknet 2.0.1 → 3.0.0-beta.1

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.
Files changed (59) hide show
  1. package/dist/starknet/StarknetInitializer.js +7 -2
  2. package/dist/starknet/btcrelay/StarknetBtcRelay.js +5 -5
  3. package/dist/starknet/chain/StarknetAction.d.ts +2 -10
  4. package/dist/starknet/chain/StarknetAction.js +21 -21
  5. package/dist/starknet/chain/modules/StarknetAccounts.js +1 -1
  6. package/dist/starknet/chain/modules/StarknetFees.d.ts +30 -8
  7. package/dist/starknet/chain/modules/StarknetFees.js +40 -26
  8. package/dist/starknet/chain/modules/StarknetSignatures.js +1 -1
  9. package/dist/starknet/chain/modules/StarknetTokens.d.ts +6 -4
  10. package/dist/starknet/chain/modules/StarknetTokens.js +2 -2
  11. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +6 -6
  12. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +29 -0
  13. package/dist/starknet/swaps/EscrowManagerAbi.js +40 -0
  14. package/dist/starknet/swaps/StarknetSwapContract.js +2 -2
  15. package/dist/starknet/swaps/StarknetSwapData.js +10 -1
  16. package/dist/starknet/swaps/handlers/IHandler.d.ts +1 -1
  17. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
  18. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +1 -1
  19. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +1 -1
  20. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +1 -1
  21. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +1 -1
  22. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +1 -1
  23. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +1 -1
  24. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +1 -1
  25. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +1 -1
  26. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +1 -1
  27. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +1 -1
  28. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +1 -1
  29. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +1 -1
  30. package/dist/starknet/swaps/modules/StarknetLpVault.js +2 -2
  31. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +5 -5
  32. package/dist/starknet/swaps/modules/StarknetSwapInit.js +64 -6
  33. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +4 -4
  34. package/dist/utils/Utils.js +3 -3
  35. package/package.json +2 -2
  36. package/src/starknet/StarknetInitializer.ts +7 -2
  37. package/src/starknet/btcrelay/StarknetBtcRelay.ts +9 -6
  38. package/src/starknet/chain/StarknetAction.ts +15 -20
  39. package/src/starknet/chain/modules/StarknetAccounts.ts +1 -1
  40. package/src/starknet/chain/modules/StarknetFees.ts +53 -31
  41. package/src/starknet/chain/modules/StarknetSignatures.ts +5 -4
  42. package/src/starknet/chain/modules/StarknetTokens.ts +2 -2
  43. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +6 -6
  44. package/src/starknet/swaps/EscrowManagerAbi.ts +40 -0
  45. package/src/starknet/swaps/StarknetSwapContract.ts +2 -2
  46. package/src/starknet/swaps/StarknetSwapData.ts +11 -2
  47. package/src/starknet/swaps/handlers/IHandler.ts +1 -1
  48. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +1 -1
  49. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +2 -2
  50. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +2 -2
  51. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +2 -2
  52. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +2 -2
  53. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +2 -2
  54. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +3 -3
  55. package/src/starknet/swaps/modules/StarknetLpVault.ts +2 -2
  56. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +7 -7
  57. package/src/starknet/swaps/modules/StarknetSwapInit.ts +65 -8
  58. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +6 -7
  59. package/src/utils/Utils.ts +1 -1
@@ -18,6 +18,42 @@ export const EscrowManagerAbi = [
18
18
  }
19
19
  ]
20
20
  },
21
+ {
22
+ "type": "struct",
23
+ "name": "escrow_manager::structs::escrow::EscrowExecution",
24
+ "members": [
25
+ {
26
+ "name": "contract",
27
+ "type": "core::starknet::contract_address::ContractAddress"
28
+ },
29
+ {
30
+ "name": "hash",
31
+ "type": "core::felt252"
32
+ },
33
+ {
34
+ "name": "expiry",
35
+ "type": "core::integer::u64"
36
+ },
37
+ {
38
+ "name": "fee",
39
+ "type": "core::integer::u256"
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "type": "enum",
45
+ "name": "core::option::Option::<escrow_manager::structs::escrow::EscrowExecution>",
46
+ "variants": [
47
+ {
48
+ "name": "Some",
49
+ "type": "escrow_manager::structs::escrow::EscrowExecution"
50
+ },
51
+ {
52
+ "name": "None",
53
+ "type": "()"
54
+ }
55
+ ]
56
+ },
21
57
  {
22
58
  "type": "struct",
23
59
  "name": "escrow_manager::structs::escrow::EscrowData",
@@ -69,6 +105,10 @@ export const EscrowManagerAbi = [
69
105
  {
70
106
  "name": "claimer_bounty",
71
107
  "type": "core::integer::u256"
108
+ },
109
+ {
110
+ "name": "success_action",
111
+ "type": "core::option::Option::<escrow_manager::structs::escrow::EscrowExecution>"
72
112
  }
73
113
  ]
74
114
  },
@@ -33,8 +33,8 @@ const ESCROW_STATE_CLAIMED = 2;
33
33
  const ESCROW_STATE_REFUNDED = 3;
34
34
 
35
35
  const swapContractAddreses = {
36
- [constants.StarknetChainId.SN_SEPOLIA]: "0x06874044dae5bbe712775cdb576d6aef45fc87a22ce629f2b101a7d591d4e7ca",
37
- [constants.StarknetChainId.SN_MAIN]: "0x04fb26d02d2cf612566cd86cab299716d926272e9f49514670233952ecaf8f0c"
36
+ [constants.StarknetChainId.SN_SEPOLIA]: "0x030ae7fc7bbce9b8c888b1117f5573c786dd8e1541c722227b8673ac7dda70c0",
37
+ [constants.StarknetChainId.SN_MAIN]: "0x02e1070519f27ec94dde395c8d72a5fcb144d40a786cf60b9b45395d36cc2f69"
38
38
  };
39
39
 
40
40
  const defaultClaimAddresses = {
@@ -1,6 +1,6 @@
1
1
  import {SwapData, ChainSwapType} from "@atomiqlabs/base";
2
2
  import {TimelockRefundHandler} from "./handlers/refund/TimelockRefundHandler";
3
- import {BigNumberish, cairo, hash} from "starknet";
3
+ import {BigNumberish, cairo, CairoOption, CairoOptionVariant, hash} from "starknet";
4
4
  import {toBigInt, toHex} from "../../utils/Utils";
5
5
  import {
6
6
  StringToPrimitiveType
@@ -350,7 +350,8 @@ export class StarknetSwapData extends SwapData {
350
350
  amount: cairo.uint256(toBigInt(this.amount)),
351
351
  fee_token: this.feeToken,
352
352
  security_deposit: cairo.uint256(toBigInt(this.securityDeposit)),
353
- claimer_bounty: cairo.uint256(toBigInt(this.claimerBounty))
353
+ claimer_bounty: cairo.uint256(toBigInt(this.claimerBounty)),
354
+ success_action: new CairoOption(CairoOptionVariant.None) //For now enforce no success action
354
355
  }
355
356
  }
356
357
 
@@ -367,6 +368,14 @@ export class StarknetSwapData extends SwapData {
367
368
  const feeToken = toHex(span.shift());
368
369
  const securityDeposit = toBigInt({low: span.shift(), high: span.shift()});
369
370
  const claimerBounty = toBigInt({low: span.shift(), high: span.shift()});
371
+ const hasSuccessAction = toBigInt(span.shift()) === 0n;
372
+ if(hasSuccessAction) {
373
+ const executionContract = toHex(span.shift());
374
+ const executionHash = toHex(span.shift());
375
+ const executionExpiry = toBigInt(span.shift());
376
+ const executionFee = toBigInt({low: span.shift(), high: span.shift()});
377
+ // throw new Error("Success action not allowed!");
378
+ }
370
379
 
371
380
  return new StarknetSwapData(
372
381
  offerer,
@@ -1,7 +1,7 @@
1
1
  import {StarknetSwapData} from "../StarknetSwapData";
2
2
  import {BigNumberish} from "starknet";
3
- import {StarknetGas} from "../../chain/StarknetAction";
4
3
  import {StarknetTx} from "../../chain/modules/StarknetTransactions";
4
+ import {StarknetGas} from "../../chain/modules/StarknetFees";
5
5
 
6
6
 
7
7
  export interface IHandler<TCommitmentData, TWitnessData> {
@@ -1,11 +1,11 @@
1
1
  import {HashlockClaimHandler} from "./HashlockClaimHandler";
2
2
  import {ChainSwapType} from "@atomiqlabs/base";
3
- import {StarknetGas} from "../../../chain/StarknetAction";
4
3
  import {IHandler} from "../IHandler";
5
4
  import {BitcoinTxIdClaimHandler} from "./btc/BitcoinTxIdClaimHandler";
6
5
  import {BitcoinOutputClaimHandler} from "./btc/BitcoinOutputClaimHandler";
7
6
  import {BitcoinNoncedOutputClaimHandler} from "./btc/BitcoinNoncedOutputClaimHandler";
8
7
  import {BigNumberish} from "starknet";
8
+ import {StarknetGas} from "../../../chain/modules/StarknetFees";
9
9
 
10
10
  export interface IClaimHandler<C, W> extends IHandler<C, W> {
11
11
  getType(): ChainSwapType;
@@ -2,17 +2,17 @@ import {StarknetSwapData} from "../../StarknetSwapData";
2
2
  import {bufferToU32Array, toHex, u32ArrayToBuffer} from "../../../../utils/Utils";
3
3
  import {BigNumberish, hash} from "starknet";
4
4
  import {ChainSwapType} from "@atomiqlabs/base";
5
- import {StarknetGas} from "../../../chain/StarknetAction";
6
5
  import {Buffer} from "buffer";
7
6
  import {sha256} from "@noble/hashes/sha2";
8
7
  import {StarknetTx} from "../../../chain/modules/StarknetTransactions";
9
8
  import {IClaimHandler} from "./ClaimHandlers";
9
+ import {StarknetGas} from "../../../chain/modules/StarknetFees";
10
10
 
11
11
  export class HashlockClaimHandler implements IClaimHandler<Buffer, string> {
12
12
 
13
13
  public readonly address: string;
14
14
  public static readonly type: ChainSwapType = ChainSwapType.HTLC;
15
- public static readonly gas: StarknetGas = {l1: 750};
15
+ public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 800*40_000, l1Gas: 0};
16
16
 
17
17
  constructor(address: string) {
18
18
  this.address = address;
@@ -1,5 +1,4 @@
1
1
  import {StarknetSwapData} from "../../../StarknetSwapData";
2
- import {StarknetGas} from "../../../../chain/StarknetAction";
3
2
  import {ChainSwapType} from "@atomiqlabs/base";
4
3
  import {BigNumberish, hash} from "starknet";
5
4
  import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
@@ -8,6 +7,7 @@ import {BitcoinCommitmentData, IBitcoinClaimHandler} from "./IBitcoinClaimHandle
8
7
  import {BitcoinOutputWitnessData} from "./BitcoinOutputClaimHandler";
9
8
  import {Transaction} from "@scure/btc-signer";
10
9
  import {Buffer} from "buffer";
10
+ import {StarknetGas} from "../../../../chain/modules/StarknetFees";
11
11
 
12
12
  export type BitcoinNoncedOutputCommitmentData = {
13
13
  output: Buffer,
@@ -27,7 +27,7 @@ function getTransactionNonce(btcTx: Transaction): bigint {
27
27
  export class BitcoinNoncedOutputClaimHandler extends IBitcoinClaimHandler<BitcoinNoncedOutputCommitmentData, BitcoinOutputWitnessData> {
28
28
 
29
29
  public static readonly type: ChainSwapType = ChainSwapType.CHAIN_NONCED;
30
- public static readonly gas: StarknetGas = {l1: 20000};
30
+ public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 20_000*40_000, l1Gas: 0};
31
31
 
32
32
  protected serializeCommitment(data: BitcoinNoncedOutputCommitmentData & BitcoinCommitmentData): BigNumberish[] {
33
33
  return [
@@ -1,5 +1,4 @@
1
1
  import {StarknetSwapData} from "../../../StarknetSwapData";
2
- import {StarknetGas} from "../../../../chain/StarknetAction";
3
2
  import {ChainSwapType} from "@atomiqlabs/base";
4
3
  import {BigNumberish, hash} from "starknet";
5
4
  import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
@@ -7,6 +6,7 @@ import {bufferToByteArray, getLogger, poseidonHashRange, toBigInt} from "../../.
7
6
  import {BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler} from "./IBitcoinClaimHandler";
8
7
  import {Transaction} from "@scure/btc-signer";
9
8
  import {Buffer} from "buffer";
9
+ import {StarknetGas} from "../../../../chain/modules/StarknetFees";
10
10
 
11
11
  export type BitcoinOutputCommitmentData = {
12
12
  output: Buffer,
@@ -22,7 +22,7 @@ const logger = getLogger("BitcoinOutputClaimHandler: ");
22
22
  export class BitcoinOutputClaimHandler extends IBitcoinClaimHandler<BitcoinOutputCommitmentData, BitcoinOutputWitnessData> {
23
23
 
24
24
  public static readonly type: ChainSwapType = ChainSwapType.CHAIN;
25
- public static readonly gas: StarknetGas = {l1: 20000};
25
+ public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 20_000 * 40_000, l1Gas: 0};
26
26
 
27
27
  protected serializeCommitment(data: BitcoinOutputCommitmentData & BitcoinCommitmentData): BigNumberish[] {
28
28
  return [
@@ -1,11 +1,11 @@
1
1
  import {StarknetSwapData} from "../../../StarknetSwapData";
2
- import {StarknetGas} from "../../../../chain/StarknetAction";
3
2
  import {ChainSwapType} from "@atomiqlabs/base";
4
3
  import {BigNumberish} from "starknet";
5
4
  import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
6
5
  import {bufferToU32Array, getLogger} from "../../../../../utils/Utils";
7
6
  import {BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler} from "./IBitcoinClaimHandler";
8
7
  import {Buffer} from "buffer";
8
+ import {StarknetGas} from "../../../../chain/modules/StarknetFees";
9
9
 
10
10
  export type BitcoinTxIdCommitmentData = {
11
11
  txId: string
@@ -16,7 +16,7 @@ const logger = getLogger("BitcoinTxIdClaimHandler: ");
16
16
  export class BitcoinTxIdClaimHandler extends IBitcoinClaimHandler<BitcoinTxIdCommitmentData, BitcoinWitnessData> {
17
17
 
18
18
  public static readonly type: ChainSwapType = ChainSwapType.CHAIN_TXID;
19
- public static readonly gas: StarknetGas = {l1: 20000};
19
+ public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 20_000 * 40_000, l1Gas: 0};
20
20
 
21
21
  protected serializeCommitment(data: BitcoinTxIdCommitmentData & BitcoinCommitmentData): BigNumberish[] {
22
22
  return [
@@ -1,12 +1,12 @@
1
1
  import {IClaimHandler} from "../ClaimHandlers";
2
2
  import {StarknetSwapData} from "../../../StarknetSwapData";
3
- import {StarknetGas} from "../../../../chain/StarknetAction";
4
3
  import {ChainSwapType, RelaySynchronizer} from "@atomiqlabs/base";
5
4
  import {BigNumberish, hash} from "starknet";
6
5
  import {StarknetBtcStoredHeader} from "../../../../btcrelay/headers/StarknetBtcStoredHeader";
7
6
  import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
8
7
  import {StarknetBtcRelay} from "../../../../btcrelay/StarknetBtcRelay";
9
8
  import {bufferToU32Array, getLogger, u32ArrayToBuffer} from "../../../../../utils/Utils";
9
+ import {StarknetGas} from "../../../../chain/modules/StarknetFees";
10
10
 
11
11
  export type BitcoinCommitmentData = {
12
12
  btcRelay: StarknetBtcRelay<any>,
@@ -33,7 +33,7 @@ export abstract class IBitcoinClaimHandler<C, W extends BitcoinWitnessData> impl
33
33
 
34
34
  public static readonly address = "";
35
35
  public static readonly type: ChainSwapType = ChainSwapType.CHAIN_TXID;
36
- public static readonly gas: StarknetGas = {l1: 20000};
36
+ public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 20_000 * 40_000, l1Gas: 0};
37
37
 
38
38
  protected serializeCommitment(data: BitcoinCommitmentData): BigNumberish[] {
39
39
  return [
@@ -1,14 +1,14 @@
1
1
  import {StarknetTx} from "../../../chain/modules/StarknetTransactions";
2
2
  import {StarknetSwapData} from "../../StarknetSwapData";
3
- import {bigNumberishToBuffer, toBigInt} from "../../../../utils/Utils";
3
+ import {bigNumberishToBuffer} from "../../../../utils/Utils";
4
4
  import {BigNumberish} from "starknet";
5
5
  import {IHandler} from "../IHandler";
6
- import {StarknetGas} from "../../../chain/StarknetAction";
6
+ import {StarknetGas} from "../../../chain/modules/StarknetFees";
7
7
 
8
8
  export class TimelockRefundHandler implements IHandler<bigint, never> {
9
9
 
10
10
  public readonly address: string;
11
- public static readonly gas: StarknetGas = {l1: 500};
11
+ public static readonly gas: StarknetGas = {l1DataGas: 0, l2Gas: 4_000_000, l1Gas: 0};
12
12
 
13
13
  constructor(address: string) {
14
14
  this.address = address;
@@ -8,8 +8,8 @@ import {StarknetTx} from "../../chain/modules/StarknetTransactions";
8
8
  export class StarknetLpVault extends StarknetSwapModule {
9
9
 
10
10
  private static readonly GasCosts = {
11
- WITHDRAW: {l1: 750, l2: 0},
12
- DEPOSIT: {l1: 750, l2: 0}
11
+ WITHDRAW: {l1DataGas: 500, l2Gas: 3_200_000, l1Gas: 0},
12
+ DEPOSIT: {l1: 500, l2Gas: 4_000_000, l1Gas: 0}
13
13
  };
14
14
 
15
15
  /**
@@ -2,11 +2,11 @@ import {ChainSwapType, RelaySynchronizer, SwapDataVerificationError} from "@atom
2
2
  import {toHex} from "../../../utils/Utils";
3
3
  import {StarknetSwapModule} from "../StarknetSwapModule";
4
4
  import {StarknetSwapData} from "../StarknetSwapData";
5
- import {StarknetAction, StarknetGas, sumStarknetGas} from "../../chain/StarknetAction";
5
+ import {StarknetAction} from "../../chain/StarknetAction";
6
6
  import {BigNumberish} from "starknet";
7
7
  import {IClaimHandler} from "../handlers/claim/ClaimHandlers";
8
8
  import {StarknetTx} from "../../chain/modules/StarknetTransactions";
9
- import {StarknetFees} from "../../chain/modules/StarknetFees";
9
+ import {StarknetFees, StarknetGas, starknetGasAdd} from "../../chain/modules/StarknetFees";
10
10
  import {StarknetBtcStoredHeader} from "../../btcrelay/headers/StarknetBtcStoredHeader";
11
11
  import {BitcoinOutputWitnessData} from "../handlers/claim/btc/BitcoinOutputClaimHandler";
12
12
  import {BitcoinWitnessData} from "../handlers/claim/btc/IBitcoinClaimHandler";
@@ -15,8 +15,8 @@ import {Buffer} from "buffer";
15
15
  export class StarknetSwapClaim extends StarknetSwapModule {
16
16
 
17
17
  private static readonly GasCosts = {
18
- CLAIM: {l1: 500, l2: 0},
19
- CLAIM_PAY_OUT: {l1: 1000, l2: 0}
18
+ CLAIM: {l1DataGas: 750, l2Gas: 4_000_000, l1Gas: 0},
19
+ CLAIM_PAY_OUT: {l1DataGas: 900, l2Gas: 6_000_000, l1Gas: 0}
20
20
  };
21
21
 
22
22
  /**
@@ -37,7 +37,7 @@ export class StarknetSwapClaim extends StarknetSwapModule {
37
37
  ): StarknetAction {
38
38
  return new StarknetAction(signer, this.root,
39
39
  this.swapContract.populateTransaction.claim(swapData.toEscrowStruct(), witness),
40
- sumStarknetGas(swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM, claimHandlerGas)
40
+ starknetGasAdd(swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM, claimHandlerGas)
41
41
  );
42
42
  }
43
43
 
@@ -134,9 +134,9 @@ export class StarknetSwapClaim extends StarknetSwapModule {
134
134
  let gasRequired = swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM;
135
135
 
136
136
  const claimHandler: IClaimHandler<any, any> = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
137
- if(claimHandler!=null) gasRequired = sumStarknetGas(gasRequired, claimHandler.getGas(swapData));
137
+ if(claimHandler!=null) gasRequired = starknetGasAdd(gasRequired, claimHandler.getGas(swapData));
138
138
 
139
- return StarknetFees.getGasFee(gasRequired.l1, feeRate);
139
+ return StarknetFees.getGasFee(gasRequired, feeRate);
140
140
  }
141
141
 
142
142
  }
@@ -1,10 +1,10 @@
1
1
  import {SignatureVerificationError, SwapCommitStatus, SwapDataVerificationError} from "@atomiqlabs/base";
2
- import {bufferToBytes31Span, toBigInt, toHex, tryWithRetries} from "../../../utils/Utils";
2
+ import {bufferToBytes31Span, toHex, tryWithRetries} from "../../../utils/Utils";
3
3
  import {Buffer} from "buffer";
4
4
  import {StarknetSwapData} from "../StarknetSwapData";
5
5
  import {StarknetAction} from "../../chain/StarknetAction";
6
6
  import {StarknetSwapModule} from "../StarknetSwapModule";
7
- import {BigNumberish} from "starknet";
7
+ import {BigNumberish, cairo} from "starknet";
8
8
  import {StarknetSigner} from "../../wallet/StarknetSigner";
9
9
  import {StarknetFees} from "../../chain/modules/StarknetFees";
10
10
  import {StarknetTx} from "../../chain/modules/StarknetTransactions";
@@ -15,14 +15,27 @@ export type StarknetPreFetchVerification = {
15
15
 
16
16
  const Initialize = [
17
17
  { name: 'Swap hash', type: 'felt' },
18
- { name: 'Timeout', type: 'timestamp' }
18
+ { name: 'Offerer', type: 'ContractAddress'},
19
+ { name: 'Claimer', type: 'ContractAddress'},
20
+ { name: 'Token amount', type: 'TokenAmount'},
21
+ { name: 'Pay in', type: 'bool'},
22
+ { name: 'Pay out', type: 'bool'},
23
+ { name: 'Tracking reputation', type: 'bool'},
24
+ { name: 'Claim handler', type: 'ContractAddress'},
25
+ { name: 'Claim data', type: 'felt'},
26
+ { name: 'Refund handler', type: 'ContractAddress'},
27
+ { name: 'Refund data', type: 'felt'},
28
+ { name: 'Security deposit', type: 'TokenAmount'},
29
+ { name: 'Claimer bounty', type: 'TokenAmount'},
30
+ { name: 'Claim action hash', type: 'felt'},
31
+ { name: 'Deadline', type: 'timestamp' }
19
32
  ];
20
33
 
21
34
  export class StarknetSwapInit extends StarknetSwapModule {
22
35
 
23
36
  private static readonly GasCosts = {
24
- INIT: {l1: 500, l2: 0},
25
- INIT_PAY_IN: {l1: 1000, l2: 0},
37
+ INIT: {l1DataGas: 750, l2Gas: 8_000_000, l1Gas: 0},
38
+ INIT_PAY_IN: {l1DataGas: 500, l2Gas: 4_800_000, l1Gas: 0},
26
39
  };
27
40
 
28
41
  /**
@@ -82,7 +95,29 @@ export class StarknetSwapInit extends StarknetSwapModule {
82
95
 
83
96
  const signature = await this.root.Signatures.signTypedMessage(signer, Initialize, "Initialize", {
84
97
  "Swap hash": "0x"+swapData.getEscrowHash(),
85
- "Timeout": toHex(authTimeout)
98
+ "Offerer": swapData.offerer,
99
+ "Claimer": swapData.claimer,
100
+ "Token amount": {
101
+ token_address: swapData.token,
102
+ amount: cairo.uint256(swapData.amount)
103
+ },
104
+ "Pay in": swapData.isPayIn(),
105
+ "Pay out": swapData.isPayOut(),
106
+ "Tracking reputation": swapData.reputation,
107
+ "Refund handler": swapData.refundHandler,
108
+ "Claim handler": swapData.claimHandler,
109
+ "Claim data": "0x"+swapData.getClaimHash(),
110
+ "Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x"+swapData.refundData,
111
+ "Security deposit": {
112
+ token_address: swapData.feeToken,
113
+ amount: cairo.uint256(swapData.securityDeposit)
114
+ },
115
+ "Claimer bounty": {
116
+ token_address: swapData.feeToken,
117
+ amount: cairo.uint256(swapData.claimerBounty)
118
+ },
119
+ "Claim action hash": 0n,
120
+ "Deadline": toHex(authTimeout)
86
121
  });
87
122
 
88
123
  return {
@@ -126,7 +161,29 @@ export class StarknetSwapInit extends StarknetSwapModule {
126
161
 
127
162
  const valid = await this.root.Signatures.isValidSignature(signature, signer, Initialize, "Initialize", {
128
163
  "Swap hash": "0x"+swapData.getEscrowHash(),
129
- "Timeout": toHex(timeoutBN)
164
+ "Offerer": swapData.offerer,
165
+ "Claimer": swapData.claimer,
166
+ "Token amount": {
167
+ token_address: swapData.token,
168
+ amount: cairo.uint256(swapData.amount)
169
+ },
170
+ "Pay in": swapData.isPayIn(),
171
+ "Pay out": swapData.isPayOut(),
172
+ "Tracking reputation": swapData.reputation,
173
+ "Refund handler": swapData.refundHandler,
174
+ "Claim handler": swapData.claimHandler,
175
+ "Claim data": "0x"+swapData.getClaimHash(),
176
+ "Refund data": swapData.refundData.startsWith("0x") ? swapData.refundData : "0x"+swapData.refundData,
177
+ "Security deposit": {
178
+ token_address: swapData.feeToken,
179
+ amount: cairo.uint256(swapData.securityDeposit)
180
+ },
181
+ "Claimer bounty": {
182
+ token_address: swapData.feeToken,
183
+ amount: cairo.uint256(swapData.claimerBounty)
184
+ },
185
+ "Claim action hash": 0n,
186
+ "Deadline": toHex(timeoutBN)
130
187
  });
131
188
 
132
189
  if(!valid) throw new SignatureVerificationError("Invalid signature!");
@@ -221,6 +278,6 @@ export class StarknetSwapInit extends StarknetSwapModule {
221
278
  */
222
279
  async getInitFee(swapData?: StarknetSwapData, feeRate?: string): Promise<bigint> {
223
280
  feeRate ??= await this.root.Fees.getFeeRate();
224
- return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN.l1 : StarknetSwapInit.GasCosts.INIT.l1, feeRate);
281
+ return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN : StarknetSwapInit.GasCosts.INIT, feeRate);
225
282
  }
226
283
  }
@@ -2,13 +2,12 @@ import {SignatureVerificationError, SwapDataVerificationError} from "@atomiqlabs
2
2
  import {toHex, tryWithRetries} from "../../../utils/Utils";
3
3
  import {StarknetSwapModule} from "../StarknetSwapModule";
4
4
  import {StarknetSwapData} from "../StarknetSwapData";
5
- import {StarknetAction, StarknetGas, sumStarknetGas} from "../../chain/StarknetAction";
6
- import {StarknetSwapContract} from "../StarknetSwapContract";
5
+ import {StarknetAction} from "../../chain/StarknetAction";
7
6
  import {IHandler} from "../handlers/IHandler";
8
7
  import {BigNumberish} from "starknet";
9
8
  import {StarknetTx} from "../../chain/modules/StarknetTransactions";
10
9
  import {StarknetSigner} from "../../wallet/StarknetSigner";
11
- import {StarknetFees} from "../../chain/modules/StarknetFees";
10
+ import {StarknetFees, StarknetGas, starknetGasAdd} from "../../chain/modules/StarknetFees";
12
11
 
13
12
  const Refund = [
14
13
  { name: 'Swap hash', type: 'felt' },
@@ -18,8 +17,8 @@ const Refund = [
18
17
  export class StarknetSwapRefund extends StarknetSwapModule {
19
18
 
20
19
  private static readonly GasCosts = {
21
- REFUND: {l1: 750, l2: 0},
22
- REFUND_PAY_OUT: {l1: 1250, l2: 0}
20
+ REFUND: {l1DataGas: 750, l2Gas: 4_000_000, l1Gas: 0},
21
+ REFUND_PAY_OUT: {l1DataGas: 900, l2Gas: 6_000_000, l1Gas: 0}
23
22
  };
24
23
 
25
24
  /**
@@ -40,7 +39,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
40
39
  ): StarknetAction {
41
40
  return new StarknetAction(signer, this.root,
42
41
  this.swapContract.populateTransaction.refund(swapData.toEscrowStruct(), witness),
43
- sumStarknetGas(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, handlerGas)
42
+ starknetGasAdd(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, handlerGas)
44
43
  );
45
44
  }
46
45
 
@@ -192,7 +191,7 @@ export class StarknetSwapRefund extends StarknetSwapModule {
192
191
  */
193
192
  async getRefundFee(swapData: StarknetSwapData, feeRate?: string): Promise<bigint> {
194
193
  feeRate ??= await this.root.Fees.getFeeRate();
195
- return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT.l1 : StarknetSwapRefund.GasCosts.REFUND.l1, feeRate);
194
+ return StarknetFees.getGasFee(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, feeRate);
196
195
  }
197
196
 
198
197
  }
@@ -1,4 +1,4 @@
1
- import {EDAMode} from "starknet-types-07";
1
+ import {EDAMode} from "@starknet-io/starknet-types-08";
2
2
  import {BigNumberish, CallData, hash, Uint256} from "starknet";
3
3
  import {StarknetTx} from "../starknet/chain/modules/StarknetTransactions";
4
4
  import {Buffer} from "buffer";