@symmetry-hq/temp-v3-sdk 0.0.10 → 0.0.11

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.
@@ -21,10 +21,13 @@ export declare class SymmetryCore {
21
21
  jupiterApiKey?: string;
22
22
  maxAllowedAccounts?: number;
23
23
  });
24
- getBasket(params: {
25
- basket: PublicKey;
26
- }): Promise<Basket>;
27
- fetchAllBaskets(filters?: BasketFilter[]): Promise<Basket[]>;
24
+ fetchBasket(basketPubkey: string): Promise<Basket>;
25
+ fetchMultipleBaskets(basketPubkeys: string[]): Promise<Map<string, Basket>>;
26
+ fetchAllBaskets(basketFilter?: BasketFilter): Promise<Basket[]>;
27
+ fetchCreatedBaskets(creatorPubkey: string): Promise<Basket[]>;
28
+ fetchHostedBaskets(hostPubkey: string): Promise<Basket[]>;
29
+ fetchManagedBaskets(managerPubkey: string): Promise<Basket[]>;
30
+ deriveBasketsByMints(mints: string[]): Promise<Map<string, string>>;
28
31
  fetchBasketsFromMints(mints: string[]): Promise<Map<string, Basket>>;
29
32
  loadBasketPrice(basket: Basket): Promise<Basket>;
30
33
  fetchAllIntents(filters: IntentFilter[]): Promise<Intent[]>;
package/dist/src/index.js CHANGED
@@ -56,16 +56,49 @@ class SymmetryCore {
56
56
  // async setPayer(payer: PublicKey) {
57
57
  // this.sdkParams.payer = payer;
58
58
  // }
59
- getBasket(params) {
59
+ fetchBasket(basketPubkey) {
60
60
  return __awaiter(this, void 0, void 0, function* () {
61
- const basketState = yield (0, basket_2.fetchBasket)(this.sdkParams.connection, params.basket);
61
+ const basketState = yield (0, basket_2.fetchBasket)(this.sdkParams.connection, new web3_js_1.PublicKey(basketPubkey));
62
62
  return basketState;
63
63
  });
64
64
  }
65
- fetchAllBaskets(filters) {
65
+ fetchMultipleBaskets(basketPubkeys) {
66
66
  return __awaiter(this, void 0, void 0, function* () {
67
- const baskets = yield (0, basket_2.fetchBaskets)(this.sdkParams.connection, filters !== null && filters !== void 0 ? filters : []);
68
- return baskets;
67
+ let basketPubkeysArray = basketPubkeys.map(pubkey => new web3_js_1.PublicKey(pubkey));
68
+ const basketsMap = yield (0, basket_2.fetchBaskektsMultiple)(this.sdkParams.connection, basketPubkeysArray);
69
+ return basketsMap;
70
+ });
71
+ }
72
+ fetchAllBaskets(basketFilter) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ return yield (0, basket_2.fetchBaskets)(this.sdkParams.connection, basketFilter);
75
+ });
76
+ }
77
+ fetchCreatedBaskets(creatorPubkey) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ return yield (0, basket_2.fetchBaskets)(this.sdkParams.connection, { type: "creator", pubkey: creatorPubkey });
80
+ });
81
+ }
82
+ fetchHostedBaskets(hostPubkey) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ return yield (0, basket_2.fetchBaskets)(this.sdkParams.connection, { type: "host", pubkey: hostPubkey });
85
+ });
86
+ }
87
+ fetchManagedBaskets(managerPubkey) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ return yield (0, basket_2.fetchBaskets)(this.sdkParams.connection, { type: "manager", pubkey: managerPubkey });
90
+ });
91
+ }
92
+ deriveBasketsByMints(mints) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ let result = new Map();
95
+ for (let basketId = 0; basketId < 50000; basketId++) {
96
+ let mint = (0, pda_1.getBasketTokenMintPda)(basketId).toBase58();
97
+ if (mints.includes(mint)) {
98
+ result.set(mint, (0, pda_1.getBasketState)(new web3_js_1.PublicKey(mint)).toBase58());
99
+ }
100
+ }
101
+ return result;
69
102
  });
70
103
  }
