@symmetry-hq/temp-v3-sdk 0.0.3 → 0.0.5

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.
Files changed (63) hide show
  1. package/dist/src/constants.d.ts +7 -2
  2. package/dist/src/constants.js +11 -3
  3. package/dist/src/index.d.ts +8 -8
  4. package/dist/src/index.js +46 -70
  5. package/dist/src/instructions/automation/priceUpdate.js +2 -2
  6. package/dist/src/instructions/management/createBasket.js +4 -4
  7. package/dist/src/instructions/management/edit.d.ts +3 -6
  8. package/dist/src/instructions/management/edit.js +60 -34
  9. package/dist/src/instructions/pda.d.ts +0 -5
  10. package/dist/src/instructions/pda.js +1 -7
  11. package/dist/src/layouts/basket.d.ts +18 -5
  12. package/dist/src/layouts/basket.js +2 -2
  13. package/dist/src/layouts/config.d.ts +0 -1
  14. package/dist/src/layouts/config.js +2 -5
  15. package/dist/src/layouts/fraction.d.ts +5 -2
  16. package/dist/src/layouts/fraction.js +22 -2
  17. package/dist/src/layouts/intents/bounty.d.ts +2 -2
  18. package/dist/src/layouts/intents/bounty.js +2 -2
  19. package/dist/src/layouts/intents/intent.d.ts +5 -11
  20. package/dist/src/layouts/intents/intent.js +1 -1
  21. package/dist/src/layouts/intents/rebalanceIntent.d.ts +4 -1
  22. package/dist/src/layouts/oracle.d.ts +23 -6
  23. package/dist/src/layouts/oracle.js +41 -1
  24. package/dist/src/states/basket.d.ts +4 -2
  25. package/dist/src/states/basket.js +89 -4
  26. package/dist/src/states/intents/intent.d.ts +2 -7
  27. package/dist/src/states/intents/intent.js +8 -17
  28. package/dist/src/states/intents/rebalanceIntent.d.ts +1 -0
  29. package/dist/src/states/intents/rebalanceIntent.js +19 -3
  30. package/dist/src/states/oracles/oracle.d.ts +15 -52
  31. package/dist/src/states/oracles/oracle.js +94 -185
  32. package/dist/src/states/oracles/pythOracle.d.ts +33 -34
  33. package/dist/src/states/oracles/pythOracle.js +103 -185
  34. package/dist/src/states/oracles/raydiumClmmOracle.d.ts +15 -158
  35. package/dist/src/states/oracles/raydiumClmmOracle.js +92 -97
  36. package/dist/src/states/oracles/raydiumCpmmOracle.d.ts +12 -114
  37. package/dist/src/states/oracles/raydiumCpmmOracle.js +151 -126
  38. package/dist/src/txUtils.d.ts +3 -1
  39. package/dist/src/txUtils.js +46 -13
  40. package/dist/test.js +75 -13
  41. package/package.json +1 -1
  42. package/src/constants.ts +8 -2
  43. package/src/index.ts +62 -86
  44. package/src/instructions/automation/priceUpdate.ts +3 -3
  45. package/src/instructions/management/createBasket.ts +6 -6
  46. package/src/instructions/management/edit.ts +69 -47
  47. package/src/instructions/pda.ts +0 -10
  48. package/src/layouts/basket.ts +20 -5
  49. package/src/layouts/config.ts +1 -5
  50. package/src/layouts/fraction.ts +21 -5
  51. package/src/layouts/intents/bounty.ts +4 -4
  52. package/src/layouts/intents/intent.ts +6 -13
  53. package/src/layouts/intents/rebalanceIntent.ts +6 -3
  54. package/src/layouts/oracle.ts +55 -8
  55. package/src/states/basket.ts +107 -10
  56. package/src/states/intents/intent.ts +8 -21
  57. package/src/states/intents/rebalanceIntent.ts +23 -4
  58. package/src/states/oracles/oracle.ts +117 -194
  59. package/src/states/oracles/pythOracle.ts +218 -245
  60. package/src/states/oracles/raydiumClmmOracle.ts +139 -133
  61. package/src/states/oracles/raydiumCpmmOracle.ts +209 -169
  62. package/src/txUtils.ts +55 -31
  63. package/test.ts +82 -17
@@ -1,15 +1,20 @@
1
1
  import { PublicKey } from '@solana/web3.js';
2
+ import Decimal from 'decimal.js';
2
3
  export declare const BASKETS_V3_PROGRAM_ID: PublicKey;
3
4
  export declare const METADATA_PROGRAM_ID: PublicKey;
4
5
  export declare const ADDRESS_LOOKUP_TABLE_PROGRAM_ID: PublicKey;
5
6
  export declare const RENT_SYSVAR_ID: PublicKey;
6
7
  export declare const WSOL_MINT: PublicKey;
7
8
  export declare const USDC_MINT: PublicKey;
8
- export declare const PYTH_SOL_ACCOUNT: PublicKey;
9
- export declare const PYTH_USDC_ACCOUNT: PublicKey;
9
+ export declare const PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT: PublicKey;
10
+ export declare const PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT: PublicKey;
10
11
  export declare const BOUNTY_MINT: PublicKey;
11
12
  export declare const INTENT_TASK_DATA_SIZE = 600;
12
13
  export declare const MAX_MANAGERS_PER_BASKET = 10;
