export declare class ArrayList<T> {
    protected _array: Array<T>;
    isArrayList: boolean;
    constructor(data?: Array<T> | ArrayList<T>);
    get array(): T[];
    set array(val: T[]);
    get length(): number;
    get last(): any;
    get first(): T;
    map(callbackfn: (value: T, index: number, array: T[]) => unknown): unknown[];
    push(...values: any[]): void;
    reverse(): this;
    pop(): any;
    unshift(...items: any[]): number;
    insertAt(i: number, ...value: T[]): void;
    splice(start: number, deleteCount: number, ...items: any[]): void;
    get(index: number): any;
    /**
     * 遍历
     * @param {*} method
     */
    forall(method: (arg0: any) => void): void;
    /**
     * 克隆
     */
    clone(): any;
    /**
     * 分类
     * example:
     *      var arry = [1,2,3,4,5,6]
     *      var result = classify(this._array,(a)={return a%2===0})
     *
     * @param {Function} classifyMethod  分类方法
     */
    classify(classifyMethod: (arg0: any, arg1: any, arg2: any[]) => any): T[][];
    /**
     * 去掉重复元素
     * @param {Function} uniqueMethod  去重复
     * @param {Function} sortMethod 排序
     */
    unique(uniqueMethod: (arg0: T, arg1: T) => boolean, sortMethod?: ((a: T, b: T) => number)): this;
}
