import { providers } from "ethers";
import { DepositWithBlock, Fill, FillWithBlock } from "../../../interfaces";
import { Address } from "../../../utils";
import { HubPoolClient } from "../../HubPoolClient";
import { SVMProvider } from "../../../arch/svm";
/**
 * @notice FillRepaymentInformation is a fill with additional properties required to determine where it can
 * be repaid.
 */
type FillRepaymentInformation = Fill & {
    fromLiteChain: boolean;
};
/**
 * @notice Return repayment chain and repayment token for a fill, but does not verify if the returned
 * repayment information is valid for the desired repayment address.
 * @dev The passed in fill should be verified first via verifyFillRepayment().
 * @param fill The fill to get the repayment information for.
 * @return The chain to send the refund to and the token to use for the refund.
 */
export declare function getRefundInformationFromFill(relayData: FillRepaymentInformation, hubPoolClient: HubPoolClient, bundleEndBlockForMainnet: number): {
    chainToSendRefundTo: number;
    repaymentToken: Address;
};
/**
 * @notice Verifies that the fill can be repaid. If the repayment address is not
 * valid for the requested repayment chain, then this function will attempt to change the fill's repayment chain
 * to the destination chain and its repayment address to the  msg.sender and if this is possible,
 * return the fill. Otherwise, return undefined.
 * @param _fill Fill with a requested repayment chain and address
 * @return Fill with the applied repayment chain (depends on the validity of the requested repayment address)
 * and applied repayment address, or undefined if the applied repayment address is not valid for the
 * applied repayment chain.
 */
export declare function verifyFillRepayment(_fill: FillWithBlock, destinationChainProvider: providers.Provider | SVMProvider, matchedDeposit: DepositWithBlock, hubPoolClient: HubPoolClient, bundleEndBlockForMainnet: number): Promise<FillWithBlock | undefined>;
export {};
