import { BinaryFilter, Filter, Query, UnaryFilter, MetaResponse } from '@cubejs-client/core';
export declare function getMembersList(query: NormalizedQuery): string[];
declare enum MemberKind {
    Measure = 0,
    Dimension = 1,
    Segment = 2,
    TimeDimension = 3
}
type ConverterMember = {
    kind: MemberKind;
    name: string;
    position?: number;
    granularity?: string;
};
export type NormalizedQuery = Omit<Query, 'order'> & {
    order?: Array<{
        id: string;
        desc: boolean;
    }>;
};
export declare class CubeSQLConverter {
    protected readonly query: NormalizedQuery;
    protected readonly meta: MetaResponse;
    protected members: ConverterMember[];
    protected filters: Array<Filter>;
    protected tables: string[];
    protected pathToKind: Record<string, MemberKind>;
    constructor(query: NormalizedQuery, meta: MetaResponse);
    private getPathKind;
    protected decompose(): void;
    buildQuery(): string;
    protected makeJoins(): string;
    protected makeMeasure(name: string): string;
    protected makeFilter(filter: BinaryFilter | UnaryFilter): string;
    protected makeDimension(name: string): string;
    protected makeTimeDimension(name: string, granularity?: string): string;
    protected escapeValue(value: string): string;
    protected makeOrderBy(queryOrder: Array<{
        id: string;
        desc: boolean;
    }>): string;
}
export {};