14
+ export declare const X64: Decimal;
15
+ export declare const HUNDRED_PERCENT_BPS = 10000;
16
+ export declare const WSOL_DECIMALS = 9;
17
+ export declare const USDC_DECIMALS = 6;
13
18
  export declare const MAX_SUPPORTED_TOKENS_PER_BASKET: number;
14
19
  export declare const MAX_ORACLES_PER_TOKEN: number;
15
20
  export declare const MAX_EXTRA_DATA_PER_ORACLE: number;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_EXTRA_DATA_PER_ORACLE = exports.MAX_ORACLES_PER_TOKEN = exports.MAX_SUPPORTED_TOKENS_PER_BASKET = exports.MAX_MANAGERS_PER_BASKET = exports.INTENT_TASK_DATA_SIZE = exports.BOUNTY_MINT = exports.PYTH_USDC_ACCOUNT = exports.PYTH_SOL_ACCOUNT = exports.USDC_MINT = exports.WSOL_MINT = exports.RENT_SYSVAR_ID = exports.ADDRESS_LOOKUP_TABLE_PROGRAM_ID = exports.METADATA_PROGRAM_ID = exports.BASKETS_V3_PROGRAM_ID = void 0;
6
+ exports.MAX_EXTRA_DATA_PER_ORACLE = exports.MAX_ORACLES_PER_TOKEN = exports.MAX_SUPPORTED_TOKENS_PER_BASKET = exports.USDC_DECIMALS = exports.WSOL_DECIMALS = exports.HUNDRED_PERCENT_BPS = exports.X64 = exports.MAX_MANAGERS_PER_BASKET = exports.INTENT_TASK_DATA_SIZE = exports.BOUNTY_MINT = exports.PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT = exports.PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT = exports.USDC_MINT = exports.WSOL_MINT = exports.RENT_SYSVAR_ID = exports.ADDRESS_LOOKUP_TABLE_PROGRAM_ID = exports.METADATA_PROGRAM_ID = exports.BASKETS_V3_PROGRAM_ID = void 0;
4
7
  const web3_js_1 = require("@solana/web3.js");
8
+ const decimal_js_1 = __importDefault(require("decimal.js"));
5
9
  exports.BASKETS_V3_PROGRAM_ID = new web3_js_1.PublicKey("BASKT7aKd8n7ibpUbwLP3Wiyxyi3yoiXsxBk4Hpumate");
6
10
  exports.METADATA_PROGRAM_ID = new web3_js_1.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
7
11
  exports.ADDRESS_LOOKUP_TABLE_PROGRAM_ID = new web3_js_1.PublicKey("AddressLookupTab1e1111111111111111111111111");
