/**
 * Configuration options for the Hinkal system.
 */
export type HinkalConfig = {
    /**
     * Path to the cache file used for storing temporary data.
     * It should be a valid file path string.
     */
    cacheFilePath?: string;
    /**
     * Indicator to use caching on a file level.
     * Node only.
     */
    useFileCache?: boolean;
    disableCaching?: boolean;
    /**
     * Indicator controlling wether the proof should be constructed remotely in secure enclave.
     */
    generateProofRemotely?: boolean;
    disableMerkleTreeUpdates?: boolean;
    serializedCache?: Record<string, string>;
    /**
     * Override which Tron chain this Hinkal instance targets.
     */
    tronChainOverride?: number;
};
export declare enum EventType {
    BalanceChange = "BalanceChange",
    KycNeeded = "KycNeeded",
    AccountChanged = "AccountChanged",
    ShowConnect = "ShowConnect",
    ShowNetworkPopup = "ShowNetworkPopup",
    MerkleTreeUpdated = "MerkleTreeUpdated",
    MerkleTreeResetStarted = "MerkleTreeResetStarted",
    MerkleTreeResetFinished = "MerkleTreeResetFinished"
}
export declare enum IntegrationProvider {
    UNISWAP = 1,
    ODOS = 2,
    ONEINCH = 3,
    LIFI = 4,
    OKX = 5,
    ALL = 6,
    NONE = 7
}
export declare enum INTERACTION {
    WITHDRAW = "WITHDRAW",
    SWAP = "SWAP",
    CLAIMING = "CLAIMING",
    EMPORIUM = "EMPORIUM",
    NONE = "NONE"
}
export declare enum HinkalLogicAction {
    NONE = 0,// = 0
    APPROVE = 1,// = 1
    RELEASE_BUFFER = 2,// = 2
    EXECUTE = 3
}
export interface UseApprovalUTXOData<T = bigint> {
    approvalChanges: T[];
    externalApprovalAddresses: string[];
    conversionInHinkalAddress: T[];
}
export type HinkalLogicArgs<T = bigint> = {
    hinkalLogicAction: HinkalLogicAction;
    executeApprovalChanges: T[];
    doPreTxApproval: boolean;
    inHinkalAddress: T;
    useApprovalUtxoData: UseApprovalUTXOData<T>[];
    interactionAddress?: string;
};
export declare const defaultHinkalLogicArgs: (count: number) => HinkalLogicArgs<bigint>;
export type FeeStructure<T = bigint> = {
    feeToken: string;
    flatFee: T;
    variableRate: T;
};
export declare const zeroFeeStructure: FeeStructure<bigint>;
export type AuthorizationData = {
    v: string;
    r: string;
    s: string;
    nonce: string;
    address: string;
    chainId: string;
};
export type ParsedInLogicMetadata = {
    signature: string;
    deadline: number;
    erc20TokenAddresses: string[];
    externalCallData: string;
};
export declare enum UserProgress {
    NOT_STARTED = 0,
    CONNECTED = 1,
    KYC = 2,
    COMPLETED = 3
}
export declare enum LoginMessageMode {
    PROTOCOL = "protocol",
    PRIVATE_TRANSFER = "privateTransfer"
}
