import { State } from '../shared/State';
import { type IdObjectSkeletonInterface, type PagedResult } from './ApiTypes';
export type ScriptLanguage = 'GROOVY' | 'JAVASCRIPT';
export type ScriptContext = 'OAUTH2_ACCESS_TOKEN_MODIFICATION' | 'AUTHENTICATION_CLIENT_SIDE' | 'AUTHENTICATION_TREE_DECISION_NODE' | 'AUTHENTICATION_SERVER_SIDE' | 'SOCIAL_IDP_PROFILE_TRANSFORMATION' | 'OAUTH2_VALIDATE_SCOPE' | 'CONFIG_PROVIDER_NODE' | 'OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER' | 'OAUTH2_EVALUATE_SCOPE' | 'POLICY_CONDITION' | 'OIDC_CLAIMS' | 'SAML2_IDP_ADAPTER' | 'SAML2_IDP_ATTRIBUTE_MAPPER' | 'OAUTH2_MAY_ACT' | 'LIBRARY';
export type ScriptSkeleton = IdObjectSkeletonInterface & {
    name: string;
    description: string;
    default: boolean;
    script: string | string[];
    language: ScriptLanguage;
    context: ScriptContext;
    createdBy: string;
    creationDate: number;
    lastModifiedBy: string;
    lastModifiedDate: number;
    exports?: {
        arity?: number;
        id: string;
        type: string;
    }[];
};
export type LibraryScriptConfigSkeleton = IdObjectSkeletonInterface & {
    name: string;
    exports: {
        arity?: number;
        id: string;
        type: string;
    }[];
};
/**
 * Get all scripts
 * @returns {Promise} a promise that resolves to an object containing an array of script objects
 */
export declare function getScripts({ state, }: {
    state: State;
}): Promise<PagedResult<ScriptSkeleton>>;
/**
 * Get script by name
 * @param {String} scriptName script name
 * @returns {Promise<PagedResult<ScriptSkeleton>>} a promise that resolves to an object containing a script object
 */
export declare function getScriptByName({ scriptName, state, }: {
    scriptName: string;
    state: State;
}): Promise<PagedResult<ScriptSkeleton>>;
/**
 * Get script by id
 * @param {String} scriptId script uuid/name
 * @returns {Promise<ScriptSkeleton>} a promise that resolves to a script object
 */
export declare function getScript({ scriptId, state, }: {
    scriptId: string;
    state: State;
}): Promise<ScriptSkeleton>;
/**
 * Get library script config by name
 * @param {String} scriptName script name
 * @returns {Promise<PagedResult<LibraryScriptConfigSkeleton>>} a promise that resolves to an object containing the library script config
 */
export declare function getLibraryScriptConfigByName({ scriptName, state, }: {
    scriptName: string;
    state: State;
}): Promise<PagedResult<LibraryScriptConfigSkeleton>>;
/**
 * Put script
 * @param {string} scriptId script uuid
 * @param {Object} scriptData script object
 * @returns {Promise<ScriptSkeleton>} a promise that resolves to an object containing a script object
 */
export declare function putScript({ scriptId, scriptData, state, }: {
    scriptId: string;
    scriptData: ScriptSkeleton;
    state: State;
}): Promise<ScriptSkeleton>;
/**
 * Delete script by id
 * @param {String} scriptId script uuid
 * @returns {Promise<ScriptSkeleton>} a promise that resolves to a script object
 */
export declare function deleteScript({ scriptId, state, }: {
    scriptId: string;
    state: State;
}): Promise<ScriptSkeleton>;
/**
 * Delete script by name
 * @param {String} scriptId script name
 * @returns {Promise<ScriptSkeleton>} a promise that resolves to a script object
 */
export declare function deleteScriptByName({ scriptName, state, }: {
    scriptName: string;
    state: State;
}): Promise<ScriptSkeleton>;
//# sourceMappingURL=ScriptApi.d.ts.map