id,language,protocol,category,name,description,code,imports_or_contract,notes
1,clarity,alex,swap,swap-helper,"Swap tokens via Alex","(contract-call? .amm-swap-pool-v1-1 swap-helper .token-wstx .age000-governance-token u100000000 u100000000 u1000000 u1)","SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-swap-pool-v1-1","Use factors to maintain price ratios; dx is input amount; min-dy is minimum output"
2,clarity,alex,pool,get-pool-details,"Get pool info","(contract-call? .amm-swap-pool-v1-1 get-pool-details .token-wstx .age000-governance-token)","SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-swap-pool-v1-1","Returns balance-x balance-y pool-token total-supply"
3,clarity,alex,liquidity,add-to-position,"Add liquidity to Alex","(contract-call? .amm-swap-pool-v1-1 add-to-position .token-wstx .age000-governance-token u100000000 u100000000 u1000000)","SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-swap-pool-v1-1","Factors determine price impact; returns LP tokens"
4,clarity,velar,swap,swap-exact-tokens,"Swap on Velar","(contract-call? .univ2-router swap-exact-tokens-for-tokens u1000000 u950000 (list .token-a .token-b))","SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-router","Path can include multiple hops; min-out protects against slippage"
5,clarity,velar,liquidity,add-liquidity,"Add liquidity to Velar","(contract-call? .univ2-router add-liquidity .token-a .token-b u1000000 u1000000 u900000 u900000)","SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-router","Min amounts protect against front-running; returns LP tokens"
6,clarity,velar,liquidity,remove-liquidity,"Remove liquidity from Velar","(contract-call? .univ2-router remove-liquidity .token-a .token-b u1000000 u900000 u900000)","SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-router","Burns LP tokens; returns underlying tokens"
7,clarity,bitflow,swap,swap-stx-for-token,"Swap STX for tokens","(contract-call? .swap-helper-v1-03 swap-helper .wstx .token-out u1000000 u950000)","SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.swap-helper-v1-03","Helper contract simplifies multi-hop swaps"
8,clarity,bitflow,swap,swap-token-for-stx,"Swap tokens for STX","(contract-call? .swap-helper-v1-03 swap-helper .token-in .wstx u1000000 u950000)","SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.swap-helper-v1-03","Automatically finds best route"
9,clarity,zest,supply,supply-asset,"Supply collateral to Zest","(contract-call? .pool-v1-0 add-asset u0 .sbtc u1000000)","SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-v1-0","Pool ID 0 is main pool; receives interest-bearing tokens"
10,clarity,zest,borrow,borrow-asset,"Borrow from Zest","(contract-call? .pool-v1-0 drawdown u0 .lp-token u500000)","SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-v1-0","Requires collateral; interest accrues per block"
11,clarity,zest,info,get-pool-data,"Get Zest pool info","(contract-call? .pool-v1-0 get-pool u0)","SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-v1-0","Returns total-supplied total-borrowed interest-rate"
12,clarity,stackingdao,stake,deposit,"Stake STX for stSTX","(contract-call? .stacking-dao-core-v1 deposit u100000000)","SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.stacking-dao-core-v1","Liquid stacking; stSTX auto-compounds rewards"
13,clarity,stackingdao,unstake,withdraw,"Unstake stSTX for STX","(contract-call? .stacking-dao-core-v1 withdraw u100000000)","SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.stacking-dao-core-v1","Burns stSTX; may have cooldown period"
14,clarity,boost,boost,boost-stx,"Boost STX earnings","(contract-call? .pox-fast-pool-v2 delegate-stx u100000000 pox-addr)","SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pox-fast-pool-v2","Fast Pool variant with higher APY"
15,clarity,faktory,swap,swap-tokens,"Swap on Faktory","(contract-call? .faktory-v2-01 swap .token-in .token-out u1000000 u950000)","SPTF1TGKT2AF5EJ0ZN56T87J14XSRFR9JFPFG2QV.faktory-v2-01","Meme token DEX; high slippage possible"
16,javascript,alex,swap,alex-swap-tx,"Build Alex swap transaction","const txOptions = { contractAddress: 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM' contractName: 'amm-swap-pool-v1-1' functionName: 'swap-helper' functionArgs: [contractPrincipalCV(tokenXAddress tokenXName) contractPrincipalCV(tokenYAddress tokenYName) uintCV(100000000) uintCV(100000000) uintCV(amountIn) uintCV(minAmountOut)] network }; const tx = await makeContractCall(txOptions)","import { makeContractCall contractPrincipalCV uintCV } from '@stacks/transactions'","Factors are pool-specific; query pool details first"
17,javascript,velar,swap,velar-swap-tx,"Build Velar swap transaction","const path = [contractPrincipalCV('SP...', 'token-a') contractPrincipalCV('SP...', 'token-b')]; const txOptions = { contractAddress: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1' contractName: 'univ2-router' functionName: 'swap-exact-tokens-for-tokens' functionArgs: [uintCV(amountIn) uintCV(minAmountOut) listCV(path)] network }; const tx = await makeContractCall(txOptions)","import { makeContractCall uintCV listCV contractPrincipalCV } from '@stacks/transactions'","Path supports multi-hop swaps; calculate min-out with slippage tolerance"
18,javascript,velar,liquidity,velar-add-liquidity-tx,"Add liquidity to Velar via SDK","const txOptions = { contractAddress: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1' contractName: 'univ2-router' functionName: 'add-liquidity' functionArgs: [contractPrincipalCV(tokenAAddr tokenAName) contractPrincipalCV(tokenBAddr tokenBName) uintCV(amountA) uintCV(amountB) uintCV(minA) uintCV(minB)] network }; const tx = await makeContractCall(txOptions)","import { makeContractCall uintCV contractPrincipalCV } from '@stacks/transactions'","Set min amounts to ~2% less to handle price movements"
19,api,alex,info,alex-pool-info,"Get Alex pool info via API","const response = await fetch('https://api.alexlab.co/v1/pool_tokens'); const pools = await response.json(); const pool = pools.find(p => p.token0 === tokenX && p.token1 === tokenY)","fetch or axios","Returns reserve0 reserve1 totalSupply volume24h"
20,api,velar,info,velar-pool-info,"Get Velar pool info via API","const response = await fetch('https://api.velar.co/v1/pools'); const pools = await response.json(); const pool = pools.find(p => p.pair === `${token0}-${token1}`)","fetch or axios","Returns liquidity volume24h priceChange24h"
21,javascript,bitflow,swap,bitflow-swap-tx,"Build Bitflow swap transaction","const txOptions = { contractAddress: 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9' contractName: 'swap-helper-v1-03' functionName: 'swap-helper' functionArgs: [contractPrincipalCV(tokenInAddr tokenInName) contractPrincipalCV(tokenOutAddr tokenOutName) uintCV(amountIn) uintCV(minAmountOut)] network }; const tx = await makeContractCall(txOptions)","import { makeContractCall uintCV contractPrincipalCV } from '@stacks/transactions'","Helper auto-routes through best pools"
22,javascript,stackingdao,stake,stackingdao-deposit-sdk,"Deposit to StackingDAO via SDK","const txOptions = { contractAddress: 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG' contractName: 'stacking-dao-core-v1' functionName: 'deposit' functionArgs: [uintCV(amountMicroStx)] network }; const tx = await makeContractCall(txOptions); const broadcast = await broadcastTransaction({ transaction: tx network })","import { makeContractCall uintCV broadcastTransaction } from '@stacks/transactions'","Receive stSTX at 1:1 ratio; stSTX value increases over time from rewards"
23,api,stackingdao,info,stackingdao-exchange-rate,"Get stSTX exchange rate","const response = await fetch('https://api.stackingdao.com/v1/info'); const info = await response.json(); const exchangeRate = info.stx_per_ststx","fetch or axios","Returns current STX/stSTX exchange rate and APY"
24,javascript,slippage,calculate-min-amount-out,"Calculate minimum output with slippage","function calculateMinOut(expectedAmount slippagePercent) { return Math.floor(expectedAmount * (1 - slippagePercent / 100)) }","None","Common slippage: 0.5-2%; use higher for volatile pairs"
25,api,aggregator,get-best-route,"Find best swap route across DEXs","const response = await fetch(`https://api.stacksswap.xyz/v1/route?from=${tokenIn}&to=${tokenOut}&amount=${amount}`); const route = await response.json(); console.log(route.path route.expectedOutput route.priceImpact)","fetch or axios","Aggregator finds optimal path across Alex Velar Bitflow"
26,clarity,usdcx,burn,burn-usdcx-to-eth,"Burn USDCx to withdraw to Ethereum","(contract-call? 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx-v1 burn u10000000 u0 0xa1404d9E7646b0112C49aE0296D6347C956D0867)","SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx-v1","Amount in micro-units (6 decimals); u0 = Ethereum domain; raw 20-byte ETH address"
27,clarity,usdcx,transfer,transfer-usdcx,"Transfer USDCx tokens","(contract-call? 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx transfer u10000000 tx-sender recipient none)","SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx","SIP-010 compliant; 6 decimals"
28,clarity,usdcx,read,get-usdcx-balance,"Get USDCx balance","(contract-call? 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx get-balance address)","SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx","Returns balance in micro-units (6 decimals)"
29,javascript,usdcx,deposit,bridge-usdc-to-stacks,"Deposit USDC from Ethereum to mint USDCx on Stacks","const approveTx = await walletClient.writeContract({ address: USDC_CONTRACT abi: ERC20_ABI functionName: 'approve' args: [X_RESERVE_CONTRACT amount] }); await waitForTransactionReceipt({ hash: approveTx }); const depositTx = await walletClient.writeContract({ address: X_RESERVE_CONTRACT abi: X_RESERVE_ABI functionName: 'depositToRemote' args: [amount 10003 encodedStacksAddress USDC_ADDRESS 0 '0x'] })","import { createWalletClient } from 'viem'; import { mainnet } from 'viem/chains'","Chain ID 10003 = Stacks mainnet; Stacks address must be encoded to bytes32"
30,javascript,usdcx,address,encode-stacks-address,"Encode Stacks address for Ethereum bridge","function encodeStacksAddress(stacksAddress) { const { version hash160 } = decodeStacksAddress(stacksAddress); const padding = new Uint8Array(11).fill(0); const versionByte = new Uint8Array([version]); const hashBytes = hexToBytes(hash160); return concat([padding versionByte hashBytes]) }","import { decodeStacksAddress } from '@stacks/transactions'; import { concat hexToBytes } from 'viem'","Left-pad 11 zero bytes + version byte + 20-byte hash160 = 32 bytes"
31,javascript,usdcx,address,format-eth-address,"Format Ethereum address for USDCx burn","function formatEthAddressAsBuffer(ethAddress) { const clean = ethAddress.toLowerCase().replace(/^0x/ ''); const buffer = new Uint8Array(20); for (let i = 0; i < 20; i++) { buffer[i] = parseInt(clean.slice(i * 2 i * 2 + 2) 16) } return buffer }","None","Returns raw 20-byte buffer; do NOT pad to 32 bytes"
32,javascript,usdcx,withdraw,build-usdcx-burn-tx,"Build USDCx burn transaction for withdrawal to ETH","const functionArgs = [Cl.uint(amount) Cl.uint(0) Cl.buffer(formatEthAddressAsBuffer(ethAddress))]; const postCondition = Pc.principal(sender).willSendEq(amount).ft('SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx' 'usdcx'); const txOptions = { contractAddress: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE' contractName: 'usdcx-v1' functionName: 'burn' functionArgs postConditions: [postCondition] network: 'mainnet' }","import { Cl Pc makeContractCall } from '@stacks/transactions'","Min withdrawal: 4.80 USDCx; u0 = Ethereum domain; ~60 min settlement"
33,javascript,usdcx,balance,get-usdcx-balance,"Get USDCx balance via Hiro API","const response = await fetch(`https://api.hiro.so/extended/v1/address/${address}/balances`); const balances = await response.json(); const usdcx = balances.fungible_tokens['SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx::usdcx']; return usdcx ? BigInt(usdcx.balance) : 0n","fetch","Returns balance in micro-units; divide by 1e6 for display"
34,javascript,usdcx,conversion,convert-usdcx-decimals,"Convert USDCx between display and micro-units","function toMicroUsdcx(amount) { const [whole decimal = ''] = amount.toString().split('.'); return BigInt(whole + decimal.padEnd(6 '0').slice(0 6)) } function fromMicroUsdcx(micro) { const str = micro.toString().padStart(7 '0'); return str.slice(0 -6) + '.' + str.slice(-6) }","None","6 decimals: 100.50 USDC = 100500000 micro-units"
35,javascript,bitflow,swap,swap-usdcx-for-token,"Swap USDCx for other tokens via Bitflow","const path = listCV([contractPrincipalCV('SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE' 'usdcx') contractPrincipalCV(tokenOutAddr tokenOutName)]); const txOptions = { contractAddress: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR' contractName: 'router-stableswap-xyk-multihop-v-1-2' functionName: 'swap-x-for-y' functionArgs: [uintCV(amountIn) uintCV(minAmountOut) path] network: 'mainnet' }","import { makeContractCall uintCV listCV contractPrincipalCV } from '@stacks/transactions'","Bitflow router handles multi-hop; set slippage 0.5-2%"
36,clarity,bitflow,swap,bitflow-usdcx-swap-call,"Swap USDCx via Bitflow router","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2 swap-x-for-y u10000000 u9500000 (list 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token))","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2","Amount-in first; min-amount-out second; path is token list"
37,api,usdcx,contracts,usdcx-contract-addresses,"USDCx contract addresses","const USDCX_CONTRACTS = { mainnet: { token: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx' protocol: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx-v1' } testnet: { token: 'ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.usdcx' protocol: 'ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.usdcx-v1' } }; const ETH_CONTRACTS = { mainnet: { usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' xReserve: '0x8888888199b2Df864bf678259607d6D5EBb4e3Ce' } sepolia: { usdc: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238' xReserve: '0x008888878f94C0d87defdf0B07f46B93C1934442' } }","Reference","USDCx uses Circle xReserve protocol for cross-chain bridging"
38,api,usdcx,info,bridge-timing-costs,"USDCx bridge timing and costs","const BRIDGE_INFO = { deposit: { time: '~15 minutes' minAmount: 10 fee: 'ETH gas only (~$0.50 covered by Circle)' } withdrawal: { time: '~60 minutes mainnet / ~25 min testnet' minAmount: 4.80 fee: 'STX gas + $4.80 fixed' limit: '50 burn intents per tx (max 10 per batch x 5 batches)' } }","Reference","Deposits: ETH -> Stacks auto-mint; Withdrawals: burn on Stacks -> release on ETH"
39,javascript,usdcx,monitor,monitor-bridge-deposit,"Monitor bridge deposit status","async function monitorDeposit(ethTxHash onStatus) { onStatus('eth_confirming'); await waitForTransactionReceipt({ hash: ethTxHash confirmations: 12 }); onStatus('attesting'); await sleep(60000); onStatus('minting'); const stacksTx = await pollForStacksMint(ethTxHash); onStatus('completed'); return stacksTx }","import { waitForTransactionReceipt } from 'viem'","12 ETH confirmations required; Circle attestation automatic"
40,javascript,bitflow,tokens,bitflow-token-ids,"Bitflow token identifiers for USDCx swaps","const BITFLOW_TOKENS = { USDCx: { address: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE' name: 'usdcx' id: 'token-usdcx' decimals: 6 } sBTC: { address: 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4' name: 'sbtc-token' id: 'token-sbtc' decimals: 8 } wSTX: { address: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1' name: 'wstx' id: 'token-wstx' decimals: 6 } stSTX: { address: 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG' name: 'ststx-token' id: 'token-ststx' decimals: 6 } }","Reference","Use with Bitflow router for USDCx swaps"
41,clarity,bitflow,traits,bitflow-trait-imports,"Import Bitflow traits for contract integration","(use-trait ft-trait 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.sip-010-trait-ft-standard-v-1-1.sip-010-trait) (use-trait stableswap-pool-trait 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-trait-v-1-4.stableswap-pool-trait) (use-trait xyk-pool-trait 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-trait-v-1-2.xyk-pool-trait) (use-trait stableswap-pool-trait-v12 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-trait-v-1-2.stableswap-pool-trait)","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR","Required traits for Bitflow router contract calls"
42,clarity,bitflow,swap,bitflow-swap-helper-a,"Bitflow swap-helper-a (1 stableswap + 1 xyk pool)","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2 swap-helper-a amount min-out none false { a: ss-token-a b: ss-token-b } { a: ss-pool } { a: xyk-token-a b: xyk-token-b } { a: xyk-pool })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2","2-hop swap: stableswap then XYK; false=forward true=reverse"
43,clarity,bitflow,swap,bitflow-swap-helper-b,"Bitflow swap-helper-b (1 stableswap + 2 xyk pools)","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2 swap-helper-b amount min-out none false { a: ss-token-a b: ss-token-b } { a: ss-pool } { a: xyk-token-a b: xyk-token-b c: xyk-token-c d: xyk-token-d } { a: xyk-pool-a b: xyk-pool-b })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2","3-hop swap: stableswap then 2 XYK pools"
44,clarity,bitflow,swap,bitflow-swap-helper-c,"Bitflow swap-helper-c (1 stableswap + 3 xyk pools)","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2 swap-helper-c amount min-out none false { a: ss-token-a b: ss-token-b } { a: ss-pool } { a: xyk-token-a b: xyk-token-b c: xyk-token-c d: xyk-token-d e: xyk-token-e f: xyk-token-f } { a: xyk-pool-a b: xyk-pool-b c: xyk-pool-c })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2","4-hop swap: stableswap then 3 XYK pools; for deep liquidity paths"
45,clarity,bitflow,swap,bitflow-usdcx-to-stx,"Swap USDCx to STX via Bitflow","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-v-1-5 swap-helper-a amount min-out none false { a: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx b: 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-aeusdc-usdcx-v-1-1 } { a: 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc b: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.token-stx-v-1-1 } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-stx-aeusdc-v-1-1 })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-v-1-5","Route: USDCx -> aeUSDC (stableswap) -> STX (xyk)"
46,clarity,bitflow,swap,bitflow-stx-to-usdcx,"Swap STX to USDCx via Bitflow (reversed)","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-v-1-5 swap-helper-a amount min-out none true { a: 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc b: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-aeusdc-usdcx-v-1-1 } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.token-stx-v-1-1 b: 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-stx-aeusdc-v-1-1 })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-v-1-5","Set true for reverse direction; Route: STX -> aeUSDC -> USDCx"
47,clarity,bitflow,swap,bitflow-usdcx-to-sbtc,"Swap USDCx to sBTC via Bitflow","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2 swap-helper-b amount min-out none false { a: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx b: 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-aeusdc-usdcx-v-1-1 } { a: 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc b: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.token-stx-v-1-2 c: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.token-stx-v-1-2 d: 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-stx-aeusdc-v-1-2 b: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-sbtc-stx-v-1-1 })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2","Route: USDCx -> aeUSDC -> STX -> sBTC"
48,clarity,alex,swap,alex-swap-helper-a,"Alex AMM swap-helper-a (multi-hop with factors)","(contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 swap-helper-a 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-wstx-v2 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-wcorgi 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex u100000000 u100000000 amount (some min-out))","SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01","3-hop via intermediate token; factors are 1e8 for price ratios"
49,clarity,alex,swap,alex-swap-helper,"Alex AMM swap-helper (direct swap)","(contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 swap-helper 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-wstx-v2 u100000000 amount (some min-out))","SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01","Direct token pair swap; factor u100000000 = 1e8"
50,clarity,velar,swap,velar-path-apply,"Velar path-apply swap (tuple-based routing)","(contract-call? 'SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.path-apply_staging apply (list { a: \"u\" b: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.velar-stx c: u21 d: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.wstx e: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.velar-token f: false }) amount (some token1) (some token2) none none none (some 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-share-fee-to) none none none none none none none none none none none none none none none none none none none none)","SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.path-apply_staging","a=pool-type b=pool c=pool-id d=token-in e=token-out f=reverse"
51,clarity,velar,swap,velar-stx-to-velar,"Swap STX to VELAR token via Velar","(contract-call? 'SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.path-apply_staging apply (list { a: \"u\" b: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.velar-stx c: u21 d: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.wstx e: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.velar-token f: false }) stx-amount (some 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.wstx) (some 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.velar-token) none none none (some 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-share-fee-to) none none none none none none none none none none none none none none none none none none none none)","SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.path-apply_staging","Use f: true for reverse (VELAR->STX); pool u21 is STX-VELAR"
52,clarity,bitflow,stableswap,stableswap-ststx-to-stx,"Swap stSTX to STX via stableswap","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-swap-helper-v-1-5 swap-helper-a amount min-out none { a: 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token b: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.token-stx-v-1-2 } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-stx-ststx-v-1-4 })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-swap-helper-v-1-5","Stableswap-only helper for correlated assets"
53,clarity,bitflow,stableswap,stableswap-usdh-to-usdcx,"Swap USDH to USDCx via stableswap","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-swap-helper-v-1-5 swap-helper-a amount min-out none { a: 'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1 b: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx } { a: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-usdh-usdcx-v-1-1 })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-swap-helper-v-1-5","Stablecoin to stablecoin swap with low slippage"
54,clarity,multi-dex,pattern,two-step-swap-pattern,"Two-step swap pattern (USDCx -> STX -> Target)","(let ((stx-received (unwrap! (contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-v-1-5 swap-helper-a usdcx-amount stx-min-out none false { a: usdcx b: aeusdc } { a: stableswap-pool } { a: aeusdc b: stx } { a: xyk-pool }) ERR-SWAP-FAILED)) (contract-call? target-dex swap stx-received target-min-out))","Pattern","Capture intermediate amount in let binding; use for cross-DEX routes"
55,clarity,multi-dex,pattern,conditional-swap,"Conditional swap execution pattern","(if (> amount u0) (begin (unwrap! (contract-call? dex swap amount min-out ...) ERR-SWAP-FAILED) true) true)","Pattern","Skip swap if amount is zero; useful for multi-token strategies"
56,api,multi-dex,contracts,mainnet-dex-routers,"Mainnet DEX router contract addresses","const DEX_ROUTERS = { bitflow_v12: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-2' bitflow_v15: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-5' bitflow_simple: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-v-1-5' bitflow_stableswap: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-swap-helper-v-1-5' alex_amm: 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01' velar_path: 'SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.path-apply_staging' }","Reference","Production mainnet router addresses"
57,api,multi-dex,contracts,mainnet-pool-addresses,"Mainnet liquidity pool addresses","const POOLS = { usdcx_aeusdc: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-aeusdc-usdcx-v-1-1' stx_aeusdc_v1: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-stx-aeusdc-v-1-1' stx_aeusdc_v2: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-stx-aeusdc-v-1-2' sbtc_stx: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-sbtc-stx-v-1-1' stx_ststx: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-stx-ststx-v-1-4' usdh_usdcx: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-usdh-usdcx-v-1-1' welsh_stx: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-welsh-stx-v-1-1' sbtc_dog: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-sbtc-dog-v-1-1' sbtc_droid: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-sbtc-droid-v-1-1' }","Reference","Bitflow liquidity pools for common pairs"
58,api,multi-dex,contracts,mainnet-token-addresses,"Mainnet token contract addresses","const TOKENS = { usdcx: 'SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx' aeusdc: 'SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc' sbtc: 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token' ststx: 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token' usdh: 'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1' welsh: 'SP3NE50GEXFG9SZGTT51P40X2CKYSZ5CC4ZTZ7A2G.welshcorgicoin-token' leo: 'SP1AY6K3PQV5MRT6R4S671NWW2FRVPKM0BR162CT6.leo-token' dog: 'SP14NS8MVBRHXMM96BQY0727AJ59SWPV7RMHC0NCG.pontis-bridge-DOG' alex: 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex' velar: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.velar-token' wstx_alex: 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-wstx-v2' wstx_velar: 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.wstx' }","Reference","Production token contract addresses"
59,clarity,bitflow,swap,bitflow-v15-swap-helper-a,"Bitflow v1.5 swap-helper-a (ss14 + ss12 + xyk)","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-5 swap-helper-a amount min-out none false { a: ss14-token-a b: ss14-token-b } { a: ss14-pool } { a: ss12-token-a b: ss12-token-b } { a: ss12-pool } { a: xyk-token-a b: xyk-token-b } { a: xyk-pool })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-5","v1.5 router supports both stableswap v1.4 and v1.2 pools"
60,clarity,bitflow,swap,bitflow-v15-stableswap-only,"Bitflow v1.5 swap-helper-c (stableswap only)","(contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-5 swap-helper-c amount min-out none false { a: ss14-token-a b: ss14-token-b } { a: ss14-pool } { a: ss12-token-a b: ss12-token-b } { a: ss12-pool })","SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.router-stableswap-xyk-multihop-v-1-5","For stablecoin-only routes; lower slippage"
61,clarity,velar,info,velar-path-tuple-format,"Velar path tuple structure","{ a: pool-type b: pool-contract c: pool-id d: token-in e: token-out f: is-reverse }","SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.path-apply_staging","a='u' for univ2; c=pool id (u21 for STX-VELAR); f=true reverses direction"
62,clarity,alex,info,alex-token-factors,"Alex AMM factor values","u100000000","SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01","Factors are 1e8 (100000000); maintain price ratios in weighted pools"
63,javascript,bitflow,swap,build-bitflow-swap-args,"Build Bitflow swap function arguments","const buildBitflowSwapArgs = (amount minOut ssTokens ssPool xykTokens xykPool) => [uintCV(amount) uintCV(minOut) noneCV() boolCV(false) tupleCV({ a: contractPrincipalCV(...ssTokens.a) b: contractPrincipalCV(...ssTokens.b) }) tupleCV({ a: contractPrincipalCV(...ssPool) }) tupleCV({ a: contractPrincipalCV(...xykTokens.a) b: contractPrincipalCV(...xykTokens.b) }) tupleCV({ a: contractPrincipalCV(...xykPool) })]","import { uintCV noneCV boolCV tupleCV contractPrincipalCV } from '@stacks/transactions'","For swap-helper-a; pass token addresses as [address name] arrays"
64,javascript,bitflow,swap,bitflow-swap-helper-b-args,"Build Bitflow swap-helper-b arguments (3-hop)","const args = [uintCV(amount) uintCV(minOut) noneCV() boolCV(false) tupleCV({ a: cv(ssTokenA) b: cv(ssTokenB) }) tupleCV({ a: cv(ssPool) }) tupleCV({ a: cv(xykTokenA) b: cv(xykTokenB) c: cv(xykTokenC) d: cv(xykTokenD) }) tupleCV({ a: cv(xykPoolA) b: cv(xykPoolB) })]","import { uintCV noneCV boolCV tupleCV contractPrincipalCV as cv } from '@stacks/transactions'","3-hop: stableswap + 2 XYK pools; use for USDCx->sBTC routes"
65,javascript,alex,swap,alex-sdk-quote,"Get swap quote from Alex SDK","const alexSDK = new AlexSDK(); const tokenInfo = await alexSDK.fetchTokenInfo(tokenId); const fromAmount = BigInt(Math.floor(amount * Math.pow(10 decimals))); const amountTo = await alexSDK.getAmountTo(Currency.STX fromAmount tokenInfo.id); return { amountOut: Number(amountTo) / Math.pow(10 outputDecimals) route: tokenInfo }","import AlexSDK { Currency } from 'alex-sdk'","Currency.STX for native STX; fetchTokenInfo for other tokens"
66,javascript,velar,swap,velar-sdk-swap,"Build Velar swap via SDK","const velarSDK = new VelarSDK(); const inToken = fromToken === 'STX' ? 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.wstx' : fromContractId; const swapInstance = await velarSDK.getSwapInstance({ account: senderAddress inToken outToken: toContractId }); const swapOptions = await swapInstance.swap({ amount slippage: 1.0 })","import VelarSDK from '@velar/sdk'","Velar uses wSTX not native STX; SDK handles routing"
67,javascript,multi-dex,quote,batch-quote-strategy,"Batch quote fetching for portfolio strategies","const getStrategyQuotes = async (amount allocations) => { const quotes = Object.entries(allocations).filter(([_ pct]) => pct > 0).map(([token pct]) => ({ toToken: token amount: amount * pct / 100 })); const responses = await Promise.all(quotes.map(q => fetch('/api/quote' { method: 'POST' body: JSON.stringify({ fromToken: 'USDCx' ...q }) }))); return Promise.all(responses.map(r => r.json())) }","fetch","Fetch quotes in parallel for portfolio allocation"
68,javascript,multi-dex,slippage,calculate-min-output,"Calculate min output with slippage","const calculateMinOutput = (expectedAmount slippagePct = 1) => { const slippageFactor = 1 - (slippagePct / 100); return Math.floor(expectedAmount * slippageFactor) }","None","Default 1% slippage; use 2-3% for volatile pairs"
69,javascript,bitflow,contracts,bitflow-contract-constants,"Bitflow contract address constants","const BITFLOW = { ROUTER_V12: ['SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR' 'router-stableswap-xyk-multihop-v-1-2'] ROUTER_V15: ['SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR' 'router-stableswap-xyk-multihop-v-1-5'] SS_USDCX_AEUSDC: ['SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR' 'stableswap-pool-aeusdc-usdcx-v-1-1'] XYK_STX_AEUSDC: ['SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR' 'xyk-pool-stx-aeusdc-v-1-2'] XYK_SBTC_STX: ['SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR' 'xyk-pool-sbtc-stx-v-1-1'] }","Reference","Store as [address name] tuples for contractPrincipalCV"
70,javascript,multi-dex,tx,build-strategy-investment-tx,"Build multi-token investment transaction","const buildInvestmentTx = async (strategy amount quotes) => { const args = buildStrategyArgs(strategy amount quotes); return makeContractCall({ contractAddress: CONTRACT_ADDRESS contractName: CONTRACT_NAME functionName: `invest-${strategy}` functionArgs: args network: 'mainnet' postConditions: buildPostConditions(amount) }) }","import { makeContractCall } from '@stacks/transactions'","Strategy names: bitcoin-maxi meme-hunter defi-yield stacks-believer"
71,javascript,usdcx,conversion,micro-units-helpers,"USDCx micro-unit conversion helpers","const toMicroUnits = (amount decimals = 6) => Math.floor(amount * Math.pow(10 decimals)); const fromMicroUnits = (micro decimals = 6) => micro / Math.pow(10 decimals); const formatUsdcx = (micro) => `$${fromMicroUnits(micro).toLocaleString('en-US' { minimumFractionDigits: 2 maximumFractionDigits: 2 })}`","None","USDCx has 6 decimals; 1 USDC = 1000000 micro-units"
72,javascript,bitflow,quote,bitflow-sdk-init,"Initialize Bitflow SDK for quotes","const bitflowSDK = new BitflowSDK({ BITFLOW_API_HOST: 'https://api.bitflowapis.finance/' BITFLOW_API_KEY: process.env.BITFLOW_API_KEY || '' READONLY_CALL_API_HOST: 'https://node.bitflowapis.finance/' READONLY_CALL_API_KEY: process.env.BITFLOW_READONLY_API_KEY || '' KEEPER_API_HOST: 'https://keeper.bitflowapis.finance/' KEEPER_API_KEY: process.env.BITFLOW_API_KEY || '' })","import { BitflowSDK } from '@bitflowlabs/core-sdk'","Requires API keys from Bitflow; READONLY for quotes KEEPER for execution"
73,javascript,bitflow,quote,bitflow-get-quote,"Get swap quote from Bitflow SDK","const quote = await bitflowSDK.getQuoteForRoute('token-aeusdc' bitflowTokenId amount); let amountOutMicro; if (typeof quote === 'object' && 'quote' in quote) { amountOutMicro = Number(quote.quote) } else if (typeof quote === 'bigint') { amountOutMicro = Number(quote) } else { amountOutMicro = quote }","import { BitflowSDK } from '@bitflowlabs/core-sdk'","Amount is human-readable (e.g. 100 for $100); returns micro-units"
74,javascript,bitflow,quote,bitflow-token-ids,"Bitflow SDK token identifiers for routing","const BITFLOW_TOKEN_IDS = { STX: 'token-stx-auto' sBTC: 'token-sbtc-auto' USDH: 'token-usdh-auto' stSTX: 'token-ststx-auto' WELSH: 'token-welsh-auto' LEO: 'token-leo-auto' DOG: 'token-dog-auto' DROID: 'token-DROID-auto' VELAR: 'token-velar' }","Reference","Use 'token-aeusdc' as source (Bitflow doesn't support USDCx directly)"
75,javascript,alex,quote,alex-sdk-init,"Initialize Alex SDK for quotes","const alexSDK = new AlexSDK()","import { AlexSDK Currency TokenInfo } from 'alex-sdk'","No config needed; SDK handles API connections"
76,javascript,alex,quote,alex-get-quote,"Get swap quote from Alex SDK","const amountInMicro = BigInt(Math.floor(amount * 100_000_000)); const aUSD = await alexSDK.fetchTokenInfo('SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt::aUSD'); const amountOut = await alexSDK.getAmountTo(aUSD.id amountInMicro Currency.ALEX); const amountOutHuman = Number(amountOut) / 100_000_000","import { AlexSDK Currency TokenInfo } from 'alex-sdk'","All Alex tokens use 8 decimals; aUSD is the USDC equivalent"
77,javascript,alex,quote,alex-reverse-quote,"Get reverse quote from Alex (token -> USD)","const amountInMicro = BigInt(Math.floor(amount * 100_000_000)); const aUSD = await alexSDK.fetchTokenInfo('SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-susdt::aUSD'); const amountOut = await alexSDK.getAmountTo(Currency.ALEX amountInMicro aUSD.id); const usdValue = Number(amountOut) / 100_000_000","import { AlexSDK Currency } from 'alex-sdk'","Reverse: swap ALEX for aUSD; useful for sell quotes"
78,javascript,bitflow,quote,bitflow-reverse-quote,"Get reverse quote from Bitflow (token -> USDC)","const quote = await bitflowSDK.getQuoteForRoute(bitflowTokenId 'token-aeusdc' amount); const amountOutMicro = typeof quote === 'object' ? Number(quote.quote) : Number(quote); const usdValue = amountOutMicro / 1_000_000","import { BitflowSDK } from '@bitflowlabs/core-sdk'","Reverse route for selling; aeUSDC has 6 decimals"
79,javascript,multi-dex,quote,token-decimals-map,"Token decimal places for conversions","const TOKEN_DECIMALS = { STX: 6 sBTC: 8 USDH: 8 stSTX: 6 WELSH: 6 LEO: 6 DOG: 8 DROID: 6 ALEX: 8 VELAR: 6 USDCx: 6 }","Reference","Critical for micro-unit conversions; sBTC/DOG/ALEX use 8 decimals"
80,javascript,multi-dex,quote,normalize-token-symbol,"Normalize token symbol for lookups","function normalizeTokenSymbol(symbol) { const upper = symbol.toUpperCase(); const map = { 'SBTC': 'sBTC' 'STSTX': 'stSTX' 'USDCX': 'USDCx' }; return map[upper] || symbol }","None","Strategy uses lowercase but lookups need mixed case"
81,javascript,multi-dex,quote,unified-quote-function,"Unified quote function with fallback","async function getQuote(fromToken toToken amount) { const normalized = normalizeTokenSymbol(toToken); if (normalized === 'ALEX') { const alexQuote = await getAlexQuote(toToken amount); if (alexQuote) return alexQuote } const bitflowQuote = await getBitflowQuote(toToken amount); if (bitflowQuote) return bitflowQuote; return getFallbackQuote(toToken amount) }","None","Try Alex for ALEX token; Bitflow for others; fallback if SDK fails"
82,javascript,multi-dex,quote,fallback-quote-calculation,"Calculate fallback quote from price","async function getFallbackQuote(toToken amount) { const decimals = TOKEN_DECIMALS[toToken] || 6; const price = await getTokenPrice(toToken); const rate = price > 0 ? (1 / price) : FALLBACK_RATES[toToken]; const amountOut = Math.floor(amount * rate * Math.pow(10 decimals) * 0.97); return { amountOut source: 'fallback' } }","None","3% slippage buffer; rate = tokens per $1 = 1/price"
83,javascript,multi-dex,quote,batch-quote-endpoint,"Batch quote API endpoint","export async function PUT(request) { const { quotes } = await request.json(); const results = []; let totalUsdValue = 0; for (const { fromToken = 'USDCx' toToken amount } of quotes) { const quote = await getQuote(fromToken toToken amount); results.push(quote); totalUsdValue += quote.usdValue } return NextResponse.json({ success: true results totalUsdValue }) }","import { NextResponse } from 'next/server'","Process quotes sequentially to avoid rate limiting"
84,javascript,multi-dex,quote,price-cache-pattern,"Price caching with TTL","let pricesCache = null; const CACHE_DURATION = 60 * 1000; async function fetchRealPrices() { const now = Date.now(); if (pricesCache && now - pricesCache.timestamp < CACHE_DURATION) { return pricesCache.data } const response = await fetch('/api/token-prices'); const data = await response.json(); pricesCache = { data: prices timestamp: now }; return prices }","None","1 minute cache; prevents excessive API calls"
85,api,multi-dex,quote,quote-api-endpoints,"Quote API endpoint structure","POST /api/quote { fromToken: 'USDCx' toToken: 'STX' amount: 100 } -> { success: true quote: { amountIn amountOut amountOutFormatted usdValue price source } }; PUT /api/quote { quotes: [...] } -> { success: true results: [...] totalUsdValue }; GET /api/quote?fromToken=STX&amount=10 -> reverse quote","REST API","POST=single quote PUT=batch quotes GET=reverse quote (sell)"
86,api,bitflow,quote,bitflow-api-hosts,"Bitflow API endpoints","const BITFLOW_HOSTS = { api: 'https://api.bitflowapis.finance/' node: 'https://node.bitflowapis.finance/' keeper: 'https://keeper.bitflowapis.finance/' }","Reference","api=general node=readonly-calls keeper=execution"
87,javascript,multi-dex,quote,quote-result-interface,"Quote result TypeScript interface","interface QuoteResult { fromToken: string toToken: string amountIn: number amountOut: number amountOutFormatted: string usdValue: number price: number source: 'bitflow' | 'alex' | 'fallback' priceImpact?: number }","TypeScript","Standard quote response format across all AMMs"