@zcomb/programs-sdk 1.10.0 → 1.11.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.
@@ -1,185 +1 @@
1
- "use strict";
2
- /*
3
- * High-level client for the Vault program.
4
- * Provides ergonomic methods for vault operations with automatic PDA derivation,
5
- * native SOL wrapping/unwrapping, and compute budget management.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.VaultClient = void 0;
9
- const anchor_1 = require("@coral-xyz/anchor");
10
- const web3_js_1 = require("@solana/web3.js");
11
- const spl_token_1 = require("@solana/spl-token");
12
- const constants_1 = require("./constants");
13
- const types_1 = require("./types");
14
- const utils_1 = require("./utils");
15
- const instructions_1 = require("./instructions");
16
- const idls_1 = require("../generated/idls");
17
- const DEFAULT_COMPUTE_UNITS = 450000;
18
- class VaultClient {
19
- constructor(provider, programId, computeUnits) {
20
- this.programId = programId ?? constants_1.PROGRAM_ID;
21
- this.computeUnits = computeUnits ?? DEFAULT_COMPUTE_UNITS;
22
- this.program = new anchor_1.Program(idls_1.VaultIDL, provider);
23
- }
24
- /* PDA Helpers */
25
- deriveVaultPDA(owner, nonce) {
26
- return (0, utils_1.deriveVaultPDA)(owner, nonce, this.programId);
27
- }
28
- deriveConditionalMint(vaultPda, vaultType, index) {
29
- return (0, utils_1.deriveConditionalMint)(vaultPda, vaultType, index, this.programId);
30
- }
31
- /* State Fetching */
32
- async fetchVault(vaultPda) {
33
- return (0, utils_1.fetchVaultAccount)(this.program, vaultPda);
34
- }
35
- async fetchUserATAs(vaultPda, user, vaultType) {
36
- const vault = await this.fetchVault(vaultPda);
37
- const mint = vaultType === types_1.VaultType.Base ? vault.baseMint.address : vault.quoteMint.address;
38
- const condMints = (vaultType === types_1.VaultType.Base ? vault.condBaseMints : vault.condQuoteMints)
39
- .slice(0, vault.numOptions);
40
- return {
41
- userAta: (0, spl_token_1.getAssociatedTokenAddressSync)(mint, user),
42
- userCondATAs: condMints.map((m) => (0, spl_token_1.getAssociatedTokenAddressSync)(m, user)),
43
- };
44
- }
45
- async fetchVaultATA(vaultPda, vaultType) {
46
- const vault = await this.fetchVault(vaultPda);
47
- const mint = vaultType === types_1.VaultType.Base ? vault.baseMint.address : vault.quoteMint.address;
48
- return (0, spl_token_1.getAssociatedTokenAddressSync)(mint, vaultPda, true);
49
- }
50
- async fetchUserBalances(vaultPda, user, vaultType) {
51
- const { userAta, userCondATAs } = await this.fetchUserATAs(vaultPda, user, vaultType);
52
- const connection = this.program.provider.connection;
53
- const getBalanceSafe = async (ata) => {
54
- try {
55
- const acc = await (0, spl_token_1.getAccount)(connection, ata);
56
- return new anchor_1.BN(acc.amount.toString());
57
- }
58
- catch (e) {
59
- if (e instanceof spl_token_1.TokenAccountNotFoundError) {
60
- return new anchor_1.BN(0);
61
- }
62
- throw e;
63
- }
64
- };
65
- const [userBalance, ...condBalances] = await Promise.all([
66
- getBalanceSafe(userAta),
67
- ...userCondATAs.map(getBalanceSafe),
68
- ]);
69
- return { userBalance, condBalances };
70
- }
71
- async fetchVaultBalance(vaultPda, vaultType) {
72
- const vaultAta = await this.fetchVaultATA(vaultPda, vaultType);
73
- try {
74
- const acc = await (0, spl_token_1.getAccount)(this.program.provider.connection, vaultAta);
75
- return new anchor_1.BN(acc.amount.toString());
76
- }
77
- catch (e) {
78
- if (e instanceof spl_token_1.TokenAccountNotFoundError) {
79
- return new anchor_1.BN(0);
80
- }
81
- throw e;
82
- }
83
- }
84
- /* Instruction Builders */
85
- initialize(payer, baseMint, quoteMint, nonce, owner) {
86
- const vaultOwner = owner ?? payer;
87
- const [vaultPda] = this.deriveVaultPDA(vaultOwner, nonce);
88
- const [condBaseMint0] = this.deriveConditionalMint(vaultPda, types_1.VaultType.Base, 0);
89
- const [condBaseMint1] = this.deriveConditionalMint(vaultPda, types_1.VaultType.Base, 1);
90
- const [condQuoteMint0] = this.deriveConditionalMint(vaultPda, types_1.VaultType.Quote, 0);
91
- const [condQuoteMint1] = this.deriveConditionalMint(vaultPda, types_1.VaultType.Quote, 1);
92
- const builder = (0, instructions_1.initialize)(this.program, payer, vaultOwner, vaultPda, baseMint, quoteMint, condBaseMint0, condBaseMint1, condQuoteMint0, condQuoteMint1, nonce);
93
- return {
94
- builder,
95
- vaultPda,
96
- condBaseMint0,
97
- condBaseMint1,
98
- condQuoteMint0,
99
- condQuoteMint1,
100
- };
101
- }
102
- async addOption(payer, owner, vaultPda) {
103
- const vault = await this.fetchVault(vaultPda);
104
- const [condBaseMint] = this.deriveConditionalMint(vaultPda, types_1.VaultType.Base, vault.numOptions);
105
- const [condQuoteMint] = this.deriveConditionalMint(vaultPda, types_1.VaultType.Quote, vault.numOptions);
106
- const builder = (0, instructions_1.addOption)(this.program, payer, owner, vaultPda, condBaseMint, condQuoteMint);
107
- return { builder, condBaseMint, condQuoteMint };
108
- }
109
- activate(payer, owner, vaultPda) {
110
- return (0, instructions_1.activate)(this.program, payer, owner, vaultPda);
111
- }
112
- async deposit(signer, vaultPda, vaultType, amount, options) {
113
- const { autoWrapUnwrap = true, includeCuBudget = true, computeUnits } = options ?? {};
114
- const vault = await this.fetchVault(vaultPda);
115
- const mint = vaultType === types_1.VaultType.Base ? vault.baseMint.address : vault.quoteMint.address;
116
- const condMints = (vaultType === types_1.VaultType.Base ? vault.condBaseMints : vault.condQuoteMints)
117
- .slice(0, vault.numOptions);
118
- const builder = (0, instructions_1.deposit)(this.program, signer, vaultPda, mint, condMints, vaultType, amount);
119
- const preIxs = [];
120
- if (includeCuBudget) {
121
- preIxs.push(web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
122
- units: computeUnits ?? this.computeUnits,
123
- }));
124
- }
125
- if (autoWrapUnwrap && mint.equals(spl_token_1.NATIVE_MINT)) {
126
- const amountBN = typeof amount === "number" ? new anchor_1.BN(amount) : amount;
127
- const wsolAta = (0, spl_token_1.getAssociatedTokenAddressSync)(spl_token_1.NATIVE_MINT, signer);
128
- preIxs.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(signer, wsolAta, signer, spl_token_1.NATIVE_MINT), web3_js_1.SystemProgram.transfer({
129
- fromPubkey: signer,
130
- toPubkey: wsolAta,
131
- lamports: BigInt(amountBN.toString()),
132
- }), (0, spl_token_1.createSyncNativeInstruction)(wsolAta));
133
- }
134
- return preIxs.length > 0 ? builder.preInstructions(preIxs) : builder;
135
- }
136
- async withdraw(signer, vaultPda, vaultType, amount, options) {
137
- const { autoWrapUnwrap = true, includeCuBudget = true, computeUnits } = options ?? {};
138
- const vault = await this.fetchVault(vaultPda);
139
- const mint = vaultType === types_1.VaultType.Base ? vault.baseMint.address : vault.quoteMint.address;
140
- const condMints = (vaultType === types_1.VaultType.Base ? vault.condBaseMints : vault.condQuoteMints)
141
- .slice(0, vault.numOptions);
142
- let builder = (0, instructions_1.withdraw)(this.program, signer, vaultPda, mint, condMints, vaultType, amount);
143
- if (includeCuBudget) {
144
- builder = builder.preInstructions([
145
- web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
146
- units: computeUnits ?? this.computeUnits,
147
- }),
148
- ]);
149
- }
150
- if (autoWrapUnwrap && mint.equals(spl_token_1.NATIVE_MINT)) {
151
- const wsolAta = (0, spl_token_1.getAssociatedTokenAddressSync)(spl_token_1.NATIVE_MINT, signer);
152
- builder = builder.postInstructions([
153
- (0, spl_token_1.createCloseAccountInstruction)(wsolAta, signer, signer),
154
- ]);
155
- }
156
- return builder;
157
- }
158
- finalize(payer, owner, vaultPda, winningIdx) {
159
- return (0, instructions_1.finalize)(this.program, payer, owner, vaultPda, winningIdx);
160
- }
161
- async redeemWinnings(signer, vaultPda, vaultType, options) {
162
- const { autoWrapUnwrap = true, includeCuBudget = true, computeUnits } = options ?? {};
163
- const vault = await this.fetchVault(vaultPda);
164
- const mint = vaultType === types_1.VaultType.Base ? vault.baseMint.address : vault.quoteMint.address;
165
- const condMints = (vaultType === types_1.VaultType.Base ? vault.condBaseMints : vault.condQuoteMints)
166
- .slice(0, vault.numOptions);
167
- let builder = (0, instructions_1.redeemWinnings)(this.program, signer, vaultPda, mint, condMints, vaultType);
168
- if (includeCuBudget) {
169
- builder = builder.preInstructions([
170
- web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
171
- units: computeUnits ?? this.computeUnits,
172
- }),
173
- ]);
174
- }
175
- if (autoWrapUnwrap && mint.equals(spl_token_1.NATIVE_MINT)) {
176
- const wsolAta = (0, spl_token_1.getAssociatedTokenAddressSync)(spl_token_1.NATIVE_MINT, signer);
177
- builder = builder.postInstructions([
178
- (0, spl_token_1.createCloseAccountInstruction)(wsolAta, signer, signer),
179
- ]);
180
- }
181
- return builder;
182
- }
183
- }
184
- exports.VaultClient = VaultClient;
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhdWx0L2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBRUgsOENBQWdFO0FBQ2hFLDZDQUFpRjtBQUNqRixpREFRMkI7QUFDM0IsMkNBQXlDO0FBQ3pDLG1DQUE2RTtBQUM3RSxtQ0FJaUI7QUFDakIsaURBUXdCO0FBRXhCLDRDQUE2QztBQUU3QyxNQUFNLHFCQUFxQixHQUFHLE1BQU8sQ0FBQztBQUV0QyxNQUFhLFdBQVc7SUFLdEIsWUFDRSxRQUF3QixFQUN4QixTQUFxQixFQUNyQixZQUFxQjtRQUVyQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxzQkFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxJQUFJLHFCQUFxQixDQUFDO1FBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQkFBTyxDQUFDLGVBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixjQUFjLENBQ1osS0FBZ0IsRUFDaEIsS0FBYTtRQUViLE9BQU8sSUFBQSxzQkFBYyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxxQkFBcUIsQ0FDbkIsUUFBbUIsRUFDbkIsU0FBb0IsRUFDcEIsS0FBYTtRQUViLE9BQU8sSUFBQSw2QkFBcUIsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELG9CQUFvQjtJQUVwQixLQUFLLENBQUMsVUFBVSxDQUFDLFFBQW1CO1FBQ2xDLE9BQU8sSUFBQSx5QkFBaUIsRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxD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Qy9DLE1BQU0sT0FBTyxHQUFHLElBQUEseUNBQTZCLEVBQUMsdUJBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNuRSxPQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO2dCQUNqQyxJQUFBLHlDQUE2QixFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO2FBQ3ZELENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUF0U0Qsa0NBc1NDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEhpZ2gtbGV2ZWwgY2xpZW50IGZvciB0aGUgVmF1bHQgcHJvZ3JhbS5cbiAqIFByb3ZpZGVzIGVyZ29ub21pYyBtZXRob2RzIGZvciB2YXVsdCBvcGVyYXRpb25zIHdpdGggYXV0b21hdGljIFBEQSBkZXJpdmF0aW9uLFxuICogbmF0aXZlIFNPTCB3cmFwcGluZy91bndyYXBwaW5nLCBhbmQgY29tcHV0ZSBidWRnZXQgbWFuYWdlbWVudC5cbiAqL1xuXG5pbXBvcnQgeyBQcm9ncmFtLCBBbmNob3JQcm92aWRlciwgQk4gfSBmcm9tIFwiQGNvcmFsLXh5ei9hbmNob3JcIjtcbmltcG9ydCB7IFB1YmxpY0tleSwgQ29tcHV0ZUJ1ZGdldFByb2dyYW0sIFN5c3RlbVByb2dyYW0gfSBmcm9tIFwiQHNvbGFuYS93ZWIzLmpzXCI7XG5pbXBvcnQge1xuICBnZXRBY2NvdW50LFxuICBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyxcbiAgVG9rZW5BY2NvdW50Tm90Rm91bmRFcnJvcixcbiAgTkFUSVZFX01JTlQsXG4gIGNyZWF0ZVN5bmNOYXRpdmVJbnN0cnVjdGlvbixcbiAgY3JlYXRlQ2xvc2VBY2NvdW50SW5zdHJ1Y3Rpb24sXG4gIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJZGVtcG90ZW50SW5zdHJ1Y3Rpb24sXG59IGZyb20gXCJAc29sYW5hL3NwbC10b2tlblwiO1xuaW1wb3J0IHsgUFJPR1JBTV9JRCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVmF1bHQsIFZhdWx0VHlwZSwgVmF1bHRBY2NvdW50LCBWYXVsdEFjdGlvbk9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZGVyaXZlVmF1bHRQREEsXG4gIGRlcml2ZUNvbmRpdGlvbmFsTWludCxcbiAgZmV0Y2hWYXVsdEFjY291bnQsXG59IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge1xuICBpbml0aWFsaXplLFxuICBhZGRPcHRpb24sXG4gIGFjdGl2YXRlLFxuICBkZXBvc2l0LFxuICB3aXRoZHJhdyxcbiAgZmluYWxpemUsXG4gIHJlZGVlbVdpbm5pbmdzLFxufSBmcm9tIFwiLi9pbnN0cnVjdGlvbnNcIjtcblxuaW1wb3J0IHsgVmF1bHRJREwgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkL2lkbHNcIjtcblxuY29uc3QgREVGQVVMVF9DT01QVVRFX1VOSVRTID0gNDUwXzAwMDtcblxuZXhwb3J0IGNsYXNzIFZhdWx0Q2xpZW50IHtcbiAgcHVibGljIHByb2dyYW06IFByb2dyYW08VmF1bHQ+O1xuICBwdWJsaWMgcHJvZ3JhbUlkOiBQdWJsaWNLZXk7XG4gIHB1YmxpYyBjb21wdXRlVW5pdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm92aWRlcjogQW5jaG9yUHJvdmlkZXIsXG4gICAgcHJvZ3JhbUlkPzogUHVibGljS2V5LFxuICAgIGNvbXB1dGVVbml0cz86IG51bWJlclxuICApIHtcbiAgICB0aGlzLnByb2dyYW1JZCA9IHByb2dyYW1JZCA/PyBQUk9HUkFNX0lEO1xuICAgIHRoaXMuY29tcHV0ZVVuaXRzID0gY29tcHV0ZVVuaXRzID8/IERFRkFVTFRfQ09NUFVURV9VTklUUztcbiAgICB0aGlzLnByb2dyYW0gPSBuZXcgUHJvZ3JhbShWYXVsdElETCBhcyBWYXVsdCwgcHJvdmlkZXIpO1xuICB9XG5cbiAgLyogUERBIEhlbHBlcnMgKi9cblxuICBkZXJpdmVWYXVsdFBEQShcbiAgICBvd25lcjogUHVibGljS2V5LFxuICAgIG5vbmNlOiBudW1iZXJcbiAgKTogW1B1YmxpY0tleSwgbnVtYmVyXSB7XG4gICAgcmV0dXJuIGRlcml2ZVZhdWx0UERBKG93bmVyLCBub25jZSwgdGhpcy5wcm9ncmFtSWQpO1xuICB9XG5cbiAgZGVyaXZlQ29uZGl0aW9uYWxNaW50KFxuICAgIHZhdWx0UGRhOiBQdWJsaWNLZXksXG4gICAgdmF1bHRUeXBlOiBWYXVsdFR5cGUsXG4gICAgaW5kZXg6IG51bWJlclxuICApOiBbUHVibGljS2V5LCBudW1iZXJdIHtcbiAgICByZXR1cm4gZGVyaXZlQ29uZGl0aW9uYWxNaW50KHZhdWx0UGRhLCB2YXVsdFR5cGUsIGluZGV4LCB0aGlzLnByb2dyYW1JZCk7XG4gIH1cblxuICAvKiBTdGF0ZSBGZXRjaGluZyAqL1xuXG4gIGFzeW5jIGZldGNoVmF1bHQodmF1bHRQZGE6IFB1YmxpY0tleSk6IFByb21pc2U8VmF1bHRBY2NvdW50PiB7XG4gICAgcmV0dXJuIGZldGNoVmF1bHRBY2NvdW50KHRoaXMucHJvZ3JhbSwgdmF1bHRQZGEpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hVc2VyQVRBcyh2YXVsdFBkYTogUHVibGljS2V5LCB1c2VyOiBQdWJsaWNLZXksIHZhdWx0VHlwZTogVmF1bHRUeXBlKSB7XG4gICAgY29uc3QgdmF1bHQgPSBhd2FpdCB0aGlzLmZldGNoVmF1bHQodmF1bHRQZGEpO1xuICAgIGNvbnN0IG1pbnQgPSB2YXVsdFR5cGUgPT09IFZhdWx0VHlwZS5CYXNlID8gdmF1bHQuYmFzZU1pbnQuYWRkcmVzcyA6IHZhdWx0LnF1b3RlTWludC5hZGRyZXNzO1xuICAgIGNvbnN0IGNvbmRNaW50cyA9ICh2YXVsdFR5cGUgPT09IFZhdWx0VHlwZS5CYXNlID8gdmF1bHQuY29uZEJhc2VNaW50cyA6IHZhdWx0LmNvbmRRdW90ZU1pbnRzKVxuICAgICAgLnNsaWNlKDAsIHZhdWx0Lm51bU9wdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICB1c2VyQXRhOiBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyhtaW50LCB1c2VyKSxcbiAgICAgIHVzZXJDb25kQVRBczogY29uZE1pbnRzLm1hcCgobSkgPT4gZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmMobSwgdXNlcikpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaFZhdWx0QVRBKHZhdWx0UGRhOiBQdWJsaWNLZXksIHZhdWx0VHlwZTogVmF1bHRUeXBlKSB7XG4gICAgY29uc3QgdmF1bHQgPSBhd2FpdCB0aGlzLmZldGNoVmF1bHQodmF1bHRQZGEpO1xuICAgIGNvbnN0IG1pbnQgPSB2YXVsdFR5cGUgPT09IFZhdWx0VHlwZS5CYXNlID8gdmF1bHQuYmFzZU1pbnQuYWRkcmVzcyA6IHZhdWx0LnF1b3RlTWludC5hZGRyZXNzO1xuICAgIHJldHVybiBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyhtaW50LCB2YXVsdFBkYSwgdHJ1ZSk7XG4gIH1cblxuICBhc3luYyBmZXRjaFVzZXJCYWxhbmNlcyh2YXVsdFBkYTogUHVibGljS2V5LCB1c2VyOiBQdWJsaWNLZXksIHZhdWx0VHlwZTogVmF1bHRUeXBlKSB7XG4gICAgY29uc3QgeyB1c2VyQXRhLCB1c2VyQ29uZEFUQXMgfSA9IGF3YWl0IHRoaXMuZmV0Y2hVc2VyQVRBcyh2YXVsdFBkYSwgdXNlciwgdmF1bHRUeXBlKTtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5wcm9ncmFtLnByb3ZpZGVyLmNvbm5lY3Rpb247XG5cbiAgICBjb25zdCBnZXRCYWxhbmNlU2FmZSA9IGFzeW5jIChhdGE6IFB1YmxpY0tleSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYWNjID0gYXdhaXQgZ2V0QWNjb3VudChjb25uZWN0aW9uLCBhdGEpO1xuICAgICAgICByZXR1cm4gbmV3IEJOKGFjYy5hbW91bnQudG9TdHJpbmcoKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgVG9rZW5BY2NvdW50Tm90Rm91bmRFcnJvcikge1xuICAgICAgICAgIHJldHVybiBuZXcgQk4oMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgW3VzZXJCYWxhbmNlLCAuLi5jb25kQmFsYW5jZXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgZ2V0QmFsYW5jZVNhZmUodXNlckF0YSksXG4gICAgICAuLi51c2VyQ29uZEFUQXMubWFwKGdldEJhbGFuY2VTYWZlKSxcbiAgICBdKTtcblxuICAgIHJldHVybiB7IHVzZXJCYWxhbmNlLCBjb25kQmFsYW5jZXMgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoVmF1bHRCYWxhbmNlKHZhdWx0UGRhOiBQdWJsaWNLZXksIHZhdWx0VHlwZTogVmF1bHRUeXBlKTogUHJvbWlzZTxCTj4ge1xuICAgIGNvbnN0IHZhdWx0QXRhID0gYXdhaXQgdGhpcy5mZXRjaFZhdWx0QVRBKHZhdWx0UGRhLCB2YXVsdFR5cGUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhY2MgPSBhd2FpdCBnZXRBY2NvdW50KHRoaXMucHJvZ3JhbS5wcm92aWRlci5jb25uZWN0aW9uLCB2YXVsdEF0YSk7XG4gICAgICByZXR1cm4gbmV3IEJOKGFjYy5hbW91bnQudG9TdHJpbmcoKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBUb2tlbkFjY291bnROb3RGb3VuZEVycm9yKSB7XG4gICAgICAgIHJldHVybiBuZXcgQk4oMCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qIEluc3RydWN0aW9uIEJ1aWxkZXJzICovXG5cbiAgaW5pdGlhbGl6ZShcbiAgICBwYXllcjogUHVibGljS2V5LFxuICAgIGJhc2VNaW50OiBQdWJsaWNLZXksXG4gICAgcXVvdGVNaW50OiBQdWJsaWNLZXksXG4gICAgbm9uY2U6IG51bWJlcixcbiAgICBvd25lcj86IFB1YmxpY0tleVxuICApIHtcbiAgICBjb25zdCB2YXVsdE93bmVyID0gb3duZXIgPz8gcGF5ZXI7XG4gICAgY29uc3QgW3ZhdWx0UGRhXSA9IHRoaXMuZGVyaXZlVmF1bHRQREEodmF1bHRPd25lciwgbm9uY2UpO1xuICAgIGNvbnN0IFtjb25kQmFzZU1pbnQwXSA9IHRoaXMuZGVyaXZlQ29uZGl0aW9uYWxNaW50KHZhdWx0UGRhLCBWYXVsdFR5cGUuQmFzZSwgMCk7XG4gICAgY29uc3QgW2NvbmRCYXNlTWludDFdID0gdGhpcy5kZXJpdmVDb25kaXRpb25hbE1pbnQodmF1bHRQZGEsIFZhdWx0VHlwZS5CYXNlLCAxKTtcbiAgICBjb25zdCBbY29uZFF1b3RlTWludDBdID0gdGhpcy5kZXJpdmVDb25kaXRpb25hbE1pbnQodmF1bHRQZGEsIFZhdWx0VHlwZS5RdW90ZSwgMCk7XG4gICAgY29uc3QgW2NvbmRRdW90ZU1pbnQxXSA9IHRoaXMuZGVyaXZlQ29uZGl0aW9uYWxNaW50KHZhdWx0UGRhLCBWYXVsdFR5cGUuUXVvdGUsIDEpO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGluaXRpYWxpemUoXG4gICAgICB0aGlzLnByb2dyYW0sXG4gICAgICBwYXllcixcbiAgICAgIHZhdWx0T3duZXIsXG4gICAgICB2YXVsdFBkYSxcbiAgICAgIGJhc2VNaW50LFxuICAgICAgcXVvdGVNaW50LFxuICAgICAgY29uZEJhc2VNaW50MCxcbiAgICAgIGNvbmRCYXNlTWludDEsXG4gICAgICBjb25kUXVvdGVNaW50MCxcbiAgICAgIGNvbmRRdW90ZU1pbnQxLFxuICAgICAgbm9uY2VcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJ1aWxkZXIsXG4gICAgICB2YXVsdFBkYSxcbiAgICAgIGNvbmRCYXNlTWludDAsXG4gICAgICBjb25kQmFzZU1pbnQxLFxuICAgICAgY29uZFF1b3RlTWludDAsXG4gICAgICBjb25kUXVvdGVNaW50MSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgYWRkT3B0aW9uKHBheWVyOiBQdWJsaWNLZXksIG93bmVyOiBQdWJsaWNLZXksIHZhdWx0UGRhOiBQdWJsaWNLZXkpIHtcbiAgICBjb25zdCB2YXVsdCA9IGF3YWl0IHRoaXMuZmV0Y2hWYXVsdCh2YXVsdFBkYSk7XG4gICAgY29uc3QgW2NvbmRCYXNlTWludF0gPSB0aGlzLmRlcml2ZUNvbmRpdGlvbmFsTWludCh2YXVsdFBkYSwgVmF1bHRUeXBlLkJhc2UsIHZhdWx0Lm51bU9wdGlvbnMpO1xuICAgIGNvbnN0IFtjb25kUXVvdGVNaW50XSA9IHRoaXMuZGVyaXZlQ29uZGl0aW9uYWxNaW50KHZhdWx0UGRhLCBWYXVsdFR5cGUuUXVvdGUsIHZhdWx0Lm51bU9wdGlvbnMpO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IGFkZE9wdGlvbihcbiAgICAgIHRoaXMucHJvZ3JhbSxcbiAgICAgIHBheWVyLFxuICAgICAgb3duZXIsXG4gICAgICB2YXVsdFBkYSxcbiAgICAgIGNvbmRCYXNlTWludCxcbiAgICAgIGNvbmRRdW90ZU1pbnRcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgYnVpbGRlciwgY29uZEJhc2VNaW50LCBjb25kUXVvdGVNaW50IH07XG4gIH1cblxuICBhY3RpdmF0ZShwYXllcjogUHVibGljS2V5LCBvd25lcjogUHVibGljS2V5LCB2YXVsdFBkYTogUHVibGljS2V5KSB7XG4gICAgcmV0dXJuIGFjdGl2YXRlKHRoaXMucHJvZ3JhbSwgcGF5ZXIsIG93bmVyLCB2YXVsdFBkYSk7XG4gIH1cblxuICBhc3luYyBkZXBvc2l0KFxuICAgIHNpZ25lcjogUHVibGljS2V5LFxuICAgIHZhdWx0UGRhOiBQdWJsaWNLZXksXG4gICAgdmF1bHRUeXBlOiBWYXVsdFR5cGUsXG4gICAgYW1vdW50OiBCTiB8IG51bWJlcixcbiAgICBvcHRpb25zPzogVmF1bHRBY3Rpb25PcHRpb25zXG4gICkge1xuICAgIGNvbnN0IHsgYXV0b1dyYXBVbndyYXAgPSB0cnVlLCBpbmNsdWRlQ3VCdWRnZXQgPSB0cnVlLCBjb21wdXRlVW5pdHMgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgICBjb25zdCB2YXVsdCA9IGF3YWl0IHRoaXMuZmV0Y2hWYXVsdCh2YXVsdFBkYSk7XG4gICAgY29uc3QgbWludCA9IHZhdWx0VHlwZSA9PT0gVmF1bHRUeXBlLkJhc2UgPyB2YXVsdC5iYXNlTWludC5hZGRyZXNzIDogdmF1bHQucXVvdGVNaW50LmFkZHJlc3M7XG4gICAgY29uc3QgY29uZE1pbnRzID0gKHZhdWx0VHlwZSA9PT0gVmF1bHRUeXBlLkJhc2UgPyB2YXVsdC5jb25kQmFzZU1pbnRzIDogdmF1bHQuY29uZFF1b3RlTWludHMpXG4gICAgICAuc2xpY2UoMCwgdmF1bHQubnVtT3B0aW9ucyk7XG5cbiAgICBjb25zdCBidWlsZGVyID0gZGVwb3NpdChcbiAgICAgIHRoaXMucHJvZ3JhbSxcbiAgICAgIHNpZ25lcixcbiAgICAgIHZhdWx0UGRhLFxuICAgICAgbWludCxcbiAgICAgIGNvbmRNaW50cyxcbiAgICAgIHZhdWx0VHlwZSxcbiAgICAgIGFtb3VudFxuICAgICk7XG5cbiAgICBjb25zdCBwcmVJeHM6IFJldHVyblR5cGU8dHlwZW9mIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQ+W10gPSBbXTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIHByZUl4cy5wdXNoKFxuICAgICAgICBDb21wdXRlQnVkZ2V0UHJvZ3JhbS5zZXRDb21wdXRlVW5pdExpbWl0KHtcbiAgICAgICAgICB1bml0czogY29tcHV0ZVVuaXRzID8/IHRoaXMuY29tcHV0ZVVuaXRzLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXV0b1dyYXBVbndyYXAgJiYgbWludC5lcXVhbHMoTkFUSVZFX01JTlQpKSB7XG4gICAgICBjb25zdCBhbW91bnRCTiA9IHR5cGVvZiBhbW91bnQgPT09IFwibnVtYmVyXCIgPyBuZXcgQk4oYW1vdW50KSA6IGFtb3VudDtcbiAgICAgIGNvbnN0IHdzb2xBdGEgPSBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyhOQVRJVkVfTUlOVCwgc2lnbmVyKTtcbiAgICAgIHByZUl4cy5wdXNoKFxuICAgICAgICBjcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50SWRlbXBvdGVudEluc3RydWN0aW9uKFxuICAgICAgICAgIHNpZ25lcixcbiAgICAgICAgICB3c29sQXRhLFxuICAgICAgICAgIHNpZ25lcixcbiAgICAgICAgICBOQVRJVkVfTUlOVFxuICAgICAgICApLFxuICAgICAgICBTeXN0ZW1Qcm9ncmFtLnRyYW5zZmVyKHtcbiAgICAgICAgICBmcm9tUHVia2V5OiBzaWduZXIsXG4gICAgICAgICAgdG9QdWJrZXk6IHdzb2xBdGEsXG4gICAgICAgICAgbGFtcG9ydHM6IEJpZ0ludChhbW91bnRCTi50b1N0cmluZygpKSxcbiAgICAgICAgfSksXG4gICAgICAgIGNyZWF0ZVN5bmNOYXRpdmVJbnN0cnVjdGlvbih3c29sQXRhKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlSXhzLmxlbmd0aCA+IDAgPyBidWlsZGVyLnByZUluc3RydWN0aW9ucyhwcmVJeHMpIDogYnVpbGRlcjtcbiAgfVxuXG4gIGFzeW5jIHdpdGhkcmF3KFxuICAgIHNpZ25lcjogUHVibGljS2V5LFxuICAgIHZhdWx0UGRhOiBQdWJsaWNLZXksXG4gICAgdmF1bHRUeXBlOiBWYXVsdFR5cGUsXG4gICAgYW1vdW50OiBCTiB8IG51bWJlcixcbiAgICBvcHRpb25zPzogVmF1bHRBY3Rpb25PcHRpb25zXG4gICkge1xuICAgIGNvbnN0IHsgYXV0b1dyYXBVbndyYXAgPSB0cnVlLCBpbmNsdWRlQ3VCdWRnZXQgPSB0cnVlLCBjb21wdXRlVW5pdHMgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgICBjb25zdCB2YXVsdCA9IGF3YWl0IHRoaXMuZmV0Y2hWYXVsdCh2YXVsdFBkYSk7XG4gICAgY29uc3QgbWludCA9IHZhdWx0VHlwZSA9PT0gVmF1bHRUeXBlLkJhc2UgPyB2YXVsdC5iYXNlTWludC5hZGRyZXNzIDogdmF1bHQucXVvdGVNaW50LmFkZHJlc3M7XG4gICAgY29uc3QgY29uZE1pbnRzID0gKHZhdWx0VHlwZSA9PT0gVmF1bHRUeXBlLkJhc2UgPyB2YXVsdC5jb25kQmFzZU1pbnRzIDogdmF1bHQuY29uZFF1b3RlTWludHMpXG4gICAgICAuc2xpY2UoMCwgdmF1bHQubnVtT3B0aW9ucyk7XG5cbiAgICBsZXQgYnVpbGRlciA9IHdpdGhkcmF3KFxuICAgICAgdGhpcy5wcm9ncmFtLFxuICAgICAgc2lnbmVyLFxuICAgICAgdmF1bHRQZGEsXG4gICAgICBtaW50LFxuICAgICAgY29uZE1pbnRzLFxuICAgICAgdmF1bHRUeXBlLFxuICAgICAgYW1vdW50XG4gICAgKTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnByZUluc3RydWN0aW9ucyhbXG4gICAgICAgIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQoe1xuICAgICAgICAgIHVuaXRzOiBjb21wdXRlVW5pdHMgPz8gdGhpcy5jb21wdXRlVW5pdHMsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgaWYgKGF1dG9XcmFwVW53cmFwICYmIG1pbnQuZXF1YWxzKE5BVElWRV9NSU5UKSkge1xuICAgICAgY29uc3Qgd3NvbEF0YSA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKE5BVElWRV9NSU5ULCBzaWduZXIpO1xuICAgICAgYnVpbGRlciA9IGJ1aWxkZXIucG9zdEluc3RydWN0aW9ucyhbXG4gICAgICAgIGNyZWF0ZUNsb3NlQWNjb3VudEluc3RydWN0aW9uKHdzb2xBdGEsIHNpZ25lciwgc2lnbmVyKSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgZmluYWxpemUocGF5ZXI6IFB1YmxpY0tleSwgb3duZXI6IFB1YmxpY0tleSwgdmF1bHRQZGE6IFB1YmxpY0tleSwgd2lubmluZ0lkeDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGZpbmFsaXplKHRoaXMucHJvZ3JhbSwgcGF5ZXIsIG93bmVyLCB2YXVsdFBkYSwgd2lubmluZ0lkeCk7XG4gIH1cblxuICBhc3luYyByZWRlZW1XaW5uaW5ncyhcbiAgICBzaWduZXI6IFB1YmxpY0tleSxcbiAgICB2YXVsdFBkYTogUHVibGljS2V5LFxuICAgIHZhdWx0VHlwZTogVmF1bHRUeXBlLFxuICAgIG9wdGlvbnM/OiBWYXVsdEFjdGlvbk9wdGlvbnNcbiAgKSB7XG4gICAgY29uc3QgeyBhdXRvV3JhcFVud3JhcCA9IHRydWUsIGluY2x1ZGVDdUJ1ZGdldCA9IHRydWUsIGNvbXB1dGVVbml0cyB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGNvbnN0IHZhdWx0ID0gYXdhaXQgdGhpcy5mZXRjaFZhdWx0KHZhdWx0UGRhKTtcbiAgICBjb25zdCBtaW50ID0gdmF1bHRUeXBlID09PSBWYXVsdFR5cGUuQmFzZSA/IHZhdWx0LmJhc2VNaW50LmFkZHJlc3MgOiB2YXVsdC5xdW90ZU1pbnQuYWRkcmVzcztcbiAgICBjb25zdCBjb25kTWludHMgPSAodmF1bHRUeXBlID09PSBWYXVsdFR5cGUuQmFzZSA/IHZhdWx0LmNvbmRCYXNlTWludHMgOiB2YXVsdC5jb25kUXVvdGVNaW50cylcbiAgICAgIC5zbGljZSgwLCB2YXVsdC5udW1PcHRpb25zKTtcblxuICAgIGxldCBidWlsZGVyID0gcmVkZWVtV2lubmluZ3MoXG4gICAgICB0aGlzLnByb2dyYW0sXG4gICAgICBzaWduZXIsXG4gICAgICB2YXVsdFBkYSxcbiAgICAgIG1pbnQsXG4gICAgICBjb25kTWludHMsXG4gICAgICB2YXVsdFR5cGVcbiAgICApO1xuXG4gICAgaWYgKGluY2x1ZGVDdUJ1ZGdldCkge1xuICAgICAgYnVpbGRlciA9IGJ1aWxkZXIucHJlSW5zdHJ1Y3Rpb25zKFtcbiAgICAgICAgQ29tcHV0ZUJ1ZGdldFByb2dyYW0uc2V0Q29tcHV0ZVVuaXRMaW1pdCh7XG4gICAgICAgICAgdW5pdHM6IGNvbXB1dGVVbml0cyA/PyB0aGlzLmNvbXB1dGVVbml0cyxcbiAgICAgICAgfSksXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBpZiAoYXV0b1dyYXBVbndyYXAgJiYgbWludC5lcXVhbHMoTkFUSVZFX01JTlQpKSB7XG4gICAgICBjb25zdCB3c29sQXRhID0gZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmMoTkFUSVZFX01JTlQsIHNpZ25lcik7XG4gICAgICBidWlsZGVyID0gYnVpbGRlci5wb3N0SW5zdHJ1Y3Rpb25zKFtcbiAgICAgICAgY3JlYXRlQ2xvc2VBY2NvdW50SW5zdHJ1Y3Rpb24od3NvbEF0YSwgc2lnbmVyLCBzaWduZXIpLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cbn1cbiJdfQ==
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VaultClient=void 0;const anchor_1=require("@coral-xyz/anchor"),web3_js_1=require("@solana/web3.js"),spl_token_1=require("@solana/spl-token"),constants_1=require("./constants"),types_1=require("./types"),utils_1=require("./utils"),instructions_1=require("./instructions"),idls_1=require("../generated/idls"),DEFAULT_COMPUTE_UNITS=45e4;class VaultClient{constructor(t,e,s){this.programId=e??constants_1.PROGRAM_ID,this.computeUnits=s??45e4,this.program=new anchor_1.Program(idls_1.VaultIDL,t)}deriveVaultPDA(t,e){return(0,utils_1.deriveVaultPDA)(t,e,this.programId)}deriveConditionalMint(t,e,s){return(0,utils_1.deriveConditionalMint)(t,e,s,this.programId)}async fetchVault(t){return(0,utils_1.fetchVaultAccount)(this.program,t)}async fetchUserATAs(t,e,s){const n=await this.fetchVault(t),i=s===types_1.VaultType.Base?n.baseMint.address:n.quoteMint.address,o=(s===types_1.VaultType.Base?n.condBaseMints:n.condQuoteMints).slice(0,n.numOptions);return{userAta:(0,spl_token_1.getAssociatedTokenAddressSync)(i,e),userCondATAs:o.map(t=>(0,spl_token_1.getAssociatedTokenAddressSync)(t,e))}}async fetchVaultATA(t,e){const s=await this.fetchVault(t),n=e===types_1.VaultType.Base?s.baseMint.address:s.quoteMint.address;return(0,spl_token_1.getAssociatedTokenAddressSync)(n,t,!0)}async fetchUserBalances(t,e,s){const{userAta:n,userCondATAs:i}=await this.fetchUserATAs(t,e,s),o=this.program.provider.connection,a=async t=>{try{const e=await(0,spl_token_1.getAccount)(o,t);return new anchor_1.BN(e.amount.toString())}catch(t){if(t instanceof spl_token_1.TokenAccountNotFoundError)return new anchor_1.BN(0);throw t}},[r,...u]=await Promise.all([a(n),...i.map(a)]);return{userBalance:r,condBalances:u}}async fetchVaultBalance(t,e){const s=await this.fetchVaultATA(t,e);try{const t=await(0,spl_token_1.getAccount)(this.program.provider.connection,s);return new anchor_1.BN(t.amount.toString())}catch(t){if(t instanceof spl_token_1.TokenAccountNotFoundError)return new anchor_1.BN(0);throw t}}initialize(t,e,s,n,i){const o=i??t,[a]=this.deriveVaultPDA(o,n),[r]=this.deriveConditionalMint(a,types_1.VaultType.Base,0),[u]=this.deriveConditionalMint(a,types_1.VaultType.Base,1),[c]=this.deriveConditionalMint(a,types_1.VaultType.Quote,0),[p]=this.deriveConditionalMint(a,types_1.VaultType.Quote,1);return{builder:(0,instructions_1.initialize)(this.program,t,o,a,e,s,r,u,c,p,n),vaultPda:a,condBaseMint0:r,condBaseMint1:u,condQuoteMint0:c,condQuoteMint1:p}}async addOption(t,e,s){const n=await this.fetchVault(s),[i]=this.deriveConditionalMint(s,types_1.VaultType.Base,n.numOptions),[o]=this.deriveConditionalMint(s,types_1.VaultType.Quote,n.numOptions);return{builder:(0,instructions_1.addOption)(this.program,t,e,s,i,o),condBaseMint:i,condQuoteMint:o}}activate(t,e,s){return(0,instructions_1.activate)(this.program,t,e,s)}async deposit(t,e,s,n,i){const{autoWrapUnwrap:o=!0,includeCuBudget:a=!0,computeUnits:r}=i??{},u=await this.fetchVault(e),c=s===types_1.VaultType.Base?u.baseMint.address:u.quoteMint.address,p=(s===types_1.VaultType.Base?u.condBaseMints:u.condQuoteMints).slice(0,u.numOptions),d=(0,instructions_1.deposit)(this.program,t,e,c,p,s,n),l=[];if(a&&l.push(web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({units:r??this.computeUnits})),o&&c.equals(spl_token_1.NATIVE_MINT)){const e="number"==typeof n?new anchor_1.BN(n):n,s=(0,spl_token_1.getAssociatedTokenAddressSync)(spl_token_1.NATIVE_MINT,t);l.push((0,spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(t,s,t,spl_token_1.NATIVE_MINT),web3_js_1.SystemProgram.transfer({fromPubkey:t,toPubkey:s,lamports:BigInt(e.toString())}),(0,spl_token_1.createSyncNativeInstruction)(s))}return l.length>0?d.preInstructions(l):d}async withdraw(t,e,s,n,i){const{autoWrapUnwrap:o=!0,includeCuBudget:a=!0,computeUnits:r}=i??{},u=await this.fetchVault(e),c=s===types_1.VaultType.Base?u.baseMint.address:u.quoteMint.address,p=(s===types_1.VaultType.Base?u.condBaseMints:u.condQuoteMints).slice(0,u.numOptions);let d=(0,instructions_1.withdraw)(this.program,t,e,c,p,s,n);if(a&&(d=d.preInstructions([web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({units:r??this.computeUnits})])),o&&c.equals(spl_token_1.NATIVE_MINT)){const e=(0,spl_token_1.getAssociatedTokenAddressSync)(spl_token_1.NATIVE_MINT,t);d=d.postInstructions([(0,spl_token_1.createCloseAccountInstruction)(e,t,t)])}return d}finalize(t,e,s,n){return(0,instructions_1.finalize)(this.program,t,e,s,n)}async redeemWinnings(t,e,s,n){const{autoWrapUnwrap:i=!0,includeCuBudget:o=!0,computeUnits:a}=n??{},r=await this.fetchVault(e),u=s===types_1.VaultType.Base?r.baseMint.address:r.quoteMint.address,c=(s===types_1.VaultType.Base?r.condBaseMints:r.condQuoteMints).slice(0,r.numOptions);let p=(0,instructions_1.redeemWinnings)(this.program,t,e,u,c,s);if(o&&(p=p.preInstructions([web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({units:a??this.computeUnits})])),i&&u.equals(spl_token_1.NATIVE_MINT)){const e=(0,spl_token_1.getAssociatedTokenAddressSync)(spl_token_1.NATIVE_MINT,t);p=p.postInstructions([(0,spl_token_1.createCloseAccountInstruction)(e,t,t)])}return p}}exports.VaultClient=VaultClient;
@@ -1,20 +1 @@
1
- "use strict";
2
- /*
3
- * Constants for the Vault program.
4
- * Parsed from the generated IDL to stay in sync with the Rust program.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.VAULT_VERSION = exports.MIN_OPTIONS = exports.MAX_OPTIONS = exports.CONDITIONAL_MINT_SEED = exports.VAULT_SEED = exports.PROGRAM_ID = void 0;
8
- const web3_js_1 = require("@solana/web3.js");
9
- const idls_1 = require("../generated/idls");
10
- const utils_1 = require("../utils");
11
- /* Program ID */
12
- exports.PROGRAM_ID = new web3_js_1.PublicKey(idls_1.VaultIDL.address);
13
- /* PDA Seeds */
14
- exports.VAULT_SEED = (0, utils_1.parseIdlBytes)((0, utils_1.getIdlConstant)(idls_1.VaultIDL, "VAULT_SEED"));
15
- exports.CONDITIONAL_MINT_SEED = (0, utils_1.parseIdlBytes)((0, utils_1.getIdlConstant)(idls_1.VaultIDL, "CONDITIONAL_MINT_SEED"));
16
- /* Numeric Constants */
17
- exports.MAX_OPTIONS = Number((0, utils_1.getIdlConstant)(idls_1.VaultIDL, "MAX_OPTIONS"));
18
- exports.MIN_OPTIONS = Number((0, utils_1.getIdlConstant)(idls_1.VaultIDL, "MIN_OPTIONS"));
19
- exports.VAULT_VERSION = Number((0, utils_1.getIdlConstant)(idls_1.VaultIDL, "VAULT_VERSION"));
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhdWx0L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCw2Q0FBNEM7QUFDNUMsNENBQTZDO0FBQzdDLG9DQUF5RDtBQUV6RCxnQkFBZ0I7QUFFSCxRQUFBLFVBQVUsR0FBRyxJQUFJLG1CQUFTLENBQUMsZUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRTFELGVBQWU7QUFFRixRQUFBLFVBQVUsR0FBRyxJQUFBLHFCQUFhLEVBQUMsSUFBQSxzQkFBYyxFQUFDLGVBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ25FLFFBQUEscUJBQXFCLEdBQUcsSUFBQSxxQkFBYSxFQUFDLElBQUEsc0JBQWMsRUFBQyxlQUFRLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0FBRXRHLHVCQUF1QjtBQUVWLFFBQUEsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFBLHNCQUFjLEVBQUMsZUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDOUQsUUFBQSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUEsc0JBQWMsRUFBQyxlQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUM5RCxRQUFBLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBQSxzQkFBYyxFQUFDLGVBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvbnN0YW50cyBmb3IgdGhlIFZhdWx0IHByb2dyYW0uXG4gKiBQYXJzZWQgZnJvbSB0aGUgZ2VuZXJhdGVkIElETCB0byBzdGF5IGluIHN5bmMgd2l0aCB0aGUgUnVzdCBwcm9ncmFtLlxuICovXG5cbmltcG9ydCB7IFB1YmxpY0tleSB9IGZyb20gXCJAc29sYW5hL3dlYjMuanNcIjtcbmltcG9ydCB7IFZhdWx0SURMIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC9pZGxzXCI7XG5pbXBvcnQgeyBwYXJzZUlkbEJ5dGVzLCBnZXRJZGxDb25zdGFudCB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKiBQcm9ncmFtIElEICovXG5cbmV4cG9ydCBjb25zdCBQUk9HUkFNX0lEID0gbmV3IFB1YmxpY0tleShWYXVsdElETC5hZGRyZXNzKTtcblxuLyogUERBIFNlZWRzICovXG5cbmV4cG9ydCBjb25zdCBWQVVMVF9TRUVEID0gcGFyc2VJZGxCeXRlcyhnZXRJZGxDb25zdGFudChWYXVsdElETCwgXCJWQVVMVF9TRUVEXCIpKTtcbmV4cG9ydCBjb25zdCBDT05ESVRJT05BTF9NSU5UX1NFRUQgPSBwYXJzZUlkbEJ5dGVzKGdldElkbENvbnN0YW50KFZhdWx0SURMLCBcIkNPTkRJVElPTkFMX01JTlRfU0VFRFwiKSk7XG5cbi8qIE51bWVyaWMgQ29uc3RhbnRzICovXG5cbmV4cG9ydCBjb25zdCBNQVhfT1BUSU9OUyA9IE51bWJlcihnZXRJZGxDb25zdGFudChWYXVsdElETCwgXCJNQVhfT1BUSU9OU1wiKSk7XG5leHBvcnQgY29uc3QgTUlOX09QVElPTlMgPSBOdW1iZXIoZ2V0SWRsQ29uc3RhbnQoVmF1bHRJREwsIFwiTUlOX09QVElPTlNcIikpO1xuZXhwb3J0IGNvbnN0IFZBVUxUX1ZFUlNJT04gPSBOdW1iZXIoZ2V0SWRsQ29uc3RhbnQoVmF1bHRJREwsIFwiVkFVTFRfVkVSU0lPTlwiKSk7XG4iXX0=
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VAULT_VERSION=exports.MIN_OPTIONS=exports.MAX_OPTIONS=exports.CONDITIONAL_MINT_SEED=exports.VAULT_SEED=exports.PROGRAM_ID=void 0;const web3_js_1=require("@solana/web3.js"),idls_1=require("../generated/idls"),utils_1=require("../utils");exports.PROGRAM_ID=new web3_js_1.PublicKey(idls_1.VaultIDL.address),exports.VAULT_SEED=(0,utils_1.parseIdlBytes)((0,utils_1.getIdlConstant)(idls_1.VaultIDL,"VAULT_SEED")),exports.CONDITIONAL_MINT_SEED=(0,utils_1.parseIdlBytes)((0,utils_1.getIdlConstant)(idls_1.VaultIDL,"CONDITIONAL_MINT_SEED")),exports.MAX_OPTIONS=Number((0,utils_1.getIdlConstant)(idls_1.VaultIDL,"MAX_OPTIONS")),exports.MIN_OPTIONS=Number((0,utils_1.getIdlConstant)(idls_1.VaultIDL,"MIN_OPTIONS")),exports.VAULT_VERSION=Number((0,utils_1.getIdlConstant)(idls_1.VaultIDL,"VAULT_VERSION"));
@@ -1,22 +1 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./constants"), exports);
18
- __exportStar(require("./types"), exports);
19
- __exportStar(require("./utils"), exports);
20
- __exportStar(require("./instructions"), exports);
21
- __exportStar(require("./client"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmF1bHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QjtBQUM1QiwwQ0FBd0I7QUFDeEIsMENBQXdCO0FBQ3hCLGlEQUErQjtBQUMvQiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW5zdHJ1Y3Rpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jbGllbnRcIjtcbiJdfQ==
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__exportStar=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./constants"),exports),__exportStar(require("./types"),exports),__exportStar(require("./utils"),exports),__exportStar(require("./instructions"),exports),__exportStar(require("./client"),exports);
@@ -1,109 +1 @@
1
- "use strict";
2
- /*
3
- * Low-level instruction builders for the Vault program.
4
- * These are thin wrappers around the program methods - use VaultClient for higher-level operations.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.initialize = initialize;
8
- exports.addOption = addOption;
9
- exports.activate = activate;
10
- exports.deposit = deposit;
11
- exports.withdraw = withdraw;
12
- exports.finalize = finalize;
13
- exports.redeemWinnings = redeemWinnings;
14
- const anchor_1 = require("@coral-xyz/anchor");
15
- const spl_token_1 = require("@solana/spl-token");
16
- const types_1 = require("./types");
17
- function initialize(program, payer, owner, vaultPda, baseMint, quoteMint, condBaseMint0, condBaseMint1, condQuoteMint0, condQuoteMint1, nonce) {
18
- return program.methods.initialize(nonce).accountsPartial({
19
- payer,
20
- owner,
21
- vault: vaultPda,
22
- baseMint,
23
- quoteMint,
24
- condBaseMint0,
25
- condBaseMint1,
26
- condQuoteMint0,
27
- condQuoteMint1,
28
- });
29
- }
30
- function addOption(program, payer, owner, vaultPda, condBaseMint, condQuoteMint) {
31
- return program.methods.addOption().accountsPartial({
32
- payer,
33
- owner,
34
- vault: vaultPda,
35
- condBaseMint,
36
- condQuoteMint,
37
- });
38
- }
39
- function activate(program, payer, owner, vaultPda) {
40
- return program.methods.activate().accountsPartial({
41
- payer,
42
- owner,
43
- vault: vaultPda,
44
- });
45
- }
46
- function deposit(program, signer, vaultPda, mint, condMints, vaultType, amount) {
47
- const amountBN = typeof amount === "number" ? new anchor_1.BN(amount) : amount;
48
- const vaultTypeArg = vaultType === types_1.VaultType.Base ? { base: {} } : { quote: {} };
49
- return program.methods
50
- .deposit(vaultTypeArg, amountBN)
51
- .accountsPartial({
52
- signer,
53
- vault: vaultPda,
54
- mint,
55
- })
56
- .remainingAccounts(condMints.flatMap((condMint) => [
57
- { pubkey: condMint, isSigner: false, isWritable: true },
58
- {
59
- pubkey: (0, spl_token_1.getAssociatedTokenAddressSync)(condMint, signer),
60
- isSigner: false,
61
- isWritable: true,
62
- },
63
- ]));
64
- }
65
- function withdraw(program, signer, vaultPda, mint, condMints, vaultType, amount) {
66
- const amountBN = typeof amount === "number" ? new anchor_1.BN(amount) : amount;
67
- const vaultTypeArg = vaultType === types_1.VaultType.Base ? { base: {} } : { quote: {} };
68
- return program.methods
69
- .withdraw(vaultTypeArg, amountBN)
70
- .accountsPartial({
71
- signer,
72
- vault: vaultPda,
73
- mint,
74
- })
75
- .remainingAccounts(condMints.flatMap((condMint) => [
76
- { pubkey: condMint, isSigner: false, isWritable: true },
77
- {
78
- pubkey: (0, spl_token_1.getAssociatedTokenAddressSync)(condMint, signer),
79
- isSigner: false,
80
- isWritable: true,
81
- },
82
- ]));
83
- }
84
- function finalize(program, payer, owner, vaultPda, winningIdx) {
85
- return program.methods.finalize(winningIdx).accountsPartial({
86
- payer,
87
- owner,
88
- vault: vaultPda,
89
- });
90
- }
91
- function redeemWinnings(program, signer, vaultPda, mint, condMints, vaultType) {
92
- const vaultTypeArg = vaultType === types_1.VaultType.Base ? { base: {} } : { quote: {} };
93
- return program.methods
94
- .redeemWinnings(vaultTypeArg)
95
- .accountsPartial({
96
- signer,
97
- vault: vaultPda,
98
- mint,
99
- })
100
- .remainingAccounts(condMints.flatMap((condMint) => [
101
- { pubkey: condMint, isSigner: false, isWritable: true },
102
- {
103
- pubkey: (0, spl_token_1.getAssociatedTokenAddressSync)(condMint, signer),
104
- isSigner: false,
105
- isWritable: true,
106
- },
107
- ]));
108
- }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhdWx0L2luc3RydWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQU9ILGdDQXdCQztBQUVELDhCQWVDO0FBRUQsNEJBV0M7QUFFRCwwQkE2QkM7QUFFRCw0QkE2QkM7QUFFRCw0QkFZQztBQUVELHdDQTJCQztBQXBLRCw4Q0FBZ0Q7QUFFaEQsaURBQWtFO0FBQ2xFLG1DQUEyQztBQUUzQyxTQUFnQixVQUFVLENBQ3hCLE9BQXVCLEVBQ3ZCLEtBQWdCLEVBQ2hCLEtBQWdCLEVBQ2hCLFFBQW1CLEVBQ25CLFFBQW1CLEVBQ25CLFNBQW9CLEVBQ3BCLGFBQXdCLEVBQ3hCLGFBQXdCLEVBQ3hCLGNBQXlCLEVBQ3pCLGNBQXlCLEVBQ3pCLEtBQWE7SUFFYixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUN2RCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUssRUFBRSxRQUFRO1FBQ2YsUUFBUTtRQUNSLFNBQVM7UUFDVCxhQUFhO1FBQ2IsYUFBYTtRQUNiLGNBQWM7UUFDZCxjQUFjO0tBQ2YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQWdCLFNBQVMsQ0FDdkIsT0FBdUIsRUFDdkIsS0FBZ0IsRUFDaEIsS0FBZ0IsRUFDaEIsUUFBbUIsRUFDbkIsWUFBdUIsRUFDdkIsYUFBd0I7SUFFeEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUNqRCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUssRUFBRSxRQUFRO1FBQ2YsWUFBWTtRQUNaLGFBQWE7S0FDZCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUN0QixPQUF1QixFQUN2QixLQUFnQixFQUNoQixLQUFnQixFQUNoQixRQUFtQjtJQUVuQixPQUFP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QUFjLENBQzVCLE9BQXVCLEVBQ3ZCLE1BQWlCLEVBQ2pCLFFBQW1CLEVBQ25CLElBQWUsRUFDZixTQUFzQixFQUN0QixTQUFvQjtJQUVwQixNQUFNLFlBQVksR0FBRyxTQUFTLEtBQUssaUJBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUVqRixPQUFPLE9BQU8sQ0FBQyxPQUFPO1NBQ25CLGNBQWMsQ0FBQyxZQUFZLENBQUM7U0FDNUIsZUFBZSxDQUFDO1FBQ2YsTUFBTTtRQUNOLEtBQUssRUFBRSxRQUFRO1FBQ2YsSUFBSTtLQUNMLENBQUM7U0FDRCxpQkFBaUIsQ0FDaEIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDOUIsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUN2RDtZQUNFLE1BQU0sRUFBRSxJQUFBLHlDQUE2QixFQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7WUFDdkQsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsSUFBSTtTQUNqQjtLQUNGLENBQUMsQ0FDSCxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBMb3ctbGV2ZWwgaW5zdHJ1Y3Rpb24gYnVpbGRlcnMgZm9yIHRoZSBWYXVsdCBwcm9ncmFtLlxuICogVGhlc2UgYXJlIHRoaW4gd3JhcHBlcnMgYXJvdW5kIHRoZSBwcm9ncmFtIG1ldGhvZHMgLSB1c2UgVmF1bHRDbGllbnQgZm9yIGhpZ2hlci1sZXZlbCBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB7IFByb2dyYW0sIEJOIH0gZnJvbSBcIkBjb3JhbC14eXovYW5jaG9yXCI7XG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tIFwiQHNvbGFuYS93ZWIzLmpzXCI7XG5pbXBvcnQgeyBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyB9IGZyb20gXCJAc29sYW5hL3NwbC10b2tlblwiO1xuaW1wb3J0IHsgVmF1bHQsIFZhdWx0VHlwZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplKFxuICBwcm9ncmFtOiBQcm9ncmFtPFZhdWx0PixcbiAgcGF5ZXI6IFB1YmxpY0tleSxcbiAgb3duZXI6IFB1YmxpY0tleSxcbiAgdmF1bHRQZGE6IFB1YmxpY0tleSxcbiAgYmFzZU1pbnQ6IFB1YmxpY0tleSxcbiAgcXVvdGVNaW50OiBQdWJsaWNLZXksXG4gIGNvbmRCYXNlTWludDA6IFB1YmxpY0tleSxcbiAgY29uZEJhc2VNaW50MTogUHVibGljS2V5LFxuICBjb25kUXVvdGVNaW50MDogUHVibGljS2V5LFxuICBjb25kUXVvdGVNaW50MTogUHVibGljS2V5LFxuICBub25jZTogbnVtYmVyXG4pIHtcbiAgcmV0dXJuIHByb2dyYW0ubWV0aG9kcy5pbml0aWFsaXplKG5vbmNlKS5hY2NvdW50c1BhcnRpYWwoe1xuICAgIHBheWVyLFxuICAgIG93bmVyLFxuICAgIHZhdWx0OiB2YXVsdFBkYSxcbiAgICBiYXNlTWludCxcbiAgICBxdW90ZU1pbnQsXG4gICAgY29uZEJhc2VNaW50MCxcbiAgICBjb25kQmFzZU1pbnQxLFxuICAgIGNvbmRRdW90ZU1pbnQwLFxuICAgIGNvbmRRdW90ZU1pbnQxLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZE9wdGlvbihcbiAgcHJvZ3JhbTogUHJvZ3JhbTxWYXVsdD4sXG4gIHBheWVyOiBQdWJsaWNLZXksXG4gIG93bmVyOiBQdWJsaWNLZXksXG4gIHZhdWx0UGRhOiBQdWJsaWNLZXksXG4gIGNvbmRCYXNlTWludDogUHVibGljS2V5LFxuICBjb25kUXVvdGVNaW50OiBQdWJsaWNLZXlcbikge1xuICByZXR1cm4gcHJvZ3JhbS5tZXRob2RzLmFkZE9wdGlvbigpLmFjY291bnRzUGFydGlhbCh7XG4gICAgcGF5ZXIsXG4gICAgb3duZXIsXG4gICAgdmF1bHQ6IHZhdWx0UGRhLFxuICAgIGNvbmRCYXNlTWludCxcbiAgICBjb25kUXVvdGVNaW50LFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFjdGl2YXRlKFxuICBwcm9ncmFtOiBQcm9ncmFtPFZhdWx0PixcbiAgcGF5ZXI6IFB1YmxpY0tleSxcbiAgb3duZXI6IFB1YmxpY0tleSxcbiAgdmF1bHRQZGE6IFB1YmxpY0tleVxuKSB7XG4gIHJldHVybiBwcm9ncmFtLm1ldGhvZHMuYWN0aXZhdGUoKS5hY2NvdW50c1BhcnRpYWwoe1xuICAgIHBheWVyLFxuICAgIG93bmVyLFxuICAgIHZhdWx0OiB2YXVsdFBkYSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXBvc2l0KFxuICBwcm9ncmFtOiBQcm9ncmFtPFZhdWx0PixcbiAgc2lnbmVyOiBQdWJsaWNLZXksXG4gIHZhdWx0UGRhOiBQdWJsaWNLZXksXG4gIG1pbnQ6IFB1YmxpY0tleSxcbiAgY29uZE1pbnRzOiBQdWJsaWNLZXlbXSxcbiAgdmF1bHRUeXBlOiBWYXVsdFR5cGUsXG4gIGFtb3VudDogQk4gfCBudW1iZXJcbikge1xuICBjb25zdCBhbW91bnRCTiA9IHR5cGVvZiBhbW91bnQgPT09IFwibnVtYmVyXCIgPyBuZXcgQk4oYW1vdW50KSA6IGFtb3VudDtcbiAgY29uc3QgdmF1bHRUeXBlQXJnID0gdmF1bHRUeXBlID09PSBWYXVsdFR5cGUuQmFzZSA/IHsgYmFzZToge30gfSA6IHsgcXVvdGU6IHt9IH07XG5cbiAgcmV0dXJuIHByb2dyYW0ubWV0aG9kc1xuICAgIC5kZXBvc2l0KHZhdWx0VHlwZUFyZywgYW1vdW50Qk4pXG4gICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICBzaWduZXIsXG4gICAgICB2YXVsdDogdmF1bHRQZGEsXG4gICAgICBtaW50LFxuICAgIH0pXG4gICAgLnJlbWFpbmluZ0FjY291bnRzKFxuICAgICAgY29uZE1pbnRzLmZsYXRNYXAoKGNvbmRNaW50KSA9PiBbXG4gICAgICAgIHsgcHVia2V5OiBjb25kTWludCwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJrZXk6IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKGNvbmRNaW50LCBzaWduZXIpLFxuICAgICAgICAgIGlzU2lnbmVyOiBmYWxzZSxcbiAgICAgICAgICBpc1dyaXRhYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aGRyYXcoXG4gIHByb2dyYW06IFByb2dyYW08VmF1bHQ+LFxuICBzaWduZXI6IFB1YmxpY0tleSxcbiAgdmF1bHRQZGE6IFB1YmxpY0tleSxcbiAgbWludDogUHVibGljS2V5LFxuICBjb25kTWludHM6IFB1YmxpY0tleVtdLFxuICB2YXVsdFR5cGU6IFZhdWx0VHlwZSxcbiAgYW1vdW50OiBCTiB8IG51bWJlclxuKSB7XG4gIGNvbnN0IGFtb3VudEJOID0gdHlwZW9mIGFtb3VudCA9PT0gXCJudW1iZXJcIiA/IG5ldyBCTihhbW91bnQpIDogYW1vdW50O1xuICBjb25zdCB2YXVsdFR5cGVBcmcgPSB2YXVsdFR5cGUgPT09IFZhdWx0VHlwZS5CYXNlID8geyBiYXNlOiB7fSB9IDogeyBxdW90ZToge30gfTtcblxuICByZXR1cm4gcHJvZ3JhbS5tZXRob2RzXG4gICAgLndpdGhkcmF3KHZhdWx0VHlwZUFyZywgYW1vdW50Qk4pXG4gICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICBzaWduZXIsXG4gICAgICB2YXVsdDogdmF1bHRQZGEsXG4gICAgICBtaW50LFxuICAgIH0pXG4gICAgLnJlbWFpbmluZ0FjY291bnRzKFxuICAgICAgY29uZE1pbnRzLmZsYXRNYXAoKGNvbmRNaW50KSA9PiBbXG4gICAgICAgIHsgcHVia2V5OiBjb25kTWludCwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJrZXk6IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKGNvbmRNaW50LCBzaWduZXIpLFxuICAgICAgICAgIGlzU2lnbmVyOiBmYWxzZSxcbiAgICAgICAgICBpc1dyaXRhYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluYWxpemUoXG4gIHByb2dyYW06IFByb2dyYW08VmF1bHQ+LFxuICBwYXllcjogUHVibGljS2V5LFxuICBvd25lcjogUHVibGljS2V5LFxuICB2YXVsdFBkYTogUHVibGljS2V5LFxuICB3aW5uaW5nSWR4OiBudW1iZXJcbikge1xuICByZXR1cm4gcHJvZ3JhbS5tZXRob2RzLmZpbmFsaXplKHdpbm5pbmdJZHgpLmFjY291bnRzUGFydGlhbCh7XG4gICAgcGF5ZXIsXG4gICAgb3duZXIsXG4gICAgdmF1bHQ6IHZhdWx0UGRhLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZGVlbVdpbm5pbmdzKFxuICBwcm9ncmFtOiBQcm9ncmFtPFZhdWx0PixcbiAgc2lnbmVyOiBQdWJsaWNLZXksXG4gIHZhdWx0UGRhOiBQdWJsaWNLZXksXG4gIG1pbnQ6IFB1YmxpY0tleSxcbiAgY29uZE1pbnRzOiBQdWJsaWNLZXlbXSxcbiAgdmF1bHRUeXBlOiBWYXVsdFR5cGVcbikge1xuICBjb25zdCB2YXVsdFR5cGVBcmcgPSB2YXVsdFR5cGUgPT09IFZhdWx0VHlwZS5CYXNlID8geyBiYXNlOiB7fSB9IDogeyBxdW90ZToge30gfTtcblxuICByZXR1cm4gcHJvZ3JhbS5tZXRob2RzXG4gICAgLnJlZGVlbVdpbm5pbmdzKHZhdWx0VHlwZUFyZylcbiAgICAuYWNjb3VudHNQYXJ0aWFsKHtcbiAgICAgIHNpZ25lcixcbiAgICAgIHZhdWx0OiB2YXVsdFBkYSxcbiAgICAgIG1pbnQsXG4gICAgfSlcbiAgICAucmVtYWluaW5nQWNjb3VudHMoXG4gICAgICBjb25kTWludHMuZmxhdE1hcCgoY29uZE1pbnQpID0+IFtcbiAgICAgICAgeyBwdWJrZXk6IGNvbmRNaW50LCBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSxcbiAgICAgICAge1xuICAgICAgICAgIHB1YmtleTogZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmMoY29uZE1pbnQsIHNpZ25lciksXG4gICAgICAgICAgaXNTaWduZXI6IGZhbHNlLFxuICAgICAgICAgIGlzV3JpdGFibGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG59XG4iXX0=
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.initialize=initialize,exports.addOption=addOption,exports.activate=activate,exports.deposit=deposit,exports.withdraw=withdraw,exports.finalize=finalize,exports.redeemWinnings=redeemWinnings;const anchor_1=require("@coral-xyz/anchor"),spl_token_1=require("@solana/spl-token"),types_1=require("./types");function initialize(e,t,n,i,a,s,o,r,u,c,p){return e.methods.initialize(p).accountsPartial({payer:t,owner:n,vault:i,baseMint:a,quoteMint:s,condBaseMint0:o,condBaseMint1:r,condQuoteMint0:u,condQuoteMint1:c})}function addOption(e,t,n,i,a,s){return e.methods.addOption().accountsPartial({payer:t,owner:n,vault:i,condBaseMint:a,condQuoteMint:s})}function activate(e,t,n,i){return e.methods.activate().accountsPartial({payer:t,owner:n,vault:i})}function deposit(e,t,n,i,a,s,o){const r="number"==typeof o?new anchor_1.BN(o):o,u=s===types_1.VaultType.Base?{base:{}}:{quote:{}};return e.methods.deposit(u,r).accountsPartial({signer:t,vault:n,mint:i}).remainingAccounts(a.flatMap(e=>[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:(0,spl_token_1.getAssociatedTokenAddressSync)(e,t),isSigner:!1,isWritable:!0}]))}function withdraw(e,t,n,i,a,s,o){const r="number"==typeof o?new anchor_1.BN(o):o,u=s===types_1.VaultType.Base?{base:{}}:{quote:{}};return e.methods.withdraw(u,r).accountsPartial({signer:t,vault:n,mint:i}).remainingAccounts(a.flatMap(e=>[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:(0,spl_token_1.getAssociatedTokenAddressSync)(e,t),isSigner:!1,isWritable:!0}]))}function finalize(e,t,n,i,a){return e.methods.finalize(a).accountsPartial({payer:t,owner:n,vault:i})}function redeemWinnings(e,t,n,i,a,s){const o=s===types_1.VaultType.Base?{base:{}}:{quote:{}};return e.methods.redeemWinnings(o).accountsPartial({signer:t,vault:n,mint:i}).remainingAccounts(a.flatMap(e=>[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:(0,spl_token_1.getAssociatedTokenAddressSync)(e,t),isSigner:!1,isWritable:!0}]))}
@@ -1,20 +1 @@
1
- "use strict";
2
- /*
3
- * Type definitions for the Vault program.
4
- * Exports IDL-derived types and SDK-friendly enums.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.VaultState = exports.VaultType = void 0;
8
- /* SDK Enums */
9
- var VaultType;
10
- (function (VaultType) {
11
- VaultType[VaultType["Base"] = 0] = "Base";
12
- VaultType[VaultType["Quote"] = 1] = "Quote";
13
- })(VaultType || (exports.VaultType = VaultType = {}));
14
- var VaultState;
15
- (function (VaultState) {
16
- VaultState["Setup"] = "setup";
17
- VaultState["Active"] = "active";
18
- VaultState["Finalized"] = "finalized";
19
- })(VaultState || (exports.VaultState = VaultState = {}));
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmF1bHQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBc0JILGVBQWU7QUFFZixJQUFZLFNBR1g7QUFIRCxXQUFZLFNBQVM7SUFDbkIseUNBQVEsQ0FBQTtJQUNSLDJDQUFTLENBQUE7QUFDWCxDQUFDLEVBSFcsU0FBUyx5QkFBVCxTQUFTLFFBR3BCO0FBRUQsSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLDZCQUFlLENBQUE7SUFDZiwrQkFBaUIsQ0FBQTtJQUNqQixxQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBSlcsVUFBVSwwQkFBVixVQUFVLFFBSXJCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBWYXVsdCBwcm9ncmFtLlxuICogRXhwb3J0cyBJREwtZGVyaXZlZCB0eXBlcyBhbmQgU0RLLWZyaWVuZGx5IGVudW1zLlxuICovXG5cbmltcG9ydCB7IElkbEFjY291bnRzLCBJZGxFdmVudHMsIElkbFR5cGVzIH0gZnJvbSBcIkBjb3JhbC14eXovYW5jaG9yXCI7XG5pbXBvcnQgeyBUeE9wdGlvbnMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IHsgVmF1bHQgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFZhdWx0IH0gZnJvbSBcIi4uL2dlbmVyYXRlZC90eXBlc1wiO1xuXG4vKiBJREwtZGVyaXZlZCBUeXBlcyAqL1xuXG5leHBvcnQgdHlwZSBWYXVsdEFjY291bnQgPSBJZGxBY2NvdW50czxWYXVsdD5bXCJ2YXVsdEFjY291bnRcIl07XG5leHBvcnQgdHlwZSBWYXVsdFN0YXRlUmF3ID0gSWRsVHlwZXM8VmF1bHQ+W1widmF1bHRTdGF0ZVwiXTtcbmV4cG9ydCB0eXBlIFZhdWx0VHlwZVJhdyA9IElkbFR5cGVzPFZhdWx0PltcInZhdWx0VHlwZVwiXTtcblxuZXhwb3J0IHR5cGUgVmF1bHRJbml0aWFsaXplZEV2ZW50ID0gSWRsRXZlbnRzPFZhdWx0PltcInZhdWx0SW5pdGlhbGl6ZWRcIl07XG5leHBvcnQgdHlwZSBWYXVsdEFjdGl2YXRlZEV2ZW50ID0gSWRsRXZlbnRzPFZhdWx0PltcInZhdWx0QWN0aXZhdGVkXCJdO1xuZXhwb3J0IHR5cGUgVmF1bHREZXBvc2l0RXZlbnQgPSBJZGxFdmVudHM8VmF1bHQ+W1widmF1bHREZXBvc2l0XCJdO1xuZXhwb3J0IHR5cGUgVmF1bHRXaXRoZHJhd2FsRXZlbnQgPSBJZGxFdmVudHM8VmF1bHQ+W1widmF1bHRXaXRoZHJhd2FsXCJdO1xuZXhwb3J0IHR5cGUgVmF1bHRGaW5hbGl6ZWRFdmVudCA9IElkbEV2ZW50czxWYXVsdD5bXCJ2YXVsdEZpbmFsaXplZFwiXTtcbmV4cG9ydCB0eXBlIE9wdGlvbkFkZGVkRXZlbnQgPSBJZGxFdmVudHM8VmF1bHQ+W1wib3B0aW9uQWRkZWRcIl07XG5leHBvcnQgdHlwZSBXaW5uaW5nc1JlZGVlbWVkRXZlbnQgPSBJZGxFdmVudHM8VmF1bHQ+W1wid2lubmluZ3NSZWRlZW1lZFwiXTtcblxuLyogU0RLIEVudW1zICovXG5cbmV4cG9ydCBlbnVtIFZhdWx0VHlwZSB7XG4gIEJhc2UgPSAwLFxuICBRdW90ZSA9IDEsXG59XG5cbmV4cG9ydCBlbnVtIFZhdWx0U3RhdGUge1xuICBTZXR1cCA9IFwic2V0dXBcIixcbiAgQWN0aXZlID0gXCJhY3RpdmVcIixcbiAgRmluYWxpemVkID0gXCJmaW5hbGl6ZWRcIixcbn1cblxuLyogRXZlbnQgVW5pb24gVHlwZSAqL1xuXG5leHBvcnQgdHlwZSBWYXVsdEV2ZW50ID1cbiAgfCB7IG5hbWU6IFwiVmF1bHRJbml0aWFsaXplZFwiOyBkYXRhOiBWYXVsdEluaXRpYWxpemVkRXZlbnQgfVxuICB8IHsgbmFtZTogXCJWYXVsdEFjdGl2YXRlZFwiOyBkYXRhOiBWYXVsdEFjdGl2YXRlZEV2ZW50IH1cbiAgfCB7IG5hbWU6IFwiVmF1bHREZXBvc2l0XCI7IGRhdGE6IFZhdWx0RGVwb3NpdEV2ZW50IH1cbiAgfCB7IG5hbWU6IFwiVmF1bHRXaXRoZHJhd2FsXCI7IGRhdGE6IFZhdWx0V2l0aGRyYXdhbEV2ZW50IH1cbiAgfCB7IG5hbWU6IFwiVmF1bHRGaW5hbGl6ZWRcIjsgZGF0YTogVmF1bHRGaW5hbGl6ZWRFdmVudCB9XG4gIHwgeyBuYW1lOiBcIk9wdGlvbkFkZGVkXCI7IGRhdGE6IE9wdGlvbkFkZGVkRXZlbnQgfVxuICB8IHsgbmFtZTogXCJXaW5uaW5nc1JlZGVlbWVkXCI7IGRhdGE6IFdpbm5pbmdzUmVkZWVtZWRFdmVudCB9O1xuXG4vKiBDbGllbnQgT3B0aW9ucyAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhdWx0QWN0aW9uT3B0aW9ucyBleHRlbmRzIFR4T3B0aW9ucyB7XG4gIGF1dG9XcmFwVW53cmFwPzogYm9vbGVhbjsgIC8vIEF1dG8gd3JhcC91bndyYXAgbmF0aXZlIFNPTCAoZGVmYXVsdDogdHJ1ZSlcbn1cbiJdfQ==
1
+ "use strict";var VaultType,VaultState;Object.defineProperty(exports,"__esModule",{value:!0}),exports.VaultState=exports.VaultType=void 0,function(t){t[t.Base=0]="Base",t[t.Quote=1]="Quote"}(VaultType||(exports.VaultType=VaultType={})),function(t){t.Setup="setup",t.Active="active",t.Finalized="finalized"}(VaultState||(exports.VaultState=VaultState={}));
@@ -1,50 +1 @@
1
- "use strict";
2
- /*
3
- * Utility functions for the Vault program.
4
- * PDA derivation, state parsing, and account fetching.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.deriveVaultPDA = deriveVaultPDA;
8
- exports.deriveConditionalMint = deriveConditionalMint;
9
- exports.parseVaultState = parseVaultState;
10
- exports.fetchVaultAccount = fetchVaultAccount;
11
- const web3_js_1 = require("@solana/web3.js");
12
- const constants_1 = require("./constants");
13
- const types_1 = require("./types");
14
- /* PDA Derivation */
15
- function deriveVaultPDA(owner, nonce, programId = constants_1.PROGRAM_ID) {
16
- const nonceBuffer = Buffer.alloc(2);
17
- nonceBuffer.writeUInt16LE(nonce);
18
- return web3_js_1.PublicKey.findProgramAddressSync([
19
- constants_1.VAULT_SEED,
20
- owner.toBuffer(),
21
- nonceBuffer,
22
- ], programId);
23
- }
24
- function deriveConditionalMint(vaultPda, vaultType, index, programId = constants_1.PROGRAM_ID) {
25
- return web3_js_1.PublicKey.findProgramAddressSync([
26
- constants_1.CONDITIONAL_MINT_SEED,
27
- vaultPda.toBuffer(),
28
- Buffer.from([vaultType]),
29
- Buffer.from([index]),
30
- ], programId);
31
- }
32
- /* Parsers */
33
- function parseVaultState(state) {
34
- if ("setup" in state) {
35
- return { state: types_1.VaultState.Setup, winningIdx: null };
36
- }
37
- if ("active" in state) {
38
- return { state: types_1.VaultState.Active, winningIdx: null };
39
- }
40
- if ("finalized" in state) {
41
- const winningIdx = state.finalized[0] ?? state.finalized;
42
- return { state: types_1.VaultState.Finalized, winningIdx };
43
- }
44
- throw new Error("Unknown vault state");
45
- }
46
- /* Fetch */
47
- async function fetchVaultAccount(program, vaultPda) {
48
- return program.account.vaultAccount.fetch(vaultPda);
49
- }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmF1bHQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7QUFTSCx3Q0FlQztBQUVELHNEQWVDO0FBSUQsMENBWUM7QUFJRCw4Q0FLQztBQS9ERCw2Q0FBNEM7QUFDNUMsMkNBQTRFO0FBQzVFLG1DQUFxRTtBQUVyRSxvQkFBb0I7QUFFcEIsU0FBZ0IsY0FBYyxDQUM1QixLQUFnQixFQUNoQixLQUFhLEVBQ2IsWUFBdUIsc0JBQVU7SUFFakMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sbUJBQVMsQ0FBQyxzQkFBc0IsQ0FDckM7UUFDRSxzQkFBVTtRQUNWLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDaEIsV0FBVztLQUNaLEVBQ0QsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQ25DLFFBQW1CLEVBQ25CLFNBQW9CLEVBQ3BCLEtBQWEsRUFDYixZQUF1QixzQkFBVTtJQUVqQyxPQUFPLG1CQUFTLENBQUMsc0JBQXNCLENBQ3JDO1FBQ0UsaUNBQXFCO1FBQ3JCLFFBQVEsQ0FBQyxRQUFRLEVBQUU7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNyQixFQUNELFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELGFBQWE7QUFFYixTQUFnQixlQUFlLENBQUMsS0FBVTtJQUN4QyxJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNyQixPQUFPLEVBQUUsS0FBSyxFQUFFLGtCQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBSSxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEIsT0FBTyxFQUFFLEtBQUssRUFBRSxrQkFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUNELElBQUksV0FBVyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGtCQUFVLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFdBQVc7QUFFSixLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLE9BQXVCLEVBQ3ZCLFFBQW1CO0lBRW5CLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBWYXVsdCBwcm9ncmFtLlxuICogUERBIGRlcml2YXRpb24sIHN0YXRlIHBhcnNpbmcsIGFuZCBhY2NvdW50IGZldGNoaW5nLlxuICovXG5cbmltcG9ydCB7IFByb2dyYW0gfSBmcm9tIFwiQGNvcmFsLXh5ei9hbmNob3JcIjtcbmltcG9ydCB7IFB1YmxpY0tleSB9IGZyb20gXCJAc29sYW5hL3dlYjMuanNcIjtcbmltcG9ydCB7IFZBVUxUX1NFRUQsIENPTkRJVElPTkFMX01JTlRfU0VFRCwgUFJPR1JBTV9JRCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVmF1bHQsIFZhdWx0VHlwZSwgVmF1bHRTdGF0ZSwgVmF1bHRBY2NvdW50IH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyogUERBIERlcml2YXRpb24gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVZhdWx0UERBKFxuICBvd25lcjogUHVibGljS2V5LFxuICBub25jZTogbnVtYmVyLFxuICBwcm9ncmFtSWQ6IFB1YmxpY0tleSA9IFBST0dSQU1fSURcbik6IFtQdWJsaWNLZXksIG51bWJlcl0ge1xuICBjb25zdCBub25jZUJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgbm9uY2VCdWZmZXIud3JpdGVVSW50MTZMRShub25jZSk7XG4gIHJldHVybiBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICBbXG4gICAgICBWQVVMVF9TRUVELFxuICAgICAgb3duZXIudG9CdWZmZXIoKSxcbiAgICAgIG5vbmNlQnVmZmVyLFxuICAgIF0sXG4gICAgcHJvZ3JhbUlkXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVDb25kaXRpb25hbE1pbnQoXG4gIHZhdWx0UGRhOiBQdWJsaWNLZXksXG4gIHZhdWx0VHlwZTogVmF1bHRUeXBlLFxuICBpbmRleDogbnVtYmVyLFxuICBwcm9ncmFtSWQ6IFB1YmxpY0tleSA9IFBST0dSQU1fSURcbik6IFtQdWJsaWNLZXksIG51bWJlcl0ge1xuICByZXR1cm4gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgW1xuICAgICAgQ09ORElUSU9OQUxfTUlOVF9TRUVELFxuICAgICAgdmF1bHRQZGEudG9CdWZmZXIoKSxcbiAgICAgIEJ1ZmZlci5mcm9tKFt2YXVsdFR5cGVdKSxcbiAgICAgIEJ1ZmZlci5mcm9tKFtpbmRleF0pLFxuICAgIF0sXG4gICAgcHJvZ3JhbUlkXG4gICk7XG59XG5cbi8qIFBhcnNlcnMgKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmF1bHRTdGF0ZShzdGF0ZTogYW55KTogeyBzdGF0ZTogVmF1bHRTdGF0ZTsgd2lubmluZ0lkeDogbnVtYmVyIHwgbnVsbCB9IHtcbiAgaWYgKFwic2V0dXBcIiBpbiBzdGF0ZSkge1xuICAgIHJldHVybiB7IHN0YXRlOiBWYXVsdFN0YXRlLlNldHVwLCB3aW5uaW5nSWR4OiBudWxsIH07XG4gIH1cbiAgaWYgKFwiYWN0aXZlXCIgaW4gc3RhdGUpIHtcbiAgICByZXR1cm4geyBzdGF0ZTogVmF1bHRTdGF0ZS5BY3RpdmUsIHdpbm5pbmdJZHg6IG51bGwgfTtcbiAgfVxuICBpZiAoXCJmaW5hbGl6ZWRcIiBpbiBzdGF0ZSkge1xuICAgIGNvbnN0IHdpbm5pbmdJZHggPSBzdGF0ZS5maW5hbGl6ZWRbMF0gPz8gc3RhdGUuZmluYWxpemVkO1xuICAgIHJldHVybiB7IHN0YXRlOiBWYXVsdFN0YXRlLkZpbmFsaXplZCwgd2lubmluZ0lkeCB9O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gdmF1bHQgc3RhdGVcIik7XG59XG5cbi8qIEZldGNoICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFZhdWx0QWNjb3VudChcbiAgcHJvZ3JhbTogUHJvZ3JhbTxWYXVsdD4sXG4gIHZhdWx0UGRhOiBQdWJsaWNLZXlcbik6IFByb21pc2U8VmF1bHRBY2NvdW50PiB7XG4gIHJldHVybiBwcm9ncmFtLmFjY291bnQudmF1bHRBY2NvdW50LmZldGNoKHZhdWx0UGRhKTtcbn1cbiJdfQ==
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.deriveVaultPDA=deriveVaultPDA,exports.deriveConditionalMint=deriveConditionalMint,exports.parseVaultState=parseVaultState,exports.fetchVaultAccount=fetchVaultAccount;const web3_js_1=require("@solana/web3.js"),constants_1=require("./constants"),types_1=require("./types");function deriveVaultPDA(t,e,n=constants_1.PROGRAM_ID){const r=Buffer.alloc(2);return r.writeUInt16LE(e),web3_js_1.PublicKey.findProgramAddressSync([constants_1.VAULT_SEED,t.toBuffer(),r],n)}function deriveConditionalMint(t,e,n,r=constants_1.PROGRAM_ID){return web3_js_1.PublicKey.findProgramAddressSync([constants_1.CONDITIONAL_MINT_SEED,t.toBuffer(),Buffer.from([e]),Buffer.from([n])],r)}function parseVaultState(t){if("setup"in t)return{state:types_1.VaultState.Setup,winningIdx:null};if("active"in t)return{state:types_1.VaultState.Active,winningIdx:null};if("finalized"in t){const e=t.finalized[0]??t.finalized;return{state:types_1.VaultState.Finalized,winningIdx:e}}throw new Error("Unknown vault state")}async function fetchVaultAccount(t,e){return t.account.vaultAccount.fetch(e)}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@zcomb/programs-sdk",
3
- "version": "1.10.0",
3
+ "version": "1.11.1",
4
4
  "description": "SDK for ZCombinator Programs",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
- "build": "tsc",
8
+ "build": "tsc && npm run minify",
9
+ "minify": "find dist -name '*.js' -exec terser {} -c -m --output {} \\;",
9
10
  "clean": "rm -rf dist",
10
11
  "prepublishOnly": "npm run clean && npm run build"
11
12
  },
@@ -34,6 +35,7 @@
34
35
  "@sqds/multisig": "^2.1.4"
35
36
  },
36
37
  "devDependencies": {
38
+ "terser": "^5.46.0",
37
39
  "typescript": "^5.0.0"
38
40
  }
39
41
  }