FeeProvider fetches dynamic fee values from on-chain sources via REST

const provider = new FeeProvider({ network: 'mainnet' });

// Get bridging fee rate from delayedack params (for IBC/rollapp transfers)
const rate = await provider.getDelayedAckBridgingFee();

// Get bridging fee rate for a specific token (Hyperlane transfers)
const rate = await provider.getBridgingFeeRate(tokenId, 'outbound');

// Quote exact bridging fee for a transfer amount
const fees = await provider.quoteBridgingFee(hookId, tokenId, amount);

// Get IGP quote for a transfer
const igpFee = await provider.quoteIgpPayment({
destinationDomain: DOMAINS.ETHEREUM,
gasLimit: 150000,
});

Constructors

Methods

  • Fetch all fee hooks from Hub (x/bridgingfee)

    Returns Promise<HLFeeHook[]>

  • Fetch delayedack module params

    Returns Promise<DelayedAckParams>

  • Fetch a specific fee hook by ID (x/bridgingfee)

    Returns null if the hook is not found (404). Throws on network errors.

    Parameters

    • hookId: string

    Returns Promise<null | HLFeeHook>

  • Get bridging fee rate for a token from fee hooks (x/bridgingfee)

    This is for Hyperlane bridging transfers, not IBC.

    Parameters

    • tokenId: string

      Hyperlane token ID (hex address)

    • direction: "inbound" | "outbound"

      'inbound' (to Hub) or 'outbound' (from Hub)

    Returns Promise<number>

    Fee rate as decimal (e.g., 0.001 for 0.1%), or 0 if no fee is configured

  • Get the bridging fee rate from delayedack module params

    This is the IBC bridging fee for rollapp withdrawals (e.g., 0.0015 = 0.15%). EIBC fees must be greater than this to incentivize market makers.

    Returns Promise<number>

    Fee rate as decimal (e.g., 0.0015 for 0.15%)

    Error if params cannot be fetched

  • Quote bridging fee for a specific transfer amount

    Uses the x/bridgingfee QuoteFeePayment endpoint to calculate exact fees.

    Parameters

    • hookId: string

      Fee hook ID (hex address)

    • tokenId: string

      Hyperlane token ID

    • amount: bigint

      Transfer amount

    Returns Promise<{ amount: string; denom: string }[]>

    Array of fee coins

    Error if quote cannot be fetched

  • Get IGP quote for EVM chain via JSON-RPC

    Parameters

    • params: {
          destinationDomain: number;
          gasLimit: number;
          igpAddress: string;
          rpcUrl: string;
      }

      Quote parameters

    Returns Promise<bigint>

    IGP fee in wei

    Error if quote cannot be fetched

  • Get IGP quote for a Hyperlane transfer from Hub

    Each token has its own IGP hook that accepts payment in that token's denom. The quote returns the fee amount in the token's denomination.

    Parameters

    • params: {
          destinationDomain: number;
          gasLimit: number;
          token: "KAS" | "ETH" | "DYM" | "SOL";
      }

      Quote parameters

      • destinationDomain: number

        Target chain domain ID

      • gasLimit: number

        Gas limit for destination execution

      • token: "KAS" | "ETH" | "DYM" | "SOL"

        Token symbol (DYM, KAS, ETH) to determine which IGP to query

    Returns Promise<bigint>

    IGP fee in the token's smallest unit

    Error if quote cannot be fetched