import { CatalogContext, DatabaseContext, DereferenceContext, TableContext, ViewContext } from '../lib/FlinkSQLParser';
import { FlinkSQLParserListener } from '../lib/FlinkSQLParserListener';
export declare enum SchemaContextKindEnum {
    VIEW = "view",
    CATALOG = "catalog",
    DATABASE = "database",
    TABLE = "table",
    COLUMN = "column"
}
interface SchemaBaseContext {
    kind: SchemaContextKindEnum;
    text: string;
    startOffset: number;
    endOffset: number;
}
export interface SchemaCatalogContext extends SchemaBaseContext {
    kind: SchemaContextKindEnum.CATALOG;
    catalogName: string;
}
export interface SchemaDatabaseContext extends SchemaBaseContext {
    kind: SchemaContextKindEnum.DATABASE;
    catalogName?: string;
    databaseName: string;
}
export interface SchemaTableContext extends SchemaBaseContext {
    kind: SchemaContextKindEnum.TABLE;
    catalogName?: string;
    databaseName?: string;
    tableName: string;
}
export interface SchemaColumnContext extends SchemaBaseContext {
    kind: SchemaContextKindEnum.COLUMN;
    catalogName?: string;
    databaseName?: string;
    tableName?: string;
    columnName: string;
}
export interface SchemaViewContext extends SchemaBaseContext {
    kind: SchemaContextKindEnum.VIEW;
    catalogName?: string;
    databaseName?: string;
    viewName: string;
}
export declare type SchemaContext = SchemaCatalogContext | SchemaDatabaseContext | SchemaTableContext | SchemaViewContext | SchemaColumnContext;
export declare class SchemaListener implements FlinkSQLParserListener {
    private _schemaContexts;
    getSchemaContexts(): SchemaContext[];
    enterView(ctx: ViewContext): void;
    enterCatalog(ctx: CatalogContext): void;
    enterDatabase(ctx: DatabaseContext): void;
    enterTable(ctx: TableContext): void;
    enterDereference(ctx: DereferenceContext): void;
}
export {};
