import { OnChanges, OnInit, SimpleChanges, ChangeDetectorRef, TemplateRef } from '@angular/core';
import { List, Map, Iterable } from 'immutable';
import { AbstractListFieldComponent } from '../abstract-list-field';
import { AppGlobalsService, JsonStoreService, DomUtilService, PathUtilService, ListPageChangerService, ProblemsService, EmptyValueService } from '../shared/services';
import { LongListNavigatorConfig, JSONSchema, PaginatedItem } from '../shared/interfaces';
export declare class ComplexListFieldComponent extends AbstractListFieldComponent implements OnChanges, OnInit {
    appGlobalsService: AppGlobalsService;
    problemsService: ProblemsService;
    jsonStoreService: JsonStoreService;
    domUtilService: DomUtilService;
    pathUtilService: PathUtilService;
    changeDetectorRef: ChangeDetectorRef;
    emptyValueService: EmptyValueService;
    listPageChangerService: ListPageChangerService;
    values: List<Map<string, any>>;
    supportValues: List<Map<string, any>>;
    schema: JSONSchema;
    path: Array<any>;
    paginatedItems: Iterable<number, PaginatedItem>;
    paginatableItems: Iterable<number, PaginatedItem>;
    foundIndices: Array<number>;
    currentFound: number;
    currentPage: number;
    findExpression: string;
    navigator: LongListNavigatorConfig;
    shouldDisplayFoundNavigation: boolean;
    private _shouldDisplayOnlyEditFormItems;
    constructor(appGlobalsService: AppGlobalsService, problemsService: ProblemsService, jsonStoreService: JsonStoreService, domUtilService: DomUtilService, pathUtilService: PathUtilService, changeDetectorRef: ChangeDetectorRef, emptyValueService: EmptyValueService, listPageChangerService: ListPageChangerService);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    hasProblemOrPatch(index: number): boolean;
    readonly headerItemTemplate: TemplateRef<any>;
    onFindClick(): void;
    onAddNewElementAtPosition(index: number): void;
    onFindInputKeypress(key: string): void;
    onFoundNavigate(direction: number): void;
    navigateToItem(index: number): void;
    onPageChange(page: number): void;
    getPaginatableItemsForPage(page: number): Iterable<number, PaginatedItem>;
    getPaginatableItems(): Iterable<number, PaginatedItem>;
    getPageForIndex(index: number): number;
    readonly customTemplate: TemplateRef<any>;
    readonly shouldDisplayViewTemplate: boolean;
    readonly sortable: boolean;
    shouldDisplayEditableFieldsForItem(item: PaginatedItem): boolean;
    shouldDisplayOnlyEditFormItems: boolean;
}
