import { BigNumber, ethers } from "ethers";
import { Log } from "@ethersproject/abstract-provider";
export type CCTPMessageStatus = "finalized" | "ready" | "pending";
export declare const CCTPV2_FINALITY_THRESHOLD_STANDARD = 2000;
export declare const CCTPV2_FINALITY_THRESHOLD_FAST = 1000;
type CommonMessageData = {
    cctpVersion: number;
    sourceDomain: number;
    destinationDomain: number;
    sender: string;
    recipient: string;
    messageHash: string;
    messageBytes: string;
    nonce: number;
    nonceHash: string;
};
type DepositForBurnMessageData = CommonMessageData & {
    amount: string;
    mintRecipient: string;
    burnToken: string;
};
type CommonMessageEvent = CommonMessageData & {
    log: Log;
};
type DepositForBurnMessageEvent = DepositForBurnMessageData & {
    log: Log;
};
type CCTPMessageEvent = CommonMessageEvent | DepositForBurnMessageEvent;
type CCTPV2APIAttestation = {
    status: string;
    attestation: string;
    message: string;
    eventNonce: string;
    cctpVersion: number;
    decodedMessage: {
        recipient: string;
        destinationDomain: number;
        decodedMessageBody: {
            amount: string;
            mintRecipient: string;
            messageSender: string;
        };
    };
};
type CCTPV2APIGetAttestationResponse = {
    messages: CCTPV2APIAttestation[];
};
export type AttestedCCTPMessage = CCTPMessageEvent & {
    status: CCTPMessageStatus;
    attestation?: string;
};
export type AttestedCCTPDeposit = DepositForBurnMessageEvent & {
    status: CCTPMessageStatus;
    attestation?: string;
};
export declare function cctpAddressToBytes32(address: string): string;
export declare function cctpBytes32ToAddress(bytes32: string): string;
export declare function getCctpDomainForChainId(chainId: number): number;
export declare function getCctpDestinationChainFromDomain(domain: number, productionNetworks: boolean): number;
export declare function isDepositForBurnEvent(event: CCTPMessageEvent): event is DepositForBurnMessageEvent;
export declare function fetchCctpV2Attestations(depositForBurnTxnHashes: string[], sourceChainId: number): Promise<{
    [sourceTxnHash: string]: CCTPV2APIGetAttestationResponse;
}>;
export declare function getPendingAttestationStatus(attestation: Pick<CCTPV2APIAttestation, "attestation" | "status">): CCTPMessageStatus;
export declare function hasCCTPMessageBeenProcessedEvm(nonceHash: string, contract: ethers.Contract): Promise<boolean>;
export declare function getV2FastBurnAllowance(isMainnet: boolean): Promise<string>;
export declare function getV2MinTransferFees(sourceChainId: number, destinationChainId: number): Promise<{
    standard: BigNumber;
    fast: BigNumber;
}>;
export declare function fetchAttestationsForTxn(sourceDomainId: number, transactionHash: string, isMainnet: boolean): Promise<CCTPV2APIGetAttestationResponse>;
export declare function getMessageSentVersion(log: ethers.providers.Log): number;
export declare function getDepositForBurnVersion(log: ethers.providers.Log): number;
export {};
