///
import { EventEmitter } from 'events';
import * as components from './components';
/**
* @description Settings state used internally by the SDK.
*/
export declare type SettingsState = {
path: string | undefined;
schematics: {
id: string;
default: unknown;
}[];
values: Record;
emitter: EventEmitter;
} & typeof components.nodeFilesystem;
/**
* @description Creates a new settings state
* @param options Options for the settings state
* @returns Settings state created
*/
export declare function settings(options: {
path?: string;
defaultSchematics?: {
id: string;
default: unknown;
}[];
}): SettingsState;
/**
* @description Retrieves settings from the state
* @param state Settings state
* @param query List of setting names to retrieve
* @returns Object containing the settings queried
*/
export declare function getSettings(state: SettingsState, query: string[]): Record;
/**
* @description Mutates settings, but only modifies values that have actually changed.
* @param state Settings state
* @param map Map of setting names to values
*/
export declare function setSettings(state: SettingsState, map: Record): void;
/**
* @description Gets the schematics registered in the state.
* @param state Settings state
* @param query List of schematic IDs to retrieve
* @returns List of schematics
*/
export declare function getSchematics(state: SettingsState, query: string[]): {
id: string;
default: unknown;
}[];
/**
* @description Registers new schematics.
* @param state Settings state
* @param schemas List of schematics to register
*/
export declare function registerSchematics(state: SettingsState, schemas: {
id: string;
default: unknown;
}[]): void;
/**
* @description Saves current settings to disk.
* @param state Settings state
*/
export declare function saveSettings(state: SettingsState): void;
/**
* @description Loads settings from disk. Not necessary if you pass 'path' in settings construction.
* @param state Settings state
* @returns Settings state
*/
export declare function loadSettings(state: SettingsState): void;