/** Provides the static, procedural versions of the functions provided in the UBAFeeSpokeCalculator */
import { BigNumber } from "ethers";
import { UbaFlow } from "../interfaces";
import { TokenRunningBalanceWithNetSend, UBAActionType, UBAFlowFee } from "./UBAFeeTypes";
import UBAConfig from "./UBAFeeConfig";
/**
 * Calculates the running balances for a given token on a spoke chain produced by the set of flows and beginning with
 * the validated running balances.
 * @param flows The flows to calculate the running balance for.
 * @param lastValidatedRunningBalance The last validated running balance for the token and chain ID validated in
 * a root bundle in the HubPool.
 * @param lastValidatedIncentiveRunningBalance The last validated incentive running balance for the token and chain ID
 * validated in a root bundle in the HubPool.
 * @param chainId The chain id of the spoke chain
 * @param tokenSymbol The token symbol of the token to calculate the running balance for
 * @param config The UBAConfig to use for the calculation. This must apply to all `flows`.
 * @returns The running balance for the token
 */
export declare function calculateHistoricalRunningBalance(flows: (UbaFlow & {
    incentiveFee: BigNumber;
})[], lastValidatedRunningBalance: BigNumber, lastValidatedIncentiveRunningBalance: BigNumber, lastNetRunningBalanceAdjustment: BigNumber, chainId: number, tokenSymbol: string, config: UBAConfig): TokenRunningBalanceWithNetSend;
/**
 * Returns the balancing fee for a given event that produces a flow of `flowType` of size `amount`.
 * Can return a negative fee if the fee is a reward.
 * @param amount Amount of inflow or outflow produced by event that we're computing a balancing fee for.
 * @param flowType Inflow or Outflow.
 * @param lastRunningBalance The latest running balance preceding this event.
 * @param lastIncentiveBalance The latest incentive balance preceding this event.
 * @param chainId The chain id of the spoke chain
 * @param config The UBAConfig to use for the calculation
 * @returns The incentive fee to charge, NOT a percentage.
 */
export declare function getEventFee(amount: BigNumber, flowType: "inflow" | "outflow", lastRunningBalance: BigNumber, lastIncentiveBalance: BigNumber, chainId: number, config: UBAConfig): UBAFlowFee;
/**
 * Calculates the fee for a deposit on a spoke chain
 * @param amount The amount of the deposit
 * @param lastValidatedRunningBalance The last validated running balance of the spoke
 * @param lastValidatedIncentiveRunningBalance The last validated incentive running balance of the spoke
 * @param chainId The chain id of the spoke chain
 * @param config The UBAConfig to use for the calculation
 * @returns The fee for the deposit
 * @see getEventFee
 */
export declare function getDepositFee(amount: BigNumber, lastValidatedRunningBalance: BigNumber, lastValidatedIncentiveRunningBalance: BigNumber, chainId: number, config: UBAConfig): UBAFlowFee;
/**
 * Calculates the fee for a refund on a spoke chain
 * @param amount The amount of the refund
 * @param lastValidatedRunningBalance The last validated running balance of the spoke
 * @param lastValidatedIncentiveRunningBalance The last validated incentive running balance of the spoke
 * @param chainId The chain id of the spoke chain
 * @param config The UBAConfig to use for the calculation
 * @returns The fee for the refund
 * @see getEventFee
 */
export declare function getRefundFee(amount: BigNumber, lastValidatedRunningBalance: BigNumber, lastValidatedIncentiveRunningBalance: BigNumber, chainId: number, config: UBAConfig): UBAFlowFee;
/**
 * A convenience lookup table for the fee calculation functions
 * @see getDepositFee
 * @see getRefundFee
 * @see getEventFee
 */
export declare const feeCalculationFunctionsForUBA: Record<UBAActionType, typeof getDepositFee | typeof getRefundFee>;
