@symmetry-hq/sdk 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/src/constants.d.ts +23 -0
  2. package/dist/src/constants.js +38 -0
  3. package/dist/src/index.d.ts +804 -0
  4. package/dist/src/index.js +2097 -0
  5. package/dist/src/instructions/automation/auction.d.ts +6 -0
  6. package/dist/src/instructions/automation/auction.js +40 -0
  7. package/dist/src/instructions/automation/claimBounty.d.ts +12 -0
  8. package/dist/src/instructions/automation/claimBounty.js +44 -0
  9. package/dist/src/instructions/automation/flashSwap.d.ts +21 -0
  10. package/dist/src/instructions/automation/flashSwap.js +74 -0
  11. package/dist/src/instructions/automation/priceUpdate.d.ts +19 -0
  12. package/dist/src/instructions/automation/priceUpdate.js +89 -0
  13. package/dist/src/instructions/automation/rebalanceIntent.d.ts +32 -0
  14. package/dist/src/instructions/automation/rebalanceIntent.js +117 -0
  15. package/dist/src/instructions/automation/rebalanceSwap.d.ts +11 -0
  16. package/dist/src/instructions/automation/rebalanceSwap.js +42 -0
  17. package/dist/src/instructions/management/addBounty.d.ts +7 -0
  18. package/dist/src/instructions/management/addBounty.js +41 -0
  19. package/dist/src/instructions/management/admin.d.ts +9 -0
  20. package/dist/src/instructions/management/admin.js +53 -0
  21. package/dist/src/instructions/management/claimFees.d.ts +15 -0
  22. package/dist/src/instructions/management/claimFees.js +95 -0
  23. package/dist/src/instructions/management/createBasket.d.ts +21 -0
  24. package/dist/src/instructions/management/createBasket.js +98 -0
  25. package/dist/src/instructions/management/edit.d.ts +51 -0
  26. package/dist/src/instructions/management/edit.js +477 -0
  27. package/dist/src/instructions/management/luts.d.ts +30 -0
  28. package/dist/src/instructions/management/luts.js +99 -0
  29. package/dist/src/instructions/pda.d.ts +25 -0
  30. package/dist/src/instructions/pda.js +128 -0
  31. package/dist/src/instructions/user/deposit.d.ts +20 -0
  32. package/dist/src/instructions/user/deposit.js +100 -0
  33. package/dist/src/instructions/user/withdraw.d.ts +8 -0
  34. package/dist/src/instructions/user/withdraw.js +36 -0
  35. package/dist/src/jup.d.ts +49 -0
  36. package/dist/src/jup.js +80 -0
  37. package/dist/src/keeperMonitor.d.ts +52 -0
  38. package/dist/src/keeperMonitor.js +624 -0
  39. package/dist/src/layouts/basket.d.ts +191 -0
  40. package/dist/src/layouts/basket.js +51 -0
  41. package/dist/src/layouts/config.d.ts +281 -0
  42. package/dist/src/layouts/config.js +237 -0
  43. package/dist/src/layouts/fraction.d.ts +20 -0
  44. package/dist/src/layouts/fraction.js +164 -0
  45. package/dist/src/layouts/intents/bounty.d.ts +18 -0
  46. package/dist/src/layouts/intents/bounty.js +19 -0
  47. package/dist/src/layouts/intents/intent.d.ts +209 -0
  48. package/dist/src/layouts/intents/intent.js +97 -0
  49. package/dist/src/layouts/intents/rebalanceIntent.d.ts +212 -0
  50. package/dist/src/layouts/intents/rebalanceIntent.js +94 -0
  51. package/dist/src/layouts/lookupTable.d.ts +7 -0
  52. package/dist/src/layouts/lookupTable.js +10 -0
  53. package/dist/src/layouts/oracle.d.ts +63 -0
  54. package/dist/src/layouts/oracle.js +96 -0
  55. package/dist/src/states/basket.d.ts +14 -0
  56. package/dist/src/states/basket.js +479 -0
  57. package/dist/src/states/config.d.ts +3 -0
  58. package/dist/src/states/config.js +71 -0
  59. package/dist/src/states/intents/intent.d.ts +10 -0
  60. package/dist/src/states/intents/intent.js +316 -0
  61. package/dist/src/states/intents/rebalanceIntent.d.ts +42 -0
  62. package/dist/src/states/intents/rebalanceIntent.js +680 -0
  63. package/dist/src/states/oracles/constants.d.ts +9 -0
  64. package/dist/src/states/oracles/constants.js +15 -0
  65. package/dist/src/states/oracles/oracle.d.ts +24 -0
  66. package/dist/src/states/oracles/oracle.js +168 -0
  67. package/dist/src/states/oracles/pythOracle.d.ts +132 -0
  68. package/dist/src/states/oracles/pythOracle.js +609 -0
  69. package/dist/src/states/oracles/raydiumClmmOracle.d.ts +184 -0
  70. package/dist/src/states/oracles/raydiumClmmOracle.js +843 -0
  71. package/dist/src/states/oracles/raydiumCpmmOracle.d.ts +120 -0
  72. package/dist/src/states/oracles/raydiumCpmmOracle.js +540 -0
  73. package/dist/src/states/oracles/switchboardOracle.d.ts +0 -0
  74. package/dist/src/states/oracles/switchboardOracle.js +1 -0
  75. package/dist/src/states/withdrawBasketFees.d.ts +10 -0
  76. package/dist/src/states/withdrawBasketFees.js +154 -0
  77. package/dist/src/txUtils.d.ts +65 -0
  78. package/dist/src/txUtils.js +306 -0
  79. package/dist/test.d.ts +1 -0
  80. package/dist/test.js +561 -0
  81. package/package.json +31 -0
  82. package/src/constants.ts +40 -0
  83. package/src/index.ts +2431 -0
  84. package/src/instructions/automation/auction.ts +55 -0
  85. package/src/instructions/automation/claimBounty.ts +69 -0
  86. package/src/instructions/automation/flashSwap.ts +104 -0
  87. package/src/instructions/automation/priceUpdate.ts +117 -0
  88. package/src/instructions/automation/rebalanceIntent.ts +181 -0
  89. package/src/instructions/management/addBounty.ts +55 -0
  90. package/src/instructions/management/admin.ts +72 -0
  91. package/src/instructions/management/claimFees.ts +129 -0
  92. package/src/instructions/management/createBasket.ts +138 -0
  93. package/src/instructions/management/edit.ts +602 -0
  94. package/src/instructions/management/luts.ts +157 -0
  95. package/src/instructions/pda.ts +151 -0
  96. package/src/instructions/user/deposit.ts +143 -0
  97. package/src/instructions/user/withdraw.ts +53 -0
  98. package/src/jup.ts +113 -0
  99. package/src/keeperMonitor.ts +585 -0
  100. package/src/layouts/basket.ts +233 -0
  101. package/src/layouts/config.ts +576 -0
  102. package/src/layouts/fraction.ts +164 -0
  103. package/src/layouts/intents/bounty.ts +35 -0
  104. package/src/layouts/intents/intent.ts +324 -0
  105. package/src/layouts/intents/rebalanceIntent.ts +306 -0
  106. package/src/layouts/lookupTable.ts +14 -0
  107. package/src/layouts/oracle.ts +157 -0
  108. package/src/states/basket.ts +527 -0
  109. package/src/states/config.ts +62 -0
  110. package/src/states/intents/intent.ts +311 -0
  111. package/src/states/intents/rebalanceIntent.ts +751 -0
  112. package/src/states/oracles/constants.ts +13 -0
  113. package/src/states/oracles/oracle.ts +212 -0
  114. package/src/states/oracles/pythOracle.ts +874 -0
  115. package/src/states/oracles/raydiumClmmOracle.ts +1193 -0
  116. package/src/states/oracles/raydiumCpmmOracle.ts +784 -0
  117. package/src/states/oracles/switchboardOracle.ts +0 -0
  118. package/src/states/withdrawBasketFees.ts +160 -0
  119. package/src/txUtils.ts +424 -0
  120. package/test.ts +609 -0
  121. package/tsconfig.json +101 -0
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskType = exports.IntentLayout = exports.IntentStatus = exports.INTENT_TASK_DATA_SIZE = exports.TASK_TYPE_STRINGS = exports.INTENT_STATUS_STRINGS = void 0;
4
+ exports.taskTypeFromU8 = taskTypeFromU8;
5
+ const borsh_1 = require("@coral-xyz/borsh");
6
+ const bounty_1 = require("./bounty");
7
+ exports.INTENT_STATUS_STRINGS = new Map([
8
+ [0, "not_active"],
9
+ [1, "active"],
10
+ [2, "reverted"],
11
+ [3, "completed"],
12
+ ]);
13
+ exports.TASK_TYPE_STRINGS = new Map([
14
+ [0, "unknown"],
15
+ [1, "edit_creator"],
16
+ [2, "edit_manager_settings"],
17
+ [3, "edit_fee_settings"],
18
+ [4, "edit_schedule_settings"],
19
+ [5, "edit_automation_settings"],
20
+ [6, "edit_lp_settings"],
21
+ [7, "edit_metadata_settings"],
22
+ [8, "edit_deposits_settings"],
23
+ [9, "edit_force_rebalance_settings"],
24
+ [10, "edit_custom_rebalance_settings"],
25
+ [11, "edit_add_token_delay"],
26
+ [12, "edit_update_weights_delay"],
27
+ [13, "edit_make_direct_swap_delay"],
28
+ [14, "add_token"],
29
+ [15, "update_weights"],
30
+ [16, "make_direct_swap"],
31
+ ]);
32
+ exports.INTENT_TASK_DATA_SIZE = 600;
33
+ var IntentStatus;
34
+ (function (IntentStatus) {
35
+ IntentStatus[IntentStatus["NotActive"] = 0] = "NotActive";
36
+ IntentStatus[IntentStatus["Active"] = 1] = "Active";
37
+ IntentStatus[IntentStatus["Reverted"] = 2] = "Reverted";
38
+ IntentStatus[IntentStatus["Completed"] = 3] = "Completed";
39
+ })(IntentStatus || (exports.IntentStatus = IntentStatus = {}));
40
+ ;
41
+ ;
42
+ exports.IntentLayout = (0, borsh_1.struct)([
43
+ (0, borsh_1.publicKey)('manager'),
44
+ (0, borsh_1.u8)('status'),
45
+ (0, borsh_1.u64)('activationTimestamp'),
46
+ (0, borsh_1.u64)('expirationTimestamp'),
47
+ (0, borsh_1.publicKey)('basket'),
48
+ bounty_1.BountyLayout.replicate('bounty'),
49
+ (0, borsh_1.u8)('taskType'),
50
+ (0, borsh_1.array)((0, borsh_1.u8)(), exports.INTENT_TASK_DATA_SIZE, 'taskData'),
51
+ ]);
52
+ var TaskType;
53
+ (function (TaskType) {
54
+ TaskType[TaskType["Unknown"] = 0] = "Unknown";
55
+ TaskType[TaskType["EditCreator"] = 1] = "EditCreator";
56
+ TaskType[TaskType["EditManagerSettings"] = 2] = "EditManagerSettings";
57
+ TaskType[TaskType["EditFeeSettings"] = 3] = "EditFeeSettings";
58
+ TaskType[TaskType["EditScheduleSettings"] = 4] = "EditScheduleSettings";
59
+ TaskType[TaskType["EditAutomationSettings"] = 5] = "EditAutomationSettings";
60
+ TaskType[TaskType["EditLpSettings"] = 6] = "EditLpSettings";
61
+ TaskType[TaskType["EditMetadataSettings"] = 7] = "EditMetadataSettings";
62
+ TaskType[TaskType["EditDepositsSettings"] = 8] = "EditDepositsSettings";
63
+ TaskType[TaskType["EditForceRebalanceSettings"] = 9] = "EditForceRebalanceSettings";
64
+ TaskType[TaskType["EditCustomRebalanceSettings"] = 10] = "EditCustomRebalanceSettings";
65
+ TaskType[TaskType["EditAddTokenDelay"] = 11] = "EditAddTokenDelay";
66
+ TaskType[TaskType["EditUpdateWeightsDelay"] = 12] = "EditUpdateWeightsDelay";
67
+ TaskType[TaskType["EditMakeDirectSwapDelay"] = 13] = "EditMakeDirectSwapDelay";
68
+ TaskType[TaskType["AddToken"] = 14] = "AddToken";
69
+ TaskType[TaskType["UpdateWeights"] = 15] = "UpdateWeights";
70
+ TaskType[TaskType["MakeDirectSwap"] = 16] = "MakeDirectSwap";
71
+ })(TaskType || (exports.TaskType = TaskType = {}));
72
+ // Maps raw u8 values from on-chain Borsh-serialized storage to TaskType enum.
73
+ // The on-chain program uses sequential Borsh discriminants (11-16) for storage,
74
+ // but the SDK enum uses non-sequential values (101-103, 201-203) for instruction input.
75
+ function taskTypeFromU8(value) {
76
+ switch (value) {
77
+ case 1: return TaskType.EditCreator;
78
+ case 2: return TaskType.EditManagerSettings;
79
+ case 3: return TaskType.EditFeeSettings;
80
+ case 4: return TaskType.EditScheduleSettings;
81
+ case 5: return TaskType.EditAutomationSettings;
82
+ case 6: return TaskType.EditLpSettings;
83
+ case 7: return TaskType.EditMetadataSettings;
84
+ case 8: return TaskType.EditDepositsSettings;
85
+ case 9: return TaskType.EditForceRebalanceSettings;
86
+ case 10: return TaskType.EditCustomRebalanceSettings;
87
+ case 11: return TaskType.EditAddTokenDelay;
88
+ case 12: return TaskType.EditUpdateWeightsDelay;
89
+ case 13: return TaskType.EditMakeDirectSwapDelay;
90
+ case 14: return TaskType.AddToken;
91
+ case 15: return TaskType.UpdateWeights;
92
+ case 16: return TaskType.MakeDirectSwap;
93
+ default: return TaskType.Unknown;
94
+ }
95
+ }
96
+ ;
97
+ ;
@@ -0,0 +1,212 @@
1
+ import BN from "bn.js";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { u8 } from '@coral-xyz/borsh';
4
+ import { Fraction } from "../fraction";
5
+ import { Bounty } from "./bounty";
6
+ import { OraclePriceOnChain } from "../oracle";
7
+ import { FeeSettings } from "../config";
8
+ import { FormattedFeeSettings } from "../basket";
9
+ import { FormattedBountySchedule } from "./intent";
10
+ export declare enum RebalanceType {
11
+ Deposit = 0,
12
+ Withdraw = 1,
13
+ Basket = 2,
14
+ BasketCustom = 3
15
+ }
16
+ export declare enum RebalanceAction {
17
+ NotActive = 0,
18
+ DepositTokens = 1,
19
+ PlaceholderAction = 2,
20
+ UpdatePrices = 3,
21
+ Auction = 4
22
+ }
23
+ export interface AuctionTimestamps {
24
+ startTime: BN;
25
+ endTime: BN;
26
+ }
27
+ export declare const AuctionTimestampsLayout: any;
28
+ export interface TokenAuction {
29
+ mint: PublicKey;
30
+ amount: BN;
31
+ targetAmount: BN;
32
+ price: OraclePriceOnChain;
33
+ keepToken: number;
34
+ }
35
+ export declare const TokenAuctionLayout: any;
36
+ export interface TaskCompletion {
37
+ completedBy: PublicKey;
38
+ completedBounty: BN;
39
+ completedTime: BN;
40
+ }
41
+ export declare const TaskCompletionLayout: any;
42
+ export type FormattedRebalanceType = "deposit" | "withdraw" | "basket" | "basket_custom";
43
+ export declare const REBALANCE_TYPE_STRINGS: Map<number, FormattedRebalanceType>;
44
+ export type FormattedRebalanceAction = "not_active" | "deposit_tokens" | "placeholder_action" | "update_prices" | "auction";
45
+ export declare const REBALANCE_ACTION_STRINGS: Map<number, FormattedRebalanceAction>;
46
+ export interface FormattedOraclePrice {
47
+ price: number;
48
+ conf: number;
49
+ update_time: number;
50
+ }
51
+ export interface FormattedTokenAuction {
52
+ mint: string;
53
+ amount: number;
54
+ target_amount: number;
55
+ price: FormattedOraclePrice;
56
+ keep_token: boolean;
57
+ }
58
+ export interface FormattedTaskCompletion {
59
+ completed_by: string;
60
+ completed_bounty: number;
61
+ completed_time: number;
62
+ }
63
+ export interface DepositData {
64
+ tokens: {
65
+ mint: string;
66
+ amount: number;
67
+ }[];
68
+ }
69
+ export interface PriceUpdatesData {
70
+ tokens: {
71
+ mint: string;
72
+ updated: boolean;
73
+ expiration: number;
74
+ update_time: number;
75
+ price: number;
76
+ conf: number;
77
+ }[];
78
+ }
79
+ export interface AuctionData {
80
+ auction_stages: {
81
+ start_time: number;
82
+ end_time: number;
83
+ }[];
84
+ tokens: {
85
+ mint: string;
86
+ amount: number;
87
+ target_amount: number;
88
+ price: number;
89
+ conf: number;
90
+ }[];
91
+ }
92
+ export interface MintData {
93
+ mintAmount: number;
94
+ mintValue: number;
95
+ fees: {
96
+ host: number;
97
+ creator: number;
98
+ managers: number;
99
+ symmetry: number;
100
+ basket: number;
101
+ };
102
+ tokens: {
103
+ mint: string;
104
+ contribution_amount: number;
105
+ remaining_amount: number;
106
+ }[];
107
+ }
108
+ export interface RedeemData {
109
+ tokens: {
110
+ mint: string;
111
+ amount: number;
112
+ }[];
113
+ }
114
+ export interface ClaimBountyData {
115
+ bounty_mint: string;
116
+ keepers: {
117
+ pubkey: string;
118
+ bounty_amount: number;
119
+ }[];
120
+ unused_bounty: {
121
+ pubkey: string;
122
+ bounty_amount: number;
123
+ };
124
+ rent: {
125
+ pubkey: string;
126
+ sol_amount: number;
127
+ };
128
+ }
129
+ export interface UIRebalanceIntent {
130
+ rebalance_type: FormattedRebalanceType;
131
+ deposit_data: DepositData | null;
132
+ price_updates_data: PriceUpdatesData | null;
133
+ auction_data: AuctionData | null;
134
+ mint_data: MintData | null;
135
+ redeem_data: RedeemData | null;
136
+ claim_bounty_data: ClaimBountyData | null;
137
+ formatted_data: FormattedRebalanceIntent;
138
+ chain_data: RebalanceIntent;
139
+ }
140
+ export interface FormattedRebalanceIntent {
141
+ pubkey: string;
142
+ sol_balance: number;
143
+ basket: string;
144
+ owner: string;
145
+ rent_payer: string;
146
+ rebalance_type: FormattedRebalanceType;
147
+ current_action: FormattedRebalanceAction;
148
+ withdraw_params_burn_amount: number;
149
+ withdraw_params_amount_wo_fees: number;
150
+ withdraw_params_keep_tokens_bitmask: number[];
151
+ withdraw_params_keep_all_tokens: boolean;
152
+ basket_fee_settings: FormattedFeeSettings;
153
+ execution_start_time: number;
154
+ rebalance_threshold_slippage_bps: number;
155
+ per_trade_rebalance_threshold_slippage_bps: number;
156
+ initial_tvl: number;
157
+ auction_update_timestamp: number;
158
+ auctions: {
159
+ start_time: number;
160
+ end_time: number;
161
+ }[];
162
+ tokens: FormattedTokenAuction[];
163
+ last_action_timestamp: number;
164
+ bounty: {
165
+ bounty_depositor: string;
166
+ bounty_mint: string;
167
+ bounty_per_price_update_task: FormattedBountySchedule;
168
+ bounty_per_task: FormattedBountySchedule;
169
+ bounty_total: number;
170
+ bounty_left: number;
171
+ };
172
+ bounty_adjustment_amount: number;
173
+ placeholder_task: FormattedTaskCompletion;
174
+ price_update_tasks: FormattedTaskCompletion[];
175
+ finish_price_update_task: FormattedTaskCompletion;
176
+ auction_creation_task: FormattedTaskCompletion;
177
+ mint_basket_task: FormattedTaskCompletion;
178
+ cancel_rebalance_task: FormattedTaskCompletion;
179
+ token_settlement_tasks: FormattedTaskCompletion[];
180
+ }
181
+ export interface RebalanceIntent {
182
+ basket: PublicKey;
183
+ owner: PublicKey;
184
+ rentPayer: PublicKey;
185
+ rebalanceType: RebalanceType;
186
+ currentAction: RebalanceAction;
187
+ withdrawParamsBurnAmount: BN;
188
+ withdrawParamsAmountWoFees: BN;
189
+ withdrawParamsKeepTokensBitmask: number[];
190
+ withdrawParamsKeepAllTokens: u8;
191
+ basketFeeSettings: FeeSettings;
192
+ executionStartTime: BN;
193
+ rebalanceThresholdSlippageBps: number;
194
+ perTradeRebalanceThresholdSlippageBps: number;
195
+ initialTvl: Fraction;
196
+ auctionUpdateTimestamp: BN;
197
+ auctions: AuctionTimestamps[];
198
+ tokens: TokenAuction[];
199
+ lastActionTimestamp: BN;
200
+ bounty: Bounty;
201
+ bountyAdjustmentAmount: BN;
202
+ placeholderTask: TaskCompletion;
203
+ priceUpdateTasks: TaskCompletion[];
204
+ finishPriceUpdateTask: TaskCompletion;
205
+ auctionCreationTask: TaskCompletion;
206
+ mintBasketTask: TaskCompletion;
207
+ cancelRebalanceTask: TaskCompletion;
208
+ tokenSettlementTasks: TaskCompletion[];
209
+ ownAddress?: PublicKey;
210
+ solBalance?: number;
211
+ }
212
+ export declare const RebalanceIntentLayout: any;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RebalanceIntentLayout = exports.REBALANCE_ACTION_STRINGS = exports.REBALANCE_TYPE_STRINGS = exports.TaskCompletionLayout = exports.TokenAuctionLayout = exports.AuctionTimestampsLayout = exports.RebalanceAction = exports.RebalanceType = void 0;
4
+ const borsh_1 = require("@coral-xyz/borsh");
5
+ const fraction_1 = require("../fraction");
6
+ const bounty_1 = require("./bounty");
7
+ const oracle_1 = require("../oracle");
8
+ const constants_1 = require("../../constants");
9
+ const config_1 = require("../config");
10
+ var RebalanceType;
11
+ (function (RebalanceType) {
12
+ RebalanceType[RebalanceType["Deposit"] = 0] = "Deposit";
13
+ RebalanceType[RebalanceType["Withdraw"] = 1] = "Withdraw";
14
+ RebalanceType[RebalanceType["Basket"] = 2] = "Basket";
15
+ RebalanceType[RebalanceType["BasketCustom"] = 3] = "BasketCustom";
16
+ })(RebalanceType || (exports.RebalanceType = RebalanceType = {}));
17
+ ;
18
+ var RebalanceAction;
19
+ (function (RebalanceAction) {
20
+ RebalanceAction[RebalanceAction["NotActive"] = 0] = "NotActive";
21
+ RebalanceAction[RebalanceAction["DepositTokens"] = 1] = "DepositTokens";
22
+ RebalanceAction[RebalanceAction["PlaceholderAction"] = 2] = "PlaceholderAction";
23
+ RebalanceAction[RebalanceAction["UpdatePrices"] = 3] = "UpdatePrices";
24
+ RebalanceAction[RebalanceAction["Auction"] = 4] = "Auction";
25
+ })(RebalanceAction || (exports.RebalanceAction = RebalanceAction = {}));
26
+ ;
27
+ ;
28
+ exports.AuctionTimestampsLayout = (0, borsh_1.struct)([
29
+ (0, borsh_1.u64)('startTime'),
30
+ (0, borsh_1.u64)('endTime'),
31
+ ]);
32
+ ;
33
+ exports.TokenAuctionLayout = (0, borsh_1.struct)([
34
+ (0, borsh_1.publicKey)('mint'),
35
+ (0, borsh_1.u64)('amount'),
36
+ (0, borsh_1.u64)('targetAmount'),
37
+ oracle_1.OraclePriceLayout.replicate('price'),
38
+ (0, borsh_1.u8)('keepToken'),
39
+ ]);
40
+ ;
41
+ exports.TaskCompletionLayout = (0, borsh_1.struct)([
42
+ (0, borsh_1.publicKey)('completedBy'),
43
+ (0, borsh_1.u64)('completedBounty'),
44
+ (0, borsh_1.u64)('completedTime'),
45
+ ]);
46
+ exports.REBALANCE_TYPE_STRINGS = new Map([
47
+ [0, "deposit"],
48
+ [1, "withdraw"],
49
+ [2, "basket"],
50
+ [3, "basket_custom"],
51
+ ]);
52
+ exports.REBALANCE_ACTION_STRINGS = new Map([
53
+ [0, "not_active"],
54
+ [1, "deposit_tokens"],
55
+ [2, "placeholder_action"],
56
+ [3, "update_prices"],
57
+ [4, "auction"],
58
+ ]);
59
+ ;
60
+ ;
61
+ ;
62
+ [];
63
+ [];
64
+ [];
65
+ ;
66
+ exports.RebalanceIntentLayout = (0, borsh_1.struct)([
67
+ (0, borsh_1.publicKey)('basket'),
68
+ (0, borsh_1.publicKey)('owner'),
69
+ (0, borsh_1.publicKey)('rentPayer'),
70
+ (0, borsh_1.u8)('rebalanceType'),
71
+ (0, borsh_1.u8)('currentAction'),
72
+ (0, borsh_1.u64)('withdrawParamsBurnAmount'),
73
+ (0, borsh_1.u64)('withdrawParamsAmountWoFees'),
74
+ (0, borsh_1.array)((0, borsh_1.u8)(), 16, 'withdrawParamsKeepTokensBitmask'),
75
+ (0, borsh_1.u8)('withdrawParamsKeepAllTokens'),
76
+ config_1.FeeSettingsLayout.replicate('basketFeeSettings'),
77
+ (0, borsh_1.u64)('executionStartTime'),
78
+ (0, borsh_1.u16)('rebalanceThresholdSlippageBps'),
79
+ (0, borsh_1.u16)('perTradeRebalanceThresholdSlippageBps'),
80
+ fraction_1.FractionLayout.replicate('initialTvl'),
81
+ (0, borsh_1.u64)('auctionUpdateTimestamp'),
82
+ (0, borsh_1.array)(exports.AuctionTimestampsLayout, 3, 'auctions'),
83
+ (0, borsh_1.array)(exports.TokenAuctionLayout, constants_1.MAX_SUPPORTED_TOKENS_PER_BASKET, 'tokens'),
84
+ (0, borsh_1.u64)('lastActionTimestamp'),
85
+ bounty_1.BountyLayout.replicate('bounty'),
86
+ (0, borsh_1.u64)('bountyAdjustmentAmount'),
87
+ exports.TaskCompletionLayout.replicate('placeholderTask'),
88
+ (0, borsh_1.array)(exports.TaskCompletionLayout, constants_1.MAX_SUPPORTED_TOKENS_PER_BASKET, 'priceUpdateTasks'),
89
+ exports.TaskCompletionLayout.replicate('finishPriceUpdateTask'),
90
+ exports.TaskCompletionLayout.replicate('auctionCreationTask'),
91
+ exports.TaskCompletionLayout.replicate('mintBasketTask'),
92
+ exports.TaskCompletionLayout.replicate('cancelRebalanceTask'),
93
+ (0, borsh_1.array)(exports.TaskCompletionLayout, constants_1.MAX_SUPPORTED_TOKENS_PER_BASKET, 'tokenSettlementTasks'),
94
+ ]);
@@ -0,0 +1,7 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ export interface LookupTableInfo {
3
+ lookupTable: PublicKey;
4
+ authority: PublicKey;
5
+ creator: PublicKey;
6
+ }
7
+ export declare const LookupTableInfoLayout: any;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LookupTableInfoLayout = void 0;
4
+ const borsh_1 = require("@coral-xyz/borsh");
5
+ ;
6
+ exports.LookupTableInfoLayout = (0, borsh_1.struct)([
7
+ (0, borsh_1.publicKey)("lookupTable"),
8
+ (0, borsh_1.publicKey)("authority"),
9
+ (0, borsh_1.publicKey)("creator")
10
+ ]);
@@ -0,0 +1,63 @@
1
+ import BN from 'bn.js';
2
+ import { Fraction } from './fraction';
3
+ export declare const MAX_ORACLES_PER_TOKEN = 4;
4
+ export declare const MAX_ACCOUNTS_PER_ORACLE = 4;
5
+ export type FormattedOracleType = "pyth" | "raydium_clmm" | "raydium_cpmm" | "switchboard" | "example";
6
+ export declare const ORACLE_TYPES_STRINGS: Map<number, FormattedOracleType>;
7
+ export interface OraclePriceOnChain {
8
+ price: Fraction;
9
+ conf: Fraction;
10
+ updateTime: BN;
11
+ }
12
+ export declare const OraclePriceLayout: any;
13
+ export declare enum OracleType {
14
+ Pyth = 0,
15
+ RaydiumClmm = 1,
16
+ RaydiumCpmm = 2,
17
+ SwitchBoard = 3,
18
+ Example = 4
19
+ }
20
+ export declare enum Quote {
21
+ Usdc = 0,
22
+ Wsol = 1
23
+ }
24
+ export declare enum Side {
25
+ Base = 0,
26
+ Quote = 1
27
+ }
28
+ export interface OracleSettings {
29
+ oracleType: OracleType;
30
+ numRequiredAccounts: number;
31
+ weight: number;
32
+ isRequired: number;
33
+ confThreshBps: number;
34
+ volatilityThreshBps: number;
35
+ maxSlippageBps: number;
36
+ minLiquidity: BN;
37
+ stalenessThresh: BN;
38
+ stalenessConfRateBps: number;
39
+ tokenDecimals: number;
40
+ twapSecondsAgo: BN;
41
+ twapSecondarySecondsAgo: BN;
42
+ quote: Quote;
43
+ side: Side;
44
+ }
45
+ export declare const OracleSettingsLayout: any;
46
+ export interface OracleData {
47
+ oracleSettings: OracleSettings;
48
+ accountsToLoadLutIds: number[];
49
+ accountsToLoadLutIndices: number[];
50
+ }
51
+ export declare const OracleDataLayout: any;
52
+ export interface OracleAggregator {
53
+ numOracles: number;
54
+ minOraclesThresh: number;
55
+ oracles: OracleData[];
56
+ minConfBps: number;
57
+ confThreshBps: number;
58
+ confMultiplier: Fraction;
59
+ }
60
+ export declare const OracleAggregatorLayout: any;
61
+ export declare const DEFAULT_ORACLE_SETTINGS: OracleSettings;
62
+ export declare const PYTH_WSOL_ORACLE_SETTINGS: OracleSettings;
63
+ export declare const PYTH_USDC_ORACLE_SETTINGS: OracleSettings;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PYTH_USDC_ORACLE_SETTINGS = exports.PYTH_WSOL_ORACLE_SETTINGS = exports.DEFAULT_ORACLE_SETTINGS = exports.OracleAggregatorLayout = exports.OracleDataLayout = exports.OracleSettingsLayout = exports.Side = exports.Quote = exports.OracleType = exports.OraclePriceLayout = exports.ORACLE_TYPES_STRINGS = exports.MAX_ACCOUNTS_PER_ORACLE = exports.MAX_ORACLES_PER_TOKEN = void 0;
7
+ const bn_js_1 = __importDefault(require("bn.js"));
8
+ const borsh_1 = require("@coral-xyz/borsh");
9
+ const fraction_1 = require("./fraction");
10
+ const constants_1 = require("../constants");
11
+ exports.MAX_ORACLES_PER_TOKEN = 4;
12
+ exports.MAX_ACCOUNTS_PER_ORACLE = 4;
13
+ exports.ORACLE_TYPES_STRINGS = new Map([
14
+ [0, "pyth"],
15
+ [1, "raydium_clmm"],
16
+ [2, "raydium_cpmm"],
17
+ [3, "switchboard"],
18
+ [255, "example"],
19
+ ]);
20
+ ;
21
+ exports.OraclePriceLayout = (0, borsh_1.struct)([
22
+ fraction_1.FractionLayout.replicate('price'),
23
+ fraction_1.FractionLayout.replicate('conf'),
24
+ (0, borsh_1.u64)('updateTime'),
25
+ ]);
26
+ var OracleType;
27
+ (function (OracleType) {
28
+ OracleType[OracleType["Pyth"] = 0] = "Pyth";
29
+ OracleType[OracleType["RaydiumClmm"] = 1] = "RaydiumClmm";
30
+ OracleType[OracleType["RaydiumCpmm"] = 2] = "RaydiumCpmm";
31
+ OracleType[OracleType["SwitchBoard"] = 3] = "SwitchBoard";
32
+ OracleType[OracleType["Example"] = 4] = "Example";
33
+ })(OracleType || (exports.OracleType = OracleType = {}));
34
+ ;
35
+ var Quote;
36
+ (function (Quote) {
37
+ Quote[Quote["Usdc"] = 0] = "Usdc";
38
+ Quote[Quote["Wsol"] = 1] = "Wsol";
39
+ })(Quote || (exports.Quote = Quote = {}));
40
+ ;
41
+ var Side;
42
+ (function (Side) {
43
+ Side[Side["Base"] = 0] = "Base";
44
+ Side[Side["Quote"] = 1] = "Quote";
45
+ })(Side || (exports.Side = Side = {}));
46
+ ;
47
+ exports.OracleSettingsLayout = (0, borsh_1.struct)([
48
+ (0, borsh_1.u8)('oracleType'),
49
+ (0, borsh_1.u8)('numRequiredAccounts'),
50
+ (0, borsh_1.u16)('weight'),
51
+ (0, borsh_1.u8)('isRequired'),
52
+ (0, borsh_1.u16)('confThreshBps'),
53
+ (0, borsh_1.u16)('volatilityThreshBps'),
54
+ (0, borsh_1.u16)('maxSlippageBps'),
55
+ (0, borsh_1.u64)('minLiquidity'),
56
+ (0, borsh_1.u64)('stalenessThresh'),
57
+ (0, borsh_1.u16)('stalenessConfRateBps'),
58
+ (0, borsh_1.u8)('tokenDecimals'),
59
+ (0, borsh_1.u64)('twapSecondsAgo'),
60
+ (0, borsh_1.u64)('twapSecondarySecondsAgo'),
61
+ (0, borsh_1.u8)('quote'),
62
+ (0, borsh_1.u8)('side'),
63
+ ]);
64
+ ;
65
+ exports.OracleDataLayout = (0, borsh_1.struct)([
66
+ exports.OracleSettingsLayout.replicate('oracleSettings'),
67
+ (0, borsh_1.array)((0, borsh_1.u8)(), exports.MAX_ACCOUNTS_PER_ORACLE, 'accountsToLoadLutIds'),
68
+ (0, borsh_1.array)((0, borsh_1.u8)(), exports.MAX_ACCOUNTS_PER_ORACLE, 'accountsToLoadLutIndices'),
69
+ ]);
70
+ exports.OracleAggregatorLayout = (0, borsh_1.struct)([
71
+ (0, borsh_1.u8)('numOracles'),
72
+ (0, borsh_1.u8)('minOraclesThresh'),
73
+ (0, borsh_1.array)(exports.OracleDataLayout, exports.MAX_ORACLES_PER_TOKEN, 'oracles'),
74
+ (0, borsh_1.u16)('minConfBps'),
75
+ (0, borsh_1.u16)('confThreshBps'),
76
+ fraction_1.FractionLayout.replicate('confMultiplier')
77
+ ]);
78
+ exports.DEFAULT_ORACLE_SETTINGS = {
79
+ oracleType: OracleType.Pyth,
80
+ numRequiredAccounts: 1,
81
+ weight: constants_1.HUNDRED_PERCENT_BPS,
82
+ isRequired: 1,
83
+ confThreshBps: 100, // TODO: 1% ??
84
+ volatilityThreshBps: 50000,
85
+ maxSlippageBps: 1000,
86
+ minLiquidity: new bn_js_1.default(0),
87
+ stalenessThresh: new bn_js_1.default(120),
88
+ stalenessConfRateBps: 50,
89
+ tokenDecimals: constants_1.WSOL_DECIMALS,
90
+ twapSecondsAgo: new bn_js_1.default(0),
91
+ twapSecondarySecondsAgo: new bn_js_1.default(0),
92
+ quote: Quote.Wsol,
93
+ side: Side.Base,
94
+ };
95
+ exports.PYTH_WSOL_ORACLE_SETTINGS = Object.assign(Object.assign({}, exports.DEFAULT_ORACLE_SETTINGS), { tokenDecimals: constants_1.WSOL_DECIMALS });
96
+ exports.PYTH_USDC_ORACLE_SETTINGS = Object.assign(Object.assign({}, exports.DEFAULT_ORACLE_SETTINGS), { tokenDecimals: constants_1.USDC_DECIMALS });
@@ -0,0 +1,14 @@
1
+ import { AccountInfo, Connection, PublicKey } from '@solana/web3.js';
2
+ import { Basket } from '../layouts/basket';
3
+ export declare function computeTokenMintsHash(mints: string[]): number[];
4
+ export declare function addFieldsToBasket(basket: Basket): Basket;
5
+ export declare function addLutsToBaskets(connection: Connection, baskets: Basket[]): Promise<Basket[]>;
6
+ export declare function fetchBasket(connection: Connection, basketAddress: PublicKey): Promise<Basket>;
7
+ export declare function fetchBasketsMultiple(connection: Connection, basketAddresses: PublicKey[]): Promise<Map<string, Basket>>;
8
+ export interface BasketFilter {
9
+ type: "host" | "creator" | "manager";
10
+ pubkey: string;
11
+ }
12
+ export declare function fetchBaskets(connection: Connection, filter?: BasketFilter): Promise<Basket[]>;
13
+ export declare function fetchBasketOracleAccountInfos(connection: Connection, basket: Basket): Promise<Map<string, AccountInfo<Buffer> | null>>;
14
+ export declare function loadBasketPrice(basket: Basket, connection: Connection): Promise<Basket>;