import { type IdObjectSkeletonInterface } from '../api/ApiTypes';
import { State } from '../shared/State';
import { type ExportMetaData } from './OpsTypes';
export type InternalRole = {
    /**
     * Create an empty internal role export template
     * @returns {InternalRoleExportInterface} an empty internal role export template
     */
    createInternalRoleExportTemplate(): InternalRoleExportInterface;
    /**
     * Create internal role
     * @param {InternalRoleSkeleton} roleData internal role data
     * @returns {Promise<InternalRoleSkeleton>} a promise that resolves to an internal role object
     */
    createInternalRole(roleData: InternalRoleSkeleton): Promise<InternalRoleSkeleton>;
    /**
     * Read internal role
     * @param {string} roleId internal role uuid
     * @returns {Promise<InternalRoleSkeleton>} a promise that resolves to an internal role object
     */
    readInternalRole(roleId: string): Promise<InternalRoleSkeleton>;
    /**
     * Read internal role by name
     * @param {string} roleName internal role name
     * @returns {Promise<InternalRoleSkeleton>} a promise that resolves to an internal role object
     */
    readInternalRoleByName(roleName: string): Promise<InternalRoleSkeleton>;
    /**
     * Read all internal roles. Results are sorted aphabetically.
     * @returns {Promise<InternalRoleSkeleton[]>} a promise that resolves to an array of internal role objects
     */
    readInternalRoles(): Promise<InternalRoleSkeleton[]>;
    /**
     * Update internal role
     * @param {string} roleId internal role uuid
     * @param {InternalRoleSkeleton} roleData internal role data
     * @returns {Promise<InternalRoleSkeleton>} a promise that resolves to an internal role object
     */
    updateInternalRole(roleId: string, roleData: InternalRoleSkeleton): Promise<InternalRoleSkeleton>;
    /**
     * Delete internal role
     * @param {string} roleId internal role uuid
     * @returns {Promise<InternalRoleSkeleton>} a promise that resolves to an internal role object
     */
    deleteInternalRole(roleId: string): Promise<InternalRoleSkeleton>;
    /**
     * Delete internal role by name
     * @param {string} roleName internal role name
     * @returns {Promise<InternalRoleSkeleton>} a promise that resolves to an internal role object
     */
    deleteInternalRoleByName(roleName: string): Promise<InternalRoleSkeleton>;
    /**
     * Delete all internal roles
     * @returns {Promise<InternalRoleSkeleton[]>} a promise that resolves to an array of internal role objects
     */
    deleteInternalRoles(): Promise<InternalRoleSkeleton[]>;
    /**
     * Query internal roles
     * @param filter CREST search filter
     * @param fields array of fields to return
     */
    queryInternalRoles(filter: string, fields?: string[]): Promise<InternalRoleSkeleton[]>;
    /**
     * Export internal role. The response can be saved to file as is.
     * @param {string} roleId internal role uuid
     * @returns {Promise<InternalRoleExportInterface} Promise resolving to an InternalRoleExportInterface object.
     */
    exportInternalRole(roleId: string): Promise<InternalRoleExportInterface>;
    /**
     * Export internal role by name. The response can be saved to file as is.
     * @param {string} roleName internal role name
     * @returns {Promise<InternalRoleExportInterface} Promise resolving to an InternalRoleExportInterface object.
     */
    exportInternalRoleByName(roleName: string): Promise<InternalRoleExportInterface>;
    /**
     * Export all internal roles. The response can be saved to file as is.
     * @returns {Promise<InternalRoleExportInterface>} Promise resolving to an InternalRoleExportInterface object.
     */
    exportInternalRoles(): Promise<InternalRoleExportInterface>;
    /**
     * Import internal role. The import data is usually read from an internal role export file.
     * @param {string} roleId internal role uuid
     * @param {InternalRoleExportInterface} importData internal role import data.
     * @returns {Promise<InternalRoleSkeleton>} Promise resolving to an internal role object.
     */
    importInternalRole(roleId: string, importData: InternalRoleExportInterface): Promise<InternalRoleSkeleton>;
    /**
     * Import internal role by name. The import data is usually read from an internal role export file.
     * @param {string} roleName internal role name
     * @param {InternalRoleExportInterface} importData internal role import data.
     * @returns {Promise<InternalRoleSkeleton>} Promise resolving to an internal role object.
     */
    importInternalRoleByName(roleName: string, importData: InternalRoleExportInterface): Promise<InternalRoleSkeleton>;
    /**
     * Import first internal role. The import data is usually read from an internal role export file.
     * @param {InternalRoleExportInterface} importData internal role import data.
     */
    importFirstInternalRole(importData: InternalRoleExportInterface): Promise<InternalRoleSkeleton[]>;
    /**
     * Import internal roles. The import data is usually read from an internal role export file.
     * @param {InternalRoleExportInterface} importData internal role import data.
     */
    importInternalRoles(importData: InternalRoleExportInterface): Promise<InternalRoleSkeleton[]>;
};
declare const _default: (state: State) => InternalRole;
export default _default;
export type InternalRoleSkeleton = IdObjectSkeletonInterface & {
    condition: string;
    description: string;
    name: string;
    privileges: {
        accessFlags: {
            attribute: string;
            readOnly: boolean;
        }[];
        actions: string[];
        filter: string;
        name: string;
        path: string;
        permissions: string[];
    }[];
    temporalConstraints: {
        duration: string;
    }[];
};
/**
 * Export format for internal roles
 */
