import { WeavyClient } from './weavy';
import { WeavyTokenFactory } from '../types/weavy.types';
import { Constructor } from '../types/generic.types';
export interface WeavyAuthenticationProps {
    whenTokenFactory: () => Promise<void>;
    whenUrlAndTokenFactory: () => Promise<void>;
    whenTokenIsValid: () => Promise<void>;
    tokenFactory: WeavyTokenFactory | undefined;
    tokenUrl: string | URL | undefined;
    getToken: (refresh?: boolean) => Promise<string>;
}
export declare const WeavyAuthenticationMixin: <TBase extends Constructor<WeavyClient>>(Base: TBase) => {
    new (...args: any[]): {
        _resolveTokenFactory?: (value: unknown) => void;
        _whenTokenFactory: Promise<unknown>;
        whenTokenFactory(): Promise<void>;
        _resolveUrlAndTokenFactory?: (value: unknown) => void;
        _whenUrlAndTokenFactory: Promise<unknown>;
        whenUrlAndTokenFactory(): Promise<void>;
        _resolveTokenIsValid?: (value: unknown) => void;
        _whenTokenIsValid: Promise<unknown>;
        whenTokenIsValid(): Promise<void>;
        _tokenFactory?: WeavyTokenFactory;
        /**
         * Async function returning an `access_token` string for _your_ authenticated user. A boolean `refresh` parameter is provided to let you now if a fresh token is needed from Weavy.
         */
        get tokenFactory(): WeavyTokenFactory | undefined;
        set tokenFactory(tokenFactory: WeavyTokenFactory | null | undefined);
        _tokenUrl?: URL;
        /**
         * An URL to an endpoint returning an JSON data containing an `access_token` string property for _your_ authenticated user. A boolean `refresh=true` query parameter is provided in the request to let you now if when a fresh token is needed from Weavy.
         */
        get tokenUrl(): URL | undefined;
        set tokenUrl(tokenUrl: string | URL | null | undefined);
        _tokenPromise: Promise<string> | null;
        _token: string;
        _validateToken(token: unknown): boolean;
        _validTokenFromFactory: (refresh: boolean) => Promise<string>;
        getToken(refresh?: boolean): Promise<string>;
        readonly weavySid: string;
        readonly weavyId: string;
        readonly host: HTMLElement;
        cloudFilePickerUrl: string | URL;
        disableEnvironmentImports: boolean;
        gcTime: number;
        scrollBehavior: "smooth" | "instant" | "auto";
        staleTime: number;
        tokenFactoryRetryDelay: number;
        tokenFactoryTimeout: number;
        "__#16@#resolveUrl"?: (url: URL) => void;
        "__#16@#whenUrl": Promise<unknown>;
        whenUrl(): Promise<void>;
        "__#16@#url"?: URL;
        get url(): URL | undefined;
        set url(url: string | URL | null | undefined);
        readonly cachePrefix: string;
        reset(): Promise<void>;
        "__#16@#isDestroyed": boolean;
        readonly isDestroyed: boolean;
        destroy(): void;
    };
} & TBase;
//# sourceMappingURL=authentication.d.ts.map