import { default as SymbolTable } from './symbolTable';
import { SyntaxNode } from '../../parser/nodes';
export type NodeSymbolId = number;
export declare class NodeSymbolIdGenerator {
    private id;
    reset(): void;
    nextId(): NodeSymbolId;
}
export interface NodeSymbol {
    id: NodeSymbolId;
    symbolTable?: SymbolTable;
    declaration?: SyntaxNode;
    references: SyntaxNode[];
}
export declare class SchemaSymbol implements NodeSymbol {
    id: NodeSymbolId;
    symbolTable: SymbolTable;
    references: SyntaxNode[];
    constructor({ symbolTable }: {
        symbolTable: SymbolTable;
    }, id: NodeSymbolId);
}
export declare class EnumSymbol implements NodeSymbol {
    id: NodeSymbolId;
    symbolTable: SymbolTable;
    declaration: SyntaxNode;
    references: SyntaxNode[];
    constructor({ symbolTable, declaration }: {
        symbolTable: SymbolTable;
        declaration: SyntaxNode;
    }, id: NodeSymbolId);
}
export declare class EnumFieldSymbol implements NodeSymbol {
    id: NodeSymbolId;
    declaration: SyntaxNode;
    references: SyntaxNode[];
    constructor({ declaration }: {
        declaration: SyntaxNode;
    }, id: NodeSymbolId);
}
export declare class TableSymbol implements NodeSymbol {
    id: NodeSymbolId;
    symbolTable: SymbolTable;
    declaration: SyntaxNode;
    references: SyntaxNode[];
    constructor({ symbolTable, declaration }: {
        symbolTable: SymbolTable;
        declaration: SyntaxNode;
    }, id: NodeSymbolId);
}
export declare class ColumnSymbol implements NodeSymbol {
    id: NodeSymbolId;
    declaration: SyntaxNode;
    references: SyntaxNode[];
    constructor({ declaration }: {
        declaration: SyntaxNode;
    }, id: NodeSymbolId);
}
export declare class TableGroupSymbol implements NodeSymbol {
    id: NodeSymbolId;
    symbolTable: SymbolTable;
    declaration: SyntaxNode;
    references: SyntaxNode[];
    constructor({ symbolTable, declaration }: {
        symbolTable: SymbolTable;
        declaration: SyntaxNode;
    }, id: NodeSymbolId);
}
export declare class TableGroupFieldSymbol implements NodeSymbol {
    id: NodeSymbolId;
    declaration: SyntaxNode;
    references: SyntaxNode[];
    constructor({ declaration }: {
        declaration: SyntaxNode;
    }, id: NodeSymbolId);
}