export interface InternalRoleExportInterface {
    /**
     * Metadata
     */
    meta?: ExportMetaData;
    /**
     * Internal roles
     */
    internalRole: Record<string, InternalRoleSkeleton>;
}
export declare function createInternalRoleExportTemplate({ state, }: {
    state: State;
}): InternalRoleExportInterface;
export declare function createInternalRole({ roleData, state, }: {
    roleData: InternalRoleSkeleton;
    state: State;
}): Promise<InternalRoleSkeleton>;
export declare function readInternalRole({ roleId, fields, state, }: {
    roleId: string;
    fields?: string[];
    state: State;
}): Promise<InternalRoleSkeleton>;
export declare function readInternalRoleByName({ roleName, fields, state, }: {
    roleName: string;
    fields?: string[];
    state: State;
}): Promise<InternalRoleSkeleton>;
export declare function readInternalRoles({ fields, state, }: {
    fields?: string[];
    state: State;
}): Promise<InternalRoleSkeleton[]>;
export declare function updateInternalRole({ roleId, roleData, state, }: {
    roleId: string;
    roleData: InternalRoleSkeleton;
    state: State;
}): Promise<InternalRoleSkeleton>;
export declare function deleteInternalRole({ roleId, state, }: {
    roleId: string;
    state: State;
}): Promise<InternalRoleSkeleton>;
export declare function deleteInternalRoleByName({ roleName, state, }: {
    roleName: string;
    state: State;
}): Promise<InternalRoleSkeleton>;
export declare function deleteInternalRoles({ state, }: {
    state: State;
}): Promise<InternalRoleSkeleton[]>;
export declare function queryInternalRoles({ filter, fields, state, }: {
    filter: string;
    fields?: string[];
    state: State;
}): Promise<InternalRoleSkeleton[]>;
export declare function exportInternalRole({ roleId, state, }: {
    roleId: string;
    state: State;
}): Promise<InternalRoleExportInterface>;
export declare function exportInternalRoleByName({ roleName, state, }: {
    roleName: string;
    state: State;
}): Promise<InternalRoleExportInterface>;
export declare function exportInternalRoles({ state, }: {
    state: State;
}): Promise<InternalRoleExportInterface>;
/**
 * Import internal role
 * @param {string} clientId client id
 * @param {InternalRoleExportInterface} importData import data
 * @returns {Promise<InternalRoleSkeleton>} a promise resolving to an oauth2 client
 */
export declare function importInternalRole({ roleId, importData, state, }: {
    roleId: string;
    importData: InternalRoleExportInterface;
    state: State;
}): Promise<InternalRoleSkeleton>;
/**
 * Import internal role
 * @param {string} clientId client id
 * @param {InternalRoleExportInterface} importData import data
 * @returns {Promise<InternalRoleSkeleton>} a promise resolving to an oauth2 client
 */
export declare function importInternalRoleByName({ roleName: roleName, importData, state, }: {
    roleName: string;
    importData: InternalRoleExportInterface;
    state: State;
}): Promise<InternalRoleSkeleton>;
/**
 * Import first internal role
 * @param {InternalRoleExportInterface} importData import data
 * @returns {Promise<InternalRoleSkeleton[]>} a promise resolving to an array of oauth2 clients
 */
export declare function importFirstInternalRole({ importData, state, }: {
    importData: InternalRoleExportInterface;
    state: State;
}): Promise<InternalRoleSkeleton>;
/**
 * Import internal roles
 * @param {InternalRoleExportInterface} importData import data
 * @returns {Promise<InternalRoleSkeleton[]>} a promise resolving to an array of oauth2 clients
 */
export declare function importInternalRoles({ importData, state, }: {
    importData: InternalRoleExportInterface;
    state: State;
}): Promise<InternalRoleSkeleton[]>;
//# sourceMappingURL=InternalRoleOps.d.ts.map