/**
 * Transaction types enum for multi-transactions
 */
export declare enum MultiTransactionType {
    TRANSFER = "TRANSFER",
    SWAP = "SWAP",
    CUSTOM = "CUSTOM",
    INCOMING = "INCOMING"
}
/**
 * Transaction status enum for individual transactions
 */
export declare enum TransactionStatus {
    PENDING = "PENDING",
    COMPLETED = "COMPLETED",
    FAILED = "FAILED"
}
/**
 * Overall status enum for multi-transactions
 */
export declare enum OverallStatus {
    PENDING = "PENDING",
    COMPLETED = "COMPLETED",
    FAILED = "FAILED"
}
/**
 * Receiver interface for transaction recipients
 */
export interface User {
    username?: string;
    walletAddress?: string;
    solana_program_wallet?: string;
    ens?: string;
}
/**
 * Token details interface
 */
export interface TokenDetail {
    amount: string;
    amountFormatted: string;
    tokenAddress: string;
    tokenName: string;
    tokenSymbol: string;
    receiver?: User;
}
/**
 * Interface for individual transaction details
 */
export interface TransactionDetail {
    txnURL: string;
    status: TransactionStatus;
}
/**
 * Token Details
 */
export interface TokenURI {
    tokenName: string;
    tokenSymbol: string;
    tokenAddress: string;
    decimals: number;
    logoURI: string;
}
/**
 * Interface for transaction metadata
 */
export interface TransactionMetadata {
    senderDetails: User;
    receiverDetails: User[];
    inputAmounts: {
        [key: string]: TokenDetail[];
    };
    destinationAmounts: {
        [key: string]: TokenDetail[];
    };
    status: OverallStatus;
    lastUpdatedTimestamp: number;
    transactions: {
        [key: string]: {
            [key: string]: TransactionDetail;
        };
    };
    inputToken: TokenURI;
    outputToken: TokenURI;
    totalInputAmount: string;
    totalOutputAmount: string;
}
/**
 * Interface for MultiTransaction document
 */
export interface IMultiTransaction {
    multiTransactionId: string;
    transactionType: MultiTransactionType;
    transactionDescription: string;
    sender: User;
    receivers: User[];
    sourceChains: number[];
    destinationChains: number[];
    inputTokens: {
        [key: string]: TokenDetail[];
    };
    outputTokens: {
        [key: string]: TokenDetail[];
    };
    transactions: {
        [key: string]: {
            [key: string]: TransactionDetail;
        };
    };
    overallStatus: OverallStatus;
    metadata: TransactionMetadata;
    createdTimestamp: number;
    lastUpdatedTimestamp: number;
}