71
104
  fetchBasketsFromMints(mints) {
@@ -278,7 +311,7 @@ class SymmetryCore {
278
311
  openBasketIntentTx(params) {
279
312
  return __awaiter(this, void 0, void 0, function* () {
280
313
  var _a;
281
- let basket = yield this.getBasket({ basket: new web3_js_1.PublicKey(params.edit_data.basket) });
314
+ let basket = yield this.fetchBasket(params.edit_data.basket);
282
315
  let manager = new web3_js_1.PublicKey(params.edit_data.manager);
283
316
  let useBounty = params.edit_data.use_bounty == false ? false : true;
284
317
  let activationTimestamp = new anchor_1.BN((_a = params.edit_data.activation_timestamp) !== null && _a !== void 0 ? _a : 0);
@@ -354,7 +387,7 @@ class SymmetryCore {
354
387
  let { keeper, intent } = params;
355
388
  let basketMint;
356
389
  if (intent.taskType === intent_1.TaskType.EditMetadataSettings) {
357
- let basket = yield this.getBasket({ basket: intent.basket });
390
+ let basket = yield this.fetchBasket(intent.basket.toBase58());
358
391
  basketMint = basket.mint;
359
392
  }
360
393
  let ix = (0, edit_1.executeEditBasketIntentIx)({
@@ -21,7 +21,6 @@ const EDIT_PRIVATE_BASKET_SETTINGS_DISCRIMINATOR = Buffer.from([202, 54, 138, 17
21
21
  const CREATE_EDIT_BASKET_INTENT_DISCRIMINATOR = Buffer.from([82, 150, 58, 227, 153, 129, 20, 30]);
22
22
  const EDIT_BASKET_DISCRIMINATOR = Buffer.from([156, 31, 4, 39, 248, 29, 55, 220]);
23
23
  const CANCEL_INTENT_DISCRIMINATOR = Buffer.from([181, 103, 27, 100, 84, 89, 70, 236]);
24
- const ZERO_INTENT_SEED = new Uint8Array(32).fill(0);
25
24
  function editPrivateBasketSettingsIx(params) {
26
25
  let metadataAccount = (0, pda_1.getMetadataAccount)(params.mint);
27
26
  let globalConfig = (0, pda_1.getGlobalConfigPda)();
@@ -5,9 +5,9 @@ export declare function addLutsToBaskets(connection: Connection, baskets: Basket
5
5
  export declare function fetchBasket(connection: Connection, basketAddress: PublicKey): Promise<Basket>;
6
6
  export declare function fetchBaskektsMultiple(connection: Connection, basketAddresses: PublicKey[]): Promise<Map<string, Basket>>;
7
7
  export interface BasketFilter {
8
- filterType: "host" | "creator";
9
- filterValue: PublicKey;
8
+ type: "host" | "creator" | "manager";
9
+ pubkey: string;
10
10
  }
11
- export declare function fetchBaskets(connection: Connection, filters: BasketFilter[]): Promise<Basket[]>;
11
+ export declare function fetchBaskets(connection: Connection, filter?: BasketFilter): Promise<Basket[]>;
12
12
  export declare function getBasketOracleAccountInfos(connection: Connection, basket: Basket): Promise<Map<string, AccountInfo<Buffer> | null>>;
13
13
  export declare function loadBasketPrice(basket: Basket, connection: Connection): Promise<Basket>;
@@ -57,207 +57,185 @@ function addFieldsToBasket(basket) {
57
57
  basket.settings.managers.managers = basket.settings.managers.managers.slice(0, totalManagers);
58
58
  basket.settings.managers.managersWeightBps = basket.settings.managers.managersWeightBps.slice(0, totalManagers);
59
59
  basket = Object.assign(Object.assign({}, basket), { metadata: metadata });
60
- let authoritiesMap = new Map();
60
+ let managers = [];
61
61
  for (let i = 0; i < basket.settings.managers.managers.length; i++) {
62
62
  let manager = basket.settings.managers.managers[i].toBase58();
63
- let authorities = [];
64
- if (((2 ** i) & basket.settings.managersAuthorityBitmask) != 0)
65
- authorities.push("managers");
66
- if (((2 ** i) & basket.settings.feesAuthorityBitmask) != 0)
67
- authorities.push("fees");
68
- if (((2 ** i) & basket.settings.scheduleAuthorityBitmask) != 0)
69
- authorities.push("schedule");
70
- if (((2 ** i) & basket.settings.automationAuthorityBitmask) != 0)
71
- authorities.push("automation");
72
- if (((2 ** i) & basket.settings.lpAuthorityBitmask) != 0)
73
- authorities.push("lp");
74
- if (((2 ** i) & basket.settings.metadataAuthorityBitmask) != 0)
75
- authorities.push("metadata");
76
- if (((2 ** i) & basket.settings.depositsAuthorityBitmask) != 0)
77
- authorities.push("deposits");
78
- if (((2 ** i) & basket.settings.forceRebalanceAuthorityBitmask) != 0)
79
- authorities.push("force_rebalance");
80
- if (((2 ** i) & basket.settings.customRebalanceAuthorityBitmask) != 0)
81
- authorities.push("custom_rebalance");
82
- if (((2 ** i) & basket.settings.addTokenIntentAuthorityBitmask) != 0)
83
- authorities.push("add_token");
84
- if (((2 ** i) & basket.settings.updateWeightsIntentAuthorityBitmask) != 0)
85
- authorities.push("update_weights");
86
- if (((2 ** i) & basket.settings.makeDirectSwapIntentAuthorityBitmask) != 0)
87
- authorities.push("make_direct_swap");
88
- authoritiesMap.set(manager, authorities);
63
+ let authorities = {
64
+ managers: (((2 ** i) & basket.settings.managersAuthorityBitmask) != 0),
65
+ fees: (((2 ** i) & basket.settings.feesAuthorityBitmask) != 0),
66
+ schedule: (((2 ** i) & basket.settings.scheduleAuthorityBitmask) != 0),
67
+ automation: (((2 ** i) & basket.settings.automationAuthorityBitmask) != 0),
68
+ lp: (((2 ** i) & basket.settings.lpAuthorityBitmask) != 0),
69
+ metadata: (((2 ** i) & basket.settings.metadataAuthorityBitmask) != 0),
70
+ deposits: (((2 ** i) & basket.settings.depositsAuthorityBitmask) != 0),
71
+ force_rebalance: (((2 ** i) & basket.settings.forceRebalanceAuthorityBitmask) != 0),
72
+ custom_rebalance: (((2 ** i) & basket.settings.customRebalanceAuthorityBitmask) != 0),
73
+ add_token: (((2 ** i) & basket.settings.addTokenIntentAuthorityBitmask) != 0),
74
+ update_weights: (((2 ** i) & basket.settings.updateWeightsIntentAuthorityBitmask) != 0),
75
+ make_direct_swap: (((2 ** i) & basket.settings.makeDirectSwapIntentAuthorityBitmask) != 0),
76
+ };
77
+ managers.push({
78
+ pubkey: manager,
79
+ weight_bps: basket.settings.managers.managersWeightBps[i],
80
+ authorities: authorities,
81
+ });
89
82
  }
90
83
  let formatted = {
91
84
  pubkey: basket.ownAddress.toBase58(),
92
85
  name: (_a = basket.metadata) === null || _a === void 0 ? void 0 : _a.name,
93
86
  symbol: (_b = basket.metadata) === null || _b === void 0 ? void 0 : _b.symbol,
94
87
  uri: (_c = basket.metadata) === null || _c === void 0 ? void 0 : _c.uri,
95
- authorities: authoritiesMap,
96
- version: basket.version.toString(),
88
+ version: basket.version,
97
89
  own_address: basket.ownAddress.toBase58(),
98
90
  mint: basket.mint.toBase58(),
99
- supply_outstanding: basket.supplyOutstanding.toString(),
91
+ supply_outstanding: basket.supplyOutstanding.toNumber(),
100
92
  creator: basket.settings.creator.toBase58(),
101
93
  host: basket.settings.host.toBase58(),
102
- basket_type: basket.settings.basketType == 0 ? "Private" : "Public",
94
+ basket_type: basket.settings.basketType == 0 ? "private" : "public",
103
95
  bounty_mint: basket.settings.bountyMint.toBase58(),
104
- bounty_balance: basket.settings.bountyBalance.toString(),
105
- start_price: (0, fraction_1.fractionToDecimal)(basket.settings.startPrice).toString(),
106
- high_watermark: (0, fraction_1.fractionToDecimal)(basket.settings.highWaterMark).toString(),
107
- active_rebalance: basket.settings.activeRebalance.toString(),
108
- active_deposits: basket.settings.activeDeposits.toString(),
109
- active_managements: basket.settings.activeManagements.toString(),
110
- last_automation_execution_timestamp: basket.settings.lastAutomationExecutionTimestamp.toString(),
111
- managers: basket.settings.managers.managers.map(manager => manager.toBase58()),
112
- manager_weight_bps: basket.settings.managers.managersWeightBps,
113
- managers_modification_delay: basket.settings.managers.modificationDelay.toString(),
114
- managers_last_update_timestamp: basket.settings.managersLastUpdateTimestamp.toString(),
115
- managers_authority_bitmask: basket.settings.managersAuthorityBitmask.toString(),
96
+ bounty_balance: parseInt(basket.settings.bountyBalance.toString()),
97
+ start_price: (0, fraction_1.fractionToDecimal)(basket.settings.startPrice).toNumber(),
98
+ high_watermark: (0, fraction_1.fractionToDecimal)(basket.settings.highWaterMark).toNumber(),
99
+ active_rebalance: parseInt(basket.settings.activeRebalance.toString()),
100
+ active_deposits: parseInt(basket.settings.activeDeposits.toString()),
101
+ active_managements: parseInt(basket.settings.activeManagements.toString()),
102
+ last_automation_execution_timestamp: parseInt(basket.settings.lastAutomationExecutionTimestamp.toString()),
103
+ managers: {
104
+ managers,
105
+ modification_delay: parseInt(basket.settings.managers.modificationDelay.toString()),
106
+ updated_at: parseInt(basket.settings.managersLastUpdateTimestamp.toString()),
107
+ },
116
108
  fees: {
117
- host_deposit_fee_bps: basket.settings.fees.hostDepositFeeBps.toString(),
118
- host_withdraw_fee_bps: basket.settings.fees.hostWithdrawFeeBps.toString(),
119
- host_management_fee_bps: basket.settings.fees.hostManagementFeeBps.toString(),
120
- host_performance_fee_bps: basket.settings.fees.hostPerformanceFeeBps.toString(),
121
- creator_deposit_fee_bps: basket.settings.fees.creatorDepositFeeBps.toString(),
122
- creator_withdraw_fee_bps: basket.settings.fees.creatorWithdrawFeeBps.toString(),
123
- creator_management_fee_bps: basket.settings.fees.creatorManagementFeeBps.toString(),
124
- creator_performance_fee_bps: basket.settings.fees.creatorPerformanceFeeBps.toString(),
125
- managers_deposit_fee_bps: basket.settings.fees.managersDepositFeeBps.toString(),
126
- managers_withdraw_fee_bps: basket.settings.fees.managersWithdrawFeeBps.toString(),
127
- managers_management_fee_bps: basket.settings.fees.managersManagementFeeBps.toString(),
128
- managers_performance_fee_bps: basket.settings.fees.managersPerformanceFeeBps.toString(),
129
- basket_deposit_fee_bps: basket.settings.fees.basketDepositFeeBps.toString(),
130
- basket_withdraw_fee_bps: basket.settings.fees.basketWithdrawFeeBps.toString(),
131
- extra_data: basket.settings.fees.extraData.map(data => data.toString()),
132
- modification_delay: basket.settings.fees.modificationDelay.toString(),
109
+ host_deposit_fee_bps: basket.settings.fees.hostDepositFeeBps,
110
+ host_withdraw_fee_bps: basket.settings.fees.hostWithdrawFeeBps,
111
+ host_management_fee_bps: basket.settings.fees.hostManagementFeeBps,
112
+ host_performance_fee_bps: basket.settings.fees.hostPerformanceFeeBps,
113
+ creator_deposit_fee_bps: basket.settings.fees.creatorDepositFeeBps,
114
+ creator_withdraw_fee_bps: basket.settings.fees.creatorWithdrawFeeBps,
115
+ creator_management_fee_bps: basket.settings.fees.creatorManagementFeeBps,
116
+ creator_performance_fee_bps: basket.settings.fees.creatorPerformanceFeeBps,
117
+ managers_deposit_fee_bps: basket.settings.fees.managersDepositFeeBps,
118
+ managers_withdraw_fee_bps: basket.settings.fees.managersWithdrawFeeBps,
119
+ managers_management_fee_bps: basket.settings.fees.managersManagementFeeBps,
120
+ managers_performance_fee_bps: basket.settings.fees.managersPerformanceFeeBps,
121
+ basket_deposit_fee_bps: basket.settings.fees.basketDepositFeeBps,
122
+ basket_withdraw_fee_bps: basket.settings.fees.basketWithdrawFeeBps,
123
+ modification_delay: parseInt(basket.settings.fees.modificationDelay.toString()),
124
+ updated_at: parseInt(basket.settings.feesLastUpdateTimestamp.toString()),
133
125
  },
134
- fees_last_update_timestamp: basket.settings.feesLastUpdateTimestamp.toString(),
135
- fees_authority_bitmask: basket.settings.feesAuthorityBitmask.toString(),
136
126
  schedule: {
137
- cycle_start_time: basket.settings.schedule.cycleStartTime.toString(),
138
- cycle_duration: basket.settings.schedule.cycleDuration.toString(),
139
- deposits_start: basket.settings.schedule.depositsStart.toString(),
140
- deposits_end: basket.settings.schedule.depositsEnd.toString(),
141
- automation_start: basket.settings.schedule.automationStart.toString(),
142
- automation_end: basket.settings.schedule.automationEnd.toString(),
143
- management_start: basket.settings.schedule.managementStart.toString(),
144
- management_end: basket.settings.schedule.managementEnd.toString(),
145
- modification_delay: basket.settings.schedule.modificationDelay.toString(),
127
+ cycle_start_time: parseInt(basket.settings.schedule.cycleStartTime.toString()),
128
+ cycle_duration: parseInt(basket.settings.schedule.cycleDuration.toString()),
129
+ deposits_start: parseInt(basket.settings.schedule.depositsStart.toString()),
130
+ deposits_end: parseInt(basket.settings.schedule.depositsEnd.toString()),
131
+ automation_start: parseInt(basket.settings.schedule.automationStart.toString()),
132
+ automation_end: parseInt(basket.settings.schedule.automationEnd.toString()),
133
+ management_start: parseInt(basket.settings.schedule.managementStart.toString()),
134
+ management_end: parseInt(basket.settings.schedule.managementEnd.toString()),
135
+ modification_delay: parseInt(basket.settings.schedule.modificationDelay.toString()),
136
+ updated_at: parseInt(basket.settings.scheduleLastUpdateTimestamp.toString()),
146
137
  },
147
- schedule_last_update_timestamp: basket.settings.scheduleLastUpdateTimestamp.toString(),
148
- schedule_authority_bitmask: basket.settings.scheduleAuthorityBitmask.toString(),
149
138
  automation: {
150
- allow_automation: basket.settings.automation.allowAutomation.toString(),
151
- rebalance_slippage_threshold_bps: basket.settings.automation.rebalanceSlippageThresholdBps.toString(),
152
- per_trade_rebalance_slippage_threshold_bps: basket.settings.automation.perTradeRebalanceSlippageThresholdBps.toString(),
153
- rebalance_activation_threshold_abs_bps: basket.settings.automation.rebalanceActivationThresholdAbsBps.toString(),
154
- rebalance_activation_threshold_rel_bps: basket.settings.automation.rebalanceActivationThresholdRelBps.toString(),
155
- rebalance_activation_cooldown: basket.settings.automation.rebalanceActivationCooldown.toString(),
156
- extra_data: basket.settings.automation.extraData.map(data => data.toString()),
157
- modification_delay: basket.settings.automation.modificationDelay.toString(),
139
+ allow: basket.settings.automation.allowAutomation == 1 ? true : false,
140
+ rebalance_slippage_threshold_bps: basket.settings.automation.rebalanceSlippageThresholdBps,
141
+ per_trade_rebalance_slippage_threshold_bps: basket.settings.automation.perTradeRebalanceSlippageThresholdBps,
142
+ rebalance_activation_threshold_abs_bps: basket.settings.automation.rebalanceActivationThresholdAbsBps,
143
+ rebalance_activation_threshold_rel_bps: basket.settings.automation.rebalanceActivationThresholdRelBps,
144
+ rebalance_activation_cooldown: parseInt(basket.settings.automation.rebalanceActivationCooldown.toString()),
145
+ modification_delay: parseInt(basket.settings.automation.modificationDelay.toString()),
146
+ updated_at: parseInt(basket.settings.automationLastUpdateTimestamp.toString()),
158
147
  },
159
- automation_last_update_timestamp: basket.settings.automationLastUpdateTimestamp.toString(),
160
- automation_authority_bitmask: basket.settings.automationAuthorityBitmask.toString(),
161
148
  lp: {
162
- allow_lp: basket.settings.lp.allowLp.toString(),
163
- lp_threshold_bps: basket.settings.lp.lpThresholdBps.toString(),
164
- extra_data: basket.settings.lp.extraData.map(data => data.toString()),
165
- modification_delay: basket.settings.lp.modificationDelay.toString(),
149
+ allow: basket.settings.lp.allowLp == 1 ? true : false,
150
+ lp_threshold_bps: basket.settings.lp.lpThresholdBps,
151
+ modification_delay: parseInt(basket.settings.lp.modificationDelay.toString()),
152
+ updated_at: parseInt(basket.settings.lpLastUpdateTimestamp.toString()),
153
+ },
154
+ deposits: {
155
+ allow: basket.settings.depositsAreAllowed == 1 ? true : false,
156
+ },
157
+ force_rebalance: {
158
+ allow: basket.settings.forceRebalanceIsAllowed == 1 ? true : false,
159
+ modification_delay: parseInt(basket.settings.forceRebalanceModificationDelay.toString()),
160
+ updated_at: parseInt(basket.settings.forceRebalanceLastUpdateTimestamp.toString()),
161
+ },
162
+ custom_rebalance: {
163
+ allow: basket.settings.customRebalanceIsAllowed == 1 ? true : false,
164
+ modification_delay: parseInt(basket.settings.customRebalanceModificationDelay.toString()),
165
+ updated_at: parseInt(basket.settings.customRebalanceLastUpdateTimestamp.toString()),
166
+ },
167
+ add_token: {
168
+ delay: parseInt(basket.settings.addTokenDelay.toString()),
169
+ updated_at: parseInt(basket.settings.addTokenLastUpdateTimestamp.toString()),
166
170
  },
167
- lp_last_update_timestamp: basket.settings.lpLastUpdateTimestamp.toString(),
168
- lp_authority_bitmask: basket.settings.lpAuthorityBitmask.toString(),
169
- metadata: {
170
- symbol_length: basket.settings.metadata.symbolLength.toString(),
171
- symbol: basket.settings.metadata.symbol.map(data => data.toString()),
172
- name_length: basket.settings.metadata.nameLength.toString(),
173
- name: basket.settings.metadata.name.map(data => data.toString()),
174
- uri_length: basket.settings.metadata.uriLength.toString(),
175
- uri: basket.settings.metadata.uri.map(data => data.toString()),
176
- modification_delay: basket.settings.metadata.modificationDelay.toString(),
171
+ update_weights: {
172
+ delay: parseInt(basket.settings.updateWeightsDelay.toString()),
173
+ updated_at: parseInt(basket.settings.updateWeightsLastUpdateTimestamp.toString()),
174
+ },
175
+ make_direct_swap: {
176
+ delay: parseInt(basket.settings.makeDirectSwapDelay.toString()),
177
+ updated_at: parseInt(basket.settings.makeDirectSwapLastUpdateTimestamp.toString()),
177
178
  },
178
- deposits_are_allowed: basket.settings.depositsAreAllowed.toString(),
179
- deposits_authority_bitmask: basket.settings.depositsAuthorityBitmask.toString(),
180
- force_rebalance_is_allowed: basket.settings.forceRebalanceIsAllowed.toString(),
181
- force_rebalance_modification_delay: basket.settings.forceRebalanceModificationDelay.toString(),
182
- force_rebalance_last_update_timestamp: basket.settings.forceRebalanceLastUpdateTimestamp.toString(),
183
- force_rebalance_authority_bitmask: basket.settings.forceRebalanceAuthorityBitmask.toString(),
184
- custom_rebalance_is_allowed: basket.settings.customRebalanceIsAllowed.toString(),
185
- custom_rebalance_modification_delay: basket.settings.customRebalanceModificationDelay.toString(),
186
- custom_rebalance_last_update_timestamp: basket.settings.customRebalanceLastUpdateTimestamp.toString(),
187
- custom_rebalance_authority_bitmask: basket.settings.customRebalanceAuthorityBitmask.toString(),
188
- add_token_delay: basket.settings.addTokenDelay.toString(),
189
- add_token_last_update_timestamp: basket.settings.addTokenLastUpdateTimestamp.toString(),
190
- add_token_intent_authority_bitmask: basket.settings.addTokenIntentAuthorityBitmask.toString(),
191
- update_weights_delay: basket.settings.updateWeightsDelay.toString(),
192
- update_weights_last_update_timestamp: basket.settings.updateWeightsLastUpdateTimestamp.toString(),
193
- update_weights_intent_authority_bitmask: basket.settings.updateWeightsIntentAuthorityBitmask.toString(),
194
- make_direct_swap_delay: basket.settings.makeDirectSwapDelay.toString(),
195
- make_direct_swap_last_update_timestamp: basket.settings.makeDirectSwapLastUpdateTimestamp.toString(),
196
- make_direct_swap_intent_authority_bitmask: basket.settings.makeDirectSwapIntentAuthorityBitmask.toString(),
197
- extra_data: basket.settings.extraData.map(data => data.toString()),
198
179
  accumulated_fees: {
199
- symmetry_fees: basket.accumulatedFees.symmetryFees.toString(),
200
- creator_fees: basket.accumulatedFees.creatorFees.toString(),
201
- host_fees: basket.accumulatedFees.hostFees.toString(),
202
- managers_fees: basket.accumulatedFees.managersFees.toString(),
180
+ symmetry_fees: parseInt(basket.accumulatedFees.symmetryFees.toString()),
181
+ creator_fees: parseInt(basket.accumulatedFees.creatorFees.toString()),
182
+ host_fees: parseInt(basket.accumulatedFees.hostFees.toString()),
183
+ managers_fees: parseInt(basket.accumulatedFees.managersFees.toString()),
203
184
  },
204
185
  lookup_tables: {
205
- active: basket.lookupTables.active.map(table => table.toBase58()),
206
- temp: basket.lookupTables.temp.map(table => table.toBase58()),
207
- active_contents: [
186
+ active: [
208
187
  {
209
188
  pubkey: basket.lookupTables.active[0].toBase58(),
210
- addresses: ((_e = (_d = basket.lutPubkeys) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.state.addresses.map(address => address.toBase58())) || [],
189
+ contents: ((_e = (_d = basket.lutPubkeys) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.state.addresses.map(address => address.toBase58())) || [],
211
190
  },
212
191
  {
213
192
  pubkey: basket.lookupTables.active[1].toBase58(),
214
- addresses: ((_g = (_f = basket.lutPubkeys) === null || _f === void 0 ? void 0 : _f[1]) === null || _g === void 0 ? void 0 : _g.state.addresses.map(address => address.toBase58())) || [],
193
+ contents: ((_g = (_f = basket.lutPubkeys) === null || _f === void 0 ? void 0 : _f[1]) === null || _g === void 0 ? void 0 : _g.state.addresses.map(address => address.toBase58())) || [],
215
194
  },
216
195
  ],
217
- temp_contents: [
196
+ temp: [
218
197
  {
219
198
  pubkey: basket.lookupTables.temp[0].toBase58(),
220
- addresses: ((_j = (_h = basket.lutPubkeys) === null || _h === void 0 ? void 0 : _h[2]) === null || _j === void 0 ? void 0 : _j.state.addresses.map(address => address.toBase58())) || [],
199
+ contents: ((_j = (_h = basket.lutPubkeys) === null || _h === void 0 ? void 0 : _h[2]) === null || _j === void 0 ? void 0 : _j.state.addresses.map(address => address.toBase58())) || [],
221
200
  },
222
201
  {
223
202
  pubkey: basket.lookupTables.temp[1].toBase58(),
224
- addresses: ((_l = (_k = basket.lutPubkeys) === null || _k === void 0 ? void 0 : _k[3]) === null || _l === void 0 ? void 0 : _l.state.addresses.map(address => address.toBase58())) || [],
203
+ contents: ((_l = (_k = basket.lutPubkeys) === null || _k === void 0 ? void 0 : _k[3]) === null || _l === void 0 ? void 0 : _l.state.addresses.map(address => address.toBase58())) || [],
225
204
  },
226
205
  ],
227
206
  },
228
- num_tokens: basket.numTokens.toString(),
229
207
  composition: basket.composition.map(asset => ({
230
208
  mint: asset.mint.toBase58(),
231
- amount: asset.amount.toString(),
232
- weight: asset.weight.toString(),
233
- active: asset.active.toString(),
209
+ amount: parseInt(asset.amount.toString()),
210
+ weight: asset.weight,
211
+ active: asset.active == 1 ? true : false,
234
212
  oracle_aggregator: {
235
- num_oracles: asset.oracleAggregator.numOracles.toString(),
236
- min_oracles_thresh: asset.oracleAggregator.minOraclesThresh.toString(),
213
+ num_oracles: asset.oracleAggregator.numOracles,
214
+ min_oracles_thresh: asset.oracleAggregator.minOraclesThresh,
237
215
  oracles: asset.oracleAggregator.oracles.map(oracle => ({
238
216
  oracle_settings: {
239
217
  oracle_type: ["Pyth", "RaydiumCpmm", "RaydiumClmm", "SwitchBoard", "Example"][oracle.oracleSettings.oracleType],
240
- num_required_accounts: oracle.oracleSettings.numRequiredAccounts.toString(),
241
- weight: oracle.oracleSettings.weight.toString(),
242
- is_required: oracle.oracleSettings.isRequired.toString(),
243
- conf_thresh_bps: oracle.oracleSettings.confThreshBps.toString(),
244
- volatility_thresh_bps: oracle.oracleSettings.volatilityThreshBps.toString(),
245
- max_slippage_bps: oracle.oracleSettings.maxSlippageBps.toString(),
246
- min_liquidity: oracle.oracleSettings.minLiquidity.toString(),
247
- staleness_thresh: oracle.oracleSettings.stalenessThresh.toString(),
248
- staleness_conf_rate_bps: oracle.oracleSettings.stalenessConfRateBps.toString(),
249
- token_decimals: oracle.oracleSettings.tokenDecimals.toString(),
250
- twap_seconds_ago: oracle.oracleSettings.twapSecondsAgo.toString(),
251
- twap_secondary_seconds_ago: oracle.oracleSettings.twapSecondarySecondsAgo.toString(),
218
+ num_required_accounts: oracle.oracleSettings.numRequiredAccounts,
219
+ weight: oracle.oracleSettings.weight,
220
+ is_required: oracle.oracleSettings.isRequired == 1 ? true : false,
221
+ conf_thresh_bps: oracle.oracleSettings.confThreshBps,
222
+ volatility_thresh_bps: oracle.oracleSettings.volatilityThreshBps,
223
+ max_slippage_bps: oracle.oracleSettings.maxSlippageBps,
224
+ min_liquidity: parseInt(oracle.oracleSettings.minLiquidity.toString()),
225
+ staleness_thresh: parseInt(oracle.oracleSettings.stalenessThresh.toString()),
226
+ staleness_conf_rate_bps: oracle.oracleSettings.stalenessConfRateBps,
227
+ token_decimals: oracle.oracleSettings.tokenDecimals,
228
+ twap_seconds_ago: parseInt(oracle.oracleSettings.twapSecondsAgo.toString()),
229
+ twap_secondary_seconds_ago: parseInt(oracle.oracleSettings.twapSecondarySecondsAgo.toString()),
252
230
  quote: oracle.oracleSettings.quote == 0 ? "Usdc" : "Wsol",
253
231
  side: oracle.oracleSettings.side == 0 ? "Base" : "Quote",
254
232
  },
255
233
  accounts_to_load_lut_ids: oracle.accountsToLoadLutIds.map(id => id.toString()),
256
234
  accounts_to_load_lut_indices: oracle.accountsToLoadLutIndices.map(index => index.toString()),
257
235
  })),
258
- min_conf_bps: asset.oracleAggregator.minConfBps.toString(),
259
- conf_thresh_bps: asset.oracleAggregator.confThreshBps.toString(),
260
- conf_multiplier: (0, fraction_1.fractionToDecimal)(asset.oracleAggregator.confMultiplier).toString(),
236
+ min_conf_bps: asset.oracleAggregator.minConfBps,
237
+ conf_thresh_bps: asset.oracleAggregator.confThreshBps,
238
+ conf_multiplier: (0, fraction_1.fractionToDecimal)(asset.oracleAggregator.confMultiplier).toNumber(),
261
239
  },
262
240
  })),
263
241
  };
@@ -306,33 +284,57 @@ function fetchBaskektsMultiple(connection, basketAddresses) {
306
284
  return basketsMap;
307
285
  });
308
286
  }
309
- function fetchBaskets(connection, filters) {
287
+ function fetchBaskets(connection, filter) {
310
288
  return __awaiter(this, void 0, void 0, function* () {
311
- let accountFilters = [
312
- { dataSize: 8 + basket_1.BasketLayout.getSpan() },
313
- ];
314
- for (const filter of filters) {
315
- if (filter.filterType === "creator") {
316
- // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) = 81
317
- accountFilters.push({ memcmp: {
289
+ let multipleFilters = [];
290
+ if ((filter === null || filter === void 0 ? void 0 : filter.type) === "creator") {
291
+ // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) = 81
292
+ multipleFilters.push([
293
+ { dataSize: 8 + basket_1.BasketLayout.getSpan() },
294
+ { memcmp: {
318
295
  offset: 8 + 1 + 32 + 32 + 8,
319
- bytes: filter.filterValue.toBase58()
320
- } });
321
- }
322
- else if (filter.filterType === "host") {
323
- // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) + creator(32) = 113
324
- accountFilters.push({ memcmp: {
296
+ bytes: filter.pubkey
297
+ } }
298
+ ]);
299
+ }
300
+ else if ((filter === null || filter === void 0 ? void 0 : filter.type) === "host") {
301
+ // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) + creator(32) = 113
302
+ multipleFilters.push([
303
+ { dataSize: 8 + basket_1.BasketLayout.getSpan() },
304
+ { memcmp: {
325
305
  offset: 8 + 1 + 32 + 32 + 8 + 32,
326
- bytes: filter.filterValue.toBase58()
327
- } });
306
+ bytes: filter.pubkey
307
+ } }
308
+ ]);
309
+ }
310
+ else if ((filter === null || filter === void 0 ? void 0 : filter.type) === "manager") {
311
+ // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) + creator(32)
312
+ // + host(32) + basket_type(1) + bounty_mint(32) + bounty_balance(8) + start_price(16) + high_water_mark(16)
313
+ // + active_rebalance(8) + active_deposits(8) + active_managements(8) + last_automation_execution_timestamp(8)
314
+ for (let i = 0; i < constants_1.MAX_MANAGERS_PER_BASKET; i++) {
315
+ multipleFilters.push([
316
+ { dataSize: 8 + basket_1.BasketLayout.getSpan() },
317
+ { memcmp: {
318
+ offset: 8 + 1 + 32 + 32 + 8 + 32 + 32 + 1 + 32 + 8 + 16 + 16 + 8 + 8 + 8 + 8 + i * 32,
319
+ bytes: filter.pubkey
320
+ } }
321
+ ]);
328
322
  }
329
323
  }
330
- const accounts = yield connection.getProgramAccounts(constants_1.BASKETS_V3_PROGRAM_ID, {
324
+ else {
325
+ multipleFilters.push([
326
+ { dataSize: 8 + basket_1.BasketLayout.getSpan() },
327
+ ]);
328
+ }
329
+ let requests = multipleFilters.map(filters => connection.getProgramAccounts(constants_1.BASKETS_V3_PROGRAM_ID, {
331
330
  commitment: "confirmed",
332
- filters: accountFilters,
331
+ filters: filters,
333
332
  encoding: 'base64'
334
- });
335
- let baskets = accounts.map(account => basket_1.BasketLayout.decode(account.account.data.slice(8)));
333
+ }));
334
+ let results = yield Promise.all(requests);
335
+ let accounts = [];
336
+ results.forEach(gpa => gpa.forEach(account => accounts.push(account.account)));
337
+ let baskets = accounts.map(account => basket_1.BasketLayout.decode(account.data.slice(8)));
336
338
  baskets = yield addLutsToBaskets(connection, baskets);
337
339
  baskets = baskets.map(basket => addFieldsToBasket(basket));
338
340
  return baskets;
package/dist/test.js CHANGED
@@ -15,6 +15,7 @@ const anchor_1 = require("@coral-xyz/anchor");
15
15
  let connection = new web3_js_1.Connection("https://api.devnet.solana.com");
16
16
  function testStates() {
17
17
  return __awaiter(this, void 0, void 0, function* () {
18
+ return;
18
19
  let kp = Array.from(web3_js_1.Keypair.generate().secretKey);
19
20
  let wallet = new anchor_1.Wallet(web3_js_1.Keypair.fromSecretKey(new Uint8Array(kp)));
20
21
  console.log(wallet.publicKey.toBase58());
@@ -23,12 +24,9 @@ function testStates() {
23
24
  network: "devnet",
24
25
  });
25
26
  console.log("SDK created:", wallet.publicKey.toBase58());
26
- console.log("Total baskets: ", (yield sdk.fetchAllBaskets([])).length);
27
+ console.log("Total baskets: ", (yield sdk.fetchAllBaskets()).length);
27
28
  console.log("Total intents: ", (yield sdk.fetchAllIntents([])).length);
28
29
  console.log("Total rebalance intents: ", (yield sdk.fetchAllRebalanceIntents([])).length);
29
- let basket = yield sdk.getBasket({ basket: new web3_js_1.PublicKey("GrBFFvtdRL25o7gcRnV1kGvz1Qc7iscUmDp1ZvyBSyUa") });
30
- basket = yield sdk.loadBasketPrice(basket);
31
- console.log(basket);
32
30
  let tests = {
33
31
  createGlobalConfig: false, // TESTED
34
32
  editGlobalConfig: false, // TESTED
@@ -66,12 +64,20 @@ function testStates() {
66
64
  host_performance_fee_bps: 0,
67
65
  priority_fee_lamports: 0,
68
66
  });
67
+ console.log(createBasketTx.batches[0].transactions[0]);
68
+ return;
69
69
  let resCreateBasket = yield sdk.signAndSendTxPayloadBatchSequence({
70
70
  txPayloadBatchSequence: createBasketTx,
71
71
  wallet,
72
72
  });
73
73
  console.log(resCreateBasket);
74
74
  }
75
+ // return;
76
+ let basket = yield sdk.fetchBasket("GrBFFvtdRL25o7gcRnV1kGvz1Qc7iscUmDp1ZvyBSyUa");
77
+ basket = yield sdk.loadBasketPrice(basket);
78
+ console.log(basket.formatted);
79
+ console.log(basket.formatted.managers.managers);
80
+ return;
75
81
  if (tests.editCreator) {
76
82
  let txEditCreator = yield sdk.editCreatorTx({
77
83
  basket: basket.ownAddress.toBase58(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symmetry-hq/temp-v3-sdk",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "Symmetry Baskets V3 SDK",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
package/src/index.ts CHANGED
@@ -112,18 +112,42 @@ export class SymmetryCore {
112
112
  // this.sdkParams.payer = payer;
113
113
  // }
114
114
 
115
- async getBasket(params: {
116
- basket: PublicKey;
117
- }): Promise<Basket> {
118
- const basketState = await fetchBasket(this.sdkParams.connection, params.basket);
115
+ async fetchBasket(basketPubkey: string): Promise<Basket> {
116
+ const basketState = await fetchBasket(this.sdkParams.connection, new PublicKey(basketPubkey));
119
117
  return basketState;
120
118
  }
121
119
 
122
- async fetchAllBaskets(
123
- filters?: BasketFilter[],
124
- ): Promise<Basket[]> {
125
- const baskets = await fetchBaskets(this.sdkParams.connection, filters ?? []);
126
- return baskets;
120
+ async fetchMultipleBaskets(basketPubkeys: string[]): Promise<Map<string, Basket>> {
121
+ let basketPubkeysArray: PublicKey[] = basketPubkeys.map(pubkey => new PublicKey(pubkey));
122
+ const basketsMap = await fetchBaskektsMultiple(this.sdkParams.connection, basketPubkeysArray);
123
+ return basketsMap;
124
+ }
125
+
126
+ async fetchAllBaskets(basketFilter?: BasketFilter): Promise<Basket[]> {
127
+ return await fetchBaskets(this.sdkParams.connection, basketFilter);
128
+ }
129
+
130
+ async fetchCreatedBaskets(creatorPubkey: string): Promise<Basket[]> {
131
+ return await fetchBaskets(this.sdkParams.connection, { type: "creator", pubkey: creatorPubkey });
132
+ }
133
+
134
+ async fetchHostedBaskets(hostPubkey: string): Promise<Basket[]> {
135
+ return await fetchBaskets(this.sdkParams.connection, { type: "host", pubkey: hostPubkey });
136
+ }
137
+
138
+ async fetchManagedBaskets(managerPubkey: string): Promise<Basket[]> {
139
+ return await fetchBaskets(this.sdkParams.connection, { type: "manager", pubkey: managerPubkey });
140
+ }
141
+
142
+ async deriveBasketsByMints(mints: string[]): Promise<Map<string, string>> {
143
+ let result: Map<string, string> = new Map();
144
+ for (let basketId = 0; basketId < 50000; basketId++) {
145
+ let mint = getBasketTokenMintPda(basketId).toBase58();
146
+ if (mints.includes(mint)) {
147
+ result.set(mint, getBasketState(new PublicKey(mint)).toBase58());
148
+ }
149
+ }
150
+ return result;
127
151
  }
128
152
 
129
153
  async fetchBasketsFromMints(
@@ -332,7 +356,7 @@ export class SymmetryCore {
332
356
  edit_type: TaskType,
333
357
  edit_data: EditDataInput,
334
358
  }): Promise<TxPayloadBatchSequence> {
335
- let basket = await this.getBasket({ basket: new PublicKey(params.edit_data.basket) });
359
+ let basket = await this.fetchBasket(params.edit_data.basket);
336
360
  let manager = new PublicKey(params.edit_data.manager);
337
361
  let useBounty = params.edit_data.use_bounty == false ? false : true;
338
362
  let activationTimestamp = new BN(params.edit_data.activation_timestamp ?? 0);
@@ -415,7 +439,7 @@ export class SymmetryCore {
415
439
  let { keeper, intent } = params;
416
440
  let basketMint: PublicKey | undefined;
417
441
  if (intent.taskType === TaskType.EditMetadataSettings) {
418
- let basket = await this.getBasket({ basket: intent.basket });
442
+ let basket = await this.fetchBasket(intent.basket.toBase58());
419
443
  basketMint = basket.mint;
420
444
  }
421
445
  let ix = executeEditBasketIntentIx({
@@ -40,8 +40,6 @@ const CREATE_EDIT_BASKET_INTENT_DISCRIMINATOR = Buffer.from([82, 150, 58, 227, 1
40
40
  const EDIT_BASKET_DISCRIMINATOR = Buffer.from([156, 31, 4, 39, 248, 29, 55, 220]);
41
41
  const CANCEL_INTENT_DISCRIMINATOR = Buffer.from([181, 103, 27, 100, 84, 89, 70, 236]);
42
42
 
43
- const ZERO_INTENT_SEED = new Uint8Array(32).fill(0);
44
-
45
43
  export function editPrivateBasketSettingsIx(
46
44
  params: {
47
45
  creator: PublicKey,
@@ -47,211 +47,189 @@ export function addFieldsToBasket(basket: Basket): Basket {
47
47
  basket.settings.managers.managers = basket.settings.managers.managers.slice(0, totalManagers);
48
48
  basket.settings.managers.managersWeightBps = basket.settings.managers.managersWeightBps.slice(0, totalManagers);
49
49
  basket = {...basket, metadata: metadata};
50
- let authoritiesMap = new Map<string, string[]>();
50
+ let managers = [];
51
51
  for (let i = 0; i < basket.settings.managers.managers.length; i++) {
52
52
  let manager = basket.settings.managers.managers[i].toBase58();
53
- let authorities = [];
54
- if (((2 ** i) & basket.settings.managersAuthorityBitmask) != 0)
55
- authorities.push("managers");
56
- if (((2 ** i) & basket.settings.feesAuthorityBitmask) != 0)
57
- authorities.push("fees");
58
- if (((2 ** i) & basket.settings.scheduleAuthorityBitmask) != 0)
59
- authorities.push("schedule");
60
- if (((2 ** i) & basket.settings.automationAuthorityBitmask) != 0)
61
- authorities.push("automation");
62
- if (((2 ** i) & basket.settings.lpAuthorityBitmask) != 0)
63
- authorities.push("lp");
64
- if (((2 ** i) & basket.settings.metadataAuthorityBitmask) != 0)
65
- authorities.push("metadata");
66
- if (((2 ** i) & basket.settings.depositsAuthorityBitmask) != 0)
67
- authorities.push("deposits");
68
- if (((2 ** i) & basket.settings.forceRebalanceAuthorityBitmask) != 0)
69
- authorities.push("force_rebalance");
70
- if (((2 ** i) & basket.settings.customRebalanceAuthorityBitmask) != 0)
71
- authorities.push("custom_rebalance");
72
- if (((2 ** i) & basket.settings.addTokenIntentAuthorityBitmask) != 0)
73
- authorities.push("add_token");
74
- if (((2 ** i) & basket.settings.updateWeightsIntentAuthorityBitmask) != 0)
75
- authorities.push("update_weights");
76
- if (((2 ** i) & basket.settings.makeDirectSwapIntentAuthorityBitmask) != 0)
77
- authorities.push("make_direct_swap");
78
- authoritiesMap.set(manager, authorities);
53
+ let authorities = {
54
+ managers: (((2 ** i) & basket.settings.managersAuthorityBitmask) != 0),
55
+ fees: (((2 ** i) & basket.settings.feesAuthorityBitmask) != 0),
56
+ schedule: (((2 ** i) & basket.settings.scheduleAuthorityBitmask) != 0),
57
+ automation: (((2 ** i) & basket.settings.automationAuthorityBitmask) != 0),
58
+ lp: (((2 ** i) & basket.settings.lpAuthorityBitmask) != 0),
59
+ metadata: (((2 ** i) & basket.settings.metadataAuthorityBitmask) != 0),
60
+ deposits: (((2 ** i) & basket.settings.depositsAuthorityBitmask) != 0),
61
+ force_rebalance: (((2 ** i) & basket.settings.forceRebalanceAuthorityBitmask) != 0),
62
+ custom_rebalance: (((2 ** i) & basket.settings.customRebalanceAuthorityBitmask) != 0),
63
+ add_token: (((2 ** i) & basket.settings.addTokenIntentAuthorityBitmask) != 0),
64
+ update_weights: (((2 ** i) & basket.settings.updateWeightsIntentAuthorityBitmask) != 0),
65
+ make_direct_swap: (((2 ** i) & basket.settings.makeDirectSwapIntentAuthorityBitmask) != 0),
66
+ };
67
+ managers.push({
68
+ pubkey: manager,
69
+ weight_bps: basket.settings.managers.managersWeightBps[i],
70
+ authorities: authorities,
71
+ });
79
72
  }
80
73
  let formatted = {
81
74
  pubkey: basket.ownAddress.toBase58(),
82
75
  name: basket.metadata?.name,
83
76
  symbol: basket.metadata?.symbol,
84
77
  uri: basket.metadata?.uri,
85
- authorities: authoritiesMap,
86
78
 
87
- version: basket.version.toString(),
79
+ version: basket.version,
88
80
  own_address: basket.ownAddress.toBase58(),
89
81
  mint: basket.mint.toBase58(),
90
- supply_outstanding: basket.supplyOutstanding.toString(),
82
+ supply_outstanding: basket.supplyOutstanding.toNumber(),
91
83
 
92
84
  creator: basket.settings.creator.toBase58(),
93
85
  host: basket.settings.host.toBase58(),
94
- basket_type: basket.settings.basketType == 0 ? "Private" : "Public",
86
+ basket_type: basket.settings.basketType == 0 ? "private" : "public",
95
87
  bounty_mint: basket.settings.bountyMint.toBase58(),
96
- bounty_balance: basket.settings.bountyBalance.toString(),
97
- start_price: fractionToDecimal(basket.settings.startPrice).toString(),
98
- high_watermark: fractionToDecimal(basket.settings.highWaterMark).toString(),
99
- active_rebalance: basket.settings.activeRebalance.toString(),
100
- active_deposits: basket.settings.activeDeposits.toString(),
101
- active_managements: basket.settings.activeManagements.toString(),
102
- last_automation_execution_timestamp: basket.settings.lastAutomationExecutionTimestamp.toString(),
103
- managers: basket.settings.managers.managers.map(manager => manager.toBase58()),
104
- manager_weight_bps: basket.settings.managers.managersWeightBps,
105
- managers_modification_delay: basket.settings.managers.modificationDelay.toString(),
106
- managers_last_update_timestamp: basket.settings.managersLastUpdateTimestamp.toString(),
107
- managers_authority_bitmask: basket.settings.managersAuthorityBitmask.toString(),
88
+ bounty_balance: parseInt(basket.settings.bountyBalance.toString()),
89
+ start_price: fractionToDecimal(basket.settings.startPrice).toNumber(),
90
+ high_watermark: fractionToDecimal(basket.settings.highWaterMark).toNumber(),
91
+ active_rebalance: parseInt(basket.settings.activeRebalance.toString()),
92
+ active_deposits: parseInt(basket.settings.activeDeposits.toString()),
93
+ active_managements: parseInt(basket.settings.activeManagements.toString()),
94
+ last_automation_execution_timestamp: parseInt(basket.settings.lastAutomationExecutionTimestamp.toString()),
95
+ managers: {
96
+ managers,
97
+ modification_delay: parseInt(basket.settings.managers.modificationDelay.toString()),
98
+ updated_at: parseInt(basket.settings.managersLastUpdateTimestamp.toString()),
99
+ },
108
100
  fees: {
109
- host_deposit_fee_bps: basket.settings.fees.hostDepositFeeBps.toString(),
110
- host_withdraw_fee_bps: basket.settings.fees.hostWithdrawFeeBps.toString(),
111
- host_management_fee_bps: basket.settings.fees.hostManagementFeeBps.toString(),
112
- host_performance_fee_bps: basket.settings.fees.hostPerformanceFeeBps.toString(),
113
- creator_deposit_fee_bps: basket.settings.fees.creatorDepositFeeBps.toString(),
114
- creator_withdraw_fee_bps: basket.settings.fees.creatorWithdrawFeeBps.toString(),
115
- creator_management_fee_bps: basket.settings.fees.creatorManagementFeeBps.toString(),
116
- creator_performance_fee_bps: basket.settings.fees.creatorPerformanceFeeBps.toString(),
117
- managers_deposit_fee_bps: basket.settings.fees.managersDepositFeeBps.toString(),
118
- managers_withdraw_fee_bps: basket.settings.fees.managersWithdrawFeeBps.toString(),
119
- managers_management_fee_bps: basket.settings.fees.managersManagementFeeBps.toString(),
120
- managers_performance_fee_bps: basket.settings.fees.managersPerformanceFeeBps.toString(),
121
- basket_deposit_fee_bps: basket.settings.fees.basketDepositFeeBps.toString(),
122
- basket_withdraw_fee_bps: basket.settings.fees.basketWithdrawFeeBps.toString(),
123
- extra_data: basket.settings.fees.extraData.map(data => data.toString()),
124
- modification_delay: basket.settings.fees.modificationDelay.toString(),
101
+ host_deposit_fee_bps: basket.settings.fees.hostDepositFeeBps,
102
+ host_withdraw_fee_bps: basket.settings.fees.hostWithdrawFeeBps,
103
+ host_management_fee_bps: basket.settings.fees.hostManagementFeeBps,
104
+ host_performance_fee_bps: basket.settings.fees.hostPerformanceFeeBps,
105
+ creator_deposit_fee_bps: basket.settings.fees.creatorDepositFeeBps,
106
+ creator_withdraw_fee_bps: basket.settings.fees.creatorWithdrawFeeBps,
107
+ creator_management_fee_bps: basket.settings.fees.creatorManagementFeeBps,
108
+ creator_performance_fee_bps: basket.settings.fees.creatorPerformanceFeeBps,
109
+ managers_deposit_fee_bps: basket.settings.fees.managersDepositFeeBps,
110
+ managers_withdraw_fee_bps: basket.settings.fees.managersWithdrawFeeBps,
111
+ managers_management_fee_bps: basket.settings.fees.managersManagementFeeBps,
112
+ managers_performance_fee_bps: basket.settings.fees.managersPerformanceFeeBps,
113
+ basket_deposit_fee_bps: basket.settings.fees.basketDepositFeeBps,
114
+ basket_withdraw_fee_bps: basket.settings.fees.basketWithdrawFeeBps,
115
+ modification_delay: parseInt(basket.settings.fees.modificationDelay.toString()),
116
+ updated_at: parseInt(basket.settings.feesLastUpdateTimestamp.toString()),
125
117
  },
126
- fees_last_update_timestamp: basket.settings.feesLastUpdateTimestamp.toString(),
127
- fees_authority_bitmask: basket.settings.feesAuthorityBitmask.toString(),
128
118
  schedule: {
129
- cycle_start_time: basket.settings.schedule.cycleStartTime.toString(),
130
- cycle_duration: basket.settings.schedule.cycleDuration.toString(),
131
- deposits_start: basket.settings.schedule.depositsStart.toString(),
132
- deposits_end: basket.settings.schedule.depositsEnd.toString(),
133
- automation_start: basket.settings.schedule.automationStart.toString(),
134
- automation_end: basket.settings.schedule.automationEnd.toString(),
135
- management_start: basket.settings.schedule.managementStart.toString(),
136
- management_end: basket.settings.schedule.managementEnd.toString(),
137
- modification_delay: basket.settings.schedule.modificationDelay.toString(),
119
+ cycle_start_time: parseInt(basket.settings.schedule.cycleStartTime.toString()),
120
+ cycle_duration: parseInt(basket.settings.schedule.cycleDuration.toString()),
121
+ deposits_start: parseInt(basket.settings.schedule.depositsStart.toString()),
122
+ deposits_end: parseInt(basket.settings.schedule.depositsEnd.toString()),
123
+ automation_start: parseInt(basket.settings.schedule.automationStart.toString()),
124
+ automation_end: parseInt(basket.settings.schedule.automationEnd.toString()),
125
+ management_start: parseInt(basket.settings.schedule.managementStart.toString()),
126
+ management_end: parseInt(basket.settings.schedule.managementEnd.toString()),
127
+ modification_delay: parseInt(basket.settings.schedule.modificationDelay.toString()),
128
+ updated_at: parseInt(basket.settings.scheduleLastUpdateTimestamp.toString()),
138
129
  },
139
- schedule_last_update_timestamp: basket.settings.scheduleLastUpdateTimestamp.toString(),
140
- schedule_authority_bitmask: basket.settings.scheduleAuthorityBitmask.toString(),
141
130
  automation: {
142
- allow_automation: basket.settings.automation.allowAutomation.toString(),
143
- rebalance_slippage_threshold_bps: basket.settings.automation.rebalanceSlippageThresholdBps.toString(),
144
- per_trade_rebalance_slippage_threshold_bps: basket.settings.automation.perTradeRebalanceSlippageThresholdBps.toString(),
145
- rebalance_activation_threshold_abs_bps: basket.settings.automation.rebalanceActivationThresholdAbsBps.toString(),
146
- rebalance_activation_threshold_rel_bps: basket.settings.automation.rebalanceActivationThresholdRelBps.toString(),
147
- rebalance_activation_cooldown: basket.settings.automation.rebalanceActivationCooldown.toString(),
148
- extra_data: basket.settings.automation.extraData.map(data => data.toString()),
149
- modification_delay: basket.settings.automation.modificationDelay.toString(),
131
+ allow: basket.settings.automation.allowAutomation == 1 ? true : false,
132
+ rebalance_slippage_threshold_bps: basket.settings.automation.rebalanceSlippageThresholdBps,
133
+ per_trade_rebalance_slippage_threshold_bps: basket.settings.automation.perTradeRebalanceSlippageThresholdBps,
134
+ rebalance_activation_threshold_abs_bps: basket.settings.automation.rebalanceActivationThresholdAbsBps,
135
+ rebalance_activation_threshold_rel_bps: basket.settings.automation.rebalanceActivationThresholdRelBps,
136
+ rebalance_activation_cooldown: parseInt(basket.settings.automation.rebalanceActivationCooldown.toString()),
137
+ modification_delay: parseInt(basket.settings.automation.modificationDelay.toString()),
138
+ updated_at: parseInt(basket.settings.automationLastUpdateTimestamp.toString()),
150
139
  },
151
- automation_last_update_timestamp: basket.settings.automationLastUpdateTimestamp.toString(),
152
- automation_authority_bitmask: basket.settings.automationAuthorityBitmask.toString(),
153
140
  lp: {
154
- allow_lp: basket.settings.lp.allowLp.toString(),
155
- lp_threshold_bps: basket.settings.lp.lpThresholdBps.toString(),
156
- extra_data: basket.settings.lp.extraData.map(data => data.toString()),
157
- modification_delay: basket.settings.lp.modificationDelay.toString(),
141
+ allow: basket.settings.lp.allowLp == 1 ? true : false,
142
+ lp_threshold_bps: basket.settings.lp.lpThresholdBps,
143
+ modification_delay: parseInt(basket.settings.lp.modificationDelay.toString()),
144
+ updated_at: parseInt(basket.settings.lpLastUpdateTimestamp.toString()),
145
+ },
146
+ deposits: {
147
+ allow: basket.settings.depositsAreAllowed == 1 ? true : false,
148
+ },
149
+ force_rebalance: {
150
+ allow: basket.settings.forceRebalanceIsAllowed == 1 ? true : false,
151
+ modification_delay: parseInt(basket.settings.forceRebalanceModificationDelay.toString()),
152
+ updated_at: parseInt(basket.settings.forceRebalanceLastUpdateTimestamp.toString()),
153
+ },
154
+ custom_rebalance: {
155
+ allow: basket.settings.customRebalanceIsAllowed == 1 ? true : false,
156
+ modification_delay: parseInt(basket.settings.customRebalanceModificationDelay.toString()),
157
+ updated_at: parseInt(basket.settings.customRebalanceLastUpdateTimestamp.toString()),
158
158
  },
159
- lp_last_update_timestamp: basket.settings.lpLastUpdateTimestamp.toString(),
160
- lp_authority_bitmask: basket.settings.lpAuthorityBitmask.toString(),
161
- metadata: {
162
- symbol_length: basket.settings.metadata.symbolLength.toString(),
163
- symbol: basket.settings.metadata.symbol.map(data => data.toString()),
164
- name_length: basket.settings.metadata.nameLength.toString(),
165
- name: basket.settings.metadata.name.map(data => data.toString()),
166
- uri_length: basket.settings.metadata.uriLength.toString(),
167
- uri: basket.settings.metadata.uri.map(data => data.toString()),
168
- modification_delay: basket.settings.metadata.modificationDelay.toString(),
159
+ add_token: {
160
+ delay: parseInt(basket.settings.addTokenDelay.toString()),
161
+ updated_at: parseInt(basket.settings.addTokenLastUpdateTimestamp.toString()),
162
+ },
163
+ update_weights: {
164
+ delay: parseInt(basket.settings.updateWeightsDelay.toString()),
165
+ updated_at: parseInt(basket.settings.updateWeightsLastUpdateTimestamp.toString()),
166
+ },
167
+ make_direct_swap: {
168
+ delay: parseInt(basket.settings.makeDirectSwapDelay.toString()),
169
+ updated_at: parseInt(basket.settings.makeDirectSwapLastUpdateTimestamp.toString()),
169
170
  },
170
- deposits_are_allowed: basket.settings.depositsAreAllowed.toString(),
171
- deposits_authority_bitmask: basket.settings.depositsAuthorityBitmask.toString(),
172
- force_rebalance_is_allowed: basket.settings.forceRebalanceIsAllowed.toString(),
173
- force_rebalance_modification_delay: basket.settings.forceRebalanceModificationDelay.toString(),
174
- force_rebalance_last_update_timestamp: basket.settings.forceRebalanceLastUpdateTimestamp.toString(),
175
- force_rebalance_authority_bitmask: basket.settings.forceRebalanceAuthorityBitmask.toString(),
176
- custom_rebalance_is_allowed: basket.settings.customRebalanceIsAllowed.toString(),
177
- custom_rebalance_modification_delay: basket.settings.customRebalanceModificationDelay.toString(),
178
- custom_rebalance_last_update_timestamp: basket.settings.customRebalanceLastUpdateTimestamp.toString(),
179
- custom_rebalance_authority_bitmask: basket.settings.customRebalanceAuthorityBitmask.toString(),
180
- add_token_delay: basket.settings.addTokenDelay.toString(),
181
- add_token_last_update_timestamp: basket.settings.addTokenLastUpdateTimestamp.toString(),
182
- add_token_intent_authority_bitmask: basket.settings.addTokenIntentAuthorityBitmask.toString(),
183
- update_weights_delay: basket.settings.updateWeightsDelay.toString(),
184
- update_weights_last_update_timestamp: basket.settings.updateWeightsLastUpdateTimestamp.toString(),
185
- update_weights_intent_authority_bitmask: basket.settings.updateWeightsIntentAuthorityBitmask.toString(),
186
- make_direct_swap_delay: basket.settings.makeDirectSwapDelay.toString(),
187
- make_direct_swap_last_update_timestamp: basket.settings.makeDirectSwapLastUpdateTimestamp.toString(),
188
- make_direct_swap_intent_authority_bitmask: basket.settings.makeDirectSwapIntentAuthorityBitmask.toString(),
189
- extra_data: basket.settings.extraData.map(data => data.toString()),
190
171
 
191
172
  accumulated_fees: {
192
- symmetry_fees: basket.accumulatedFees.symmetryFees.toString(),
193
- creator_fees: basket.accumulatedFees.creatorFees.toString(),
194
- host_fees: basket.accumulatedFees.hostFees.toString(),
195
- managers_fees: basket.accumulatedFees.managersFees.toString(),
173
+ symmetry_fees: parseInt(basket.accumulatedFees.symmetryFees.toString()),
174
+ creator_fees: parseInt(basket.accumulatedFees.creatorFees.toString()),
175
+ host_fees: parseInt(basket.accumulatedFees.hostFees.toString()),
176
+ managers_fees: parseInt(basket.accumulatedFees.managersFees.toString()),
196
177
  },
197
178
  lookup_tables: {
198
- active: basket.lookupTables.active.map(table => table.toBase58()),
199
- temp: basket.lookupTables.temp.map(table => table.toBase58()),
200
- active_contents: [
179
+ active: [
201
180
  {
202
181
  pubkey: basket.lookupTables.active[0].toBase58(),
203
- addresses: basket.lutPubkeys?.[0]?.state.addresses.map(address => address.toBase58()) || [],
182
+ contents: basket.lutPubkeys?.[0]?.state.addresses.map(address => address.toBase58()) || [],
204
183
  },
205
184
  {
206
185
  pubkey: basket.lookupTables.active[1].toBase58(),
207
- addresses: basket.lutPubkeys?.[1]?.state.addresses.map(address => address.toBase58()) || [],
186
+ contents: basket.lutPubkeys?.[1]?.state.addresses.map(address => address.toBase58()) || [],
208
187
  },
209
188
  ],
210
- temp_contents: [
189
+ temp: [
211
190
  {
212
191
  pubkey: basket.lookupTables.temp[0].toBase58(),
213
- addresses: basket.lutPubkeys?.[2]?.state.addresses.map(address => address.toBase58()) || [],
192
+ contents: basket.lutPubkeys?.[2]?.state.addresses.map(address => address.toBase58()) || [],
214
193
  },
215
194
  {
216
195
  pubkey: basket.lookupTables.temp[1].toBase58(),
217
- addresses: basket.lutPubkeys?.[3]?.state.addresses.map(address => address.toBase58()) || [],
196
+ contents: basket.lutPubkeys?.[3]?.state.addresses.map(address => address.toBase58()) || [],
218
197
  },
219
198
  ],
220
199
  },
221
200
 
222
- num_tokens: basket.numTokens.toString(),
223
201
  composition: basket.composition.map(asset => ({
224
202
  mint: asset.mint.toBase58(),
225
- amount: asset.amount.toString(),
226
- weight: asset.weight.toString(),
227
- active: asset.active.toString(),
203
+ amount: parseInt(asset.amount.toString()),
204
+ weight: asset.weight,
205
+ active: asset.active == 1 ? true : false,
228
206
  oracle_aggregator: {
229
- num_oracles: asset.oracleAggregator.numOracles.toString(),
230
- min_oracles_thresh: asset.oracleAggregator.minOraclesThresh.toString(),
207
+ num_oracles: asset.oracleAggregator.numOracles,
208
+ min_oracles_thresh: asset.oracleAggregator.minOraclesThresh,
231
209
  oracles: asset.oracleAggregator.oracles.map(oracle => ({
232
210
  oracle_settings: {
233
211
  oracle_type: ["Pyth","RaydiumCpmm","RaydiumClmm","SwitchBoard","Example"][oracle.oracleSettings.oracleType],
234
- num_required_accounts: oracle.oracleSettings.numRequiredAccounts.toString(),
235
- weight: oracle.oracleSettings.weight.toString(),
236
- is_required: oracle.oracleSettings.isRequired.toString(),
237
- conf_thresh_bps: oracle.oracleSettings.confThreshBps.toString(),
238
- volatility_thresh_bps: oracle.oracleSettings.volatilityThreshBps.toString(),
239
- max_slippage_bps: oracle.oracleSettings.maxSlippageBps.toString(),
240
- min_liquidity: oracle.oracleSettings.minLiquidity.toString(),
241
- staleness_thresh: oracle.oracleSettings.stalenessThresh.toString(),
242
- staleness_conf_rate_bps: oracle.oracleSettings.stalenessConfRateBps.toString(),
243
- token_decimals: oracle.oracleSettings.tokenDecimals.toString(),
244
- twap_seconds_ago: oracle.oracleSettings.twapSecondsAgo.toString(),
245
- twap_secondary_seconds_ago: oracle.oracleSettings.twapSecondarySecondsAgo.toString(),
212
+ num_required_accounts: oracle.oracleSettings.numRequiredAccounts,
213
+ weight: oracle.oracleSettings.weight,
214
+ is_required: oracle.oracleSettings.isRequired == 1 ? true : false,
215
+ conf_thresh_bps: oracle.oracleSettings.confThreshBps,
216
+ volatility_thresh_bps: oracle.oracleSettings.volatilityThreshBps,
217
+ max_slippage_bps: oracle.oracleSettings.maxSlippageBps,
218
+ min_liquidity: parseInt(oracle.oracleSettings.minLiquidity.toString()),
219
+ staleness_thresh: parseInt(oracle.oracleSettings.stalenessThresh.toString()),
220
+ staleness_conf_rate_bps: oracle.oracleSettings.stalenessConfRateBps,
221
+ token_decimals: oracle.oracleSettings.tokenDecimals,
222
+ twap_seconds_ago: parseInt(oracle.oracleSettings.twapSecondsAgo.toString()),
223
+ twap_secondary_seconds_ago: parseInt(oracle.oracleSettings.twapSecondarySecondsAgo.toString()),
246
224
  quote: oracle.oracleSettings.quote == 0 ? "Usdc" : "Wsol",
247
225
  side: oracle.oracleSettings.side == 0 ? "Base" : "Quote",
248
226
  },
249
227
  accounts_to_load_lut_ids: oracle.accountsToLoadLutIds.map(id => id.toString()),
250
228
  accounts_to_load_lut_indices: oracle.accountsToLoadLutIndices.map(index => index.toString()),
251
229
  })),
252
- min_conf_bps: asset.oracleAggregator.minConfBps.toString(),
253
- conf_thresh_bps: asset.oracleAggregator.confThreshBps.toString(),
254
- conf_multiplier: fractionToDecimal(asset.oracleAggregator.confMultiplier).toString(),
230
+ min_conf_bps: asset.oracleAggregator.minConfBps,
231
+ conf_thresh_bps: asset.oracleAggregator.confThreshBps,
232
+ conf_multiplier: fractionToDecimal(asset.oracleAggregator.confMultiplier).toNumber(),
255
233
  },
256
234
  })),
257
235
  }
@@ -307,41 +285,62 @@ export async function fetchBaskektsMultiple(
307
285
  }
308
286
 
309
287
  export interface BasketFilter {
310
- filterType: "host" | "creator";
311
- filterValue: PublicKey;
288
+ type: "host" | "creator" | "manager";
289
+ pubkey: string;
312
290
  }
313
291
 
314
292
  export async function fetchBaskets(
315
293
  connection: Connection,
316
- filters: BasketFilter[],
294
+ filter?: BasketFilter,
317
295
  ): Promise<Basket[]> {
318
- let accountFilters: GetProgramAccountsFilter[] = [
319
- { dataSize: 8 + BasketLayout.getSpan() },
320
- ];
321
- for (const filter of filters) {
322
- if (filter.filterType === "creator") {
323
- // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) = 81
324
- accountFilters.push({ memcmp: {
296
+ let multipleFilters: GetProgramAccountsFilter[][] = [];
297
+ if (filter?.type === "creator") {
298
+ // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) = 81
299
+ multipleFilters.push([
300
+ { dataSize: 8 + BasketLayout.getSpan() },
301
+ { memcmp: {
325
302
  offset: 8 + 1 + 32 + 32 + 8,
326
- bytes: filter.filterValue.toBase58()
327
- } });
328
- } else if (filter.filterType === "host") {
329
- // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) + creator(32) = 113
330
- accountFilters.push({ memcmp: {
303
+ bytes: filter.pubkey
304
+ } }
305
+ ]);
306
+ } else if (filter?.type === "host") {
307
+ // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) + creator(32) = 113
308
+ multipleFilters.push([
309
+ { dataSize: 8 + BasketLayout.getSpan() },
310
+ { memcmp: {
331
311
  offset: 8 + 1 + 32 + 32 + 8 + 32,
332
- bytes: filter.filterValue.toBase58()
333
- } });
312
+ bytes: filter.pubkey
313
+ } }
314
+ ]);
315
+ } else if (filter?.type === "manager") {
316
+ // Offset: discriminator(8) + version(1) + ownAddress(32) + mint(32) + supplyOutstanding(8) + creator(32)
317
+ // + host(32) + basket_type(1) + bounty_mint(32) + bounty_balance(8) + start_price(16) + high_water_mark(16)
318
+ // + active_rebalance(8) + active_deposits(8) + active_managements(8) + last_automation_execution_timestamp(8)
319
+ for (let i = 0; i < MAX_MANAGERS_PER_BASKET; i++) {
320
+ multipleFilters.push([
321
+ { dataSize: 8 + BasketLayout.getSpan() },
322
+ { memcmp: {
323
+ offset: 8 + 1 + 32 + 32 + 8 + 32 + 32 + 1 + 32 + 8 + 16 + 16 + 8 + 8 + 8 + 8 + i * 32,
324
+ bytes: filter.pubkey
325
+ } }
326
+ ]);
334
327
  }
328
+ } else {
329
+ multipleFilters.push([
330
+ { dataSize: 8 + BasketLayout.getSpan() },
331
+ ]);
335
332
  }
336
- const accounts: GetProgramAccountsResponse = await connection.getProgramAccounts(
337
- BASKETS_V3_PROGRAM_ID,
338
- {
333
+ let requests = multipleFilters.map(filters =>
334
+ connection.getProgramAccounts(BASKETS_V3_PROGRAM_ID, {
339
335
  commitment: "confirmed",
340
- filters: accountFilters,
336
+ filters: filters,
341
337
  encoding: 'base64'
342
- }
338
+ })
343
339
  );
344
- let baskets: Basket[] = accounts.map(account => BasketLayout.decode(account.account.data.slice(8)));
340
+ let results = await Promise.all(requests);
341
+ let accounts: AccountInfo<Buffer>[] = [];
342
+ results.forEach(gpa => gpa.forEach(account => accounts.push(account.account)));
343
+ let baskets: Basket[] = accounts.map(account => BasketLayout.decode(account.data.slice(8)));
345
344
  baskets = await addLutsToBaskets(connection, baskets);
346
345
  baskets = baskets.map(basket => addFieldsToBasket(basket));
347
346
  return baskets;
package/test.ts CHANGED
@@ -7,6 +7,7 @@ import { bs58 } from "@coral-xyz/anchor/dist/cjs/utils/bytes";
7
7
  let connection = new Connection("https://api.devnet.solana.com");
8
8
 
9
9
  async function testStates() {
10
+ return;
10
11
  let kp = Array.from(Keypair.generate().secretKey);
11
12
  let wallet = new Wallet(Keypair.fromSecretKey(new Uint8Array(kp)));
12
13
  console.log(wallet.publicKey.toBase58());
@@ -17,14 +18,11 @@ async function testStates() {
17
18
  });
18
19
 
19
20
  console.log("SDK created:", wallet.publicKey.toBase58());
20
- console.log("Total baskets: ", (await sdk.fetchAllBaskets([])).length);
21
+
22
+ console.log("Total baskets: ", (await sdk.fetchAllBaskets()).length);
21
23
  console.log("Total intents: ", (await sdk.fetchAllIntents([])).length);
22
24
  console.log("Total rebalance intents: ", (await sdk.fetchAllRebalanceIntents([])).length);
23
-
24
- let basket = await sdk.getBasket({basket: new PublicKey("GrBFFvtdRL25o7gcRnV1kGvz1Qc7iscUmDp1ZvyBSyUa")});
25
- basket = await sdk.loadBasketPrice(basket);
26
- console.log(basket);
27
-
25
+
28
26
  let tests = {
29
27
 
30
28
  createGlobalConfig: false, // TESTED
@@ -68,6 +66,8 @@ async function testStates() {
68
66
  host_performance_fee_bps: 0,
69
67
  priority_fee_lamports: 0,
70
68
  });
69
+ console.log(createBasketTx.batches[0].transactions[0]);
70
+ return;
71
71
  let resCreateBasket = await sdk.signAndSendTxPayloadBatchSequence({
72
72
  txPayloadBatchSequence: createBasketTx,
73
73
  wallet,
@@ -75,6 +75,14 @@ async function testStates() {
75
75
  console.log(resCreateBasket);
76
76
  }
77
77
 
78
+ // return;
79
+ let basket = await sdk.fetchBasket("GrBFFvtdRL25o7gcRnV1kGvz1Qc7iscUmDp1ZvyBSyUa");
80
+ basket = await sdk.loadBasketPrice(basket);
81
+ console.log(basket.formatted);
82
+ console.log(basket.formatted.managers.managers);
83
+ return;
84
+
85
+
78
86
  if (tests.editCreator) {
79
87
  let txEditCreator = await sdk.editCreatorTx({
80
88
  basket: basket.ownAddress.toBase58(),