import { AfterViewInit, EventEmitter, Injector, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
import { AsyncValidatorFn, ValidatorFn } from '@angular/forms';
import { OTableColumn } from '../../../interfaces/o-table-column.interface';
import { OPercentageValueBaseType } from '../../../pipes/o-percentage.pipe';
import { DateFilterFunction } from '../../../types/date-filter-function.type';
import { ErrorData } from '../../../types/error-data.type';
import { Expression } from '../../../types/expression.type';
import { ODateValueType } from '../../../types/o-date-value.type';
import { OTableComponent } from '../o-table.component';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_TABLE_COLUMN: string[];
export declare const DEFAULT_OUTPUTS_O_TABLE_COLUMN: string[];
export declare class OTableColumnComponent implements OTableColumn, OnDestroy, OnInit, AfterViewInit {
    table: OTableComponent;
    protected injector: Injector;
    renderer: any;
    editor: any;
    type: string;
    attr: string;
    title: string;
    titleAlign: string;
    contentAlign: 'start' | 'center' | 'end';
    sqlType: string;
    protected _SQLType: number;
    protected _orderable: boolean;
    protected _resizable: boolean;
    protected _searchable: boolean;
    protected _groupable: boolean;
    editable: boolean;
    width: string;
    minWidth: string;
    maxWidth: string;
    tooltip: boolean;
    tooltipValue: string;
    tooltipFunction: (rowData: any) => any;
    class: string;
    set multiline(val: boolean);
    get multiline(): boolean;
    protected _multiline: boolean;
    angularValidatorsFn: ValidatorFn[];
    angularValidatorsFnErrors: ErrorData[];
    angularAsyncValidatorsFn: AsyncValidatorFn[];
    filterExpressionFunction: (columnAttr: string, quickFilter?: string) => Expression;
    _filterSource: 'render' | 'data' | 'both';
    filterFunction: (cellValue: any, rowValue: any, quickFilter?: string) => boolean;
    protected format: string;
    protected grouping: any;
    protected thousandSeparator: string;
    protected decimalSeparator: string;
    protected currencySymbol: string;
    protected currencySymbolPosition: string;
    protected trueValue: any;
    protected falseValue: any;
    protected renderTrueValue: any;
    protected renderFalseValue: any;
    protected renderType: string;
    protected booleanType: string;
    protected imageType: string;
    protected avatar: string;
    protected emptyImage: string;
    protected icon: string;
    protected action: string;
    protected text: string;
    protected iconPosition: string;
    protected entity: string;
    protected service: string;
    protected columns: string;
    protected valueColumn: string;
    protected parentKeys: string;
    protected queryMethod: string;
    protected serviceType: string;
    protected translate: boolean;
    protected translateArgsFn: (rowData: any) => any[];
    oDateFormat: string;
    oHourFormat: number;
    valueBase: OPercentageValueBaseType;
    protected orequired: boolean;
    showPlaceHolder: boolean;
    olabel: string;
    updateRecordOnEdit: boolean;
    showNotificationOnEdit: boolean;
    protected locale: string;
    protected oStartView: 'month' | 'year';
    protected oMinDate: string;
    protected oMaxDate: string;
    protected oTouchUi: boolean;
    protected oStartAt: string;
    protected filterDate: DateFilterFunction;
    protected dateValueType: ODateValueType;
    min: number;
    max: number;
    step: number;
    minDecimalDigits: number;
    maxDecimalDigits: number;
    indeterminateOnNull: boolean;
    autoCommit: boolean;
    onClick: EventEmitter<object>;
    editionStarted: EventEmitter<object>;
    editionCancelled: EventEmitter<object>;
    editionCommitted: EventEmitter<object>;
    onPostUpdateRecord: EventEmitter<object>;
    asyncLoad: boolean;
    container: ViewContainerRef;
    private subscriptions;
    constructor(table: OTableComponent, injector: Injector);
    static addEditor(type: string, editorClassReference: any): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    parseTitleAlign(): string;
    get originalWidth(): string;
    protected createRenderer(): void;
    buildCellEditor(type: string, container: ViewContainerRef, propsOrigin: any, registerInColumn?: boolean): any;
    protected createEditor(): void;
    registerRenderer(renderer: any): void;
    registerEditor(editor: any): void;
    set orderable(val: any);
    get orderable(): any;
    set resizable(val: any);
    get resizable(): any;
    set searchable(val: any);
    get searchable(): any;
    set groupable(val: any);
    get groupable(): any;
    getSQLType(): number;
    set filterSource(val: string);
    get filterSource(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<OTableColumnComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OTableColumnComponent, "o-table-column", never, { "attr": "attr"; "title": "title"; "titleAlign": "title-align"; "contentAlign": "content-align"; "orderable": "orderable"; "searchable": "searchable"; "groupable": "groupable"; "type": "type"; "editable": "editable"; "width": "width"; "minWidth": "min-width"; "maxWidth": "max-width"; "asyncLoad": "async-load"; "sqlType": "sql-type"; "tooltip": "tooltip"; "tooltipValue": "tooltip-value"; "tooltipFunction": "tooltip-function"; "multiline": "multiline"; "resizable": "resizable"; "filterExpressionFunction": "filter-expression-function"; "class": "class"; "angularValidatorsFn": "validators"; "angularValidatorsFnErrors": "validators-errors"; "angularAsyncValidatorsFn": "async-validators"; "trueValue": "true-value"; "falseValue": "false-value"; "booleanType": "boolean-type"; "renderTrueValue": "render-true-value"; "renderFalseValue": "render-false-value"; "renderType": "render-type"; "grouping": "grouping"; "thousandSeparator": "thousand-separator"; "decimalSeparator": "decimal-separator"; "minDecimalDigits": "min-decimal-digits"; "maxDecimalDigits": "max-decimal-digits"; "currencySymbol": "currency-symbol"; "currencySymbolPosition": "currency-symbol-position"; "format": "format"; "imageType": "image-type"; "emptyImage": "empty-image"; "avatar": "avatar"; "icon": "icon"; "svgIcon": "svg-icon"; "action": "action"; "text": "text"; "iconPosition": "icon-position"; "entity": "entity"; "service": "service"; "columns": "columns"; "translate": "translate"; "valueColumn": "value-column"; "valueColumnType": "value-column-type"; "parentKeys": "parent-keys"; "queryMethod": "query-method"; "serviceType": "service-type"; "translateArgsFn": "translate-params"; "orequired": "required"; "showPlaceHolder": "show-placeholder"; "olabel": "label"; "updateRecordOnEdit": "update-record-on-edit"; "showNotificationOnEdit": "show-notification-on-edit"; "enabled": "enabled"; "min": "min"; "max": "max"; "step": "step"; "locale": "locale"; "oStartView": "start-view"; "oTouchUi": "touch-ui"; "startAt": "start-at"; "filterDate": "filter-date"; "dateValueType": "date-value-type"; "oDateFormat": "date-format"; "oDateLocale": "date-locale"; "oDateStartView": "date-start-view"; "oMinDate": "date-min"; "oMaxDate": "date-max"; "oDateTouchUi": "date-touch-ui"; "oDateStartAt": "date-start-at"; "oHourFormat": "hour-format"; "oHourMin": "hour-min"; "oHourMax": "hour-max"; "oHourPlaceholder": "hour-placeholder"; "oDatePlaceholder": "date-placeholder"; }, { "onClick": "onClick"; "onDataLoaded": "onDataLoaded"; "editionStarted": "editionStarted"; "editionCancelled": "editionCancelled"; "editionCommitted": "editionCommitted"; "onPostUpdateRecord": "onPostUpdateRecord"; }, never, never, false, never>;
}
