/**
 * Local Merkle tree utilities that use our local getContractFactory.
 * These are reimplementations of the utilities from @across-protocol/contracts
 * to avoid dependency on their getContractFactory which looks for Hardhat artifacts.
 */
import { BigNumber, Contract, ethers } from "ethers";
import { MerkleTree } from "@across-protocol/contracts/dist/utils/MerkleTree";
/**
 * Get the parameter type for a contract function parameter.
 * Uses our local getContractFactory to load the contract ABI.
 */
export declare function getParamType(contractName: string, functionName: string, paramName: string): Promise<ethers.utils.ParamType | string>;
/**
 * Build a relayer refund Merkle tree.
 */
export declare function buildRelayerRefundTree(relayerRefundLeaves: {
    leafId: BigNumber;
    chainId: BigNumber;
    amountToReturn: BigNumber;
    l2TokenAddress: string;
    refundAddresses: string[];
    refundAmounts: BigNumber[];
}[]): Promise<MerkleTree<unknown>>;
/**
 * Build relayer refund leaves.
 */
export declare function buildRelayerRefundLeaves(destinationChainIds: number[], amountsToReturn: BigNumber[], l2Tokens: string[], refundAddresses: string[][], refundAmounts: BigNumber[][]): {
    leafId: BigNumber;
    chainId: BigNumber;
    amountToReturn: BigNumber;
    l2TokenAddress: string;
    refundAddresses: string[];
    refundAmounts: BigNumber[];
}[];
/**
 * Build a pool rebalance Merkle tree.
 */
export declare function buildPoolRebalanceLeafTree(poolRebalanceLeaves: {
    leafId: BigNumber;
    chainId: BigNumber;
    groupIndex: BigNumber;
    bundleLpFees: BigNumber[];
    netSendAmounts: BigNumber[];
    runningBalances: BigNumber[];
    l1Tokens: string[];
}[]): Promise<MerkleTree<unknown>>;
/**
 * Build pool rebalance leaves.
 */
export declare function buildPoolRebalanceLeaves(destinationChainIds: number[], l1Tokens: string[][], bundleLpFees: BigNumber[][], netSendAmounts: BigNumber[][], runningBalances: BigNumber[][], groupIndex: number[]): {
    leafId: BigNumber;
    chainId: BigNumber;
    groupIndex: BigNumber;
    bundleLpFees: BigNumber[];
    netSendAmounts: BigNumber[];
    runningBalances: BigNumber[];
    l1Tokens: string[];
}[];
/**
 * Build a slow relay Merkle tree.
 */
export declare function buildSlowRelayTree(slowFills: unknown[]): Promise<MerkleTree<unknown>>;
/**
 * Build a V3 slow relay Merkle tree.
 */
export declare function buildV3SlowRelayTree(slowFills: unknown[]): Promise<MerkleTree<unknown>>;
/**
 * Construct a single-leaf relayer refund tree.
 */
export declare function constructSingleRelayerRefundTree(l2Token: Contract | string, destinationChainId: number, amount?: BigNumber): Promise<{
    leaves: {
        leafId: BigNumber;
        chainId: BigNumber;
        amountToReturn: BigNumber;
        l2TokenAddress: string;
        refundAddresses: string[];
        refundAmounts: BigNumber[];
    }[];
    tree: MerkleTree<unknown>;
}>;
/**
 * Construct a single-chain pool rebalance tree.
 */
export declare function constructSingleChainTree(token: string, scalingSize?: number, repaymentChain?: number, decimals?: number): Promise<{
    tokensSendToL2: BigNumber;
    realizedLpFees: BigNumber;
    leaves: {
        leafId: BigNumber;
        chainId: BigNumber;
        groupIndex: BigNumber;
        bundleLpFees: BigNumber[];
        netSendAmounts: BigNumber[];
        runningBalances: BigNumber[];
        l1Tokens: string[];
    }[];
    tree: MerkleTree<unknown>;
}>;
