Skip to main content

Supported Chains

  • Starknet
  • Base
  • Scroll
  • HyperEVM
  • Monad
/**
* List of supported chains and their router addresses.
*/
supportedChains: CHAIN_MAP[];

Supported Tokens

Returns the list of Tokens supported by Fibrous
/**
* Returns the supported token list for a given chain.
* @param chainId Chain ID.
* @returns Map of lowercased symbol -> Token.
*/
supportedTokens(chainId: number): Promise<Map<string, Token>>;

Supported Protocols

Returns the list of Protocols supported by Fibrous
/**
* Returns supported protocols.
* @param chainId Chain ID.
* @returns Mapping of AMM name -> protocol identifier.
*/
supportedProtocols(chainId: number): Promise<Record<string, ProtocolId>>;

Best Route

Returns the best route via Fibrous
/**
* Fetches the best route from the API.
* @param params Route parameters object.
* @returns Route response.
* @throws Error if the chain is not supported.
*/
getBestRoute(
    params: getBestRouteParams,
): Promise<RouteResponse>;

getBestRouteParams Type

type getBestRouteParams = {
  amount: AmountType;
  tokenInAddress: string;
  tokenOutAddress: string;
  chainId: number;
  options?: Partial<RouteOverrides>;
  integrationData?: IntegrationData;
};

IntegrationData Type

type IntegrationData = {
  integratorAddress: string;
  integratorFeePercentageBps?: number; // 0-500, maximum 5%
  integratorSurplusPercentageBps?: number; // 0-5000, maximum 50%
};

RouteOverrides Type

type RouteOverrides = {
  reverse: boolean;
  direct: boolean;
  excludeProtocols: number[]; // Array of protocol IDs
};

Build Transaction

Returns calldata with best route to transaction via Fibrous
/**
* Legacy method that builds a route and calldata to prepare a transaction.
* Note: This will be deprecated; prefer `buildRouteAndCalldata`.
* @param params Transaction parameters object.
* @returns Starknet `Call` or EVM calldata/transaction structure.
*/
buildTransaction(
    params: buildTransactionParams,
): Promise<Call | unknown>;

buildTransactionParams Type

type buildTransactionParams = {
  inputAmount: AmountType;
  tokenInAddress: string;
  tokenOutAddress: string;
  slippage: number;
  destination: string;
  chainId: number;
  options?: Partial<RouteOverrides>;
  integrationData?: IntegrationData;
};

Build Route and Calldata

/**
* Returns the best route and executable calldata in a single call.
* @param params Route and calldata parameters object.
* @returns Route and calldata structure (includes Starknet swap call when applicable).
*/
buildRouteAndCalldata(
    params: buildRouteAndCalldataParams,
): Promise<RouteAndCalldataResponse>;

buildRouteAndCalldataParams Type

type buildRouteAndCalldataParams = {
  inputAmount: AmountType;
  tokenInAddress: string;
  tokenOutAddress: string;
  slippage: number;
  destination: string;
  chainId: number;
  options?: Partial<RouteOverrides>;
  integrationData?: IntegrationData;
};

Build Approve Starknet

/**
* Builds Starknet approve call parameters.
* @param amount Amount to approve (will be converted to hex).
* @param tokenAddress ERC-20 token address.
*/
buildApproveStarknet(amount: AmountType, tokenAddress: string): Promise<Call>;

Build Approve EVM

/**
* Performs EVM approve if needed and returns the result.
* @param amount Amount to approve.
* @param tokenAddress ERC-20 token address.
* @param account Wallet/signer used for the transaction.
* @param chainId Chain ID.
* @returns `true` if allowance is sufficient or approve succeeded.
*/
buildApproveEVM(
    amount: AmountType,
    tokenAddress: string,
    account: Wallet,
    chainId?: number,
): Promise<boolean>;

Best Route Batch

/**
* Fetches best routes in batch for multiple inputs (Starknet and Base for now).
* @param amounts List of input amounts.
* @param tokenInAddresses Input token addresses.
* @param tokenOutAddresses Output token addresses.
* @param chainId Chain ID.
* @param options Optional route parameters.
* @returns List of route responses.
*/
getBestRouteBatch(
    amounts: bigint[] | string[] | number[] | BigNumberish[],
    tokenInAddresses: string[],
    tokenOutAddresses: string[],
    chainId: number,
    options?: Partial<RouteOverrides>,
): Promise<RouteResponse[]>;

Build Batch Transaction

/**
* Builds calldata/call list for batch transactions (Starknet for now).
* @param inputAmounts Input amounts.
* @param tokenInAddresses Input token addresses.
* @param tokenOutAddresses Output token addresses.
* @param slippage Slippage percentage.
* @param destination Receiver address.
* @param chainId Chain ID.
* @param options Optional parameters.
* @returns Array of Starknet `Call`s or chain-specific payload.
*/
buildBatchTransaction(
    inputAmounts: AmountType[],
    tokenInAddresses: string[],
    tokenOutAddresses: string[],
    slippage: number,
    destination: string,
    chainId: number,
    options?: Partial<RouteOverrides>,
): Promise<Call[] | unknown>;