MCPcopy Index your code
hub / github.com/1inch/fusion-sdk

github.com/1inch/fusion-sdk @v2.4.10

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.4.10 ↗ · + Follow
371 symbols 814 edges 109 files 54 documented · 15% updated todayv2.4.10 · 2026-06-29★ 743 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

SDK for 1inch Fusion Mode

Installation

Npm

npm install @1inch/fusion-sdk@2

Yarn

yarn add @1inch/fusion-sdk@2

Modules docs

How to swap with Fusion Mode

import {FusionSDK, NetworkEnum, OrderStatus, PrivateKeyProviderConnector, Web3Like,} from "@1inch/fusion-sdk";
import {computeAddress, formatUnits, JsonRpcProvider} from "ethers";

const PRIVATE_KEY = 'YOUR_PRIVATE_KEY'
const NODE_URL = 'YOUR_WEB3_NODE_URL'
const DEV_PORTAL_API_TOKEN = 'YOUR_DEV_PORTAL_API_TOKEN'

const ethersRpcProvider = new JsonRpcProvider(NODE_URL)

const ethersProviderConnector: Web3Like = {
    eth: {
        call(transactionConfig): Promise<string> {
            return ethersRpcProvider.call(transactionConfig)
        }
    },
    extend(): void {}
}

const connector = new PrivateKeyProviderConnector(
    PRIVATE_KEY,
    ethersProviderConnector
)

const sdk = new FusionSDK({
    url: 'https://api.1inch.dev/fusion',
    network: NetworkEnum.BINANCE,
    blockchainProvider: connector,
    authKey: DEV_PORTAL_API_TOKEN
})

async function main() {
    const params = {
        fromTokenAddress: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', // USDC
        toTokenAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',  // BNB
        amount: '10000000000000000000', // 10 USDC
        walletAddress: computeAddress(PRIVATE_KEY),
        source: 'sdk-test'
    }

    const quote = await sdk.getQuote(params)

    const dstTokenDecimals = 18
    console.log('Auction start amount', formatUnits(quote.presets[quote.recommendedPreset].auctionStartAmount, dstTokenDecimals))
    console.log('Auction end amount', formatUnits(quote.presets[quote.recommendedPreset].auctionEndAmount), dstTokenDecimals)

    const preparedOrder = await sdk.createOrder(params)

    const info = await sdk.submitOrder(preparedOrder.order, preparedOrder.quoteId)

    console.log('OrderHash', info.orderHash)

    const start = Date.now()

    while (true) {
        try {
            const data = await sdk.getOrderStatus(info.orderHash)

            if (data.status === OrderStatus.Filled) {
                console.log('fills', data.fills)
                break
            }

            if (data.status === OrderStatus.Expired) {
                console.log('Order Expired')
                break
            }

            if (data.status === OrderStatus.Cancelled) {
                console.log('Order Cancelled')
                break
            }
        } catch (e) {
            console.log(e)
        }

    }

    console.log('Order executed for', (Date.now() - start) / 1000, 'sec')
}

main()

How to swap with Fusion mode from Native asset

import {FusionSDK, NetworkEnum, OrderStatus, PrivateKeyProviderConnector, Web3Like, Address, NativeOrdersFactory} from "@1inch/fusion-sdk";
import {computeAddress, formatUnits, JsonRpcProvider, Wallet} from "ethers";

const PRIVATE_KEY = 'YOUR_PRIVATE_KEY'
const NODE_URL = 'YOUR_WEB3_NODE_URL'
const DEV_PORTAL_API_TOKEN = 'YOUR_DEV_PORTAL_API_TOKEN'

const ethersRpcProvider = new JsonRpcProvider(NODE_URL)

const ethersProviderConnector: Web3Like = {
    eth: {
        call(transactionConfig): Promise<string> {
            return ethersRpcProvider.call(transactionConfig)
        }
    },
    extend(): void {}
}

const connector = new PrivateKeyProviderConnector(
    PRIVATE_KEY,
    ethersProviderConnector
)

