import { IAccount } from '../interfaces';

interface StoredAccount {
    username: string;
    loginAuth: 'steem' | 'keychain' | 'steemlogin';
    accessToken?: string;
    encryptedPk?: string;
}
interface AuthState {
    isAuthenticated: boolean;
    username: string;
    account: IAccount | null;
    loginAuth: 'steem' | 'keychain' | 'steemlogin';
    appName: string;
    callbackURL: string;
    accounts: StoredAccount[];
}
interface AuthStore {
    state: AuthState;
    slogin: (access_token: string) => Promise<void>;
    logout: () => void;
    handleLogin: (username: string, keychainLogin: boolean, posting_key?: string, pin?: string) => Promise<void>;
    checkUser: () => Promise<void>;
    validatePostingKey: (username: string, postingKey: string) => Promise<boolean>;
    setConfig: (appName: string, callbackURL: string) => void;
    addAccount: (account: StoredAccount) => void;
    removeAccount: (username: string) => void;
    switchAccount: (username: string) => Promise<void>;
    get username(): string;
    get loginAuth(): 'steem' | 'keychain' | 'steemlogin';
    get accounts(): StoredAccount[];
}
/**
 * Call this function ONLY from inside a component's setup() or a composable called from setup().
 * Do NOT call at the top level of a module or in main.ts.
 */
export declare const provideAuthStore: () => AuthStore;
export declare const useAuthStore: () => AuthStore;
export type { AuthStore };
