/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ExtensionSetting } from './extensionSettings.js';
/**
 * Returns the path to the .env file for an extension.
 */
export declare function getSettingsEnvFilePath(extensionDir: string): string;
/**
 * Returns the keychain service name for an extension.
 * Sanitizes the extension name and limits length to 255 characters.
 * For workspace scope, includes the workspace directory in the service name.
 *
 * @param extensionName - Extension name
 * @param extensionDir - Extension directory (used to detect scope)
 * @returns Keychain service name
 */
export declare function getKeychainServiceName(extensionName: string, extensionDir?: string): string;
/**
 * Storage implementation for extension settings.
 * Stores non-sensitive settings in .env file and sensitive settings
 * via SecureStore (keychain + encrypted file fallback).
 */
export declare class ExtensionSettingsStorage {
    private readonly extensionName;
    private readonly extensionDir;
    private readonly store;
    constructor(extensionName: string, extensionDir: string);
    /**
     * Saves settings to appropriate storage (env file for non-sensitive, SecureStore for sensitive).
     */
    saveSettings(settings: ExtensionSetting[], values: Record<string, string>): Promise<void>;
    /**
     * Loads settings from appropriate storage.
     * Returns a record with undefined for missing settings.
     * Falls back to legacy cwd-based path for workspace-scoped settings.
     */
    loadSettings(settings: ExtensionSetting[]): Promise<Record<string, string | undefined>>;
    /**
     * Deletes all settings (both env file and keychain entries).
     */
    deleteSettings(): Promise<void>;
    /**
     * Checks if any settings exist (env file or keychain entries).
     */
    hasSettings(): Promise<boolean>;
}
