import { Nullable, createFunction } from "../../global";
import { OcPromiseRejectError } from "./OcPromiseError";
import { Cancel, OcPromiseExecutor, OcPromiseLike, OcPromiseStatus, PromiseLike, Reject } from "./types";
/**
 * OcPromise 类 - 扩展的 Promise 实现，支持取消操作
 * @template R - 成功状态的返回值类型
 * @template E - 错误类型，默认为 OcPromiseRejectError
 * @template C - 取消操作的原因类型
 */
export declare class OcPromise<R, E extends Error | unknown = OcPromiseRejectError, C = unknown> implements OcPromiseLike<R> {
    /** 当前 Promise 的状态 */
    status: OcPromiseStatus;
    /** 处理函数队列 */
    private handlers;
    /** 存储当前值（完成值/错误/取消原因） */
    data: R | E | C;
    /** 父 Promise，用于取消操作的传播 */
    private parrent;
    /**
     * 创建 OcPromise 实例
     * @param executor 执行器函数，接收 resolve、reject 和 cancel 函数
     */
    constructor(executor: OcPromiseExecutor<R, E, C>);
    /**
     * 添加完成、错误和取消的处理函数
     */
    then<TR = R, TE = never, TC = never>(onfulfilled?: Nullable | createFunction<[R, OcPromiseLike<TR> | PromiseLike<TR> | TR]>, onrejected?: Nullable | createFunction<[E, OcPromiseLike<TE> | PromiseLike<TE> | TE]>, oncanceled?: Nullable | createFunction<[C, OcPromiseLike<TC> | PromiseLike<TC> | TC]>): OcPromise<TR | TE | TC>;
    /**
     * 改变 Promise 状态
     * @private
     * @template T - 目标状态类型
     * @template D - 数据类型
     * @param status - 新状态
     * @param data - 相关数据
     */
    private changeStatus;
    /**
     * 执行处理函数队列
     * @private
     */
    private _runThens;
    /**
     * 取消 Promise
     * @param reason - 取消原因
     */
    cancel(reason: C): void;
    /**
     * 等待所有 Promise 完成
     * @static
     * @template T - 元素类型
     * @param proms - Promise 或值的可迭代对象
     * @returns 包含所有结果的 Promise
     */
    static all<T>(proms: Iterable<T | OcPromiseLike<Awaited<T>>>): OcPromise<Awaited<T>[]>;
    /**
     * 创建一个已完成的 Promise
     * @static
     * @template T - 值的类型
     * @param value - 要解析的值
     */
    static resolve<T extends void | unknown = void>(value: T): OcPromise<Awaited<T>>;
    /**
     * 创建一个已拒绝的 Promise
     * @static
     * @template E - 错误类型
     * @param reason - 拒绝原因
     */
    static reject<E extends OcPromiseRejectError | unknown = unknown>(reason: E): OcPromise<unknown, E>;
    /**
     * 添加取消处理函数
     * @param oncanceled - 取消处理函数
     */
    canceled(oncanceled: Cancel<C>): OcPromise<void | R, OcPromiseRejectError, unknown>;
    /**
     * 添加错误处理函数
     * @param onRejected - 错误处理函数
     */
    catch(onRejected: Reject<E>): OcPromise<void | R, OcPromiseRejectError, unknown>;
    /** 获取当前数据 */
    getData(): R | E | C;
    /** 获取当前状态 */
    getStatus(): OcPromiseStatus;
}
/**
 * 检查值是否为 OcPromise 实例
 * @template PR - Promise 结果类型
 * @template PE - Promise 错误类型
 * @template PC - Promise 取消类型
 * @param data - 要检查的值
 */
export declare function isOcPromise<PR, PE extends Error | unknown = Error, PC = unknown>(data: unknown): data is OcPromise<PR, PE, PC>;
//# sourceMappingURL=OcPromise.d.ts.map