/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import { URI } from '@sussudio/base/common/uri.mjs';
import { IEnvironmentService } from '../../environment/common/environment.mjs';
import { IFileService } from '../../files/common/files.mjs';
import { ILogService } from '../../log/common/log.mjs';
import { IStateService } from './state.mjs';
export declare class FileStorage {
	private readonly storagePath;
	private readonly logService;
	private readonly fileService;
	private storage;
	private lastSavedStorageContents;
	private readonly flushDelayer;
	private initializing;
	private closing;
	constructor(storagePath: URI, logService: ILogService, fileService: IFileService);
	init(): Promise<void>;
	private doInit;
	getItem<T>(key: string, defaultValue: T): T;
	getItem<T>(key: string, defaultValue?: T): T | undefined;
	setItem(key: string, data?: object | string | number | boolean | undefined | null): void;
	setItems(
		items: readonly {
			key: string;
			data?: object | string | number | boolean | undefined | null;
		}[],
	): void;
	removeItem(key: string): void;
	private save;
	private doSave;
	close(): Promise<void>;
}
export declare class StateService implements IStateService {
	readonly _serviceBrand: undefined;
	protected readonly fileStorage: FileStorage;
	constructor(environmentService: IEnvironmentService, logService: ILogService, fileService: IFileService);
	init(): Promise<void>;
	getItem<T>(key: string, defaultValue: T): T;
	getItem<T>(key: string, defaultValue?: T): T | undefined;
}
