import { Contract, PopulatedTransaction, providers } from "ethers";
import { Deposit, FillStatus, FillWithBlock, RelayData, SpeedUpCommon } from "../../interfaces";
import { BigNumber, EvmAddress, Address } from "../../utils";
type BlockTag = providers.BlockTag;
type ProtoFill = Omit<RelayData, "recipient" | "outputToken"> & Pick<Deposit, "speedUpSignature"> & Partial<SpeedUpCommon> & {
    destinationChainId: number;
    recipient: EvmAddress;
    outputToken: EvmAddress;
};
export declare function populateV3Relay(spokePool: Contract, relayData: ProtoFill, repaymentAddress: Address, repaymentChainId?: number): Promise<PopulatedTransaction>;
export declare function getTimeAt(spokePool: Contract, blockNumber: number): Promise<number>;
export declare function getTimestampForBlock(provider: providers.Provider, blockNumber: number): Promise<number>;
export declare function getMaxFillDeadlineInRange(spokePool: Contract, startBlock: number, endBlock: number): Promise<number>;
export declare function getDepositIdAtBlock(contract: Contract, blockTag: number): Promise<BigNumber>;
export declare function findDepositBlock(spokePool: Contract, depositId: BigNumber, lowBlock: number, highBlock?: number): Promise<number | undefined>;
export declare function relayFillStatus(spokePool: Contract, relayData: RelayData, blockTag?: BlockTag, destinationChainId?: number): Promise<FillStatus>;
export declare function fillStatusArray(spokePool: Contract, relayData: RelayData[], blockTag?: BlockTag): Promise<(FillStatus | undefined)[]>;
export declare function findFillBlock(spokePool: Contract, relayData: RelayData, lowBlockNumber: number, highBlockNumber?: number): Promise<number | undefined>;
export declare function findFillEvent(spokePool: Contract, relayData: RelayData, lowBlockNumber: number, highBlockNumber?: number): Promise<FillWithBlock | undefined>;
export {};
