import { type PolicySkeleton } from '../api/PoliciesApi';
import { type PolicySetSkeleton } from '../api/PolicySetApi';
import { type ResourceTypeSkeleton } from '../api/ResourceTypesApi';
import { type ScriptSkeleton } from '../api/ScriptApi';
import { State } from '../shared/State';
import { ExportMetaData } from './OpsTypes';
export type PolicySet = {
    /**
     * Create policy export template
     * @returns {PolicySetExportInterface} policy export interface
     */
    createPolicySetExportTemplate(): PolicySetExportInterface;
    /**
     * Read all policy sets
     * @returns {Promise<PolicySetSkeleton[]>} a promise that resolves to an array of policy set objects
     */
    readPolicySets(): Promise<PolicySetSkeleton[]>;
    /**
     * Read policy set
     * @param {string} policySetName policy set name
     * @returns {Promise<PolicySetSkeleton>} a promise that resolves to a policy set object
     */
    readPolicySet(policySetName: string): Promise<PolicySetSkeleton>;
    createPolicySet(policySetData: PolicySetSkeleton, policySetName?: string): Promise<PolicySetSkeleton>;
    updatePolicySet(policySetData: PolicySetSkeleton, policySetName?: string): Promise<PolicySetSkeleton>;
    deletePolicySet(policySetName: string): Promise<PolicySetSkeleton>;
    /**
     * Export policy set
     * @param {string} policySetName policy set name
     * @param {PolicySetExportOptions} options export options
     * @returns {Promise<PolicySetExportInterface>} a promise that resolves to an PolicySetExportInterface object
     */
    exportPolicySet(policySetName: string, options?: PolicySetExportOptions): Promise<PolicySetExportInterface>;
    /**
     * Export policy sets
     * @param {PolicySetExportOptions} options export options
     * @returns {Promise<PolicySetExportInterface>} a promise that resolves to an PolicySetExportInterface object
     */
    exportPolicySets(options?: PolicySetExportOptions): Promise<PolicySetExportInterface>;
    /**
     * Import policy set
     * @param {string} policySetName policy set name
     * @param {PolicySetExportInterface} importData import data
     * @param {PolicySetImportOptions} options import options
     */
    importPolicySet(policySetName: string, importData: PolicySetExportInterface, options?: PolicySetImportOptions): Promise<any>;
    /**
     * Import first policy set
     * @param {PolicySetExportInterface} importData import data
     * @param {PolicySetImportOptions} options import options
     */
    importFirstPolicySet(importData: PolicySetExportInterface, options?: PolicySetImportOptions): Promise<any>;
    /**
     * Import policy sets
     * @param {PolicySetExportInterface} importData import data
     * @param {PolicySetImportOptions} options import options
     * @returns {any[]} The imported policy sets
     */
    importPolicySets(importData: PolicySetExportInterface, options?: PolicySetImportOptions): Promise<any[]>;
    /**
     * Get all policy sets
     * @returns {Promise<PolicySetSkeleton[]>} a promise that resolves to an array of policy set objects
     * @deprecated since v2.0.0 use {@link Policy.readPolicySets | readPolicySets} instead
     * ```javascript
     * readPolicySets(): Promise<PolicySetSkeleton[]>
     * ```
     * @group Deprecated
     */
    getPolicySets(): Promise<PolicySetSkeleton[]>;
    /**
     * Get policy set
     * @param {string} policySetName policy set name
     * @returns {Promise<PolicySetSkeleton>} a promise that resolves to a policy set object
     * @deprecated since v2.0.0 use {@link Policy.readPolicySet | readPolicySet} instead
     * ```javascript
     * readPolicySet(policySetName: string): Promise<PolicySetSkeleton>
     * ```
     * @group Deprecated
     */
    getPolicySet(policySetName: string): Promise<PolicySetSkeleton>;
};
declare const _default: (state: State) => PolicySet;
export default _default;
export interface PolicySetExportInterface {
    meta?: ExportMetaData;
    script: Record<string, ScriptSkeleton>;
    resourcetype: Record<string, ResourceTypeSkeleton>;
    policy: Record<string, PolicySkeleton>;
    policyset: Record<string, PolicySetSkeleton>;
}
/**
 * Application/policy set export options
 */
