/**
 * Serializable configuration for the connection
 */
export type LunchMoneyCryptoConnectionConfig = Record<string, unknown>;
/**
 * Non-serializable injected dependencies for the connection
 */
export type LunchMoneyCryptoConnectionContext = Record<string, unknown>;
export interface CryptoBalance {
    asset: string;
    amount: string;
}
export declare const providerNames: readonly ["coinbase", "coinbase_pro", "kraken", "binance", "wallet_ethereum"];
export type ProviderName = (typeof providerNames)[number];
export interface LunchMoneyCryptoConnectionBalances {
    providerName: ProviderName;
    balances: CryptoBalance[];
}
export type LunchMoneyCryptoConnectionInitialization = LunchMoneyCryptoConnectionBalances;
export interface LunchMoneyCryptoConnection<TConfig extends LunchMoneyCryptoConnectionConfig, TContext extends LunchMoneyCryptoConnectionContext> {
    initiate(config: TConfig, context: TContext): Promise<LunchMoneyCryptoConnectionInitialization>;
    getBalances(config: TConfig, context: TContext): Promise<LunchMoneyCryptoConnectionBalances>;
}
