import { Initializer } from '../../../../init/Initializer';
import type { StringKey, TypeObject } from '../../../../storage/keyvalue/IndexedStorage';
import type { AccountStore, MinimalAccountSettings } from './AccountStore';
import type { AccountLoginStorage } from './LoginStorage';
import { ACCOUNT_TYPE } from './LoginStorage';
/**
 * A {@link AccountStore} that uses an {@link AccountLoginStorage} to keep track of the accounts.
 * Needs to be initialized before it can be used.
 */
export declare class GenericAccountStore<TDesc extends MinimalAccountSettings> extends Initializer implements AccountStore<TDesc> {
    protected readonly logger: import("global-logger-factory").Logger<unknown>;
    protected readonly description: TDesc;
    protected readonly storage: AccountLoginStorage<{
        [ACCOUNT_TYPE]: TDesc;
    }>;
    protected initialized: boolean;
    constructor(storage: AccountLoginStorage<Record<string, never>>, description: TDesc);
    handle(): Promise<void>;
    create(): Promise<string>;
    getSetting<TKey extends keyof TDesc>(id: string, setting: TKey): Promise<TypeObject<TDesc>[TKey] | undefined>;
    updateSetting<TKey extends StringKey<TDesc>>(id: string, setting: TKey, value: TypeObject<TDesc>[TKey]): Promise<void>;
}
