import Prray from './prray';
export declare class PrrayPromise<T> extends Promise<Prray<T>> {
    constructor(executor: (resolve: (prray: Prray<T>) => any, reject: (err: Error) => any) => any);
    mapAsync<U>(func: (currentValue: T, index: number, prray: Prray<T>) => Promise<U> | U, opts?: {
        concurrency: number;
    }): PrrayPromise<U>;
    map<U>(func: (currentValue: T, index: number, prray: Prray<T>) => U): PrrayPromise<U>;
    filterAsync(func: (currentValue: T, index: number, prray: Prray<T>) => Promise<boolean> | boolean, opts?: {
        concurrency: number;
    }): PrrayPromise<T>;
    filter(func: (currentValue: T, index: number, prray: Prray<T>) => boolean): PrrayPromise<T>;
    reduceAsync(func: (accumulator: T, currentValue: T, index: number, prray: Prray<T>) => T | Promise<T>): Promise<T>;
    reduceAsync(func: (accumulator: T, currentValue: T, index: number, prray: Prray<T>) => T | Promise<T>, initialValue: T): Promise<T>;
    reduceAsync<U>(func: (accumulator: U, currentValue: T, index: number, prray: Prray<T>) => U | Promise<U>, initialValue: U): Promise<U>;
    reduce(func: (accumulator: T, currentValue: T, index: number, array: Prray<T>) => T): T;
    reduce(func: (accumulator: T, currentValue: T, index: number, array: Prray<T>) => T, initialValue: T): T;
    reduce<U>(func: (accumulator: U, currentValue: T, index: number, array: Prray<T>) => U, initialValue: U): U;
    reduceRightAsync(func: (accumulator: T, currentValue: T, index: number, prray: Prray<T>) => T | Promise<T>): Promise<T>;
    reduceRightAsync(func: (accumulator: T, currentValue: T, index: number, prray: Prray<T>) => T | Promise<T>, initialValue: T): Promise<T>;
    reduceRightAsync<U>(func: (accumulator: U, currentValue: T, index: number, prray: Prray<T>) => U | Promise<U>, initialValue: U): Promise<U>;
    reduceRight(func: (accumulator: T, currentValue: T, index: number, array: Prray<T>) => T): T;
    reduceRight(func: (accumulator: T, currentValue: T, index: number, array: Prray<T>) => T, initialValue: T): T;
    reduceRight<U>(func: (accumulator: U, currentValue: T, index: number, array: Prray<T>) => U, initialValue: U): U;
    sortAsync(func?: (a: T, b: T) => Promise<number> | number): PrrayPromise<T>;
    findAsync(func: (currentValue: T, index: number, prray: Prray<T>) => Promise<boolean> | boolean): Promise<T | undefined>;
    find(func: (currentValue: T, index: number, prray: Prray<T>) => boolean): Promise<T | undefined>;
    findIndexAsync(func: (currentValue: T, index: number, prray: Prray<T>) => Promise<boolean> | boolean): Promise<number>;
    findIndex(func: (currentValue: T, index: number, prray: Prray<T>) => boolean): Promise<number>;
    everyAsync(func: (currentValue: T, index: number, prray: Prray<T>) => Promise<boolean> | boolean, opts?: {
        concurrency: number;
    }): Promise<boolean>;
    every(func: (currentValue: T, index: number, prray: Prray<T>) => boolean): Promise<boolean>;
    someAsync(func: (currentValue: T, index: number, prray: Prray<T>) => Promise<boolean> | boolean, opts?: {
        concurrency: number;
    }): Promise<boolean>;
    some(func: (currentValue: T, index: number, prray: Prray<T>) => boolean): Promise<boolean>;
    forEachAsync(func: (currentValue: T, index: number, prray: Prray<T>) => Promise<any> | any, opts?: {
        concurrency: number;
    }): Promise<undefined>;
    forEach(func: (currentValue: T, index: number, prray: Prray<T>) => any): Promise<undefined>;
    slice(start?: number, end?: number): PrrayPromise<T>;
    includes(element: T, fromIndex?: number): Promise<boolean>;
    indexOf(element: T, fromIndex?: number): Promise<number>;
    lastIndexOf(element: T, fromIndex?: number): Promise<number>;
    join(separator?: string): Promise<string>;
    keys(): Promise<IterableIterator<number>>;
    values(): Promise<IterableIterator<T>>;
    entries(): Promise<IterableIterator<[number, T]>>;
    fill(value: T, start?: number, end?: number): PrrayPromise<T>;
    sort(func?: (a: T, b: T) => number): PrrayPromise<T>;
    concat(...items: ConcatArray<T>[]): PrrayPromise<T>;
    concat(...items: (ConcatArray<T> | T)[]): PrrayPromise<T>;
    copyWithin(target: number, start: number, end?: number): PrrayPromise<T>;
    toString(): Promise<string>;
    toLocaleString(): Promise<string>;
    pop(): Promise<T | undefined>;
    push(...items: T[]): Promise<number>;
    reverse(): PrrayPromise<T>;
    shift(): Promise<T | undefined>;
    unshift(...items: T[]): Promise<number>;
    splice(start: number): PrrayPromise<T>;
    splice(start: number, deleteCount: number): PrrayPromise<T>;
    splice(start: number, deleteCount: number, ...items: T[]): PrrayPromise<T>;
    toArray(): Promise<T[]>;
    delay(ms: number): PrrayPromise<T>;
}
export declare function prraypromise<T>(promise: Promise<Prray<T>>): PrrayPromise<T>;
//# sourceMappingURL=prraypromise.d.ts.map