@ercworldio/blockchain-shared 1.0.5-dev.7-PROJ-1469.11 → 1.0.5-dev.7-PROJ-1469.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/build/services/solana/escrow/SolanaEscrowAdmin.d.ts +8 -0
- package/build/services/solana/escrow/SolanaEscrowAdmin.d.ts.map +1 -1
- package/build/services/solana/escrow/SolanaEscrowAdmin.js +7 -0
- package/build/services/solana/escrow/services/EscrowAdminUtility.d.ts +15 -0
- package/build/services/solana/escrow/services/EscrowAdminUtility.d.ts.map +1 -1
- package/build/services/solana/escrow/services/EscrowAdminUtility.js +91 -0
- package/package.json +1 -1
|
@@ -89,6 +89,14 @@ declare class SolanaEscrowAdmin {
|
|
|
89
89
|
*/
|
|
90
90
|
set_pause_state: (target_state: boolean) => Promise<string>;
|
|
91
91
|
withdraw_batch: (chain_id: ChainId, token_address: string, receivers: BatchReceiver[]) => Promise<string>;
|
|
92
|
+
/**
|
|
93
|
+
* Executes previously-scheduled (timelocked) withdrawals whose delay has elapsed. Amounts and
|
|
94
|
+
* recipients are read from each on-chain commitment, so only request ids + recipients are passed.
|
|
95
|
+
*/
|
|
96
|
+
batch_execute_withdrawal: (chain_id: ChainId, token_address: string, receivers: Array<{
|
|
97
|
+
request_id: number;
|
|
98
|
+
receiver_pubkey: PublicKey | string;
|
|
99
|
+
}>) => Promise<string>;
|
|
92
100
|
/**
|
|
93
101
|
* Idempotently ensures the batch path's Address Lookup Table exists and covers `mints`.
|
|
94
102
|
* Safe to call on every startup: it discovers an existing table on-chain, extends it when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolanaEscrowAdmin.d.ts","sourceRoot":"","sources":["../../../../src/services/solana/escrow/SolanaEscrowAdmin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAqC,MAAM,iBAAiB,CAAC;AAEpG,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAkB9C,UAAU,2BAA2B;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,cAAM,iBAAiB;IACZ,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,MAAM,CAAC,CAAU;IAClB,UAAU,EAAE,UAAU,CAAC;gBAG1B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,SAAS,EAC1B,eAAe,EAAE,wBAAwB,EACzC,mBAAmB,EAAE,4BAA4B,EACjD,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,2BAA2B,EAC9C,UAAU,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;IAkCvC;;;OAGG;IACH,OAAO,CAAC,OAAO,CAGb;IAEF;;;OAGG;IACI,kBAAkB,wBAGvB;IAKF;;;OAGG;IACI,SAAS,yBAEf;IAED;;;;OAIG;IACI,QAAQ,GAAU,gBAAgB,MAAM,sBAE9C;IAED;;;;OAIG;IACI,gBAAgB,GAAU,eAAe,MAAM,sBAErD;IAEM,YAAY,oCAElB;IAGD;;;OAGG;IACI,kBAAkB,0BAExB;IAED;;;OAGG;IACI,UAAU,0BAEhB;IAED;;;;OAIG;IACI,iBAAiB,GAAU,eAAe,MAAM,qBAEtD;IAED;;;;OAIG;IACI,oBAAoB,GAAU,eAAe,MAAM,qBAEzD;IAED;;;;OAIG;IACI,SAAS,GAAU,gBAAgB,MAAM,qBAE/C;IAGD;;;;OAIG;IACI,YAAY,GAAU,gBAAgB,MAAM,qBAElD;IAED;;;;OAIG;IACI,eAAe,GAAU,cAAc,OAAO,qBAEpD;IAIM,cAAc,GAAU,UAAU,OAAO,EAAE,eAAe,MAAM,EAAE,WAAW,aAAa,EAAE,qBAElG;IAED;;;;;;;;OAQG;IACI,mBAAmB,GAAU,OAAO,MAAM,EAAE,qBAGlD;IAED,8FAA8F;IACvF,mBAAmB,GAAU,OAAO,MAAM,EAAE,qBAElD;IAGD;;;;;;OAMG;IACI,QAAQ,GAAU,eAAe,MAAM,EAAE,oBAAoB,MAAM,EAAE,kBAAkB,MAAM,iCAEnG;IAED;;;;;OAKG;IACI,OAAO,GAAU,eAAe,MAAM,EAAE,oBAAoB,MAAM,qBAExE;CAKJ;AAED,eAAe,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"SolanaEscrowAdmin.d.ts","sourceRoot":"","sources":["../../../../src/services/solana/escrow/SolanaEscrowAdmin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAqC,MAAM,iBAAiB,CAAC;AAEpG,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAkB9C,UAAU,2BAA2B;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,cAAM,iBAAiB;IACZ,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,MAAM,CAAC,CAAU;IAClB,UAAU,EAAE,UAAU,CAAC;gBAG1B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,SAAS,EAC1B,eAAe,EAAE,wBAAwB,EACzC,mBAAmB,EAAE,4BAA4B,EACjD,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,2BAA2B,EAC9C,UAAU,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;IAkCvC;;;OAGG;IACH,OAAO,CAAC,OAAO,CAGb;IAEF;;;OAGG;IACI,kBAAkB,wBAGvB;IAKF;;;OAGG;IACI,SAAS,yBAEf;IAED;;;;OAIG;IACI,QAAQ,GAAU,gBAAgB,MAAM,sBAE9C;IAED;;;;OAIG;IACI,gBAAgB,GAAU,eAAe,MAAM,sBAErD;IAEM,YAAY,oCAElB;IAGD;;;OAGG;IACI,kBAAkB,0BAExB;IAED;;;OAGG;IACI,UAAU,0BAEhB;IAED;;;;OAIG;IACI,iBAAiB,GAAU,eAAe,MAAM,qBAEtD;IAED;;;;OAIG;IACI,oBAAoB,GAAU,eAAe,MAAM,qBAEzD;IAED;;;;OAIG;IACI,SAAS,GAAU,gBAAgB,MAAM,qBAE/C;IAGD;;;;OAIG;IACI,YAAY,GAAU,gBAAgB,MAAM,qBAElD;IAED;;;;OAIG;IACI,eAAe,GAAU,cAAc,OAAO,qBAEpD;IAIM,cAAc,GAAU,UAAU,OAAO,EAAE,eAAe,MAAM,EAAE,WAAW,aAAa,EAAE,qBAElG;IAED;;;OAGG;IACI,wBAAwB,GAC3B,UAAU,OAAO,EACjB,eAAe,MAAM,EACrB,WAAW,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,SAAS,GAAG,MAAM,CAAA;KAAE,CAAC,qBAGhF;IAED;;;;;;;;OAQG;IACI,mBAAmB,GAAU,OAAO,MAAM,EAAE,qBAGlD;IAED,8FAA8F;IACvF,mBAAmB,GAAU,OAAO,MAAM,EAAE,qBAElD;IAGD;;;;;;OAMG;IACI,QAAQ,GAAU,eAAe,MAAM,EAAE,oBAAoB,MAAM,EAAE,kBAAkB,MAAM,iCAEnG;IAED;;;;;OAKG;IACI,OAAO,GAAU,eAAe,MAAM,EAAE,oBAAoB,MAAM,qBAExE;CAKJ;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -165,6 +165,13 @@ class SolanaEscrowAdmin {
|
|
|
165
165
|
this.withdraw_batch = (chain_id, token_address, receivers) => __awaiter(this, void 0, void 0, function* () {
|
|
166
166
|
return this.adminUtility.withdraw_batch(chain_id, token_address, receivers, this.signer);
|
|
167
167
|
});
|
|
168
|
+
/**
|
|
169
|
+
* Executes previously-scheduled (timelocked) withdrawals whose delay has elapsed. Amounts and
|
|
170
|
+
* recipients are read from each on-chain commitment, so only request ids + recipients are passed.
|
|
171
|
+
*/
|
|
172
|
+
this.batch_execute_withdrawal = (chain_id, token_address, receivers) => __awaiter(this, void 0, void 0, function* () {
|
|
173
|
+
return this.adminUtility.batch_execute_withdrawal(chain_id, token_address, receivers, this.signer);
|
|
174
|
+
});
|
|
168
175
|
/**
|
|
169
176
|
* Idempotently ensures the batch path's Address Lookup Table exists and covers `mints`.
|
|
170
177
|
* Safe to call on every startup: it discovers an existing table on-chain, extends it when
|
|
@@ -128,6 +128,21 @@ export declare class EscrowAdminUtility {
|
|
|
128
128
|
* @returns string - signature
|
|
129
129
|
*/
|
|
130
130
|
withdraw_batch(chain_id: ChainId, token_address: string, recipients: BatchReceiver[], signer?: Keypair): Promise<string>;
|
|
131
|
+
/**
|
|
132
|
+
* Executes previously-scheduled (timelocked) withdrawals whose delay has elapsed. The amounts
|
|
133
|
+
* and recipient are read from each commitment on-chain, so only the request ids + their
|
|
134
|
+
* commitment/recipient accounts are supplied. Pays out and closes each commitment.
|
|
135
|
+
*
|
|
136
|
+
* Sent as a v0 transaction over the escrow lookup table: a batch's per-request accounts
|
|
137
|
+
* (commitment + recipient [+ ATA]) plus the static config accounts overflow a legacy
|
|
138
|
+
* transaction beyond a handful of requests, so we reuse the same ALT as the withdraw path.
|
|
139
|
+
*/
|
|
140
|
+
batch_execute_withdrawal(chain_id: ChainId, token_address: string, receivers: Array<{
|
|
141
|
+
request_id: number;
|
|
142
|
+
receiver_pubkey: PublicKey | string;
|
|
143
|
+
}>, signer?: Keypair): Promise<string>;
|
|
144
|
+
private batch_execute_withdrawal_sol;
|
|
145
|
+
private batch_execute_withdrawal_spl;
|
|
131
146
|
/** Per-request PDAs the folded batch path expects: receiver timelock override + commitment. */
|
|
132
147
|
private request_pdas;
|
|
133
148
|
/** Matches the program's IDS_PER_PAGE — the replay-bitmap page a request id maps to. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EscrowAdminUtility.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/EscrowAdminUtility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EscrowAdminUtility.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/EscrowAdminUtility.ts"],"names":[],"mappings":"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"}
|
|
@@ -568,6 +568,97 @@ class EscrowAdminUtility {
|
|
|
568
568
|
}
|
|
569
569
|
});
|
|
570
570
|
}
|
|
571
|
+
/**
|
|
572
|
+
* Executes previously-scheduled (timelocked) withdrawals whose delay has elapsed. The amounts
|
|
573
|
+
* and recipient are read from each commitment on-chain, so only the request ids + their
|
|
574
|
+
* commitment/recipient accounts are supplied. Pays out and closes each commitment.
|
|
575
|
+
*
|
|
576
|
+
* Sent as a v0 transaction over the escrow lookup table: a batch's per-request accounts
|
|
577
|
+
* (commitment + recipient [+ ATA]) plus the static config accounts overflow a legacy
|
|
578
|
+
* transaction beyond a handful of requests, so we reuse the same ALT as the withdraw path.
|
|
579
|
+
*/
|
|
580
|
+
batch_execute_withdrawal(chain_id, token_address, receivers, signer) {
|
|
581
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
582
|
+
if (!receivers.length)
|
|
583
|
+
throw new Error("batch_execute_withdrawal: receivers must not be empty");
|
|
584
|
+
const token_pubkey = new web3_js_1.PublicKey(token_address);
|
|
585
|
+
// Provision/reuse the lookup table so larger execute batches fit in a v0 transaction.
|
|
586
|
+
try {
|
|
587
|
+
yield this.ensure_lookup_table([token_address], signer);
|
|
588
|
+
}
|
|
589
|
+
catch (_a) {
|
|
590
|
+
this.lookupTableAddress = undefined;
|
|
591
|
+
this.lookupTableCache = undefined;
|
|
592
|
+
}
|
|
593
|
+
return token_pubkey.equals(web3_js_1.SystemProgram.programId)
|
|
594
|
+
? this.batch_execute_withdrawal_sol(chain_id, receivers, signer)
|
|
595
|
+
: this.batch_execute_withdrawal_spl(chain_id, token_pubkey, receivers, signer);
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
batch_execute_withdrawal_sol(_chainId, receivers, signer) {
|
|
599
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
600
|
+
const escrowConfigPda = EscrowService.findEscrowConfigPda(this.program.programId);
|
|
601
|
+
const vaultAuthority = EscrowService.findVaultAuthorityPda(this.program.programId);
|
|
602
|
+
const requestIds = receivers.map(r => new anchor.BN(r.request_id));
|
|
603
|
+
// Per request: [commitment, recipient]
|
|
604
|
+
const remaining = receivers.flatMap(r => {
|
|
605
|
+
const wallet = new web3_js_1.PublicKey(r.receiver_pubkey);
|
|
606
|
+
const { commitment } = this.request_pdas(wallet, r.request_id);
|
|
607
|
+
return [
|
|
608
|
+
{ isSigner: false, pubkey: commitment, isWritable: true },
|
|
609
|
+
{ isSigner: false, pubkey: wallet, isWritable: true },
|
|
610
|
+
];
|
|
611
|
+
});
|
|
612
|
+
const ix = yield this.program.methods
|
|
613
|
+
.batchExecuteWithdrawalSol(requestIds)
|
|
614
|
+
.accountsPartial({
|
|
615
|
+
escrowConfig: escrowConfigPda,
|
|
616
|
+
vaultAuthority,
|
|
617
|
+
caller: this.provider.wallet.publicKey,
|
|
618
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
619
|
+
})
|
|
620
|
+
.remainingAccounts(remaining)
|
|
621
|
+
.instruction();
|
|
622
|
+
const signature = yield this.sendTransaction([ix], signer);
|
|
623
|
+
yield this.waitForConfirmation(signature, "confirmed");
|
|
624
|
+
return signature;
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
batch_execute_withdrawal_spl(_chainId, mint, receivers, signer) {
|
|
628
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
629
|
+
const escrowConfigPda = EscrowService.findEscrowConfigPda(this.program.programId);
|
|
630
|
+
const vaultAuthority = EscrowService.findVaultAuthorityPda(this.program.programId);
|
|
631
|
+
const vaultTokenAccount = EscrowService.findVaultAta(mint, this.program.programId);
|
|
632
|
+
const requestIds = receivers.map(r => new anchor.BN(r.request_id));
|
|
633
|
+
// Per request: [commitment, recipient, recipient_token_account]
|
|
634
|
+
const remaining = receivers.flatMap(r => {
|
|
635
|
+
const wallet = new web3_js_1.PublicKey(r.receiver_pubkey);
|
|
636
|
+
const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, wallet);
|
|
637
|
+
const { commitment } = this.request_pdas(wallet, r.request_id);
|
|
638
|
+
return [
|
|
639
|
+
{ isSigner: false, pubkey: commitment, isWritable: true },
|
|
640
|
+
{ isSigner: false, pubkey: wallet, isWritable: true },
|
|
641
|
+
{ isSigner: false, pubkey: ata, isWritable: true },
|
|
642
|
+
];
|
|
643
|
+
});
|
|
644
|
+
const ix = yield this.program.methods
|
|
645
|
+
.batchExecuteWithdrawalSpl(requestIds)
|
|
646
|
+
.accountsPartial({
|
|
647
|
+
escrowConfig: escrowConfigPda,
|
|
648
|
+
mint,
|
|
649
|
+
vaultAuthority,
|
|
650
|
+
vaultTokenAccount,
|
|
651
|
+
caller: this.provider.wallet.publicKey,
|
|
652
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
653
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
654
|
+
})
|
|
655
|
+
.remainingAccounts(remaining)
|
|
656
|
+
.instruction();
|
|
657
|
+
const signature = yield this.sendTransaction([ix], signer);
|
|
658
|
+
yield this.waitForConfirmation(signature, "confirmed");
|
|
659
|
+
return signature;
|
|
660
|
+
});
|
|
661
|
+
}
|
|
571
662
|
/** Per-request PDAs the folded batch path expects: receiver timelock override + commitment. */
|
|
572
663
|
request_pdas(receiver, request_id) {
|
|
573
664
|
const ridBuf = Buffer.alloc(8);
|
package/package.json
CHANGED