import { BN, Program } from "@coral-xyz/anchor";
import { PublicKey } from "@solana/web3.js";
import { BigNumber } from "ethers";
import { SvmSpoke } from "../../target/types/svm_spoke";
import { readEvents, readProgramEvents, calculateRelayHashUint8Array, findProgramAddress } from "../../src/SvmUtils";
import { MerkleTree } from "@uma/common";
export { readEvents, readProgramEvents, calculateRelayHashUint8Array, findProgramAddress };
export declare function printLogs(connection: any, program: any, tx: any): Promise<void>;
export declare function randomAddress(): string;
export declare function randomBigInt(bytes?: number, signed?: boolean): bigint;
export interface RelayerRefundLeaf {
    isSolana: boolean;
    amountToReturn: BigNumber;
    chainId: BigNumber;
    refundAmounts: BigNumber[];
    leafId: BigNumber;
    l2TokenAddress: string;
    refundAddresses: string[];
}
export interface RelayerRefundLeafSolana {
    isSolana: boolean;
    amountToReturn: BN;
    chainId: BN;
    refundAmounts: BN[];
    leafId: BN;
    mintPublicKey: PublicKey;
    refundAddresses: PublicKey[];
}
export type RelayerRefundLeafType = RelayerRefundLeaf | RelayerRefundLeafSolana;
export declare function convertLeafIdToNumber(leaf: RelayerRefundLeafSolana): {
    leafId: number;
    isSolana: boolean;
    amountToReturn: BN;
    chainId: BN;
    refundAmounts: BN[];
    mintPublicKey: PublicKey;
    refundAddresses: PublicKey[];
};
export declare function buildRelayerRefundMerkleTree({ totalEvmDistributions, totalSolanaDistributions, mixLeaves, chainId, mint, svmRelayers, evmRelayers, evmTokenAddress, evmRefundAmounts, svmRefundAmounts, }: {
    totalEvmDistributions: number;
    totalSolanaDistributions: number;
    chainId: number;
    mixLeaves?: boolean;
    mint?: PublicKey;
    svmRelayers?: PublicKey[];
    evmRelayers?: string[];
    evmTokenAddress?: string;
    evmRefundAmounts?: BigNumber[];
    svmRefundAmounts?: BN[];
}): {
    relayerRefundLeaves: RelayerRefundLeafType[];
    merkleTree: MerkleTree<RelayerRefundLeafType>;
};
export declare function calculateRelayerRefundLeafHashUint8Array(relayData: RelayerRefundLeafSolana): string;
export declare const relayerRefundHashFn: (input: RelayerRefundLeaf | RelayerRefundLeafSolana) => string;
export interface SlowFillLeaf {
    relayData: {
        depositor: PublicKey;
        recipient: PublicKey;
        exclusiveRelayer: PublicKey;
        inputToken: PublicKey;
        outputToken: PublicKey;
        inputAmount: BN;
        outputAmount: BN;
        originChainId: BN;
        depositId: BN;
        fillDeadline: BN;
        exclusivityDeadline: BN;
        message: Buffer;
    };
    chainId: BN;
    updatedOutputAmount: BN;
}
export declare function slowFillHashFn(slowFillLeaf: SlowFillLeaf): string;
export declare function loadExecuteRelayerRefundLeafParams(program: Program<SvmSpoke>, caller: PublicKey, rootBundleId: number, relayerRefundLeaf: RelayerRefundLeafSolana, proof: number[][]): Promise<PublicKey>;
