import { Module } from "@intuitionrobotics/ts-common";
import { type OnUnauthenticatedResponse, StorageKey } from "@intuitionrobotics/thunderstorm/frontend";
import { type Request_CreateAccount, type Request_LoginAccount, type RequestParams_LoginSAML, type UI_Account } from "../../shared/api.js";
export declare const StorageKey_UserEmail: StorageKey<string>;
export declare const StorageKey_JWT: StorageKey<string>;
export declare const RequestKey_AccountCreate = "account-create";
export declare const RequestKey_AccountLogin = "account-login";
export declare const RequestKey_AccountLoginSAML = "account-login-saml";
export declare const RequestKey_ValidateSession = "account-validate";
export interface OnLoginStatusUpdated {
    onLoginStatusUpdated: () => void;
}
export declare enum LoggedStatus {
    VALIDATING = 0,
    LOGGED_OUT = 1,
    LOGGED_IN = 2
}
type Config = {};
export interface OnAccountsLoaded {
    __onAccountsLoaded: () => void;
}
export declare class AccountModule_Class extends Module<Config> implements OnUnauthenticatedResponse {
    private status;
    private dispatchUI_loginChanged;
    private accounts;
    constructor();
    onUnauthenticatedResponse: () => void;
    getAccounts(): UI_Account[];
    getLoggedStatus: () => LoggedStatus;
    isStatus: (status: LoggedStatus) => boolean;
    protected setLoggedStatus: (newStatus: LoggedStatus) => void;
    protected init(): void;
    create(request: Request_CreateAccount): void;
    login(request: Request_LoginAccount): void;
    private setLoginInfo;
    loginSAML(request: RequestParams_LoginSAML): void;
    private validateToken;
    logout: (url?: string) => string | undefined;
    listUsers: () => void;
}
export declare const AccountModule: AccountModule_Class;
export {};
//# sourceMappingURL=AccountModule.d.ts.map