const sdk = new FusionSDK({
    url: 'https://api.1inch.dev/fusion',
    network: NetworkEnum.BINANCE,
    blockchainProvider: connector,
    authKey: DEV_PORTAL_API_TOKEN
})

const wallet = new Wallet(PRIVATE_KEY, ethersRpcProvider)

async function main() {
    const params = {
        fromTokenAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', // ETH
        toTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',  // USDC
        amount: '2000000000000000', // 0.002 ETH
        walletAddress: computeAddress(PRIVATE_KEY),
        source: 'sdk-test'
    }

    const quote = await sdk.getQuote(params)

    const dstTokenDecimals = 6
    console.log('Auction start amount', formatUnits(quote.presets[quote.recommendedPreset].auctionStartAmount, dstTokenDecimals))
    console.log('Auction end amount', formatUnits(quote.presets[quote.recommendedPreset].auctionEndAmount), dstTokenDecimals)

    const preparedOrder = await sdk.createOrder(params)

    const info = await sdk.submitNativeOrder(preparedOrder.order, new Address(params.walletAddress), preparedOrder.quoteId)

    console.log('OrderHash', info.orderHash)

    const factory = NativeOrdersFactory.default(NetworkEnum.BINANCE)
    const call = factory.create(new Address(wallet.address), preparedOrder.order.build())

    const txRes = await wallet.sendTransaction({
        to: call.to.toString(),
        data: call.data,
        value: call.value
    })

    console.log('TxHash', txRes.hash)

    await wallet.provider.waitForTransaction(txRes.hash)


    const start = Date.now()

    while (true) {
        try {
            const data = await sdk.getOrderStatus(info.orderHash)

            if (data.status === OrderStatus.Filled) {
                console.log('fills', data.fills)
                break
            }

            if (data.status === OrderStatus.Expired) {
                console.log('Order Expired')
                break
            }

            if (data.status === OrderStatus.Cancelled) {
                console.log('Order Cancelled')
                break
            }
        } catch (e) {
            console.log(e)
        }

    }

    console.log('Order executed for', (Date.now() - start) / 1000, 'sec')
}

main()

Resolvers

settleOrders function usage and Resolver contract examples you can find here

Extension points exported contracts — how you extend this code

BlockchainProviderConnector (Interface)
(no doc) [4 implementers]
src/connector/blockchain/blockchain-provider.connector.ts
HttpProviderConnector (Interface)
(no doc) [2 implementers]
src/connector/http/http-provider.connector.ts
WsProviderConnector (Interface)
(no doc) [2 implementers]
src/connector/ws/websocket-provider.connector.ts
TransactionConfig (Interface)
(no doc)
src/connector/blockchain/web3-provider-connector.ts
Web3Like (Interface)
(no doc)
src/connector/blockchain/web3-provider-connector.ts

Core symbols most depended-on inside this repo

tokenBalance
called by 248
tests/test-wallet.ts
getAddress
called by 64
tests/test-wallet.ts
new
called by 49
src/api/fusion-api.ts
close
called by 40
src/connector/ws/websocket-provider.connector.ts
now
called by 40
tests/utils.ts
send
called by 33
src/connector/ws/websocket-provider.connector.ts
new
called by 32
src/fusion-order/fusion-order.ts
build
called by 31
src/fusion-order/fusion-order.ts

Shape

Method 256
Class 70
Function 35
Interface 6
Enum 4

Languages

TypeScript100%

Modules by API surface

src/fusion-order/fusion-order.ts41 symbols
src/api/orders/orders.request.ts18 symbols
src/sdk/sdk.ts17 symbols
src/amount-calculator/amount-calculator.ts17 symbols
src/connector/ws/websocket-client.connector.ts16 symbols
tests/test-wallet.ts15 symbols
src/fusion-order/whitelist/whitelist.ts15 symbols
src/ws-api/ws-api.ts14 symbols
src/amount-calculator/auction-calculator/auction-calculator.ts13 symbols
src/connector/ws/websocket-provider.connector.ts12 symbols
src/fusion-order/fusion-extension.ts11 symbols
src/api/fusion-api.ts11 symbols

For agents

$ claude mcp add fusion-sdk \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact