@sun-protocol/sun-sdk-protocols 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.
Files changed (60) hide show
  1. package/README.md +30 -0
  2. package/dist/chunk-5XDX5563.js +99 -0
  3. package/dist/chunk-5XDX5563.js.map +1 -0
  4. package/dist/chunk-C2YCVBPI.js +212 -0
  5. package/dist/chunk-C2YCVBPI.js.map +1 -0
  6. package/dist/chunk-ECCGOXNA.js +1317 -0
  7. package/dist/chunk-ECCGOXNA.js.map +1 -0
  8. package/dist/chunk-HD2S3Q7L.js +746 -0
  9. package/dist/chunk-HD2S3Q7L.js.map +1 -0
  10. package/dist/chunk-L5TZCDPH.js +561 -0
  11. package/dist/chunk-L5TZCDPH.js.map +1 -0
  12. package/dist/chunk-OM4OW4KB.js +224 -0
  13. package/dist/chunk-OM4OW4KB.js.map +1 -0
  14. package/dist/chunk-PEGREDLT.js +935 -0
  15. package/dist/chunk-PEGREDLT.js.map +1 -0
  16. package/dist/chunk-TSHXXRH2.js +103 -0
  17. package/dist/chunk-TSHXXRH2.js.map +1 -0
  18. package/dist/chunk-VFVKMC4H.js +521 -0
  19. package/dist/chunk-VFVKMC4H.js.map +1 -0
  20. package/dist/chunk-YMGZDXI4.js +1209 -0
  21. package/dist/chunk-YMGZDXI4.js.map +1 -0
  22. package/dist/common-8VQQ0FSU.d.cts +146 -0
  23. package/dist/common-8VQQ0FSU.d.ts +146 -0
  24. package/dist/execute-BNKh6dT6.d.cts +187 -0
  25. package/dist/execute-CVhcKZxF.d.ts +187 -0
  26. package/dist/index.cjs +5619 -0
  27. package/dist/index.cjs.map +1 -0
  28. package/dist/index.d.cts +139 -0
  29. package/dist/index.d.ts +139 -0
  30. package/dist/index.js +200 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/intents-BSXq1HvW.d.cts +200 -0
  33. package/dist/intents-CwOttD75.d.ts +200 -0
  34. package/dist/liquidity/index.cjs +2441 -0
  35. package/dist/liquidity/index.cjs.map +1 -0
  36. package/dist/liquidity/index.d.cts +83 -0
  37. package/dist/liquidity/index.d.ts +83 -0
  38. package/dist/liquidity/index.js +32 -0
  39. package/dist/liquidity/index.js.map +1 -0
  40. package/dist/positions/index.cjs +1544 -0
  41. package/dist/positions/index.cjs.map +1 -0
  42. package/dist/positions/index.d.cts +159 -0
  43. package/dist/positions/index.d.ts +159 -0
  44. package/dist/positions/index.js +25 -0
  45. package/dist/positions/index.js.map +1 -0
  46. package/dist/pump/index.cjs +1178 -0
  47. package/dist/pump/index.cjs.map +1 -0
  48. package/dist/pump/index.d.cts +16 -0
  49. package/dist/pump/index.d.ts +16 -0
  50. package/dist/pump/index.js +29 -0
  51. package/dist/pump/index.js.map +1 -0
  52. package/dist/swap/index.cjs +2259 -0
  53. package/dist/swap/index.cjs.map +1 -0
  54. package/dist/swap/index.d.cts +33 -0
  55. package/dist/swap/index.d.ts +33 -0
  56. package/dist/swap/index.js +61 -0
  57. package/dist/swap/index.js.map +1 -0
  58. package/dist/types-BTPdCC7k.d.cts +160 -0
  59. package/dist/types-BfrouFmO.d.ts +160 -0
  60. package/package.json +94 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/pump/index.ts","../../src/pump/client.ts","../../src/context.ts","../../src/execute-http-action.ts","../../src/pump/buy.ts","../../src/common.ts","../../src/execute-plan.ts","../../src/errors.ts","../../src/internal/v2-swap-action.ts","../../src/swap/v2-execute.ts","../../src/pump/execute.ts","../../src/pump/plan-buy.ts","../../src/pump/v2.ts","../../src/pump/intents.ts","../../src/pump/workflow.ts","../../src/pump/launch.ts","../../src/pump/launch-client.ts","../../src/pump/sell.ts","../../src/pump/plan-sell.ts","../../src/internal/intents.ts"],"sourcesContent":["export {\n createPumpClient,\n PumpClient,\n} from './client.js'\nexport { PumpBuyClient } from './buy.js'\nexport { createPumpExecutor } from './execute.js'\nexport { PumpLaunchClient } from './launch-client.js'\nexport { planPumpAgentLaunch } from './launch.js'\nexport { planPumpBuy } from './plan-buy.js'\nexport { planPumpSell } from './plan-sell.js'\nexport { PumpSellClient } from './sell.js'\nexport {\n SUNPUMP_LAUNCHPAD_PROTOCOL_ID,\n SUNPUMP_V2_PROTOCOL_ID,\n} from './intents.js'\nexport type {\n AgentTokenLaunchParams,\n PumpBuyClientShape,\n PumpBuyInput,\n PumpBuyExactTokenQuote,\n PumpBuyQuote,\n PumpClientShape,\n PumpLaunchClientShape,\n PumpQuoteBuyExactTokenInput,\n PumpQuoteBuyInput,\n PumpQuoteSellInput,\n PumpSellApprovalMode,\n PumpSellClientShape,\n PumpSellInput,\n PumpSellQuote,\n PumpTokenHttpClient,\n PumpTokenInput,\n} from './types.js'\nexport type { TransactionPlan } from '../types/plan.js'\n","import type { SunPumpQuery } from '@sun-protocol/sun-sdk-api'\nimport {\n getLaunchpadTokenBalance,\n getLaunchpadTokenInfo,\n getLaunchpadTokenState,\n readLaunchpadAllowance,\n} from '@sun-protocol/sun-sdk-launchpad'\nimport { SDKError, assertTronAddress } from '@sun-protocol/sun-sdk-core'\nimport { requireRuntime, type ProtocolsContext } from '../context.js'\nimport { PumpBuyClient } from './buy.js'\nimport { PumpLaunchClient } from './launch-client.js'\nimport { PumpSellClient } from './sell.js'\nimport type {\n PumpClientShape,\n PumpTokenInput,\n} from './types.js'\n\nexport class PumpClient implements PumpClientShape {\n readonly buy: PumpBuyClient\n readonly sell: PumpSellClient\n readonly launch: PumpLaunchClient\n\n readonly tokens = {\n list: async (query: SunPumpQuery = {}) => this.requireApi().listTokens(query),\n get: async (token: string) => this.requireApi().getToken(token),\n search: async (query: SunPumpQuery = {}) => this.requireApi().searchTokens(query),\n searchV2: async (query: SunPumpQuery = {}) => this.requireApi().searchTokensV2(query),\n byOwner: async (query: SunPumpQuery) => this.requireApi().tokensByOwner(query),\n holders: async (query: SunPumpQuery) => this.requireApi().tokenHolders(query),\n holdersV2: async (query: SunPumpQuery) => this.requireApi().tokenHoldersV2(query),\n favors: async (query: SunPumpQuery) => this.requireApi().userFavors(query),\n ranking: async (query: SunPumpQuery) => this.requireApi().ranking(query),\n kingOfHill: async () => this.requireApi().kingOfHill(),\n pumpList: async () => this.requireApi().pumpTokenList(),\n transactions: async (token: string, query: SunPumpQuery = {}) =>\n this.requireApi().tokenTransactions(token, query),\n ownerTransactions: async (owner: string, query: SunPumpQuery = {}) =>\n this.requireApi().userTransactions(owner, query),\n }\n\n constructor(private readonly context: ProtocolsContext) {\n this.buy = new PumpBuyClient(context)\n this.sell = new PumpSellClient(context)\n this.launch = new PumpLaunchClient(context)\n }\n\n state(input: PumpTokenInput) {\n return getLaunchpadTokenState(\n requireRuntime(this.context, 'Pump state read'),\n assertTronAddress(input.token, 'token'),\n )\n }\n\n info(input: PumpTokenInput) {\n return getLaunchpadTokenInfo(\n requireRuntime(this.context, 'Pump token info read'),\n assertTronAddress(input.token, 'token'),\n )\n }\n\n balance(input: PumpTokenInput & { readonly owner: string }) {\n return getLaunchpadTokenBalance(\n requireRuntime(this.context, 'Pump balance read'),\n assertTronAddress(input.token, 'token'),\n input.owner,\n )\n }\n\n allowance(input: PumpTokenInput & { readonly owner: string; readonly spender?: string }) {\n return readLaunchpadAllowance(\n requireRuntime(this.context, 'Pump allowance read'),\n assertTronAddress(input.token, 'token'),\n input.owner,\n input.spender ?? this.context.chain.contracts.launchpad,\n )\n }\n\n async portfolio(owner: string, query: SunPumpQuery = {}) {\n return this.requireApi().portfolio(owner, query)\n }\n\n private requireApi() {\n if (!this.context.sunPumpApi) {\n throw new SDKError('SDK_UNSUPPORTED_NETWORK', 'SunPump API is unavailable on this network', {\n network: this.context.network,\n })\n }\n return this.context.sunPumpApi\n }\n}\n\nexport function createPumpClient(context: ProtocolsContext): PumpClient {\n return new PumpClient(context)\n}\n","import {\n RouterApiClient,\n SunPumpApiClient,\n defaultFetch,\n defaultJsonParser,\n getServerTime,\n type FetchLike,\n type JsonParser,\n} from '@sun-protocol/sun-sdk-api'\nimport {\n getChainConfig,\n getNetworkEndpoints,\n type ChainConfig,\n type NetworkEndpoints,\n} from '@sun-protocol/sun-sdk-chains'\nimport {\n SDKError,\n assertTronAddress,\n type Network,\n type TronAddress,\n} from '@sun-protocol/sun-sdk-core'\nimport { createRuntime, type Runtime, type WalletAdapter } from '@sun-protocol/sun-sdk-runtime'\nimport { executeHttpAction } from './execute-http-action.js'\nimport type { TransactionPlanExecutor } from './execute-plan.js'\nimport type {\n ProtocolAdapterDependencies,\n ContractOverrides,\n ProtocolContractName,\n SunSDKCreateOptions,\n} from './types/options.js'\n\nexport interface ProtocolsContext {\n readonly network: Network\n readonly chain: ChainConfig\n readonly endpoints: NetworkEndpoints\n readonly runtime?: Runtime\n readonly fetchImpl: FetchLike\n readonly jsonParser?: JsonParser\n readonly routerApi: RouterApiClient\n readonly sunPumpApi?: SunPumpApiClient\n readonly adapters: ProtocolAdapterDependencies\n readonly now: () => number\n readonly getTransactionTime: () => Promise<number>\n readonly idFactory: () => string\n}\n\nfunction createDefaultIdFactory(): () => string {\n let nextPlanId = 0\n return () => {\n nextPlanId += 1\n return `sun-plan-${nextPlanId}`\n }\n}\n\n/**\n * Creates the public context used by staged transaction orchestration.\n *\n * Keep this available to consumers that render and execute TransactionPlan\n * actions one step at a time instead of using a client's execute() shortcut.\n */\nexport function createProtocolsContext(options: SunSDKCreateOptions): ProtocolsContext {\n if (options.runtime && (options.tronClient || options.wallet || options.getWallet || options.onSubmitted)) {\n throw new SDKError(\n 'SDK_INVALID_ARGUMENT',\n 'Use either runtime or tronClient/wallet/onSubmitted when creating a protocol client',\n )\n }\n if (options.wallet && !options.tronClient) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'wallet requires a tronClient')\n }\n if (options.getWallet && !options.tronClient) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'getWallet requires a tronClient')\n }\n if (options.wallet && options.getWallet) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'Use either wallet or getWallet when creating a protocol client')\n }\n\n const runtime = options.runtime ?? (options.tronClient\n ? createRuntime({\n network: options.network,\n tronClient: options.tronClient,\n ...(options.wallet ? { wallet: options.wallet } : {}),\n ...(options.getWallet ? { getWallet: options.getWallet } : {}),\n ...(options.onSubmitted ? { onSubmitted: options.onSubmitted } : {}),\n })\n : undefined)\n\n if (runtime && runtime.network !== options.network) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'Protocols runtime network mismatch', {\n sdkNetwork: options.network,\n runtimeNetwork: runtime.network,\n })\n }\n\n const chain = getChainConfig(options.network)\n const endpoints = { ...getNetworkEndpoints(options.network), ...options.endpoints }\n const fetchImpl = options.fetchImpl ?? defaultFetch\n const jsonParser = options.jsonParser ?? defaultJsonParser\n const now = options.now ?? Date.now\n const getTransactionTime = options.getTransactionTime ?? (() => getServerTime(endpoints.time, fetchImpl, jsonParser))\n const sunPumpApi = options.clients?.sunPumpApi ??\n (endpoints.sunPump\n ? new SunPumpApiClient({ baseUrl: endpoints.sunPump, fetchImpl, jsonParser })\n : undefined)\n\n return {\n network: options.network,\n chain,\n endpoints,\n ...(runtime ? { runtime } : {}),\n fetchImpl,\n jsonParser,\n routerApi: options.clients?.routerApi ?? new RouterApiClient({ fetchImpl, jsonParser }),\n ...(sunPumpApi ? { sunPumpApi } : {}),\n adapters: options.adapters ?? {},\n now,\n getTransactionTime: async () => {\n try {\n const timestamp = await getTransactionTime()\n if (Number.isSafeInteger(timestamp) && timestamp > 0) return timestamp\n } catch {\n // Preserve the local-time fallback, sampled after the request fails.\n }\n return now()\n },\n idFactory: options.idFactory ?? createDefaultIdFactory(),\n }\n}\n\nexport function requireRuntime(context: ProtocolsContext, operation: string): Runtime {\n if (!context.runtime) {\n throw new SDKError('SDK_RUNTIME_ERROR', `${operation} requires a runtime`, {\n operation,\n network: context.network,\n })\n }\n return context.runtime\n}\n\nexport function resolveProtocolContract(\n context: ProtocolsContext,\n overrides: ContractOverrides | undefined,\n name: ProtocolContractName,\n): TronAddress {\n const configured = context.chain.contracts as Partial<Record<ProtocolContractName, TronAddress>>\n const address = overrides?.[name] ?? configured[name]\n if (!address) {\n throw new SDKError('SDK_INVALID_ARGUMENT', `No configured address for ${name}`, { name })\n }\n return assertTronAddress(address, name)\n}\n\nexport async function requireWalletAddress(\n context: ProtocolsContext,\n operation: string,\n): Promise<TronAddress> {\n return (await requireWalletSnapshot(context, operation)).address\n}\n\nexport interface ProtocolWalletSnapshot {\n readonly wallet: WalletAdapter\n readonly address: TronAddress\n}\n\n/** Resolves one wallet adapter for the current plan boundary. */\nexport async function requireWalletSnapshot(\n context: ProtocolsContext,\n operation: string,\n): Promise<ProtocolWalletSnapshot> {\n const runtime = requireRuntime(context, operation)\n const wallet = await runtime.requireWallet(operation)\n return {\n wallet,\n address: assertTronAddress(await wallet.getAddress(), 'wallet address'),\n }\n}\n\n/** Creates the base public executor for staged TransactionPlan execution. */\nexport function createContextExecutor(context: ProtocolsContext): TransactionPlanExecutor {\n const runtime = context.runtime\n let walletPromise: ReturnType<Runtime['requireWallet']> | undefined\n const requireExecutionWallet = () => {\n walletPromise ??= runtime?.requireWallet('transaction plan execution')\n if (!walletPromise) {\n return Promise.reject(new SDKError('SDK_RUNTIME_ERROR', 'Transaction plan execution requires a runtime'))\n }\n return walletPromise\n }\n return {\n network: context.network,\n ...(runtime\n ? {\n getAddress: async () => {\n const wallet = await requireExecutionWallet()\n return assertTronAddress(await wallet.getAddress(), 'wallet address')\n },\n sendAction: async (action: Parameters<Runtime['sendAction']>[0]) => {\n const wallet = await requireExecutionWallet()\n return runtime.sendAction(action, { wallet })\n },\n ...(runtime.waitForTransactionReceipt\n ? { waitForTransactionReceipt: runtime.waitForTransactionReceipt.bind(runtime) }\n : {}),\n signTypedData: async (payload: Parameters<Runtime['signTypedData']>[0]) => {\n const wallet = await requireExecutionWallet()\n return runtime.signTypedData(payload, { wallet })\n },\n }\n : {}),\n executeHttpAction: (action) => executeHttpAction(action, context.fetchImpl, context.jsonParser),\n }\n}\n","import {\n defaultJsonParser,\n requestJson,\n type FetchLike,\n type JsonParser,\n} from '@sun-protocol/sun-sdk-api'\nimport {\n SDKError,\n type HttpRequestAction,\n type TransactionAction,\n} from '@sun-protocol/sun-sdk-core'\n\nexport async function executeHttpAction(\n action: TransactionAction,\n fetchImpl: FetchLike,\n jsonParser: JsonParser = defaultJsonParser,\n): Promise<unknown> {\n if (action.type !== 'http-request' || action.execute !== 'api') {\n throw new SDKError('SDK_INVALID_ARGUMENT', `Action ${action.id} is not an HTTP action`, {\n actionId: action.id,\n actionType: action.type,\n })\n }\n\n const request = (action as HttpRequestAction).request\n const headers: Record<string, string> = {\n Accept: 'application/json',\n ...request.headers,\n }\n let body: BodyInit | undefined\n if (request.body !== undefined) {\n if (typeof request.body === 'string') {\n body = request.body\n } else {\n body = JSON.stringify(request.body)\n if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'\n }\n }\n\n return requestJson(request.url, {\n service: 'Protocols HTTP action',\n fetchImpl,\n jsonParser,\n init: {\n method: request.method,\n headers,\n ...(body !== undefined ? { body } : {}),\n },\n })\n}\n","import {\n getLaunchpadTokenState,\n LaunchpadTokenState,\n quoteLaunchpadBuyExactToken,\n quoteLaunchpadBuyExactTrx,\n} from '@sun-protocol/sun-sdk-launchpad'\nimport {\n SDKError,\n assertTronAddress,\n type TransactionAction,\n} from '@sun-protocol/sun-sdk-core'\nimport { normalizeBaseUnitAmount } from '../common.js'\nimport { requireRuntime, type ProtocolsContext } from '../context.js'\nimport {\n executePlanAction,\n executePlanTransactions,\n executeTransactionPlan,\n isTransactionPlan,\n} from '../execute-plan.js'\nimport type {\n ExecutedActionResult,\n TransactionPlan,\n TransactionPlanExecutionResult,\n} from '../types/plan.js'\nimport { createPumpExecutor } from './execute.js'\nimport { planPumpBuy } from './plan-buy.js'\nimport type {\n PumpBuyClientShape,\n PumpBuyExactTokenQuote,\n PumpBuyInput,\n PumpBuyQuote,\n PumpQuoteBuyExactTokenInput,\n PumpQuoteBuyInput,\n} from './types.js'\nimport {\n pumpV2BuyPath,\n readPumpV2AmountsIn,\n readPumpV2AmountsOut,\n requirePumpV2Amount,\n} from './v2.js'\nimport { assertPumpPlan } from './workflow.js'\n\nconst PUMP_BUY_OPERATIONS = [\n 'launchpad-buy-exact-trx',\n 'launchpad-buy-exact-token',\n 'pump-v2-buy-exact-trx',\n 'pump-v2-buy-exact-token',\n] as const\n\nasync function quotePumpBuyByTrx(\n context: ProtocolsContext,\n input: PumpQuoteBuyInput,\n): Promise<PumpBuyQuote> {\n const runtime = requireRuntime(context, 'Pump buy quote')\n const token = assertTronAddress(input.token, 'token')\n const trxAmount = normalizeBaseUnitAmount(input.trxAmount, 'trxAmount')\n const state = await getLaunchpadTokenState(runtime, token)\n if (state === LaunchpadTokenState.TRADING) {\n return quoteLaunchpadBuyExactTrx(runtime, token, trxAmount)\n }\n if (state === LaunchpadTokenState.LAUNCHED) {\n const path = pumpV2BuyPath(context, token)\n const amounts = await readPumpV2AmountsOut(context, runtime, trxAmount, path)\n return {\n tokenAmount: requirePumpV2Amount(amounts, amounts.length - 1, 'pump-v2-buy-quote'),\n fee: '0',\n }\n }\n throw new SDKError('SDK_CONTRACT_ERROR', 'Token is not trading on SunPump', { token, state })\n}\n\nasync function quotePumpBuyByToken(\n context: ProtocolsContext,\n input: PumpQuoteBuyExactTokenInput,\n): Promise<PumpBuyExactTokenQuote> {\n const runtime = requireRuntime(context, 'Pump exact-token buy quote')\n const token = assertTronAddress(input.token, 'token')\n const tokenAmount = normalizeBaseUnitAmount(input.tokenAmount, 'tokenAmount')\n const state = await getLaunchpadTokenState(runtime, token)\n if (state === LaunchpadTokenState.TRADING) {\n return quoteLaunchpadBuyExactToken(runtime, token, tokenAmount)\n }\n if (state === LaunchpadTokenState.LAUNCHED) {\n const path = pumpV2BuyPath(context, token)\n const amounts = await readPumpV2AmountsIn(context, runtime, tokenAmount, path)\n return {\n trxAmount: requirePumpV2Amount(amounts, 0, 'pump-v2-buy-exact-token-quote'),\n fee: '0',\n }\n }\n throw new SDKError('SDK_CONTRACT_ERROR', 'Token is not trading on SunPump', { token, state })\n}\n\nexport class PumpBuyClient implements PumpBuyClientShape {\n constructor(private readonly context: ProtocolsContext) {}\n\n quote(input: PumpQuoteBuyInput): Promise<PumpBuyQuote>\n quote(input: PumpQuoteBuyExactTokenInput): Promise<PumpBuyExactTokenQuote>\n quote(\n input: PumpQuoteBuyInput | PumpQuoteBuyExactTokenInput,\n ): Promise<PumpBuyQuote | PumpBuyExactTokenQuote> {\n const candidate = input as Partial<PumpQuoteBuyInput & PumpQuoteBuyExactTokenInput>\n const hasTrxAmount = candidate.trxAmount !== undefined\n const hasTokenAmount = candidate.tokenAmount !== undefined\n if (hasTrxAmount === hasTokenAmount) {\n throw new SDKError(\n 'SDK_INVALID_ARGUMENT',\n 'Pump buy quote requires exactly one of trxAmount or tokenAmount',\n )\n }\n return hasTrxAmount\n ? quotePumpBuyByTrx(this.context, input as PumpQuoteBuyInput)\n : quotePumpBuyByToken(this.context, input as PumpQuoteBuyExactTokenInput)\n }\n\n plan(input: PumpBuyInput): Promise<TransactionPlan> {\n return planPumpBuy(this.context, input)\n }\n\n executeAction(action: TransactionAction): Promise<ExecutedActionResult> {\n return executePlanAction(action, createPumpExecutor(this.context))\n }\n\n submit(plan: TransactionPlan): Promise<TransactionPlanExecutionResult> {\n assertPumpPlan(plan, PUMP_BUY_OPERATIONS, 'Pump buy')\n return executePlanTransactions(plan, createPumpExecutor(this.context))\n }\n\n async execute(\n input: PumpBuyInput | TransactionPlan,\n ): Promise<TransactionPlanExecutionResult> {\n const plan = isTransactionPlan(input)\n ? input\n : await planPumpBuy(this.context, input)\n assertPumpPlan(plan, PUMP_BUY_OPERATIONS, 'Pump buy')\n return executeTransactionPlan(plan, createPumpExecutor(this.context))\n }\n}\n","import {\n Percent,\n SDKError,\n assertTronAddress,\n type BigintIsh,\n type TronAddress,\n} from '@sun-protocol/sun-sdk-core'\nimport type { ProtocolsContext } from './context.js'\nimport { requireWalletAddress } from './context.js'\nimport type {\n PlanTimingOptions,\n SlippageInput,\n} from './types/common.js'\n\nconst PERCENT_PATTERN = /^(\\d+)(?:\\.(\\d+))?%$/\nconst BASE_UNIT_PATTERN = /^\\d+$/\n\nexport function parseSlippage(value: SlippageInput): Percent {\n if (value instanceof Percent) {\n validateSlippage(value)\n return value\n }\n\n const match = PERCENT_PATTERN.exec(value)\n if (!match) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'Slippage must be a percentage string', {\n slippage: value,\n })\n }\n\n const whole = match[1] ?? '0'\n const fraction = match[2] ?? ''\n const scale = 10n ** BigInt(fraction.length)\n const percentageUnits = BigInt(whole) * scale + BigInt(fraction || '0')\n const percent = new Percent(percentageUnits.toString(), (100n * scale).toString())\n validateSlippage(percent)\n return percent\n}\n\nexport function validateSlippage(value: Percent): void {\n if (value.lessThan(0) || value.greaterThan(1)) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'Slippage must be between 0% and 100%', {\n slippage: value.toSignificant(),\n })\n }\n}\n\nexport function slippageToBips(value: SlippageInput): number {\n const percent = parseSlippage(value)\n const numerator = BigInt(percent.numerator.toString()) * 10_000n\n const denominator = BigInt(percent.denominator.toString())\n if (numerator % denominator !== 0n) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'Slippage must resolve to a whole basis point', {\n slippage: typeof value === 'string' ? value : value.toSignificant(),\n })\n }\n return Number(numerator / denominator)\n}\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\nexport function normalizeBaseUnitAmount(\n value: BigintIsh,\n label = 'amount',\n options: { allowZero?: boolean } = {},\n): string {\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new SDKError('SDK_INVALID_ARGUMENT', `${label} must be a safe integer`, {\n label,\n value,\n })\n }\n const text = value.toString()\n if (!BASE_UNIT_PATTERN.test(text)) {\n throw new SDKError('SDK_INVALID_ARGUMENT', `${label} must be an unsigned base-unit integer`, {\n label,\n value: text,\n })\n }\n\n const amount = BigInt(text)\n if (options.allowZero ? amount < 0n : amount <= 0n) {\n throw new SDKError('SDK_INVALID_ARGUMENT', `${label} must be ${options.allowZero ? 'non-negative' : 'positive'}`, {\n label,\n value: text,\n })\n }\n return amount.toString()\n}\n\nexport function normalizeDeadline(\n context: ProtocolsContext,\n options: PlanTimingOptions = {},\n): string {\n if (options.deadline !== undefined) {\n return normalizeBaseUnitAmount(options.deadline, 'deadline')\n }\n\n const ttlSeconds = options.ttlSeconds ?? 1_200\n if (!Number.isSafeInteger(ttlSeconds) || ttlSeconds <= 0) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'ttlSeconds must be a positive safe integer', {\n ttlSeconds,\n })\n }\n\n return (BigInt(Math.floor(context.now() / 1_000)) + BigInt(ttlSeconds)).toString()\n}\n\nexport function normalizeTransactionValidForSeconds(value: number | undefined): number {\n const transactionValidForSeconds = value ?? 1_200\n if (!Number.isSafeInteger(transactionValidForSeconds) || transactionValidForSeconds <= 0) {\n throw new SDKError(\n 'SDK_INVALID_ARGUMENT',\n 'transactionValidForSeconds must be a positive safe integer',\n { transactionValidForSeconds },\n )\n }\n return transactionValidForSeconds\n}\n\nexport function normalizeFeeLimit(value: number | undefined, defaultValue: number): number {\n const feeLimit = value ?? defaultValue\n if (!Number.isSafeInteger(feeLimit) || feeLimit <= 0) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'feeLimit must be a positive safe integer in sun', {\n feeLimit,\n })\n }\n return feeLimit\n}\n\nexport async function resolveTransactionDeadline(\n context: ProtocolsContext,\n transactionValidForSeconds: number,\n): Promise<string> {\n const nowSeconds = BigInt(Math.ceil(await context.getTransactionTime() / 1_000))\n return (nowSeconds + BigInt(transactionValidForSeconds)).toString()\n}\n\nexport async function normalizeRecipient(\n context: ProtocolsContext,\n recipient: TronAddress | string | undefined,\n operation: string,\n walletAddress?: TronAddress,\n): Promise<TronAddress> {\n if (recipient !== undefined) return assertTronAddress(recipient, 'recipient')\n if (walletAddress !== undefined) return walletAddress\n return requireWalletAddress(context, operation)\n}\n\nexport function nextPlanId(context: ProtocolsContext, prefix: string): string {\n return `${prefix}-${context.idFactory()}`\n}\n","import {\n SDKError,\n type ContractCallAction,\n type DeferredContractCallAction,\n type Network,\n type TransactionAction,\n type TronAddress,\n} from '@sun-protocol/sun-sdk-core'\nimport type { TypedDataPayload } from '@sun-protocol/sun-sdk-runtime'\nimport type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport {\n normalizeProtocolError,\n withExecutionContext,\n} from './errors.js'\nimport type { ExecutedActionResult, TransactionPlan, TransactionPlanExecutionResult } from './types/plan.js'\n\nexport interface TransactionPlanExecutor {\n readonly network?: Network\n getAddress?(): Promise<TronAddress>\n sendAction?: Runtime['sendAction']\n waitForTransactionReceipt?: NonNullable<Runtime['waitForTransactionReceipt']>\n signTypedData?: Runtime['signTypedData']\n executeHttpAction?(action: TransactionAction): Promise<unknown>\n materializeAction?(\n action: DeferredContractCallAction,\n completedActions: readonly ExecutedActionResult[],\n ): Promise<ContractCallAction>\n}\n\n/** Executes one plan action without retaining any client-side execution state. */\nexport async function executePlanAction(\n action: TransactionAction,\n executor: TransactionPlanExecutor,\n completedActions: readonly ExecutedActionResult[] = [],\n): Promise<ExecutedActionResult> {\n try {\n if (action.waitForReceipt && !executor.waitForTransactionReceipt) {\n throw new SDKError(\n 'SDK_RUNTIME_ERROR',\n `Action ${action.id} requires transaction receipt waiting capability`,\n { actionId: action.id, finality: action.waitForReceipt },\n )\n }\n\n if (action.execute === 'runtime') {\n let actionToSend: ContractCallAction\n let materializedAction: ContractCallAction | undefined\n\n if (action.type === 'deferred-contract-call') {\n if (!executor.materializeAction) {\n throw new SDKError('SDK_RUNTIME_ERROR', `Action ${action.id} requires a deferred action materializer`)\n }\n const resolvedAction = await executor.materializeAction(action, completedActions)\n materializedAction = {\n ...resolvedAction,\n id: action.id,\n ...(action.intent === undefined ? {} : { intent: action.intent }),\n }\n actionToSend = materializedAction\n } else if (action.type === 'contract-call' || action.type === 'approve') {\n actionToSend = action\n } else {\n throw new SDKError(\n 'SDK_RUNTIME_ERROR',\n `Runtime action ${action.id} materialized to unsupported type: ${action.type}`,\n )\n }\n\n if (!executor.sendAction) {\n throw new SDKError('SDK_RUNTIME_ERROR', `Action ${action.id} requires a runtime executor`)\n }\n const result = await executor.sendAction(actionToSend)\n const receipt = action.waitForReceipt && executor.waitForTransactionReceipt\n ? await executor.waitForTransactionReceipt(result.txid, { finality: action.waitForReceipt })\n : undefined\n if (receipt && !receipt.success) {\n throw new SDKError('SDK_CONTRACT_ERROR', `Transaction ${result.txid} failed`, {\n actionId: action.id,\n txid: result.txid,\n receipt,\n })\n }\n return {\n action,\n result,\n txid: result.txid,\n ...(receipt ? { receipt } : {}),\n ...(materializedAction ? { materializedAction } : {}),\n }\n }\n\n if (action.execute === 'wallet-signature') {\n if (!action.typedData) {\n throw new SDKError('SDK_INVALID_ARGUMENT', `Action ${action.id} is missing typedData`)\n }\n if (!executor.signTypedData) {\n throw new SDKError('SDK_WALLET_CAPABILITY_ERROR', `Action ${action.id} requires typed-data signing`)\n }\n const signature = await executor.signTypedData(action.typedData as TypedDataPayload)\n return { action, result: signature }\n }\n\n if (action.execute === 'api') {\n if (!executor.executeHttpAction) {\n throw new SDKError('SDK_RUNTIME_ERROR', `Action ${action.id} requires an API executor`)\n }\n return { action, result: await executor.executeHttpAction(action) }\n }\n\n throw new SDKError('SDK_RUNTIME_ERROR', 'Unsupported action executor')\n } catch (error) {\n const normalized = normalizeProtocolError(\n error,\n action.execute === 'api' ? 'SDK_API_ERROR' : 'SDK_RUNTIME_ERROR',\n `Failed to execute action ${action.id}`,\n )\n throw withExecutionContext(normalized, {\n actionId: action.id,\n completedActionIds: completedActions.map((result) => result.action.id),\n })\n }\n}\n\nexport async function executeTransactionPlan(\n plan: TransactionPlan,\n executor: TransactionPlanExecutor,\n): Promise<TransactionPlanExecutionResult> {\n if (executor.network && executor.network !== plan.network) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'Plan and executor network mismatch', {\n planNetwork: plan.network,\n executorNetwork: executor.network,\n })\n }\n if (plan.owner) {\n if (!executor.getAddress) {\n throw new SDKError('SDK_RUNTIME_ERROR', `Plan ${plan.id} requires a wallet address`, {\n planId: plan.id,\n owner: plan.owner,\n })\n }\n const actualAddress = await executor.getAddress()\n if (actualAddress !== plan.owner) {\n throw new SDKError(\n 'SDK_WALLET_ACCOUNT_MISMATCH',\n 'Transaction plan was created for a different wallet',\n {\n planId: plan.id,\n expectedAddress: plan.owner,\n actualAddress,\n },\n )\n }\n }\n\n const orderedActions = [...plan.approvals, ...plan.transactions]\n const receiptAction = orderedActions.find((action) => action.waitForReceipt !== undefined)\n if (receiptAction && !executor.waitForTransactionReceipt) {\n throw new SDKError(\n 'SDK_RUNTIME_ERROR',\n `Action ${receiptAction.id} requires transaction receipt waiting capability`,\n { planId: plan.id, actionId: receiptAction.id, finality: receiptAction.waitForReceipt },\n )\n }\n const actionResults: ExecutedActionResult[] = []\n const txids: string[] = []\n let finalResult: TransactionPlanExecutionResult['finalResult']\n\n for (const action of orderedActions) {\n const actionResult = await executePlanAction(action, executor, actionResults)\n actionResults.push(actionResult)\n\n if (action.execute === 'runtime') {\n if (!actionResult.txid) {\n throw new SDKError('SDK_RUNTIME_ERROR', `Runtime action ${action.id} did not return a transaction id`)\n }\n txids.push(actionResult.txid)\n const raw = typeof actionResult.result === 'object' && actionResult.result !== null\n ? (actionResult.result as { raw?: unknown }).raw\n : undefined\n finalResult = { type: 'transaction', txid: actionResult.txid, raw }\n continue\n }\n\n if (action.execute === 'wallet-signature') {\n finalResult = { type: 'signature', signature: actionResult.result as string }\n continue\n }\n\n finalResult = { type: 'api', data: actionResult.result }\n }\n\n return {\n plan,\n actions: actionResults,\n txids,\n finalResult,\n }\n}\n\nexport function isTransactionPlan(input: unknown): input is TransactionPlan {\n if (typeof input !== 'object' || input === null) return false\n const candidate = input as Partial<TransactionPlan>\n return Array.isArray(candidate.approvals) && Array.isArray(candidate.transactions)\n}\n\n/** Executes only a plan's final transactions and preserves the caller's original plan. */\nexport async function executePlanTransactions(\n plan: TransactionPlan,\n executor: TransactionPlanExecutor,\n): Promise<TransactionPlanExecutionResult> {\n const result = await executeTransactionPlan(\n { ...plan, approvals: [] },\n executor,\n )\n return { ...result, plan }\n}\n","import {\n SDKError,\n} from '@sun-protocol/sun-sdk-core'\n\nfunction isWalletRejection(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false\n const candidate = error as { code?: unknown; message?: unknown }\n return candidate.code === 4001 ||\n (typeof candidate.message === 'string' && /reject|denied|cancel/i.test(candidate.message))\n}\n\nexport function normalizeProtocolError(\n error: unknown,\n fallbackCode: string,\n message: string,\n context: Record<string, unknown> = {},\n): SDKError<string> {\n if (error instanceof SDKError) return error as SDKError<string>\n const code = isWalletRejection(error) ? 'SDK_WALLET_REJECTED' : fallbackCode\n return new SDKError(code, message, { ...context, cause: error })\n}\n\nexport function withExecutionContext(\n error: SDKError<string>,\n context: {\n readonly actionId: string\n readonly completedActionIds: readonly string[]\n },\n): SDKError<string> {\n return new SDKError<string>(error.code, error.message, {\n ...error.context,\n actionId: context.actionId,\n completedActionIds: context.completedActionIds,\n cause: error,\n })\n}\n","import {\n buildV2SwapEthForExactTokensAction,\n buildV2SwapExactEthForTokensAction,\n buildV2SwapExactTokensForEthAction,\n buildV2SwapExactTokensForTokensAction,\n buildV2SwapTokensForExactEthAction,\n buildV2SwapTokensForExactTokensAction,\n} from '@sun-protocol/sun-sdk-sunswap-v2'\nimport {\n SDKError,\n createDeferredContractCallAction,\n type ContractCallAction,\n type DeferredContractCallAction,\n type JsonObject,\n type TronAddress,\n} from '@sun-protocol/sun-sdk-core'\nimport { resolveTransactionDeadline } from '../common.js'\nimport type { ProtocolsContext } from '../context.js'\n\nexport const V2_SWAP_MATERIALIZATION_KIND = 'sunswap-v2-swap'\n\nexport type V2SwapOperation =\n | 'swap-exact-eth-for-tokens'\n | 'swap-eth-for-exact-tokens'\n | 'swap-exact-tokens-for-eth'\n | 'swap-exact-tokens-for-tokens'\n | 'swap-tokens-for-exact-eth'\n | 'swap-tokens-for-exact-tokens'\n\nexport interface V2SwapMaterializationData {\n readonly operation: V2SwapOperation\n readonly path: readonly TronAddress[]\n readonly recipient: TronAddress\n readonly transactionValidForSeconds: number\n readonly amountIn?: string\n readonly amountOut?: string\n readonly amountOutMin?: string\n readonly amountInMax?: string\n}\n\nfunction requireAmount(data: V2SwapMaterializationData, key: 'amountIn' | 'amountOut' | 'amountOutMin' | 'amountInMax'): string {\n const value = data[key]\n if (value === undefined) {\n throw new SDKError('SDK_RUNTIME_ERROR', `Deferred V2 swap is missing ${key}`, {\n operation: data.operation,\n key,\n })\n }\n return value\n}\n\nexport function createDeferredV2SwapAction(input: {\n readonly data: V2SwapMaterializationData\n}): DeferredContractCallAction {\n return createDeferredContractCallAction({\n id: `sunswap-v2-${input.data.operation}`,\n materialization: {\n kind: V2_SWAP_MATERIALIZATION_KIND,\n data: input.data as unknown as JsonObject,\n },\n })\n}\n\nexport async function materializeV2SwapAction(\n context: ProtocolsContext,\n action: DeferredContractCallAction,\n): Promise<ContractCallAction> {\n if (action.materialization.kind !== V2_SWAP_MATERIALIZATION_KIND) {\n throw new SDKError('SDK_RUNTIME_ERROR', `Unsupported deferred action kind: ${action.materialization.kind}`)\n }\n\n const data = action.materialization.data as unknown as V2SwapMaterializationData\n const options = {\n network: context.network,\n id: action.id,\n path: data.path,\n recipient: data.recipient,\n deadline: await resolveTransactionDeadline(context, data.transactionValidForSeconds),\n }\n\n switch (data.operation) {\n case 'swap-exact-eth-for-tokens':\n return buildV2SwapExactEthForTokensAction({\n ...options,\n amountIn: requireAmount(data, 'amountIn'),\n amountOutMin: requireAmount(data, 'amountOutMin'),\n })\n case 'swap-eth-for-exact-tokens':\n return buildV2SwapEthForExactTokensAction({\n ...options,\n amountOut: requireAmount(data, 'amountOut'),\n amountInMax: requireAmount(data, 'amountInMax'),\n })\n case 'swap-exact-tokens-for-eth':\n return buildV2SwapExactTokensForEthAction({\n ...options,\n amountIn: requireAmount(data, 'amountIn'),\n amountOutMin: requireAmount(data, 'amountOutMin'),\n })\n case 'swap-exact-tokens-for-tokens':\n return buildV2SwapExactTokensForTokensAction({\n ...options,\n amountIn: requireAmount(data, 'amountIn'),\n amountOutMin: requireAmount(data, 'amountOutMin'),\n })\n case 'swap-tokens-for-exact-eth':\n return buildV2SwapTokensForExactEthAction({\n ...options,\n amountOut: requireAmount(data, 'amountOut'),\n amountInMax: requireAmount(data, 'amountInMax'),\n })\n case 'swap-tokens-for-exact-tokens':\n return buildV2SwapTokensForExactTokensAction({\n ...options,\n amountOut: requireAmount(data, 'amountOut'),\n amountInMax: requireAmount(data, 'amountInMax'),\n })\n }\n}\n","import { createContextExecutor, type ProtocolsContext } from '../context.js'\nimport type { TransactionPlanExecutor } from '../execute-plan.js'\nimport { materializeV2SwapAction } from '../internal/v2-swap-action.js'\n\n/** Creates an executor for standalone V2 swaps. */\nexport function createV2SwapExecutor(context: ProtocolsContext): TransactionPlanExecutor {\n return {\n ...createContextExecutor(context),\n materializeAction: (action) => materializeV2SwapAction(context, action),\n }\n}\n","import type { ProtocolsContext } from '../context.js'\nimport { createV2SwapExecutor } from '../swap/v2-execute.js'\n\n/** Creates an executor for Pump plans, including launched-token V2 actions. */\nexport function createPumpExecutor(context: ProtocolsContext) {\n return createV2SwapExecutor(context)\n}\n","import {\n applySlippageMax,\n applySlippageMin,\n createLaunchpadBuyAction,\n getLaunchpadTokenState,\n LaunchpadTokenState,\n quoteLaunchpadBuyExactToken,\n quoteLaunchpadBuyExactTrx,\n} from '@sun-protocol/sun-sdk-launchpad'\nimport { SDKError, assertTronAddress } from '@sun-protocol/sun-sdk-core'\nimport {\n nextPlanId,\n normalizeBaseUnitAmount,\n normalizeRecipient,\n normalizeTransactionValidForSeconds,\n slippageToBips,\n} from '../common.js'\nimport { requireRuntime, requireWalletSnapshot, type ProtocolsContext } from '../context.js'\nimport { createDeferredV2SwapAction } from '../internal/v2-swap-action.js'\nimport type { TransactionPlan } from '../types/plan.js'\nimport type { PumpBuyInput } from './types.js'\nimport {\n pumpV2BuyPath,\n readPumpV2AmountsIn,\n readPumpV2AmountsOut,\n requirePumpV2Amount,\n} from './v2.js'\nimport {\n pumpIntentScope,\n SUNPUMP_LAUNCHPAD_PROTOCOL_ID,\n SUNPUMP_V2_PROTOCOL_ID,\n} from './intents.js'\n\ntype PumpBuyMode =\n | {\n readonly kind: 'exact-trx'\n readonly trxAmount: string\n }\n | {\n readonly kind: 'exact-token'\n readonly tokenAmount: string\n }\n\nfunction normalizePumpBuyMode(input: PumpBuyInput): PumpBuyMode {\n const trxAmount = input.trxAmount\n const tokenAmount = input.tokenAmount\n if ((trxAmount === undefined) === (tokenAmount === undefined)) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'Pump buy requires exactly one of trxAmount or tokenAmount', {\n trxAmount,\n tokenAmount,\n })\n }\n if (trxAmount !== undefined) {\n return {\n kind: 'exact-trx',\n trxAmount: normalizeBaseUnitAmount(trxAmount, 'trxAmount'),\n }\n }\n if (tokenAmount === undefined) {\n throw new SDKError('SDK_INVALID_ARGUMENT', 'Pump buy requires tokenAmount', {\n trxAmount,\n tokenAmount,\n })\n }\n return {\n kind: 'exact-token',\n tokenAmount: normalizeBaseUnitAmount(tokenAmount, 'tokenAmount'),\n }\n}\n\nexport async function planPumpBuy(\n context: ProtocolsContext,\n input: PumpBuyInput,\n): Promise<TransactionPlan> {\n const runtime = requireRuntime(context, 'Pump buy planning')\n const { address: owner } = await requireWalletSnapshot(context, 'Pump buy planning')\n const token = assertTronAddress(input.token, 'token')\n const mode = normalizePumpBuyMode(input)\n const state = await getLaunchpadTokenState(runtime, token)\n if (state !== LaunchpadTokenState.TRADING && state !== LaunchpadTokenState.LAUNCHED) {\n throw new SDKError('SDK_CONTRACT_ERROR', 'Token is not trading on SunPump', {\n token,\n state,\n })\n }\n\n const slippageBips = slippageToBips(input.slippage ?? '5%')\n\n if (state === LaunchpadTokenState.TRADING) {\n let trxAmount: string\n let quotedTokenAmount: string\n let fee: string\n let operation: 'launchpad-buy-exact-trx' | 'launchpad-buy-exact-token'\n let requestedTokenAmount: string | undefined\n\n if (mode.kind === 'exact-trx') {\n const quote = await quoteLaunchpadBuyExactTrx(runtime, token, mode.trxAmount)\n trxAmount = mode.trxAmount\n quotedTokenAmount = quote.tokenAmount\n fee = quote.fee\n operation = 'launchpad-buy-exact-trx'\n } else {\n const quote = await quoteLaunchpadBuyExactToken(runtime, token, mode.tokenAmount)\n trxAmount = quote.trxAmount\n quotedTokenAmount = mode.tokenAmount\n fee = quote.fee\n operation = 'launchpad-buy-exact-token'\n requestedTokenAmount = mode.tokenAmount\n }\n\n const minTokenOut = applySlippageMin(BigInt(quotedTokenAmount), slippageBips).toString()\n const transaction = {\n ...createLaunchpadBuyAction({\n launchpad: context.chain.contracts.launchpad,\n token,\n trxAmount,\n minTokenOut,\n }),\n intent: {\n kind: 'pump-buy' as const,\n scope: pumpIntentScope(SUNPUMP_LAUNCHPAD_PROTOCOL_ID, operation),\n token,\n },\n }\n\n return {\n id: nextPlanId(context, 'pump-buy'),\n kind: 'pump',\n network: context.network,\n owner,\n summary: {\n title: 'Buy SunPump token',\n lines: [`Spend ${trxAmount} sun`, `Receive at least ${minTokenOut} token units`],\n },\n approvals: [],\n transactions: [transaction],\n metadata: {\n operation,\n token,\n trxAmount,\n ...(requestedTokenAmount ? { tokenAmount: requestedTokenAmount } : {}),\n quotedTokenAmount,\n quotedTrxAmount: trxAmount,\n fee,\n minTokenOut,\n slippageBips,\n },\n }\n }\n\n const path = pumpV2BuyPath(context, token)\n const recipient = await normalizeRecipient(context, input.recipient, 'Pump V2 buy recipient', owner)\n const transactionValidForSeconds = normalizeTransactionValidForSeconds(input.transactionValidForSeconds)\n\n if (mode.kind === 'exact-trx') {\n const amounts = await readPumpV2AmountsOut(context, runtime, mode.trxAmount, path)\n const quotedTokenAmount = requirePumpV2Amount(amounts, amounts.length - 1, 'pump-v2-buy-exact-trx')\n const minTokenOut = applySlippageMin(BigInt(quotedTokenAmount), slippageBips).toString()\n const transaction = {\n ...createDeferredV2SwapAction({\n data: {\n operation: 'swap-exact-eth-for-tokens',\n amountIn: mode.trxAmount,\n amountOutMin: minTokenOut,\n path,\n recipient,\n transactionValidForSeconds,\n },\n }),\n intent: {\n kind: 'pump-buy' as const,\n scope: pumpIntentScope(SUNPUMP_V2_PROTOCOL_ID, 'buy-exact-trx'),\n token,\n },\n }\n\n return {\n id: nextPlanId(context, 'pump-buy'),\n kind: 'pump',\n network: context.network,\n owner,\n summary: {\n title: 'Buy launched Pump token',\n lines: [`Spend ${mode.trxAmount} sun`, `Receive at least ${minTokenOut} token units`],\n },\n approvals: [],\n transactions: [transaction],\n metadata: {\n operation: 'pump-v2-buy-exact-trx',\n token,\n trxAmount: mode.trxAmount,\n quotedTokenAmount,\n minTokenOut,\n slippageBips,\n path,\n recipient,\n transactionValidForSeconds,\n },\n }\n }\n\n const amounts = await readPumpV2AmountsIn(context, runtime, mode.tokenAmount, path)\n const quotedTrxAmount = requirePumpV2Amount(amounts, 0, 'pump-v2-buy-exact-token')\n const maxTrxIn = applySlippageMax(BigInt(quotedTrxAmount), slippageBips).toString()\n const transaction = {\n ...createDeferredV2SwapAction({\n data: {\n operation: 'swap-eth-for-exact-tokens',\n amountOut: mode.tokenAmount,\n amountInMax: maxTrxIn,\n path,\n recipient,\n transactionValidForSeconds,\n },\n }),\n intent: {\n kind: 'pump-buy' as const,\n scope: pumpIntentScope(SUNPUMP_V2_PROTOCOL_ID, 'buy-exact-token'),\n token,\n },\n }\n\n return {\n id: nextPlanId(context, 'pump-buy'),\n kind: 'pump',\n network: context.network,\n owner,\n summary: {\n title: 'Buy launched Pump token',\n lines: [`Spend at most ${maxTrxIn} sun`, `Receive ${mode.tokenAmount} token units`],\n },\n approvals: [],\n transactions: [transaction],\n metadata: {\n operation: 'pump-v2-buy-exact-token',\n token,\n tokenAmount: mode.tokenAmount,\n quotedTrxAmount,\n maxTrxIn,\n slippageBips,\n path,\n recipient,\n transactionValidForSeconds,\n },\n }\n}\n","import {\n buildV2RouterAmountsInRead,\n buildV2RouterAmountsOutRead,\n normalizeV2AmountsResult,\n} from '@sun-protocol/sun-sdk-sunswap-v2'\nimport { SDKError, type TronAddress } from '@sun-protocol/sun-sdk-core'\nimport type { Runtime } from '@sun-protocol/sun-sdk-runtime'\nimport type { ProtocolsContext } from '../context.js'\n\nexport function pumpV2BuyPath(context: ProtocolsContext, token: TronAddress): readonly TronAddress[] {\n return [context.chain.contracts.wtrx, token]\n}\n\nexport function pumpV2SellPath(context: ProtocolsContext, token: TronAddress): readonly TronAddress[] {\n return [token, context.chain.contracts.wtrx]\n}\n\nexport async function readPumpV2AmountsOut(\n context: ProtocolsContext,\n runtime: Runtime,\n amountIn: string,\n path: readonly TronAddress[],\n): Promise<readonly string[]> {\n const result = await runtime.readContract<unknown>(\n buildV2RouterAmountsOutRead({\n network: context.network,\n amountIn,\n path,\n }),\n )\n return normalizeV2AmountsResult(result)\n}\n\nexport async function readPumpV2AmountsIn(\n context: ProtocolsContext,\n runtime: Runtime,\n amountOut: string,\n path: readonly TronAddress[],\n): Promise<readonly string[]> {\n const result = await runtime.readContract<unknown>(\n buildV2RouterAmountsInRead({\n network: context.network,\n amountOut,\n path,\n }),\n )\n return normalizeV2AmountsResult(result)\n}\n\nexport function requirePumpV2Amount(\n amounts: readonly string[],\n index: number,\n operation: string,\n): string {\n const amount = amounts[index]\n if (amount === undefined) {\n throw new SDKError('SDK_NO_ROUTE', 'SunSwap V2 returned no Pump route amount', {\n operation,\n index,\n amounts,\n })\n }\n return amount\n}\n","import type { TransactionIntentScope } from '@sun-protocol/sun-sdk-core'\n\nexport const SUNPUMP_LAUNCHPAD_PROTOCOL_ID = 'sunpump-launchpad'\nexport const SUNPUMP_V2_PROTOCOL_ID = 'sunpump-v2'\n\nexport function pumpIntentScope(\n protocol: string,\n operation: string,\n): TransactionIntentScope<'pump'> {\n return { domain: 'pump', protocol, operation }\n}\n","import { SDKError } from '@sun-protocol/sun-sdk-core'\nimport type { TransactionPlan } from '../types/plan.js'\n\nexport function assertPumpPlan(\n plan: TransactionPlan,\n operations: readonly string[],\n clientName: string,\n): void {\n const operation = plan.metadata.operation\n if (\n plan.kind !== 'pump' ||\n typeof operation !== 'string' ||\n !operations.includes(operation) ||\n plan.transactions.length === 0\n ) {\n throw new SDKError('SDK_INVALID_ARGUMENT', `Expected a ${clientName} plan`, {\n planId: plan.id,\n kind: plan.kind,\n operation,\n transactionCount: plan.transactions.length,\n })\n }\n}\n","import { createHttpRequestAction, SDKError } from '@sun-protocol/sun-sdk-core'\nimport { nextPlanId } from '../common.js'\nimport type { ProtocolsContext } from '../context.js'\nimport type { TransactionPlan } from '../types/plan.js'\nimport type { AgentTokenLaunchParams } from './types.js'\n\nexport function planPumpAgentLaunch(\n context: ProtocolsContext,\n input: AgentTokenLaunchParams,\n): TransactionPlan {\n const baseUrl = context.endpoints.sunPump\n if (!baseUrl) {\n throw new SDKError('SDK_UNSUPPORTED_NETWORK', 'SunPump API is unavailable on this network', {\n network: context.network,\n })\n }\n const normalizedBaseUrl = baseUrl.replace(/\\/+$/, '')\n const transaction = createHttpRequestAction({\n id: `pump-agent-launch-${input.symbol}`,\n request: {\n method: 'POST',\n url: `${normalizedBaseUrl}/ai/agentTokenLaunch`,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: input,\n },\n })\n return {\n id: nextPlanId(context, 'pump-launch'),\n kind: 'pump',\n network: context.network,\n summary: {\n title: 'Launch SunPump token',\n lines: [`Launch ${input.name} (${input.symbol})`],\n },\n approvals: [],\n transactions: [transaction],\n metadata: {\n operation: 'pump-agent-launch',\n symbol: input.symbol,\n },\n }\n}\n","import type { TransactionAction } from '@sun-protocol/sun-sdk-core'\nimport type { ProtocolsContext } from '../context.js'\nimport {\n executePlanAction,\n executePlanTransactions,\n executeTransactionPlan,\n isTransactionPlan,\n} from '../execute-plan.js'\nimport type {\n ExecutedActionResult,\n TransactionPlan,\n TransactionPlanExecutionResult,\n} from '../types/plan.js'\nimport { createPumpExecutor } from './execute.js'\nimport { planPumpAgentLaunch } from './launch.js'\nimport type { AgentTokenLaunchParams, PumpLaunchClientShape } from './types.js'\nimport { assertPumpPlan } from './workflow.js'\n\nconst PUMP_LAUNCH_OPERATIONS = ['pump-agent-launch'] as const\n\nexport class PumpLaunchClient implements PumpLaunchClientShape {\n constructor(private readonly context: ProtocolsContext) {}\n\n plan(input: AgentTokenLaunchParams): Promise<TransactionPlan> {\n return Promise.resolve(planPumpAgentLaunch(this.context, input))\n }\n\n executeAction(action: TransactionAction): Promise<ExecutedActionResult> {\n return executePlanAction(action, createPumpExecutor(this.context))\n }\n\n submit(plan: TransactionPlan): Promise<TransactionPlanExecutionResult> {\n assertPumpPlan(plan, PUMP_LAUNCH_OPERATIONS, 'Pump launch')\n return executePlanTransactions(plan, createPumpExecutor(this.context))\n }\n\n async execute(\n input: AgentTokenLaunchParams | TransactionPlan,\n ): Promise<TransactionPlanExecutionResult> {\n const plan = isTransactionPlan(input)\n ? input\n : planPumpAgentLaunch(this.context, input)\n assertPumpPlan(plan, PUMP_LAUNCH_OPERATIONS, 'Pump launch')\n return executeTransactionPlan(plan, createPumpExecutor(this.context))\n }\n}\n","import {\n getLaunchpadTokenState,\n LaunchpadTokenState,\n quoteLaunchpadSellExactToken,\n} from '@sun-protocol/sun-sdk-launchpad'\nimport {\n SDKError,\n assertTronAddress,\n type TransactionAction,\n} from '@sun-protocol/sun-sdk-core'\nimport { normalizeBaseUnitAmount } from '../common.js'\nimport { requireRuntime, type ProtocolsContext } from '../context.js'\nimport {\n executePlanAction,\n executePlanTransactions,\n executeTransactionPlan,\n isTransactionPlan,\n} from '../execute-plan.js'\nimport type {\n ExecutedActionResult,\n TransactionPlan,\n TransactionPlanExecutionResult,\n} from '../types/plan.js'\nimport { createPumpExecutor } from './execute.js'\nimport { planPumpSell } from './plan-sell.js'\nimport type {\n PumpQuoteSellInput,\n PumpSellClientShape,\n PumpSellInput,\n PumpSellQuote,\n} from './types.js'\nimport {\n pumpV2SellPath,\n readPumpV2AmountsOut,\n requirePumpV2Amount,\n} from './v2.js'\nimport { assertPumpPlan } from './workflow.js'\n\nconst PUMP_SELL_OPERATIONS = [\n 'launchpad-sell-exact-token',\n 'pump-v2-sell-exact-token',\n] as const\n\nasync function quotePumpSell(\n context: ProtocolsContext,\n input: PumpQuoteSellInput,\n): Promise<PumpSellQuote> {\n const runtime = requireRuntime(context, 'Pump sell quote')\n const token = assertTronAddress(input.token, 'token')\n const tokenAmount = normalizeBaseUnitAmount(input.tokenAmount, 'tokenAmount')\n const state = await getLaunchpadTokenState(runtime, token)\n if (state === LaunchpadTokenState.TRADING) {\n return quoteLaunchpadSellExactToken(runtime, token, tokenAmount)\n }\n if (state === LaunchpadTokenState.LAUNCHED) {\n const path = pumpV2SellPath(context, token)\n const amounts = await readPumpV2AmountsOut(context, runtime, tokenAmount, path)\n return {\n trxAmount: requirePumpV2Amount(amounts, amounts.length - 1, 'pump-v2-sell-quote'),\n fee: '0',\n }\n }\n throw new SDKError('SDK_CONTRACT_ERROR', 'Token is not trading on SunPump', { token, state })\n}\n\nexport class PumpSellClient implements PumpSellClientShape {\n constructor(private readonly context: ProtocolsContext) {}\n\n quote(input: PumpQuoteSellInput): Promise<PumpSellQuote> {\n return quotePumpSell(this.context, input)\n }\n\n plan(input: PumpSellInput): Promise<TransactionPlan> {\n return planPumpSell(this.context, input)\n }\n\n executeAction(action: TransactionAction): Promise<ExecutedActionResult> {\n return executePlanAction(action, createPumpExecutor(this.context))\n }\n\n submit(plan: TransactionPlan): Promise<TransactionPlanExecutionResult> {\n assertPumpPlan(plan, PUMP_SELL_OPERATIONS, 'Pump sell')\n return executePlanTransactions(plan, createPumpExecutor(this.context))\n }\n\n async execute(\n input: PumpSellInput | TransactionPlan,\n ): Promise<TransactionPlanExecutionResult> {\n const plan = isTransactionPlan(input)\n ? input\n : await planPumpSell(this.context, input)\n assertPumpPlan(plan, PUMP_SELL_OPERATIONS, 'Pump sell')\n return executeTransactionPlan(plan, createPumpExecutor(this.context))\n }\n}\n","import {\n applySlippageMin,\n createLaunchpadApproveAction,\n createLaunchpadSellAction,\n getLaunchpadTokenState,\n LaunchpadTokenState,\n quoteLaunchpadSellExactToken,\n readLaunchpadAllowance,\n} from '@sun-protocol/sun-sdk-launchpad'\nimport {\n SDKError,\n assertTronAddress,\n createApproveAction,\n type TransactionAction,\n} from '@sun-protocol/sun-sdk-core'\nimport {\n nextPlanId,\n normalizeBaseUnitAmount,\n normalizeRecipient,\n normalizeTransactionValidForSeconds,\n slippageToBips,\n} from '../common.js'\nimport {\n requireRuntime,\n requireWalletSnapshot,\n type ProtocolsContext,\n} from '../context.js'\nimport { createDeferredV2SwapAction } from '../internal/v2-swap-action.js'\nimport { attachApprovalIntent } from '../internal/intents.js'\nimport type { TransactionPlan } from '../types/plan.js'\nimport type { PumpSellInput } from './types.js'\nimport {\n pumpV2SellPath,\n readPumpV2AmountsOut,\n requirePumpV2Amount,\n} from './v2.js'\nimport {\n pumpIntentScope,\n SUNPUMP_LAUNCHPAD_PROTOCOL_ID,\n SUNPUMP_V2_PROTOCOL_ID,\n} from './intents.js'\n\nexport async function planPumpSell(\n context: ProtocolsContext,\n input: PumpSellInput,\n): Promise<TransactionPlan> {\n const runtime = requireRuntime(context, 'Pump sell planning')\n const { address: walletAddress } = await requireWalletSnapshot(context, 'Pump sell planning')\n const token = assertTronAddress(input.token, 'token')\n const tokenAmount = normalizeBaseUnitAmount(input.tokenAmount, 'tokenAmount')\n const state = await getLaunchpadTokenState(runtime, token)\n if (state !== LaunchpadTokenState.TRADING && state !== LaunchpadTokenState.LAUNCHED) {\n throw new SDKError('SDK_CONTRACT_ERROR', 'Token is not trading on SunPump', {\n token,\n state,\n })\n }\n\n const slippageBips = slippageToBips(input.slippage ?? '5%')\n const approvalMode = input.approval ?? 'auto'\n const approvals: TransactionAction[] = []\n const owner = input.owner !== undefined ? assertTronAddress(input.owner, 'owner') : walletAddress\n if (owner !== walletAddress) {\n throw new SDKError('SDK_WALLET_ACCOUNT_MISMATCH', 'Pump sell owner does not match the connected wallet', {\n expectedAddress: owner,\n actualAddress: walletAddress,\n })\n }\n let allowance: string | undefined\n\n const spender = state === LaunchpadTokenState.TRADING\n ? context.chain.contracts.launchpad\n : context.chain.contracts.sunswapV2Router\n const scope = pumpIntentScope(\n state === LaunchpadTokenState.TRADING ? SUNPUMP_LAUNCHPAD_PROTOCOL_ID : SUNPUMP_V2_PROTOCOL_ID,\n 'sell-exact-token',\n )\n\n if (approvalMode !== 'none') {\n allowance = await readLaunchpadAllowance(\n runtime,\n token,\n owner,\n spender,\n )\n if (BigInt(allowance) < BigInt(tokenAmount)) {\n approvals.push(state === LaunchpadTokenState.TRADING\n ? createLaunchpadApproveAction(token, spender)\n : createApproveAction({\n id: `pump-v2-approve-${token}`,\n target: token,\n spender,\n amount: tokenAmount,\n }))\n }\n }\n\n if (state === LaunchpadTokenState.TRADING) {\n const quote = await quoteLaunchpadSellExactToken(runtime, token, tokenAmount)\n const minTrxOut = applySlippageMin(BigInt(quote.trxAmount), slippageBips).toString()\n const transaction = {\n ...createLaunchpadSellAction({\n launchpad: context.chain.contracts.launchpad,\n token,\n tokenAmount,\n minTrxOut,\n }),\n intent: {\n kind: 'pump-sell' as const,\n scope,\n token,\n },\n }\n\n return {\n id: nextPlanId(context, 'pump-sell'),\n kind: 'pump',\n network: context.network,\n owner,\n summary: {\n title: 'Sell SunPump token',\n lines: [`Sell ${tokenAmount} token units`, `Receive at least ${minTrxOut} sun`],\n },\n approvals: attachApprovalIntent(approvals, scope, token),\n transactions: [transaction],\n metadata: {\n operation: 'launchpad-sell-exact-token',\n token,\n tokenAmount,\n quotedTrxAmount: quote.trxAmount,\n fee: quote.fee,\n minTrxOut,\n slippageBips,\n approvalMode,\n spender,\n ...(owner ? { owner } : {}),\n ...(allowance ? { allowance } : {}),\n },\n }\n }\n\n const path = pumpV2SellPath(context, token)\n const amounts = await readPumpV2AmountsOut(context, runtime, tokenAmount, path)\n const quotedTrxAmount = requirePumpV2Amount(amounts, amounts.length - 1, 'pump-v2-sell-exact-token')\n const minTrxOut = applySlippageMin(BigInt(quotedTrxAmount), slippageBips).toString()\n const recipient = await normalizeRecipient(context, input.recipient, 'Pump V2 sell recipient', owner)\n const transactionValidForSeconds = normalizeTransactionValidForSeconds(input.transactionValidForSeconds)\n const transaction = {\n ...createDeferredV2SwapAction({\n data: {\n operation: 'swap-exact-tokens-for-eth',\n amountIn: tokenAmount,\n amountOutMin: minTrxOut,\n path,\n recipient,\n transactionValidForSeconds,\n },\n }),\n intent: {\n kind: 'pump-sell' as const,\n scope,\n token,\n },\n }\n\n return {\n id: nextPlanId(context, 'pump-sell'),\n kind: 'pump',\n network: context.network,\n owner,\n summary: {\n title: 'Sell launched Pump token',\n lines: [`Sell ${tokenAmount} token units`, `Receive at least ${minTrxOut} sun`],\n },\n approvals: attachApprovalIntent(approvals, scope, token),\n transactions: [transaction],\n metadata: {\n operation: 'pump-v2-sell-exact-token',\n token,\n tokenAmount,\n quotedTrxAmount,\n minTrxOut,\n slippageBips,\n approvalMode,\n spender,\n path,\n recipient,\n transactionValidForSeconds,\n ...(owner ? { owner } : {}),\n ...(allowance ? { allowance } : {}),\n },\n }\n}\n","import type {\n TransactionAction,\n TransactionIntent,\n TransactionIntentScope,\n} from '@sun-protocol/sun-sdk-core'\n\nexport function attachApprovalIntent(\n actions: readonly TransactionAction[],\n scope: TransactionIntentScope,\n tokenSymbol: string,\n): readonly TransactionAction[] {\n const intent: TransactionIntent = { kind: 'approve', scope, tokenSymbol }\n return actions.map((action) => action.execute === 'runtime'\n ? { ...action, intent }\n : action)\n}\n"],"mappings":"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","names":["import_sun_sdk_launchpad","import_sun_sdk_core","import_sun_sdk_api","import_sun_sdk_core","import_sun_sdk_launchpad","import_sun_sdk_core","import_sun_sdk_core","import_sun_sdk_core","import_sun_sdk_core","import_sun_sdk_core","import_sun_sdk_core","import_sun_sdk_sunswap_v2","import_sun_sdk_core","transaction","amounts","import_sun_sdk_core","import_sun_sdk_core","import_sun_sdk_launchpad","import_sun_sdk_core","import_sun_sdk_launchpad","import_sun_sdk_core","minTrxOut","transaction"]}
@@ -0,0 +1,16 @@
1
+ import { A as AgentTokenLaunchParams, P as PumpBuyInput, a as PumpSellInput } from '../execute-BNKh6dT6.cjs';
2
+ export { b as PumpBuyClient, c as PumpBuyClientShape, d as PumpBuyExactTokenQuote, e as PumpBuyQuote, f as PumpClient, g as PumpClientShape, h as PumpLaunchClient, i as PumpLaunchClientShape, j as PumpQuoteBuyExactTokenInput, k as PumpQuoteBuyInput, l as PumpQuoteSellInput, m as PumpSellApprovalMode, n as PumpSellClient, o as PumpSellClientShape, p as PumpSellQuote, q as PumpTokenHttpClient, r as PumpTokenInput, S as SUNPUMP_LAUNCHPAD_PROTOCOL_ID, s as SUNPUMP_V2_PROTOCOL_ID, t as createPumpClient, u as createPumpExecutor } from '../execute-BNKh6dT6.cjs';
3
+ import { P as ProtocolsContext, T as TransactionPlan } from '../common-8VQQ0FSU.cjs';
4
+ import '@sun-protocol/sun-sdk-launchpad';
5
+ import '@sun-protocol/sun-sdk-api';
6
+ import '@sun-protocol/sun-sdk-core';
7
+ import '@sun-protocol/sun-sdk-chains';
8
+ import '@sun-protocol/sun-sdk-runtime';
9
+
10
+ declare function planPumpAgentLaunch(context: ProtocolsContext, input: AgentTokenLaunchParams): TransactionPlan;
11
+
12
+ declare function planPumpBuy(context: ProtocolsContext, input: PumpBuyInput): Promise<TransactionPlan>;
13
+
14
+ declare function planPumpSell(context: ProtocolsContext, input: PumpSellInput): Promise<TransactionPlan>;
15
+
16
+ export { AgentTokenLaunchParams, PumpBuyInput, PumpSellInput, TransactionPlan, planPumpAgentLaunch, planPumpBuy, planPumpSell };
@@ -0,0 +1,16 @@
1
+ import { A as AgentTokenLaunchParams, P as PumpBuyInput, a as PumpSellInput } from '../execute-CVhcKZxF.js';
2
+ export { b as PumpBuyClient, c as PumpBuyClientShape, d as PumpBuyExactTokenQuote, e as PumpBuyQuote, f as PumpClient, g as PumpClientShape, h as PumpLaunchClient, i as PumpLaunchClientShape, j as PumpQuoteBuyExactTokenInput, k as PumpQuoteBuyInput, l as PumpQuoteSellInput, m as PumpSellApprovalMode, n as PumpSellClient, o as PumpSellClientShape, p as PumpSellQuote, q as PumpTokenHttpClient, r as PumpTokenInput, S as SUNPUMP_LAUNCHPAD_PROTOCOL_ID, s as SUNPUMP_V2_PROTOCOL_ID, t as createPumpClient, u as createPumpExecutor } from '../execute-CVhcKZxF.js';
3
+ import { P as ProtocolsContext, T as TransactionPlan } from '../common-8VQQ0FSU.js';
4
+ import '@sun-protocol/sun-sdk-launchpad';
5
+ import '@sun-protocol/sun-sdk-api';
6
+ import '@sun-protocol/sun-sdk-core';
7
+ import '@sun-protocol/sun-sdk-chains';
8
+ import '@sun-protocol/sun-sdk-runtime';
9
+
10
+ declare function planPumpAgentLaunch(context: ProtocolsContext, input: AgentTokenLaunchParams): TransactionPlan;
11
+
12
+ declare function planPumpBuy(context: ProtocolsContext, input: PumpBuyInput): Promise<TransactionPlan>;
13
+
14
+ declare function planPumpSell(context: ProtocolsContext, input: PumpSellInput): Promise<TransactionPlan>;
15
+
16
+ export { AgentTokenLaunchParams, PumpBuyInput, PumpSellInput, TransactionPlan, planPumpAgentLaunch, planPumpBuy, planPumpSell };
@@ -0,0 +1,29 @@
1
+ import {
2
+ PumpBuyClient,
3
+ PumpClient,
4
+ PumpLaunchClient,
5
+ PumpSellClient,
6
+ SUNPUMP_LAUNCHPAD_PROTOCOL_ID,
7
+ SUNPUMP_V2_PROTOCOL_ID,
8
+ createPumpClient,
9
+ createPumpExecutor,
10
+ planPumpAgentLaunch,
11
+ planPumpBuy,
12
+ planPumpSell
13
+ } from "../chunk-HD2S3Q7L.js";
14
+ import "../chunk-TSHXXRH2.js";
15
+ import "../chunk-VFVKMC4H.js";
16
+ export {
17
+ PumpBuyClient,
18
+ PumpClient,
19
+ PumpLaunchClient,
20
+ PumpSellClient,
21
+ SUNPUMP_LAUNCHPAD_PROTOCOL_ID,
22
+ SUNPUMP_V2_PROTOCOL_ID,
23
+ createPumpClient,
24
+ createPumpExecutor,
25
+ planPumpAgentLaunch,
26
+ planPumpBuy,
27
+ planPumpSell
28
+ };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}