@magicblock-labs/ephemeral-rollups-sdk 0.14.3 → 0.15.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/lib/__test__/instructions.test.js +118 -21
- package/lib/__test__/instructions.test.js.map +1 -1
- package/lib/constants.d.ts +1 -0
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +2 -1
- package/lib/constants.js.map +1 -1
- package/lib/instructions/ephemeral-spl-token-program/ephemeralAta.d.ts +15 -13
- package/lib/instructions/ephemeral-spl-token-program/ephemeralAta.d.ts.map +1 -1
- package/lib/instructions/ephemeral-spl-token-program/ephemeralAta.js +101 -81
- package/lib/instructions/ephemeral-spl-token-program/ephemeralAta.js.map +1 -1
- package/lib/instructions/ephemeral-spl-token-program/transferQueue.d.ts +4 -2
- package/lib/instructions/ephemeral-spl-token-program/transferQueue.d.ts.map +1 -1
- package/lib/instructions/ephemeral-spl-token-program/transferQueue.js +45 -3
- package/lib/instructions/ephemeral-spl-token-program/transferQueue.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,26 +15,26 @@ export declare function deriveEphemeralAta(owner: PublicKey, mint: PublicKey): [
|
|
|
15
15
|
export declare function deriveVault(mint: PublicKey): [PublicKey, number];
|
|
16
16
|
export declare function deriveRentPda(): [PublicKey, number];
|
|
17
17
|
export declare function deriveLamportsPda(payer: PublicKey, destination: PublicKey, salt: Uint8Array): [PublicKey, number];
|
|
18
|
-
export declare function deriveVaultAta(mint: PublicKey, vault: PublicKey): PublicKey;
|
|
18
|
+
export declare function deriveVaultAta(mint: PublicKey, vault: PublicKey, tokenProgram?: PublicKey): PublicKey;
|
|
19
19
|
export declare function deriveShuttleEphemeralAta(owner: PublicKey, mint: PublicKey, shuttleId: number): [PublicKey, number];
|
|
20
20
|
export declare function deriveShuttleAta(shuttleEphemeralAta: PublicKey, mint: PublicKey): [PublicKey, number];
|
|
21
|
-
export declare function deriveShuttleWalletAta(mint: PublicKey, shuttleEphemeralAta: PublicKey): PublicKey;
|
|
21
|
+
export declare function deriveShuttleWalletAta(mint: PublicKey, shuttleEphemeralAta: PublicKey, tokenProgram?: PublicKey): PublicKey;
|
|
22
22
|
export declare function initEphemeralAtaIx(ephemeralAta: PublicKey, owner: PublicKey, mint: PublicKey, payer: PublicKey): TransactionInstruction;
|
|
23
|
-
export declare function initVaultAtaIx(payer: PublicKey, vaultAta: PublicKey, vault: PublicKey, mint: PublicKey): TransactionInstruction;
|
|
24
|
-
export declare function initVaultIx(vault: PublicKey, mint: PublicKey, payer: PublicKey): TransactionInstruction;
|
|
23
|
+
export declare function initVaultAtaIx(payer: PublicKey, vaultAta: PublicKey, vault: PublicKey, mint: PublicKey, tokenProgram?: PublicKey): TransactionInstruction;
|
|
24
|
+
export declare function initVaultIx(vault: PublicKey, mint: PublicKey, payer: PublicKey, tokenProgram?: PublicKey): TransactionInstruction;
|
|
25
25
|
export declare function initRentPdaIx(payer: PublicKey, rentPda: PublicKey): TransactionInstruction;
|
|
26
|
-
export declare function transferToVaultIx(ephemeralAta: PublicKey, vault: PublicKey, mint: PublicKey, sourceAta: PublicKey, vaultAta: PublicKey, owner: PublicKey, amount: bigint): TransactionInstruction;
|
|
27
|
-
export declare function depositSplTokensIx(ephemeralAta: PublicKey, vault: PublicKey, mint: PublicKey, sourceAta: PublicKey, vaultAta: PublicKey, owner: PublicKey, amount: bigint): TransactionInstruction;
|
|
26
|
+
export declare function transferToVaultIx(ephemeralAta: PublicKey, vault: PublicKey, mint: PublicKey, sourceAta: PublicKey, vaultAta: PublicKey, owner: PublicKey, amount: bigint, tokenProgram?: PublicKey): TransactionInstruction;
|
|
27
|
+
export declare function depositSplTokensIx(ephemeralAta: PublicKey, vault: PublicKey, mint: PublicKey, sourceAta: PublicKey, vaultAta: PublicKey, owner: PublicKey, amount: bigint, tokenProgram?: PublicKey): TransactionInstruction;
|
|
28
28
|
export declare function delegateEphemeralAtaIx(payer: PublicKey, ephemeralAta: PublicKey, validator?: PublicKey): TransactionInstruction;
|
|
29
|
-
export declare function initShuttleEphemeralAtaIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, shuttleWalletAta: PublicKey, owner: PublicKey, mint: PublicKey, shuttleId: number): TransactionInstruction;
|
|
29
|
+
export declare function initShuttleEphemeralAtaIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, shuttleWalletAta: PublicKey, owner: PublicKey, mint: PublicKey, shuttleId: number, tokenProgram?: PublicKey): TransactionInstruction;
|
|
30
30
|
export declare function delegateShuttleEphemeralAtaIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, validator?: PublicKey): TransactionInstruction;
|
|
31
|
-
export declare function setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, owner: PublicKey, sourceAta: PublicKey, destinationAta: PublicKey, shuttleWalletAta: PublicKey, mint: PublicKey, shuttleId: number, amount: bigint, validator?: PublicKey): TransactionInstruction;
|
|
32
|
-
export declare function depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, owner: PublicKey, sourceAta: PublicKey, destinationOwner: PublicKey, shuttleWalletAta: PublicKey, mint: PublicKey, shuttleId: number, amount: bigint, exactOut: boolean, minDelayMs: bigint, maxDelayMs: bigint, split: number, validator?: PublicKey, clientRefId?: bigint): TransactionInstruction;
|
|
33
|
-
export declare function withdrawThroughDelegatedShuttleWithMergeIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, owner: PublicKey, ownerAta: PublicKey, shuttleWalletAta: PublicKey, mint: PublicKey, shuttleId: number, amount: bigint, validator?: PublicKey): TransactionInstruction;
|
|
31
|
+
export declare function setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, owner: PublicKey, sourceAta: PublicKey, destinationAta: PublicKey, shuttleWalletAta: PublicKey, mint: PublicKey, shuttleId: number, amount: bigint, validator?: PublicKey, tokenProgram?: PublicKey): TransactionInstruction;
|
|
32
|
+
export declare function depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, owner: PublicKey, sourceAta: PublicKey, destinationOwner: PublicKey, shuttleWalletAta: PublicKey, mint: PublicKey, shuttleId: number, amount: bigint, exactOut: boolean, minDelayMs: bigint, maxDelayMs: bigint, split: number, validator?: PublicKey, clientRefId?: bigint, tokenProgram?: PublicKey): TransactionInstruction;
|
|
33
|
+
export declare function withdrawThroughDelegatedShuttleWithMergeIx(payer: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, owner: PublicKey, ownerAta: PublicKey, shuttleWalletAta: PublicKey, mint: PublicKey, shuttleId: number, amount: bigint, validator?: PublicKey, tokenProgram?: PublicKey): TransactionInstruction;
|
|
34
34
|
export declare function lamportsDelegatedTransferIx(payer: PublicKey, destination: PublicKey, amount: bigint, salt: Uint8Array): TransactionInstruction;
|
|
35
|
-
export declare function mergeShuttleIntoAtaIx(owner: PublicKey, destinationAta: PublicKey, shuttleEphemeralAta: PublicKey, shuttleWalletAta: PublicKey, mint: PublicKey): TransactionInstruction;
|
|
36
|
-
export declare function undelegateAndCloseShuttleEphemeralAtaIx(payer: PublicKey, rentReimbursement: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, shuttleWalletAta: PublicKey, destinationAta: PublicKey, escrowIndex?: number): TransactionInstruction;
|
|
37
|
-
export declare function withdrawSplIx(owner: PublicKey, mint: PublicKey, amount: bigint): TransactionInstruction;
|
|
35
|
+
export declare function mergeShuttleIntoAtaIx(owner: PublicKey, destinationAta: PublicKey, shuttleEphemeralAta: PublicKey, shuttleWalletAta: PublicKey, mint: PublicKey, tokenProgram?: PublicKey): TransactionInstruction;
|
|
36
|
+
export declare function undelegateAndCloseShuttleEphemeralAtaIx(payer: PublicKey, rentReimbursement: PublicKey, shuttleEphemeralAta: PublicKey, shuttleAta: PublicKey, shuttleWalletAta: PublicKey, destinationAta: PublicKey, escrowIndex?: number, tokenProgram?: PublicKey): TransactionInstruction;
|
|
37
|
+
export declare function withdrawSplIx(owner: PublicKey, mint: PublicKey, amount: bigint, tokenProgram?: PublicKey): TransactionInstruction;
|
|
38
38
|
export declare function undelegateIx(owner: PublicKey, mint: PublicKey): TransactionInstruction;
|
|
39
39
|
export declare function createEataPermissionIx(ephemeralAta: PublicKey, payer: PublicKey, flags?: number): TransactionInstruction;
|
|
40
40
|
export declare function resetEataPermissionIx(ephemeralAta: PublicKey, payer: PublicKey, flags?: number): TransactionInstruction;
|
|
@@ -43,6 +43,7 @@ export declare function undelegateEataPermissionIx(owner: PublicKey, ephemeralAt
|
|
|
43
43
|
export interface DelegateSplOptions {
|
|
44
44
|
payer?: PublicKey;
|
|
45
45
|
validator?: PublicKey;
|
|
46
|
+
tokenProgram?: PublicKey;
|
|
46
47
|
initIfMissing?: boolean;
|
|
47
48
|
initVaultIfMissing?: boolean;
|
|
48
49
|
initAtasIfMissing?: boolean;
|
|
@@ -76,6 +77,7 @@ export interface TransferSplOptions {
|
|
|
76
77
|
toBalance: TransferBalance;
|
|
77
78
|
payer?: PublicKey;
|
|
78
79
|
validator?: PublicKey;
|
|
80
|
+
tokenProgram?: PublicKey;
|
|
79
81
|
initIfMissing?: boolean;
|
|
80
82
|
initAtasIfMissing?: boolean;
|
|
81
83
|
initVaultIfMissing?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ephemeralAta.d.ts","sourceRoot":"","sources":["../../../src/instructions/ephemeral-spl-token-program/ephemeralAta.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,sBAAsB,EAEtB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AA6JzB,MAAM,WAAW,YAAY;IAE3B,KAAK,EAAE,SAAS,CAAC;IAEjB,IAAI,EAAE,SAAS,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY,CAY1E;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAM7D;AAKD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,SAAS,CAAC;CACjB;AAOD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAMxE;AAOD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAI5D;AAYD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,GACd,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAOD,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAKhE;AAMD,wBAAgB,aAAa,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAKnD;AASD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,SAAS,EACtB,IAAI,EAAE,UAAU,GACf,CAAC,SAAS,EAAE,MAAM,CAAC,CAcrB;AAQD,wBAAgB,cAAc,
|
|
1
|
+
{"version":3,"file":"ephemeralAta.d.ts","sourceRoot":"","sources":["../../../src/instructions/ephemeral-spl-token-program/ephemeralAta.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,sBAAsB,EAEtB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AA6JzB,MAAM,WAAW,YAAY;IAE3B,KAAK,EAAE,SAAS,CAAC;IAEjB,IAAI,EAAE,SAAS,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY,CAY1E;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAM7D;AAKD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,SAAS,CAAC;CACjB;AAOD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAMxE;AAOD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAI5D;AAYD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,GACd,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAOD,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAKhE;AAMD,wBAAgB,aAAa,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAKnD;AASD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,SAAS,EACtB,IAAI,EAAE,UAAU,GACf,CAAC,SAAS,EAAE,MAAM,CAAC,CAcrB;AAQD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,EAChB,YAAY,GAAE,SAA4B,GACzC,SAAS,CAEX;AASD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,MAAM,GAChB,CAAC,SAAS,EAAE,MAAM,CAAC,CAgBrB;AAQD,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,SAAS,EAC9B,IAAI,EAAE,SAAS,GACd,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAQD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,EACf,mBAAmB,EAAE,SAAS,EAC9B,YAAY,GAAE,SAA4B,GACzC,SAAS,CAOX;AAcD,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,SAAS,EACvB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,GACf,sBAAsB,CAYxB;AAUD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAQxB;AASD,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,EAChB,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAqBxB;AAQD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,GACjB,sBAAsB,CAUxB;AAaD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,SAAS,EACvB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAcxB;AAMD,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,SAAS,EACvB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAWxB;AAUD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,SAAS,EACvB,SAAS,CAAC,EAAE,SAAS,GACpB,sBAAsB,CAqCxB;AAaD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,mBAAmB,EAAE,SAAS,EAC9B,UAAU,EAAE,SAAS,EACrB,gBAAgB,EAAE,SAAS,EAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAgCxB;AAWD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,SAAS,EAChB,mBAAmB,EAAE,SAAS,EAC9B,UAAU,EAAE,SAAS,EACrB,SAAS,CAAC,EAAE,SAAS,GACpB,sBAAsB,CAuCxB;AAmBD,wBAAgB,8CAA8C,CAC5D,KAAK,EAAE,SAAS,EAChB,mBAAmB,EAAE,SAAS,EAC9B,UAAU,EAAE,SAAS,EACrB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,SAAS,EACzB,gBAAgB,EAAE,SAAS,EAC3B,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAqExB;AAQD,wBAAgB,kEAAkE,CAChF,KAAK,EAAE,SAAS,EAChB,mBAAmB,EAAE,SAAS,EAC9B,UAAU,EAAE,SAAS,EACrB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,SAAS,EAC3B,gBAAgB,EAAE,SAAS,EAC3B,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,SAAS,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAuGxB;AAMD,wBAAgB,0CAA0C,CACxD,KAAK,EAAE,SAAS,EAChB,mBAAmB,EAAE,SAAS,EAC9B,UAAU,EAAE,SAAS,EACrB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,SAAS,EACnB,gBAAgB,EAAE,SAAS,EAC3B,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAkExB;AAWD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,SAAS,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GACf,sBAAsB,CA0DxB;AAWD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,SAAS,EACzB,mBAAmB,EAAE,SAAS,EAC9B,gBAAgB,EAAE,SAAS,EAC3B,IAAI,EAAE,SAAS,EACf,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAaxB;AAYD,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,SAAS,EAC5B,mBAAmB,EAAE,SAAS,EAC9B,UAAU,EAAE,SAAS,EACrB,gBAAgB,EAAE,SAAS,EAC3B,cAAc,EAAE,SAAS,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAqBxB;AASD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,SAA4B,GACzC,sBAAsB,CAyBxB;AAQD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,GACd,sBAAsB,CAmCxB;AAUD,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,SAAS,EACvB,KAAK,EAAE,SAAS,EAChB,KAAK,GAAE,MAAU,GAChB,sBAAsB,CAcxB;AAUD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,SAAS,EACvB,KAAK,EAAE,SAAS,EAChB,KAAK,GAAE,MAAU,GAChB,sBAAsB,CAaxB;AASD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,sBAAsB,CAkCxB;AAQD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,SAAS,GACtB,sBAAsB,CAexB;AAMD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qCACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,oBAAoB,CAAC;CAAG;AAEvE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C;AA8LD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAMnC;AAED,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,qCAAqC,GAC3C,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA2GnC;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAmRnC;AAwED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA4BnC"}
|
|
@@ -165,8 +165,8 @@ function deriveLamportsPda(payer, destination, salt) {
|
|
|
165
165
|
Buffer.from(salt),
|
|
166
166
|
], constants_js_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID);
|
|
167
167
|
}
|
|
168
|
-
function deriveVaultAta(mint, vault) {
|
|
169
|
-
return getAssociatedTokenAddressSync(mint, vault, true);
|
|
168
|
+
function deriveVaultAta(mint, vault, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
169
|
+
return getAssociatedTokenAddressSync(mint, vault, true, tokenProgram);
|
|
170
170
|
}
|
|
171
171
|
function deriveShuttleEphemeralAta(owner, mint, shuttleId) {
|
|
172
172
|
if (!Number.isInteger(shuttleId) ||
|
|
@@ -181,8 +181,8 @@ function deriveShuttleEphemeralAta(owner, mint, shuttleId) {
|
|
|
181
181
|
function deriveShuttleAta(shuttleEphemeralAta, mint) {
|
|
182
182
|
return web3_js_1.PublicKey.findProgramAddressSync([shuttleEphemeralAta.toBuffer(), mint.toBuffer()], constants_js_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID);
|
|
183
183
|
}
|
|
184
|
-
function deriveShuttleWalletAta(mint, shuttleEphemeralAta) {
|
|
185
|
-
return getAssociatedTokenAddressSync(mint, shuttleEphemeralAta, true);
|
|
184
|
+
function deriveShuttleWalletAta(mint, shuttleEphemeralAta, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
185
|
+
return getAssociatedTokenAddressSync(mint, shuttleEphemeralAta, true, tokenProgram);
|
|
186
186
|
}
|
|
187
187
|
function initEphemeralAtaIx(ephemeralAta, owner, mint, payer) {
|
|
188
188
|
return new web3_js_1.TransactionInstruction({
|
|
@@ -197,12 +197,12 @@ function initEphemeralAtaIx(ephemeralAta, owner, mint, payer) {
|
|
|
197
197
|
data: Buffer.from([0]),
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
|
-
function initVaultAtaIx(payer, vaultAta, vault, mint) {
|
|
201
|
-
return createAssociatedTokenAccountIdempotentInstruction(payer, vaultAta, vault, mint);
|
|
200
|
+
function initVaultAtaIx(payer, vaultAta, vault, mint, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
201
|
+
return createAssociatedTokenAccountIdempotentInstruction(payer, vaultAta, vault, mint, tokenProgram);
|
|
202
202
|
}
|
|
203
|
-
function initVaultIx(vault, mint, payer) {
|
|
203
|
+
function initVaultIx(vault, mint, payer, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
204
204
|
const [vaultEphemeralAta] = deriveEphemeralAta(vault, mint);
|
|
205
|
-
const vaultAta = deriveVaultAta(mint, vault);
|
|
205
|
+
const vaultAta = deriveVaultAta(mint, vault, tokenProgram);
|
|
206
206
|
return new web3_js_1.TransactionInstruction({
|
|
207
207
|
programId: constants_js_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID,
|
|
208
208
|
keys: [
|
|
@@ -211,7 +211,7 @@ function initVaultIx(vault, mint, payer) {
|
|
|
211
211
|
{ pubkey: mint, isSigner: false, isWritable: false },
|
|
212
212
|
{ pubkey: vaultEphemeralAta, isSigner: false, isWritable: true },
|
|
213
213
|
{ pubkey: vaultAta, isSigner: false, isWritable: true },
|
|
214
|
-
{ pubkey:
|
|
214
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
215
215
|
{
|
|
216
216
|
pubkey: constants_js_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
217
217
|
isSigner: false,
|
|
@@ -233,7 +233,7 @@ function initRentPdaIx(payer, rentPda) {
|
|
|
233
233
|
data: Buffer.from([23]),
|
|
234
234
|
});
|
|
235
235
|
}
|
|
236
|
-
function transferToVaultIx(ephemeralAta, vault, mint, sourceAta, vaultAta, owner, amount) {
|
|
236
|
+
function transferToVaultIx(ephemeralAta, vault, mint, sourceAta, vaultAta, owner, amount, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
237
237
|
return new web3_js_1.TransactionInstruction({
|
|
238
238
|
programId: constants_js_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID,
|
|
239
239
|
keys: [
|
|
@@ -243,13 +243,13 @@ function transferToVaultIx(ephemeralAta, vault, mint, sourceAta, vaultAta, owner
|
|
|
243
243
|
{ pubkey: sourceAta, isSigner: false, isWritable: true },
|
|
244
244
|
{ pubkey: vaultAta, isSigner: false, isWritable: true },
|
|
245
245
|
{ pubkey: owner, isSigner: true, isWritable: false },
|
|
246
|
-
{ pubkey:
|
|
246
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
247
247
|
],
|
|
248
248
|
data: encodeAmountInstructionData(2, amount),
|
|
249
249
|
});
|
|
250
250
|
}
|
|
251
|
-
function depositSplTokensIx(ephemeralAta, vault, mint, sourceAta, vaultAta, owner, amount) {
|
|
252
|
-
return transferToVaultIx(ephemeralAta, vault, mint, sourceAta, vaultAta, owner, amount);
|
|
251
|
+
function depositSplTokensIx(ephemeralAta, vault, mint, sourceAta, vaultAta, owner, amount, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
252
|
+
return transferToVaultIx(ephemeralAta, vault, mint, sourceAta, vaultAta, owner, amount, tokenProgram);
|
|
253
253
|
}
|
|
254
254
|
function delegateEphemeralAtaIx(payer, ephemeralAta, validator) {
|
|
255
255
|
const data = validator
|
|
@@ -286,7 +286,7 @@ function delegateEphemeralAtaIx(payer, ephemeralAta, validator) {
|
|
|
286
286
|
data,
|
|
287
287
|
});
|
|
288
288
|
}
|
|
289
|
-
function initShuttleEphemeralAtaIx(payer, shuttleEphemeralAta, shuttleAta, shuttleWalletAta, owner, mint, shuttleId) {
|
|
289
|
+
function initShuttleEphemeralAtaIx(payer, shuttleEphemeralAta, shuttleAta, shuttleWalletAta, owner, mint, shuttleId, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
290
290
|
if (!Number.isInteger(shuttleId) ||
|
|
291
291
|
shuttleId < 0 ||
|
|
292
292
|
shuttleId > 4294967295) {
|
|
@@ -304,7 +304,7 @@ function initShuttleEphemeralAtaIx(payer, shuttleEphemeralAta, shuttleAta, shutt
|
|
|
304
304
|
{ pubkey: shuttleWalletAta, isSigner: false, isWritable: true },
|
|
305
305
|
{ pubkey: owner, isSigner: false, isWritable: false },
|
|
306
306
|
{ pubkey: mint, isSigner: false, isWritable: false },
|
|
307
|
-
{ pubkey:
|
|
307
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
308
308
|
{
|
|
309
309
|
pubkey: constants_js_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
310
310
|
isSigner: false,
|
|
@@ -351,7 +351,7 @@ function delegateShuttleEphemeralAtaIx(payer, shuttleEphemeralAta, shuttleAta, v
|
|
|
351
351
|
data,
|
|
352
352
|
});
|
|
353
353
|
}
|
|
354
|
-
function setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, owner, sourceAta, destinationAta, shuttleWalletAta, mint, shuttleId, amount, validator) {
|
|
354
|
+
function setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, owner, sourceAta, destinationAta, shuttleWalletAta, mint, shuttleId, amount, validator, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
355
355
|
if (!Number.isInteger(shuttleId) ||
|
|
356
356
|
shuttleId < 0 ||
|
|
357
357
|
shuttleId > 4294967295) {
|
|
@@ -359,7 +359,7 @@ function setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralA
|
|
|
359
359
|
}
|
|
360
360
|
const [rentPda] = deriveRentPda();
|
|
361
361
|
const [vault] = deriveVault(mint);
|
|
362
|
-
const vaultAta = deriveVaultAta(mint, vault);
|
|
362
|
+
const vaultAta = deriveVaultAta(mint, vault, tokenProgram);
|
|
363
363
|
const data = validator ? Buffer.alloc(45) : Buffer.alloc(13);
|
|
364
364
|
data[0] = 24;
|
|
365
365
|
data.writeUInt32LE(shuttleId, 1);
|
|
@@ -405,7 +405,7 @@ function setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralA
|
|
|
405
405
|
{ pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
|
|
406
406
|
{ pubkey: destinationAta, isSigner: false, isWritable: true },
|
|
407
407
|
{ pubkey: mint, isSigner: false, isWritable: false },
|
|
408
|
-
{ pubkey:
|
|
408
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
409
409
|
{ pubkey: vault, isSigner: false, isWritable: false },
|
|
410
410
|
{ pubkey: sourceAta, isSigner: false, isWritable: true },
|
|
411
411
|
{ pubkey: vaultAta, isSigner: false, isWritable: true },
|
|
@@ -413,7 +413,7 @@ function setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralA
|
|
|
413
413
|
data,
|
|
414
414
|
});
|
|
415
415
|
}
|
|
416
|
-
function depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(payer, shuttleEphemeralAta, shuttleAta, owner, sourceAta, destinationOwner, shuttleWalletAta, mint, shuttleId, amount, exactOut, minDelayMs, maxDelayMs, split, validator, clientRefId) {
|
|
416
|
+
function depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(payer, shuttleEphemeralAta, shuttleAta, owner, sourceAta, destinationOwner, shuttleWalletAta, mint, shuttleId, amount, exactOut, minDelayMs, maxDelayMs, split, validator, clientRefId, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
417
417
|
if (!Number.isInteger(shuttleId) ||
|
|
418
418
|
shuttleId < 0 ||
|
|
419
419
|
shuttleId > 4294967295) {
|
|
@@ -436,7 +436,7 @@ function depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(paye
|
|
|
436
436
|
}
|
|
437
437
|
const [rentPda] = deriveRentPda();
|
|
438
438
|
const [vault] = deriveVault(mint);
|
|
439
|
-
const vaultAta = deriveVaultAta(mint, vault);
|
|
439
|
+
const vaultAta = deriveVaultAta(mint, vault, tokenProgram);
|
|
440
440
|
const [queue] = (0, transferQueue_js_1.deriveTransferQueue)(mint, validator);
|
|
441
441
|
const encryptedDestination = (0, crypto_js_1.encryptWithEd25519Recipient)(destinationOwner.toBytes(), validator);
|
|
442
442
|
if (encryptedDestination.length !== 32 + crypto_js_1.ENCRYPTION_OVERHEAD) {
|
|
@@ -490,7 +490,7 @@ function depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(paye
|
|
|
490
490
|
},
|
|
491
491
|
{ pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
|
|
492
492
|
{ pubkey: mint, isSigner: false, isWritable: false },
|
|
493
|
-
{ pubkey:
|
|
493
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
494
494
|
{ pubkey: vault, isSigner: false, isWritable: false },
|
|
495
495
|
{ pubkey: sourceAta, isSigner: false, isWritable: true },
|
|
496
496
|
{ pubkey: vaultAta, isSigner: false, isWritable: true },
|
|
@@ -499,7 +499,7 @@ function depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(paye
|
|
|
499
499
|
data,
|
|
500
500
|
});
|
|
501
501
|
}
|
|
502
|
-
function withdrawThroughDelegatedShuttleWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, owner, ownerAta, shuttleWalletAta, mint, shuttleId, amount, validator) {
|
|
502
|
+
function withdrawThroughDelegatedShuttleWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, owner, ownerAta, shuttleWalletAta, mint, shuttleId, amount, validator, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
503
503
|
if (!Number.isInteger(shuttleId) ||
|
|
504
504
|
shuttleId < 0 ||
|
|
505
505
|
shuttleId > 4294967295) {
|
|
@@ -554,7 +554,7 @@ function withdrawThroughDelegatedShuttleWithMergeIx(payer, shuttleEphemeralAta,
|
|
|
554
554
|
{ pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
|
|
555
555
|
{ pubkey: ownerAta, isSigner: false, isWritable: true },
|
|
556
556
|
{ pubkey: mint, isSigner: false, isWritable: false },
|
|
557
|
-
{ pubkey:
|
|
557
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
558
558
|
],
|
|
559
559
|
data,
|
|
560
560
|
});
|
|
@@ -611,7 +611,7 @@ function lamportsDelegatedTransferIx(payer, destination, amount, salt) {
|
|
|
611
611
|
data,
|
|
612
612
|
});
|
|
613
613
|
}
|
|
614
|
-
function mergeShuttleIntoAtaIx(owner, destinationAta, shuttleEphemeralAta, shuttleWalletAta, mint) {
|
|
614
|
+
function mergeShuttleIntoAtaIx(owner, destinationAta, shuttleEphemeralAta, shuttleWalletAta, mint, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
615
615
|
return new web3_js_1.TransactionInstruction({
|
|
616
616
|
programId: constants_js_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID,
|
|
617
617
|
keys: [
|
|
@@ -620,12 +620,12 @@ function mergeShuttleIntoAtaIx(owner, destinationAta, shuttleEphemeralAta, shutt
|
|
|
620
620
|
{ pubkey: shuttleEphemeralAta, isSigner: false, isWritable: false },
|
|
621
621
|
{ pubkey: shuttleWalletAta, isSigner: false, isWritable: true },
|
|
622
622
|
{ pubkey: mint, isSigner: false, isWritable: false },
|
|
623
|
-
{ pubkey:
|
|
623
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
624
624
|
],
|
|
625
625
|
data: Buffer.from([15]),
|
|
626
626
|
});
|
|
627
627
|
}
|
|
628
|
-
function undelegateAndCloseShuttleEphemeralAtaIx(payer, rentReimbursement, shuttleEphemeralAta, shuttleAta, shuttleWalletAta, destinationAta, escrowIndex) {
|
|
628
|
+
function undelegateAndCloseShuttleEphemeralAtaIx(payer, rentReimbursement, shuttleEphemeralAta, shuttleAta, shuttleWalletAta, destinationAta, escrowIndex, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
629
629
|
const data = escrowIndex === undefined
|
|
630
630
|
? Buffer.from([14])
|
|
631
631
|
: Buffer.from([14, escrowIndex]);
|
|
@@ -638,18 +638,18 @@ function undelegateAndCloseShuttleEphemeralAtaIx(payer, rentReimbursement, shutt
|
|
|
638
638
|
{ pubkey: shuttleAta, isSigner: false, isWritable: false },
|
|
639
639
|
{ pubkey: shuttleWalletAta, isSigner: false, isWritable: true },
|
|
640
640
|
{ pubkey: destinationAta, isSigner: false, isWritable: true },
|
|
641
|
-
{ pubkey:
|
|
641
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
642
642
|
{ pubkey: constants_js_1.MAGIC_CONTEXT_ID, isSigner: false, isWritable: true },
|
|
643
643
|
{ pubkey: constants_js_1.MAGIC_PROGRAM_ID, isSigner: false, isWritable: false },
|
|
644
644
|
],
|
|
645
645
|
data,
|
|
646
646
|
});
|
|
647
647
|
}
|
|
648
|
-
function withdrawSplIx(owner, mint, amount) {
|
|
648
|
+
function withdrawSplIx(owner, mint, amount, tokenProgram = constants_js_1.TOKEN_PROGRAM_ID) {
|
|
649
649
|
const [ephemeralAta] = deriveEphemeralAta(owner, mint);
|
|
650
650
|
const [vault] = deriveVault(mint);
|
|
651
|
-
const vaultAta = deriveVaultAta(mint, vault);
|
|
652
|
-
const userDestAta = getAssociatedTokenAddressSync(mint, owner);
|
|
651
|
+
const vaultAta = deriveVaultAta(mint, vault, tokenProgram);
|
|
652
|
+
const userDestAta = getAssociatedTokenAddressSync(mint, owner, false, tokenProgram);
|
|
653
653
|
return new web3_js_1.TransactionInstruction({
|
|
654
654
|
programId: constants_js_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID,
|
|
655
655
|
keys: [
|
|
@@ -659,7 +659,7 @@ function withdrawSplIx(owner, mint, amount) {
|
|
|
659
659
|
{ pubkey: mint, isSigner: false, isWritable: false },
|
|
660
660
|
{ pubkey: vaultAta, isSigner: false, isWritable: true },
|
|
661
661
|
{ pubkey: userDestAta, isSigner: false, isWritable: true },
|
|
662
|
-
{ pubkey:
|
|
662
|
+
{ pubkey: tokenProgram, isSigner: false, isWritable: false },
|
|
663
663
|
],
|
|
664
664
|
data: encodeAmountInstructionData(3, amount),
|
|
665
665
|
});
|
|
@@ -784,6 +784,7 @@ function randomShuttleId() {
|
|
|
784
784
|
async function buildDelegateSplInstructions(owner, mint, amount, opts) {
|
|
785
785
|
const payer = opts?.payer ?? owner;
|
|
786
786
|
const validator = opts?.validator;
|
|
787
|
+
const tokenProgram = opts?.tokenProgram ?? constants_js_1.TOKEN_PROGRAM_ID;
|
|
787
788
|
const initIfMissing = opts?.initIfMissing ?? true;
|
|
788
789
|
const initVaultIfMissing = opts?.initVaultIfMissing ?? initIfMissing;
|
|
789
790
|
const isPrivate = opts?.private ?? false;
|
|
@@ -791,15 +792,15 @@ async function buildDelegateSplInstructions(owner, mint, amount, opts) {
|
|
|
791
792
|
const [ephemeralAta] = deriveEphemeralAta(owner, mint);
|
|
792
793
|
const [vault] = deriveVault(mint);
|
|
793
794
|
const [vaultEphemeralAta] = deriveEphemeralAta(vault, mint);
|
|
794
|
-
const vaultAta = deriveVaultAta(mint, vault);
|
|
795
|
-
const ownerAta = getAssociatedTokenAddressSync(mint, owner);
|
|
795
|
+
const vaultAta = deriveVaultAta(mint, vault, tokenProgram);
|
|
796
|
+
const ownerAta = getAssociatedTokenAddressSync(mint, owner, false, tokenProgram);
|
|
796
797
|
if (initIfMissing) {
|
|
797
798
|
instructions.push(initEphemeralAtaIx(ephemeralAta, owner, mint, payer));
|
|
798
799
|
}
|
|
799
800
|
if (initVaultIfMissing) {
|
|
800
|
-
instructions.push(initVaultIx(vault, mint, payer), initVaultAtaIx(payer, vaultAta, vault, mint), delegateEphemeralAtaIx(payer, vaultEphemeralAta, validator));
|
|
801
|
+
instructions.push(initVaultIx(vault, mint, payer, tokenProgram), initVaultAtaIx(payer, vaultAta, vault, mint, tokenProgram), delegateEphemeralAtaIx(payer, vaultEphemeralAta, validator));
|
|
801
802
|
}
|
|
802
|
-
instructions.push(transferToVaultIx(ephemeralAta, vault, mint, ownerAta, vaultAta, owner, amount));
|
|
803
|
+
instructions.push(transferToVaultIx(ephemeralAta, vault, mint, ownerAta, vaultAta, owner, amount, tokenProgram));
|
|
803
804
|
if (isPrivate) {
|
|
804
805
|
instructions.push(createEataPermissionIx(ephemeralAta, payer));
|
|
805
806
|
}
|
|
@@ -809,6 +810,7 @@ async function buildDelegateSplInstructions(owner, mint, amount, opts) {
|
|
|
809
810
|
async function buildIdempotentDelegateSplInstructions(owner, mint, amount, opts) {
|
|
810
811
|
const payer = opts?.payer ?? owner;
|
|
811
812
|
const validator = opts?.validator;
|
|
813
|
+
const tokenProgram = opts?.tokenProgram ?? constants_js_1.TOKEN_PROGRAM_ID;
|
|
812
814
|
const initIfMissing = opts?.initIfMissing ?? true;
|
|
813
815
|
const initVaultIfMissing = opts?.initVaultIfMissing ?? false;
|
|
814
816
|
const initAtasIfMissing = opts?.initAtasIfMissing ?? false;
|
|
@@ -818,16 +820,16 @@ async function buildIdempotentDelegateSplInstructions(owner, mint, amount, opts)
|
|
|
818
820
|
const [ephemeralAta] = deriveEphemeralAta(owner, mint);
|
|
819
821
|
const [vault] = deriveVault(mint);
|
|
820
822
|
const [vaultEphemeralAta] = deriveEphemeralAta(vault, mint);
|
|
821
|
-
const vaultAta = deriveVaultAta(mint, vault);
|
|
822
|
-
const ownerAta = getAssociatedTokenAddressSync(mint, owner);
|
|
823
|
+
const vaultAta = deriveVaultAta(mint, vault, tokenProgram);
|
|
824
|
+
const ownerAta = getAssociatedTokenAddressSync(mint, owner, false, tokenProgram);
|
|
823
825
|
const [shuttleEphemeralAta] = deriveShuttleEphemeralAta(owner, mint, shuttleId);
|
|
824
826
|
const [shuttleAta] = deriveShuttleAta(shuttleEphemeralAta, mint);
|
|
825
|
-
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta);
|
|
827
|
+
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta, tokenProgram);
|
|
826
828
|
if (initVaultIfMissing) {
|
|
827
|
-
instructions.push(initVaultIx(vault, mint, payer), initVaultAtaIx(payer, vaultAta, vault, mint), delegateEphemeralAtaIx(payer, vaultEphemeralAta, validator));
|
|
829
|
+
instructions.push(initVaultIx(vault, mint, payer, tokenProgram), initVaultAtaIx(payer, vaultAta, vault, mint, tokenProgram), delegateEphemeralAtaIx(payer, vaultEphemeralAta, validator));
|
|
828
830
|
}
|
|
829
831
|
if (initAtasIfMissing) {
|
|
830
|
-
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, ownerAta, owner, mint));
|
|
832
|
+
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, ownerAta, owner, mint, tokenProgram));
|
|
831
833
|
}
|
|
832
834
|
if (initIfMissing) {
|
|
833
835
|
instructions.push(initEphemeralAtaIx(ephemeralAta, owner, mint, payer));
|
|
@@ -837,10 +839,10 @@ async function buildIdempotentDelegateSplInstructions(owner, mint, amount, opts)
|
|
|
837
839
|
}
|
|
838
840
|
instructions.push(delegateEphemeralAtaIx(payer, ephemeralAta, validator));
|
|
839
841
|
if (amount > 0n) {
|
|
840
|
-
instructions.push(setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, owner, ownerAta, ownerAta, shuttleWalletAta, mint, shuttleId, amount, validator));
|
|
842
|
+
instructions.push(setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, owner, ownerAta, ownerAta, shuttleWalletAta, mint, shuttleId, amount, validator, tokenProgram));
|
|
841
843
|
}
|
|
842
844
|
else {
|
|
843
|
-
instructions.push(initShuttleEphemeralAtaIx(payer, shuttleEphemeralAta, shuttleAta, shuttleWalletAta, owner, mint, shuttleId), delegateShuttleEphemeralAtaIx(payer, shuttleEphemeralAta, shuttleAta, validator));
|
|
845
|
+
instructions.push(initShuttleEphemeralAtaIx(payer, shuttleEphemeralAta, shuttleAta, shuttleWalletAta, owner, mint, shuttleId, tokenProgram), delegateShuttleEphemeralAtaIx(payer, shuttleEphemeralAta, shuttleAta, validator));
|
|
844
846
|
}
|
|
845
847
|
return instructions;
|
|
846
848
|
}
|
|
@@ -853,6 +855,7 @@ async function delegateSpl(owner, mint, amount, opts) {
|
|
|
853
855
|
async function delegateSplWithPrivateTransfer(owner, mint, amount, opts) {
|
|
854
856
|
const payer = opts?.payer ?? owner;
|
|
855
857
|
const validator = opts?.validator;
|
|
858
|
+
const tokenProgram = opts?.tokenProgram ?? constants_js_1.TOKEN_PROGRAM_ID;
|
|
856
859
|
const initIfMissing = opts?.initIfMissing ?? true;
|
|
857
860
|
const initVaultIfMissing = opts?.initVaultIfMissing ?? false;
|
|
858
861
|
const initAtasIfMissing = opts?.initAtasIfMissing ?? false;
|
|
@@ -870,30 +873,31 @@ async function delegateSplWithPrivateTransfer(owner, mint, amount, opts) {
|
|
|
870
873
|
const [ephemeralAta] = deriveEphemeralAta(owner, mint);
|
|
871
874
|
const [vault] = deriveVault(mint);
|
|
872
875
|
const [vaultEphemeralAta] = deriveEphemeralAta(vault, mint);
|
|
873
|
-
const vaultAta = deriveVaultAta(mint, vault);
|
|
876
|
+
const vaultAta = deriveVaultAta(mint, vault, tokenProgram);
|
|
874
877
|
const [queue] = (0, transferQueue_js_1.deriveTransferQueue)(mint, validator);
|
|
875
|
-
const ownerAta = getAssociatedTokenAddressSync(mint, owner);
|
|
878
|
+
const ownerAta = getAssociatedTokenAddressSync(mint, owner, false, tokenProgram);
|
|
876
879
|
const [shuttleEphemeralAta] = deriveShuttleEphemeralAta(owner, mint, shuttleId);
|
|
877
880
|
const [shuttleAta] = deriveShuttleAta(shuttleEphemeralAta, mint);
|
|
878
|
-
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta);
|
|
881
|
+
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta, tokenProgram);
|
|
879
882
|
if (initVaultIfMissing) {
|
|
880
|
-
instructions.push(initVaultIx(vault, mint, payer), initVaultAtaIx(payer, vaultAta, vault, mint), delegateEphemeralAtaIx(payer, vaultEphemeralAta, validator));
|
|
883
|
+
instructions.push(initVaultIx(vault, mint, payer, tokenProgram), initVaultAtaIx(payer, vaultAta, vault, mint, tokenProgram), delegateEphemeralAtaIx(payer, vaultEphemeralAta, validator));
|
|
881
884
|
}
|
|
882
885
|
if (initTransferQueueIfMissing) {
|
|
883
|
-
instructions.push((0, transferQueue_js_1.toTransactionInstruction)((0, transferQueue_js_1.initTransferQueueIx)(payer, queue, mint, validator)));
|
|
886
|
+
instructions.push((0, transferQueue_js_1.toTransactionInstruction)((0, transferQueue_js_1.initTransferQueueIx)(payer, queue, mint, validator, undefined, tokenProgram)));
|
|
884
887
|
}
|
|
885
888
|
if (initAtasIfMissing) {
|
|
886
|
-
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, ownerAta, owner, mint));
|
|
889
|
+
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, ownerAta, owner, mint, tokenProgram));
|
|
887
890
|
}
|
|
888
891
|
if (initIfMissing) {
|
|
889
892
|
instructions.push(initEphemeralAtaIx(ephemeralAta, owner, mint, payer));
|
|
890
893
|
}
|
|
891
|
-
instructions.push(delegateEphemeralAtaIx(payer, ephemeralAta, validator), depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(payer, shuttleEphemeralAta, shuttleAta, owner, ownerAta, owner, shuttleWalletAta, mint, shuttleId, amount, exactOut, minDelayMs, maxDelayMs, split, validator, clientRefId));
|
|
894
|
+
instructions.push(delegateEphemeralAtaIx(payer, ephemeralAta, validator), depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(payer, shuttleEphemeralAta, shuttleAta, owner, ownerAta, owner, shuttleWalletAta, mint, shuttleId, amount, exactOut, minDelayMs, maxDelayMs, split, validator, clientRefId, tokenProgram));
|
|
892
895
|
return instructions;
|
|
893
896
|
}
|
|
894
897
|
async function transferSpl(from, to, mint, amount, opts) {
|
|
895
898
|
const payer = opts.payer ?? from;
|
|
896
899
|
const validator = opts.validator;
|
|
900
|
+
const tokenProgram = opts.tokenProgram ?? constants_js_1.TOKEN_PROGRAM_ID;
|
|
897
901
|
const initIfMissing = opts.initIfMissing ?? false;
|
|
898
902
|
const initAtasIfMissing = opts.initAtasIfMissing ?? false;
|
|
899
903
|
const initVaultIfMissing = opts.initVaultIfMissing ?? false;
|
|
@@ -903,9 +907,8 @@ async function transferSpl(from, to, mint, amount, opts) {
|
|
|
903
907
|
const split = opts.privateTransfer?.split ?? 1;
|
|
904
908
|
const exactOut = opts.privateTransfer?.exactOut ?? true;
|
|
905
909
|
const clientRefId = opts.privateTransfer?.clientRefId;
|
|
906
|
-
|
|
907
|
-
const
|
|
908
|
-
const toAta = getAssociatedTokenAddressSync(mint, to);
|
|
910
|
+
const fromAta = getAssociatedTokenAddressSync(mint, from, false, tokenProgram);
|
|
911
|
+
const toAta = getAssociatedTokenAddressSync(mint, to, false, tokenProgram);
|
|
909
912
|
if (opts.fromBalance === "ephemeral") {
|
|
910
913
|
switch (opts.visibility) {
|
|
911
914
|
case "private":
|
|
@@ -914,19 +917,29 @@ async function transferSpl(from, to, mint, amount, opts) {
|
|
|
914
917
|
throw new Error("validator is required for private ephemeral-to-base transfers");
|
|
915
918
|
}
|
|
916
919
|
const [queue] = (0, transferQueue_js_1.deriveTransferQueue)(mint, validator);
|
|
917
|
-
const
|
|
918
|
-
const vaultAta =
|
|
920
|
+
const vault = queue;
|
|
921
|
+
const vaultAta = (0, transferQueue_js_1.deriveQueueVaultAta)(mint, validator, tokenProgram);
|
|
922
|
+
const setupInstructions = initVaultIfMissing
|
|
923
|
+
? [
|
|
924
|
+
(0, transferQueue_js_1.toTransactionInstruction)((0, transferQueue_js_1.initTransferQueueIx)(payer, queue, mint, validator, undefined, tokenProgram)),
|
|
925
|
+
]
|
|
926
|
+
: [];
|
|
919
927
|
return [
|
|
920
|
-
|
|
928
|
+
...setupInstructions,
|
|
929
|
+
(0, transferQueue_js_1.toTransactionInstruction)((0, transferQueue_js_1.depositAndQueueTransferIx)(queue, vault, mint, fromAta, vaultAta, to, from, amount, minDelayMs, maxDelayMs, split, undefined, clientRefId, tokenProgram)),
|
|
921
930
|
];
|
|
922
931
|
}
|
|
923
932
|
if (opts.toBalance === "ephemeral") {
|
|
924
|
-
return [
|
|
933
|
+
return [
|
|
934
|
+
createTransferInstruction(fromAta, toAta, from, amount, [], tokenProgram),
|
|
935
|
+
];
|
|
925
936
|
}
|
|
926
937
|
break;
|
|
927
938
|
case "public":
|
|
928
939
|
if (opts.toBalance === "ephemeral") {
|
|
929
|
-
return [
|
|
940
|
+
return [
|
|
941
|
+
createTransferInstruction(fromAta, toAta, from, amount, [], tokenProgram),
|
|
942
|
+
];
|
|
930
943
|
}
|
|
931
944
|
break;
|
|
932
945
|
}
|
|
@@ -935,42 +948,47 @@ async function transferSpl(from, to, mint, amount, opts) {
|
|
|
935
948
|
if (initVaultIfMissing) {
|
|
936
949
|
const [vault] = deriveVault(mint);
|
|
937
950
|
const [vaultEphemeralAta] = deriveEphemeralAta(vault, mint);
|
|
938
|
-
const vaultAta = deriveVaultAta(mint, vault);
|
|
939
|
-
instructions.push(initVaultIx(vault, mint, payer), initVaultAtaIx(payer, vaultAta, vault, mint), delegateEphemeralAtaIx(payer, vaultEphemeralAta, validator));
|
|
940
|
-
}
|
|
941
|
-
if (opts.fromBalance === "base" && initAtasIfMissing) {
|
|
942
|
-
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, fromAta, from, mint));
|
|
951
|
+
const vaultAta = deriveVaultAta(mint, vault, tokenProgram);
|
|
952
|
+
instructions.push(initVaultIx(vault, mint, payer, tokenProgram), initVaultAtaIx(payer, vaultAta, vault, mint, tokenProgram), delegateEphemeralAtaIx(payer, vaultEphemeralAta, validator));
|
|
943
953
|
}
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
954
|
+
if (initVaultIfMissing &&
|
|
955
|
+
opts.visibility === "private" &&
|
|
956
|
+
opts.fromBalance === "base" &&
|
|
957
|
+
opts.toBalance === "base") {
|
|
958
|
+
if (validator == null) {
|
|
959
|
+
throw new Error("validator is required for private base-to-base transfers");
|
|
947
960
|
}
|
|
948
961
|
const [queue] = (0, transferQueue_js_1.deriveTransferQueue)(mint, validator);
|
|
949
|
-
|
|
950
|
-
}
|
|
962
|
+
instructions.push((0, transferQueue_js_1.toTransactionInstruction)((0, transferQueue_js_1.initTransferQueueIx)(payer, queue, mint, validator, undefined, tokenProgram)));
|
|
963
|
+
}
|
|
964
|
+
if (opts.fromBalance === "base" && initAtasIfMissing) {
|
|
965
|
+
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, fromAta, from, mint, tokenProgram));
|
|
966
|
+
}
|
|
951
967
|
switch (opts.visibility) {
|
|
952
968
|
case "private":
|
|
953
969
|
if (opts.fromBalance === "base" && opts.toBalance === "base") {
|
|
970
|
+
const [fromEphemeralAta] = deriveEphemeralAta(from, mint);
|
|
954
971
|
const [shuttleEphemeralAta] = deriveShuttleEphemeralAta(from, mint, shuttleId);
|
|
955
972
|
const [shuttleAta] = deriveShuttleAta(shuttleEphemeralAta, mint);
|
|
956
|
-
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta);
|
|
973
|
+
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta, tokenProgram);
|
|
957
974
|
return [
|
|
958
975
|
...instructions,
|
|
959
|
-
|
|
960
|
-
|
|
976
|
+
initEphemeralAtaIx(fromEphemeralAta, from, mint, payer),
|
|
977
|
+
delegateEphemeralAtaIx(payer, fromEphemeralAta, validator),
|
|
978
|
+
depositAndDelegateShuttleEphemeralAtaWithMergeAndPrivateTransferIx(payer, shuttleEphemeralAta, shuttleAta, from, fromAta, to, shuttleWalletAta, mint, shuttleId, amount, exactOut, minDelayMs, maxDelayMs, split, validator, clientRefId, tokenProgram),
|
|
961
979
|
];
|
|
962
980
|
}
|
|
963
981
|
if (opts.fromBalance === "base" && opts.toBalance === "ephemeral") {
|
|
964
982
|
if (initIfMissing) {
|
|
965
983
|
const [toEphemeralAta] = deriveEphemeralAta(to, mint);
|
|
966
|
-
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, toAta, to, mint), initEphemeralAtaIx(toEphemeralAta, to, mint, payer), delegateEphemeralAtaIx(payer, toEphemeralAta, validator));
|
|
984
|
+
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, toAta, to, mint, tokenProgram), initEphemeralAtaIx(toEphemeralAta, to, mint, payer), delegateEphemeralAtaIx(payer, toEphemeralAta, validator));
|
|
967
985
|
}
|
|
968
986
|
const [shuttleEphemeralAta] = deriveShuttleEphemeralAta(from, mint, shuttleId);
|
|
969
987
|
const [shuttleAta] = deriveShuttleAta(shuttleEphemeralAta, mint);
|
|
970
|
-
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta);
|
|
988
|
+
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta, tokenProgram);
|
|
971
989
|
return [
|
|
972
990
|
...instructions,
|
|
973
|
-
setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, from, fromAta, toAta, shuttleWalletAta, mint, shuttleId, amount, validator),
|
|
991
|
+
setupAndDelegateShuttleEphemeralAtaWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, from, fromAta, toAta, shuttleWalletAta, mint, shuttleId, amount, validator, tokenProgram),
|
|
974
992
|
];
|
|
975
993
|
}
|
|
976
994
|
break;
|
|
@@ -978,7 +996,7 @@ async function transferSpl(from, to, mint, amount, opts) {
|
|
|
978
996
|
if (opts.fromBalance === "base" && opts.toBalance === "base") {
|
|
979
997
|
return [
|
|
980
998
|
...instructions,
|
|
981
|
-
createTransferInstruction(fromAta, toAta, from, amount),
|
|
999
|
+
createTransferInstruction(fromAta, toAta, from, amount, [], tokenProgram),
|
|
982
1000
|
];
|
|
983
1001
|
}
|
|
984
1002
|
break;
|
|
@@ -988,33 +1006,35 @@ async function transferSpl(from, to, mint, amount, opts) {
|
|
|
988
1006
|
async function buildIdempotentWithdrawSplInstructions(owner, mint, amount, opts) {
|
|
989
1007
|
const payer = opts?.payer ?? owner;
|
|
990
1008
|
const validator = opts?.validator;
|
|
1009
|
+
const tokenProgram = opts?.tokenProgram ?? constants_js_1.TOKEN_PROGRAM_ID;
|
|
991
1010
|
const initIfMissing = opts?.initIfMissing ?? true;
|
|
992
1011
|
const initAtasIfMissing = opts?.initAtasIfMissing ?? false;
|
|
993
1012
|
const shuttleId = opts?.shuttleId ?? randomShuttleId();
|
|
994
1013
|
const instructions = [];
|
|
995
1014
|
const [ephemeralAta] = deriveEphemeralAta(owner, mint);
|
|
996
|
-
const ownerAta = getAssociatedTokenAddressSync(mint, owner);
|
|
1015
|
+
const ownerAta = getAssociatedTokenAddressSync(mint, owner, false, tokenProgram);
|
|
997
1016
|
const [shuttleEphemeralAta] = deriveShuttleEphemeralAta(owner, mint, shuttleId);
|
|
998
1017
|
const [shuttleAta] = deriveShuttleAta(shuttleEphemeralAta, mint);
|
|
999
|
-
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta);
|
|
1018
|
+
const shuttleWalletAta = deriveShuttleWalletAta(mint, shuttleEphemeralAta, tokenProgram);
|
|
1000
1019
|
if (initAtasIfMissing) {
|
|
1001
|
-
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, ownerAta, owner, mint));
|
|
1020
|
+
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, ownerAta, owner, mint, tokenProgram));
|
|
1002
1021
|
}
|
|
1003
1022
|
if (initIfMissing) {
|
|
1004
1023
|
instructions.push(initEphemeralAtaIx(ephemeralAta, owner, mint, payer));
|
|
1005
1024
|
}
|
|
1006
|
-
instructions.push(delegateEphemeralAtaIx(payer, ephemeralAta, validator), withdrawThroughDelegatedShuttleWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, owner, ownerAta, shuttleWalletAta, mint, shuttleId, amount, validator));
|
|
1025
|
+
instructions.push(delegateEphemeralAtaIx(payer, ephemeralAta, validator), withdrawThroughDelegatedShuttleWithMergeIx(payer, shuttleEphemeralAta, shuttleAta, owner, ownerAta, shuttleWalletAta, mint, shuttleId, amount, validator, tokenProgram));
|
|
1007
1026
|
return instructions;
|
|
1008
1027
|
}
|
|
1009
1028
|
async function withdrawSpl(owner, mint, amount, opts) {
|
|
1029
|
+
const tokenProgram = opts?.tokenProgram ?? constants_js_1.TOKEN_PROGRAM_ID;
|
|
1010
1030
|
if (opts?.idempotent === false) {
|
|
1011
1031
|
const instructions = [];
|
|
1012
1032
|
if (opts?.initAtasIfMissing === true) {
|
|
1013
1033
|
const payer = opts.payer ?? owner;
|
|
1014
|
-
const ownerAta = getAssociatedTokenAddressSync(mint, owner);
|
|
1015
|
-
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, ownerAta, owner, mint));
|
|
1034
|
+
const ownerAta = getAssociatedTokenAddressSync(mint, owner, false, tokenProgram);
|
|
1035
|
+
instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, ownerAta, owner, mint, tokenProgram));
|
|
1016
1036
|
}
|
|
1017
|
-
instructions.push(withdrawSplIx(owner, mint, amount));
|
|
1037
|
+
instructions.push(withdrawSplIx(owner, mint, amount, tokenProgram));
|
|
1018
1038
|
return instructions;
|
|
1019
1039
|
}
|
|
1020
1040
|
return buildIdempotentWithdrawSplInstructions(owner, mint, amount, opts);
|