import { State } from '../../shared/State';
import { IdObjectSkeletonInterface, PagedResult } from '../ApiTypes';
/**
 * Secret encoding
 *
 * @summary
 * You can use the encoding parameter to set an encoding format when you create an ESV secret.
 * You can only choose an encoding format using the API. The UI currently creates secrets only
 * with the generic encoding format.
 *
 * @see
 * {@link https://backstage.forgerock.com/docs/idcloud/latest/tenants/esvs.html#encoding_format | ForgeRock Documentation}
 */
export type SecretEncodingType = 'generic' | 'pem' | 'base64hmac' | 'base64aes';
/**
 * Secret object skeleton
 */
export type SecretSkeleton = IdObjectSkeletonInterface & {
    description: string;
    encoding: SecretEncodingType;
    lastChangedBy?: string;
    lastChangeDate?: string;
    useInPlaceholders: boolean;
    loaded?: boolean;
    loadedVersion?: string;
    activeVersion?: string;
    activeValue?: any;
};
export type VersionOfSecretStatus = 'DISABLED' | 'ENABLED' | 'DESTROYED';
/**
 * Secret version skeleton
 */
export type VersionOfSecretSkeleton = IdObjectSkeletonInterface & {
    /**
     * Base64-encoded value. Only used when creating a new version of a secret
     */
    valueBase64?: string;
    /**
     * Version string. Returned when reading a version of a secret
     */
    version?: string;
    /**
     * Date string. Returned when reading a version of a secret
     */
    createDate?: string;
    /**
     * True if loaded, false otherwise. Returned when reading a version of a secret
     */
    loaded?: boolean;
    /**
     * Status string. Returned when reading a version of a secret
     */
    status?: VersionOfSecretStatus;
};
/**
 * Get all secrets
 * @returns {Promise<PagedResult<SecretSkeleton>>} a promise that resolves to an array of secrets
 */
export declare function getSecrets({ state, }: {
    state: State;
}): Promise<PagedResult<SecretSkeleton>>;
/**
 * Get secret
 * @param secretId secret id/name
 * @returns {Promise<SecretSkeleton>} a promise that resolves to a secret
 */
export declare function getSecret({ secretId, state, }: {
    secretId: string;
    state: State;
}): Promise<SecretSkeleton>;
/**
 * Create secret
 * @param {string} secretId secret id/name
 * @param {string} value secret value
 * @param {string} description secret description
 * @param {string} encoding secret encoding (only `generic` is supported)
 * @param {boolean} useInPlaceholders flag indicating if the secret can be used in placeholders
 * @returns {Promise<SecretSkeleton>} a promise that resolves to a secret
 */
export declare function putSecret({ secretId, value, description, encoding, useInPlaceholders, state, }: {
    secretId: string;
    value: string;
    description: string;
    encoding?: string;
    useInPlaceholders?: boolean;
    state: State;
}): Promise<SecretSkeleton>;
/**
 * Set secret description
 * @param {string} secretId secret id/name
 * @param {string} description secret description
 * @returns {Promise<any>} a promise that resolves to an empty string
 */
export declare function setSecretDescription({ secretId, description, state, }: {
    secretId: string;
    description: string;
    state: State;
}): Promise<any>;
/**
 * Delete secret
 * @param {string} secretId secret id/name
 * @returns {Promise<unknown>} a promise that resolves to a secret object
 */
export declare function deleteSecret({ secretId, state, }: {
    secretId: string;
    state: State;
}): Promise<any>;
/**
 * Get secret versions
 * @param {string} secretId secret id/name
 * @returns {Promise<VersionOfSecretSkeleton[]>} a promise that resolves to an array of secret versions
 */
export declare function getSecretVersions({ secretId, state, }: {
    secretId: string;
    state: State;
}): Promise<VersionOfSecretSkeleton[]>;
/**
 * Create new secret version
 * @param {string} secretId secret id/name
 * @param {string} value secret value
 * @returns {Promise<VersionOfSecretSkeleton>} a promise that resolves to a version object
 */
export declare function createNewVersionOfSecret({ secretId, value, state, }: {
    secretId: string;
    value: string;
    state: State;
}): Promise<VersionOfSecretSkeleton>;
/**
 * Get version of secret
 * @param {string} secretId secret id/name
 * @param {string} version secret version
 * @returns {Promise<VersionOfSecretSkeleton>} a promise that resolves to a version object
 */
export declare function getVersionOfSecret({ secretId, version, state, }: {
    secretId: string;
    version: string;
    state: State;
}): Promise<VersionOfSecretSkeleton>;
/**
 * Update the status of a version of a secret
 * @param {string} secretId secret id/name
 * @param {string} version secret version
 * @param {VersionOfSecretStatus} status status
 * @returns {Promise<VersionOfSecretSkeleton>} a promise that resolves to a status object
 */
export declare function setStatusOfVersionOfSecret({ secretId, version, status, state, }: {
    secretId: string;
    version: string;
    status: VersionOfSecretStatus;
    state: State;
}): Promise<VersionOfSecretSkeleton>;
/**
 * Delete version of secret
 * @param {string} secretId secret id/name
 * @param {string} version secret version
 * @returns {Promise<VersionOfSecretSkeleton>} a promise that resolves to a version object
 */
export declare function deleteVersionOfSecret({ secretId, version, state, }: {
    secretId: string;
    version: string;
    state: State;
}): Promise<VersionOfSecretSkeleton>;
//# sourceMappingURL=SecretsApi.d.ts.map