@ercworldio/blockchain-shared 1.0.12 → 1.0.14

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.
@@ -11,15 +11,24 @@
11
11
  "targetConfirmations": 10,
12
12
  "accounting": {
13
13
  "funding_wallet": "0xA9bEA932CFf638324eDa1046AB4D84723C84987c",
14
- "treasury_receiver": "0x28DE9CeCd83D9b20Ee6A438d39114Add08ED5FF7",
15
- "overflow_treasury_receiver": "0x28DE9CeCd83D9b20Ee6A438d39114Add08ED5FF7",
14
+ "treasury_receiver": "0x1C631D70b172E8D2f134123D193a1427817f5705",
15
+ "overflow_treasury_receiver": "0x1C631D70b172E8D2f134123D193a1427817f5705",
16
16
  "overflow_threshold_decimal": 100000,
17
17
  "min_funding_wallet_balance_usd": 5,
18
18
  "allowed_receivers": [
19
- "0x28DE9CeCd83D9b20Ee6A438d39114Add08ED5FF7"
19
+ "0x1C631D70b172E8D2f134123D193a1427817f5705"
20
20
  ]
21
21
  },
22
- "custodialAlchemyWebhooks": [],
22
+ "custodialAlchemyWebhooks": [
23
+ {
24
+ "chainId": "1",
25
+ "network_symbol": "eth",
26
+ "network": "ETH_MAINNET",
27
+ "total_wallet_count": 10,
28
+ "endpoint": "webhook/alchemy/address-activity-eth",
29
+ "source": "wallet"
30
+ }
31
+ ],
23
32
  "quicknodeNotificationConfig": [
24
33
  {
25
34
  "name": "escrow-eth-stg-yb",
@@ -37,11 +46,20 @@
37
46
  "contracts": [
38
47
  {
39
48
  "type": "Escrow",
40
- "version": "1",
49
+ "version": "2",
41
50
  "startingBlock": 24754256,
42
- "escrowAlchemyWebhooks": [],
51
+ "escrowAlchemyWebhooks": [
52
+ {
53
+ "chainId": "1",
54
+ "network_symbol": "eth",
55
+ "network": "ETH_MAINNET",
56
+ "type": "GRAPHQL",
57
+ "endpoint": "webhook/alchemy/escrow-events",
58
+ "source": "contract"
59
+ }
60
+ ],
43
61
  "addresses": [
44
- "0x28DE9CeCd83D9b20Ee6A438d39114Add08ED5FF7"
62
+ "0x1C631D70b172E8D2f134123D193a1427817f5705"
45
63
  ]
46
64
  },
47
65
  {
@@ -111,12 +129,12 @@
111
129
  "targetConfirmations": 5,
112
130
  "accounting": {
113
131
  "funding_wallet": "0xA9bEA932CFf638324eDa1046AB4D84723C84987c",
114
- "treasury_receiver": "0x6d47B7230F5D466677795E271db3aEE4C59c0B47",
115
- "overflow_treasury_receiver": "0x6d47B7230F5D466677795E271db3aEE4C59c0B47",
132
+ "treasury_receiver": "0xdDb7aCeFb523bcC43F65C4d24aca69D03c6D0A51",
133
+ "overflow_treasury_receiver": "0xdDb7aCeFb523bcC43F65C4d24aca69D03c6D0A51",
116
134
  "overflow_threshold_decimal": 100000,
117
135
  "min_funding_wallet_balance_usd": 5,
118
136
  "allowed_receivers": [
119
- "0x6d47B7230F5D466677795E271db3aEE4C59c0B47"
137
+ "0xdDb7aCeFb523bcC43F65C4d24aca69D03c6D0A51"
120
138
  ]
121
139
  },
122
140
  "custodialAlchemyWebhooks": [],
@@ -137,16 +155,25 @@
137
155
  "contracts": [
138
156
  {
139
157
  "type": "Escrow",
140
- "version": "1",
158
+ "version": "2",
141
159
  "startingBlock": 89178576,
142
- "escrowAlchemyWebhooks": [],
160
+ "escrowAlchemyWebhooks": [
161
+ {
162
+ "chainId": "56",
163
+ "network_symbol": "bnb",
164
+ "network": "BNB_MAINNET",
165
+ "type": "GRAPHQL",
166
+ "endpoint": "webhook/alchemy/escrow-events",
167
+ "source": "contract"
168
+ }
169
+ ],
143
170
  "addresses": [
144
- "0x6d47B7230F5D466677795E271db3aEE4C59c0B47"
171
+ "0xdDb7aCeFb523bcC43F65C4d24aca69D03c6D0A51"
145
172
  ]
146
173
  },
147
174
  {
148
175
  "type": "FundingWallet",
149
- "version": "1",
176
+ "version": "2",
150
177
  "startingBlock": 1,
151
178
  "escrowAlchemyWebhooks": [],
152
179
  "addresses": [
@@ -302,12 +329,12 @@
302
329
  "targetConfirmations": 10,
303
330
  "accounting": {
304
331
  "funding_wallet": "0xA9bEA932CFf638324eDa1046AB4D84723C84987c",
305
- "treasury_receiver": "0x6d47B7230F5D466677795E271db3aEE4C59c0B47",
306
- "overflow_treasury_receiver": "0x6d47B7230F5D466677795E271db3aEE4C59c0B47",
332
+ "treasury_receiver": "0x819Aad7CE45bF3C322ECE66e8375EA914643A013",
333
+ "overflow_treasury_receiver": "0x819Aad7CE45bF3C322ECE66e8375EA914643A013",
307
334
  "overflow_threshold_decimal": 100000,
308
335
  "min_funding_wallet_balance_usd": 5,
309
336
  "allowed_receivers": [
310
- "0x6d47B7230F5D466677795E271db3aEE4C59c0B47"
337
+ "0x819Aad7CE45bF3C322ECE66e8375EA914643A013"
311
338
  ]
312
339
  },
313
340
  "custodialAlchemyWebhooks": [],
@@ -328,11 +355,11 @@
328
355
  "contracts": [
329
356
  {
330
357
  "type": "Escrow",
331
- "version": "1",
358
+ "version": "2",
332
359
  "startingBlock": 84779780,
333
360
  "escrowAlchemyWebhooks": [],
334
361
  "addresses": [
335
- "0x6d47B7230F5D466677795E271db3aEE4C59c0B47"
362
+ "0x819Aad7CE45bF3C322ECE66e8375EA914643A013"
336
363
  ]
337
364
  },
338
365
  {
@@ -388,12 +415,12 @@
388
415
  "targetConfirmations": 10,
389
416
  "accounting": {
390
417
  "funding_wallet": "0xA9bEA932CFf638324eDa1046AB4D84723C84987c",
391
- "treasury_receiver": "0x51bDD157950FB7C8B56F7E3A09828E991c1BDB17",
392
- "overflow_treasury_receiver": "0x51bDD157950FB7C8B56F7E3A09828E991c1BDB17",
418
+ "treasury_receiver": "0x955ae2FE4337BD3862dD23c88d16Eb815505Ea25",
419
+ "overflow_treasury_receiver": "0x955ae2FE4337BD3862dD23c88d16Eb815505Ea25",
393
420
  "overflow_threshold_decimal": 100000,
394
421
  "min_funding_wallet_balance_usd": 5,
395
422
  "allowed_receivers": [
396
- "0x51bDD157950FB7C8B56F7E3A09828E991c1BDB17"
423
+ "0x955ae2FE4337BD3862dD23c88d16Eb815505Ea25"
397
424
  ]
398
425
  },
399
426
  "custodialAlchemyWebhooks": [],
@@ -414,11 +441,11 @@
414
441
  "contracts": [
415
442
  {
416
443
  "type": "Escrow",
417
- "version": "1",
444
+ "version": "2",
418
445
  "startingBlock": 81474572,
419
446
  "escrowAlchemyWebhooks": [],
420
447
  "addresses": [
421
- "0x51bDD157950FB7C8B56F7E3A09828E991c1BDB17"
448
+ "0x955ae2FE4337BD3862dD23c88d16Eb815505Ea25"
422
449
  ]
423
450
  },
424
451
  {
@@ -1 +1 @@
1
- {"version":3,"file":"AlchemyWebhooks.d.ts","sourceRoot":"","sources":["../../src/services/AlchemyWebhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAS,OAAO,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAA6B,yBAAyB,EAAE,qBAAqB,EAAE,kBAAkB,EAAqC,MAAM,iBAAiB,CAAC;AACrK,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAOvD,KAAK,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC7C,MAAM,WAAW,4BAA4B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB;AAQD,UAAU,aAAa;IACnB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CAC3B;AAGD,cAAM,eAAe;IACjB,OAAc,QAAQ,EAAE,eAAe,CAAC;IACxC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAgB;IACvB,qBAAqB,EAAE,CAAC,GAAG,EAAE,yBAAyB,EAAE,IAAI,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAC5F,iBAAiB,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,MAAM,CAAC;IACrE,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAgBlD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAQlD,UAAU,GAAU,MAAM,yBAAyB,EAAE,cAAc,MAAM,EAAE,WAAW,qBAAqB,EAAE;;;;;;;OAuDnH;IAEM,2CAA2C,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,EAAE,yBAAyB;IAYjH,OAAO,CAAC,cAAc,CAmHrB;IAED,OAAO,CAAC,eAAe,CAiEtB;IAGM,iCAAiC,GAAI,KAAK,yBAAyB;;;;;;;QAIzE;IAIM,sCAAsC,GAAI,KAAK,yBAAyB;;;;;;;QAO9E;IAGY,8BAA8B,CAAC,YAAY,EAAE,yBAAyB;;wBAcR,cAAc;oBAAU,OAAO;mBAAS,MAAM;;;wBAA9C,cAAc;oBAAU,OAAO;mBAAS,MAAM;;;wBAA9C,cAAc;oBAAU,OAAO;mBAAS,MAAM;;;;IAgB5G,8BAA8B,CAAC,GAAG,EAAE,yBAAyB,EAAE,UAAU,EAAE,cAAc;;;;;;;;;CA4EzG;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"AlchemyWebhooks.d.ts","sourceRoot":"","sources":["../../src/services/AlchemyWebhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAS,OAAO,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAA6B,yBAAyB,EAAE,qBAAqB,EAAE,kBAAkB,EAAqC,MAAM,iBAAiB,CAAC;AACrK,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAOvD,KAAK,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC7C,MAAM,WAAW,4BAA4B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB;AAQD,UAAU,aAAa;IACnB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CAC3B;AAGD,cAAM,eAAe;IACjB,OAAc,QAAQ,EAAE,eAAe,CAAC;IACxC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAgB;IACvB,qBAAqB,EAAE,CAAC,GAAG,EAAE,yBAAyB,EAAE,IAAI,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAC5F,iBAAiB,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,MAAM,CAAC;IACrE,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAgBlD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAQlD,UAAU,GAAU,MAAM,yBAAyB,EAAE,cAAc,MAAM,EAAE,WAAW,qBAAqB,EAAE;;;;;;;OAuDnH;IAEM,2CAA2C,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,EAAE,yBAAyB;IAYjH,OAAO,CAAC,cAAc,CAqHrB;IAED,OAAO,CAAC,eAAe,CAiEtB;IAGM,iCAAiC,GAAI,KAAK,yBAAyB;;;;;;;QAIzE;IAIM,sCAAsC,GAAI,KAAK,yBAAyB;;;;;;;QAO9E;IAGY,8BAA8B,CAAC,YAAY,EAAE,yBAAyB;;wBAcR,cAAc;oBAAU,OAAO;mBAAS,MAAM;;;wBAA9C,cAAc;oBAAU,OAAO;mBAAS,MAAM;;;wBAA9C,cAAc;oBAAU,OAAO;mBAAS,MAAM;;;;IAgB5G,8BAA8B,CAAC,GAAG,EAAE,yBAAyB,EAAE,UAAU,EAAE,cAAc;;;;;;;;;CA4EzG;AAED,eAAe,eAAe,CAAC"}
@@ -127,7 +127,9 @@ class AlchemyWebhooks {
127
127
  // Get network settings
128
128
  const settings = required_custodial_webhooks.find((setting) => setting.network === network);
129
129
  if (!settings) {
130
- throw new Error(`Settings not found for network ${network}`);
130
+ // throw new Error(`Settings not found for network ${network}`);
131
+ this.logger.warn(`Startup::AlchemyWebhooks: Settings not found for network ${network}`);
132
+ continue;
131
133
  }
132
134
  // Calculate estimated webhook count for given total wallet address count
133
135
  let total_wallet_count = (settings === null || settings === void 0 ? void 0 : settings.total_wallet_count) || 0;
@@ -7197,6 +7197,14 @@
7197
7197
  ]
7198
7198
  }
7199
7199
  },
7200
+ {
7201
+ "name": "bitmap_page",
7202
+ "docs": [
7203
+ "the batch paths, so an id paid here can never be paid again there (or vice versa). Created",
7204
+ "on first touch by `burn_request_id`, which re-derives and checks this address itself."
7205
+ ],
7206
+ "writable": true
7207
+ },
7200
7208
  {
7201
7209
  "name": "system_program",
7202
7210
  "address": "11111111111111111111111111111111"
@@ -7651,6 +7659,14 @@
7651
7659
  ]
7652
7660
  }
7653
7661
  },
7662
+ {
7663
+ "name": "bitmap_page",
7664
+ "docs": [
7665
+ "the SOL and batch paths, so an id paid here can never be paid again there (or vice versa).",
7666
+ "Created on first touch by `burn_request_id`, which re-derives and checks this address itself."
7667
+ ],
7668
+ "writable": true
7669
+ },
7654
7670
  {
7655
7671
  "name": "token_program",
7656
7672
  "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
@@ -8337,6 +8353,11 @@
8337
8353
  "code": 6036,
8338
8354
  "name": "AdminTreasuryRolesNotInitialized",
8339
8355
  "msg": "Admin treasury roles not initialized"
8356
+ },
8357
+ {
8358
+ "code": 6037,
8359
+ "name": "PubkeysNotEqual",
8360
+ "msg": "Public keys do not match"
8340
8361
  }
8341
8362
  ],
8342
8363
  "types": [
@@ -6,6 +6,15 @@ export declare function findVaultAuthorityPda(programId: PublicKey): PublicKey;
6
6
  export declare function findVaultAta(mint: PublicKey, programId: PublicKey): PublicKey;
7
7
  export declare function findSolVaultPda(programId: PublicKey): PublicKey;
8
8
  export declare function findNonceAccountPda(programId: PublicKey, user_pubkey: PublicKey): PublicKey;
9
+ /** Request ids per WithdrawalBitmap page — must match IDS_PER_PAGE in the program. */
10
+ export declare const IDS_PER_PAGE: bigint;
11
+ /**
12
+ * The WithdrawalBitmap page holding this request id's replay bit. Every withdraw path burns that
13
+ * bit before validating the operator signature, so this account must be supplied on all of them.
14
+ * Anchor cannot encode the `request_id / IDS_PER_PAGE` seed in the IDL, so it is never resolved
15
+ * automatically — callers pass it explicitly.
16
+ */
17
+ export declare function findWithdrawalBitmapPagePda(programId: PublicKey, request_id: number | bigint): PublicKey;
9
18
  export declare function getTokenDecimals(token_mint: PublicKey, connection: anchor.web3.Connection): Promise<number>;
10
19
  export declare function getWithdrawNonce(program: anchor.Program<Escrow>, userPubkey: PublicKey, provider: anchor.AnchorProvider, signer?: Keypair): Promise<anchor.BN>;
11
20
  export declare function initializeEscrowConfig(program: anchor.Program, admin: anchor.web3.Keypair, provider: anchor.AnchorProvider): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"EscrowService.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/EscrowService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAqB,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAM5C,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAEvD;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,aAEzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,aAGjE;AAGD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,aAEnD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,aAQ/E;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,mBAW/F;AAID,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,sBA6C/I;AAGD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc;;;GAgBhI"}
1
+ {"version":3,"file":"EscrowService.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/EscrowService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAqB,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAM5C,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAEvD;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,aAEzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,aAGjE;AAGD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,aAEnD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,aAQ/E;AAED,sFAAsF;AACtF,eAAO,MAAM,YAAY,QAAe,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,aAI5F;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,mBAW/F;AAID,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,sBA6C/I;AAGD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc;;;GAgBhI"}
@@ -45,11 +45,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
45
45
  return (mod && mod.__esModule) ? mod : { "default": mod };
46
46
  };
47
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.IDS_PER_PAGE = void 0;
48
49
  exports.findEscrowConfigPda = findEscrowConfigPda;
49
50
  exports.findVaultAuthorityPda = findVaultAuthorityPda;
50
51
  exports.findVaultAta = findVaultAta;
51
52
  exports.findSolVaultPda = findSolVaultPda;
52
53
  exports.findNonceAccountPda = findNonceAccountPda;
54
+ exports.findWithdrawalBitmapPagePda = findWithdrawalBitmapPagePda;
53
55
  exports.getTokenDecimals = getTokenDecimals;
54
56
  exports.getWithdrawNonce = getWithdrawNonce;
55
57
  exports.initializeEscrowConfig = initializeEscrowConfig;
@@ -79,6 +81,19 @@ function findNonceAccountPda(programId, user_pubkey) {
79
81
  user_pubkey.toBuffer()
80
82
  ], programId)[0];
81
83
  }
84
+ /** Request ids per WithdrawalBitmap page — must match IDS_PER_PAGE in the program. */
85
+ exports.IDS_PER_PAGE = BigInt(8192);
86
+ /**
87
+ * The WithdrawalBitmap page holding this request id's replay bit. Every withdraw path burns that
88
+ * bit before validating the operator signature, so this account must be supplied on all of them.
89
+ * Anchor cannot encode the `request_id / IDS_PER_PAGE` seed in the IDL, so it is never resolved
90
+ * automatically — callers pass it explicitly.
91
+ */
92
+ function findWithdrawalBitmapPagePda(programId, request_id) {
93
+ const page = Buffer.alloc(8);
94
+ page.writeBigUInt64LE(BigInt(request_id) / exports.IDS_PER_PAGE);
95
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("withdrawal-bitmap"), page], programId)[0];
96
+ }
82
97
  function getTokenDecimals(token_mint, connection) {
83
98
  return __awaiter(this, void 0, void 0, function* () {
84
99
  const token_details = yield connection.getParsedAccountInfo(token_mint, "confirmed");
@@ -1 +1 @@
1
- {"version":3,"file":"EscrowUtility.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/EscrowUtility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAkB,OAAO,EAAE,SAAS,EAA8B,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAInI,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,qBAAa,aAAa;IACjB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC;gBAE3B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc;IASrE;;;;;OAKG;IACG,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoClH;;;;OAIG;IACG,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBlF;;;;;OAKG;IACG,WAAW,CACf,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,MAAM,CAAC;IA2ClB;;;;;OAKG;IACG,gBAAgB,CACpB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,MAAM,CAAC;IAwDZ,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/C,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,UAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,mBAAmB,CAC9B,SAAS,EAAE,oBAAoB,EAC/B,UAAU,GAAE,WAAW,GAAG,WAAyB,EACnD,SAAS,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC;IAiChB;;;;;OAKG;WACU,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IAK7F;;;;;;OAMG;WACU,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;CAMvI;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"EscrowUtility.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/EscrowUtility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAkB,OAAO,EAAE,SAAS,EAA8B,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAInI,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,qBAAa,aAAa;IACjB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC;gBAE3B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc;IASrE;;;;;OAKG;IACG,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoClH;;;;OAIG;IACG,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBlF;;;;;OAKG;IACG,WAAW,CACf,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,MAAM,CAAC;IA4ClB;;;;;OAKG;IACG,gBAAgB,CACpB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,MAAM,CAAC;IAyDZ,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/C,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,UAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,mBAAmB,CAC9B,SAAS,EAAE,oBAAoB,EAC/B,UAAU,GAAE,WAAW,GAAG,WAAyB,EACnD,SAAS,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC;IAiChB;;;;;OAKG;WACU,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IAK7F;;;;;;OAMG;WACU,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;CAMvI;AAED,eAAe,aAAa,CAAC"}
@@ -161,6 +161,7 @@ class EscrowUtility {
161
161
  recipient: recipient,
162
162
  tokenAddress: new web3_js_1.PublicKey(web3_js_1.SystemProgram.programId),
163
163
  withdrawNonce: noncePda,
164
+ bitmapPage: EscrowService.findWithdrawalBitmapPagePda(programId, request_id),
164
165
  systemProgram: web3_js_1.SystemProgram.programId,
165
166
  instructions: anchor.web3.SYSVAR_INSTRUCTIONS_PUBKEY
166
167
  })
@@ -211,6 +212,7 @@ class EscrowUtility {
211
212
  recipient: this.provider.wallet.publicKey,
212
213
  withdrawNonce: noncePda,
213
214
  userTokenAccount: userTokenAccount,
215
+ bitmapPage: EscrowService.findWithdrawalBitmapPagePda(programId, request_id),
214
216
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
215
217
  systemProgram: web3_js_1.SystemProgram.programId,
216
218
  instructions: anchor.web3.SYSVAR_INSTRUCTIONS_PUBKEY
@@ -7203,6 +7203,14 @@ export type Escrow = {
7203
7203
  ];
7204
7204
  };
7205
7205
  },
7206
+ {
7207
+ "name": "bitmapPage";
7208
+ "docs": [
7209
+ "the batch paths, so an id paid here can never be paid again there (or vice versa). Created",
7210
+ "on first touch by `burn_request_id`, which re-derives and checks this address itself."
7211
+ ];
7212
+ "writable": true;
7213
+ },
7206
7214
  {
7207
7215
  "name": "systemProgram";
7208
7216
  "address": "11111111111111111111111111111111";
@@ -7657,6 +7665,14 @@ export type Escrow = {
7657
7665
  ];
7658
7666
  };
7659
7667
  },
7668
+ {
7669
+ "name": "bitmapPage";
7670
+ "docs": [
7671
+ "the SOL and batch paths, so an id paid here can never be paid again there (or vice versa).",
7672
+ "Created on first touch by `burn_request_id`, which re-derives and checks this address itself."
7673
+ ];
7674
+ "writable": true;
7675
+ },
7660
7676
  {
7661
7677
  "name": "tokenProgram";
7662
7678
  "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
@@ -8343,6 +8359,11 @@ export type Escrow = {
8343
8359
  "code": 6036;
8344
8360
  "name": "adminTreasuryRolesNotInitialized";
8345
8361
  "msg": "Admin treasury roles not initialized";
8362
+ },
8363
+ {
8364
+ "code": 6037;
8365
+ "name": "pubkeysNotEqual";
8366
+ "msg": "Public keys do not match";
8346
8367
  }
8347
8368
  ];
8348
8369
  "types": [