diff --git a/packages/swapper/package.json b/packages/swapper/package.json index e29633a..2a08594 100644 --- a/packages/swapper/package.json +++ b/packages/swapper/package.json @@ -15,10 +15,10 @@ "test": "jest --passWithNoTests" }, "dependencies": { - "@cetusprotocol/aggregator-sdk": "1.4.5", + "@cetusprotocol/aggregator-sdk": "1.4.6", "@gemwallet/types": "workspace:*", "@mayanfinance/swap-sdk": "13.2.0", - "@mysten/sui": "1.45.2", + "@mysten/sui": "2.9.1", "@orca-so/whirlpools": "7.0.1", "@orca-so/whirlpools-client": "6.2.0", "@orca-so/whirlpools-core": "3.1.0", diff --git a/packages/swapper/src/cetus/provider.ts b/packages/swapper/src/cetus/provider.ts index 2fe1826..3338c93 100644 --- a/packages/swapper/src/cetus/provider.ts +++ b/packages/swapper/src/cetus/provider.ts @@ -9,10 +9,13 @@ import { BLUEFIN, } from "@cetusprotocol/aggregator-sdk"; import { QuoteRequest, Quote, SwapQuoteData, AssetId, SwapQuoteDataType } from "@gemwallet/types"; -import { SuiClient } from "@mysten/sui/client"; -import { Transaction } from "@mysten/sui/transactions"; import { BN } from "bn.js"; +// @ts-ignore — v2 ESM types unresolvable under moduleResolution "node" +import { SuiJsonRpcClient } from "@mysten/sui/jsonRpc"; +// @ts-ignore — v2 ESM types unresolvable under moduleResolution "node" +import { Transaction } from "@mysten/sui/transactions"; + import { SUI_COIN_TYPE } from "../chain/sui/constants"; import { calculateGasBudget, prefillTransaction, getGasPriceAndCoinRefs } from "../chain/sui/tx_builder"; import { Protocol } from "../protocol"; @@ -21,19 +24,19 @@ import { bnReplacer, bnReviver } from "./bn_replacer"; export class CetusAggregatorProvider implements Protocol { private client: AggregatorClient; - private suiClient: SuiClient; + private suiRpcUrl: string; private overlayFeeReceiver: string; private readonly selectedProtocols: string[] = [CETUS, DEEPBOOKV2, DEEPBOOKV3, BLUEFIN]; constructor(suiRpcUrl: string) { - this.suiClient = new SuiClient({ url: suiRpcUrl }); + this.suiRpcUrl = suiRpcUrl; this.overlayFeeReceiver = getReferrerAddresses().sui; this.client = this.createClient(); } createClient(address?: string, overlayFeeRate?: number, overlayFeeReceiver?: string) { return new AggregatorClient({ - client: this.suiClient, + client: new SuiJsonRpcClient({ network: "mainnet", url: this.suiRpcUrl }), env: Env.Mainnet, overlayFeeRate, overlayFeeReceiver, @@ -118,18 +121,18 @@ export class CetusAggregatorProvider implements Protocol { slippage: slippage_bps / 10000, }; - // create a new client with user's address as signer, overlay fee rate and overlay fee receiver const client = this.createClient( quote.quote.from_address, quote.quote.referral_bps / 10000, this.overlayFeeReceiver, ); - const gasPriceAndCoinRefsReq = getGasPriceAndCoinRefs(this.suiClient, quote.quote.from_address); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const suiClient = (client as any).client; + const gasPriceAndCoinRefsReq = getGasPriceAndCoinRefs(suiClient, quote.quote.from_address); const fastRouterSwapReq = client.fastRouterSwap(swapParams); const [{ gasPrice, coinRefs }] = await Promise.all([gasPriceAndCoinRefsReq, fastRouterSwapReq]); - // inspect transaction const result = await client.devInspectTransactionBlock(txb); if (result.error) { throw new Error(`Swap simulation failed: ${result.error}`); @@ -138,12 +141,10 @@ export class CetusAggregatorProvider implements Protocol { throw new Error(`Swap simulation failed: ${result.effects.status.error}`); } - // build transaction const gasBudget = calculateGasBudget(result.effects); prefillTransaction(txb, quote.quote.from_address, gasBudget, gasPrice, coinRefs); - const serializedTx = await txb.build({ client: this.suiClient }); + const serializedTx = await txb.build({ client: suiClient }); - // build quote data const quoteData: SwapQuoteData = { to: "", value: "0", diff --git a/packages/swapper/src/chain/sui/tx_builder.ts b/packages/swapper/src/chain/sui/tx_builder.ts index de97663..765beea 100644 --- a/packages/swapper/src/chain/sui/tx_builder.ts +++ b/packages/swapper/src/chain/sui/tx_builder.ts @@ -1,16 +1,40 @@ -import { SuiClient, TransactionEffects } from "@mysten/sui/client"; -import { Transaction } from "@mysten/sui/transactions"; - import { BigIntMath } from "../../bigint_math"; import { SUI_COIN_TYPE } from "./constants"; +interface CoinRef { + objectId: string; + version: string; + digest: string; +} + +export interface SuiRpcClient { + getReferenceGasPrice(): Promise; + getCoins(input: { owner: string; coinType: string; limit: number }): Promise<{ + data: { coinObjectId: string; version: string; digest: string }[]; + }>; +} + +export interface SuiTransactionEffects { + status: { status: string; error?: string }; + gasUsed: { computationCost: string; storageCost: string; storageRebate: string }; +} + export interface SuiTransactionPrerequisites { gasPrice: bigint; - coinRefs: { objectId: string; version: string; digest: string }[]; + coinRefs: CoinRef[]; +} + +export interface SuiTransactionBuilder { + setSender(address: string): void; + setGasPrice(price: bigint): void; + setGasBudget(budget: bigint): void; + setGasPayment(coins: CoinRef[]): void; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + build(options: { client: any }): Promise; } export async function getGasPriceAndCoinRefs( - suiClient: SuiClient, + suiClient: SuiRpcClient, ownerAddress: string, ): Promise { const [gasPrice, coins] = await Promise.all([ @@ -27,8 +51,8 @@ export async function getGasPriceAndCoinRefs( return { gasPrice: BigInt(gasPrice), coinRefs }; } -export function calculateGasBudget(transactionEffects: TransactionEffects, increasePercentage: number = 20): bigint { - const gasUsed = transactionEffects.gasUsed; +export function calculateGasBudget(effects: SuiTransactionEffects, increasePercentage: number = 20): bigint { + const gasUsed = effects.gasUsed; const computationBudget = BigInt(gasUsed.computationCost); const storageBudget = BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate); @@ -38,11 +62,11 @@ export function calculateGasBudget(transactionEffects: TransactionEffects, incre } export function prefillTransaction( - transaction: Transaction, + transaction: SuiTransactionBuilder, senderAddress: string, gasBudget: bigint, gasPrice: bigint, - coinRefs: { objectId: string; version: string; digest: string }[], + coinRefs: CoinRef[], ) { transaction.setSender(senderAddress); transaction.setGasPrice(gasPrice); diff --git a/packages/swapper/src/mayan/sui.ts b/packages/swapper/src/mayan/sui.ts index ad79e02..fd37170 100644 --- a/packages/swapper/src/mayan/sui.ts +++ b/packages/swapper/src/mayan/sui.ts @@ -1,6 +1,8 @@ import { SwapQuoteData, QuoteRequest, SwapQuoteDataType } from "@gemwallet/types"; import { Quote as MayanQuote, ReferrerAddresses, createSwapFromSuiMoveCalls } from "@mayanfinance/swap-sdk"; -import { SuiClient } from "@mysten/sui/client"; + +// @ts-ignore — v2 ESM types unresolvable under moduleResolution "node" +import { SuiJsonRpcClient } from "@mysten/sui/jsonRpc"; import { calculateGasBudget, prefillTransaction, getGasPriceAndCoinRefs } from "../chain/sui/tx_builder"; import { getReferrerAddresses } from "../referrer"; @@ -11,9 +13,10 @@ export async function buildSuiQuoteData( suiRpc: string, ): Promise { const referrerAddresses = getReferrerAddresses() as ReferrerAddresses; - const suiClient = new SuiClient({ url: suiRpc }); + const suiClient = new SuiJsonRpcClient({ network: "mainnet", url: suiRpc }); try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any const [suiTx, { gasPrice, coinRefs }] = await Promise.all([ createSwapFromSuiMoveCalls( routeData, @@ -21,14 +24,14 @@ export async function buildSuiQuoteData( request.to_address, referrerAddresses, null, - suiClient, + suiClient as any, ), getGasPriceAndCoinRefs(suiClient, request.from_address), ]); const inspectResult = await suiClient.devInspectTransactionBlock({ - transactionBlock: suiTx, sender: request.from_address, + transactionBlock: suiTx, }); if (inspectResult.error) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf7273e..ea65235 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,8 +70,8 @@ importers: packages/swapper: dependencies: '@cetusprotocol/aggregator-sdk': - specifier: 1.4.5 - version: 1.4.5(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + specifier: 1.4.6 + version: 1.4.6(axios@1.13.6)(typescript@5.9.3) '@gemwallet/types': specifier: workspace:* version: link:../types @@ -79,8 +79,8 @@ importers: specifier: 13.2.0 version: 13.2.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) '@mysten/sui': - specifier: 1.45.2 - version: 1.45.2(typescript@5.9.3) + specifier: 2.9.1 + version: 2.9.1(typescript@5.9.3) '@orca-so/whirlpools': specifier: 7.0.1 version: 7.0.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))(@solana/rpc@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) @@ -317,8 +317,8 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@cetusprotocol/aggregator-sdk@1.4.5': - resolution: {integrity: sha512-TWuENnwtdJsn/Tg9MORwoH8UpFtkQbhVjBg7Ez8nD4wUT7dUgd9U8vRCXtaCOPpCHuYkVLsWuXk8X0obNVnYFg==} + '@cetusprotocol/aggregator-sdk@1.4.6': + resolution: {integrity: sha512-9o2ompgUVaTIosz63hic/V4RTH5dq332QdbxegDZnf66eTxJWvhk/mqb7HjewtzroNr5wmy7k9oYo8DW87RD6A==} peerDependencies: typescript: 5.9.3 @@ -479,13 +479,23 @@ packages: '@mysten/bcs@1.9.2': resolution: {integrity: sha512-kBk5xrxV9OWR7i+JhL/plQrgQ2/KJhB2pB5gj+w6GXhbMQwS3DPpOvi/zN0Tj84jwPvHMllpEl0QHj6ywN7/eQ==} + '@mysten/bcs@2.0.3': + resolution: {integrity: sha512-dwcaL4HNAsEGpU3hKUAsXgCZp9l6++e2A3THpzoYZ8e7bsy4XH1V0dXD5dIzgNcVZiZfb6ZnDMG+gdF6+1WOQA==} + '@mysten/sui@1.45.2': resolution: {integrity: sha512-gftf7fNpFSiXyfXpbtP2afVEnhc7p2m/MEYc/SO5pov92dacGKOpQIF7etZsGDI1Wvhv+dpph+ulRNpnYSs7Bg==} engines: {node: '>=18'} + '@mysten/sui@2.9.1': + resolution: {integrity: sha512-yvwDYor42B+ylnba5E4C4BXqFcgOwxOiaIq5BbPy17XkMP1ULIeyccOjqWE5lGSXE9rHLqZ9N5dZOqBrJCJr6g==} + engines: {node: '>=22'} + '@mysten/utils@0.2.0': resolution: {integrity: sha512-CM6kJcJHX365cK6aXfFRLBiuyXc5WSBHQ43t94jqlCAIRw8umgNcTb5EnEA9n31wPAQgLDGgbG/rCUISCTJ66w==} + '@mysten/utils@0.3.1': + resolution: {integrity: sha512-36KhxG284uhDdSnlkyNaS6fzKTX9FpP2WQWOwUKIRsqQFFIm2ooCf2TP1IuqrtMpkairwpiWkAS0eg7cpemVzg==} + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -499,6 +509,10 @@ packages: resolution: {integrity: sha512-2bKONnuM53lINoDrSmK8qP8W271ms7pygDhZt4SiLOoLwBtoHqeCFi6RG42V8zd3mLHuJFhU/Bmaqo4nX0/kBw==} engines: {node: ^14.21.3 || >=16} + '@noble/curves@2.0.1': + resolution: {integrity: sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==} + engines: {node: '>= 20.19.0'} + '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} @@ -507,6 +521,10 @@ packages: resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} + '@noble/hashes@2.0.1': + resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} + engines: {node: '>= 20.19.0'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -907,25 +925,28 @@ packages: '@protobuf-ts/runtime@2.11.1': resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} - '@pythnetwork/price-service-client@1.9.0': - resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} - deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. - - '@pythnetwork/price-service-sdk@1.8.0': - resolution: {integrity: sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==} - - '@pythnetwork/pyth-sui-js@2.2.0': - resolution: {integrity: sha512-BH9oLZchSPXOBK1cmvT4foFELaOcAJJ6lAYXarnVeuBNZxTULBKPYLHuljbz0mqxrKZIVVT6FqqML2A78SlTSg==} + '@pythnetwork/hermes-client@3.1.0': + resolution: {integrity: sha512-KEILjOCtnq/CRfnmDSnNS3egBuSupDglAE/dIDy8Y9S+zMm69lFQJUP87fuymWdpkI0JKmGHWtVX6R9edEGNtA==} + engines: {node: ^24.0.0} '@scure/base@1.2.6': resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + '@scure/base@2.0.0': + resolution: {integrity: sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==} + '@scure/bip32@1.7.0': resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + '@scure/bip32@2.0.1': + resolution: {integrity: sha512-4Md1NI5BzoVP+bhyJaY3K6yMesEFzNS1sE/cP+9nuvE7p/b0kx9XbpDHHFl8dHtufcbdHRUUQdRqLIPHN/s7yA==} + '@scure/bip39@1.6.0': resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + '@scure/bip39@2.0.1': + resolution: {integrity: sha512-PsxdFj/d2AcJcZDX1FXN3dDgitDDTmwf78rKZq1a6c1P1Nan1X/Sxc7667zU3U+AN60g7SxxP0YCVw2H/hBycg==} + '@sinclair/typebox@0.34.41': resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} @@ -1646,6 +1667,12 @@ packages: cpu: [x64] os: [win32] + '@zodios/core@10.9.6': + resolution: {integrity: sha512-aH4rOdb3AcezN7ws8vDgBfGboZMk2JGGzEq/DtW65MhnRxyTGRuLJRWVQ/2KxDgWvV2F5oTkAS+5pnjKbl0n+A==} + peerDependencies: + axios: 1.13.6 + zod: ^3.x + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -1707,9 +1734,6 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - axios-retry@3.9.1: - resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} - axios@1.13.6: resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} @@ -2085,6 +2109,14 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -2234,8 +2266,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql@16.11.0: - resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + graphql@16.13.1: + resolution: {integrity: sha512-gGgrVCoDKlIZ8fIqXBBb0pPKqDgki0Z/FSKNiQzSGj2uEYHr1tq5wmBegGwJx6QB5S5cM0khSBpi/JFHMCvsmQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} handlebars@4.7.8: @@ -2330,10 +2362,6 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - is-retry-allowed@2.2.0: - resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} - engines: {node: '>=10'} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3093,9 +3121,6 @@ packages: jest-util: optional: true - ts-log@2.2.7: - resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} - ts-node-dev@2.0.0: resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} engines: {node: '>=0.8.0'} @@ -3335,14 +3360,14 @@ packages: snapshots: - '@0no-co/graphql.web@1.1.2(graphql@16.11.0)': + '@0no-co/graphql.web@1.1.2(graphql@16.13.1)': optionalDependencies: - graphql: 16.11.0 + graphql: 16.13.1 - '@0no-co/graphqlsp@1.12.16(graphql@16.11.0)(typescript@5.9.3)': + '@0no-co/graphqlsp@1.12.16(graphql@16.13.1)(typescript@5.9.3)': dependencies: - '@gql.tada/internal': 1.0.8(graphql@16.11.0)(typescript@5.9.3) - graphql: 16.11.0 + '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.9.3) + graphql: 16.13.1 typescript: 5.9.3 '@adraffy/ens-normalize@1.10.1': {} @@ -3538,10 +3563,10 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@cetusprotocol/aggregator-sdk@1.4.5(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@cetusprotocol/aggregator-sdk@1.4.6(axios@1.13.6)(typescript@5.9.3)': dependencies: - '@mysten/sui': 1.45.2(typescript@5.9.3) - '@pythnetwork/pyth-sui-js': 2.2.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@mysten/sui': 2.9.1(typescript@5.9.3) + '@pythnetwork/hermes-client': 3.1.0(axios@1.13.6) bip39: 3.1.0 dotenv: 16.6.1 json-bigint: 1.0.0 @@ -3550,9 +3575,7 @@ snapshots: transitivePeerDependencies: - '@gql.tada/svelte-support' - '@gql.tada/vue-support' - - bufferutil - - debug - - utf-8-validate + - axios '@cspotcode/source-map-support@0.8.1': dependencies: @@ -3574,22 +3597,22 @@ snapshots: tslib: 2.8.1 optional: true - '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.12.16(graphql@16.11.0)(typescript@5.9.3))(graphql@16.11.0)(typescript@5.9.3)': + '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.12.16(graphql@16.13.1)(typescript@5.9.3))(graphql@16.13.1)(typescript@5.9.3)': dependencies: - '@0no-co/graphqlsp': 1.12.16(graphql@16.11.0)(typescript@5.9.3) - '@gql.tada/internal': 1.0.8(graphql@16.11.0)(typescript@5.9.3) - graphql: 16.11.0 + '@0no-co/graphqlsp': 1.12.16(graphql@16.13.1)(typescript@5.9.3) + '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.9.3) + graphql: 16.13.1 typescript: 5.9.3 - '@gql.tada/internal@1.0.8(graphql@16.11.0)(typescript@5.9.3)': + '@gql.tada/internal@1.0.8(graphql@16.13.1)(typescript@5.9.3)': dependencies: - '@0no-co/graphql.web': 1.1.2(graphql@16.11.0) - graphql: 16.11.0 + '@0no-co/graphql.web': 1.1.2(graphql@16.13.1) + graphql: 16.13.1 typescript: 5.9.3 - '@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)': + '@graphql-typed-document-node/core@3.2.0(graphql@16.13.1)': dependencies: - graphql: 16.11.0 + graphql: 16.13.1 '@isaacs/cliui@8.0.2': dependencies: @@ -3836,9 +3859,14 @@ snapshots: '@mysten/utils': 0.2.0 '@scure/base': 1.2.6 + '@mysten/bcs@2.0.3': + dependencies: + '@mysten/utils': 0.3.1 + '@scure/base': 2.0.0 + '@mysten/sui@1.45.2(typescript@5.9.3)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) '@mysten/bcs': 1.9.2 '@mysten/utils': 0.2.0 '@noble/curves': 1.9.4 @@ -3849,8 +3877,30 @@ snapshots: '@scure/base': 1.2.6 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - gql.tada: 1.9.0(graphql@16.11.0)(typescript@5.9.3) - graphql: 16.11.0 + gql.tada: 1.9.0(graphql@16.13.1)(typescript@5.9.3) + graphql: 16.13.1 + poseidon-lite: 0.2.1 + valibot: 1.2.0(typescript@5.9.3) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@2.9.1(typescript@5.9.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) + '@mysten/bcs': 2.0.3 + '@mysten/utils': 0.3.1 + '@noble/curves': 2.0.1 + '@noble/hashes': 2.0.1 + '@protobuf-ts/grpcweb-transport': 2.11.1 + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + '@scure/base': 2.0.0 + '@scure/bip32': 2.0.1 + '@scure/bip39': 2.0.1 + gql.tada: 1.9.0(graphql@16.13.1)(typescript@5.9.3) + graphql: 16.13.1 poseidon-lite: 0.2.1 valibot: 1.2.0(typescript@5.9.3) transitivePeerDependencies: @@ -3862,6 +3912,10 @@ snapshots: dependencies: '@scure/base': 1.2.6 + '@mysten/utils@0.3.1': + dependencies: + '@scure/base': 2.0.0 + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.8.1 @@ -3884,10 +3938,16 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 + '@noble/curves@2.0.1': + dependencies: + '@noble/hashes': 2.0.1 + '@noble/hashes@1.3.2': {} '@noble/hashes@1.8.0': {} + '@noble/hashes@2.0.1': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4122,50 +4182,40 @@ snapshots: '@protobuf-ts/runtime@2.11.1': {} - '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@pythnetwork/hermes-client@3.1.0(axios@1.13.6)': dependencies: - '@pythnetwork/price-service-sdk': 1.8.0 - '@types/ws': 8.18.1 - axios: 1.13.6 - axios-retry: 3.9.1 - isomorphic-ws: 4.0.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ts-log: 2.2.7 - ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@pythnetwork/price-service-sdk@1.8.0': - dependencies: - bn.js: 5.2.3 - - '@pythnetwork/pyth-sui-js@2.2.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': - dependencies: - '@mysten/sui': 1.45.2(typescript@5.9.3) - '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - buffer: 6.0.3 + '@zodios/core': 10.9.6(axios@1.13.6)(zod@3.25.76) + eventsource: 3.0.7 + zod: 3.25.76 transitivePeerDependencies: - - '@gql.tada/svelte-support' - - '@gql.tada/vue-support' - - bufferutil - - debug - - typescript - - utf-8-validate + - axios '@scure/base@1.2.6': {} + '@scure/base@2.0.0': {} + '@scure/bip32@1.7.0': dependencies: '@noble/curves': 1.9.4 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 + '@scure/bip32@2.0.1': + dependencies: + '@noble/curves': 2.0.1 + '@noble/hashes': 2.0.1 + '@scure/base': 2.0.0 + '@scure/bip39@1.6.0': dependencies: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 + '@scure/bip39@2.0.1': + dependencies: + '@noble/hashes': 2.0.1 + '@scure/base': 2.0.0 + '@sinclair/typebox@0.34.41': {} '@sinonjs/commons@3.0.1': @@ -4992,6 +5042,11 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true + '@zodios/core@10.9.6(axios@1.13.6)(zod@3.25.76)': + dependencies: + axios: 1.13.6 + zod: 3.25.76 + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -5043,11 +5098,6 @@ snapshots: asynckit@0.4.0: {} - axios-retry@3.9.1: - dependencies: - '@babel/runtime': 7.28.3 - is-retry-allowed: 2.2.0 - axios@1.13.6: dependencies: follow-redirects: 1.15.11 @@ -5419,6 +5469,12 @@ snapshots: eventemitter3@5.0.1: {} + eventsource-parser@3.0.6: {} + + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.0.6 + execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -5603,12 +5659,12 @@ snapshots: gopd@1.2.0: {} - gql.tada@1.9.0(graphql@16.11.0)(typescript@5.9.3): + gql.tada@1.9.0(graphql@16.13.1)(typescript@5.9.3): dependencies: - '@0no-co/graphql.web': 1.1.2(graphql@16.11.0) - '@0no-co/graphqlsp': 1.12.16(graphql@16.11.0)(typescript@5.9.3) - '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.12.16(graphql@16.11.0)(typescript@5.9.3))(graphql@16.11.0)(typescript@5.9.3) - '@gql.tada/internal': 1.0.8(graphql@16.11.0)(typescript@5.9.3) + '@0no-co/graphql.web': 1.1.2(graphql@16.13.1) + '@0no-co/graphqlsp': 1.12.16(graphql@16.13.1)(typescript@5.9.3) + '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.12.16(graphql@16.13.1)(typescript@5.9.3))(graphql@16.13.1)(typescript@5.9.3) + '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - '@gql.tada/svelte-support' @@ -5617,7 +5673,7 @@ snapshots: graceful-fs@4.2.11: {} - graphql@16.11.0: {} + graphql@16.13.1: {} handlebars@4.7.8: dependencies: @@ -5697,8 +5753,6 @@ snapshots: is-promise@4.0.0: {} - is-retry-allowed@2.2.0: {} - is-stream@2.0.1: {} isexe@2.0.0: {} @@ -5707,10 +5761,6 @@ snapshots: dependencies: ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - isomorphic-ws@4.0.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@6.0.3: @@ -6649,8 +6699,6 @@ snapshots: babel-jest: 30.2.0(@babel/core@7.28.4) jest-util: 30.2.0 - ts-log@2.2.7: {} - ts-node-dev@2.0.0(@types/node@25.5.0)(typescript@5.9.3): dependencies: chokidar: 3.6.0