/**
 * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#state)
 */
export type StatefulPromiseState = "pending" | "fulfilled" | "rejected";
/**
 * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#constructor)
 */
export type StatefulPromiseExecutor<TValue> = (resolve: (value: TValue | PromiseLike<TValue>) => void, reject: (reason: unknown) => void) => void;
/**
 * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/)
 */
export default class StatefulPromise<TValue> implements PromiseLike<TValue> {
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#resolve)
     */
    static resolve<TValue = void>(value?: TValue | PromiseLike<TValue>): StatefulPromise<TValue>;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#reject)
     */
    static reject<TValue = never>(reason?: unknown): StatefulPromise<TValue>;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#withresolvers)
     */
    static withResolvers<TValue>(): {
        promise: StatefulPromise<TValue>;
        resolve: (value: TValue | PromiseLike<TValue>) => void;
        reject: (reason: unknown) => void;
    };
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#try)
     */
    static try<TValue, TArgs extends readonly unknown[]>(func: (...args: TArgs) => TValue | PromiseLike<TValue>, ...args: TArgs): StatefulPromise<TValue>;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#allrejected)
     */
    static allRejected(promises: Iterable<unknown>): StatefulPromise<unknown[]>;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#allrejected)
     */
    static allRejected<TItem>(promises: Iterable<TItem>, extract: (item: TItem) => unknown): StatefulPromise<unknown[]>;
    protected _value: any;
    protected _state: StatefulPromiseState;
    protected _promise: Promise<void> | null;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#constructor)
     */
    constructor(executor: StatefulPromiseExecutor<TValue>);
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#state)
     */
    get state(): StatefulPromiseState;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/stateful-promise/#then)
     */
    then<TFulfilledValue = TValue, TRejectedValue = never>(onFulfilled?: ((value: TValue) => TFulfilledValue | PromiseLike<TFulfilledValue>) | undefined | null, onRejected?: ((reason: unknown) => TRejectedValue | PromiseLike<TRejectedValue>) | undefined | null): StatefulPromise<TFulfilledValue | TRejectedValue>;
    get [Symbol.toStringTag](): string;
}
//# sourceMappingURL=stateful-promise.d.ts.map