/// <reference path="leaf.d.ts" />
/// <reference path="widget.d.ts" />
declare namespace Leaf {
    class List<TListItem extends ListItem> extends Widget<any, any, any> {
        constructor(el: HTMLElement);
        [index: number]: TListItem;
        events: Leaf.EventEmitter<"child/add" | "child/change" | "child/remove">;
        private _length;
        length: number;
        forEach: (callbackFn: (item: TListItem, index: number, array: TListItem[]) => void) => void;
        some: (callbackFn: (item: TListItem, index: number, array: TListItem[]) => boolean) => boolean;
        every: (callbackFn: (item: TListItem, index: number, array: TListItem[]) => boolean) => boolean;
        map: (callbackFn: (item: TListItem, index: number, array: TListItem[]) => boolean) => TListItem[];
        filter: (callbackFn: (item: TListItem, index: number, array: TListItem[]) => boolean) => TListItem[];
        slice: (start?: number, end?: number) => TListItem[];
        indexOf(item: TListItem): number;
        private check(item);
        push(...items: TListItem[]): void;
        pop(): TListItem;
        unshift(item: TListItem): number;
        shift(): TListItem;
        splice(index: number, count?: number, ...toAdd: TListItem[]): TListItem[];
        removeItem(item: TListItem): TListItem;
        private attach(item);
        private detach(item);
        toArray(): TListItem[];
    }
    interface ListItem extends Widget<any, any, any> {
    }
}
