@symmetry-hq/sdk 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/constants.d.ts +23 -0
- package/dist/src/constants.js +38 -0
- package/dist/src/index.d.ts +804 -0
- package/dist/src/index.js +2097 -0
- package/dist/src/instructions/automation/auction.d.ts +6 -0
- package/dist/src/instructions/automation/auction.js +40 -0
- package/dist/src/instructions/automation/claimBounty.d.ts +12 -0
- package/dist/src/instructions/automation/claimBounty.js +44 -0
- package/dist/src/instructions/automation/flashSwap.d.ts +21 -0
- package/dist/src/instructions/automation/flashSwap.js +74 -0
- package/dist/src/instructions/automation/priceUpdate.d.ts +19 -0
- package/dist/src/instructions/automation/priceUpdate.js +89 -0
- package/dist/src/instructions/automation/rebalanceIntent.d.ts +32 -0
- package/dist/src/instructions/automation/rebalanceIntent.js +117 -0
- package/dist/src/instructions/automation/rebalanceSwap.d.ts +11 -0
- package/dist/src/instructions/automation/rebalanceSwap.js +42 -0
- package/dist/src/instructions/management/addBounty.d.ts +7 -0
- package/dist/src/instructions/management/addBounty.js +41 -0
- package/dist/src/instructions/management/admin.d.ts +9 -0
- package/dist/src/instructions/management/admin.js +53 -0
- package/dist/src/instructions/management/claimFees.d.ts +15 -0
- package/dist/src/instructions/management/claimFees.js +95 -0
- package/dist/src/instructions/management/createBasket.d.ts +21 -0
- package/dist/src/instructions/management/createBasket.js +98 -0
- package/dist/src/instructions/management/edit.d.ts +51 -0
- package/dist/src/instructions/management/edit.js +477 -0
- package/dist/src/instructions/management/luts.d.ts +30 -0
- package/dist/src/instructions/management/luts.js +99 -0
- package/dist/src/instructions/pda.d.ts +25 -0
- package/dist/src/instructions/pda.js +128 -0
- package/dist/src/instructions/user/deposit.d.ts +20 -0
- package/dist/src/instructions/user/deposit.js +100 -0
- package/dist/src/instructions/user/withdraw.d.ts +8 -0
- package/dist/src/instructions/user/withdraw.js +36 -0
- package/dist/src/jup.d.ts +49 -0
- package/dist/src/jup.js +80 -0
- package/dist/src/keeperMonitor.d.ts +52 -0
- package/dist/src/keeperMonitor.js +624 -0
- package/dist/src/layouts/basket.d.ts +191 -0
- package/dist/src/layouts/basket.js +51 -0
- package/dist/src/layouts/config.d.ts +281 -0
- package/dist/src/layouts/config.js +237 -0
- package/dist/src/layouts/fraction.d.ts +20 -0
- package/dist/src/layouts/fraction.js +164 -0
- package/dist/src/layouts/intents/bounty.d.ts +18 -0
- package/dist/src/layouts/intents/bounty.js +19 -0
- package/dist/src/layouts/intents/intent.d.ts +209 -0
- package/dist/src/layouts/intents/intent.js +97 -0
- package/dist/src/layouts/intents/rebalanceIntent.d.ts +212 -0
- package/dist/src/layouts/intents/rebalanceIntent.js +94 -0
- package/dist/src/layouts/lookupTable.d.ts +7 -0
- package/dist/src/layouts/lookupTable.js +10 -0
- package/dist/src/layouts/oracle.d.ts +63 -0
- package/dist/src/layouts/oracle.js +96 -0
- package/dist/src/states/basket.d.ts +14 -0
- package/dist/src/states/basket.js +479 -0
- package/dist/src/states/config.d.ts +3 -0
- package/dist/src/states/config.js +71 -0
- package/dist/src/states/intents/intent.d.ts +10 -0
- package/dist/src/states/intents/intent.js +316 -0
- package/dist/src/states/intents/rebalanceIntent.d.ts +42 -0
- package/dist/src/states/intents/rebalanceIntent.js +680 -0
- package/dist/src/states/oracles/constants.d.ts +9 -0
- package/dist/src/states/oracles/constants.js +15 -0
- package/dist/src/states/oracles/oracle.d.ts +24 -0
- package/dist/src/states/oracles/oracle.js +168 -0
- package/dist/src/states/oracles/pythOracle.d.ts +132 -0
- package/dist/src/states/oracles/pythOracle.js +609 -0
- package/dist/src/states/oracles/raydiumClmmOracle.d.ts +184 -0
- package/dist/src/states/oracles/raydiumClmmOracle.js +843 -0
- package/dist/src/states/oracles/raydiumCpmmOracle.d.ts +120 -0
- package/dist/src/states/oracles/raydiumCpmmOracle.js +540 -0
- package/dist/src/states/oracles/switchboardOracle.d.ts +0 -0
- package/dist/src/states/oracles/switchboardOracle.js +1 -0
- package/dist/src/states/withdrawBasketFees.d.ts +10 -0
- package/dist/src/states/withdrawBasketFees.js +154 -0
- package/dist/src/txUtils.d.ts +65 -0
- package/dist/src/txUtils.js +306 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +561 -0
- package/package.json +31 -0
- package/src/constants.ts +40 -0
- package/src/index.ts +2431 -0
- package/src/instructions/automation/auction.ts +55 -0
- package/src/instructions/automation/claimBounty.ts +69 -0
- package/src/instructions/automation/flashSwap.ts +104 -0
- package/src/instructions/automation/priceUpdate.ts +117 -0
- package/src/instructions/automation/rebalanceIntent.ts +181 -0
- package/src/instructions/management/addBounty.ts +55 -0
- package/src/instructions/management/admin.ts +72 -0
- package/src/instructions/management/claimFees.ts +129 -0
- package/src/instructions/management/createBasket.ts +138 -0
- package/src/instructions/management/edit.ts +602 -0
- package/src/instructions/management/luts.ts +157 -0
- package/src/instructions/pda.ts +151 -0
- package/src/instructions/user/deposit.ts +143 -0
- package/src/instructions/user/withdraw.ts +53 -0
- package/src/jup.ts +113 -0
- package/src/keeperMonitor.ts +585 -0
- package/src/layouts/basket.ts +233 -0
- package/src/layouts/config.ts +576 -0
- package/src/layouts/fraction.ts +164 -0
- package/src/layouts/intents/bounty.ts +35 -0
- package/src/layouts/intents/intent.ts +324 -0
- package/src/layouts/intents/rebalanceIntent.ts +306 -0
- package/src/layouts/lookupTable.ts +14 -0
- package/src/layouts/oracle.ts +157 -0
- package/src/states/basket.ts +527 -0
- package/src/states/config.ts +62 -0
- package/src/states/intents/intent.ts +311 -0
- package/src/states/intents/rebalanceIntent.ts +751 -0
- package/src/states/oracles/constants.ts +13 -0
- package/src/states/oracles/oracle.ts +212 -0
- package/src/states/oracles/pythOracle.ts +874 -0
- package/src/states/oracles/raydiumClmmOracle.ts +1193 -0
- package/src/states/oracles/raydiumCpmmOracle.ts +784 -0
- package/src/states/oracles/switchboardOracle.ts +0 -0
- package/src/states/withdrawBasketFees.ts +160 -0
- package/src/txUtils.ts +424 -0
- package/test.ts +609 -0
- package/tsconfig.json +101 -0
|
@@ -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,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>;
|