export type FilterValue = string | number | (string | number)[] | {
    period: string;
    n?: number;
};
export interface MeasureResult {
    name: string;
    sql?: string;
    alias?: string;
    title?: string;
    format?: string;
}
export interface DimensionResult {
    name: string;
    sql: string;
    grain?: string;
    alias?: string;
    title?: string;
    format?: string;
}
export interface CustomMeasureResult {
    name: string;
    sql: string;
    title?: string;
    format?: string;
}
export interface CustomDimensionResult {
    name: string;
    sql: string;
    title?: string;
    format?: string;
    alias?: string;
}
export interface OrderByResult {
    name: string;
    direction: 'asc' | 'desc';
}
export interface OrderByPart {
    position?: number;
    columnName?: string;
    direction: 'asc' | 'desc';
}
export type FilterItemType = 'equals' | 'not_equals' | 'greater_than' | 'greater_than_or_equal' | 'less_than' | 'less_than_or_equal' | 'contains' | 'not_contains' | 'starts_with' | 'not_starts_with' | 'ends_with' | 'not_ends_with' | 'is_null' | 'is_not_null' | 'between' | 'custom' | 'relative_date';
export interface FilterResultItem {
    name?: string;
    type: FilterItemType;
    memberType?: 'dimension' | 'measure';
    value?: FilterValue;
    startInclusive?: boolean;
    endInclusive?: boolean;
    caseSensitive?: boolean;
    grain?: string;
}
export interface FilterResultGroup {
    type: 'group';
    operator: 'or' | 'and';
    filters: FilterResult[];
}
export type FilterResult = FilterResultItem | FilterResultGroup;
export declare function isFilterResultItem(filter: FilterResult): filter is FilterResultItem;
export interface SemanticMeasure {
    name: string;
    title?: string;
    format?: string;
}
export interface SemanticDimension {
    name: string;
    title?: string;
    format?: string;
}
export interface SemanticView {
    name: string;
    measures: SemanticMeasure[];
    dimensions: SemanticDimension[];
}
export interface MissingMemberResult {
    name: string;
    sql: string;
}
export interface ParseSemanticSqlResult {
    semanticView: string;
    measures?: MeasureResult[];
    dimensions?: DimensionResult[];
    customMeasures?: CustomMeasureResult[];
    customDimensions?: CustomDimensionResult[];
    orderBy?: OrderByResult[];
    filters?: FilterResult[];
    limit?: number;
    offset?: number;
    distinct?: boolean;
    missingMembers?: MissingMemberResult[];
}
export declare function parseSemanticSql(sql: string, semanticViews: SemanticView[]): ParseSemanticSqlResult | null;
//# sourceMappingURL=semantic-sql-engine.d.ts.map