import { IAttribute, IBindingContext } from '../interface/exported';
import { AttributeController } from '../view/exported';
import { ViewController } from '../view/exported';
import { ArrayMethodCallHandler, ArrayPropertyChange } from './repeatAttributeSubscriberHelpers';
export interface ITemplateArray {
    template: Node | Element | Node[] | Element[];
    ctx: IBindingContext;
    $view: ViewController;
}
export declare class RepeatAttribute implements IAttribute {
    $element: HTMLElement;
    $attribute: Attr;
    $bindingContext: IBindingContext;
    $controller: AttributeController;
    value: any;
    isAttached: boolean;
    private elementClone;
    private anchor;
    arrayVariableName: string;
    arrayExpression: string;
    rowInstanceName: string;
    arrayMethodCallHandler: ArrayMethodCallHandler;
    arrayPropertyChangeHandler: ArrayPropertyChange;
    private propertyChangeHandlerSimple;
    templateArray: ITemplateArray[];
    loopBinded: Function;
    private repeatForArray;
    private $view;
    arrayType: string;
    arrayPropertyChangeHandlerLocal: ArrayPropertyChange;
    $array: any;
    private templateElement;
    private cache;
    setArrayLocalVariables(ctx: any, i: number): void;
    created(): void;
    loopArray(changed?: boolean, remove?: number, add?: number): void;
    loopArrayNumber(changed?: boolean, remove?: number, add?: number): void;
    detached(): void;
    attached(): void;
    subscribeArray(): void;
    subscribePropArray(): void;
    subscribePropSimple(): void;
    push(ctx: any, i?: number): void;
    pop(): void;
    updateInternals(): void;
    shift(): void;
    splice(args: any): void;
    clearTemplateArray(): void;
    private remove;
    private clearInRow;
}