export interface PolicySetExportOptions {
    /**
     * Include any dependencies (policies, scripts, resource types).
     */
    deps: boolean;
    /**
     * Include any prerequisites (policy sets, resource types).
     */
    prereqs: boolean;
    /**
     * Use string arrays to store multi-line text in scripts.
     */
    useStringArrays: boolean;
}
/**
 * Policy set import options
 */
export interface PolicySetImportOptions {
    /**
     * Include any dependencies (policies, scripts, resource types).
     */
    deps: boolean;
    /**
     * Include any prerequisites (policy sets, resource types).
     */
    prereqs: boolean;
}
/**
 * Create an empty export template
 * @returns {PolicySetExportInterface} an empty export template
 */
export declare function createPolicySetExportTemplate({ state, }: {
    state: State;
}): PolicySetExportInterface;
/**
 * Get all policy sets
 * @returns {Promise} a promise that resolves to an array of policy set objects
 */
export declare function readPolicySets({ state, }: {
    state: State;
}): Promise<PolicySetSkeleton[]>;
export declare function readPolicySet({ policySetName, state, }: {
    policySetName: string;
    state: State;
}): Promise<PolicySetSkeleton>;
export declare function createPolicySet({ policySetName, policySetData, state, }: {
    policySetName?: string;
    policySetData: PolicySetSkeleton;
    state: State;
}): Promise<any>;
export declare function updatePolicySet({ policySetName, policySetData, state, }: {
    policySetName?: string;
    policySetData: PolicySetSkeleton;
    state: State;
}): Promise<any>;
export declare function deletePolicySet({ policySetName, state, }: {
    policySetName: string;
    state: State;
}): Promise<any>;
/**
 * Export policy set
 * @param {string} policySetName policy set name
 * @param {PolicySetExportOptions} options export options
 * @returns {Promise<PolicySetExportInterface>} a promise that resolves to an PolicySetExportInterface object
 */
export declare function exportPolicySet({ policySetName, options, state, }: {
    policySetName: string;
    options?: PolicySetExportOptions;
    state: State;
}): Promise<PolicySetExportInterface>;
/**
 * Export policy sets
 * @param {PolicySetExportOptions} options export options
 * @returns {Promise<PolicySetExportInterface>} a promise that resolves to an PolicySetExportInterface object
 */
export declare function exportPolicySets({ options, state, }: {
    options: PolicySetExportOptions;
    state: State;
}): Promise<PolicySetExportInterface>;
/**
 * Import policy set
 * @param {string} policySetName policy set name
 * @param {PolicySetExportInterface} importData import data
 * @param {PolicySetImportOptions} options import options
 */
export declare function importPolicySet({ policySetName, importData, options, state, }: {
    policySetName: string;
    importData: PolicySetExportInterface;
    options?: PolicySetImportOptions;
    state: State;
}): Promise<any>;
/**
 * Import first policy set
 * @param {PolicySetExportInterface} importData import data
 * @param {PolicySetImportOptions} options import options
 */
export declare function importFirstPolicySet({ importData, options, state, }: {
    importData: PolicySetExportInterface;
    options?: PolicySetImportOptions;
    state: State;
}): Promise<any>;
/**
 * Import policy sets
 * @param {PolicySetExportInterface} importData import data
 * @param {PolicySetImportOptions} options import options
 * @returns {any[]} The imported policy sets
 */
export declare function importPolicySets({ importData, options, state, }: {
    importData: PolicySetExportInterface;
    options?: PolicySetImportOptions;
    state: State;
}): Promise<any[]>;
//# sourceMappingURL=PolicySetOps.d.ts.map