import type { OperatorMethodInput, OperatorMethodOutput } from './_internal/contracts/index.js';
import type { AuthTokenResolver } from './_internal/transport-http/index.js';
import type { OperatorSdk } from './_internal/operator/index.js';
export type GoodVibesCurrentAuth = OperatorMethodOutput<'control.auth.current'>;
export type GoodVibesLoginInput = OperatorMethodInput<'control.auth.login'>;
export type GoodVibesLoginOutput = OperatorMethodOutput<'control.auth.login'>;
export interface GoodVibesTokenStore {
    getToken(): Promise<string | null>;
    setToken(token: string | null): Promise<void>;
    clearToken(): Promise<void>;
}
export interface BrowserTokenStoreOptions {
    readonly key?: string;
    readonly storage?: Pick<Storage, 'getItem' | 'setItem' | 'removeItem'>;
}
export interface GoodVibesAuthLoginOptions {
    readonly persistToken?: boolean;
}
export interface GoodVibesAuthClient {
    readonly writable: boolean;
    current(): Promise<GoodVibesCurrentAuth>;
    login(input: GoodVibesLoginInput, options?: GoodVibesAuthLoginOptions): Promise<GoodVibesLoginOutput>;
    getToken(): Promise<string | null>;
    setToken(token: string | null): Promise<void>;
    clearToken(): Promise<void>;
}
export declare function createMemoryTokenStore(initialToken?: string | null): GoodVibesTokenStore;
export declare function createBrowserTokenStore(options?: BrowserTokenStoreOptions): GoodVibesTokenStore;
export declare function createGoodVibesAuthClient(operator: OperatorSdk, tokenStore: GoodVibesTokenStore | null, getAuthToken?: AuthTokenResolver): GoodVibesAuthClient;
//# sourceMappingURL=auth.d.ts.map