{"_id":"orbiter-bridge-sdks","name":"orbiter-bridge-sdks","dist-tags":{"latest":"0.1.15"},"versions":{"0.1.15":{"name":"orbiter-bridge-sdks","version":"0.1.15","description":"Orbiter Bridge SDK","main":"dist/index.js","types":"dist/index.d.ts","private":false,"engines":{"node":">=14.0.0"},"scripts":{"lint":"eslint . --max-warnings 0","test":"vitest","build":"tsup"},"author":{"name":"Orbiter Finance"},"license":"MIT","devDependencies":{"@fuel-ts/account":"^0.96.1","@orbiter-finance/eslint-config":"workspace:*","@orbiter-finance/typescript-config":"workspace:*","axios":"^1.7.7","dotenv":"^16.4.5","tiny-secp256k1":"^2.2.3","tonweb-mnemonic":"^1.0.1"},"dependencies":{"@orbiter-finance/vm-core":"^0.0.1","ecpair":"^2.1.0"},"peerDependencies":{"starknet":"^6.11.0","bitcoinjs-lib":"^6.1.6","typescript":"^5.6.0","tsup":"^8.2.4","@solana/spl-token":"^0.4.8","tronweb":"6.0.0-beta.4","@aptos-labs/ts-sdk":"^1.32.1","@project-serum/anchor":"^0.26.0","ethers":"^6.13.2","tonweb":"^0.0.66","@solana/web3.js":"^1.95.3","bignumber.js":"^9.1.2"},"_id":"orbiter-bridge-sdks@0.1.15","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-6rmiOWevUHpbjEkEz13ndBjfd8E/1LpOfhfz/GGRec//veZBDlGkwzvgM9JioxIfQAY4ohXxZhfrbyjZ8jr6Uw==","shasum":"514938a77700b76511e0195dc7dd024c84a3950d","tarball":"https://registry.npmjs.org/orbiter-bridge-sdks/-/orbiter-bridge-sdks-0.1.15.tgz","fileCount":8,"unpackedSize":534538,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCvGpB1LzCahUupf2q28C+ULTHJLLCCUxvrqyBpQpoXdAIgFTM5p6oUReSy43QXttR8TX4moCcVQUmdzdiuGlNjB7s="}]},"_npmUser":{"name":"dooper","email":"fenelef192@bezill.com"},"directories":{},"maintainers":[{"name":"dooper","email":"fenelef192@bezill.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/orbiter-bridge-sdks_0.1.15_1778570317702_0.8348474972491446"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-12T07:18:37.622Z","0.1.15":"2026-05-12T07:18:37.883Z","modified":"2026-05-12T07:18:38.071Z"},"maintainers":[{"name":"dooper","email":"fenelef192@bezill.com"}],"description":"Orbiter Bridge SDK","author":{"name":"Orbiter Finance"},"license":"MIT","readme":"# Orbiter SDK Document\n\n## 🌕 Overview\n\n-   The Orbiter SDK package provides a simplest, out-of-the-box approach to access the Orbiter API to find and execute\n    the best on-chain and cross-chain swapping and bridging.\n\n-   For more information about API, please see page:\n    [Orbiter REST API](https://docs.orbiter.finance/developer/rest-api/overview).\n\n## 📦 Installation\n\nYou can use following ways to get the latest version of Orbiter SDK.\n\n-   npm\n\n    ```shell\n    npm install @orbiter-finance/bridge-sdk\n    ```\n\n-   yarn\n\n    ```shell\n    yarn add @orbiter-finance/bridge-sdk\n    ```\n\n-   pnpm\n\n    ```shell\n    pnpm add @orbiter-finance/bridge-sdk\n    ```\n\nFeel free to [report](https://discord.com/invite/FbztTBvnBT) if you encounter any problems.\n\n## 👾 Quick Start\n\n-   ### Set up the SDK\n\n    ```javascript\n    import {  OrbiterClient, ENDPOINT } from \"@orbiter-finance/bridge-sdk\";\n    const config: ConfigOptions = {\n      apiEndpoint: ENDPOINT.TESTNET\n      defaultRouterType: RouterType.CONTRACT //Optional, which give priority to the transfer type\n    }\n    let orbiter: OrbiterClient = await OrbiterClient.create(config);\n    ```\n\n-   ### Check Available TradePair\n\n    ```typescript\n    // get all available chains\n    const chains: Chain[] = orbiter.getAllChains()\n\n    // choose a chain from list to get availabletokens\n    const tokens: Token[] = orbiter.getAvailableTokens(\"chainId\")\n\n    // choose a chain and a token symbol to get available trade pairs\n    const tradePairs: TradePair[] = orbiter.getAvailableTradePairs(\"chainId\", \"symbol\")\n\n    // or directly get all available trade pairs\n    const tradePairs: TradePair[] = orbiter.getAllTradePairs()\n\n    // in case you want show all symbols\n    const symbols = orbiter.getAllSymbols()\n    ```\n\n    > 💡Tips:\n    >\n    > -   You don't have to care about the router type you send transaction, SDK will automatically using the availlable\n    >     type, unless you know what that way means.\n\n-   ### Create Router and Send Transaction\n\n    ##### From EVM Chains\n\n    ```typescript\n    import { Wallet, JsonRpcProvider } from \"ethers\"\n\n    // choose a tradePair to create router\n    const tradePair: TradePair = {\n        srcChainId: \"11155111\",\n        dstChainId: \"421614\",\n        srcTokenSymbol: \"ETH\",\n        dstTokenSymbol: \"ETH\",\n    }\n    const router = orbiter.createRouter(tradePair)\n\n    // check min and max value\n    const min = router.getMinSendAmount()\n    const max = router.getMaxSendAmount()\n\n    // simulationAmount\n    const { sendAmount, receiveAmount } = router.simulationAmount(\"amountBetweenMinAndMax\")\n\n    // connect wallet\n    const provider = new JsonRpcProvider(\"https://ethereum-sepolia-rpc.publicnode.com\")\n    const wallet = new Wallet(\"privateKey\", provider)\n    // check if balance sufficient\n    const balance = (await provider.getBalance(wallet)).toString()\n\n    // if is erc20 token, need approve\n    // const approve = await router.createApprove(account.address, sendAmount);\n    // const approveResponce = await wallet.sendTransaction(approve);\n    // const approveReceipt = await approveRes.wait();\n\n    // create transaction\n    const transactionParams = router.createTransaction(wallet.address, \"receiver\", sendAmount)\n    // send transaction\n    const transactionResponce = await wallet.sendTransaction(transactionParams.raw as TransactionRequest)\n    const transactionReceipt = await transferResponce.wait()\n    ```\n\n    ##### From BTC Chains\n\n    ```typescript\n    import * as bitcoin from 'bitcoinjs-lib'\n    import * as ecc from 'tiny-secp256k1';\n    import { ECPairFactory, networks } from 'ecpair';\n\n    // choose a tradePair to create router\n    const tradePair: TradePair = {\n      srcChainId: 'FRACTAL_TEST',\n      dstChainId: '11155111',\n      srcTokenSymbol: 'BTC',\n      dstTokenSymbol: 'BTC'\n    }\n    const router = orbiter.createRouter(tradePair);\n\n    // check min and max value\n    const min = router.getMinSendAmount();\n    const max = router.getMaxSendAmount();\n\n    // simulationAmount\n    const { sendAmount, receiveAmount } = router.simulationAmount('amountBetweenMinAndMax');\n\n    // creat payment\n    const network = networks.bitcoin;\n    const ECPair = ECPairFactory(ecc);\n    const keyPair = ECPair.fromWIF(btcPrivateKey, network);\n    const payment = bitcoin.payments.p2wpkh({\n      pubkey: keyPair.publicKey,\n      network,\n    });\n\n    // create transaction and add output\n    const transactionParams = await router.createTransaction(payment.address, 'receiver', sendAmount);\n    const psbt = transactionParams.raw as bitcoin.Psbt;\n\n    // get utxos from chain\n    const utxos = ...\n\n    // add inputs\n    const script = payment.output;\n    utxos.forEach((utxo: any) => {\n      const inputData = {\n        hash: utxo.txid,\n        index: utxo.vout,\n        witnessUtxo: {\n          script,\n          value: utxo.satoshi\n        },\n      }\n      psbt.addInput(inputData);\n    });\n\n    // estimate fee from oracle or explorer\n    const fee = ...\n\n    // add change !!!important!!!\n    const change = totalAmount - Number(sendAmount) - fee;\n    if (change > 0) {\n      psbt.addOutput({\n        script,\n        value: change\n      });\n    }\n\n    // sign inputs\n    for (let i = 0; i < psbt.inputCount; i++) {\n      psbt.signInput(i, keyPair);\n      psbt.validateSignaturesOfInput(i, (\n        pubkey: Buffer,\n        msghash: Buffer,\n        signature: Buffer,\n      ) => ECPair.fromPublicKey(pubkey).verify(msghash, signature));\n    }\n    psbt.finalizeAllInputs();\n\n    // broadcast\n    const broadcastResult = ...\n\n    ```\n\n    ##### From Tron Chains\n\n    ```typescript\n    import { TronWeb } from \"tronweb\"\n\n    // choose a tradePair to create router\n    const tradePair: TradePair = {\n        srcChainId: \"3448148188\",\n        dstChainId: \"11155111\",\n        srcTokenSymbol: \"JST\",\n        dstTokenSymbol: \"JST\",\n    }\n    const router = orbiter.createRouter(tradePair)\n\n    // check min and max value\n    const min = router.getMinSendAmount()\n    const max = router.getMaxSendAmount()\n\n    // simulationAmount\n    const { sendAmount, receiveAmount } = router.simulationAmount(\"amountBetweenMinAndMax\")\n\n    // connect to tronweb\n    const tronWeb = new TronWeb({\n        fullHost: \"https://nile.trongrid.io\",\n        headers: { \"TRON-PRO-API-KEY\": \"API key\" },\n        privateKey: \"privateKey\",\n    })\n\n    // create approve\n    const approveParams = await router.createApprove(address, sendAmount)\n    // sign and send approve\n    const signedApprove = await tronWeb.trx.sign((approveParams.raw as Types.TransactionWrapper).transaction)\n    const approveRes = await tronWeb.trx.sendRawTransaction(signedApprove)\n\n    // create transaction\n    const transactionParams = await router.createTransaction(address, evmAddress, sendAmount)\n    // sign and send transaction\n    const signedTransaction = await tronWeb.trx.sign((transactionParams.raw as Types.TransactionWrapper).transaction)\n    const transferRes = await tronWeb.trx.sendRawTransaction(signedTransaction)\n    ```\n\n    ##### From Starknet Chains\n\n    ```typescript\n    import { Account, Provider, constants } from \"starknet\"\n\n    // choose a tradePair to create router\n    const tradePair: TradePair = {\n        srcChainId: \"SN_SEPOLIA\",\n        dstChainId: \"11155111\",\n        srcTokenSymbol: \"ETH\",\n        dstTokenSymbol: \"ETH\",\n    }\n    const router = orbiter.createRouter(tradePair)\n\n    // check min and max value\n    const min = router.getMinSendAmount()\n    const max = router.getMaxSendAmount()\n\n    // simulationAmount\n    const { sendAmount, receiveAmount } = router.simulationAmount(\"amountBetweenMinAndMax\")\n\n    // connect account\n    const provider = new Provider({ nodeUrl: constants.NetworkName.SN_SEPOLIA })\n    const account = new Account(provider, starknetAddress, privateKey)\n\n    // create approve\n    const approveParams = await router.createApprove(account.address, sendAmount)\n\n    // create transaction\n    const transactionParams = router.createTransaction(wallet.address, \"receiver\", sendAmount)\n\n    // send approve and transaction\n    const transactionResponce = await account.execute([approveParams.raw as Call, transactionParams.raw as Call])\n    const transactionReceipt = await provider.waitForTransaction(transactionResponce.transaction_hash)\n    ```\n\n    ##### From Solana Chains\n\n    ```typescript\n    import bs58 from \"bs58\"\n    import { Connection, Keypair, TransactionMessage, VersionedTransaction, LAMPORTS_PER_SOL } from \"@solana/web3.js\"\n\n    // choose a tradePair to create router\n    const tradePair: TradePair = {\n        srcChainId: \"SOLANA_DEV\",\n        dstChainId: \"11155111\",\n        srcTokenSymbol: \"USDC\",\n        dstTokenSymbol: \"USDC\",\n    }\n    const router = orbiter.createRouter(tradePair)\n\n    // check min and max value\n    const min = router.getMinSendAmount()\n    const max = router.getMaxSendAmount()\n\n    // simulationAmount\n    const { sendAmount, receiveAmount } = router.simulationAmount(\"amountBetweenMinAndMax\")\n\n    // connect wallet\n    const connection = new Connection(\"solana-endpoint\", \"confirmed\")\n    const sender = Keypair.fromSecretKey(bs58.decode(\"privateKey\"))\n\n    // create transaction\n    const transactionParams = await router.createTransaction(sender.publicKey.toString(), \"receiver\", sendAmount)\n\n    // process transaction\n    const transaction = transactionParams.raw as Transaction\n    const blockhash = await connection.getLatestBlockhash()\n    transaction.recentBlockhash = blockhash.blockhash\n    transaction.feePayer = sender.publicKey\n    const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({\n        units: 1000000,\n    })\n    const addPriorityFee = ComputeBudgetProgram.setComputeUnitPrice({\n        microLamports: 100,\n    })\n    transaction.add(modifyComputeUnits).add(addPriorityFee)\n    transaction.sign(sender)\n\n    const signature = await connection.sendRawTransaction(transaction.serialize())\n\n    //check transaction status\n    const status = await connection.getSignatureStatus(signature, {\n        searchTransactionHistory: false,\n    })\n    ```\n\n    > 💡Tips:\n    >\n    > -   The function [createTransfer] will return deferent type of transfer structure which depends on source chain\n    >     type, for EVM it will be TransactionRequest, for BTC will be a PSBT for Starknet will be Call, etc. For more\n    >     information please see their official document.\n\n-   ### Check Bridge Status\n\n    ```typescript\n    const transactionStatus = await orbiter.checkTransactionStatus(hash)\n    ```\n\n-   ### Check User Opoints and Transaction History\n\n    ```typescript\n    // get user Opoints\n    const opoints = await orbiter.getUserOpoint(wallet.address)\n\n    // get user transaction history\n    const history = await orbiter.getTransactionHistory(wallet.address, TxType.BRIDGE, 0)\n    ```\n\n    > 💡Tips:\n    >\n    > -   For structure of result on these two function, please check\n    >     [Orbiter REST API](https://docs.orbiter.finance/developer/rest-api/overview).\n","readmeFilename":"README.md","_rev":"1-fccb5e8469cdfcc90a76448cc54c4bbd"}