import * as anchor from "@coral-xyz/anchor";
import { Infer } from "superstruct";
export declare const EVENT_ACCOUNT_WINDOW_SECONDS: number;
/**
 * Type for the body of a TokenMessengerV2 message.
 */
export type TokenMessengerV2MessageBody = {
    version: number;
    burnToken: anchor.web3.PublicKey;
    mintRecipient: anchor.web3.PublicKey;
    amount: BigInt;
    messageSender: anchor.web3.PublicKey;
    maxFee: BigInt;
    feeExecuted: BigInt;
    expirationBlock: BigInt;
    hookData: Buffer;
};
/**
 * Type for the header of a CCTPv2 message.
 */
export type MessageHeaderV2 = {
    version: number;
    sourceDomain: number;
    destinationDomain: number;
    nonce: BigInt;
    sender: anchor.web3.PublicKey;
    recipient: anchor.web3.PublicKey;
    destinationCaller: anchor.web3.PublicKey;
    minFinalityThreshold: number;
    finalityThresholdExecuted: number;
    messageBody: Buffer;
};
/**
 * Decodes a CCTPv2 message into a MessageHeaderV2 and TokenMessengerV2MessageBody.
 */
export declare const decodeMessageSentDataV2: (message: Buffer) => {
    messageBody: TokenMessengerV2MessageBody;
    version: number;
    sourceDomain: number;
    destinationDomain: number;
    nonce: BigInt;
    sender: anchor.web3.PublicKey;
    recipient: anchor.web3.PublicKey;
    destinationCaller: anchor.web3.PublicKey;
    minFinalityThreshold: number;
    finalityThresholdExecuted: number;
};
/**
 * Decodes a CCTPv2 message header.
 */
export declare const decodeMessageHeaderV2: (data: Buffer) => MessageHeaderV2;
/**
 * Decodes a TokenMessenger message body.
 */
