import { AwsIamStore, OrganizationPolicyType, ResourceTypeParts } from '../AwsIamStore.js';
import { FileSystemAdapter } from './FileSystemAdapter.js';
export declare class FileSystemAwsIamStore implements AwsIamStore {
    private readonly baseFolder;
    private readonly partition;
    private readonly separator;
    private fsAdapter;
    constructor(baseFolder: string, partition: string, separator: string, fsAdapter?: FileSystemAdapter);
    private organizationPath;
    private organizationMetadataPath;
    private organizationalUnitsPath;
    private organizationalUnitPath;
    private organizationPoliciesPath;
    private organizationPolicyPath;
    private organizationPolicyMetadataPath;
    private organizationalUnitMetadataPath;
    private accountsPath;
    private accountPath;
    private accountMetadataPath;
    private buildResourcePath;
    private buildMetadataPath;
    /**
     * Root RAM folder for a given account.
     */
    private ramRootPath;
    /**
     * Folder under ramRootPath for a specific region (or 'global').
     */
    private ramRegionPath;
    /**
     * File name for a given resource ARN: replace ':' and '/' with '-'
     */
    private ramFileNameForArn;
    /**
     * Full path to the RAM policy file for this ARN in region.
     */
    private ramPolicyFilePath;
    /**
     * Get the path to the indexes directory.
     *
     * @returns The path to the indexes directory.
     */
    private indexesPath;
    /**
     * The path to the index file for a given index name.
     *
     * @param indexName the name of the index
     * @returns The path to the index file.
     */
    private indexPath;
    saveResourceMetadata(accountId: string, arn: string, metadataType: string, data: string | any): Promise<void>;
    listResourceMetadata(accountId: string, arn: string): Promise<string[]>;
    getResourceMetadata<T, D extends T>(accountId: string, arn: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
    deleteResourceMetadata(accountId: string, arn: string, metadataType: string): Promise<void>;
    deleteResource(accountId: string, arn: string): Promise<void>;
    listResources(accountId: string, options: ResourceTypeParts): Promise<string[]>;
    findResourceMetadata<T>(accountId: string, options: ResourceTypeParts): Promise<T[]>;
    syncResourceList(accountId: string, options: ResourceTypeParts, desiredResources: string[]): Promise<void>;
    deleteAccountMetadata(accountId: string, metadataType: string): Promise<void>;
    saveAccountMetadata(accountId: string, metadataType: string, data: any): Promise<void>;
    getAccountMetadata<T, D extends T>(accountId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
    getOrganizationMetadata<T, D extends T>(organizationId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
    saveOrganizationMetadata(organizationId: string, metadataType: string, data: any): Promise<void>;
    deleteOrganizationMetadata(organizationId: string, metadataType: string): Promise<void>;
    listOrganizationalUnits(organizationId: string): Promise<string[]>;
    deleteOrganizationalUnitMetadata(organizationId: string, ouId: string, metadataType: string): Promise<void>;
    saveOrganizationalUnitMetadata(organizationId: string, ouId: string, metadataType: string, data: any): Promise<void>;
    getOrganizationalUnitMetadata<T, D extends T>(organizationId: string, ouId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
    deleteOrganizationalUnit(organizationId: string, ouId: string): Promise<void>;
    deleteOrganizationPolicyMetadata(organizationId: string, policyType: OrganizationPolicyType, policyId: string, metadataType: string): Promise<void>;
    saveOrganizationPolicyMetadata(organizationId: string, policyType: OrganizationPolicyType, policyId: string, metadataType: string, data: any): Promise<void>;
    getOrganizationPolicyMetadata<T, D extends T>(organizationId: string, policyType: OrganizationPolicyType, policyId: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
    deleteOrganizationPolicy(organizationId: string, policyType: OrganizationPolicyType, policyId: string): Promise<void>;
    listOrganizationPolicies(organizationId: string, policyType: OrganizationPolicyType): Promise<string[]>;
    syncRamResources(accountId: string, region: string | undefined, arns: string[]): Promise<void>;
    saveRamResource(accountId: string, arn: string, data: any): Promise<void>;
    getRamResource<T, D extends T>(accountId: string, arn: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
    listAccountIds(): Promise<string[]>;
    getIndex<T>(indexName: string, defaultValue: T): Promise<{
        data: T;
        lockId: string;
    }>;
    saveIndex(indexName: string, data: any, lockId: string): Promise<boolean>;
    /**
     * Checks if a given content value is empty.
     *
     * @param content The content to check.
     * @returns true if the content is empty, false otherwise.
     */
    private isEmptyContent;
    /**
     * Read the content of a file or return a default value if the file does not exist.
     *
     * @param filePath the path to the file
     * @param defaultValue the default value to return if the file does not exist
     * @returns the content of the file or the default value
     */
    private contentOrDefault;
    /**
     * Either saves the provided data to a file or deletes the file if the data is empty.
     *
     * @param filePath the path to the file
     * @param data the data to save in the file
     */
    private saveOrDeleteFile;
}
//# sourceMappingURL=FileSystemAwsIamStore.d.ts.map