export type UseHookStates<T extends unknown[]> = T | ((args: T) => T);
export type UseListUtils<T> = {
    set: (value: UseHookStates<T[]>) => void;
    push: (value: T) => void;
    updateAt: (index: number, value: T) => void;
    insertAt: (index: number, insertValue: T) => void;
    update: (predicate: (a: T, b: T) => boolean, updateValue: T) => void;
    updateFirst: (predicate: (a: T, b: T) => boolean, updateValue: T) => void;
    upsert: (predicate: (a: T, b: T) => boolean, updateValue: T) => void;
    filter: (callbackFn: (value: T, index?: number, array?: T[]) => boolean, thisArg?: any) => void;
    sort: (compareFn: (a: T, b: T) => number) => void;
    removeAt: (index: number) => void;
    clear: () => void;
    reset: () => void;
};
declare function useList<T>(initialList: Array<T>): [Array<T>, UseListUtils<T>];
export default useList;
