import { IAccessTokenStorage } from '@lens-protocol/api-bindings';
import { CredentialsExpiredError, Logout } from '@lens-protocol/domain/use-cases/authentication';
import { PromiseResult } from '@lens-protocol/shared-kernel';
import { IStorage, PersistedCredentials, StorageSubscriber, StorageSubscription } from '@lens-protocol/storage';
import { AuthApi } from "./AuthApi.js";
import { JwtCredentials } from "./JwtCredentials.js";
export type Unsubscribe = () => void;
/**
 * Stores auth credentials.
 * Access token is kept in memory.
 * Identity token is kept in memory.
 * Refresh token is persisted permanently.
 */
export declare class CredentialsStorage implements IStorage<JwtCredentials>, IAccessTokenStorage {
    private readonly refreshTokenStorage;
    private readonly authApi;
    private refreshTimer;
    private refreshPromise;
    private subscribers;
    private accessToken;
    private identityToken;
    private logout;
    constructor(refreshTokenStorage: IStorage<PersistedCredentials>, authApi: AuthApi);
    onExpiry(logout: Logout): void;
    set(newCredentials: JwtCredentials): Promise<void>;
    get(): Promise<JwtCredentials | null>;
    reset(): Promise<void>;
    subscribe(subscriber: StorageSubscriber<JwtCredentials>): StorageSubscription;
    getAccessToken(): string | null;
    refreshToken(): PromiseResult<void, CredentialsExpiredError>;
    private cancelScheduledRefresh;
    private refreshCredentials;
    private notifySubscribers;
    private getRefreshToken;
}