@@ -9,11 +13,15 @@ exports.RENT_SYSVAR_ID = new web3_js_1.PublicKey("SysvarRent11111111111111111111
9
13
  exports.WSOL_MINT = new web3_js_1.PublicKey("So11111111111111111111111111111111111111112");
10
14
  // export const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
11
15
  exports.USDC_MINT = new web3_js_1.PublicKey("USDCoctVLVnvTXBEuP9s8hntucdJokbo17RwHuNXemT");
12
- exports.PYTH_SOL_ACCOUNT = new web3_js_1.PublicKey("7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE");
13
- exports.PYTH_USDC_ACCOUNT = new web3_js_1.PublicKey("Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX");
16
+ exports.PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT = new web3_js_1.PublicKey("7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE");
17
+ exports.PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT = new web3_js_1.PublicKey("Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX");
14
18
  exports.BOUNTY_MINT = new web3_js_1.PublicKey("49hY35FvJ8KimFrkGL1X89GSve1C1ZVoLPeQBUHXCouy");
15
19
  exports.INTENT_TASK_DATA_SIZE = 600;
16
20
  exports.MAX_MANAGERS_PER_BASKET = 10;
21
+ exports.X64 = new decimal_js_1.default(2).pow(new decimal_js_1.default(64));
22
+ exports.HUNDRED_PERCENT_BPS = 10000;
23
+ exports.WSOL_DECIMALS = 9;
24
+ exports.USDC_DECIMALS = 6;
17
25
  exports.MAX_SUPPORTED_TOKENS_PER_BASKET = 100;
18
26
  exports.MAX_ORACLES_PER_TOKEN = 4;
19
27
  exports.MAX_EXTRA_DATA_PER_ORACLE = 4;
@@ -1,7 +1,5 @@
1
- import { BN } from '@coral-xyz/anchor';
2
1
  import { Connection, PublicKey, TransactionSignature } from '@solana/web3.js';
3
2
  import { Basket } from './layouts/basket';
4
- import { Fraction } from './layouts/fraction';
5
3
  import { EditData, HostFees, Intent, MetadataParams, TaskType } from './layouts/intents/intent';
6
4
  import { RebalanceIntent } from './layouts/intents/rebalanceIntent';
7
5
  import { BasketFilter } from './states/basket';
@@ -12,7 +10,7 @@ export declare const COMPUTE_UNITS = 1000000;
12
10
  export declare const PRIORITY_FEE = 100000;
13
11
  export declare const JUPITER_API_KEY = "https://quote-api.jup.ag/v6/";
14
12
  export declare const MAX_JUPITER_ACCOUNTS = 35;
15
- export declare class BasketsSdk {
13
+ export declare class SymmetryCore {
16
14
  private sdkParams;
17
15
  constructor(params: {
18
16
  connection: Connection;
@@ -26,24 +24,25 @@ export declare class BasketsSdk {
26
24
  basket: PublicKey;
27
25
  }): Promise<Basket>;
28
26
  fetchAllBaskets(filters: BasketFilter[]): Promise<Basket[]>;
27
+ loadBasketPrice(basket: Basket): Promise<Basket>;
29
28
  fetchAllIntents(filters: IntentFilter[]): Promise<Intent[]>;
30
29
  fetchAllRebalanceIntents(filters: RebalanceIntentFilter[]): Promise<RebalanceIntent[]>;
31
30
  createBasketTx(params: {
32
31
  creator: PublicKey;
33
32
  host: PublicKey;
34
- startPrice: Fraction;
33
+ startPrice: number;
35
34
  hostFees: HostFees;
36
35
  metadataParams: MetadataParams;
37
- metadataModificationDelay: BN;
36
+ metadataModificationDelay: number;
38
37
  }): Promise<VersionedTxs>;
39
38
  createEditBasketIntentTx(params: {
40
- manager: PublicKey;
41
39
  basket: Basket;
40
+ manager: PublicKey;
42
41
  editType: TaskType;
43
42
  editData: EditData;
44
- useBounty: number;
43
+ useBounty: boolean;
45
44
  }): Promise<VersionedTxs>;
46
- createEditBasketTx(params: {
45
+ executeEditBasketIntentTx(params: {
47
46
  keeper: PublicKey;
48
47
  basket: PublicKey;
49
48
  manager: PublicKey;
@@ -54,3 +53,4 @@ export declare class BasketsSdk {
54
53
  wallet: Wallet;
55
54
  }): Promise<TransactionSignature[]>;
56
55
  }
56
+ export { Basket, BasketFilter, Intent, IntentFilter, RebalanceIntent, RebalanceIntentFilter };
package/dist/src/index.js CHANGED
@@ -8,23 +8,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.BasketsSdk = exports.MAX_JUPITER_ACCOUNTS = exports.JUPITER_API_KEY = exports.PRIORITY_FEE = exports.COMPUTE_UNITS = void 0;
15
+ exports.SymmetryCore = exports.MAX_JUPITER_ACCOUNTS = exports.JUPITER_API_KEY = exports.PRIORITY_FEE = exports.COMPUTE_UNITS = void 0;
13
16
  const anchor_1 = require("@coral-xyz/anchor");
14
17
  const web3_js_1 = require("@solana/web3.js");
15
- const constants_1 = require("./constants");
16
18
  const createBasket_1 = require("./instructions/management/createBasket");
17
19
  const edit_1 = require("./instructions/management/edit");
18
20
  const pda_1 = require("./instructions/pda");
21
+ const fraction_1 = require("./layouts/fraction");
22
+ const intent_1 = require("./layouts/intents/intent");
19
23
  const basket_1 = require("./states/basket");
20
- const intent_1 = require("./states/intents/intent");
24
+ const intent_2 = require("./states/intents/intent");
21
25
  const rebalanceIntent_1 = require("./states/intents/rebalanceIntent");
22
26
  const txUtils_1 = require("./txUtils");
27
+ const decimal_js_1 = __importDefault(require("decimal.js"));
23
28
  exports.COMPUTE_UNITS = 1000000;
24
29
  exports.PRIORITY_FEE = 100000;
25
30
  exports.JUPITER_API_KEY = "https://quote-api.jup.ag/v6/";
26
31
  exports.MAX_JUPITER_ACCOUNTS = 35;
27
- class BasketsSdk {
32
+ class SymmetryCore {
28
33
  constructor(params) {
29
34
  var _a, _b, _c, _d;
30
35
  this.sdkParams = {
@@ -52,9 +57,14 @@ class BasketsSdk {
52
57
  return baskets;
53
58
  });
54
59
  }
60
+ loadBasketPrice(basket) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ return yield (0, basket_1.loadBasketPrice)(basket, this.sdkParams.connection);
63
+ });
64
+ }
55
65
  fetchAllIntents(filters) {
56
66
  return __awaiter(this, void 0, void 0, function* () {
57
- const intents = yield (0, intent_1.fetchIntents)(this.sdkParams.connection, filters);
67
+ const intents = yield (0, intent_2.fetchIntents)(this.sdkParams.connection, filters);
58
68
  return intents;
59
69
  });
60
70
  }
@@ -66,7 +76,6 @@ class BasketsSdk {
66
76
  }
67
77
  createBasketTx(params) {
68
78
  return __awaiter(this, void 0, void 0, function* () {
69
- var _a;
70
79
  const { creator, host, startPrice, hostFees, metadataParams, metadataModificationDelay } = params;
71
80
  // generate random seed
72
81
  const basketSeeds = (0, pda_1.getRandomSeed)();
@@ -78,10 +87,10 @@ class BasketsSdk {
78
87
  slot,
79
88
  creator,
80
89
  host,
81
- startPrice,
90
+ startPrice: (0, fraction_1.decimalToFraction)(new decimal_js_1.default(startPrice)),
82
91
  hostFees,
83
92
  metadataParams,
84
- metadataModificationDelay
93
+ metadataModificationDelay: new anchor_1.BN(metadataModificationDelay),
85
94
  });
86
95
  let preIx = (0, createBasket_1.createBasketStateAccountIx)({
87
96
  creator,
@@ -94,7 +103,7 @@ class BasketsSdk {
94
103
  let vtxs = yield (0, txUtils_1.prepareV0Transactions)({
95
104
  connection: this.sdkParams.connection,
96
105
  payer: creator,
97
- priorityFee: (_a = this.sdkParams.priorityFee) !== null && _a !== void 0 ? _a : 1000000,
106
+ priorityFee: this.sdkParams.priorityFee,
98
107
  multipleIxs: [[preIx, preIx2, preIx2, ix]],
99
108
  multipleLookupTableAddresses: [],
100
109
  signers: [[]],
@@ -105,80 +114,47 @@ class BasketsSdk {
105
114
  }
106
115
  createEditBasketIntentTx(params) {
107
116
  return __awaiter(this, void 0, void 0, function* () {
108
- const { manager, basket, editType, editData, useBounty } = params;
109
- let ix = (0, edit_1.createEditBasketIntentIx)({
110
- manager,
111
- basket: basket.ownAddress,
112
- bountyMint: constants_1.BOUNTY_MINT,
113
- editType,
114
- editData,
115
- useBounty
116
- });
117
- let ix2 = null;
118
- let modificationDelay;
119
- switch (editType) {
120
- case 1: modificationDelay = basket.settings.schedule.modificationDelay;
121
- case 2: modificationDelay = basket.settings.feeSettings.modificationDelay;
122
- case 3: modificationDelay = basket.settings.managerSettings.modificationDelay;
123
- case 4: modificationDelay = basket.settings.automationSettings.modificationDelay;
124
- case 5: modificationDelay = basket.settings.lpSettings.modificationDelay;
125
- case 6: modificationDelay = basket.settings.metadataSettings.modificationDelay;
126
- case 7: modificationDelay = basket.settings.addTokenDelay;
127
- case 8: modificationDelay = basket.settings.updateWeightsDelay;
128
- case 9: modificationDelay = basket.settings.addTokenDelay;
129
- case 10: modificationDelay = basket.settings.updateWeightsDelay;
130
- case 11: modificationDelay = basket.settings.makeDirectSwapDelay;
131
- }
117
+ let { basket } = params;
118
+ let ixs = [
119
+ (0, edit_1.createEditBasketIntentIx)(params)
120
+ ];
121
+ let modificationDelay = (() => {
122
+ switch (params.editType) {
123
+ case intent_1.TaskType.EditSchedule: return basket.settings.schedule.modificationDelay;
124
+ case intent_1.TaskType.EditFeeSettings: return basket.settings.feeSettings.modificationDelay;
125
+ case intent_1.TaskType.EditManagerSettings: return basket.settings.managerSettings.modificationDelay;
126
+ case intent_1.TaskType.EditAutomationSettings: return basket.settings.automationSettings.modificationDelay;
127
+ case intent_1.TaskType.EditLpSettings: return basket.settings.lpSettings.modificationDelay;
128
+ case intent_1.TaskType.EditMetadataSettings: return basket.settings.metadataSettings.modificationDelay;
129
+ case intent_1.TaskType.EditAddTokenDelay: return basket.settings.addTokenDelay;
130
+ case intent_1.TaskType.EditUpdateWeightsDelay: return basket.settings.updateWeightsDelay;
131
+ case intent_1.TaskType.AddToken: return basket.settings.addTokenDelay;
132
+ case intent_1.TaskType.UpdateWeights: return basket.settings.updateWeightsDelay;
133
+ case intent_1.TaskType.Swap: return basket.settings.makeDirectSwapDelay;
134
+ default: return new anchor_1.BN(0);
135
+ }
136
+ })();
132
137
  if (modificationDelay.eq(new anchor_1.BN(0))) {
133
- let intent = (0, pda_1.getIntentPda)(basket.ownAddress, manager, editType);
134
- let basketTokenMint = (0, pda_1.getBasketTokenMintPda)(basket.ownAddress);
135
- let metadataAccount = (0, pda_1.getMetadataAccount)(basketTokenMint);
136
- ix2 = (0, edit_1.editBasketIx)({
137
- keeper: manager,
138
- basket: basket.ownAddress,
139
- intent,
140
- bountyMint: constants_1.BOUNTY_MINT,
141
- manager,
142
- editType,
143
- metadataAccount
144
- });
138
+ ixs.push((0, edit_1.editBasketIx)(Object.assign(Object.assign({}, params), { basket: basket.ownAddress, keeper: params.manager })));
145
139
  }
146
- let ixs = [];
147
- if (ix2 === null)
148
- ixs = [[ix]];
149
- else
150
- ixs = [[ix, ix2]];
151
- const signers = ixs.map(() => []);
152
140
  let vtxs = yield (0, txUtils_1.prepareV0Transactions)({
153
141
  connection: this.sdkParams.connection,
154
- payer: manager,
142
+ payer: params.manager,
155
143
  priorityFee: this.sdkParams.priorityFee,
156
- multipleIxs: ixs,
144
+ multipleIxs: [ixs],
157
145
  multipleLookupTableAddresses: [],
158
- signers,
146
+ signers: [[]],
159
147
  batches: [1],
160
148
  });
161
149
  return vtxs;
162
150
  });
163
151
  }
164
- createEditBasketTx(params) {
152
+ executeEditBasketIntentTx(params) {
165
153
  return __awaiter(this, void 0, void 0, function* () {
166
- const { keeper, basket, manager, editType } = params;
167
- let intent = (0, pda_1.getIntentPda)(basket, manager, editType);
168
- let basketTokenMint = (0, pda_1.getBasketTokenMintPda)(basket);
169
- let metadataAccount = (0, pda_1.getMetadataAccount)(basketTokenMint);
170
- let ix = (0, edit_1.editBasketIx)({
171
- keeper,
172
- basket,
173
- intent,
174
- bountyMint: constants_1.BOUNTY_MINT,
175
- manager,
176
- editType,
177
- metadataAccount
178
- });
154
+ let ix = (0, edit_1.editBasketIx)(params);
179
155
  let vtxs = yield (0, txUtils_1.prepareV0Transactions)({
180
156
  connection: this.sdkParams.connection,
181
- payer: manager,
157
+ payer: params.keeper,
182
158
  priorityFee: this.sdkParams.priorityFee,
183
159
  multipleIxs: [[ix]],
184
160
  multipleLookupTableAddresses: [],
@@ -196,4 +172,4 @@ class BasketsSdk {
196
172
  });
197
173
  }
198
174
  }
199
- exports.BasketsSdk = BasketsSdk;
175
+ exports.SymmetryCore = SymmetryCore;
@@ -32,8 +32,8 @@ function updateTokenPricesIx(params) {
32
32
  { pubkey: params.basket, isSigner: false, isWritable: true },
33
33
  { pubkey: params.rebalanceIntent, isSigner: false, isWritable: true },
34
34
  { pubkey: globalConfig, isSigner: false, isWritable: false },
35
- { pubkey: constants_1.PYTH_SOL_ACCOUNT, isSigner: false, isWritable: true },
36
- { pubkey: constants_1.PYTH_USDC_ACCOUNT, isSigner: false, isWritable: true },
35
+ { pubkey: constants_1.PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT, isSigner: false, isWritable: true },
36
+ { pubkey: constants_1.PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT, isSigner: false, isWritable: true },
37
37
  { pubkey: params.lookupTable0, isSigner: false, isWritable: true },
38
38
  { pubkey: params.lookupTable1, isSigner: false, isWritable: true },
39
39
  ];
@@ -63,8 +63,8 @@ function createBasketIx(params) {
63
63
  Buffer.from(seed),
64
64
  Buffer.from(new anchor_1.BN(slot).toArray("le", 8)),
65
65
  host.toBuffer(),
66
- Buffer.from(startPrice.numerator.toArray("le", 8)),
67
- Buffer.from(startPrice.exponent.toArray("le", 8)),
66
+ Buffer.from(startPrice.high.toArray("le", 8)),
67
+ Buffer.from(startPrice.low.toArray("le", 8)),
68
68
  hostFeesBuffer,
69
69
  (0, pda_1.serializeString)(metadataParams.name),
70
70
  (0, pda_1.serializeString)(metadataParams.symbol),
@@ -82,10 +82,10 @@ function createBasketIx(params) {
82
82
  { pubkey: lookupTableInfo1, isSigner: false, isWritable: true },
83
83
  { pubkey: wsolBasketTokenAccount, isSigner: false, isWritable: true },
84
84
  { pubkey: constants_1.WSOL_MINT, isSigner: false, isWritable: true },
85
- { pubkey: constants_1.PYTH_SOL_ACCOUNT, isSigner: false, isWritable: true },
85
+ { pubkey: constants_1.PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT, isSigner: false, isWritable: true },
86
86
  { pubkey: usdcBasketTokenAccount, isSigner: false, isWritable: true },
87
87
  { pubkey: constants_1.USDC_MINT, isSigner: false, isWritable: true },
88
- { pubkey: constants_1.PYTH_USDC_ACCOUNT, isSigner: false, isWritable: true },
88
+ { pubkey: constants_1.PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT, isSigner: false, isWritable: true },
89
89
  { pubkey: constants_1.ADDRESS_LOOKUP_TABLE_PROGRAM_ID, isSigner: false, isWritable: false },
90
90
  { pubkey: constants_1.METADATA_PROGRAM_ID, isSigner: false, isWritable: false },
91
91
  { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },
@@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js";
2
2
  import { AuthorityBitmasks, EditData, MetadataParams, TaskType } from "../../layouts/intents/intent";
3
3
  import { TransactionInstruction } from "@solana/web3.js";
4
4
  import { AutomationSettings, FeeSettings, LpSettings, ManagerSettings, ScheduleSettings } from "../../layouts/config";
5
+ import { Basket } from "../../layouts/basket";
5
6
  export declare function editPrivateBasketSettingsIx(params: {
6
7
  creator: PublicKey;
7
8
  basket: PublicKey;
@@ -16,19 +17,15 @@ export declare function editPrivateBasketSettingsIx(params: {
16
17
  metadataModificationDelay: number;
17
18
  }): TransactionInstruction;
18
19
  export declare function createEditBasketIntentIx(params: {
20
+ basket: Basket;
19
21
  manager: PublicKey;
20
- basket: PublicKey;
21
- bountyMint: PublicKey;
22
22
  editType: TaskType;
23
23
  editData: EditData;
24
- useBounty: number;
24
+ useBounty: boolean;
25
25
  }): TransactionInstruction;
26
26
  export declare function editBasketIx(params: {
27
27
  keeper: PublicKey;
28
28
  basket: PublicKey;
29
- intent: PublicKey;
30
- bountyMint: PublicKey;
31
29
  manager: PublicKey;
32
30
  editType: TaskType;
33
- metadataAccount: PublicKey;
34
31
  }): TransactionInstruction;
@@ -11,6 +11,7 @@ const spl_token_1 = require("@solana/spl-token");
11
11
  const config_1 = require("../../layouts/config");
12
12
  const anchor_1 = require("@coral-xyz/anchor");
13
13
  const web3_js_2 = require("@solana/web3.js");
14
+ const oracle_1 = require("../../layouts/oracle");
14
15
  const EDIT_PRIVATE_BASKET_SETTINGS_DISCRIMINATOR = Buffer.from([202, 54, 138, 17, 3, 104, 128, 229]);
15
16
  const CREATE_EDIT_BASKET_INTENT_DISCRIMINATOR = Buffer.from([82, 150, 58, 227, 153, 129, 20, 30]);
16
17
  const EDIT_BASKET_DISCRIMINATOR = Buffer.from([156, 31, 4, 39, 248, 29, 55, 220]);
@@ -50,7 +51,7 @@ function editPrivateBasketSettingsIx(params) {
50
51
  { pubkey: params.basket, isSigner: false, isWritable: true },
51
52
  { pubkey: metadataAccount, isSigner: false, isWritable: true },
52
53
  { pubkey: globalConfig, isSigner: false, isWritable: false },
53
- { pubkey: pda_1.METADATA_PROGRAM_ID, isSigner: false, isWritable: false }
54
+ { pubkey: constants_1.METADATA_PROGRAM_ID, isSigner: false, isWritable: false }
54
55
  ];
55
56
  return new web3_js_1.TransactionInstruction({
56
57
  keys,
@@ -59,14 +60,16 @@ function editPrivateBasketSettingsIx(params) {
59
60
  });
60
61
  }
61
62
  function createEditBasketIntentIx(params) {
62
- const { manager, basket, bountyMint, editType, editData, useBounty, } = params;
63
- let intent = (0, pda_1.getIntentPda)(basket, manager, editType);
63
+ const { manager, basket, editType, editData, useBounty, } = params;
64
+ let intent = (0, pda_1.getIntentPda)(basket.ownAddress, manager, editType);
64
65
  let globalConfig = (0, pda_1.getGlobalConfigPda)();
65
66
  let bountyVault = (0, pda_1.getBountyVaultPda)();
67
+ let bountyMint = constants_1.BOUNTY_MINT;
66
68
  let managerBountyATA = (0, pda_1.getAta)(manager, bountyMint);
67
69
  let bountyVaultATA = (0, pda_1.getAta)(bountyVault, bountyMint);
68
70
  const editTypeBuf = Buffer.from([editType]);
69
- const editDataBuf = Buffer.alloc(260);
71
+ let editDataBuf = Buffer.alloc(260);
72
+ let additionalAccounts = [];
70
73
  switch (editType) {
71
74
  case intent_1.TaskType.EditSchedule: // 1
72
75
  config_1.ScheduleSettingsLayout.encode(editData, editDataBuf);
@@ -75,10 +78,22 @@ function createEditBasketIntentIx(params) {
75
78
  config_1.FeeSettingsLayout.encode(editData, editDataBuf);
76
79
  break;
77
80
  case intent_1.TaskType.EditManagerSettings: // 3
78
- // TODO: ?????
79
- intent_1.ManagerSettingsWithAuthorityBitmasksLayout.encode(editData, editDataBuf)(editData).managers.forEach((managerPubkey) => {
80
- keys.push({ pubkey: managerPubkey, isWritable: true, isSigner: false });
81
- });
81
+ let startIndex = 0;
82
+ for (let i = 0; i < config_1.MAX_MANAGERS_PER_BASKET; i++) {
83
+ let managerWeight = editData.managerSettings.managersWeightBps[i];
84
+ editDataBuf.writeUInt16LE(managerWeight, startIndex);
85
+ additionalAccounts.push({
86
+ pubkey: editData.managerSettings.managers[i],
87
+ isWritable: true,
88
+ isSigner: false
89
+ });
90
+ startIndex += 2;
91
+ }
92
+ let authorityBitmasksBuffer = Buffer.alloc(intent_1.AuthorityBitmasksLayout.span);
93
+ intent_1.AuthorityBitmasksLayout.encode(editData.authorityBitmasks, authorityBitmasksBuffer);
94
+ editDataBuf.set(authorityBitmasksBuffer, startIndex);
95
+ startIndex += intent_1.AuthorityBitmasksLayout.span;
96
+ editDataBuf.writeBigUint64LE(editData.managerSettings.modificationDelay, startIndex);
82
97
  break;
83
98
  case intent_1.TaskType.EditAutomationSettings: // 4
84
99
  config_1.AutomationSettingsLayout.encode(editData, editDataBuf);
@@ -95,22 +110,34 @@ function createEditBasketIntentIx(params) {
95
110
  case intent_1.TaskType.EditUpdateWeightsDelay: // 8
96
111
  intent_1.UpdateWeightsDelayLayout.encode(editData, editDataBuf);
97
112
  break;
98
- // case TaskType.AddToken: // 9
99
- // AddTokenLayout.encode(editData as AddToken, editDataBuf);
100
- // keys.push({pubkey: (editData as AddToken).tokenMint, isWritable: false, isSigner: false});
101
- // const basketNewTokenAta = getAssociatedTokenAddressSync(
102
- // (editData as AddToken).tokenMint,
103
- // basket,
104
- // true
105
- // );
106
- // keys.push({pubkey: basketNewTokenAta, isWritable: true, isSigner: false});
107
- // additionalAccounts.lookupTables.forEach((lookupTablePubkey) => {
108
- // keys.push({ pubkey: lookupTablePubkey, isWritable: true, isSigner: false });
109
- // });
110
- // additionalAccounts.additionalOracleAccounts.forEach((oraclePubkey) => {
111
- // keys.push({ pubkey: oraclePubkey, isWritable: false, isSigner: false });
112
- // });
113
- // break;
113
+ case intent_1.TaskType.AddToken: // 9
114
+ oracle_1.OracleAggregatorLayout.encode(editData.oracleAggregator, editDataBuf);
115
+ additionalAccounts.push({
116
+ pubkey: editData.tokenMint,
117
+ isWritable: false,
118
+ isSigner: false
119
+ });
120
+ additionalAccounts.push({
121
+ pubkey: (0, pda_1.getAta)(basket.ownAddress, editData.tokenMint),
122
+ isWritable: true,
123
+ isSigner: false
124
+ });
125
+ additionalAccounts.push({
126
+ pubkey: basket.lookupTables.active[0],
127
+ isWritable: true,
128
+ isSigner: false
129
+ });
130
+ additionalAccounts.push({
131
+ pubkey: basket.lookupTables.active[1],
132
+ isWritable: true,
133
+ isSigner: false
134
+ });
135
+ additionalAccounts.push({
136
+ pubkey: editData.oracleAccount,
137
+ isWritable: false,
138
+ isSigner: false
139
+ });
140
+ break;
114
141
  case intent_1.TaskType.UpdateWeights: // 10
115
142
  intent_1.UpdateWeightsLayout.encode(editData, editDataBuf);
116
143
  break;
@@ -119,7 +146,7 @@ function createEditBasketIntentIx(params) {
119
146
  default:
120
147
  break;
121
148
  }
122
- const useBountyBuf = Buffer.from([useBounty]);
149
+ const useBountyBuf = Buffer.from([useBounty ? 1 : 0]);
123
150
  const data = Buffer.concat([
124
151
  CREATE_EDIT_BASKET_INTENT_DISCRIMINATOR,
125
152
  editTypeBuf,
@@ -128,7 +155,7 @@ function createEditBasketIntentIx(params) {
128
155
  ]);
129
156
  const keys = [
130
157
  { pubkey: manager, isSigner: true, isWritable: true },
131
- { pubkey: basket, isSigner: false, isWritable: true },
158
+ { pubkey: basket.ownAddress, isSigner: false, isWritable: true },
132
159
  { pubkey: intent, isSigner: false, isWritable: true },
133
160
  { pubkey: globalConfig, isSigner: false, isWritable: false },
134
161
  { pubkey: bountyMint, isSigner: false, isWritable: false },
@@ -140,6 +167,7 @@ function createEditBasketIntentIx(params) {
140
167
  { pubkey: spl_token_1.TOKEN_2022_PROGRAM_ID, isSigner: false, isWritable: false },
141
168
  { pubkey: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
142
169
  ];
170
+ keys.push(...additionalAccounts);
143
171
  return new web3_js_1.TransactionInstruction({
144
172
  keys,
145
173
  programId: constants_1.BASKETS_V3_PROGRAM_ID,
@@ -147,9 +175,12 @@ function createEditBasketIntentIx(params) {
147
175
  });
148
176
  }
149
177
  function editBasketIx(params) {
150
- const { keeper, basket, intent, bountyMint, manager } = params;
178
+ const { keeper, basket, manager, editType, } = params;
179
+ let intent = (0, pda_1.getIntentPda)(basket, manager, editType);
180
+ let metadataAccount = (0, pda_1.getMetadataAccount)(basket);
151
181
  let globalConfig = (0, pda_1.getGlobalConfigPda)();
152
182
  let bountyVault = (0, pda_1.getBountyVaultPda)();
183
+ let bountyMint = constants_1.BOUNTY_MINT;
153
184
  let keeperBountyATA = (0, pda_1.getAta)(keeper, bountyMint);
154
185
  let managerBountyATA = (0, pda_1.getAta)(manager, bountyMint);
155
186
  let bountyVaultATA = (0, pda_1.getAta)(bountyVault, bountyMint);
@@ -175,15 +206,10 @@ function editBasketIx(params) {
175
206
  // remaining accounts
176
207
  if (params.editType === intent_1.TaskType.EditMetadataSettings) {
177
208
  keys.push({ pubkey: params.basket, isSigner: true, isWritable: false });
178
- keys.push({ pubkey: params.metadataAccount, isSigner: false, isWritable: true });
179
- keys.push({ pubkey: pda_1.METADATA_PROGRAM_ID, isSigner: false, isWritable: false });
209
+ keys.push({ pubkey: metadataAccount, isSigner: false, isWritable: true });
210
+ keys.push({ pubkey: constants_1.METADATA_PROGRAM_ID, isSigner: false, isWritable: false });
180
211
  }
181
212
  ;
182
- // if(params.editType === TaskType.AddToken){
183
- // params.lookupTables.forEach((lookupTablePubkey) => {
184
- // keys.push({ pubkey: lookupTablePubkey, isWritable: false, isSigner: false });
185
- // });
186
- // };
187
213
  return new web3_js_1.TransactionInstruction({
188
214
  keys,
189
215
  programId: constants_1.BASKETS_V3_PROGRAM_ID,
@@ -5,11 +5,6 @@ export declare const MINT_SEED: Buffer;
5
5
  export declare const RENT_PAYER_SEED: Buffer;
6
6
  export declare const BOUNTY_VAULT_SEED: Buffer;
7
7
  export declare const REBALANCE_INTENT_SEED: Buffer;
8
- export declare const WSOL_MINT: PublicKey;
9
- export declare const USDC_MINT: PublicKey;
10
- export declare const PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT: PublicKey;
11
- export declare const PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT: PublicKey;
12
- export declare const METADATA_PROGRAM_ID: PublicKey;
13
8
  export declare function serializeString(input: string): Uint8Array;
14
9
  export declare function getRandomSeed(): number[];
15
10
  export declare function getBasketState(seeds: number[]): PublicKey;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.METADATA_PROGRAM_ID = exports.PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT = exports.PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT = exports.USDC_MINT = exports.WSOL_MINT = exports.REBALANCE_INTENT_SEED = exports.BOUNTY_VAULT_SEED = exports.RENT_PAYER_SEED = exports.MINT_SEED = exports.BASKET_FEES_SEED = exports.GLOBAL_CONFIG_SEED = void 0;
3
+ exports.REBALANCE_INTENT_SEED = exports.BOUNTY_VAULT_SEED = exports.RENT_PAYER_SEED = exports.MINT_SEED = exports.BASKET_FEES_SEED = exports.GLOBAL_CONFIG_SEED = void 0;
4
4
  exports.serializeString = serializeString;
5
5
  exports.getRandomSeed = getRandomSeed;
6
6
  exports.getBasketState = getBasketState;
@@ -26,12 +26,6 @@ exports.MINT_SEED = Buffer.from("mint");
26
26
  exports.RENT_PAYER_SEED = Buffer.from("rent_payer");
27
27
  exports.BOUNTY_VAULT_SEED = Buffer.from("bounty_vault");
28
28
  exports.REBALANCE_INTENT_SEED = Buffer.from("rebalance_intent");
29
- exports.WSOL_MINT = new web3_js_1.PublicKey("So11111111111111111111111111111111111111112");
30
- /// TODO: Devnet
31
- exports.USDC_MINT = new web3_js_1.PublicKey("USDCoctVLVnvTXBEuP9s8hntucdJokbo17RwHuNXemT");
32
- exports.PYTHNET_CUSTODY_PRICE_USDC_ACCOUNT = new web3_js_1.PublicKey("Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX");
33
- exports.PYTHNET_CUSTODY_PRICE_WSOL_ACCOUNT = new web3_js_1.PublicKey("7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE");
34
- exports.METADATA_PROGRAM_ID = new web3_js_1.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
35
29
  function serializeString(input) {
36
30
  const utf8 = new TextEncoder().encode(input);
37
31
  const length = utf8.length;
@@ -1,8 +1,10 @@
1
- import { BN } from "@coral-xyz/anchor";
2
- import { PublicKey } from "@solana/web3.js";
3
- import { OracleAggregator } from "./oracle";
4
- import { Fraction } from "./fraction";
5
- import { BasketSettings } from "./config";
1
+ import { BN } from '@coral-xyz/anchor';
2
+ import { AddressLookupTableAccount, PublicKey } from '@solana/web3.js';
3
+ import { BasketSettings } from './config';
4
+ import { Fraction } from './fraction';
5
+ import { OracleAggregator } from './oracle';
6
+ import { OraclePrice } from '../states/oracles/oracle';
7
+ import Decimal from 'decimal.js';
6
8
  export declare const MAX_SUPPORTED_TOKENS_PER_BASKET: number;
7
9
  export interface BasketFees {
8
10
  symmetryFees: BN;
@@ -21,8 +23,15 @@ export interface Asset {
21
23
  amount: BN;
22
24
  weight: number;
23
25
  oracleAggregator: OracleAggregator;
26
+ price?: OraclePrice;
27
+ value?: Decimal;
24
28
  }
25
29
  export declare const AssetLayout: any;
30
+ export interface Metadata {
31
+ symbol: string;
32
+ name: string;
33
+ uri: string;
34
+ }
26
35
  export interface Basket {
27
36
  version: number;
28
37
  seedArray: number[];
@@ -37,5 +46,9 @@ export interface Basket {
37
46
  writeVersion: BN;
38
47
  numTokens: number;
39
48
  composition: Asset[];
49
+ lutPubkeys?: AddressLookupTableAccount[];
50
+ metadata?: Metadata;
51
+ tvl?: Decimal;
52
+ price?: Decimal;
40
53
  }
41
54
  export declare const BasketLayout: any;
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BasketLayout = exports.AssetLayout = exports.LookupTablesLayout = exports.BasketFeesLayout = exports.MAX_SUPPORTED_TOKENS_PER_BASKET = void 0;
4
4
  const borsh_1 = require("@coral-xyz/borsh");
5
- const oracle_1 = require("./oracle");
6
- const fraction_1 = require("./fraction");
7
5
  const config_1 = require("./config");
6
+ const fraction_1 = require("./fraction");
7
+ const oracle_1 = require("./oracle");
8
8
  exports.MAX_SUPPORTED_TOKENS_PER_BASKET = 100;
9
9
  ;
10
10
  exports.BasketFeesLayout = (0, borsh_1.struct)([
@@ -10,7 +10,6 @@ export declare enum BasketType {
10
10
  Private = 0,
11
11
  Public = 1
12
12
  }
13
- export declare const BasketTypeLayout: any;
14
13
  export interface ScheduleSettings {
15
14
  cycleDuration: BN;
16
15
  depositsStart: BN;