import { State } from '../../shared/State';
import { IdObjectSkeletonInterface, PagedResult } from '../ApiTypes';
/**
 * Variable types
 *
 * @summary
 * You can use the expressionType parameter to set a type when you create an ESV variable.
 * This lets Identity Cloud correctly transform the value of the ESV
 * to match the configuration property type when substituting it into configuration.
 *
 * The type is set when the ESV is created, and cannot be modified after creation.
 * If you do not specify a type, it will default to string.
 *
 * Before the expressionType parameter was introduced, it was only possible to set types
 * from within configuration, using expression level syntax; for example,
 * {"$int": "&{esv.journey.ldap.port|1389}"}.
 * The expressionType parameter supplements this expression level syntax and allows the
 * ESV type to be identified without inspecting configuration.
 *
 * @see
 * {@link https://backstage.forgerock.com/docs/idcloud/latest/tenants/esvs.html#variable_types | ForgeRock Documentation}
 */
export type VariableExpressionType = 'array' | 'base64encodedinlined' | 'bool' | 'int' | 'keyvaluelist' | 'list' | 'number' | 'object' | 'string';
/**
 * Variable object skeleton
 */
export type VariableSkeleton = IdObjectSkeletonInterface & {
    valueBase64?: string;
    value?: string;
    description?: string;
    loaded?: boolean;
    lastChangedBy?: string;
    lastChangeDate?: string;
    expressionType?: VariableExpressionType;
};
/**
 * Get all variables
 * @returns {Promise<PagedResult<VariableSkeleton>>} a promise that resolves to an array of variable objects
 */
export declare function getVariables({ state, }: {
    state: State;
}): Promise<PagedResult<VariableSkeleton>>;
/**
 * Get variable by id/name
 * @param {string} variableId variable id/name
 * @returns {Promise<VariableSkeleton>} a promise that resolves to a variable object
 */
export declare function getVariable({ variableId, state, }: {
    variableId: string;
    state: State;
}): Promise<VariableSkeleton>;
/**
 * Create or update variable by id/name
 * @param {string} variableId variable id/name
 * @param {string} valueBase64 base64-encoded variable value
 * @param {string} description variable description
 * @returns {Promise<unknown>} a promise that resolves to a variable object
 */
export declare function putVariable({ variableId, valueBase64, description, expressionType, state, }: {
    variableId: string;
    valueBase64: string;
    description?: string;
    expressionType?: VariableExpressionType;
    state: State;
}): Promise<VariableSkeleton>;
/**
 * Set variable description
 * @param {string} variableId variable id/name
 * @param {string} description variable description
 * @returns {Promise<any>} a promise that resolves to an empty string.
 */
export declare function setVariableDescription({ variableId, description, state, }: {
    variableId: string;
    description: string;
    state: State;
}): Promise<any>;
/**
 * Delete variable by id/name
 * @param {string} variableId variable id/name
 * @returns {Promise<VariableSkeleton>} a promise that resolves to a variable object
 */
export declare function deleteVariable({ variableId, state, }: {
    variableId: string;
    state: State;
}): Promise<VariableSkeleton>;
//# sourceMappingURL=VariablesApi.d.ts.map