import type { CryptoOrTokenCurrency } from "@ledgerhq/types-cryptoassets";
/**
 * Memo field type configuration
 */
export type MemoType = "text" | "tag" | "typed";
/**
 * Input field types for descriptors
 */
export type InputFieldType = "text" | "number" | "tag" | "typed";
/**
 * Input field descriptor for a transaction flow
 */
export type InputDescriptor = Readonly<{
    type: InputFieldType;
    maxLength?: number;
    maxValue?: number;
    options?: readonly string[];
    supportsDomain?: boolean;
}>;
/**
 * Fee input options
 */
export type FeeDescriptor = {
    hasPresets: boolean;
    hasCustom: boolean;
    hasCoinControl?: boolean;
};
/**
 * Send flow descriptor defining inputs for the send transaction
 */
export type SendDescriptor = {
    inputs: {
        recipientSupportsDomain?: boolean;
        memo?: InputDescriptor;
    };
    fees: FeeDescriptor;
};
/**
 * Complete flow descriptors for a coin
 */
export type CoinDescriptor = {
    send: SendDescriptor;
};
export declare const newFlowsConfig: Record<string, {
    send?: boolean;
    staking?: boolean;
    receive?: boolean;
}>;
/**
 * Get the full descriptor for a given currency via the CurrencyBridge
 */
export declare function getDescriptor(currency: CryptoOrTokenCurrency | undefined): CoinDescriptor | null;
/**
 * Get the send flow descriptor for a given currency
 */
export declare function getSendDescriptor(currency: CryptoOrTokenCurrency | undefined): SendDescriptor | null;
export declare function supportsNewFlows(currency: CryptoOrTokenCurrency, flow: "send" | "staking" | "receive"): boolean;
/**
 * Helper functions to check send flow capabilities
 */
export declare const sendFeatures: {
    hasMemo: (currency: CryptoOrTokenCurrency | undefined) => boolean;
    hasFeePresets: (currency: CryptoOrTokenCurrency | undefined) => boolean;
    hasCustomFees: (currency: CryptoOrTokenCurrency | undefined) => boolean;
    hasCoinControl: (currency: CryptoOrTokenCurrency | undefined) => boolean;
    getMemoType: (currency: CryptoOrTokenCurrency | undefined) => InputFieldType | undefined;
    getMemoMaxLength: (currency: CryptoOrTokenCurrency | undefined) => number | undefined;
    getMemoMaxValue: (currency: CryptoOrTokenCurrency | undefined) => number | undefined;
    getMemoOptions: (currency: CryptoOrTokenCurrency | undefined) => readonly string[] | undefined;
    supportsDomain: (currency: CryptoOrTokenCurrency | undefined) => boolean;
};
//# sourceMappingURL=descriptor.d.ts.map