import { EventEmitter } from '@angular/core';
import { ElementRoute } from 'dbweb-core';
import { BehaviorSubject } from 'rxjs';
import { BillComponent } from '../../bill/bill.component';
import { ModelElementCategory } from '../../services/eleview/eleview-backface';
import { ColumnsWithLetter } from '../../services/eleview/types/model';
import { Controller, ElementBackFace, MainColumn } from './back-face';
import { BillParam } from './bill-param';
import { ImportParam } from './import-param';
import { ConditionalTemplate, RecordViewParam } from './recordview-param';
import { UpdateParam } from './update.param';
interface IElementData {
    Tabs: string[];
    parent: ElementService;
}
export interface IProcess {
    Name: string;
    Icon?: string;
    Color?: string;
    ElementName?: string;
    BindRecord: boolean;
    TransPath?: string[];
    TransQuery?: string;
    WithSql?: boolean;
    Visable?: string;
    MoreStr?: string;
}
export declare class ElementDataRecordView implements IElementData {
    parent: ElementService;
    labelCategories: ModelElementCategory[];
    Tabs: string[];
    DBList: string[];
    Tables: string[];
    allElementNames: string[];
    SQLCheckError: string;
    allColumnNames: string[];
    allColumnWithLetter: ColumnsWithLetter[];
    bindRecordProcesses: IProcess[];
    notBindRecordProcesses: IProcess[];
    inited: EventEmitter<any>;
    readonly Params: RecordViewParam;
    currentProcess: BehaviorSubject<IProcess>;
    currentConditionTemplate: ConditionalTemplate;
    constructor(parent: ElementService);
    init(): void;
    refreshTables(): void;
    refreshProcesses(): void;
    collectionProcesses(): void;
    checkSQL(): import("rxjs").Observable<{
        Error: string;
        Columns: {
            Name: string;
            Type: string;
        }[];
    }>;
}
export declare class ElementDataImport implements IElementData {
    parent: ElementService;
    Tabs: string[];
    constructor(parent: ElementService);
    DBList: string[];
    Tables: string[];
    readonly Params: ImportParam;
    init(): import("rxjs").Observable<[string[], string[]]>;
    syncTableColumn(): void;
    refreshTables(): void;
}
export declare class ElementDataUpdate implements IElementData {
    parent: ElementService;
    Tabs: string[];
    DBList: string[];
    Tables: string[];
    constructor(parent: ElementService);
    readonly Params: UpdateParam;
    isAllSelected(): boolean;
    hasSelected(): boolean;
    init(): void;
    refreshTables(): void;
}
export declare class ElementDataBill implements IElementData {
    parent: ElementService;
    Tabs: string[];
    MainColumns: MainColumn[];
    readonly Param: BillParam;
    fixFieldSettings(cols: string[]): void;
    fixCloneSettings(): void;
    constructor(parent: ElementService);
}
export declare class ElementService {
    back: ElementBackFace;
    bill: BillComponent;
    init: EventEmitter<any>;
    Controllers: Controller[];
    Categories: string[];
    CategoriesEN: string[];
    BaseActive: boolean;
    ActiveTab: string;
    Roles: {
        Name: string;
        Checked: boolean;
        OldChecked: boolean;
    }[];
    Params: any;
    data: {
        [key: string]: IElementData;
    };
    constructor(back: ElementBackFace);
    onInit(ele: ElementRoute): void;
}
export {};
