@symmetry-hq/sdk 1.0.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.
- package/dist/src/constants.d.ts +23 -0
- package/dist/src/constants.js +38 -0
- package/dist/src/index.d.ts +804 -0
- package/dist/src/index.js +2097 -0
- package/dist/src/instructions/automation/auction.d.ts +6 -0
- package/dist/src/instructions/automation/auction.js +40 -0
- package/dist/src/instructions/automation/claimBounty.d.ts +12 -0
- package/dist/src/instructions/automation/claimBounty.js +44 -0
- package/dist/src/instructions/automation/flashSwap.d.ts +21 -0
- package/dist/src/instructions/automation/flashSwap.js +74 -0
- package/dist/src/instructions/automation/priceUpdate.d.ts +19 -0
- package/dist/src/instructions/automation/priceUpdate.js +89 -0
- package/dist/src/instructions/automation/rebalanceIntent.d.ts +32 -0
- package/dist/src/instructions/automation/rebalanceIntent.js +117 -0
- package/dist/src/instructions/automation/rebalanceSwap.d.ts +11 -0
- package/dist/src/instructions/automation/rebalanceSwap.js +42 -0
- package/dist/src/instructions/management/addBounty.d.ts +7 -0
- package/dist/src/instructions/management/addBounty.js +41 -0
- package/dist/src/instructions/management/admin.d.ts +9 -0
- package/dist/src/instructions/management/admin.js +53 -0
- package/dist/src/instructions/management/claimFees.d.ts +15 -0
- package/dist/src/instructions/management/claimFees.js +95 -0
- package/dist/src/instructions/management/createBasket.d.ts +21 -0
- package/dist/src/instructions/management/createBasket.js +98 -0
- package/dist/src/instructions/management/edit.d.ts +51 -0
- package/dist/src/instructions/management/edit.js +477 -0
- package/dist/src/instructions/management/luts.d.ts +30 -0
- package/dist/src/instructions/management/luts.js +99 -0
- package/dist/src/instructions/pda.d.ts +25 -0
- package/dist/src/instructions/pda.js +128 -0
- package/dist/src/instructions/user/deposit.d.ts +20 -0
- package/dist/src/instructions/user/deposit.js +100 -0
- package/dist/src/instructions/user/withdraw.d.ts +8 -0
- package/dist/src/instructions/user/withdraw.js +36 -0
- package/dist/src/jup.d.ts +49 -0
- package/dist/src/jup.js +80 -0
- package/dist/src/keeperMonitor.d.ts +52 -0
- package/dist/src/keeperMonitor.js +624 -0
- package/dist/src/layouts/basket.d.ts +191 -0
- package/dist/src/layouts/basket.js +51 -0
- package/dist/src/layouts/config.d.ts +281 -0
- package/dist/src/layouts/config.js +237 -0
- package/dist/src/layouts/fraction.d.ts +20 -0
- package/dist/src/layouts/fraction.js +164 -0
- package/dist/src/layouts/intents/bounty.d.ts +18 -0
- package/dist/src/layouts/intents/bounty.js +19 -0
- package/dist/src/layouts/intents/intent.d.ts +209 -0
- package/dist/src/layouts/intents/intent.js +97 -0
- package/dist/src/layouts/intents/rebalanceIntent.d.ts +212 -0
- package/dist/src/layouts/intents/rebalanceIntent.js +94 -0
- package/dist/src/layouts/lookupTable.d.ts +7 -0
- package/dist/src/layouts/lookupTable.js +10 -0
- package/dist/src/layouts/oracle.d.ts +63 -0
- package/dist/src/layouts/oracle.js +96 -0
- package/dist/src/states/basket.d.ts +14 -0
- package/dist/src/states/basket.js +479 -0
- package/dist/src/states/config.d.ts +3 -0
- package/dist/src/states/config.js +71 -0
- package/dist/src/states/intents/intent.d.ts +10 -0
- package/dist/src/states/intents/intent.js +316 -0
- package/dist/src/states/intents/rebalanceIntent.d.ts +42 -0
- package/dist/src/states/intents/rebalanceIntent.js +680 -0
- package/dist/src/states/oracles/constants.d.ts +9 -0
- package/dist/src/states/oracles/constants.js +15 -0
- package/dist/src/states/oracles/oracle.d.ts +24 -0
- package/dist/src/states/oracles/oracle.js +168 -0
- package/dist/src/states/oracles/pythOracle.d.ts +132 -0
- package/dist/src/states/oracles/pythOracle.js +609 -0
- package/dist/src/states/oracles/raydiumClmmOracle.d.ts +184 -0
- package/dist/src/states/oracles/raydiumClmmOracle.js +843 -0
- package/dist/src/states/oracles/raydiumCpmmOracle.d.ts +120 -0
- package/dist/src/states/oracles/raydiumCpmmOracle.js +540 -0
- package/dist/src/states/oracles/switchboardOracle.d.ts +0 -0
- package/dist/src/states/oracles/switchboardOracle.js +1 -0
- package/dist/src/states/withdrawBasketFees.d.ts +10 -0
- package/dist/src/states/withdrawBasketFees.js +154 -0
- package/dist/src/txUtils.d.ts +65 -0
- package/dist/src/txUtils.js +306 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +561 -0
- package/package.json +31 -0
- package/src/constants.ts +40 -0
- package/src/index.ts +2431 -0
- package/src/instructions/automation/auction.ts +55 -0
- package/src/instructions/automation/claimBounty.ts +69 -0
- package/src/instructions/automation/flashSwap.ts +104 -0
- package/src/instructions/automation/priceUpdate.ts +117 -0
- package/src/instructions/automation/rebalanceIntent.ts +181 -0
- package/src/instructions/management/addBounty.ts +55 -0
- package/src/instructions/management/admin.ts +72 -0
- package/src/instructions/management/claimFees.ts +129 -0
- package/src/instructions/management/createBasket.ts +138 -0
- package/src/instructions/management/edit.ts +602 -0
- package/src/instructions/management/luts.ts +157 -0
- package/src/instructions/pda.ts +151 -0
- package/src/instructions/user/deposit.ts +143 -0
- package/src/instructions/user/withdraw.ts +53 -0
- package/src/jup.ts +113 -0
- package/src/keeperMonitor.ts +585 -0
- package/src/layouts/basket.ts +233 -0
- package/src/layouts/config.ts +576 -0
- package/src/layouts/fraction.ts +164 -0
- package/src/layouts/intents/bounty.ts +35 -0
- package/src/layouts/intents/intent.ts +324 -0
- package/src/layouts/intents/rebalanceIntent.ts +306 -0
- package/src/layouts/lookupTable.ts +14 -0
- package/src/layouts/oracle.ts +157 -0
- package/src/states/basket.ts +527 -0
- package/src/states/config.ts +62 -0
- package/src/states/intents/intent.ts +311 -0
- package/src/states/intents/rebalanceIntent.ts +751 -0
- package/src/states/oracles/constants.ts +13 -0
- package/src/states/oracles/oracle.ts +212 -0
- package/src/states/oracles/pythOracle.ts +874 -0
- package/src/states/oracles/raydiumClmmOracle.ts +1193 -0
- package/src/states/oracles/raydiumCpmmOracle.ts +784 -0
- package/src/states/oracles/switchboardOracle.ts +0 -0
- package/src/states/withdrawBasketFees.ts +160 -0
- package/src/txUtils.ts +424 -0
- package/test.ts +609 -0
- package/tsconfig.json +101 -0
package/dist/test.js
ADDED
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
13
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
14
|
+
const src_1 = require("./src");
|
|
15
|
+
const pda_1 = require("./src/instructions/pda");
|
|
16
|
+
const constants_1 = require("./src/constants");
|
|
17
|
+
const jup_1 = require("./src/jup");
|
|
18
|
+
const rebalanceIntent_1 = require("./src/states/intents/rebalanceIntent");
|
|
19
|
+
let kp = Array.from(web3_js_1.Keypair.generate().secretKey);
|
|
20
|
+
let jupApiKey = "";
|
|
21
|
+
let connection = new web3_js_1.Connection("https://api.devnet.solana.com");
|
|
22
|
+
function testStates() {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
var _a;
|
|
25
|
+
return;
|
|
26
|
+
let wallet = new anchor_1.Wallet(web3_js_1.Keypair.fromSecretKey(new Uint8Array(kp)));
|
|
27
|
+
console.log(wallet.publicKey.toBase58());
|
|
28
|
+
let sdk = new src_1.SymmetryCore({
|
|
29
|
+
connection: connection,
|
|
30
|
+
network: "mainnet",
|
|
31
|
+
priorityFee: 5237,
|
|
32
|
+
});
|
|
33
|
+
// while (true) {
|
|
34
|
+
// try {
|
|
35
|
+
// let keeperMonitor = new KeeperMonitor({
|
|
36
|
+
// wallet: wallet,
|
|
37
|
+
// connection: connection,
|
|
38
|
+
// network: "mainnet",
|
|
39
|
+
// jupiterApiKey: jupApiKey,
|
|
40
|
+
// maxAllowedAccounts: 40,
|
|
41
|
+
// simulateTransactions: false,
|
|
42
|
+
// priorityFee: 5237,
|
|
43
|
+
// });
|
|
44
|
+
// await keeperMonitor.run();
|
|
45
|
+
// } catch (e) { }
|
|
46
|
+
// }
|
|
47
|
+
console.log("SDK created:", wallet.publicKey.toBase58());
|
|
48
|
+
console.log("Total baskets: ", (yield sdk.fetchAllBaskets()).length);
|
|
49
|
+
console.log("Total intents: ", (yield sdk.fetchAllIntents()).length);
|
|
50
|
+
console.log("Total rebalance intents: ", (yield sdk.fetchAllRebalanceIntents()).length);
|
|
51
|
+
console.log("Total withdraw basket fees: ", (yield sdk.fetchAllWithdrawBasketFees()).length);
|
|
52
|
+
let basket = yield sdk.fetchBasket("GrBFFvtdRL25o7gcRnV1kGvz1Qc7iscUmDp1ZvyBSyUa");
|
|
53
|
+
basket = yield sdk.loadBasketPrice(basket);
|
|
54
|
+
// let ri =(await sdk.fetchAllRebalanceIntents())[0];
|
|
55
|
+
// ri = await sdk.fetchRebalanceIntent(ri.formatted_data.pubkey);
|
|
56
|
+
// console.log(ri.deposit_data);
|
|
57
|
+
// console.log(ri.price_updates_data);
|
|
58
|
+
// console.log(ri.auction_data);
|
|
59
|
+
// console.log(ri.mint_data);
|
|
60
|
+
// console.log(ri.redeem_data);
|
|
61
|
+
// console.log(ri.claim_bounty_data);
|
|
62
|
+
// console.log(ri);
|
|
63
|
+
// console.log(basket.formatted);
|
|
64
|
+
// console.log(basket.composition[0].mint.toBase58(), "amount:", basket.composition[0].amount.toString(), "price:", basket.composition[0].price?.price, "value:", basket.composition[0].value);
|
|
65
|
+
// console.log(basket.composition[1].mint.toBase58(), "amount:", basket.composition[1].amount.toString(), "price:", basket.composition[1].price?.price, "value:", basket.composition[1].value);
|
|
66
|
+
// console.log(basket.composition[2].mint.toBase58(), "amount:", basket.composition[2].amount.toString(), "price:", basket.composition[2].price?.price, "value:", basket.composition[2].value);
|
|
67
|
+
// return;
|
|
68
|
+
let tests = {
|
|
69
|
+
createGlobalConfig: false, // TESTED
|
|
70
|
+
editGlobalConfig: false, // TESTED
|
|
71
|
+
createBasket: false, // TESTED
|
|
72
|
+
editPrivateBasketSettings: false, // NOT TESTED
|
|
73
|
+
addBounty: false, // TESTED
|
|
74
|
+
editCreator: false, // TESTED
|
|
75
|
+
editManagerSettings: false, // TESTED
|
|
76
|
+
editFeeSettings: false, // TESTED
|
|
77
|
+
editScheduleSettings: false, // TESTED
|
|
78
|
+
editAutomationSettings: false, // TESTED
|
|
79
|
+
editLpSettings: false, // TESTED
|
|
80
|
+
editMetadata: false, // TESTED
|
|
81
|
+
editDepositsSettings: false, // TESTED
|
|
82
|
+
editForceRebalanceSettings: false, // TESTED
|
|
83
|
+
editCustomRebalanceSettings: false, // TESTED
|
|
84
|
+
editAddTokenDelay: false, // NOT TESTED
|
|
85
|
+
editUpdateWeightsDelay: false, // NOT TESTED
|
|
86
|
+
editMakeDirectSwapDelay: false, // NOT TESTED
|
|
87
|
+
addOrEditToken: false, // TESTED
|
|
88
|
+
updateWeights: false, // NOT TESTED
|
|
89
|
+
makeDirectSwap: false, // NOT TESTED
|
|
90
|
+
executeIntent: false, // TESTED
|
|
91
|
+
buyBasket: false, // TESTED
|
|
92
|
+
depositTokens: false, // TESTED
|
|
93
|
+
lockDeposits: false, // TESTED
|
|
94
|
+
sellBasket: false, // TESTED
|
|
95
|
+
rebalanceBasket: false, // TESTED
|
|
96
|
+
rebalanceBasketCustom: false, // NOT TESTED
|
|
97
|
+
updateTokenPrices: false, // TESTED
|
|
98
|
+
updateTokenPricesCustom: false, // NOT TESTED
|
|
99
|
+
rebalanceSwapAll: false, // TESTED
|
|
100
|
+
rebalanceSwap: false, // TESTED
|
|
101
|
+
mintBasket: false, // TESTED
|
|
102
|
+
redeemTokens: false, // TESTED
|
|
103
|
+
claimBounty: false, // TESTED
|
|
104
|
+
withdrawBasketFees: false, // NOT TESTED
|
|
105
|
+
claimTokenFeesFromBasket: false, // NOT TESTED
|
|
106
|
+
};
|
|
107
|
+
if (tests.createBasket) {
|
|
108
|
+
let createBasketTx = yield sdk.createBasketTx({
|
|
109
|
+
creator: wallet.publicKey.toBase58(),
|
|
110
|
+
start_price: "1",
|
|
111
|
+
name: "Test Basket",
|
|
112
|
+
symbol: "TBC",
|
|
113
|
+
metadata_uri: "https://test.com",
|
|
114
|
+
});
|
|
115
|
+
console.log(createBasketTx.batches[0].transactions[0]);
|
|
116
|
+
return;
|
|
117
|
+
let resCreateBasket = yield sdk.signAndSendTxPayloadBatchSequence({
|
|
118
|
+
txPayloadBatchSequence: createBasketTx,
|
|
119
|
+
wallet,
|
|
120
|
+
});
|
|
121
|
+
console.log(resCreateBasket);
|
|
122
|
+
}
|
|
123
|
+
if (tests.addBounty) {
|
|
124
|
+
let tx = yield sdk.addBountyTx({
|
|
125
|
+
keeper: wallet.publicKey.toBase58(),
|
|
126
|
+
basket: basket.ownAddress.toBase58(),
|
|
127
|
+
amount: 250 * 10 ** 6,
|
|
128
|
+
});
|
|
129
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
130
|
+
console.log(res);
|
|
131
|
+
}
|
|
132
|
+
let task_context = {
|
|
133
|
+
basket: basket.ownAddress.toBase58(),
|
|
134
|
+
manager: wallet.publicKey.toBase58(),
|
|
135
|
+
};
|
|
136
|
+
if (tests.editCreator) {
|
|
137
|
+
let creator_settings = {
|
|
138
|
+
creator: wallet.publicKey.toBase58(),
|
|
139
|
+
};
|
|
140
|
+
let tx = yield sdk.editCreatorTx(task_context, creator_settings);
|
|
141
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
142
|
+
console.log(res);
|
|
143
|
+
}
|
|
144
|
+
if (tests.editManagerSettings) {
|
|
145
|
+
let manager_settings = {
|
|
146
|
+
managers: [
|
|
147
|
+
{
|
|
148
|
+
pubkey: wallet.publicKey.toBase58(),
|
|
149
|
+
fee_split_weight_bps: 5000,
|
|
150
|
+
authorities: {
|
|
151
|
+
managers: true, fees: true, schedule: true, automation: true, lp: true, metadata: true, deposits: true, force_rebalance: true, custom_rebalance: true, add_token: true, update_weights: true, make_direct_swap: true,
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
pubkey: "UserevMsvU5K9u6iW7DT9XJVyVLpmfDCEAfXixBbE7R",
|
|
156
|
+
fee_split_weight_bps: 5000,
|
|
157
|
+
authorities: {
|
|
158
|
+
managers: true, fees: true, schedule: true, automation: true, lp: true, metadata: true, deposits: true, force_rebalance: true, custom_rebalance: true, add_token: true, update_weights: true, make_direct_swap: true,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
modification_delay: 0,
|
|
163
|
+
};
|
|
164
|
+
let tx = yield sdk.editManagersTx(task_context, manager_settings);
|
|
165
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
166
|
+
console.log(res);
|
|
167
|
+
}
|
|
168
|
+
if (tests.editFeeSettings) {
|
|
169
|
+
let fee_settings = {
|
|
170
|
+
creator_deposit_fee_bps: 100,
|
|
171
|
+
creator_withdraw_fee_bps: 100,
|
|
172
|
+
creator_management_fee_bps: 0,
|
|
173
|
+
creator_performance_fee_bps: 0,
|
|
174
|
+
managers_deposit_fee_bps: 100,
|
|
175
|
+
managers_withdraw_fee_bps: 100,
|
|
176
|
+
managers_management_fee_bps: 0,
|
|
177
|
+
managers_performance_fee_bps: 0,
|
|
178
|
+
basket_deposit_fee_bps: 100,
|
|
179
|
+
basket_withdraw_fee_bps: 100,
|
|
180
|
+
modification_delay: 0,
|
|
181
|
+
};
|
|
182
|
+
let tx = yield sdk.editFeesTx(Object.assign(Object.assign({}, task_context), { activation_timestamp: Date.now() / 1000 + 10 }), fee_settings);
|
|
183
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
184
|
+
console.log(res);
|
|
185
|
+
}
|
|
186
|
+
if (tests.editScheduleSettings) {
|
|
187
|
+
let schedule_settings = {
|
|
188
|
+
cycle_start_time: 0,
|
|
189
|
+
cycle_duration: 86400,
|
|
190
|
+
deposits_start: 0,
|
|
191
|
+
deposits_end: 86400,
|
|
192
|
+
automation_start: 0,
|
|
193
|
+
automation_end: 86400,
|
|
194
|
+
management_start: 0,
|
|
195
|
+
management_end: 86400,
|
|
196
|
+
modification_delay: 0,
|
|
197
|
+
};
|
|
198
|
+
let tx = yield sdk.editScheduleTx(task_context, schedule_settings);
|
|
199
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
200
|
+
console.log(res);
|
|
201
|
+
}
|
|
202
|
+
if (tests.editAutomationSettings) {
|
|
203
|
+
let automation_settings = {
|
|
204
|
+
enabled: true,
|
|
205
|
+
rebalance_slippage_threshold_bps: 100,
|
|
206
|
+
per_trade_rebalance_slippage_threshold_bps: 100,
|
|
207
|
+
rebalance_activation_threshold_abs_bps: 100,
|
|
208
|
+
rebalance_activation_threshold_rel_bps: 100,
|
|
209
|
+
rebalance_activation_cooldown: 100,
|
|
210
|
+
modification_delay: 0,
|
|
211
|
+
};
|
|
212
|
+
let tx = yield sdk.editAutomationTx(task_context, automation_settings);
|
|
213
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
214
|
+
console.log(res);
|
|
215
|
+
}
|
|
216
|
+
if (tests.editLpSettings) {
|
|
217
|
+
let lp_settings = {
|
|
218
|
+
enabled: true,
|
|
219
|
+
lp_threshold_bps: 100,
|
|
220
|
+
modification_delay: 0,
|
|
221
|
+
};
|
|
222
|
+
let tx = yield sdk.editLpTx(task_context, lp_settings);
|
|
223
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
224
|
+
console.log(res);
|
|
225
|
+
}
|
|
226
|
+
if (tests.editMetadata) {
|
|
227
|
+
let metadata_settings = {
|
|
228
|
+
symbol: "YSOLTEST",
|
|
229
|
+
name: "Solana Test",
|
|
230
|
+
uri: "https://raw.githubusercontent.com/symmetry-protocol/markets/8179d21e003459a615eb21e3113166b7576d8e5e/ysol-metadata.json",
|
|
231
|
+
modification_delay: 0,
|
|
232
|
+
};
|
|
233
|
+
let tx = yield sdk.editMetadataTx(task_context, metadata_settings);
|
|
234
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
235
|
+
console.log(res);
|
|
236
|
+
}
|
|
237
|
+
if (tests.editDepositsSettings) {
|
|
238
|
+
let deposits_settings = {
|
|
239
|
+
enabled: true,
|
|
240
|
+
};
|
|
241
|
+
let tx = yield sdk.editDepositsTx(task_context, deposits_settings);
|
|
242
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
243
|
+
console.log(res);
|
|
244
|
+
}
|
|
245
|
+
if (tests.editForceRebalanceSettings) {
|
|
246
|
+
let force_rebalance_settings = {
|
|
247
|
+
enabled: true,
|
|
248
|
+
modification_delay: 0,
|
|
249
|
+
};
|
|
250
|
+
let tx = yield sdk.editForceRebalanceTx(task_context, force_rebalance_settings);
|
|
251
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
252
|
+
console.log(res);
|
|
253
|
+
}
|
|
254
|
+
if (tests.editCustomRebalanceSettings) {
|
|
255
|
+
let custom_rebalance_settings = {
|
|
256
|
+
enabled: true,
|
|
257
|
+
modification_delay: 0,
|
|
258
|
+
};
|
|
259
|
+
let tx = yield sdk.editCustomRebalanceTx(task_context, custom_rebalance_settings);
|
|
260
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
261
|
+
console.log(res);
|
|
262
|
+
}
|
|
263
|
+
if (tests.editAddTokenDelay) {
|
|
264
|
+
let add_token_delay = {
|
|
265
|
+
modification_delay: 0,
|
|
266
|
+
};
|
|
267
|
+
let tx = yield sdk.editAddTokenDelayTx(task_context, add_token_delay);
|
|
268
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
269
|
+
console.log(res);
|
|
270
|
+
}
|
|
271
|
+
if (tests.editUpdateWeightsDelay) {
|
|
272
|
+
let update_weights_settings = {
|
|
273
|
+
modification_delay: 0,
|
|
274
|
+
};
|
|
275
|
+
let tx = yield sdk.editUpdateWeightsDelayTx(task_context, update_weights_settings);
|
|
276
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
277
|
+
console.log(res);
|
|
278
|
+
}
|
|
279
|
+
if (tests.editMakeDirectSwapDelay) {
|
|
280
|
+
let make_direct_swap_delay = {
|
|
281
|
+
modification_delay: 0,
|
|
282
|
+
};
|
|
283
|
+
let tx = yield sdk.editSwapDelayTx(task_context, make_direct_swap_delay);
|
|
284
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
285
|
+
console.log(res);
|
|
286
|
+
}
|
|
287
|
+
if (tests.addOrEditToken) {
|
|
288
|
+
let add_token = {
|
|
289
|
+
token_mint: "So11111111111111111111111111111111111111112",
|
|
290
|
+
active: true,
|
|
291
|
+
min_oracles_thresh: 1,
|
|
292
|
+
min_conf_bps: 100,
|
|
293
|
+
conf_thresh_bps: 200,
|
|
294
|
+
conf_multiplier: 1,
|
|
295
|
+
oracles: [
|
|
296
|
+
{
|
|
297
|
+
oracle_type: "pyth",
|
|
298
|
+
account_lut_id: 0,
|
|
299
|
+
account_lut_index: 0,
|
|
300
|
+
account: constants_1.PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT.toBase58(),
|
|
301
|
+
weight: 100,
|
|
302
|
+
is_required: true,
|
|
303
|
+
conf_thresh_bps: 100,
|
|
304
|
+
volatility_thresh_bps: 100,
|
|
305
|
+
max_slippage_bps: 100,
|
|
306
|
+
min_liquidity: 100,
|
|
307
|
+
staleness_thresh: 10000,
|
|
308
|
+
staleness_conf_rate_bps: 100,
|
|
309
|
+
token_decimals: 9,
|
|
310
|
+
twap_seconds_ago: 100,
|
|
311
|
+
twap_secondary_seconds_ago: 100,
|
|
312
|
+
},
|
|
313
|
+
],
|
|
314
|
+
};
|
|
315
|
+
let tx = yield sdk.addOrEditTokenTx(task_context, add_token);
|
|
316
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
317
|
+
console.log(res);
|
|
318
|
+
}
|
|
319
|
+
if (tests.updateWeights) {
|
|
320
|
+
let update_weights = {
|
|
321
|
+
token_weights: [
|
|
322
|
+
{
|
|
323
|
+
mint: "So11111111111111111111111111111111111111112",
|
|
324
|
+
weight_bps: 100,
|
|
325
|
+
},
|
|
326
|
+
],
|
|
327
|
+
token_mints_hash: [
|
|
328
|
+
0, 0, 0, 0,
|
|
329
|
+
],
|
|
330
|
+
};
|
|
331
|
+
let tx = yield sdk.updateWeightsTx(task_context, update_weights);
|
|
332
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
333
|
+
console.log(res);
|
|
334
|
+
}
|
|
335
|
+
if (tests.makeDirectSwap) {
|
|
336
|
+
let make_direct_swap = {
|
|
337
|
+
from_token_mint: "So11111111111111111111111111111111111111112",
|
|
338
|
+
to_token_mint: "So11111111111111111111111111111111111111112",
|
|
339
|
+
amount_from: 100,
|
|
340
|
+
amount_to: 100,
|
|
341
|
+
};
|
|
342
|
+
let tx = yield sdk.makeDirectSwapTx(task_context, make_direct_swap);
|
|
343
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
344
|
+
console.log(res);
|
|
345
|
+
}
|
|
346
|
+
if (tests.buyBasket) {
|
|
347
|
+
let tx = yield sdk.buyBasketTx({
|
|
348
|
+
buyer: wallet.publicKey.toBase58(),
|
|
349
|
+
basket_mint: basket.mint.toBase58(),
|
|
350
|
+
contributions: [
|
|
351
|
+
// {mint: "So11111111111111111111111111111111111111112", amount: 1000000000},
|
|
352
|
+
{ mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", amount: 2000000 },
|
|
353
|
+
],
|
|
354
|
+
});
|
|
355
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
356
|
+
console.log(res);
|
|
357
|
+
}
|
|
358
|
+
if (tests.sellBasket) {
|
|
359
|
+
let tx = yield sdk.sellBasketTx({
|
|
360
|
+
seller: wallet.publicKey.toBase58(),
|
|
361
|
+
basket_mint: basket.mint.toBase58(),
|
|
362
|
+
withdraw_amount: 2 * 10 ** 6,
|
|
363
|
+
keep_tokens: ["USDCoctVLVnvTXBEuP9s8hntucdJokbo17RwHuNXemT"],
|
|
364
|
+
});
|
|
365
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
366
|
+
console.log(res);
|
|
367
|
+
}
|
|
368
|
+
if (tests.rebalanceBasket) {
|
|
369
|
+
let tx = yield sdk.rebalanceBasketTx({
|
|
370
|
+
keeper: wallet.publicKey.toBase58(),
|
|
371
|
+
basket_mint: "9j28U9fKfPbau7jLGw8zKT1SZouyEaRizBT9DFXpYHQ9",
|
|
372
|
+
});
|
|
373
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
374
|
+
console.log(res);
|
|
375
|
+
}
|
|
376
|
+
if (tests.updateTokenPrices) {
|
|
377
|
+
let rebalanceIntent = (0, pda_1.getRebalanceIntentPda)(basket.ownAddress, wallet.publicKey);
|
|
378
|
+
let tx = yield sdk.updateTokenPricesTx({
|
|
379
|
+
keeper: wallet.publicKey.toBase58(),
|
|
380
|
+
basket: basket.ownAddress.toBase58(),
|
|
381
|
+
rebalance_intent: rebalanceIntent.toBase58(),
|
|
382
|
+
});
|
|
383
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
384
|
+
console.log(res);
|
|
385
|
+
}
|
|
386
|
+
if (tests.rebalanceSwapAll) {
|
|
387
|
+
let rebalanceIntent = (0, pda_1.getRebalanceIntentPda)(basket.ownAddress, wallet.publicKey);
|
|
388
|
+
let state = yield sdk.fetchRebalanceIntent(rebalanceIntent.toBase58());
|
|
389
|
+
let pairs = (0, rebalanceIntent_1.getSwapPairs)(state.chain_data, basket);
|
|
390
|
+
console.log(pairs);
|
|
391
|
+
for (let pair of pairs)
|
|
392
|
+
try {
|
|
393
|
+
let { tokenLedgerInstruction, swapInstruction, addressLookupTableAddresses, quoteResponse } = yield (0, jup_1.getJupTokenLedgerAndSwapInstructions)({
|
|
394
|
+
keeper: wallet.publicKey,
|
|
395
|
+
basketMintIn: basket.mint,
|
|
396
|
+
basketMintOut: basket.mint,
|
|
397
|
+
basketAmountIn: pair.inAmount,
|
|
398
|
+
basketAmountOut: pair.outAmount,
|
|
399
|
+
swapMode: "ioc",
|
|
400
|
+
apiKey: jupApiKey,
|
|
401
|
+
maxJupAccounts: 45,
|
|
402
|
+
});
|
|
403
|
+
console.log(quoteResponse);
|
|
404
|
+
let tx = yield sdk.flashSwapTx({
|
|
405
|
+
keeper: wallet.publicKey.toBase58(),
|
|
406
|
+
basket: basket.ownAddress.toBase58(),
|
|
407
|
+
rebalance_intent: rebalanceIntent.toBase58(),
|
|
408
|
+
mint_in: pair.inMint,
|
|
409
|
+
mint_out: pair.outMint,
|
|
410
|
+
amount_in: pair.inAmount,
|
|
411
|
+
amount_out: pair.outAmount,
|
|
412
|
+
mode: 2,
|
|
413
|
+
jup_token_ledger_ix: tokenLedgerInstruction,
|
|
414
|
+
jup_swap_ix: swapInstruction,
|
|
415
|
+
jup_address_lookup_table_addresses: addressLookupTableAddresses,
|
|
416
|
+
});
|
|
417
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
418
|
+
console.log(res);
|
|
419
|
+
}
|
|
420
|
+
catch (_b) {
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
if (tests.rebalanceSwap) {
|
|
425
|
+
let rebalanceIntent = (0, pda_1.getRebalanceIntentPda)(basket.ownAddress, wallet.publicKey);
|
|
426
|
+
let tx = yield sdk.flashSwapTx({
|
|
427
|
+
keeper: wallet.publicKey.toBase58(),
|
|
428
|
+
basket: basket.ownAddress.toBase58(),
|
|
429
|
+
rebalance_intent: rebalanceIntent.toBase58(),
|
|
430
|
+
mint_in: "USDCoctVLVnvTXBEuP9s8hntucdJokbo17RwHuNXemT",
|
|
431
|
+
mint_out: "So11111111111111111111111111111111111111112",
|
|
432
|
+
amount_in: 100 * 10 ** 6,
|
|
433
|
+
amount_out: 1 * 10 ** 9,
|
|
434
|
+
mode: 2,
|
|
435
|
+
});
|
|
436
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
437
|
+
console.log(res);
|
|
438
|
+
}
|
|
439
|
+
if (tests.mintBasket) {
|
|
440
|
+
let rebalanceIntent = (0, pda_1.getRebalanceIntentPda)(basket.ownAddress, wallet.publicKey);
|
|
441
|
+
let tx = yield sdk.mintTx({
|
|
442
|
+
keeper: wallet.publicKey.toBase58(),
|
|
443
|
+
rebalance_intent: rebalanceIntent.toBase58(),
|
|
444
|
+
});
|
|
445
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
446
|
+
console.log(res);
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
if (tests.redeemTokens) {
|
|
450
|
+
let rebalanceIntent = (0, pda_1.getRebalanceIntentPda)(basket.ownAddress, wallet.publicKey);
|
|
451
|
+
let state = yield sdk.fetchRebalanceIntent(rebalanceIntent.toBase58());
|
|
452
|
+
let endTimestamp = (_a = state.formatted_data.auctions[2].end_time) !== null && _a !== void 0 ? _a : 0;
|
|
453
|
+
let now = Date.now() / 1000;
|
|
454
|
+
console.log(now, endTimestamp, endTimestamp - now);
|
|
455
|
+
let tx = yield sdk.redeemTokensTx({
|
|
456
|
+
keeper: wallet.publicKey.toBase58(),
|
|
457
|
+
rebalance_intent: rebalanceIntent.toBase58(),
|
|
458
|
+
});
|
|
459
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
460
|
+
console.log(res);
|
|
461
|
+
}
|
|
462
|
+
if (tests.claimBounty) {
|
|
463
|
+
let rebalanceIntent = (0, pda_1.getRebalanceIntentPda)(basket.ownAddress, wallet.publicKey);
|
|
464
|
+
let tx = yield sdk.claimBountyTx({
|
|
465
|
+
keeper: wallet.publicKey.toBase58(),
|
|
466
|
+
rebalance_intent: rebalanceIntent.toBase58(),
|
|
467
|
+
});
|
|
468
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
469
|
+
console.log(res);
|
|
470
|
+
}
|
|
471
|
+
if (tests.withdrawBasketFees) {
|
|
472
|
+
let tx = yield sdk.withdrawBasketFeesTx({
|
|
473
|
+
claimer: wallet.publicKey.toBase58(),
|
|
474
|
+
basket: basket.ownAddress.toBase58(),
|
|
475
|
+
});
|
|
476
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
477
|
+
console.log(res);
|
|
478
|
+
}
|
|
479
|
+
if (tests.claimTokenFeesFromBasket) {
|
|
480
|
+
let tx = yield sdk.claimTokenFeesFromBasketTx({
|
|
481
|
+
claimer: wallet.publicKey.toBase58(),
|
|
482
|
+
withdrawBasketFees: new web3_js_1.PublicKey("").toBase58(),
|
|
483
|
+
});
|
|
484
|
+
let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
|
|
485
|
+
console.log(res);
|
|
486
|
+
}
|
|
487
|
+
if (tests.editGlobalConfig) {
|
|
488
|
+
let editGlobalConfigTx = yield sdk.editGlobalConfigTx({
|
|
489
|
+
signer: wallet.publicKey,
|
|
490
|
+
config: {
|
|
491
|
+
admin: new web3_js_1.PublicKey("DEVePdJBmogeJkAmaWRpdV7KaynaQJHt9zowCisSQkAf"),
|
|
492
|
+
owners: [
|
|
493
|
+
new web3_js_1.PublicKey("UserevMsvU5K9u6iW7DT9XJVyVLpmfDCEAfXixBbE7R"),
|
|
494
|
+
new web3_js_1.PublicKey("Bm7uwxU8sTKhNhrsa5YWAQWmVTDBNMjgmYmAb4o1uDhq"),
|
|
495
|
+
new web3_js_1.PublicKey("DEVePdJBmogeJkAmaWRpdV7KaynaQJHt9zowCisSQkAf")
|
|
496
|
+
],
|
|
497
|
+
totalNumberOfBaskets: new anchor_1.BN(0),
|
|
498
|
+
allowInteractions: 1,
|
|
499
|
+
allowCreation: 1,
|
|
500
|
+
allowManagement: 1,
|
|
501
|
+
allowAutomation: 1,
|
|
502
|
+
allowDeposits: 1,
|
|
503
|
+
allowWithdraws: 1,
|
|
504
|
+
maxDepositFeeBps: 1000,
|
|
505
|
+
maxWithdrawFeeBps: 1000,
|
|
506
|
+
maxManagementFeeBps: 2000,
|
|
507
|
+
maxPerformanceFeeBps: 2000,
|
|
508
|
+
symmetryFeeCollector: new web3_js_1.PublicKey("UserevMsvU5K9u6iW7DT9XJVyVLpmfDCEAfXixBbE7R"),
|
|
509
|
+
symmetryDepositFeeBps: 10,
|
|
510
|
+
symmetryDepositFeeShareBps: 50,
|
|
511
|
+
symmetryWithdrawFeeBps: 50,
|
|
512
|
+
symmetryWithdrawFeeShareBps: 50,
|
|
513
|
+
symmetryManagementFeeBps: 50,
|
|
514
|
+
symmetryManagementFeeShareBps: 50,
|
|
515
|
+
symmetryPerformanceFeeBps: 50,
|
|
516
|
+
symmetryPerformanceFeeShareBps: 50,
|
|
517
|
+
symmetryTradeFeeBps: 50,
|
|
518
|
+
symmetryLimitOrderFeeBps: 50,
|
|
519
|
+
symmetryFeesExtraData: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],
|
|
520
|
+
bountyMint: new web3_js_1.PublicKey("So11111111111111111111111111111111111111112"),
|
|
521
|
+
minBountyForBasketAutomation: new anchor_1.BN(200 * 50 * 10 ** 3),
|
|
522
|
+
bountyBondAmount: new anchor_1.BN(5 * 50 * 10 ** 3),
|
|
523
|
+
bountyPerTask: {
|
|
524
|
+
minBounty: new anchor_1.BN(1 * 50 * 10 ** 3),
|
|
525
|
+
maxBounty: new anchor_1.BN(2 * 50 * 10 ** 3),
|
|
526
|
+
minBountyUntil: new anchor_1.BN(1),
|
|
527
|
+
maxBountyAfter: new anchor_1.BN(101),
|
|
528
|
+
},
|
|
529
|
+
bountyPerPriceUpdateTaskDivisor: new anchor_1.BN(5),
|
|
530
|
+
minRemainingValue: { high: new anchor_1.BN(0), low: new anchor_1.BN("1844674407370955161") },
|
|
531
|
+
minMintRatio: { high: new anchor_1.BN(0), low: new anchor_1.BN("18444899399302180660") },
|
|
532
|
+
aprBpsPerYear: 3334,
|
|
533
|
+
rebalanceIntentLifetime: new anchor_1.BN(10 * 60),
|
|
534
|
+
rebalanceAuction1Timeframe: new anchor_1.BN(100),
|
|
535
|
+
rebalanceAuction2Timeframe: new anchor_1.BN(50),
|
|
536
|
+
rebalanceAuction3Timeframe: new anchor_1.BN(25),
|
|
537
|
+
priceUpdateDelayAfterCreation: new anchor_1.BN(16),
|
|
538
|
+
priceUpdateLifetime: new anchor_1.BN(60),
|
|
539
|
+
priceUpdateReexecutionDelay: new anchor_1.BN(30),
|
|
540
|
+
extraData: [
|
|
541
|
+
new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0),
|
|
542
|
+
new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0),
|
|
543
|
+
new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0),
|
|
544
|
+
new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0),
|
|
545
|
+
new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0),
|
|
546
|
+
new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0),
|
|
547
|
+
new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0),
|
|
548
|
+
new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0), new anchor_1.BN(0),
|
|
549
|
+
]
|
|
550
|
+
},
|
|
551
|
+
});
|
|
552
|
+
let resEditGlobalConfigTx = yield sdk.signAndSendTxPayloadBatchSequence({
|
|
553
|
+
txPayloadBatchSequence: editGlobalConfigTx,
|
|
554
|
+
wallet,
|
|
555
|
+
});
|
|
556
|
+
console.log(resEditGlobalConfigTx);
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
testStates();
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@symmetry-hq/sdk",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Symmetry V3 SDK",
|
|
5
|
+
"main": "dist/src/index.js",
|
|
6
|
+
"types": "dist/src/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"prepare": "npm run build",
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"symmetry",
|
|
14
|
+
"baskets",
|
|
15
|
+
"sdk"
|
|
16
|
+
],
|
|
17
|
+
"author": "Sandstorm",
|
|
18
|
+
"license": "ISC",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@coral-xyz/borsh": "^0.31.1",
|
|
21
|
+
"@pythnetwork/hermes-client": "^2.1.0",
|
|
22
|
+
"@solana/spl-token": "^0.4.14",
|
|
23
|
+
"@solana/web3.js": "^1.98.4",
|
|
24
|
+
"bn.js": "^5.2.3",
|
|
25
|
+
"decimal.js": "^10.6.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@coral-xyz/anchor": "^0.31.1",
|
|
29
|
+
"@types/bn.js": "^5.2.0"
|
|
30
|
+
}
|
|
31
|
+
}
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import Decimal from 'decimal.js';
|
|
3
|
+
|
|
4
|
+
export const COMPUTE_UNITS = 1_000_000;
|
|
5
|
+
export const PRIORITY_FEE = 25_000;
|
|
6
|
+
|
|
7
|
+
export const BASKETS_V3_PROGRAM_ID = new PublicKey("BASKT7aKd8n7ibpUbwLP3Wiyxyi3yoiXsxBk4Hpumate");
|
|
8
|
+
|
|
9
|
+
export const METADATA_PROGRAM_ID = new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
|
|
10
|
+
export const ADDRESS_LOOKUP_TABLE_PROGRAM_ID = new PublicKey("AddressLookupTab1e1111111111111111111111111");
|
|
11
|
+
export const RENT_SYSVAR_ID = new PublicKey("SysvarRent111111111111111111111111111111111");
|
|
12
|
+
|
|
13
|
+
export const MINTS: Record<string, Record<string, PublicKey>> = {
|
|
14
|
+
"devnet": {
|
|
15
|
+
"WSOL": new PublicKey("So11111111111111111111111111111111111111112"),
|
|
16
|
+
"USDC": new PublicKey("USDCoctVLVnvTXBEuP9s8hntucdJokbo17RwHuNXemT"),
|
|
17
|
+
},
|
|
18
|
+
"mainnet": {
|
|
19
|
+
"WSOL": new PublicKey("So11111111111111111111111111111111111111112"),
|
|
20
|
+
"USDC": new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
export const PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT = new PublicKey("7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE");
|
|
24
|
+
export const PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT = new PublicKey("Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX");
|
|
25
|
+
|
|
26
|
+
export const INTENT_TASK_DATA_SIZE = 600;
|
|
27
|
+
export const MAX_MANAGERS_PER_BASKET = 10;
|
|
28
|
+
export const MAX_TRANSFER_TOKENS = 10;
|
|
29
|
+
|
|
30
|
+
export const X64 = new Decimal(2).pow(new Decimal(64));
|
|
31
|
+
export const HUNDRED_PERCENT_BPS = 10000;
|
|
32
|
+
export const WSOL_DECIMALS = 9;
|
|
33
|
+
export const USDC_DECIMALS = 6;
|
|
34
|
+
|
|
35
|
+
export const MAX_SUPPORTED_TOKENS_PER_BASKET: number = 100;
|
|
36
|
+
export const MAX_ORACLES_PER_TOKEN: number = 4;
|
|
37
|
+
export const MAX_EXTRA_DATA_PER_ORACLE: number = 4;
|
|
38
|
+
|
|
39
|
+
export const LUT_EXTEND_BATCH_SIZE = 20;
|
|
40
|
+
export const UPDATE_TOKEN_PRICES_MAX_ACCOUNTS = 50;
|