import type { ZodType, z } from "zod"; type I> = z.infer; export declare abstract class ConfigStore> { fileMode: number | undefined; abstract schema: T; abstract getConfigPath(): string; protected abstract initConfig(migrate: boolean): Promise>; /** * Get the full config or the value for the specific section or section key/record. */ get(): Promise>; get>(section: S): Promise[S]>; get, K extends keyof I[S]>(section: S, key: K): Promise[S][K] | undefined>; /** * Set the value for the given section or key in a section. */ set, _K extends keyof I[S]>(section: S, value: I[S]): Promise; set, K extends keyof I[S]>(section: S, key: K, value: I[S][K]): Promise; /** * Update the given object/record in the store. The object/record for the section and key must already * exist, otherwise an error is thrown. If a partial record is provided, the record is updated with the fields * given. Returns the full record after update. */ update, K extends keyof I[S], _N extends keyof I[S][K]>(section: S, key: K, value: Partial[S][K]>): Promise[S][K]>; update, K extends keyof I[S], N extends keyof I[S][K]>(section: S, key: K, name: N, value: I[S][K][N]): Promise[S][K]>; /** * Delete the given object/record from the specified section, if it exists. */ delete, K extends keyof I[S]>(section: S, key: K): Promise; clear(): Promise; protected validate(data: unknown, context: string): I; private lock; private _wrappedLock; private readConfig; private writeConfig; } export {};