@sun-protocol/sun-sdk-sunswap-v4 0.1.0-beta.0

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.
@@ -0,0 +1,327 @@
1
+ import { TronAddress, Network, BigintIsh, TokenRequirement, ContractCallAction, ContractParameter } from '@sun-protocol/sun-sdk-core';
2
+
3
+ declare function tronAddressToEvmHex(address: TronAddress | string): `0x${string}`;
4
+
5
+ type V4PoolParameters = string & {
6
+ readonly __v4PoolParameters: unique symbol;
7
+ };
8
+ type V4PoolId = string & {
9
+ readonly __v4PoolId: unique symbol;
10
+ };
11
+ interface V4HooksRegistration {
12
+ readonly beforeInitialize?: boolean;
13
+ readonly afterInitialize?: boolean;
14
+ readonly beforeAddLiquidity?: boolean;
15
+ readonly afterAddLiquidity?: boolean;
16
+ readonly beforeRemoveLiquidity?: boolean;
17
+ readonly afterRemoveLiquidity?: boolean;
18
+ readonly beforeSwap?: boolean;
19
+ readonly afterSwap?: boolean;
20
+ readonly beforeDonate?: boolean;
21
+ readonly afterDonate?: boolean;
22
+ readonly beforeSwapReturnsDelta?: boolean;
23
+ readonly afterSwapReturnsDelta?: boolean;
24
+ readonly afterAddLiquidityReturnsDelta?: boolean;
25
+ readonly afterRemoveLiquidityReturnsDelta?: boolean;
26
+ }
27
+ interface V4PoolParameterConfig {
28
+ readonly tickSpacing: number;
29
+ readonly hooksRegistration?: V4HooksRegistration;
30
+ }
31
+ interface V4PoolKey {
32
+ readonly network: Network;
33
+ readonly currency0: TronAddress;
34
+ readonly currency1: TronAddress;
35
+ readonly hooks: TronAddress;
36
+ readonly fee: number;
37
+ readonly parameters: V4PoolParameters;
38
+ }
39
+ interface V4PoolState {
40
+ readonly poolKey: V4PoolKey;
41
+ readonly sqrtPriceX96: BigintIsh;
42
+ readonly tick: number;
43
+ readonly liquidity: BigintIsh;
44
+ }
45
+ interface V4TickRange {
46
+ readonly tickLower: number;
47
+ readonly tickUpper: number;
48
+ }
49
+ interface V4PositionKey extends V4TickRange {
50
+ readonly poolKey: V4PoolKey;
51
+ readonly salt?: string;
52
+ }
53
+ interface V4Position extends V4PositionKey {
54
+ readonly tokenId?: BigintIsh;
55
+ readonly liquidity: BigintIsh;
56
+ readonly tokensOwed0?: BigintIsh;
57
+ readonly tokensOwed1?: BigintIsh;
58
+ }
59
+
60
+ declare const V4_ACTIONS: {
61
+ readonly CL_INCREASE_LIQUIDITY: 0;
62
+ readonly CL_DECREASE_LIQUIDITY: 1;
63
+ readonly CL_MINT_POSITION: 2;
64
+ readonly SETTLE: 11;
65
+ readonly SETTLE_PAIR: 13;
66
+ readonly TAKE_PAIR: 17;
67
+ readonly CLOSE_CURRENCY: 18;
68
+ readonly SWEEP: 20;
69
+ };
70
+ declare const V4_ACTION_CONSTANTS: {
71
+ readonly OPEN_DELTA: 0n;
72
+ readonly MSG_SENDER: "0x0000000000000000000000000000000000000001";
73
+ readonly ADDRESS_THIS: "0x0000000000000000000000000000000000000002";
74
+ };
75
+ type V4Action = (typeof V4_ACTIONS)[keyof typeof V4_ACTIONS];
76
+ type V4BigintIsh = BigintIsh | bigint;
77
+ interface V4PositionConfig {
78
+ readonly poolKey: V4PoolKey;
79
+ readonly tickLower: number;
80
+ readonly tickUpper: number;
81
+ }
82
+ interface V4PlannerPlan {
83
+ readonly action: V4Action;
84
+ readonly params: readonly V4PlannerParam[];
85
+ }
86
+ type V4PlannerParam = V4PositionConfig | TronAddress | `0x${string}` | V4BigintIsh | number | boolean;
87
+ interface EncodeV4MintPositionPayloadParams {
88
+ readonly positionConfig: V4PositionConfig;
89
+ readonly liquidity: V4BigintIsh;
90
+ readonly amount0Max: V4BigintIsh;
91
+ readonly amount1Max: V4BigintIsh;
92
+ readonly owner: TronAddress;
93
+ readonly sweepRecipient?: TronAddress;
94
+ readonly hookData?: string;
95
+ }
96
+ interface EncodeV4IncreaseLiquidityPayloadParams {
97
+ readonly poolKey: V4PoolKey;
98
+ readonly tokenId: V4BigintIsh;
99
+ readonly liquidity: V4BigintIsh;
100
+ readonly amount0Max: V4BigintIsh;
101
+ readonly amount1Max: V4BigintIsh;
102
+ readonly sweepRecipient?: TronAddress;
103
+ readonly hookData?: string;
104
+ }
105
+ interface EncodeV4DecreaseLiquidityPayloadParams {
106
+ readonly poolKey: V4PoolKey;
107
+ readonly tokenId: V4BigintIsh;
108
+ readonly liquidity: V4BigintIsh;
109
+ readonly amount0Min: V4BigintIsh;
110
+ readonly amount1Min: V4BigintIsh;
111
+ readonly recipient: TronAddress;
112
+ readonly hookData?: string;
113
+ readonly settlementMode?: 'take-pair' | 'close-currency';
114
+ }
115
+ interface EncodeV4CollectPayloadParams {
116
+ readonly poolKey: V4PoolKey;
117
+ readonly recipient: TronAddress;
118
+ }
119
+ declare function encodeV4Actions(plans: readonly V4PlannerPlan[]): `0x${string}`;
120
+ declare function encodeV4ActionParams(plans: readonly V4PlannerPlan[]): readonly `0x${string}`[];
121
+ declare function encodeV4ActionsPlanner(plans: readonly V4PlannerPlan[]): `0x${string}`;
122
+ declare function encodeV4MintPositionPlannerPayload(params: EncodeV4MintPositionPayloadParams): `0x${string}`;
123
+ declare function encodeV4IncreaseLiquidityPlannerPayload(params: EncodeV4IncreaseLiquidityPayloadParams): `0x${string}`;
124
+ declare function encodeV4DecreaseLiquidityPlannerPayload(params: EncodeV4DecreaseLiquidityPayloadParams): `0x${string}`;
125
+ declare function encodeV4CollectPlannerPayload(params: EncodeV4CollectPayloadParams): `0x${string}`;
126
+
127
+ declare const V4_POSITION_MANAGER_SELECTORS: {
128
+ readonly initializePool: "initializePool((address,address,address,uint24,bytes32),uint160)";
129
+ readonly modifyLiquidities: "modifyLiquidities(bytes,uint256)";
130
+ readonly multicall: "multicall(bytes[])";
131
+ };
132
+ interface V4ActionOptions {
133
+ readonly network: Network;
134
+ readonly positionManager?: TronAddress;
135
+ readonly feeLimit?: number;
136
+ readonly callValue?: bigint;
137
+ readonly id?: string;
138
+ readonly metadata?: Record<string, unknown>;
139
+ readonly tokenRequirements?: readonly TokenRequirement[];
140
+ }
141
+ interface BuildV4InitializePoolActionParams extends V4ActionOptions {
142
+ readonly poolKey: V4PoolKey;
143
+ readonly sqrtPriceX96: BigintIsh;
144
+ }
145
+ interface BuildV4ModifyLiquiditiesActionParams extends V4ActionOptions {
146
+ readonly payload: string;
147
+ readonly deadline: V4BigintIsh;
148
+ }
149
+ interface BuildV4MulticallActionParams extends V4ActionOptions {
150
+ readonly calls: readonly string[];
151
+ }
152
+ /** A signed Permit2 allowance to be forwarded by the V4 PositionManager multicall. */
153
+ interface V4Permit2Signature {
154
+ readonly details: {
155
+ readonly token: TronAddress | string;
156
+ readonly amount: BigintIsh;
157
+ readonly expiration: BigintIsh;
158
+ readonly nonce: BigintIsh;
159
+ };
160
+ readonly spender: TronAddress | string;
161
+ readonly sigDeadline: BigintIsh;
162
+ readonly signature: string;
163
+ }
164
+ interface BuildV4MintPositionActionParams extends V4ActionOptions {
165
+ readonly positionConfig: V4PositionConfig;
166
+ readonly liquidity: V4BigintIsh;
167
+ readonly amount0Max: V4BigintIsh;
168
+ readonly amount1Max: V4BigintIsh;
169
+ readonly owner: TronAddress;
170
+ readonly deadline: V4BigintIsh;
171
+ readonly sweepRecipient?: TronAddress;
172
+ readonly hookData?: string;
173
+ }
174
+ interface BuildV4IncreaseLiquidityActionParams extends V4ActionOptions {
175
+ readonly poolKey: V4PoolKey;
176
+ readonly tokenId: V4BigintIsh;
177
+ readonly liquidity: V4BigintIsh;
178
+ readonly amount0Max: V4BigintIsh;
179
+ readonly amount1Max: V4BigintIsh;
180
+ readonly deadline: V4BigintIsh;
181
+ readonly sweepRecipient?: TronAddress;
182
+ readonly hookData?: string;
183
+ }
184
+ interface BuildV4DecreaseLiquidityActionParams extends V4ActionOptions {
185
+ readonly poolKey: V4PoolKey;
186
+ readonly tokenId: V4BigintIsh;
187
+ readonly liquidity: V4BigintIsh;
188
+ readonly amount0Min: V4BigintIsh;
189
+ readonly amount1Min: V4BigintIsh;
190
+ readonly recipient: TronAddress;
191
+ readonly deadline: V4BigintIsh;
192
+ readonly hookData?: string;
193
+ readonly settlementMode?: 'take-pair' | 'close-currency';
194
+ }
195
+ interface BuildV4CollectActionParams extends V4ActionOptions {
196
+ readonly poolKey: V4PoolKey;
197
+ readonly tokenId: V4BigintIsh;
198
+ readonly recipient: TronAddress;
199
+ readonly deadline: V4BigintIsh;
200
+ readonly hookData?: string;
201
+ readonly settlementMode?: 'take-pair' | 'close-currency';
202
+ }
203
+ type V4TokenRequirement = TokenRequirement;
204
+ /**
205
+ * Encodes the PositionManager's Permit2Forward.permit call for use as one item
206
+ * in PositionManager.multicall(bytes[]). This matches the legacy V4 add flow:
207
+ * typed-data signing happens off-chain, then the signed permit is forwarded in
208
+ * the final liquidity transaction.
209
+ */
210
+ declare function encodeV4Permit2ForwardCall(input: {
211
+ readonly owner: TronAddress | string;
212
+ readonly permit: V4Permit2Signature;
213
+ }): `0x${string}`;
214
+ /** Encodes the two V4 position-manager actions that may be nested in multicall(bytes[]). */
215
+ declare function encodeV4ContractCallAction(action: ContractCallAction): `0x${string}`;
216
+ declare function buildV4InitializePoolAction(params: BuildV4InitializePoolActionParams): ContractCallAction;
217
+ declare function buildV4ModifyLiquiditiesAction(params: BuildV4ModifyLiquiditiesActionParams): ContractCallAction;
218
+ declare function buildV4MulticallAction(params: BuildV4MulticallActionParams): ContractCallAction;
219
+ declare function buildV4MintPositionAction(params: BuildV4MintPositionActionParams): ContractCallAction;
220
+ declare function buildV4IncreaseLiquidityAction(params: BuildV4IncreaseLiquidityActionParams): ContractCallAction;
221
+ declare function buildV4DecreaseLiquidityAction(params: BuildV4DecreaseLiquidityActionParams): ContractCallAction;
222
+ declare function buildV4CollectAction(params: BuildV4CollectActionParams): ContractCallAction;
223
+
224
+ declare const V4_HOOKS_REGISTRATION_OFFSET: Record<keyof V4HooksRegistration, number>;
225
+ declare function encodeV4HooksRegistration(hooksRegistration?: V4HooksRegistration): number;
226
+ declare function decodeV4HooksRegistration(registration: number): V4HooksRegistration;
227
+ declare function encodeV4PoolParameters(params: V4PoolParameterConfig): V4PoolParameters;
228
+ declare function decodeV4PoolParameters(encoded: V4PoolParameters | string): V4PoolParameterConfig;
229
+
230
+ declare function encodeV4PoolKey(poolKey: V4PoolKey): `0x${string}`;
231
+ declare function computeV4PoolId(poolKey: V4PoolKey): V4PoolId;
232
+
233
+ declare const V4_DYNAMIC_FEE_FLAG = 8388608;
234
+ declare const V4_UINT24_MAX = 16777215;
235
+ declare const V4_MAX_STATIC_FEE = 1000000;
236
+ declare const V4_EMPTY_PARAMETERS: V4PoolParameters;
237
+ interface CreateV4PoolKeyInput {
238
+ readonly network: Network;
239
+ readonly currencyA: TronAddress | string;
240
+ readonly currencyB: TronAddress | string;
241
+ readonly hooks?: TronAddress | string;
242
+ readonly fee: number;
243
+ readonly parameters?: V4PoolParameters | string;
244
+ }
245
+ declare function isV4DynamicFee(fee: number): boolean;
246
+ declare function getV4StaticFee(fee: number): number;
247
+ declare function assertV4PoolParameters(value: string, label?: string): V4PoolParameters;
248
+ declare function assertV4PoolId(value: string, label?: string): V4PoolId;
249
+ declare function assertV4Fee(fee: number): number;
250
+ declare function assertV4HookFeeCombination(hooks: TronAddress, fee: number): void;
251
+ declare function normalizeV4PoolKey(input: V4PoolKey): V4PoolKey;
252
+ declare function createV4PoolKey(input: CreateV4PoolKeyInput): V4PoolKey;
253
+ declare function toV4PoolKeyTuple(poolKey: V4PoolKey): ContractParameter;
254
+
255
+ interface V4ContractReadSpec {
256
+ readonly target: TronAddress;
257
+ readonly functionSelector: string;
258
+ readonly parameters?: readonly ContractParameter[];
259
+ readonly abiFunction?: V4ReadAbiFunction;
260
+ readonly metadata?: Record<string, unknown>;
261
+ }
262
+ interface V4ReadAbiParameter {
263
+ readonly name?: string;
264
+ readonly type: string;
265
+ readonly components?: readonly V4ReadAbiParameter[];
266
+ }
267
+ interface V4ReadAbiFunction {
268
+ readonly type: 'function';
269
+ readonly name: string;
270
+ readonly stateMutability: 'view';
271
+ readonly inputs: readonly V4ReadAbiParameter[];
272
+ readonly outputs: readonly V4ReadAbiParameter[];
273
+ }
274
+ declare const V4_POSITION_MANAGER_READ_SELECTORS: {
275
+ readonly ownerOf: "ownerOf(uint256)";
276
+ readonly getApproved: "getApproved(uint256)";
277
+ readonly isApprovedForAll: "isApprovedForAll(address,address)";
278
+ readonly getPoolAndPositionInfo: "getPoolAndPositionInfo(uint256)";
279
+ readonly getPositionLiquidity: "getPositionLiquidity(uint256)";
280
+ };
281
+ declare const V4_POOL_MANAGER_READ_SELECTORS: {
282
+ readonly getSlot0: "getSlot0(bytes32)";
283
+ readonly getLiquidity: "getLiquidity(bytes32)";
284
+ readonly poolIdToPoolKey: "poolIdToPoolKey(bytes32)";
285
+ readonly getFeeGrowthGlobals: "getFeeGrowthGlobals(bytes32)";
286
+ };
287
+ interface V4ReadOptions {
288
+ readonly network: Network;
289
+ readonly positionManager?: TronAddress;
290
+ readonly poolManager?: TronAddress;
291
+ }
292
+ interface BuildV4PositionReadParams extends V4ReadOptions {
293
+ readonly tokenId: BigintIsh;
294
+ }
295
+ interface BuildV4PoolReadParams extends V4ReadOptions {
296
+ readonly poolId: V4PoolId | string;
297
+ }
298
+ interface BuildV4PositionFeesReadParams extends V4ReadOptions {
299
+ readonly tokenId: BigintIsh;
300
+ readonly poolId: V4PoolId | string;
301
+ readonly tickLower: number;
302
+ readonly tickUpper: number;
303
+ readonly lpFeeHelper?: TronAddress;
304
+ }
305
+ interface BuildV4PositionApprovalReadParams extends V4ReadOptions {
306
+ readonly owner: TronAddress;
307
+ readonly operator: TronAddress;
308
+ }
309
+ interface BuildV4HookRegistrationBitmapReadParams {
310
+ readonly network: Network;
311
+ readonly hooks: TronAddress;
312
+ }
313
+ declare function buildV4PoolSlot0Read(params: BuildV4PoolReadParams): V4ContractReadSpec;
314
+ declare function buildV4PoolLiquidityRead(params: BuildV4PoolReadParams): V4ContractReadSpec;
315
+ declare function buildV4PoolKeyRead(params: BuildV4PoolReadParams): V4ContractReadSpec;
316
+ declare function buildV4PoolFeeGrowthGlobalsRead(params: BuildV4PoolReadParams): V4ContractReadSpec;
317
+ declare function buildV4HookRegistrationBitmapRead(params: BuildV4HookRegistrationBitmapReadParams): V4ContractReadSpec;
318
+ declare function buildV4PoolStateReads(params: BuildV4PoolReadParams): readonly V4ContractReadSpec[];
319
+ declare function buildV4PositionOwnerRead(params: BuildV4PositionReadParams): V4ContractReadSpec;
320
+ declare function buildV4PositionApprovedRead(params: BuildV4PositionReadParams): V4ContractReadSpec;
321
+ declare function buildV4PoolAndPositionInfoRead(params: BuildV4PositionReadParams): V4ContractReadSpec;
322
+ declare function buildV4PositionLiquidityRead(params: BuildV4PositionReadParams): V4ContractReadSpec;
323
+ declare function buildV4PositionApprovalForAllRead(params: BuildV4PositionApprovalReadParams): V4ContractReadSpec;
324
+ declare function buildV4PositionFeesRead(params: BuildV4PositionFeesReadParams): V4ContractReadSpec;
325
+ declare function buildV4PositionReads(params: BuildV4PositionReadParams): readonly V4ContractReadSpec[];
326
+
327
+ export { type BuildV4CollectActionParams, type BuildV4DecreaseLiquidityActionParams, type BuildV4HookRegistrationBitmapReadParams, type BuildV4IncreaseLiquidityActionParams, type BuildV4InitializePoolActionParams, type BuildV4MintPositionActionParams, type BuildV4ModifyLiquiditiesActionParams, type BuildV4MulticallActionParams, type BuildV4PoolReadParams, type BuildV4PositionApprovalReadParams, type BuildV4PositionFeesReadParams, type BuildV4PositionReadParams, type CreateV4PoolKeyInput, type EncodeV4CollectPayloadParams, type EncodeV4DecreaseLiquidityPayloadParams, type EncodeV4IncreaseLiquidityPayloadParams, type EncodeV4MintPositionPayloadParams, type V4Action, type V4ActionOptions, type V4BigintIsh, type V4ContractReadSpec, type V4HooksRegistration, type V4Permit2Signature, type V4PlannerParam, type V4PlannerPlan, type V4PoolId, type V4PoolKey, type V4PoolParameterConfig, type V4PoolParameters, type V4PoolState, type V4Position, type V4PositionConfig, type V4PositionKey, type V4ReadOptions, type V4TickRange, type V4TokenRequirement, V4_ACTIONS, V4_ACTION_CONSTANTS, V4_DYNAMIC_FEE_FLAG, V4_EMPTY_PARAMETERS, V4_HOOKS_REGISTRATION_OFFSET, V4_MAX_STATIC_FEE, V4_POOL_MANAGER_READ_SELECTORS, V4_POSITION_MANAGER_READ_SELECTORS, V4_POSITION_MANAGER_SELECTORS, V4_UINT24_MAX, assertV4Fee, assertV4HookFeeCombination, assertV4PoolId, assertV4PoolParameters, buildV4CollectAction, buildV4DecreaseLiquidityAction, buildV4HookRegistrationBitmapRead, buildV4IncreaseLiquidityAction, buildV4InitializePoolAction, buildV4MintPositionAction, buildV4ModifyLiquiditiesAction, buildV4MulticallAction, buildV4PoolAndPositionInfoRead, buildV4PoolFeeGrowthGlobalsRead, buildV4PoolKeyRead, buildV4PoolLiquidityRead, buildV4PoolSlot0Read, buildV4PoolStateReads, buildV4PositionApprovalForAllRead, buildV4PositionApprovedRead, buildV4PositionFeesRead, buildV4PositionLiquidityRead, buildV4PositionOwnerRead, buildV4PositionReads, computeV4PoolId, createV4PoolKey, decodeV4HooksRegistration, decodeV4PoolParameters, encodeV4ActionParams, encodeV4Actions, encodeV4ActionsPlanner, encodeV4CollectPlannerPayload, encodeV4ContractCallAction, encodeV4DecreaseLiquidityPlannerPayload, encodeV4HooksRegistration, encodeV4IncreaseLiquidityPlannerPayload, encodeV4MintPositionPlannerPayload, encodeV4Permit2ForwardCall, encodeV4PoolKey, encodeV4PoolParameters, getV4StaticFee, isV4DynamicFee, normalizeV4PoolKey, toV4PoolKeyTuple, tronAddressToEvmHex };