import type { QueryBuilder } from '../../types';
export interface CryptoCurrency {
    readonly id: string;
    readonly symbol: string;
    readonly name: string;
    readonly type: 'crypto';
    readonly blockchain: string;
    readonly decimals: number;
    readonly isActive: boolean;
    readonly marketCap?: number;
    readonly totalSupply?: number;
    readonly circulatingSupply?: number;
    readonly contractAddress?: string;
    readonly website?: string;
    readonly whitepaper?: string;
}
export interface DeFiToken extends CryptoCurrency {
    readonly protocol: string;
    readonly category: 'defi' | 'lending' | 'dex' | 'yield-farming' | 'stablecoin';
    readonly apr?: number;
    readonly tvl?: number;
}
export interface NFT {
    readonly id: string;
    readonly tokenId: string;
    readonly contractAddress: string;
    readonly name: string;
    readonly description?: string;
    readonly image: string;
    readonly blockchain: string;
    readonly collection: string;
    readonly owner: string;
    readonly attributes: Array<{
        trait_type: string;
        value: string | number;
    }>;
}
export declare class CryptoModule {
    private cryptoData;
    private defiData;
    private nftData;
    constructor();
    crypto(): QueryBuilder<CryptoCurrency>;
    cryptos(): QueryBuilder<CryptoCurrency>;
    defi(): QueryBuilder<DeFiToken>;
    defis(): QueryBuilder<DeFiToken>;
    nft(): QueryBuilder<NFT>;
    nfts(): QueryBuilder<NFT>;
    getPrice(symbol: string): Promise<number | null>;
    getMarketData(symbol: string): Promise<any>;
}
export declare const getCrypto: (cryptoModule: CryptoModule) => (symbol: string) => CryptoCurrency | null;
export declare const getAllCryptos: (cryptoModule: CryptoModule) => () => CryptoCurrency[];
export declare const findCryptos: (cryptoModule: CryptoModule) => (filter: Record<string, any>) => CryptoCurrency[];
//# sourceMappingURL=index.d.ts.map