export declare const decodeTokenMessengerV2MessageBody: (data: Buffer) => TokenMessengerV2MessageBody;
export declare const DecodedMessageBody: import("superstruct").Struct<{
    amount: string;
    burnToken: string;
    mintRecipient: string;
    messageSender: string;
    feeExecuted?: string | undefined;
    expirationBlock?: string | undefined;
    maxFee?: string | undefined;
    hookData?: string | undefined;
}, {
    burnToken: import("superstruct").Struct<string, null>;
    mintRecipient: import("superstruct").Struct<string, null>;
    amount: import("superstruct").Struct<string, null>;
    messageSender: import("superstruct").Struct<string, null>;
    maxFee: import("superstruct").Struct<string | undefined, null>;
    feeExecuted: import("superstruct").Struct<string | undefined, null>;
    expirationBlock: import("superstruct").Struct<string | undefined, null>;
    hookData: import("superstruct").Struct<string | undefined, null>;
}>;
export declare const DecodedMessage: import("superstruct").Struct<{
    nonce: string;
    recipient: string;
    sender: string;
    messageBody: string;
    sourceDomain: string;
    destinationDomain: string;
    destinationCaller: string;
    finalityThresholdExecuted?: "1000" | "2000" | undefined;
    minFinalityThreshold?: "1000" | "2000" | undefined;
    decodedMessageBody?: {
        amount: string;
        burnToken: string;
        mintRecipient: string;
        messageSender: string;
        feeExecuted?: string | undefined;
        expirationBlock?: string | undefined;
        maxFee?: string | undefined;
        hookData?: string | undefined;
    } | null | undefined;
}, {
    sourceDomain: import("superstruct").Struct<string, null>;
    destinationDomain: import("superstruct").Struct<string, null>;
    nonce: import("superstruct").Struct<string, null>;
    sender: import("superstruct").Struct<string, null>;
    recipient: import("superstruct").Struct<string, null>;
    destinationCaller: import("superstruct").Struct<string, null>;
    minFinalityThreshold: import("superstruct").Struct<"1000" | "2000" | undefined, {
        1000: "1000";
        2000: "2000";
    }>;
    finalityThresholdExecuted: import("superstruct").Struct<"1000" | "2000" | undefined, {
        1000: "1000";
        2000: "2000";
    }>;
    messageBody: import("superstruct").Struct<string, null>;
    decodedMessageBody: import("superstruct").Struct<{
        amount: string;
        burnToken: string;
        mintRecipient: string;
        messageSender: string;
        feeExecuted?: string | undefined;
        expirationBlock?: string | undefined;
        maxFee?: string | undefined;
        hookData?: string | undefined;
    } | null | undefined, {
        burnToken: import("superstruct").Struct<string, null>;
        mintRecipient: import("superstruct").Struct<string, null>;
        amount: import("superstruct").Struct<string, null>;
        messageSender: import("superstruct").Struct<string, null>;
        maxFee: import("superstruct").Struct<string | undefined, null>;
        feeExecuted: import("superstruct").Struct<string | undefined, null>;
        expirationBlock: import("superstruct").Struct<string | undefined, null>;
        hookData: import("superstruct").Struct<string | undefined, null>;
    }>;
}>;
export declare const AttestationMessage: import("superstruct").Struct<{
    message: string;
    status: "complete" | "pending_confirmations";
    attestation: string;
    eventNonce: string;
    cctpVersion: 1 | 2;
    decodedMessage?: {
        nonce: string;
        recipient: string;
        sender: string;
        messageBody: string;
        sourceDomain: string;
        destinationDomain: string;
        destinationCaller: string;
        finalityThresholdExecuted?: "1000" | "2000" | undefined;
        minFinalityThreshold?: "1000" | "2000" | undefined;
        decodedMessageBody?: {
            amount: string;
            burnToken: string;
            mintRecipient: string;
            messageSender: string;
            feeExecuted?: string | undefined;
            expirationBlock?: string | undefined;
            maxFee?: string | undefined;
            hookData?: string | undefined;
        } | null | undefined;
    } | null | undefined;
    delayReason?: "insufficient_fee" | "amount_above_max" | "insufficient_allowance_available" | null | undefined;
}, {
    message: import("superstruct").Struct<string, null>;
    eventNonce: import("superstruct").Struct<string, null>;
    attestation: import("superstruct").Struct<string, null>;
    decodedMessage: import("superstruct").Struct<{
        nonce: string;
        recipient: string;
        sender: string;
        messageBody: string;
        sourceDomain: string;
        destinationDomain: string;
        destinationCaller: string;
        finalityThresholdExecuted?: "1000" | "2000" | undefined;
        minFinalityThreshold?: "1000" | "2000" | undefined;
        decodedMessageBody?: {
            amount: string;
            burnToken: string;
            mintRecipient: string;
            messageSender: string;
            feeExecuted?: string | undefined;
            expirationBlock?: string | undefined;
            maxFee?: string | undefined;
            hookData?: string | undefined;
        } | null | undefined;
    } | null | undefined, {
        sourceDomain: import("superstruct").Struct<string, null>;
        destinationDomain: import("superstruct").Struct<string, null>;
        nonce: import("superstruct").Struct<string, null>;
        sender: import("superstruct").Struct<string, null>;
        recipient: import("superstruct").Struct<string, null>;
        destinationCaller: import("superstruct").Struct<string, null>;
        minFinalityThreshold: import("superstruct").Struct<"1000" | "2000" | undefined, {
            1000: "1000";
            2000: "2000";
        }>;
        finalityThresholdExecuted: import("superstruct").Struct<"1000" | "2000" | undefined, {
            1000: "1000";
            2000: "2000";
        }>;
        messageBody: import("superstruct").Struct<string, null>;
        decodedMessageBody: import("superstruct").Struct<{
            amount: string;
            burnToken: string;
            mintRecipient: string;
            messageSender: string;
            feeExecuted?: string | undefined;
            expirationBlock?: string | undefined;
            maxFee?: string | undefined;
            hookData?: string | undefined;
        } | null | undefined, {
            burnToken: import("superstruct").Struct<string, null>;
            mintRecipient: import("superstruct").Struct<string, null>;
            amount: import("superstruct").Struct<string, null>;
            messageSender: import("superstruct").Struct<string, null>;
            maxFee: import("superstruct").Struct<string | undefined, null>;
            feeExecuted: import("superstruct").Struct<string | undefined, null>;
            expirationBlock: import("superstruct").Struct<string | undefined, null>;
            hookData: import("superstruct").Struct<string | undefined, null>;
        }>;
    }>;
    cctpVersion: import("superstruct").Struct<1 | 2, {
        1: 1;
        2: 2;
    }>;
    status: import("superstruct").Struct<"complete" | "pending_confirmations", {
        complete: "complete";
        pending_confirmations: "pending_confirmations";
    }>;
    delayReason: import("superstruct").Struct<"insufficient_fee" | "amount_above_max" | "insufficient_allowance_available" | null | undefined, {
        insufficient_fee: "insufficient_fee";
        amount_above_max: "amount_above_max";
        insufficient_allowance_available: "insufficient_allowance_available";
    }>;
}>;
export declare const AttestationResponse: import("superstruct").Struct<{
    messages: {
        message: string;
        status: "complete" | "pending_confirmations";
        attestation: string;
        eventNonce: string;
        cctpVersion: 1 | 2;
        decodedMessage?: {
            nonce: string;
            recipient: string;
            sender: string;
            messageBody: string;
            sourceDomain: string;
            destinationDomain: string;
            destinationCaller: string;
            finalityThresholdExecuted?: "1000" | "2000" | undefined;
            minFinalityThreshold?: "1000" | "2000" | undefined;
            decodedMessageBody?: {
                amount: string;
                burnToken: string;
                mintRecipient: string;
                messageSender: string;
                feeExecuted?: string | undefined;
                expirationBlock?: string | undefined;
                maxFee?: string | undefined;
                hookData?: string | undefined;
            } | null | undefined;
        } | null | undefined;
        delayReason?: "insufficient_fee" | "amount_above_max" | "insufficient_allowance_available" | null | undefined;
    }[];
}, {
    messages: import("superstruct").Struct<{
        message: string;
        status: "complete" | "pending_confirmations";
        attestation: string;
        eventNonce: string;
        cctpVersion: 1 | 2;
        decodedMessage?: {
            nonce: string;
            recipient: string;
            sender: string;
            messageBody: string;
            sourceDomain: string;
            destinationDomain: string;
            destinationCaller: string;
            finalityThresholdExecuted?: "1000" | "2000" | undefined;
            minFinalityThreshold?: "1000" | "2000" | undefined;
            decodedMessageBody?: {
                amount: string;
                burnToken: string;
                mintRecipient: string;
                messageSender: string;
                feeExecuted?: string | undefined;
                expirationBlock?: string | undefined;
                maxFee?: string | undefined;
                hookData?: string | undefined;
            } | null | undefined;
        } | null | undefined;
        delayReason?: "insufficient_fee" | "amount_above_max" | "insufficient_allowance_available" | null | undefined;
    }[], import("superstruct").Struct<{
        message: string;
        status: "complete" | "pending_confirmations";
        attestation: string;
        eventNonce: string;
        cctpVersion: 1 | 2;
        decodedMessage?: {
            nonce: string;
            recipient: string;
            sender: string;
            messageBody: string;
            sourceDomain: string;
            destinationDomain: string;
            destinationCaller: string;
            finalityThresholdExecuted?: "1000" | "2000" | undefined;
            minFinalityThreshold?: "1000" | "2000" | undefined;
            decodedMessageBody?: {
                amount: string;
                burnToken: string;
                mintRecipient: string;
                messageSender: string;
                feeExecuted?: string | undefined;
                expirationBlock?: string | undefined;
                maxFee?: string | undefined;
                hookData?: string | undefined;
            } | null | undefined;
        } | null | undefined;
        delayReason?: "insufficient_fee" | "amount_above_max" | "insufficient_allowance_available" | null | undefined;
    }, {
        message: import("superstruct").Struct<string, null>;
        eventNonce: import("superstruct").Struct<string, null>;
        attestation: import("superstruct").Struct<string, null>;
        decodedMessage: import("superstruct").Struct<{
            nonce: string;
            recipient: string;
            sender: string;
            messageBody: string;
            sourceDomain: string;
            destinationDomain: string;
            destinationCaller: string;
            finalityThresholdExecuted?: "1000" | "2000" | undefined;
            minFinalityThreshold?: "1000" | "2000" | undefined;
            decodedMessageBody?: {
                amount: string;
                burnToken: string;
                mintRecipient: string;
                messageSender: string;
                feeExecuted?: string | undefined;
                expirationBlock?: string | undefined;
                maxFee?: string | undefined;
                hookData?: string | undefined;
            } | null | undefined;
        } | null | undefined, {
            sourceDomain: import("superstruct").Struct<string, null>;
            destinationDomain: import("superstruct").Struct<string, null>;
            nonce: import("superstruct").Struct<string, null>;
            sender: import("superstruct").Struct<string, null>;
            recipient: import("superstruct").Struct<string, null>;
            destinationCaller: import("superstruct").Struct<string, null>;
            minFinalityThreshold: import("superstruct").Struct<"1000" | "2000" | undefined, {
                1000: "1000";
                2000: "2000";
            }>;
            finalityThresholdExecuted: import("superstruct").Struct<"1000" | "2000" | undefined, {
                1000: "1000";
                2000: "2000";
            }>;
            messageBody: import("superstruct").Struct<string, null>;
            decodedMessageBody: import("superstruct").Struct<{
                amount: string;
                burnToken: string;
                mintRecipient: string;
                messageSender: string;
                feeExecuted?: string | undefined;
                expirationBlock?: string | undefined;
                maxFee?: string | undefined;
                hookData?: string | undefined;
            } | null | undefined, {
                burnToken: import("superstruct").Struct<string, null>;
                mintRecipient: import("superstruct").Struct<string, null>;
                amount: import("superstruct").Struct<string, null>;
                messageSender: import("superstruct").Struct<string, null>;
                maxFee: import("superstruct").Struct<string | undefined, null>;
                feeExecuted: import("superstruct").Struct<string | undefined, null>;
                expirationBlock: import("superstruct").Struct<string | undefined, null>;
                hookData: import("superstruct").Struct<string | undefined, null>;
            }>;
        }>;
        cctpVersion: import("superstruct").Struct<1 | 2, {
            1: 1;
            2: 2;
        }>;
        status: import("superstruct").Struct<"complete" | "pending_confirmations", {
            complete: "complete";
            pending_confirmations: "pending_confirmations";
        }>;
        delayReason: import("superstruct").Struct<"insufficient_fee" | "amount_above_max" | "insufficient_allowance_available" | null | undefined, {
            insufficient_fee: "insufficient_fee";
            amount_above_max: "amount_above_max";
            insufficient_allowance_available: "insufficient_allowance_available";
        }>;
    }>>;
}>;
export type TAttestationResponse = Infer<typeof AttestationResponse>;
export type TAttestationMessage = Infer<typeof AttestationMessage>;
export type TDecodedMessage = Infer<typeof DecodedMessage>;
export type TDecodedMessageBody = Infer<typeof DecodedMessageBody>;
/**
 * Fetches attestation from attestation service given the txHash and source message for CCTP V2 token burn.
 */
export declare function getV2BurnAttestation(txSignature: string, sourceMessageData: Buffer, irisApiUrl: string): Promise<{
    destinationMessage: Buffer;
    attestation: Buffer;
} | null>;
