export declare class OneTimePromise<T> {
    private started;
    private finishedWithError;
    private finishedWithResult;
    private error;
    private result;
    private timeout;
    private timeCounter;
    /**
     * This is a Promise wrapper which allows the promise to be executed only once (any further execution returns prevoiusly loaded results)
     * @param timeout - timeout of waiting in milliseconds
     *
     */
    constructor(timeout: number);
    /**
     * Executes the promiseReturningFn only on the first call of execute
     * @param promiseReturningFn - Remember that when you call a function that returns a promise, the executor starts executing. That is why you have to pass an function here
     */
    execute(promiseReturningFn: () => Promise<T>): Promise<T>;
    private awaitResult;
}
