import { QueryList } from '@angular/core';
import { Nullable, PlainObjectOf } from '@angular-ru/cdk/typings';
import { NgxColumnComponent } from '../../components/ngx-column/ngx-column.component';
import { ColumnOptionsDirective } from '../../directives/column-options.directive';
import { ColumnsSchema } from '../../interfaces/table-builder.external';
import { SchemaBuilder } from './schema-builder.class';
import * as i0 from "@angular/core";
export declare class TemplateParserService<T> {
    schema: Nullable<SchemaBuilder>;
    templateKeys: Nullable<Set<string>>;
    fullTemplateKeys: Nullable<Set<string>>;
    overrideTemplateKeys: Nullable<Set<string>>;
    columnOptions: Nullable<ColumnOptionsDirective>;
    compiledTemplates: PlainObjectOf<ColumnsSchema>;
    /**
     * @description: the custom names of the column list to be displayed in the view.
     * @example:
     *    <table-builder #table
     *        [source]="[{ id: 1, name: 'hello', value: 'world', description: 'text' }, ...]"
     *        [exclude]="[ 'description' ]">
     *    </table-builder>
     *    ------------------------
     *    allowedKeyMap === { 'id': true, 'hello': true, 'value': true }
     */
    allowedKeyMap: PlainObjectOf<boolean>;
    /**
     * @description: the custom names of the column list to be displayed in the view.
     * @example:
     *    <table-builder #table
     *        [source]="[{ id: 1, name: 'hello', value: 'world', description: 'text' }, ...]"
     *        [exclude]="[ 'description' ]">
     *    </table-builder>
     *    ------------------------
     *    allowedKeyMap === { 'id': true, 'hello': true, 'value': true, 'description': false }
     */
    keyMap: PlainObjectOf<boolean>;
    private static templateContext;
    toggleColumnVisibility(key: string): void;
    updateColumnsSchema(patch: PlainObjectOf<Partial<ColumnsSchema>>): void;
    initialSchema(columnOptions: Nullable<ColumnOptionsDirective>): void;
    parse(templates?: QueryList<NgxColumnComponent<T>> | null): void;
    mutateColumnSchema(key: string, partialSchema: Partial<ColumnsSchema>): void;
    compileColumnMetadata(column: NgxColumnComponent<T>): void;
    exportSchema(): PlainObjectOf<Partial<ColumnsSchema>>;
    private updateComputedWithSchema;
    static ɵfac: i0.ɵɵFactoryDeclaration<TemplateParserService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TemplateParserService<any>>;
}
//# sourceMappingURL=template-parser.service.d.ts.map