@sun-protocol/sun-sdk-launchpad 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.
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # @sun-protocol/sun-sdk-launchpad
2
+
3
+ Runtime-neutral state, quote, read, and transaction action primitives for pre-launch SunPump tokens.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @sun-protocol/sun-sdk-launchpad
9
+ ```
10
+
11
+ ## Example
12
+
13
+ ```ts
14
+ import {
15
+ getLaunchpadTokenState,
16
+ quoteLaunchpadBuyExactTrx,
17
+ } from '@sun-protocol/sun-sdk-launchpad'
18
+
19
+ const state = await getLaunchpadTokenState(runtime, token)
20
+ const quote = await quoteLaunchpadBuyExactTrx(runtime, token, '1000000')
21
+ ```
22
+
23
+ Primary exports cover LaunchPad token state, virtual-pool reads, buy and sell quotes, balance and allowance reads, and builders for purchase, sale, and approval actions.
24
+
25
+ This package handles only the pre-launch LaunchPad contract. It does not decide whether a token has launched, call SunPump HTTP APIs, sign, or broadcast. Use `@sun-protocol/sun-sdk-protocols` for state-aware workflows that switch to SunSwap V2 after launch.
26
+
27
+ Requires Node.js 20 or a compatible JavaScript runtime.
28
+
29
+ [Full API documentation](https://github.com/sun-protocol/sun-sdk/blob/main/docs/sdk/api/launchpad.md)
package/dist/index.cjs ADDED
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ DEFAULT_SLIPPAGE_BIPS: () => DEFAULT_SLIPPAGE_BIPS,
24
+ LaunchpadTokenState: () => LaunchpadTokenState,
25
+ MAX_UINT256: () => MAX_UINT256,
26
+ SELECTOR_GET_PRICE: () => SELECTOR_GET_PRICE,
27
+ SELECTOR_GET_TOKEN_STATE: () => SELECTOR_GET_TOKEN_STATE,
28
+ SELECTOR_PURCHASE: () => SELECTOR_PURCHASE,
29
+ SELECTOR_QUOTE_BUY_EXACT_TOKEN: () => SELECTOR_QUOTE_BUY_EXACT_TOKEN,
30
+ SELECTOR_QUOTE_BUY_EXACT_TRX: () => SELECTOR_QUOTE_BUY_EXACT_TRX,
31
+ SELECTOR_QUOTE_SELL_EXACT_TOKEN: () => SELECTOR_QUOTE_SELL_EXACT_TOKEN,
32
+ SELECTOR_QUOTE_SELL_EXACT_TRX: () => SELECTOR_QUOTE_SELL_EXACT_TRX,
33
+ SELECTOR_SALE: () => SELECTOR_SALE,
34
+ SELECTOR_TRC20_ALLOWANCE: () => SELECTOR_TRC20_ALLOWANCE,
35
+ SELECTOR_TRC20_BALANCE_OF: () => SELECTOR_TRC20_BALANCE_OF,
36
+ SELECTOR_VIRTUAL_POOLS: () => SELECTOR_VIRTUAL_POOLS,
37
+ applySlippageMax: () => applySlippageMax,
38
+ applySlippageMin: () => applySlippageMin,
39
+ createLaunchpadApproveAction: () => createLaunchpadApproveAction,
40
+ createLaunchpadBuyAction: () => createLaunchpadBuyAction,
41
+ createLaunchpadSellAction: () => createLaunchpadSellAction,
42
+ getLaunchpadTokenBalance: () => getLaunchpadTokenBalance,
43
+ getLaunchpadTokenInfo: () => getLaunchpadTokenInfo,
44
+ getLaunchpadTokenPrice: () => getLaunchpadTokenPrice,
45
+ getLaunchpadTokenState: () => getLaunchpadTokenState,
46
+ getLaunchpadVirtualPool: () => getLaunchpadVirtualPool,
47
+ isLaunchpadTokenLaunched: () => isLaunchpadTokenLaunched,
48
+ quoteLaunchpadBuyExactToken: () => quoteLaunchpadBuyExactToken,
49
+ quoteLaunchpadBuyExactTrx: () => quoteLaunchpadBuyExactTrx,
50
+ quoteLaunchpadSellExactToken: () => quoteLaunchpadSellExactToken,
51
+ quoteLaunchpadSellExactTrx: () => quoteLaunchpadSellExactTrx,
52
+ readLaunchpadAllowance: () => readLaunchpadAllowance
53
+ });
54
+ module.exports = __toCommonJS(index_exports);
55
+
56
+ // src/abi.ts
57
+ var GET_TOKEN_STATE_ABI = {
58
+ type: "function",
59
+ name: "getTokenState",
60
+ stateMutability: "view",
61
+ inputs: [{ name: "token", type: "address" }],
62
+ outputs: [{ name: "state", type: "uint256" }]
63
+ };
64
+ var GET_TOKEN_PRICE_ABI = {
65
+ type: "function",
66
+ name: "getPrice",
67
+ stateMutability: "view",
68
+ inputs: [{ name: "token", type: "address" }],
69
+ outputs: [{ name: "price", type: "uint256" }]
70
+ };
71
+ var VIRTUAL_POOLS_ABI = {
72
+ type: "function",
73
+ name: "virtualPools",
74
+ stateMutability: "view",
75
+ inputs: [{ name: "token", type: "address" }],
76
+ outputs: [
77
+ { name: "trxReserve", type: "uint256" },
78
+ { name: "tokenReserve", type: "uint256" },
79
+ { name: "launched", type: "bool" }
80
+ ]
81
+ };
82
+ var QUOTE_BUY_EXACT_TRX_ABI = {
83
+ type: "function",
84
+ name: "getTokenAmountByPurchaseWithFee",
85
+ stateMutability: "view",
86
+ inputs: [{ name: "token", type: "address" }, { name: "trxAmount", type: "uint256" }],
87
+ outputs: [{ name: "tokenAmount", type: "uint256" }, { name: "fee", type: "uint256" }]
88
+ };
89
+ var QUOTE_BUY_EXACT_TOKEN_ABI = {
90
+ type: "function",
91
+ name: "getExactTokenAmountForPurchaseWithFee",
92
+ stateMutability: "view",
93
+ inputs: [{ name: "token", type: "address" }, { name: "tokenAmount", type: "uint256" }],
94
+ outputs: [{ name: "trxAmount", type: "uint256" }, { name: "fee", type: "uint256" }]
95
+ };
96
+ var QUOTE_SELL_EXACT_TOKEN_ABI = {
97
+ type: "function",
98
+ name: "getTrxAmountBySaleWithFee",
99
+ stateMutability: "view",
100
+ inputs: [{ name: "token", type: "address" }, { name: "tokenAmount", type: "uint256" }],
101
+ outputs: [{ name: "trxAmount", type: "uint256" }, { name: "fee", type: "uint256" }]
102
+ };
103
+ var QUOTE_SELL_EXACT_TRX_ABI = {
104
+ type: "function",
105
+ name: "getExactTrxAmountForSaleWithFee",
106
+ stateMutability: "view",
107
+ inputs: [{ name: "token", type: "address" }, { name: "trxAmount", type: "uint256" }],
108
+ outputs: [{ name: "tokenAmount", type: "uint256" }, { name: "fee", type: "uint256" }]
109
+ };
110
+ var TRC20_ALLOWANCE_ABI = {
111
+ type: "function",
112
+ name: "allowance",
113
+ stateMutability: "view",
114
+ inputs: [{ name: "owner", type: "address" }, { name: "spender", type: "address" }],
115
+ outputs: [{ name: "amount", type: "uint256" }]
116
+ };
117
+ var TRC20_BALANCE_OF_ABI = {
118
+ type: "function",
119
+ name: "balanceOf",
120
+ stateMutability: "view",
121
+ inputs: [{ name: "owner", type: "address" }],
122
+ outputs: [{ name: "balance", type: "uint256" }]
123
+ };
124
+
125
+ // src/selectors.ts
126
+ var SELECTOR_GET_TOKEN_STATE = "getTokenState(address)";
127
+ var SELECTOR_GET_PRICE = "getPrice(address)";
128
+ var SELECTOR_VIRTUAL_POOLS = "virtualPools(address)";
129
+ var SELECTOR_QUOTE_BUY_EXACT_TRX = "getTokenAmountByPurchaseWithFee(address,uint256)";
130
+ var SELECTOR_QUOTE_BUY_EXACT_TOKEN = "getExactTokenAmountForPurchaseWithFee(address,uint256)";
131
+ var SELECTOR_QUOTE_SELL_EXACT_TOKEN = "getTrxAmountBySaleWithFee(address,uint256)";
132
+ var SELECTOR_QUOTE_SELL_EXACT_TRX = "getExactTrxAmountForSaleWithFee(address,uint256)";
133
+ var SELECTOR_PURCHASE = "purchaseToken(address,uint256)";
134
+ var SELECTOR_SALE = "saleToken(address,uint256,uint256)";
135
+ var SELECTOR_TRC20_ALLOWANCE = "allowance(address,address)";
136
+ var SELECTOR_TRC20_BALANCE_OF = "balanceOf(address)";
137
+ var DEFAULT_SLIPPAGE_BIPS = 500;
138
+ var MAX_UINT256 = (2n ** 256n - 1n).toString();
139
+
140
+ // src/allowance.ts
141
+ async function readLaunchpadAllowance(runtime, token, owner, spender) {
142
+ const result = await runtime.readContract({
143
+ target: token,
144
+ functionSelector: SELECTOR_TRC20_ALLOWANCE,
145
+ parameters: [
146
+ { type: "address", value: owner },
147
+ { type: "address", value: spender }
148
+ ],
149
+ abiFunction: TRC20_ALLOWANCE_ABI
150
+ });
151
+ return BigInt(result).toString();
152
+ }
153
+
154
+ // src/balance.ts
155
+ async function getLaunchpadTokenBalance(runtime, token, owner) {
156
+ const result = await runtime.readContract({
157
+ target: token,
158
+ functionSelector: SELECTOR_TRC20_BALANCE_OF,
159
+ parameters: [{ type: "address", value: owner }],
160
+ abiFunction: TRC20_BALANCE_OF_ABI
161
+ });
162
+ return BigInt(result).toString();
163
+ }
164
+
165
+ // src/buy.ts
166
+ var import_sun_sdk_core = require("@sun-protocol/sun-sdk-core");
167
+ function createLaunchpadBuyAction(params) {
168
+ return (0, import_sun_sdk_core.createContractCallAction)({
169
+ id: `launchpad-buy-${params.token}`,
170
+ target: params.launchpad,
171
+ functionSelector: SELECTOR_PURCHASE,
172
+ parameters: [
173
+ { type: "address", value: params.token },
174
+ { type: "uint256", value: params.minTokenOut }
175
+ ],
176
+ callValue: BigInt(params.trxAmount)
177
+ });
178
+ }
179
+
180
+ // src/quote.ts
181
+ function applySlippageMin(expected, slippageBips) {
182
+ return expected * BigInt(1e4 - slippageBips) / 10000n;
183
+ }
184
+ function applySlippageMax(expected, slippageBips) {
185
+ const numerator = expected * BigInt(1e4 + slippageBips);
186
+ return (numerator + 9999n) / 10000n;
187
+ }
188
+ function tupleValues(result) {
189
+ return Array.isArray(result) ? result : [result, 0];
190
+ }
191
+ function bigintValue(value) {
192
+ return BigInt(value === void 0 || value === null ? 0 : String(value)).toString();
193
+ }
194
+ async function quoteLaunchpadBuyExactTrx(runtime, token, trxAmount) {
195
+ const result = await runtime.readContract({
196
+ target: runtime.chain.contracts.launchpad,
197
+ functionSelector: SELECTOR_QUOTE_BUY_EXACT_TRX,
198
+ parameters: [
199
+ { type: "address", value: token },
200
+ { type: "uint256", value: BigInt(trxAmount).toString() }
201
+ ],
202
+ abiFunction: QUOTE_BUY_EXACT_TRX_ABI
203
+ });
204
+ const values = tupleValues(result);
205
+ return {
206
+ tokenAmount: bigintValue(values[0]),
207
+ fee: bigintValue(values[1])
208
+ };
209
+ }
210
+ async function quoteLaunchpadBuyExactToken(runtime, token, tokenAmount) {
211
+ const result = await runtime.readContract({
212
+ target: runtime.chain.contracts.launchpad,
213
+ functionSelector: SELECTOR_QUOTE_BUY_EXACT_TOKEN,
214
+ parameters: [
215
+ { type: "address", value: token },
216
+ { type: "uint256", value: BigInt(tokenAmount).toString() }
217
+ ],
218
+ abiFunction: QUOTE_BUY_EXACT_TOKEN_ABI
219
+ });
220
+ const values = tupleValues(result);
221
+ return {
222
+ trxAmount: bigintValue(values[0]),
223
+ fee: bigintValue(values[1])
224
+ };
225
+ }
226
+ async function quoteLaunchpadSellExactToken(runtime, token, tokenAmount) {
227
+ const result = await runtime.readContract({
228
+ target: runtime.chain.contracts.launchpad,
229
+ functionSelector: SELECTOR_QUOTE_SELL_EXACT_TOKEN,
230
+ parameters: [
231
+ { type: "address", value: token },
232
+ { type: "uint256", value: BigInt(tokenAmount).toString() }
233
+ ],
234
+ abiFunction: QUOTE_SELL_EXACT_TOKEN_ABI
235
+ });
236
+ const values = tupleValues(result);
237
+ return {
238
+ trxAmount: bigintValue(values[0]),
239
+ fee: bigintValue(values[1])
240
+ };
241
+ }
242
+ async function quoteLaunchpadSellExactTrx(runtime, token, trxAmount) {
243
+ const result = await runtime.readContract({
244
+ target: runtime.chain.contracts.launchpad,
245
+ functionSelector: SELECTOR_QUOTE_SELL_EXACT_TRX,
246
+ parameters: [
247
+ { type: "address", value: token },
248
+ { type: "uint256", value: BigInt(trxAmount).toString() }
249
+ ],
250
+ abiFunction: QUOTE_SELL_EXACT_TRX_ABI
251
+ });
252
+ const values = tupleValues(result);
253
+ return {
254
+ tokenAmount: bigintValue(values[0]),
255
+ fee: bigintValue(values[1])
256
+ };
257
+ }
258
+
259
+ // src/sell.ts
260
+ var import_sun_sdk_core2 = require("@sun-protocol/sun-sdk-core");
261
+ function createLaunchpadApproveAction(token, spender, amount = MAX_UINT256) {
262
+ return (0, import_sun_sdk_core2.createApproveAction)({
263
+ id: `launchpad-approve-${token}`,
264
+ target: token,
265
+ spender,
266
+ amount
267
+ });
268
+ }
269
+ function createLaunchpadSellAction(params) {
270
+ return (0, import_sun_sdk_core2.createContractCallAction)({
271
+ id: `launchpad-sell-${params.token}`,
272
+ target: params.launchpad,
273
+ functionSelector: SELECTOR_SALE,
274
+ parameters: [
275
+ { type: "address", value: params.token },
276
+ { type: "uint256", value: params.tokenAmount },
277
+ { type: "uint256", value: params.minTrxOut }
278
+ ]
279
+ });
280
+ }
281
+
282
+ // src/types.ts
283
+ var LaunchpadTokenState = /* @__PURE__ */ ((LaunchpadTokenState2) => {
284
+ LaunchpadTokenState2[LaunchpadTokenState2["NOT_EXIST"] = 0] = "NOT_EXIST";
285
+ LaunchpadTokenState2[LaunchpadTokenState2["TRADING"] = 1] = "TRADING";
286
+ LaunchpadTokenState2[LaunchpadTokenState2["READY_TO_LAUNCH"] = 2] = "READY_TO_LAUNCH";
287
+ LaunchpadTokenState2[LaunchpadTokenState2["LAUNCHED"] = 3] = "LAUNCHED";
288
+ return LaunchpadTokenState2;
289
+ })(LaunchpadTokenState || {});
290
+
291
+ // src/state.ts
292
+ async function getLaunchpadTokenState(runtime, token) {
293
+ const result = await runtime.readContract({
294
+ target: runtime.chain.contracts.launchpad,
295
+ functionSelector: SELECTOR_GET_TOKEN_STATE,
296
+ parameters: [{ type: "address", value: token }],
297
+ abiFunction: GET_TOKEN_STATE_ABI
298
+ });
299
+ return Number(result);
300
+ }
301
+ async function getLaunchpadTokenPrice(runtime, token) {
302
+ const result = await runtime.readContract({
303
+ target: runtime.chain.contracts.launchpad,
304
+ functionSelector: SELECTOR_GET_PRICE,
305
+ parameters: [{ type: "address", value: token }],
306
+ abiFunction: GET_TOKEN_PRICE_ABI
307
+ });
308
+ return BigInt(result).toString();
309
+ }
310
+ async function getLaunchpadVirtualPool(runtime, token) {
311
+ const result = await runtime.readContract({
312
+ target: runtime.chain.contracts.launchpad,
313
+ functionSelector: SELECTOR_VIRTUAL_POOLS,
314
+ parameters: [{ type: "address", value: token }],
315
+ abiFunction: VIRTUAL_POOLS_ABI
316
+ });
317
+ const values = Array.isArray(result) ? result : [result];
318
+ const rawLaunched = values[2];
319
+ return {
320
+ trxReserve: BigInt(values[0] ?? 0).toString(),
321
+ tokenReserve: BigInt(values[1] ?? 0).toString(),
322
+ launched: rawLaunched === true || rawLaunched === 1 || rawLaunched === "true"
323
+ };
324
+ }
325
+ async function isLaunchpadTokenLaunched(runtime, token) {
326
+ return await getLaunchpadTokenState(runtime, token) === 3 /* LAUNCHED */;
327
+ }
328
+ async function getLaunchpadTokenInfo(runtime, token) {
329
+ const state = await getLaunchpadTokenState(runtime, token);
330
+ let price = "0";
331
+ let trxReserve = "0";
332
+ let tokenReserve = "0";
333
+ let launched = state === 3 /* LAUNCHED */;
334
+ if (state === 1 /* TRADING */ || state === 3 /* LAUNCHED */) {
335
+ try {
336
+ const pool = await getLaunchpadVirtualPool(runtime, token);
337
+ trxReserve = pool.trxReserve;
338
+ tokenReserve = pool.tokenReserve;
339
+ launched = pool.launched;
340
+ } catch {
341
+ }
342
+ if (state === 1 /* TRADING */) {
343
+ try {
344
+ price = await getLaunchpadTokenPrice(runtime, token);
345
+ } catch {
346
+ }
347
+ }
348
+ }
349
+ return { tokenAddress: token, state, price, launched, trxReserve, tokenReserve };
350
+ }
351
+ // Annotate the CommonJS export names for ESM import in node:
352
+ 0 && (module.exports = {
353
+ DEFAULT_SLIPPAGE_BIPS,
354
+ LaunchpadTokenState,
355
+ MAX_UINT256,
356
+ SELECTOR_GET_PRICE,
357
+ SELECTOR_GET_TOKEN_STATE,
358
+ SELECTOR_PURCHASE,
359
+ SELECTOR_QUOTE_BUY_EXACT_TOKEN,
360
+ SELECTOR_QUOTE_BUY_EXACT_TRX,
361
+ SELECTOR_QUOTE_SELL_EXACT_TOKEN,
362
+ SELECTOR_QUOTE_SELL_EXACT_TRX,
363
+ SELECTOR_SALE,
364
+ SELECTOR_TRC20_ALLOWANCE,
365
+ SELECTOR_TRC20_BALANCE_OF,
366
+ SELECTOR_VIRTUAL_POOLS,
367
+ applySlippageMax,
368
+ applySlippageMin,
369
+ createLaunchpadApproveAction,
370
+ createLaunchpadBuyAction,
371
+ createLaunchpadSellAction,
372
+ getLaunchpadTokenBalance,
373
+ getLaunchpadTokenInfo,
374
+ getLaunchpadTokenPrice,
375
+ getLaunchpadTokenState,
376
+ getLaunchpadVirtualPool,
377
+ isLaunchpadTokenLaunched,
378
+ quoteLaunchpadBuyExactToken,
379
+ quoteLaunchpadBuyExactTrx,
380
+ quoteLaunchpadSellExactToken,
381
+ quoteLaunchpadSellExactTrx,
382
+ readLaunchpadAllowance
383
+ });
384
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/abi.ts","../src/selectors.ts","../src/allowance.ts","../src/balance.ts","../src/buy.ts","../src/quote.ts","../src/sell.ts","../src/types.ts","../src/state.ts"],"sourcesContent":["export * from './allowance.js'\nexport * from './balance.js'\nexport * from './buy.js'\nexport * from './selectors.js'\nexport * from './quote.js'\nexport * from './sell.js'\nexport * from './state.js'\nexport * from './types.js'\n","export const GET_TOKEN_STATE_ABI = {\n type: 'function',\n name: 'getTokenState',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }],\n outputs: [{ name: 'state', type: 'uint256' }],\n} as const\n\nexport const GET_TOKEN_PRICE_ABI = {\n type: 'function',\n name: 'getPrice',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }],\n outputs: [{ name: 'price', type: 'uint256' }],\n} as const\n\nexport const VIRTUAL_POOLS_ABI = {\n type: 'function',\n name: 'virtualPools',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }],\n outputs: [\n { name: 'trxReserve', type: 'uint256' },\n { name: 'tokenReserve', type: 'uint256' },\n { name: 'launched', type: 'bool' },\n ],\n} as const\n\nexport const QUOTE_BUY_EXACT_TRX_ABI = {\n type: 'function',\n name: 'getTokenAmountByPurchaseWithFee',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }, { name: 'trxAmount', type: 'uint256' }],\n outputs: [{ name: 'tokenAmount', type: 'uint256' }, { name: 'fee', type: 'uint256' }],\n} as const\n\nexport const QUOTE_BUY_EXACT_TOKEN_ABI = {\n type: 'function',\n name: 'getExactTokenAmountForPurchaseWithFee',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }, { name: 'tokenAmount', type: 'uint256' }],\n outputs: [{ name: 'trxAmount', type: 'uint256' }, { name: 'fee', type: 'uint256' }],\n} as const\n\nexport const QUOTE_SELL_EXACT_TOKEN_ABI = {\n type: 'function',\n name: 'getTrxAmountBySaleWithFee',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }, { name: 'tokenAmount', type: 'uint256' }],\n outputs: [{ name: 'trxAmount', type: 'uint256' }, { name: 'fee', type: 'uint256' }],\n} as const\n\nexport const QUOTE_SELL_EXACT_TRX_ABI = {\n type: 'function',\n name: 'getExactTrxAmountForSaleWithFee',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }, { name: 'trxAmount', type: 'uint256' }],\n outputs: [{ name: 'tokenAmount', type: 'uint256' }, { name: 'fee', type: 'uint256' }],\n} as const\n\nexport const TRC20_ALLOWANCE_ABI = {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }],\n outputs: [{ name: 'amount', type: 'uint256' }],\n} as const\n\nexport const TRC20_BALANCE_OF_ABI = {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256' }],\n} as const\n","export const SELECTOR_GET_TOKEN_STATE = 'getTokenState(address)'\nexport const SELECTOR_GET_PRICE = 'getPrice(address)'\nexport const SELECTOR_VIRTUAL_POOLS = 'virtualPools(address)'\nexport const SELECTOR_QUOTE_BUY_EXACT_TRX = 'getTokenAmountByPurchaseWithFee(address,uint256)'\nexport const SELECTOR_QUOTE_BUY_EXACT_TOKEN = 'getExactTokenAmountForPurchaseWithFee(address,uint256)'\nexport const SELECTOR_QUOTE_SELL_EXACT_TOKEN = 'getTrxAmountBySaleWithFee(address,uint256)'\nexport const SELECTOR_QUOTE_SELL_EXACT_TRX = 'getExactTrxAmountForSaleWithFee(address,uint256)'\nexport const SELECTOR_PURCHASE = 'purchaseToken(address,uint256)'\nexport const SELECTOR_SALE = 'saleToken(address,uint256,uint256)'\nexport const SELECTOR_TRC20_ALLOWANCE = 'allowance(address,address)'\nexport const SELECTOR_TRC20_BALANCE_OF = 'balanceOf(address)'\nexport const DEFAULT_SLIPPAGE_BIPS = 500\nexport const MAX_UINT256 = (2n ** 256n - 1n).toString()\n","import type { TronAddress } from '@sun-protocol/sun-sdk-core'\nimport type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport { TRC20_ALLOWANCE_ABI } from './abi.js'\nimport { SELECTOR_TRC20_ALLOWANCE } from './selectors.js'\n\nexport async function readLaunchpadAllowance(\n runtime: Runtime,\n token: string,\n owner: string,\n spender: string,\n): Promise<string> {\n const result = await runtime.readContract<string | number | bigint>({\n target: token as TronAddress,\n functionSelector: SELECTOR_TRC20_ALLOWANCE,\n parameters: [\n { type: 'address', value: owner },\n { type: 'address', value: spender },\n ],\n abiFunction: TRC20_ALLOWANCE_ABI,\n })\n return BigInt(result).toString()\n}\n","import type { TronAddress } from '@sun-protocol/sun-sdk-core'\nimport type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport { TRC20_BALANCE_OF_ABI } from './abi.js'\nimport { SELECTOR_TRC20_BALANCE_OF } from './selectors.js'\n\nexport async function getLaunchpadTokenBalance(\n runtime: Runtime,\n token: string,\n owner: string,\n): Promise<string> {\n const result = await runtime.readContract<string | number | bigint>({\n target: token as TronAddress,\n functionSelector: SELECTOR_TRC20_BALANCE_OF,\n parameters: [{ type: 'address', value: owner }],\n abiFunction: TRC20_BALANCE_OF_ABI,\n })\n return BigInt(result).toString()\n}\n","import {\n createContractCallAction,\n type ContractCallAction,\n type TronAddress,\n} from '@sun-protocol/sun-sdk-core'\nimport { SELECTOR_PURCHASE } from './selectors.js'\nimport type { LaunchpadBuyActionParams } from './types.js'\n\nexport function createLaunchpadBuyAction(params: LaunchpadBuyActionParams): ContractCallAction {\n return createContractCallAction({\n id: `launchpad-buy-${params.token}`,\n target: params.launchpad as TronAddress,\n functionSelector: SELECTOR_PURCHASE,\n parameters: [\n { type: 'address', value: params.token },\n { type: 'uint256', value: params.minTokenOut },\n ],\n callValue: BigInt(params.trxAmount),\n })\n}\n","import type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport {\n QUOTE_BUY_EXACT_TOKEN_ABI,\n QUOTE_BUY_EXACT_TRX_ABI,\n QUOTE_SELL_EXACT_TOKEN_ABI,\n QUOTE_SELL_EXACT_TRX_ABI,\n} from './abi.js'\nimport {\n SELECTOR_QUOTE_BUY_EXACT_TOKEN,\n SELECTOR_QUOTE_BUY_EXACT_TRX,\n SELECTOR_QUOTE_SELL_EXACT_TOKEN,\n SELECTOR_QUOTE_SELL_EXACT_TRX,\n} from './selectors.js'\n\nexport function applySlippageMin(expected: bigint, slippageBips: number): bigint {\n return (expected * BigInt(10_000 - slippageBips)) / 10_000n\n}\n\nexport function applySlippageMax(expected: bigint, slippageBips: number): bigint {\n const numerator = expected * BigInt(10_000 + slippageBips)\n return (numerator + 9_999n) / 10_000n\n}\n\nfunction tupleValues(result: unknown): readonly unknown[] {\n return Array.isArray(result) ? result : [result, 0]\n}\n\nfunction bigintValue(value: unknown): string {\n return BigInt(value === undefined || value === null ? 0 : String(value)).toString()\n}\n\nexport async function quoteLaunchpadBuyExactTrx(\n runtime: Runtime,\n token: string,\n trxAmount: string,\n): Promise<{ tokenAmount: string; fee: string }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_QUOTE_BUY_EXACT_TRX,\n parameters: [\n { type: 'address', value: token },\n { type: 'uint256', value: BigInt(trxAmount).toString() },\n ],\n abiFunction: QUOTE_BUY_EXACT_TRX_ABI,\n })\n const values = tupleValues(result)\n return {\n tokenAmount: bigintValue(values[0]),\n fee: bigintValue(values[1]),\n }\n}\n\nexport async function quoteLaunchpadBuyExactToken(\n runtime: Runtime,\n token: string,\n tokenAmount: string,\n): Promise<{ trxAmount: string; fee: string }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_QUOTE_BUY_EXACT_TOKEN,\n parameters: [\n { type: 'address', value: token },\n { type: 'uint256', value: BigInt(tokenAmount).toString() },\n ],\n abiFunction: QUOTE_BUY_EXACT_TOKEN_ABI,\n })\n const values = tupleValues(result)\n return {\n trxAmount: bigintValue(values[0]),\n fee: bigintValue(values[1]),\n }\n}\n\nexport async function quoteLaunchpadSellExactToken(\n runtime: Runtime,\n token: string,\n tokenAmount: string,\n): Promise<{ trxAmount: string; fee: string }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_QUOTE_SELL_EXACT_TOKEN,\n parameters: [\n { type: 'address', value: token },\n { type: 'uint256', value: BigInt(tokenAmount).toString() },\n ],\n abiFunction: QUOTE_SELL_EXACT_TOKEN_ABI,\n })\n const values = tupleValues(result)\n return {\n trxAmount: bigintValue(values[0]),\n fee: bigintValue(values[1]),\n }\n}\n\nexport async function quoteLaunchpadSellExactTrx(\n runtime: Runtime,\n token: string,\n trxAmount: string,\n): Promise<{ tokenAmount: string; fee: string }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_QUOTE_SELL_EXACT_TRX,\n parameters: [\n { type: 'address', value: token },\n { type: 'uint256', value: BigInt(trxAmount).toString() },\n ],\n abiFunction: QUOTE_SELL_EXACT_TRX_ABI,\n })\n const values = tupleValues(result)\n return {\n tokenAmount: bigintValue(values[0]),\n fee: bigintValue(values[1]),\n }\n}\n","import {\n createApproveAction,\n createContractCallAction,\n type ContractCallAction,\n type TronAddress,\n} from '@sun-protocol/sun-sdk-core'\nimport { MAX_UINT256, SELECTOR_SALE } from './selectors.js'\nimport type { LaunchpadSellActionParams } from './types.js'\n\nexport function createLaunchpadApproveAction(\n token: string,\n spender: string,\n amount: string = MAX_UINT256,\n): ContractCallAction {\n return createApproveAction({\n id: `launchpad-approve-${token}`,\n target: token as TronAddress,\n spender,\n amount,\n })\n}\n\nexport function createLaunchpadSellAction(params: LaunchpadSellActionParams): ContractCallAction {\n return createContractCallAction({\n id: `launchpad-sell-${params.token}`,\n target: params.launchpad as TronAddress,\n functionSelector: SELECTOR_SALE,\n parameters: [\n { type: 'address', value: params.token },\n { type: 'uint256', value: params.tokenAmount },\n { type: 'uint256', value: params.minTrxOut },\n ],\n })\n}\n","export enum LaunchpadTokenState {\n NOT_EXIST = 0,\n TRADING = 1,\n READY_TO_LAUNCH = 2,\n LAUNCHED = 3,\n}\n\nexport interface LaunchpadTokenInfo {\n readonly tokenAddress: string\n readonly state: LaunchpadTokenState\n readonly price: string\n readonly launched: boolean\n readonly trxReserve: string\n readonly tokenReserve: string\n}\n\nexport interface LaunchpadBuyActionParams {\n readonly launchpad: string\n readonly token: string\n readonly trxAmount: string\n readonly minTokenOut: string\n}\n\nexport interface LaunchpadSellActionParams {\n readonly launchpad: string\n readonly token: string\n readonly tokenAmount: string\n readonly minTrxOut: string\n}\n","import type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport { GET_TOKEN_PRICE_ABI, GET_TOKEN_STATE_ABI, VIRTUAL_POOLS_ABI } from './abi.js'\nimport {\n SELECTOR_GET_PRICE,\n SELECTOR_GET_TOKEN_STATE,\n SELECTOR_VIRTUAL_POOLS,\n} from './selectors.js'\nimport { LaunchpadTokenState, type LaunchpadTokenInfo } from './types.js'\n\nexport async function getLaunchpadTokenState(runtime: Runtime, token: string): Promise<LaunchpadTokenState> {\n const result = await runtime.readContract<string | number>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_GET_TOKEN_STATE,\n parameters: [{ type: 'address', value: token }],\n abiFunction: GET_TOKEN_STATE_ABI,\n })\n return Number(result) as LaunchpadTokenState\n}\n\nexport async function getLaunchpadTokenPrice(runtime: Runtime, token: string): Promise<string> {\n const result = await runtime.readContract<string | number | bigint>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_GET_PRICE,\n parameters: [{ type: 'address', value: token }],\n abiFunction: GET_TOKEN_PRICE_ABI,\n })\n return BigInt(result).toString()\n}\n\nexport async function getLaunchpadVirtualPool(\n runtime: Runtime,\n token: string,\n): Promise<{ trxReserve: string; tokenReserve: string; launched: boolean }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_VIRTUAL_POOLS,\n parameters: [{ type: 'address', value: token }],\n abiFunction: VIRTUAL_POOLS_ABI,\n })\n const values = Array.isArray(result) ? result : [result]\n const rawLaunched = values[2]\n\n return {\n trxReserve: BigInt(values[0] ?? 0).toString(),\n tokenReserve: BigInt(values[1] ?? 0).toString(),\n launched: rawLaunched === true || rawLaunched === 1 || rawLaunched === 'true',\n }\n}\n\nexport async function isLaunchpadTokenLaunched(runtime: Runtime, token: string): Promise<boolean> {\n return (await getLaunchpadTokenState(runtime, token)) === LaunchpadTokenState.LAUNCHED\n}\n\nexport async function getLaunchpadTokenInfo(runtime: Runtime, token: string): Promise<LaunchpadTokenInfo> {\n const state = await getLaunchpadTokenState(runtime, token)\n let price = '0'\n let trxReserve = '0'\n let tokenReserve = '0'\n let launched = state === LaunchpadTokenState.LAUNCHED\n\n if (state === LaunchpadTokenState.TRADING || state === LaunchpadTokenState.LAUNCHED) {\n try {\n const pool = await getLaunchpadVirtualPool(runtime, token)\n trxReserve = pool.trxReserve\n tokenReserve = pool.tokenReserve\n launched = pool.launched\n } catch {\n // Some token states do not expose a readable virtual pool.\n }\n\n if (state === LaunchpadTokenState.TRADING) {\n try {\n price = await getLaunchpadTokenPrice(runtime, token)\n } catch {\n // Price reads may be unavailable for partially initialized tokens.\n }\n }\n }\n\n return { tokenAddress: token, state, price, launched, trxReserve, tokenReserve }\n}\n"],"mappings":"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","names":["import_sun_sdk_core","LaunchpadTokenState"]}
@@ -0,0 +1,83 @@
1
+ import { Runtime } from '@sun-protocol/sun-sdk-runtime';
2
+ import { ContractCallAction } from '@sun-protocol/sun-sdk-core';
3
+
4
+ declare function readLaunchpadAllowance(runtime: Runtime, token: string, owner: string, spender: string): Promise<string>;
5
+
6
+ declare function getLaunchpadTokenBalance(runtime: Runtime, token: string, owner: string): Promise<string>;
7
+
8
+ declare enum LaunchpadTokenState {
9
+ NOT_EXIST = 0,
10
+ TRADING = 1,
11
+ READY_TO_LAUNCH = 2,
12
+ LAUNCHED = 3
13
+ }
14
+ interface LaunchpadTokenInfo {
15
+ readonly tokenAddress: string;
16
+ readonly state: LaunchpadTokenState;
17
+ readonly price: string;
18
+ readonly launched: boolean;
19
+ readonly trxReserve: string;
20
+ readonly tokenReserve: string;
21
+ }
22
+ interface LaunchpadBuyActionParams {
23
+ readonly launchpad: string;
24
+ readonly token: string;
25
+ readonly trxAmount: string;
26
+ readonly minTokenOut: string;
27
+ }
28
+ interface LaunchpadSellActionParams {
29
+ readonly launchpad: string;
30
+ readonly token: string;
31
+ readonly tokenAmount: string;
32
+ readonly minTrxOut: string;
33
+ }
34
+
35
+ declare function createLaunchpadBuyAction(params: LaunchpadBuyActionParams): ContractCallAction;
36
+
37
+ declare const SELECTOR_GET_TOKEN_STATE = "getTokenState(address)";
38
+ declare const SELECTOR_GET_PRICE = "getPrice(address)";
39
+ declare const SELECTOR_VIRTUAL_POOLS = "virtualPools(address)";
40
+ declare const SELECTOR_QUOTE_BUY_EXACT_TRX = "getTokenAmountByPurchaseWithFee(address,uint256)";
41
+ declare const SELECTOR_QUOTE_BUY_EXACT_TOKEN = "getExactTokenAmountForPurchaseWithFee(address,uint256)";
42
+ declare const SELECTOR_QUOTE_SELL_EXACT_TOKEN = "getTrxAmountBySaleWithFee(address,uint256)";
43
+ declare const SELECTOR_QUOTE_SELL_EXACT_TRX = "getExactTrxAmountForSaleWithFee(address,uint256)";
44
+ declare const SELECTOR_PURCHASE = "purchaseToken(address,uint256)";
45
+ declare const SELECTOR_SALE = "saleToken(address,uint256,uint256)";
46
+ declare const SELECTOR_TRC20_ALLOWANCE = "allowance(address,address)";
47
+ declare const SELECTOR_TRC20_BALANCE_OF = "balanceOf(address)";
48
+ declare const DEFAULT_SLIPPAGE_BIPS = 500;
49
+ declare const MAX_UINT256: string;
50
+
51
+ declare function applySlippageMin(expected: bigint, slippageBips: number): bigint;
52
+ declare function applySlippageMax(expected: bigint, slippageBips: number): bigint;
53
+ declare function quoteLaunchpadBuyExactTrx(runtime: Runtime, token: string, trxAmount: string): Promise<{
54
+ tokenAmount: string;
55
+ fee: string;
56
+ }>;
57
+ declare function quoteLaunchpadBuyExactToken(runtime: Runtime, token: string, tokenAmount: string): Promise<{
58
+ trxAmount: string;
59
+ fee: string;
60
+ }>;
61
+ declare function quoteLaunchpadSellExactToken(runtime: Runtime, token: string, tokenAmount: string): Promise<{
62
+ trxAmount: string;
63
+ fee: string;
64
+ }>;
65
+ declare function quoteLaunchpadSellExactTrx(runtime: Runtime, token: string, trxAmount: string): Promise<{
66
+ tokenAmount: string;
67
+ fee: string;
68
+ }>;
69
+
70
+ declare function createLaunchpadApproveAction(token: string, spender: string, amount?: string): ContractCallAction;
71
+ declare function createLaunchpadSellAction(params: LaunchpadSellActionParams): ContractCallAction;
72
+
73
+ declare function getLaunchpadTokenState(runtime: Runtime, token: string): Promise<LaunchpadTokenState>;
74
+ declare function getLaunchpadTokenPrice(runtime: Runtime, token: string): Promise<string>;
75
+ declare function getLaunchpadVirtualPool(runtime: Runtime, token: string): Promise<{
76
+ trxReserve: string;
77
+ tokenReserve: string;
78
+ launched: boolean;
79
+ }>;
80
+ declare function isLaunchpadTokenLaunched(runtime: Runtime, token: string): Promise<boolean>;
81
+ declare function getLaunchpadTokenInfo(runtime: Runtime, token: string): Promise<LaunchpadTokenInfo>;
82
+
83
+ export { DEFAULT_SLIPPAGE_BIPS, type LaunchpadBuyActionParams, type LaunchpadSellActionParams, type LaunchpadTokenInfo, LaunchpadTokenState, MAX_UINT256, SELECTOR_GET_PRICE, SELECTOR_GET_TOKEN_STATE, SELECTOR_PURCHASE, SELECTOR_QUOTE_BUY_EXACT_TOKEN, SELECTOR_QUOTE_BUY_EXACT_TRX, SELECTOR_QUOTE_SELL_EXACT_TOKEN, SELECTOR_QUOTE_SELL_EXACT_TRX, SELECTOR_SALE, SELECTOR_TRC20_ALLOWANCE, SELECTOR_TRC20_BALANCE_OF, SELECTOR_VIRTUAL_POOLS, applySlippageMax, applySlippageMin, createLaunchpadApproveAction, createLaunchpadBuyAction, createLaunchpadSellAction, getLaunchpadTokenBalance, getLaunchpadTokenInfo, getLaunchpadTokenPrice, getLaunchpadTokenState, getLaunchpadVirtualPool, isLaunchpadTokenLaunched, quoteLaunchpadBuyExactToken, quoteLaunchpadBuyExactTrx, quoteLaunchpadSellExactToken, quoteLaunchpadSellExactTrx, readLaunchpadAllowance };
@@ -0,0 +1,83 @@
1
+ import { Runtime } from '@sun-protocol/sun-sdk-runtime';
2
+ import { ContractCallAction } from '@sun-protocol/sun-sdk-core';
3
+
4
+ declare function readLaunchpadAllowance(runtime: Runtime, token: string, owner: string, spender: string): Promise<string>;
5
+
6
+ declare function getLaunchpadTokenBalance(runtime: Runtime, token: string, owner: string): Promise<string>;
7
+
8
+ declare enum LaunchpadTokenState {
9
+ NOT_EXIST = 0,
10
+ TRADING = 1,
11
+ READY_TO_LAUNCH = 2,
12
+ LAUNCHED = 3
13
+ }
14
+ interface LaunchpadTokenInfo {
15
+ readonly tokenAddress: string;
16
+ readonly state: LaunchpadTokenState;
17
+ readonly price: string;
18
+ readonly launched: boolean;
19
+ readonly trxReserve: string;
20
+ readonly tokenReserve: string;
21
+ }
22
+ interface LaunchpadBuyActionParams {
23
+ readonly launchpad: string;
24
+ readonly token: string;
25
+ readonly trxAmount: string;
26
+ readonly minTokenOut: string;
27
+ }
28
+ interface LaunchpadSellActionParams {
29
+ readonly launchpad: string;
30
+ readonly token: string;
31
+ readonly tokenAmount: string;
32
+ readonly minTrxOut: string;
33
+ }
34
+
35
+ declare function createLaunchpadBuyAction(params: LaunchpadBuyActionParams): ContractCallAction;
36
+
37
+ declare const SELECTOR_GET_TOKEN_STATE = "getTokenState(address)";
38
+ declare const SELECTOR_GET_PRICE = "getPrice(address)";
39
+ declare const SELECTOR_VIRTUAL_POOLS = "virtualPools(address)";
40
+ declare const SELECTOR_QUOTE_BUY_EXACT_TRX = "getTokenAmountByPurchaseWithFee(address,uint256)";
41
+ declare const SELECTOR_QUOTE_BUY_EXACT_TOKEN = "getExactTokenAmountForPurchaseWithFee(address,uint256)";
42
+ declare const SELECTOR_QUOTE_SELL_EXACT_TOKEN = "getTrxAmountBySaleWithFee(address,uint256)";
43
+ declare const SELECTOR_QUOTE_SELL_EXACT_TRX = "getExactTrxAmountForSaleWithFee(address,uint256)";
44
+ declare const SELECTOR_PURCHASE = "purchaseToken(address,uint256)";
45
+ declare const SELECTOR_SALE = "saleToken(address,uint256,uint256)";
46
+ declare const SELECTOR_TRC20_ALLOWANCE = "allowance(address,address)";
47
+ declare const SELECTOR_TRC20_BALANCE_OF = "balanceOf(address)";
48
+ declare const DEFAULT_SLIPPAGE_BIPS = 500;
49
+ declare const MAX_UINT256: string;
50
+
51
+ declare function applySlippageMin(expected: bigint, slippageBips: number): bigint;
52
+ declare function applySlippageMax(expected: bigint, slippageBips: number): bigint;
53
+ declare function quoteLaunchpadBuyExactTrx(runtime: Runtime, token: string, trxAmount: string): Promise<{
54
+ tokenAmount: string;
55
+ fee: string;
56
+ }>;
57
+ declare function quoteLaunchpadBuyExactToken(runtime: Runtime, token: string, tokenAmount: string): Promise<{
58
+ trxAmount: string;
59
+ fee: string;
60
+ }>;
61
+ declare function quoteLaunchpadSellExactToken(runtime: Runtime, token: string, tokenAmount: string): Promise<{
62
+ trxAmount: string;
63
+ fee: string;
64
+ }>;
65
+ declare function quoteLaunchpadSellExactTrx(runtime: Runtime, token: string, trxAmount: string): Promise<{
66
+ tokenAmount: string;
67
+ fee: string;
68
+ }>;
69
+
70
+ declare function createLaunchpadApproveAction(token: string, spender: string, amount?: string): ContractCallAction;
71
+ declare function createLaunchpadSellAction(params: LaunchpadSellActionParams): ContractCallAction;
72
+
73
+ declare function getLaunchpadTokenState(runtime: Runtime, token: string): Promise<LaunchpadTokenState>;
74
+ declare function getLaunchpadTokenPrice(runtime: Runtime, token: string): Promise<string>;
75
+ declare function getLaunchpadVirtualPool(runtime: Runtime, token: string): Promise<{
76
+ trxReserve: string;
77
+ tokenReserve: string;
78
+ launched: boolean;
79
+ }>;
80
+ declare function isLaunchpadTokenLaunched(runtime: Runtime, token: string): Promise<boolean>;
81
+ declare function getLaunchpadTokenInfo(runtime: Runtime, token: string): Promise<LaunchpadTokenInfo>;
82
+
83
+ export { DEFAULT_SLIPPAGE_BIPS, type LaunchpadBuyActionParams, type LaunchpadSellActionParams, type LaunchpadTokenInfo, LaunchpadTokenState, MAX_UINT256, SELECTOR_GET_PRICE, SELECTOR_GET_TOKEN_STATE, SELECTOR_PURCHASE, SELECTOR_QUOTE_BUY_EXACT_TOKEN, SELECTOR_QUOTE_BUY_EXACT_TRX, SELECTOR_QUOTE_SELL_EXACT_TOKEN, SELECTOR_QUOTE_SELL_EXACT_TRX, SELECTOR_SALE, SELECTOR_TRC20_ALLOWANCE, SELECTOR_TRC20_BALANCE_OF, SELECTOR_VIRTUAL_POOLS, applySlippageMax, applySlippageMin, createLaunchpadApproveAction, createLaunchpadBuyAction, createLaunchpadSellAction, getLaunchpadTokenBalance, getLaunchpadTokenInfo, getLaunchpadTokenPrice, getLaunchpadTokenState, getLaunchpadVirtualPool, isLaunchpadTokenLaunched, quoteLaunchpadBuyExactToken, quoteLaunchpadBuyExactTrx, quoteLaunchpadSellExactToken, quoteLaunchpadSellExactTrx, readLaunchpadAllowance };
package/dist/index.js ADDED
@@ -0,0 +1,333 @@
1
+ // src/abi.ts
2
+ var GET_TOKEN_STATE_ABI = {
3
+ type: "function",
4
+ name: "getTokenState",
5
+ stateMutability: "view",
6
+ inputs: [{ name: "token", type: "address" }],
7
+ outputs: [{ name: "state", type: "uint256" }]
8
+ };
9
+ var GET_TOKEN_PRICE_ABI = {
10
+ type: "function",
11
+ name: "getPrice",
12
+ stateMutability: "view",
13
+ inputs: [{ name: "token", type: "address" }],
14
+ outputs: [{ name: "price", type: "uint256" }]
15
+ };
16
+ var VIRTUAL_POOLS_ABI = {
17
+ type: "function",
18
+ name: "virtualPools",
19
+ stateMutability: "view",
20
+ inputs: [{ name: "token", type: "address" }],
21
+ outputs: [
22
+ { name: "trxReserve", type: "uint256" },
23
+ { name: "tokenReserve", type: "uint256" },
24
+ { name: "launched", type: "bool" }
25
+ ]
26
+ };
27
+ var QUOTE_BUY_EXACT_TRX_ABI = {
28
+ type: "function",
29
+ name: "getTokenAmountByPurchaseWithFee",
30
+ stateMutability: "view",
31
+ inputs: [{ name: "token", type: "address" }, { name: "trxAmount", type: "uint256" }],
32
+ outputs: [{ name: "tokenAmount", type: "uint256" }, { name: "fee", type: "uint256" }]
33
+ };
34
+ var QUOTE_BUY_EXACT_TOKEN_ABI = {
35
+ type: "function",
36
+ name: "getExactTokenAmountForPurchaseWithFee",
37
+ stateMutability: "view",
38
+ inputs: [{ name: "token", type: "address" }, { name: "tokenAmount", type: "uint256" }],
39
+ outputs: [{ name: "trxAmount", type: "uint256" }, { name: "fee", type: "uint256" }]
40
+ };
41
+ var QUOTE_SELL_EXACT_TOKEN_ABI = {
42
+ type: "function",
43
+ name: "getTrxAmountBySaleWithFee",
44
+ stateMutability: "view",
45
+ inputs: [{ name: "token", type: "address" }, { name: "tokenAmount", type: "uint256" }],
46
+ outputs: [{ name: "trxAmount", type: "uint256" }, { name: "fee", type: "uint256" }]
47
+ };
48
+ var QUOTE_SELL_EXACT_TRX_ABI = {
49
+ type: "function",
50
+ name: "getExactTrxAmountForSaleWithFee",
51
+ stateMutability: "view",
52
+ inputs: [{ name: "token", type: "address" }, { name: "trxAmount", type: "uint256" }],
53
+ outputs: [{ name: "tokenAmount", type: "uint256" }, { name: "fee", type: "uint256" }]
54
+ };
55
+ var TRC20_ALLOWANCE_ABI = {
56
+ type: "function",
57
+ name: "allowance",
58
+ stateMutability: "view",
59
+ inputs: [{ name: "owner", type: "address" }, { name: "spender", type: "address" }],
60
+ outputs: [{ name: "amount", type: "uint256" }]
61
+ };
62
+ var TRC20_BALANCE_OF_ABI = {
63
+ type: "function",
64
+ name: "balanceOf",
65
+ stateMutability: "view",
66
+ inputs: [{ name: "owner", type: "address" }],
67
+ outputs: [{ name: "balance", type: "uint256" }]
68
+ };
69
+
70
+ // src/selectors.ts
71
+ var SELECTOR_GET_TOKEN_STATE = "getTokenState(address)";
72
+ var SELECTOR_GET_PRICE = "getPrice(address)";
73
+ var SELECTOR_VIRTUAL_POOLS = "virtualPools(address)";
74
+ var SELECTOR_QUOTE_BUY_EXACT_TRX = "getTokenAmountByPurchaseWithFee(address,uint256)";
75
+ var SELECTOR_QUOTE_BUY_EXACT_TOKEN = "getExactTokenAmountForPurchaseWithFee(address,uint256)";
76
+ var SELECTOR_QUOTE_SELL_EXACT_TOKEN = "getTrxAmountBySaleWithFee(address,uint256)";
77
+ var SELECTOR_QUOTE_SELL_EXACT_TRX = "getExactTrxAmountForSaleWithFee(address,uint256)";
78
+ var SELECTOR_PURCHASE = "purchaseToken(address,uint256)";
79
+ var SELECTOR_SALE = "saleToken(address,uint256,uint256)";
80
+ var SELECTOR_TRC20_ALLOWANCE = "allowance(address,address)";
81
+ var SELECTOR_TRC20_BALANCE_OF = "balanceOf(address)";
82
+ var DEFAULT_SLIPPAGE_BIPS = 500;
83
+ var MAX_UINT256 = (2n ** 256n - 1n).toString();
84
+
85
+ // src/allowance.ts
86
+ async function readLaunchpadAllowance(runtime, token, owner, spender) {
87
+ const result = await runtime.readContract({
88
+ target: token,
89
+ functionSelector: SELECTOR_TRC20_ALLOWANCE,
90
+ parameters: [
91
+ { type: "address", value: owner },
92
+ { type: "address", value: spender }
93
+ ],
94
+ abiFunction: TRC20_ALLOWANCE_ABI
95
+ });
96
+ return BigInt(result).toString();
97
+ }
98
+
99
+ // src/balance.ts
100
+ async function getLaunchpadTokenBalance(runtime, token, owner) {
101
+ const result = await runtime.readContract({
102
+ target: token,
103
+ functionSelector: SELECTOR_TRC20_BALANCE_OF,
104
+ parameters: [{ type: "address", value: owner }],
105
+ abiFunction: TRC20_BALANCE_OF_ABI
106
+ });
107
+ return BigInt(result).toString();
108
+ }
109
+
110
+ // src/buy.ts
111
+ import {
112
+ createContractCallAction
113
+ } from "@sun-protocol/sun-sdk-core";
114
+ function createLaunchpadBuyAction(params) {
115
+ return createContractCallAction({
116
+ id: `launchpad-buy-${params.token}`,
117
+ target: params.launchpad,
118
+ functionSelector: SELECTOR_PURCHASE,
119
+ parameters: [
120
+ { type: "address", value: params.token },
121
+ { type: "uint256", value: params.minTokenOut }
122
+ ],
123
+ callValue: BigInt(params.trxAmount)
124
+ });
125
+ }
126
+
127
+ // src/quote.ts
128
+ function applySlippageMin(expected, slippageBips) {
129
+ return expected * BigInt(1e4 - slippageBips) / 10000n;
130
+ }
131
+ function applySlippageMax(expected, slippageBips) {
132
+ const numerator = expected * BigInt(1e4 + slippageBips);
133
+ return (numerator + 9999n) / 10000n;
134
+ }
135
+ function tupleValues(result) {
136
+ return Array.isArray(result) ? result : [result, 0];
137
+ }
138
+ function bigintValue(value) {
139
+ return BigInt(value === void 0 || value === null ? 0 : String(value)).toString();
140
+ }
141
+ async function quoteLaunchpadBuyExactTrx(runtime, token, trxAmount) {
142
+ const result = await runtime.readContract({
143
+ target: runtime.chain.contracts.launchpad,
144
+ functionSelector: SELECTOR_QUOTE_BUY_EXACT_TRX,
145
+ parameters: [
146
+ { type: "address", value: token },
147
+ { type: "uint256", value: BigInt(trxAmount).toString() }
148
+ ],
149
+ abiFunction: QUOTE_BUY_EXACT_TRX_ABI
150
+ });
151
+ const values = tupleValues(result);
152
+ return {
153
+ tokenAmount: bigintValue(values[0]),
154
+ fee: bigintValue(values[1])
155
+ };
156
+ }
157
+ async function quoteLaunchpadBuyExactToken(runtime, token, tokenAmount) {
158
+ const result = await runtime.readContract({
159
+ target: runtime.chain.contracts.launchpad,
160
+ functionSelector: SELECTOR_QUOTE_BUY_EXACT_TOKEN,
161
+ parameters: [
162
+ { type: "address", value: token },
163
+ { type: "uint256", value: BigInt(tokenAmount).toString() }
164
+ ],
165
+ abiFunction: QUOTE_BUY_EXACT_TOKEN_ABI
166
+ });
167
+ const values = tupleValues(result);
168
+ return {
169
+ trxAmount: bigintValue(values[0]),
170
+ fee: bigintValue(values[1])
171
+ };
172
+ }
173
+ async function quoteLaunchpadSellExactToken(runtime, token, tokenAmount) {
174
+ const result = await runtime.readContract({
175
+ target: runtime.chain.contracts.launchpad,
176
+ functionSelector: SELECTOR_QUOTE_SELL_EXACT_TOKEN,
177
+ parameters: [
178
+ { type: "address", value: token },
179
+ { type: "uint256", value: BigInt(tokenAmount).toString() }
180
+ ],
181
+ abiFunction: QUOTE_SELL_EXACT_TOKEN_ABI
182
+ });
183
+ const values = tupleValues(result);
184
+ return {
185
+ trxAmount: bigintValue(values[0]),
186
+ fee: bigintValue(values[1])
187
+ };
188
+ }
189
+ async function quoteLaunchpadSellExactTrx(runtime, token, trxAmount) {
190
+ const result = await runtime.readContract({
191
+ target: runtime.chain.contracts.launchpad,
192
+ functionSelector: SELECTOR_QUOTE_SELL_EXACT_TRX,
193
+ parameters: [
194
+ { type: "address", value: token },
195
+ { type: "uint256", value: BigInt(trxAmount).toString() }
196
+ ],
197
+ abiFunction: QUOTE_SELL_EXACT_TRX_ABI
198
+ });
199
+ const values = tupleValues(result);
200
+ return {
201
+ tokenAmount: bigintValue(values[0]),
202
+ fee: bigintValue(values[1])
203
+ };
204
+ }
205
+
206
+ // src/sell.ts
207
+ import {
208
+ createApproveAction,
209
+ createContractCallAction as createContractCallAction2
210
+ } from "@sun-protocol/sun-sdk-core";
211
+ function createLaunchpadApproveAction(token, spender, amount = MAX_UINT256) {
212
+ return createApproveAction({
213
+ id: `launchpad-approve-${token}`,
214
+ target: token,
215
+ spender,
216
+ amount
217
+ });
218
+ }
219
+ function createLaunchpadSellAction(params) {
220
+ return createContractCallAction2({
221
+ id: `launchpad-sell-${params.token}`,
222
+ target: params.launchpad,
223
+ functionSelector: SELECTOR_SALE,
224
+ parameters: [
225
+ { type: "address", value: params.token },
226
+ { type: "uint256", value: params.tokenAmount },
227
+ { type: "uint256", value: params.minTrxOut }
228
+ ]
229
+ });
230
+ }
231
+
232
+ // src/types.ts
233
+ var LaunchpadTokenState = /* @__PURE__ */ ((LaunchpadTokenState2) => {
234
+ LaunchpadTokenState2[LaunchpadTokenState2["NOT_EXIST"] = 0] = "NOT_EXIST";
235
+ LaunchpadTokenState2[LaunchpadTokenState2["TRADING"] = 1] = "TRADING";
236
+ LaunchpadTokenState2[LaunchpadTokenState2["READY_TO_LAUNCH"] = 2] = "READY_TO_LAUNCH";
237
+ LaunchpadTokenState2[LaunchpadTokenState2["LAUNCHED"] = 3] = "LAUNCHED";
238
+ return LaunchpadTokenState2;
239
+ })(LaunchpadTokenState || {});
240
+
241
+ // src/state.ts
242
+ async function getLaunchpadTokenState(runtime, token) {
243
+ const result = await runtime.readContract({
244
+ target: runtime.chain.contracts.launchpad,
245
+ functionSelector: SELECTOR_GET_TOKEN_STATE,
246
+ parameters: [{ type: "address", value: token }],
247
+ abiFunction: GET_TOKEN_STATE_ABI
248
+ });
249
+ return Number(result);
250
+ }
251
+ async function getLaunchpadTokenPrice(runtime, token) {
252
+ const result = await runtime.readContract({
253
+ target: runtime.chain.contracts.launchpad,
254
+ functionSelector: SELECTOR_GET_PRICE,
255
+ parameters: [{ type: "address", value: token }],
256
+ abiFunction: GET_TOKEN_PRICE_ABI
257
+ });
258
+ return BigInt(result).toString();
259
+ }
260
+ async function getLaunchpadVirtualPool(runtime, token) {
261
+ const result = await runtime.readContract({
262
+ target: runtime.chain.contracts.launchpad,
263
+ functionSelector: SELECTOR_VIRTUAL_POOLS,
264
+ parameters: [{ type: "address", value: token }],
265
+ abiFunction: VIRTUAL_POOLS_ABI
266
+ });
267
+ const values = Array.isArray(result) ? result : [result];
268
+ const rawLaunched = values[2];
269
+ return {
270
+ trxReserve: BigInt(values[0] ?? 0).toString(),
271
+ tokenReserve: BigInt(values[1] ?? 0).toString(),
272
+ launched: rawLaunched === true || rawLaunched === 1 || rawLaunched === "true"
273
+ };
274
+ }
275
+ async function isLaunchpadTokenLaunched(runtime, token) {
276
+ return await getLaunchpadTokenState(runtime, token) === 3 /* LAUNCHED */;
277
+ }
278
+ async function getLaunchpadTokenInfo(runtime, token) {
279
+ const state = await getLaunchpadTokenState(runtime, token);
280
+ let price = "0";
281
+ let trxReserve = "0";
282
+ let tokenReserve = "0";
283
+ let launched = state === 3 /* LAUNCHED */;
284
+ if (state === 1 /* TRADING */ || state === 3 /* LAUNCHED */) {
285
+ try {
286
+ const pool = await getLaunchpadVirtualPool(runtime, token);
287
+ trxReserve = pool.trxReserve;
288
+ tokenReserve = pool.tokenReserve;
289
+ launched = pool.launched;
290
+ } catch {
291
+ }
292
+ if (state === 1 /* TRADING */) {
293
+ try {
294
+ price = await getLaunchpadTokenPrice(runtime, token);
295
+ } catch {
296
+ }
297
+ }
298
+ }
299
+ return { tokenAddress: token, state, price, launched, trxReserve, tokenReserve };
300
+ }
301
+ export {
302
+ DEFAULT_SLIPPAGE_BIPS,
303
+ LaunchpadTokenState,
304
+ MAX_UINT256,
305
+ SELECTOR_GET_PRICE,
306
+ SELECTOR_GET_TOKEN_STATE,
307
+ SELECTOR_PURCHASE,
308
+ SELECTOR_QUOTE_BUY_EXACT_TOKEN,
309
+ SELECTOR_QUOTE_BUY_EXACT_TRX,
310
+ SELECTOR_QUOTE_SELL_EXACT_TOKEN,
311
+ SELECTOR_QUOTE_SELL_EXACT_TRX,
312
+ SELECTOR_SALE,
313
+ SELECTOR_TRC20_ALLOWANCE,
314
+ SELECTOR_TRC20_BALANCE_OF,
315
+ SELECTOR_VIRTUAL_POOLS,
316
+ applySlippageMax,
317
+ applySlippageMin,
318
+ createLaunchpadApproveAction,
319
+ createLaunchpadBuyAction,
320
+ createLaunchpadSellAction,
321
+ getLaunchpadTokenBalance,
322
+ getLaunchpadTokenInfo,
323
+ getLaunchpadTokenPrice,
324
+ getLaunchpadTokenState,
325
+ getLaunchpadVirtualPool,
326
+ isLaunchpadTokenLaunched,
327
+ quoteLaunchpadBuyExactToken,
328
+ quoteLaunchpadBuyExactTrx,
329
+ quoteLaunchpadSellExactToken,
330
+ quoteLaunchpadSellExactTrx,
331
+ readLaunchpadAllowance
332
+ };
333
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/abi.ts","../src/selectors.ts","../src/allowance.ts","../src/balance.ts","../src/buy.ts","../src/quote.ts","../src/sell.ts","../src/types.ts","../src/state.ts"],"sourcesContent":["export const GET_TOKEN_STATE_ABI = {\n type: 'function',\n name: 'getTokenState',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }],\n outputs: [{ name: 'state', type: 'uint256' }],\n} as const\n\nexport const GET_TOKEN_PRICE_ABI = {\n type: 'function',\n name: 'getPrice',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }],\n outputs: [{ name: 'price', type: 'uint256' }],\n} as const\n\nexport const VIRTUAL_POOLS_ABI = {\n type: 'function',\n name: 'virtualPools',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }],\n outputs: [\n { name: 'trxReserve', type: 'uint256' },\n { name: 'tokenReserve', type: 'uint256' },\n { name: 'launched', type: 'bool' },\n ],\n} as const\n\nexport const QUOTE_BUY_EXACT_TRX_ABI = {\n type: 'function',\n name: 'getTokenAmountByPurchaseWithFee',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }, { name: 'trxAmount', type: 'uint256' }],\n outputs: [{ name: 'tokenAmount', type: 'uint256' }, { name: 'fee', type: 'uint256' }],\n} as const\n\nexport const QUOTE_BUY_EXACT_TOKEN_ABI = {\n type: 'function',\n name: 'getExactTokenAmountForPurchaseWithFee',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }, { name: 'tokenAmount', type: 'uint256' }],\n outputs: [{ name: 'trxAmount', type: 'uint256' }, { name: 'fee', type: 'uint256' }],\n} as const\n\nexport const QUOTE_SELL_EXACT_TOKEN_ABI = {\n type: 'function',\n name: 'getTrxAmountBySaleWithFee',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }, { name: 'tokenAmount', type: 'uint256' }],\n outputs: [{ name: 'trxAmount', type: 'uint256' }, { name: 'fee', type: 'uint256' }],\n} as const\n\nexport const QUOTE_SELL_EXACT_TRX_ABI = {\n type: 'function',\n name: 'getExactTrxAmountForSaleWithFee',\n stateMutability: 'view',\n inputs: [{ name: 'token', type: 'address' }, { name: 'trxAmount', type: 'uint256' }],\n outputs: [{ name: 'tokenAmount', type: 'uint256' }, { name: 'fee', type: 'uint256' }],\n} as const\n\nexport const TRC20_ALLOWANCE_ABI = {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }],\n outputs: [{ name: 'amount', type: 'uint256' }],\n} as const\n\nexport const TRC20_BALANCE_OF_ABI = {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256' }],\n} as const\n","export const SELECTOR_GET_TOKEN_STATE = 'getTokenState(address)'\nexport const SELECTOR_GET_PRICE = 'getPrice(address)'\nexport const SELECTOR_VIRTUAL_POOLS = 'virtualPools(address)'\nexport const SELECTOR_QUOTE_BUY_EXACT_TRX = 'getTokenAmountByPurchaseWithFee(address,uint256)'\nexport const SELECTOR_QUOTE_BUY_EXACT_TOKEN = 'getExactTokenAmountForPurchaseWithFee(address,uint256)'\nexport const SELECTOR_QUOTE_SELL_EXACT_TOKEN = 'getTrxAmountBySaleWithFee(address,uint256)'\nexport const SELECTOR_QUOTE_SELL_EXACT_TRX = 'getExactTrxAmountForSaleWithFee(address,uint256)'\nexport const SELECTOR_PURCHASE = 'purchaseToken(address,uint256)'\nexport const SELECTOR_SALE = 'saleToken(address,uint256,uint256)'\nexport const SELECTOR_TRC20_ALLOWANCE = 'allowance(address,address)'\nexport const SELECTOR_TRC20_BALANCE_OF = 'balanceOf(address)'\nexport const DEFAULT_SLIPPAGE_BIPS = 500\nexport const MAX_UINT256 = (2n ** 256n - 1n).toString()\n","import type { TronAddress } from '@sun-protocol/sun-sdk-core'\nimport type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport { TRC20_ALLOWANCE_ABI } from './abi.js'\nimport { SELECTOR_TRC20_ALLOWANCE } from './selectors.js'\n\nexport async function readLaunchpadAllowance(\n runtime: Runtime,\n token: string,\n owner: string,\n spender: string,\n): Promise<string> {\n const result = await runtime.readContract<string | number | bigint>({\n target: token as TronAddress,\n functionSelector: SELECTOR_TRC20_ALLOWANCE,\n parameters: [\n { type: 'address', value: owner },\n { type: 'address', value: spender },\n ],\n abiFunction: TRC20_ALLOWANCE_ABI,\n })\n return BigInt(result).toString()\n}\n","import type { TronAddress } from '@sun-protocol/sun-sdk-core'\nimport type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport { TRC20_BALANCE_OF_ABI } from './abi.js'\nimport { SELECTOR_TRC20_BALANCE_OF } from './selectors.js'\n\nexport async function getLaunchpadTokenBalance(\n runtime: Runtime,\n token: string,\n owner: string,\n): Promise<string> {\n const result = await runtime.readContract<string | number | bigint>({\n target: token as TronAddress,\n functionSelector: SELECTOR_TRC20_BALANCE_OF,\n parameters: [{ type: 'address', value: owner }],\n abiFunction: TRC20_BALANCE_OF_ABI,\n })\n return BigInt(result).toString()\n}\n","import {\n createContractCallAction,\n type ContractCallAction,\n type TronAddress,\n} from '@sun-protocol/sun-sdk-core'\nimport { SELECTOR_PURCHASE } from './selectors.js'\nimport type { LaunchpadBuyActionParams } from './types.js'\n\nexport function createLaunchpadBuyAction(params: LaunchpadBuyActionParams): ContractCallAction {\n return createContractCallAction({\n id: `launchpad-buy-${params.token}`,\n target: params.launchpad as TronAddress,\n functionSelector: SELECTOR_PURCHASE,\n parameters: [\n { type: 'address', value: params.token },\n { type: 'uint256', value: params.minTokenOut },\n ],\n callValue: BigInt(params.trxAmount),\n })\n}\n","import type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport {\n QUOTE_BUY_EXACT_TOKEN_ABI,\n QUOTE_BUY_EXACT_TRX_ABI,\n QUOTE_SELL_EXACT_TOKEN_ABI,\n QUOTE_SELL_EXACT_TRX_ABI,\n} from './abi.js'\nimport {\n SELECTOR_QUOTE_BUY_EXACT_TOKEN,\n SELECTOR_QUOTE_BUY_EXACT_TRX,\n SELECTOR_QUOTE_SELL_EXACT_TOKEN,\n SELECTOR_QUOTE_SELL_EXACT_TRX,\n} from './selectors.js'\n\nexport function applySlippageMin(expected: bigint, slippageBips: number): bigint {\n return (expected * BigInt(10_000 - slippageBips)) / 10_000n\n}\n\nexport function applySlippageMax(expected: bigint, slippageBips: number): bigint {\n const numerator = expected * BigInt(10_000 + slippageBips)\n return (numerator + 9_999n) / 10_000n\n}\n\nfunction tupleValues(result: unknown): readonly unknown[] {\n return Array.isArray(result) ? result : [result, 0]\n}\n\nfunction bigintValue(value: unknown): string {\n return BigInt(value === undefined || value === null ? 0 : String(value)).toString()\n}\n\nexport async function quoteLaunchpadBuyExactTrx(\n runtime: Runtime,\n token: string,\n trxAmount: string,\n): Promise<{ tokenAmount: string; fee: string }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_QUOTE_BUY_EXACT_TRX,\n parameters: [\n { type: 'address', value: token },\n { type: 'uint256', value: BigInt(trxAmount).toString() },\n ],\n abiFunction: QUOTE_BUY_EXACT_TRX_ABI,\n })\n const values = tupleValues(result)\n return {\n tokenAmount: bigintValue(values[0]),\n fee: bigintValue(values[1]),\n }\n}\n\nexport async function quoteLaunchpadBuyExactToken(\n runtime: Runtime,\n token: string,\n tokenAmount: string,\n): Promise<{ trxAmount: string; fee: string }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_QUOTE_BUY_EXACT_TOKEN,\n parameters: [\n { type: 'address', value: token },\n { type: 'uint256', value: BigInt(tokenAmount).toString() },\n ],\n abiFunction: QUOTE_BUY_EXACT_TOKEN_ABI,\n })\n const values = tupleValues(result)\n return {\n trxAmount: bigintValue(values[0]),\n fee: bigintValue(values[1]),\n }\n}\n\nexport async function quoteLaunchpadSellExactToken(\n runtime: Runtime,\n token: string,\n tokenAmount: string,\n): Promise<{ trxAmount: string; fee: string }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_QUOTE_SELL_EXACT_TOKEN,\n parameters: [\n { type: 'address', value: token },\n { type: 'uint256', value: BigInt(tokenAmount).toString() },\n ],\n abiFunction: QUOTE_SELL_EXACT_TOKEN_ABI,\n })\n const values = tupleValues(result)\n return {\n trxAmount: bigintValue(values[0]),\n fee: bigintValue(values[1]),\n }\n}\n\nexport async function quoteLaunchpadSellExactTrx(\n runtime: Runtime,\n token: string,\n trxAmount: string,\n): Promise<{ tokenAmount: string; fee: string }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_QUOTE_SELL_EXACT_TRX,\n parameters: [\n { type: 'address', value: token },\n { type: 'uint256', value: BigInt(trxAmount).toString() },\n ],\n abiFunction: QUOTE_SELL_EXACT_TRX_ABI,\n })\n const values = tupleValues(result)\n return {\n tokenAmount: bigintValue(values[0]),\n fee: bigintValue(values[1]),\n }\n}\n","import {\n createApproveAction,\n createContractCallAction,\n type ContractCallAction,\n type TronAddress,\n} from '@sun-protocol/sun-sdk-core'\nimport { MAX_UINT256, SELECTOR_SALE } from './selectors.js'\nimport type { LaunchpadSellActionParams } from './types.js'\n\nexport function createLaunchpadApproveAction(\n token: string,\n spender: string,\n amount: string = MAX_UINT256,\n): ContractCallAction {\n return createApproveAction({\n id: `launchpad-approve-${token}`,\n target: token as TronAddress,\n spender,\n amount,\n })\n}\n\nexport function createLaunchpadSellAction(params: LaunchpadSellActionParams): ContractCallAction {\n return createContractCallAction({\n id: `launchpad-sell-${params.token}`,\n target: params.launchpad as TronAddress,\n functionSelector: SELECTOR_SALE,\n parameters: [\n { type: 'address', value: params.token },\n { type: 'uint256', value: params.tokenAmount },\n { type: 'uint256', value: params.minTrxOut },\n ],\n })\n}\n","export enum LaunchpadTokenState {\n NOT_EXIST = 0,\n TRADING = 1,\n READY_TO_LAUNCH = 2,\n LAUNCHED = 3,\n}\n\nexport interface LaunchpadTokenInfo {\n readonly tokenAddress: string\n readonly state: LaunchpadTokenState\n readonly price: string\n readonly launched: boolean\n readonly trxReserve: string\n readonly tokenReserve: string\n}\n\nexport interface LaunchpadBuyActionParams {\n readonly launchpad: string\n readonly token: string\n readonly trxAmount: string\n readonly minTokenOut: string\n}\n\nexport interface LaunchpadSellActionParams {\n readonly launchpad: string\n readonly token: string\n readonly tokenAmount: string\n readonly minTrxOut: string\n}\n","import type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport { GET_TOKEN_PRICE_ABI, GET_TOKEN_STATE_ABI, VIRTUAL_POOLS_ABI } from './abi.js'\nimport {\n SELECTOR_GET_PRICE,\n SELECTOR_GET_TOKEN_STATE,\n SELECTOR_VIRTUAL_POOLS,\n} from './selectors.js'\nimport { LaunchpadTokenState, type LaunchpadTokenInfo } from './types.js'\n\nexport async function getLaunchpadTokenState(runtime: Runtime, token: string): Promise<LaunchpadTokenState> {\n const result = await runtime.readContract<string | number>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_GET_TOKEN_STATE,\n parameters: [{ type: 'address', value: token }],\n abiFunction: GET_TOKEN_STATE_ABI,\n })\n return Number(result) as LaunchpadTokenState\n}\n\nexport async function getLaunchpadTokenPrice(runtime: Runtime, token: string): Promise<string> {\n const result = await runtime.readContract<string | number | bigint>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_GET_PRICE,\n parameters: [{ type: 'address', value: token }],\n abiFunction: GET_TOKEN_PRICE_ABI,\n })\n return BigInt(result).toString()\n}\n\nexport async function getLaunchpadVirtualPool(\n runtime: Runtime,\n token: string,\n): Promise<{ trxReserve: string; tokenReserve: string; launched: boolean }> {\n const result = await runtime.readContract<unknown>({\n target: runtime.chain.contracts.launchpad,\n functionSelector: SELECTOR_VIRTUAL_POOLS,\n parameters: [{ type: 'address', value: token }],\n abiFunction: VIRTUAL_POOLS_ABI,\n })\n const values = Array.isArray(result) ? result : [result]\n const rawLaunched = values[2]\n\n return {\n trxReserve: BigInt(values[0] ?? 0).toString(),\n tokenReserve: BigInt(values[1] ?? 0).toString(),\n launched: rawLaunched === true || rawLaunched === 1 || rawLaunched === 'true',\n }\n}\n\nexport async function isLaunchpadTokenLaunched(runtime: Runtime, token: string): Promise<boolean> {\n return (await getLaunchpadTokenState(runtime, token)) === LaunchpadTokenState.LAUNCHED\n}\n\nexport async function getLaunchpadTokenInfo(runtime: Runtime, token: string): Promise<LaunchpadTokenInfo> {\n const state = await getLaunchpadTokenState(runtime, token)\n let price = '0'\n let trxReserve = '0'\n let tokenReserve = '0'\n let launched = state === LaunchpadTokenState.LAUNCHED\n\n if (state === LaunchpadTokenState.TRADING || state === LaunchpadTokenState.LAUNCHED) {\n try {\n const pool = await getLaunchpadVirtualPool(runtime, token)\n trxReserve = pool.trxReserve\n tokenReserve = pool.tokenReserve\n launched = pool.launched\n } catch {\n // Some token states do not expose a readable virtual pool.\n }\n\n if (state === LaunchpadTokenState.TRADING) {\n try {\n price = await getLaunchpadTokenPrice(runtime, token)\n } catch {\n // Price reads may be unavailable for partially initialized tokens.\n }\n }\n }\n\n return { tokenAddress: token, state, price, launched, trxReserve, tokenReserve }\n}\n"],"mappings":"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","names":["createContractCallAction","createContractCallAction","LaunchpadTokenState"]}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@sun-protocol/sun-sdk-launchpad",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "Runtime-neutral SunPump LaunchPad state, quote, read, and transaction action primitives.",
5
+ "keywords": [
6
+ "sun",
7
+ "tron",
8
+ "sunpump",
9
+ "launchpad",
10
+ "defi"
11
+ ],
12
+ "homepage": "https://github.com/sun-protocol/sun-sdk#readme",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/sun-protocol/sun-sdk.git",
16
+ "directory": "packages/launchpad"
17
+ },
18
+ "private": false,
19
+ "type": "module",
20
+ "engines": {
21
+ "node": ">=20"
22
+ },
23
+ "main": "./dist/index.cjs",
24
+ "module": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "sideEffects": false,
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "import": "./dist/index.js",
34
+ "require": "./dist/index.cjs"
35
+ }
36
+ },
37
+ "dependencies": {
38
+ "@sun-protocol/sun-sdk-core": "0.1.0-beta.0",
39
+ "@sun-protocol/sun-sdk-runtime": "0.1.0-beta.0",
40
+ "@sun-protocol/sun-sdk-chains": "0.1.0-beta.0"
41
+ },
42
+ "scripts": {
43
+ "build": "tsup src/index.ts --format esm,cjs --dts --sourcemap --clean --tsconfig ../../tsconfig.base.json",
44
+ "typecheck": "tsc -p tsconfig.json --noEmit",
45
+ "test": "vitest run"
46
+ }
47
+ }