@zcomb/programs-sdk 1.5.1 → 1.6.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.
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ /*
3
+ * High-level client for the SVault program.
4
+ * Provides ergonomic methods for staking operations with automatic PDA derivation
5
+ * and compute budget management.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SVaultClient = void 0;
9
+ const anchor_1 = require("@coral-xyz/anchor");
10
+ const web3_js_1 = require("@solana/web3.js");
11
+ const constants_1 = require("./constants");
12
+ const utils_1 = require("./utils");
13
+ const instructions_1 = require("./instructions");
14
+ const idls_1 = require("../generated/idls");
15
+ const DEFAULT_COMPUTE_UNITS = 200000;
16
+ class SVaultClient {
17
+ constructor(provider, programId, computeUnits) {
18
+ this.programId = programId ?? constants_1.PROGRAM_ID;
19
+ this.computeUnits = computeUnits ?? DEFAULT_COMPUTE_UNITS;
20
+ this.program = new anchor_1.Program(idls_1.SvaultIDL, provider);
21
+ }
22
+ /* PDA Helpers */
23
+ deriveStakingConfigPDA(tokenMint, nonce) {
24
+ return (0, utils_1.deriveStakingConfigPDA)(tokenMint, nonce, this.programId);
25
+ }
26
+ deriveUserStakePDA(stakingConfig, user) {
27
+ return (0, utils_1.deriveUserStakePDA)(stakingConfig, user, this.programId);
28
+ }
29
+ deriveDelegatePDA(stakingConfig, delegate) {
30
+ return (0, utils_1.deriveDelegatePDA)(stakingConfig, delegate, this.programId);
31
+ }
32
+ deriveStakeVaultPDA(stakingConfig) {
33
+ return (0, utils_1.deriveStakeVaultPDA)(stakingConfig, this.programId);
34
+ }
35
+ deriveRewardVaultPDA(stakingConfig) {
36
+ return (0, utils_1.deriveRewardVaultPDA)(stakingConfig, this.programId);
37
+ }
38
+ /* State Fetching */
39
+ async fetchStakingConfig(pda) {
40
+ return (0, utils_1.fetchStakingConfigAccount)(this.program, pda);
41
+ }
42
+ async fetchUserStake(pda) {
43
+ return (0, utils_1.fetchUserStakeAccount)(this.program, pda);
44
+ }
45
+ async fetchDelegate(pda) {
46
+ return (0, utils_1.fetchDelegateAccount)(this.program, pda);
47
+ }
48
+ /**
49
+ * Convenience method: Derive staking config PDA from mint + nonce, then fetch user stake.
50
+ */
51
+ async fetchUserStakeByMint(tokenMint, nonce, user) {
52
+ const [configPda] = this.deriveStakingConfigPDA(tokenMint, nonce);
53
+ const [userStakePda] = this.deriveUserStakePDA(configPda, user);
54
+ return this.fetchUserStake(userStakePda);
55
+ }
56
+ /**
57
+ * Convenience method: Derive staking config PDA from mint + nonce, then fetch config.
58
+ */
59
+ async fetchStakingConfigByMint(tokenMint, nonce) {
60
+ const [configPda] = this.deriveStakingConfigPDA(tokenMint, nonce);
61
+ return this.fetchStakingConfig(configPda);
62
+ }
63
+ /* Instruction Builders */
64
+ initializeStakingVault(admin, tokenMint, unstakingPeriod, volumeWindow, nonce, options) {
65
+ const { includeCuBudget = true, computeUnits } = options ?? {};
66
+ let builder = (0, instructions_1.initializeStakingVault)(this.program, admin, tokenMint, unstakingPeriod, volumeWindow, nonce);
67
+ if (includeCuBudget) {
68
+ builder = builder.preInstructions([
69
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
70
+ units: computeUnits ?? this.computeUnits,
71
+ }),
72
+ ]);
73
+ }
74
+ const [configPda] = this.deriveStakingConfigPDA(tokenMint, nonce);
75
+ return { builder, configPda };
76
+ }
77
+ stake(user, tokenMint, nonce, amount, options) {
78
+ const { includeCuBudget = true, computeUnits } = options ?? {};
79
+ let builder = (0, instructions_1.stake)(this.program, user, tokenMint, nonce, amount);
80
+ if (includeCuBudget) {
81
+ builder = builder.preInstructions([
82
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
83
+ units: computeUnits ?? this.computeUnits,
84
+ }),
85
+ ]);
86
+ }
87
+ return builder;
88
+ }
89
+ initiateUnstake(user, tokenMint, nonce, amount, options) {
90
+ const { includeCuBudget = true, computeUnits } = options ?? {};
91
+ let builder = (0, instructions_1.initiateUnstake)(this.program, user, tokenMint, nonce, amount);
92
+ if (includeCuBudget) {
93
+ builder = builder.preInstructions([
94
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
95
+ units: computeUnits ?? this.computeUnits,
96
+ }),
97
+ ]);
98
+ }
99
+ return builder;
100
+ }
101
+ withdraw(user, tokenMint, nonce, options) {
102
+ const { includeCuBudget = true, computeUnits } = options ?? {};
103
+ let builder = (0, instructions_1.withdraw)(this.program, user, tokenMint, nonce);
104
+ if (includeCuBudget) {
105
+ builder = builder.preInstructions([
106
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
107
+ units: computeUnits ?? this.computeUnits,
108
+ }),
109
+ ]);
110
+ }
111
+ return builder;
112
+ }
113
+ postRewards(admin, tokenMint, nonce, merkleRoot, totalAmount, options) {
114
+ const { includeCuBudget = true, computeUnits } = options ?? {};
115
+ let builder = (0, instructions_1.postRewards)(this.program, admin, tokenMint, nonce, merkleRoot, totalAmount);
116
+ if (includeCuBudget) {
117
+ builder = builder.preInstructions([
118
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
119
+ units: computeUnits ?? this.computeUnits,
120
+ }),
121
+ ]);
122
+ }
123
+ return builder;
124
+ }
125
+ claimRewards(user, tokenMint, nonce, cumulativeAmount, proof, options) {
126
+ const { includeCuBudget = true, computeUnits } = options ?? {};
127
+ let builder = (0, instructions_1.claimRewards)(this.program, user, tokenMint, nonce, cumulativeAmount, proof);
128
+ if (includeCuBudget) {
129
+ builder = builder.preInstructions([
130
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
131
+ units: computeUnits ?? this.computeUnits,
132
+ }),
133
+ ]);
134
+ }
135
+ return builder;
136
+ }
137
+ setConfig(admin, tokenMint, nonce, params, options) {
138
+ const { includeCuBudget = true, computeUnits } = options ?? {};
139
+ let builder = (0, instructions_1.setConfig)(this.program, admin, tokenMint, nonce, params.unstakingPeriod ?? null, params.volumeWindow ?? null);
140
+ if (includeCuBudget) {
141
+ builder = builder.preInstructions([
142
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
143
+ units: computeUnits ?? this.computeUnits,
144
+ }),
145
+ ]);
146
+ }
147
+ return builder;
148
+ }
149
+ slash(admin, tokenMint, nonce, userToSlash, basisPoints, options) {
150
+ const { includeCuBudget = true, computeUnits } = options ?? {};
151
+ // Derive user stake PDA from user pubkey
152
+ const [configPda] = this.deriveStakingConfigPDA(tokenMint, nonce);
153
+ const [userStakePda] = this.deriveUserStakePDA(configPda, userToSlash);
154
+ let builder = (0, instructions_1.slash)(this.program, admin, tokenMint, nonce, userStakePda, basisPoints);
155
+ if (includeCuBudget) {
156
+ builder = builder.preInstructions([
157
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
158
+ units: computeUnits ?? this.computeUnits,
159
+ }),
160
+ ]);
161
+ }
162
+ return builder;
163
+ }
164
+ addDelegate(staker, delegateWallet, tokenMint, nonce, options) {
165
+ const { includeCuBudget = true, computeUnits } = options ?? {};
166
+ let builder = (0, instructions_1.addDelegate)(this.program, staker, delegateWallet, tokenMint, nonce);
167
+ if (includeCuBudget) {
168
+ builder = builder.preInstructions([
169
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
170
+ units: computeUnits ?? this.computeUnits,
171
+ }),
172
+ ]);
173
+ }
174
+ return builder;
175
+ }
176
+ removeDelegate(staker, delegateWallet, tokenMint, nonce, options) {
177
+ const { includeCuBudget = true, computeUnits } = options ?? {};
178
+ let builder = (0, instructions_1.removeDelegate)(this.program, staker, delegateWallet, tokenMint, nonce);
179
+ if (includeCuBudget) {
180
+ builder = builder.preInstructions([
181
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
182
+ units: computeUnits ?? this.computeUnits,
183
+ }),
184
+ ]);
185
+ }
186
+ return builder;
187
+ }
188
+ }
189
+ exports.SVaultClient = SVaultClient;
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N2YXVsdC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQUVILDhDQUFnRTtBQUNoRSw2Q0FBa0U7QUFDbEUsMkNBQXlDO0FBUXpDLG1DQVNpQjtBQUNqQixpREFXd0I7QUFFeEIsNENBQThDO0FBRTlDLE1BQU0scUJBQXFCLEdBQUcsTUFBTyxDQUFDO0FBRXRDLE1BQWEsWUFBWTtJQUt2QixZQUNFLFFBQXdCLEVBQ3hCLFNBQXFCLEVBQ3JCLFlBQXFCO1FBRXJCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLHNCQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLElBQUkscUJBQXFCLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGdCQUFPLENBQUMsZ0JBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixzQkFBc0IsQ0FBQyxTQUFvQixFQUFFLEtBQWE7UUFDeEQsT0FBTyxJQUFBLDhCQUFzQixFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxrQkFBa0IsQ0FDaEIsYUFBd0IsRUFDeEIsSUFBZTtRQUVmLE9BQU8sSUFBQSwwQkFBa0IsRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsaUJBQWlCLENBQ2YsYUFBd0IsRUFDeEIsUUFBbUI7UUFFbkIsT0FBTyxJQUFBLHlCQUFpQixFQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxhQUF3QjtRQUMxQyxPQUFPLElBQUEsMkJBQW1CLEVBQUMsYUFBYSxFQUFFLElB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LEdBQUcsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFL0QsSUFBSSxPQUFPLEdBQUcsSUFBQSw2QkFBYyxFQUMxQixJQUFJLENBQUMsT0FBTyxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsU0FBUyxFQUNULEtBQUssQ0FDTixDQUFDO1FBRUYsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixPQUFPLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztnQkFDaEMsOEJBQW9CLENBQUMsbUJBQW1CLENBQUM7b0JBQ3ZDLEtBQUssRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVk7aUJBQ3pDLENBQUM7YUFDSCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBcldELG9DQXFXQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBIaWdoLWxldmVsIGNsaWVudCBmb3IgdGhlIFNWYXVsdCBwcm9ncmFtLlxuICogUHJvdmlkZXMgZXJnb25vbWljIG1ldGhvZHMgZm9yIHN0YWtpbmcgb3BlcmF0aW9ucyB3aXRoIGF1dG9tYXRpYyBQREEgZGVyaXZhdGlvblxuICogYW5kIGNvbXB1dGUgYnVkZ2V0IG1hbmFnZW1lbnQuXG4gKi9cblxuaW1wb3J0IHsgUHJvZ3JhbSwgQW5jaG9yUHJvdmlkZXIsIEJOIH0gZnJvbSBcIkBjb3JhbC14eXovYW5jaG9yXCI7XG5pbXBvcnQgeyBQdWJsaWNLZXksIENvbXB1dGVCdWRnZXRQcm9ncmFtIH0gZnJvbSBcIkBzb2xhbmEvd2ViMy5qc1wiO1xuaW1wb3J0IHsgUFJPR1JBTV9JRCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgU3ZhdWx0LFxuICBTVmF1bHRUeE9wdGlvbnMsXG4gIFN0YWtpbmdDb25maWdBY2NvdW50LFxuICBVc2VyU3Rha2VBY2NvdW50LFxuICBEZWxlZ2F0ZUFjY291bnQsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBkZXJpdmVTdGFraW5nQ29uZmlnUERBLFxuICBkZXJpdmVVc2VyU3Rha2VQREEsXG4gIGRlcml2ZURlbGVnYXRlUERBLFxuICBkZXJpdmVTdGFrZVZhdWx0UERBLFxuICBkZXJpdmVSZXdhcmRWYXVsdFBEQSxcbiAgZmV0Y2hTdGFraW5nQ29uZmlnQWNjb3VudCxcbiAgZmV0Y2hVc2VyU3Rha2VBY2NvdW50LFxuICBmZXRjaERlbGVnYXRlQWNjb3VudCxcbn0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7XG4gIGluaXRpYWxpemVTdGFraW5nVmF1bHQsXG4gIHN0YWtlLFxuICBpbml0aWF0ZVVuc3Rha2UsXG4gIHdpdGhkcmF3LFxuICBwb3N0UmV3YXJkcyxcbiAgY2xhaW1SZXdhcmRzLFxuICBzZXRDb25maWcsXG4gIHNsYXNoLFxuICBhZGREZWxlZ2F0ZSxcbiAgcmVtb3ZlRGVsZWdhdGUsXG59IGZyb20gXCIuL2luc3RydWN0aW9uc1wiO1xuXG5pbXBvcnQgeyBTdmF1bHRJREwgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkL2lkbHNcIjtcblxuY29uc3QgREVGQVVMVF9DT01QVVRFX1VOSVRTID0gMjAwXzAwMDtcblxuZXhwb3J0IGNsYXNzIFNWYXVsdENsaWVudCB7XG4gIHB1YmxpYyBwcm9ncmFtOiBQcm9ncmFtPFN2YXVsdD47XG4gIHB1YmxpYyBwcm9ncmFtSWQ6IFB1YmxpY0tleTtcbiAgcHVibGljIGNvbXB1dGVVbml0czogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3ZpZGVyOiBBbmNob3JQcm92aWRlcixcbiAgICBwcm9ncmFtSWQ/OiBQdWJsaWNLZXksXG4gICAgY29tcHV0ZVVuaXRzPzogbnVtYmVyXG4gICkge1xuICAgIHRoaXMucHJvZ3JhbUlkID0gcHJvZ3JhbUlkID8/IFBST0dSQU1fSUQ7XG4gICAgdGhpcy5jb21wdXRlVW5pdHMgPSBjb21wdXRlVW5pdHMgPz8gREVGQVVMVF9DT01QVVRFX1VOSVRTO1xuICAgIHRoaXMucHJvZ3JhbSA9IG5ldyBQcm9ncmFtKFN2YXVsdElETCBhcyBTdmF1bHQsIHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qIFBEQSBIZWxwZXJzICovXG5cbiAgZGVyaXZlU3Rha2luZ0NvbmZpZ1BEQSh0b2tlbk1pbnQ6IFB1YmxpY0tleSwgbm9uY2U6IG51bWJlcik6IFtQdWJsaWNLZXksIG51bWJlcl0ge1xuICAgIHJldHVybiBkZXJpdmVTdGFraW5nQ29uZmlnUERBKHRva2VuTWludCwgbm9uY2UsIHRoaXMucHJvZ3JhbUlkKTtcbiAgfVxuXG4gIGRlcml2ZVVzZXJTdGFrZVBEQShcbiAgICBzdGFraW5nQ29uZmlnOiBQdWJsaWNLZXksXG4gICAgdXNlcjogUHVibGljS2V5XG4gICk6IFtQdWJsaWNLZXksIG51bWJlcl0ge1xuICAgIHJldHVybiBkZXJpdmVVc2VyU3Rha2VQREEoc3Rha2luZ0NvbmZpZywgdXNlciwgdGhpcy5wcm9ncmFtSWQpO1xuICB9XG5cbiAgZGVyaXZlRGVsZWdhdGVQREEoXG4gICAgc3Rha2luZ0NvbmZpZzogUHVibGljS2V5LFxuICAgIGRlbGVnYXRlOiBQdWJsaWNLZXlcbiAgKTogW1B1YmxpY0tleSwgbnVtYmVyXSB7XG4gICAgcmV0dXJuIGRlcml2ZURlbGVnYXRlUERBKHN0YWtpbmdDb25maWcsIGRlbGVnYXRlLCB0aGlzLnByb2dyYW1JZCk7XG4gIH1cblxuICBkZXJpdmVTdGFrZVZhdWx0UERBKHN0YWtpbmdDb25maWc6IFB1YmxpY0tleSk6IFtQdWJsaWNLZXksIG51bWJlcl0ge1xuICAgIHJldHVybiBkZXJpdmVTdGFrZVZhdWx0UERBKHN0YWtpbmdDb25maWcsIHRoaXMucHJvZ3JhbUlkKTtcbiAgfVxuXG4gIGRlcml2ZVJld2FyZFZhdWx0UERBKHN0YWtpbmdDb25maWc6IFB1YmxpY0tleSk6IFtQdWJsaWNLZXksIG51bWJlcl0ge1xuICAgIHJldHVybiBkZXJpdmVSZXdhcmRWYXVsdFBEQShzdGFraW5nQ29uZmlnLCB0aGlzLnByb2dyYW1JZCk7XG4gIH1cblxuICAvKiBTdGF0ZSBGZXRjaGluZyAqL1xuXG4gIGFzeW5jIGZldGNoU3Rha2luZ0NvbmZpZyhwZGE6IFB1YmxpY0tleSk6IFByb21pc2U8U3Rha2luZ0NvbmZpZ0FjY291bnQ+IHtcbiAgICByZXR1cm4gZmV0Y2hTdGFraW5nQ29uZmlnQWNjb3VudCh0aGlzLnByb2dyYW0sIHBkYSk7XG4gIH1cblxuICBhc3luYyBmZXRjaFVzZXJTdGFrZShwZGE6IFB1YmxpY0tleSk6IFByb21pc2U8VXNlclN0YWtlQWNjb3VudD4ge1xuICAgIHJldHVybiBmZXRjaFVzZXJTdGFrZUFjY291bnQodGhpcy5wcm9ncmFtLCBwZGEpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEZWxlZ2F0ZShwZGE6IFB1YmxpY0tleSk6IFByb21pc2U8RGVsZWdhdGVBY2NvdW50PiB7XG4gICAgcmV0dXJuIGZldGNoRGVsZWdhdGVBY2NvdW50KHRoaXMucHJvZ3JhbSwgcGRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBtZXRob2Q6IERlcml2ZSBzdGFraW5nIGNvbmZpZyBQREEgZnJvbSBtaW50ICsgbm9uY2UsIHRoZW4gZmV0Y2ggdXNlciBzdGFrZS5cbiAgICovXG4gIGFzeW5jIGZldGNoVXNlclN0YWtlQnlNaW50KFxuICAgIHRva2VuTWludDogUHVibGljS2V5LFxuICAgIG5vbmNlOiBudW1iZXIsXG4gICAgdXNlcjogUHVibGljS2V5XG4gICk6IFByb21pc2U8VXNlclN0YWtlQWNjb3VudD4ge1xuICAgIGNvbnN0IFtjb25maWdQZGFdID0gdGhpcy5kZXJpdmVTdGFraW5nQ29uZmlnUERBKHRva2VuTWludCwgbm9uY2UpO1xuICAgIGNvbnN0IFt1c2VyU3Rha2VQZGFdID0gdGhpcy5kZXJpdmVVc2VyU3Rha2VQREEoY29uZmlnUGRhLCB1c2VyKTtcbiAgICByZXR1cm4gdGhpcy5mZXRjaFVzZXJTdGFrZSh1c2VyU3Rha2VQZGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIG1ldGhvZDogRGVyaXZlIHN0YWtpbmcgY29uZmlnIFBEQSBmcm9tIG1pbnQgKyBub25jZSwgdGhlbiBmZXRjaCBjb25maWcuXG4gICAqL1xuICBhc3luYyBmZXRjaFN0YWtpbmdDb25maWdCeU1pbnQoXG4gICAgdG9rZW5NaW50OiBQdWJsaWNLZXksXG4gICAgbm9uY2U6IG51bWJlclxuICApOiBQcm9taXNlPFN0YWtpbmdDb25maWdBY2NvdW50PiB7XG4gICAgY29uc3QgW2NvbmZpZ1BkYV0gPSB0aGlzLmRlcml2ZVN0YWtpbmdDb25maWdQREEodG9rZW5NaW50LCBub25jZSk7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hTdGFraW5nQ29uZmlnKGNvbmZpZ1BkYSk7XG4gIH1cblxuICAvKiBJbnN0cnVjdGlvbiBCdWlsZGVycyAqL1xuXG4gIGluaXRpYWxpemVTdGFraW5nVmF1bHQoXG4gICAgYWRtaW46IFB1YmxpY0tleSxcbiAgICB0b2tlbk1pbnQ6IFB1YmxpY0tleSxcbiAgICB1bnN0YWtpbmdQZXJpb2Q6IEJOIHwgbnVtYmVyLFxuICAgIHZvbHVtZVdpbmRvdzogQk4gfCBudW1iZXIsXG4gICAgbm9uY2U6IG51bWJlcixcbiAgICBvcHRpb25zPzogU1ZhdWx0VHhPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IHsgaW5jbHVkZUN1QnVkZ2V0ID0gdHJ1ZSwgY29tcHV0ZVVuaXRzIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gICAgbGV0IGJ1aWxkZXIgPSBpbml0aWFsaXplU3Rha2luZ1ZhdWx0KFxuICAgICAgdGhpcy5wcm9ncmFtLFxuICAgICAgYWRtaW4sXG4gICAgICB0b2tlbk1pbnQsXG4gICAgICB1bnN0YWtpbmdQZXJpb2QsXG4gICAgICB2b2x1bWVXaW5kb3csXG4gICAgICBub25jZVxuICAgICk7XG5cbiAgICBpZiAoaW5jbHVkZUN1QnVkZ2V0KSB7XG4gICAgICBidWlsZGVyID0gYnVpbGRlci5wcmVJbnN0cnVjdGlvbnMoW1xuICAgICAgICBDb21wdXRlQnVkZ2V0UHJvZ3JhbS5zZXRDb21wdXRlVW5pdExpbWl0KHtcbiAgICAgICAgICB1bml0czogY29tcHV0ZVVuaXRzID8/IHRoaXMuY29tcHV0ZVVuaXRzLFxuICAgICAgICB9KSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGNvbnN0IFtjb25maWdQZGFdID0gdGhpcy5kZXJpdmVTdGFraW5nQ29uZmlnUERBKHRva2VuTWludCwgbm9uY2UpO1xuICAgIHJldHVybiB7IGJ1aWxkZXIsIGNvbmZpZ1BkYSB9O1xuICB9XG5cbiAgc3Rha2UoXG4gICAgdXNlcjogUHVibGljS2V5LFxuICAgIHRva2VuTWludDogUHVibGljS2V5LFxuICAgIG5vbmNlOiBudW1iZXIsXG4gICAgYW1vdW50OiBCTiB8IG51bWJlcixcbiAgICBvcHRpb25zPzogU1ZhdWx0VHhPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IHsgaW5jbHVkZUN1QnVkZ2V0ID0gdHJ1ZSwgY29tcHV0ZVVuaXRzIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gICAgbGV0IGJ1aWxkZXIgPSBzdGFrZSh0aGlzLnByb2dyYW0sIHVzZXIsIHRva2VuTWludCwgbm9uY2UsIGFtb3VudCk7XG5cbiAgICBpZiAoaW5jbHVkZUN1QnVkZ2V0KSB7XG4gICAgICBidWlsZGVyID0gYnVpbGRlci5wcmVJbnN0cnVjdGlvbnMoW1xuICAgICAgICBDb21wdXRlQnVkZ2V0UHJvZ3JhbS5zZXRDb21wdXRlVW5pdExpbWl0KHtcbiAgICAgICAgICB1bml0czogY29tcHV0ZVVuaXRzID8/IHRoaXMuY29tcHV0ZVVuaXRzLFxuICAgICAgICB9KSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgaW5pdGlhdGVVbnN0YWtlKFxuICAgIHVzZXI6IFB1YmxpY0tleSxcbiAgICB0b2tlbk1pbnQ6IFB1YmxpY0tleSxcbiAgICBub25jZTogbnVtYmVyLFxuICAgIGFtb3VudDogQk4gfCBudW1iZXIsXG4gICAgb3B0aW9ucz86IFNWYXVsdFR4T3B0aW9uc1xuICApIHtcbiAgICBjb25zdCB7IGluY2x1ZGVDdUJ1ZGdldCA9IHRydWUsIGNvbXB1dGVVbml0cyB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGxldCBidWlsZGVyID0gaW5pdGlhdGVVbnN0YWtlKHRoaXMucHJvZ3JhbSwgdXNlciwgdG9rZW5NaW50LCBub25jZSwgYW1vdW50KTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnByZUluc3RydWN0aW9ucyhbXG4gICAgICAgIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQoe1xuICAgICAgICAgIHVuaXRzOiBjb21wdXRlVW5pdHMgPz8gdGhpcy5jb21wdXRlVW5pdHMsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICB3aXRoZHJhdyhcbiAgICB1c2VyOiBQdWJsaWNLZXksXG4gICAgdG9rZW5NaW50OiBQdWJsaWNLZXksXG4gICAgbm9uY2U6IG51bWJlcixcbiAgICBvcHRpb25zPzogU1ZhdWx0VHhPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IHsgaW5jbHVkZUN1QnVkZ2V0ID0gdHJ1ZSwgY29tcHV0ZVVuaXRzIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gICAgbGV0IGJ1aWxkZXIgPSB3aXRoZHJhdyh0aGlzLnByb2dyYW0sIHVzZXIsIHRva2VuTWludCwgbm9uY2UpO1xuXG4gICAgaWYgKGluY2x1ZGVDdUJ1ZGdldCkge1xuICAgICAgYnVpbGRlciA9IGJ1aWxkZXIucHJlSW5zdHJ1Y3Rpb25zKFtcbiAgICAgICAgQ29tcHV0ZUJ1ZGdldFByb2dyYW0uc2V0Q29tcHV0ZVVuaXRMaW1pdCh7XG4gICAgICAgICAgdW5pdHM6IGNvbXB1dGVVbml0cyA/PyB0aGlzLmNvbXB1dGVVbml0cyxcbiAgICAgICAgfSksXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIHBvc3RSZXdhcmRzKFxuICAgIGFkbWluOiBQdWJsaWNLZXksXG4gICAgdG9rZW5NaW50OiBQdWJsaWNLZXksXG4gICAgbm9uY2U6IG51bWJlcixcbiAgICBtZXJrbGVSb290OiBudW1iZXJbXSxcbiAgICB0b3RhbEFtb3VudDogQk4gfCBudW1iZXIsXG4gICAgb3B0aW9ucz86IFNWYXVsdFR4T3B0aW9uc1xuICApIHtcbiAgICBjb25zdCB7IGluY2x1ZGVDdUJ1ZGdldCA9IHRydWUsIGNvbXB1dGVVbml0cyB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGxldCBidWlsZGVyID0gcG9zdFJld2FyZHMoXG4gICAgICB0aGlzLnByb2dyYW0sXG4gICAgICBhZG1pbixcbiAgICAgIHRva2VuTWludCxcbiAgICAgIG5vbmNlLFxuICAgICAgbWVya2xlUm9vdCxcbiAgICAgIHRvdGFsQW1vdW50XG4gICAgKTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnByZUluc3RydWN0aW9ucyhbXG4gICAgICAgIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQoe1xuICAgICAgICAgIHVuaXRzOiBjb21wdXRlVW5pdHMgPz8gdGhpcy5jb21wdXRlVW5pdHMsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICBjbGFpbVJld2FyZHMoXG4gICAgdXNlcjogUHVibGljS2V5LFxuICAgIHRva2VuTWludDogUHVibGljS2V5LFxuICAgIG5vbmNlOiBudW1iZXIsXG4gICAgY3VtdWxhdGl2ZUFtb3VudDogQk4gfCBudW1iZXIsXG4gICAgcHJvb2Y6IG51bWJlcltdW10sXG4gICAgb3B0aW9ucz86IFNWYXVsdFR4T3B0aW9uc1xuICApIHtcbiAgICBjb25zdCB7IGluY2x1ZGVDdUJ1ZGdldCA9IHRydWUsIGNvbXB1dGVVbml0cyB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGxldCBidWlsZGVyID0gY2xhaW1SZXdhcmRzKFxuICAgICAgdGhpcy5wcm9ncmFtLFxuICAgICAgdXNlcixcbiAgICAgIHRva2VuTWludCxcbiAgICAgIG5vbmNlLFxuICAgICAgY3VtdWxhdGl2ZUFtb3VudCxcbiAgICAgIHByb29mXG4gICAgKTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnByZUluc3RydWN0aW9ucyhbXG4gICAgICAgIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQoe1xuICAgICAgICAgIHVuaXRzOiBjb21wdXRlVW5pdHMgPz8gdGhpcy5jb21wdXRlVW5pdHMsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICBzZXRDb25maWcoXG4gICAgYWRtaW46IFB1YmxpY0tleSxcbiAgICB0b2tlbk1pbnQ6IFB1YmxpY0tleSxcbiAgICBub25jZTogbnVtYmVyLFxuICAgIHBhcmFtczogeyB1bnN0YWtpbmdQZXJpb2Q/OiBCTiB8IG51bWJlcjsgdm9sdW1lV2luZG93PzogQk4gfCBudW1iZXIgfSxcbiAgICBvcHRpb25zPzogU1ZhdWx0VHhPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IHsgaW5jbHVkZUN1QnVkZ2V0ID0gdHJ1ZSwgY29tcHV0ZVVuaXRzIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gICAgbGV0IGJ1aWxkZXIgPSBzZXRDb25maWcoXG4gICAgICB0aGlzLnByb2dyYW0sXG4gICAgICBhZG1pbixcbiAgICAgIHRva2VuTWludCxcbiAgICAgIG5vbmNlLFxuICAgICAgcGFyYW1zLnVuc3Rha2luZ1BlcmlvZCA/PyBudWxsLFxuICAgICAgcGFyYW1zLnZvbHVtZVdpbmRvdyA/PyBudWxsXG4gICAgKTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnByZUluc3RydWN0aW9ucyhbXG4gICAgICAgIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQoe1xuICAgICAgICAgIHVuaXRzOiBjb21wdXRlVW5pdHMgPz8gdGhpcy5jb21wdXRlVW5pdHMsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICBzbGFzaChcbiAgICBhZG1pbjogUHVibGljS2V5LFxuICAgIHRva2VuTWludDogUHVibGljS2V5LFxuICAgIG5vbmNlOiBudW1iZXIsXG4gICAgdXNlclRvU2xhc2g6IFB1YmxpY0tleSxcbiAgICBiYXNpc1BvaW50czogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBTVmF1bHRUeE9wdGlvbnNcbiAgKSB7XG4gICAgY29uc3QgeyBpbmNsdWRlQ3VCdWRnZXQgPSB0cnVlLCBjb21wdXRlVW5pdHMgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgICAvLyBEZXJpdmUgdXNlciBzdGFrZSBQREEgZnJvbSB1c2VyIHB1YmtleVxuICAgIGNvbnN0IFtjb25maWdQZGFdID0gdGhpcy5kZXJpdmVTdGFraW5nQ29uZmlnUERBKHRva2VuTWludCwgbm9uY2UpO1xuICAgIGNvbnN0IFt1c2VyU3Rha2VQZGFdID0gdGhpcy5kZXJpdmVVc2VyU3Rha2VQREEoY29uZmlnUGRhLCB1c2VyVG9TbGFzaCk7XG5cbiAgICBsZXQgYnVpbGRlciA9IHNsYXNoKFxuICAgICAgdGhpcy5wcm9ncmFtLFxuICAgICAgYWRtaW4sXG4gICAgICB0b2tlbk1pbnQsXG4gICAgICBub25jZSxcbiAgICAgIHVzZXJTdGFrZVBkYSxcbiAgICAgIGJhc2lzUG9pbnRzXG4gICAgKTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnByZUluc3RydWN0aW9ucyhbXG4gICAgICAgIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQoe1xuICAgICAgICAgIHVuaXRzOiBjb21wdXRlVW5pdHMgPz8gdGhpcy5jb21wdXRlVW5pdHMsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICBhZGREZWxlZ2F0ZShcbiAgICBzdGFrZXI6IFB1YmxpY0tleSxcbiAgICBkZWxlZ2F0ZVdhbGxldDogUHVibGljS2V5LFxuICAgIHRva2VuTWludDogUHVibGljS2V5LFxuICAgIG5vbmNlOiBudW1iZXIsXG4gICAgb3B0aW9ucz86IFNWYXVsdFR4T3B0aW9uc1xuICApIHtcbiAgICBjb25zdCB7IGluY2x1ZGVDdUJ1ZGdldCA9IHRydWUsIGNvbXB1dGVVbml0cyB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGxldCBidWlsZGVyID0gYWRkRGVsZWdhdGUoXG4gICAgICB0aGlzLnByb2dyYW0sXG4gICAgICBzdGFrZXIsXG4gICAgICBkZWxlZ2F0ZVdhbGxldCxcbiAgICAgIHRva2VuTWludCxcbiAgICAgIG5vbmNlXG4gICAgKTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnByZUluc3RydWN0aW9ucyhbXG4gICAgICAgIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQoe1xuICAgICAgICAgIHVuaXRzOiBjb21wdXRlVW5pdHMgPz8gdGhpcy5jb21wdXRlVW5pdHMsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICByZW1vdmVEZWxlZ2F0ZShcbiAgICBzdGFrZXI6IFB1YmxpY0tleSxcbiAgICBkZWxlZ2F0ZVdhbGxldDogUHVibGljS2V5LFxuICAgIHRva2VuTWludDogUHVibGljS2V5LFxuICAgIG5vbmNlOiBudW1iZXIsXG4gICAgb3B0aW9ucz86IFNWYXVsdFR4T3B0aW9uc1xuICApIHtcbiAgICBjb25zdCB7IGluY2x1ZGVDdUJ1ZGdldCA9IHRydWUsIGNvbXB1dGVVbml0cyB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgIGxldCBidWlsZGVyID0gcmVtb3ZlRGVsZWdhdGUoXG4gICAgICB0aGlzLnByb2dyYW0sXG4gICAgICBzdGFrZXIsXG4gICAgICBkZWxlZ2F0ZVdhbGxldCxcbiAgICAgIHRva2VuTWludCxcbiAgICAgIG5vbmNlXG4gICAgKTtcblxuICAgIGlmIChpbmNsdWRlQ3VCdWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnByZUluc3RydWN0aW9ucyhbXG4gICAgICAgIENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0TGltaXQoe1xuICAgICAgICAgIHVuaXRzOiBjb21wdXRlVW5pdHMgPz8gdGhpcy5jb21wdXRlVW5pdHMsXG4gICAgICAgIH0pLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare const PROGRAM_ID: PublicKey;
3
+ export declare const STAKING_CONFIG_SEED: Buffer;
4
+ export declare const USER_STAKE_SEED: Buffer;
5
+ export declare const STAKE_VAULT_SEED: Buffer;
6
+ export declare const REWARD_VAULT_SEED: Buffer;
7
+ export declare const SECONDS_PER_DAY = 86400;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /*
3
+ * Constants for the SVault 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.SECONDS_PER_DAY = exports.REWARD_VAULT_SEED = exports.STAKE_VAULT_SEED = exports.USER_STAKE_SEED = exports.STAKING_CONFIG_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.SvaultIDL.address);
13
+ /* PDA Seeds */
14
+ exports.STAKING_CONFIG_SEED = (0, utils_1.parseIdlBytes)((0, utils_1.getIdlConstant)(idls_1.SvaultIDL, "STAKING_CONFIG_SEED"));
15
+ exports.USER_STAKE_SEED = (0, utils_1.parseIdlBytes)((0, utils_1.getIdlConstant)(idls_1.SvaultIDL, "USER_STAKE_SEED"));
16
+ exports.STAKE_VAULT_SEED = (0, utils_1.parseIdlBytes)((0, utils_1.getIdlConstant)(idls_1.SvaultIDL, "STAKE_VAULT_SEED"));
17
+ exports.REWARD_VAULT_SEED = (0, utils_1.parseIdlBytes)((0, utils_1.getIdlConstant)(idls_1.SvaultIDL, "REWARD_VAULT_SEED"));
18
+ /* Time Constants */
19
+ exports.SECONDS_PER_DAY = 86400;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N2YXVsdC9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRUgsNkNBQTRDO0FBQzVDLDRDQUE4QztBQUM5QyxvQ0FBeUQ7QUFFekQsZ0JBQWdCO0FBRUgsUUFBQSxVQUFVLEdBQUcsSUFBSSxtQkFBUyxDQUFDLGdCQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFM0QsZUFBZTtBQUVGLFFBQUEsbUJBQW1CLEdBQUcsSUFBQSxxQkFBYSxFQUFDLElBQUEsc0JBQWMsRUFBQyxnQkFBUyxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQztBQUN0RixRQUFBLGVBQWUsR0FBRyxJQUFBLHFCQUFhLEVBQUMsSUFBQSxzQkFBYyxFQUFDLGdCQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQzlFLFFBQUEsZ0JBQWdCLEdBQUcsSUFBQSxxQkFBYSxFQUFDLElBQUEsc0JBQWMsRUFBQyxnQkFBUyxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQztBQUNoRixRQUFBLGlCQUFpQixHQUFHLElBQUEscUJBQWEsRUFBQyxJQUFBLHNCQUFjLEVBQUMsZ0JBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7QUFFL0Ysb0JBQW9CO0FBRVAsUUFBQSxlQUFlLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvbnN0YW50cyBmb3IgdGhlIFNWYXVsdCBwcm9ncmFtLlxuICogUGFyc2VkIGZyb20gdGhlIGdlbmVyYXRlZCBJREwgdG8gc3RheSBpbiBzeW5jIHdpdGggdGhlIFJ1c3QgcHJvZ3JhbS5cbiAqL1xuXG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tIFwiQHNvbGFuYS93ZWIzLmpzXCI7XG5pbXBvcnQgeyBTdmF1bHRJREwgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkL2lkbHNcIjtcbmltcG9ydCB7IHBhcnNlSWRsQnl0ZXMsIGdldElkbENvbnN0YW50IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbi8qIFByb2dyYW0gSUQgKi9cblxuZXhwb3J0IGNvbnN0IFBST0dSQU1fSUQgPSBuZXcgUHVibGljS2V5KFN2YXVsdElETC5hZGRyZXNzKTtcblxuLyogUERBIFNlZWRzICovXG5cbmV4cG9ydCBjb25zdCBTVEFLSU5HX0NPTkZJR19TRUVEID0gcGFyc2VJZGxCeXRlcyhnZXRJZGxDb25zdGFudChTdmF1bHRJREwsIFwiU1RBS0lOR19DT05GSUdfU0VFRFwiKSk7XG5leHBvcnQgY29uc3QgVVNFUl9TVEFLRV9TRUVEID0gcGFyc2VJZGxCeXRlcyhnZXRJZGxDb25zdGFudChTdmF1bHRJREwsIFwiVVNFUl9TVEFLRV9TRUVEXCIpKTtcbmV4cG9ydCBjb25zdCBTVEFLRV9WQVVMVF9TRUVEID0gcGFyc2VJZGxCeXRlcyhnZXRJZGxDb25zdGFudChTdmF1bHRJREwsIFwiU1RBS0VfVkFVTFRfU0VFRFwiKSk7XG5leHBvcnQgY29uc3QgUkVXQVJEX1ZBVUxUX1NFRUQgPSBwYXJzZUlkbEJ5dGVzKGdldElkbENvbnN0YW50KFN2YXVsdElETCwgXCJSRVdBUkRfVkFVTFRfU0VFRFwiKSk7XG5cbi8qIFRpbWUgQ29uc3RhbnRzICovXG5cbmV4cG9ydCBjb25zdCBTRUNPTkRTX1BFUl9EQVkgPSA4NjQwMDtcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from "./constants";
2
+ export * from "./types";
3
+ export * from "./utils";
4
+ export * from "./instructions";
5
+ export * from "./client";
@@ -0,0 +1,22 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3ZhdWx0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBNEI7QUFDNUIsMENBQXdCO0FBQ3hCLDBDQUF3QjtBQUN4QixpREFBK0I7QUFDL0IsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2luc3RydWN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xpZW50XCI7XG4iXX0=