import { IdObjectSkeletonInterface, PagedResult } from '../api/ApiTypes';
import { ConnectorServerStatusInterface, SystemObjectPatchOperationInterface, SystemStatusInterface } from '../api/IdmSystemApi';
import { State } from '../shared/State';
import { ObjectTypeSkeleton } from './ConnectorOps';
export type IdmSystem = {
    /**
     * Test connector servers
     * @returns {Promise<ConnectorServerStatusInterface[]>} a promise that resolves to an array of ConnectorServerStatusInterface objects
     */
    testConnectorServers(): Promise<ConnectorServerStatusInterface[]>;
    /**
     * Read available systems/connectors status
     * @returns {Promise<SystemStatusInterface[]>} a promise resolving to an array of system status objects
     */
    readAvailableSystems(): Promise<SystemStatusInterface[]>;
    /**
     * Read system/connector status
     * @returns {Promise<SystemStatusInterface>} a promise resolving to a system status object
     */
    readSystemStatus(systemName: string): Promise<SystemStatusInterface>;
    /**
     * Authenticate a system object using username and password (pass-through authentication)
     * @param {string} systemName name of system/connector
     * @param {string} systemObjectType type of system object
     * @param {string} username system object username
     * @param {string} password system object password
     * @returns {Promise<IdObjectSkeletonInterface>} a promise resolving to an IdObjectSkeletonInterface object containing only the _id
     */
    authenticateSystemObject(systemName: string, systemObjectType: string, username: string, password: string): Promise<IdObjectSkeletonInterface>;
    /**
     * Run system script
     * @param {string} systemName name of system/connector
     * @param {string} scriptName name of script
     * @returns {Promise<any>} a promise resolving to a status object
     */
    runSystemScript(systemName: string, scriptName: string): Promise<any>;
    /**
     * Query all system object ids
     * @param {string} systemName name of system/connector
     * @param {string} systemObjectType type of system object
     * @param {number} pageSize page size (default value: 1000)
     * @param {string} pageCookie paged results cookie
     * @returns {Promise<PagedResult<IdObjectSkeletonInterface>>} a promise resolving to an array of IdObjectSkeletonInterface objects
     */
    queryAllSystemObjectIds(systemName: string, systemObjectType: string, pageSize?: number, pageCookie?: string): Promise<PagedResult<IdObjectSkeletonInterface>>;
    /**
     * Query system objects using a search filter
     * @param {string} systemName name of system/connector
     * @param {string} systemObjectType type of system object
     * @param {string} filter search filter
     * @param {string[]} fields array of fields to return
     * @param {number} pageSize page size (default value: 1000)
     * @param {string} pageCookie paged results cookie
     * @returns {Promise<PagedResult<IdObjectSkeletonInterface>>} a promise resolving to an array of IdObjectSkeletonInterface objects
     */
    querySystemObjects(systemName: string, systemObjectType: string, filter: string, fields?: string[], pageSize?: number, pageCookie?: string): Promise<PagedResult<IdObjectSkeletonInterface>>;
    /**
     * Read system object
     * @param {string} systemName name of system/connector
     * @param {string} systemObjectType type of system object
     * @param {string} systemObjectId id of system object
     * @param {string[]} fields array of fields to return (default: `['*']`)
     * @returns {Promise<IdObjectSkeletonInterface>} a promise resolving to an IdObjectSkeletonInterface object
     */
    readSystemObject(systemName: string, systemObjectType: string, systemObjectId: string, fields?: string[]): Promise<IdObjectSkeletonInterface>;
    /**
     * Create system object
     * @param {string} systemName name of system/connector
     * @param {string} systemObjectType type of system object
     * @param {IdObjectSkeletonInterface} systemObjectData system object data
     * @returns {Promise<IdObjectSkeletonInterface>} a promise resolving to an IdObjectSkeletonInterface object
     */
    createSystemObject(systemName: string, systemObjectType: string, systemObjectData: IdObjectSkeletonInterface): Promise<IdObjectSkeletonInterface>;
    /**
     * Update or create system object
     * @param {string} systemName name of system/connector
     * @param {string} systemObjectType type of system object
     * @param {string} systemObjectId id of system object
     * @param {IdObjectSkeletonInterface} systemObjectData system object data
     * @param {boolean} failIfExists fail if object exists (default value: false)
     * @returns {Promise<IdObjectSkeletonInterface>} a promise resolving to an IdObjectSkeletonInterface object
     */
    updateSystemObject(systemName: string, systemObjectType: string, systemObjectId: string, systemObjectData: IdObjectSkeletonInterface, failIfExists?: boolean): Promise<IdObjectSkeletonInterface>;
    /**
     * Partially update system object through a collection of patch operations.
     * @param {string} systemName name of system/connector
     * @param {string} systemObjectType type of system object
     * @param {string} systemObjectId id of system object
     * @param {SystemObjectPatchOperationInterface[]} operations collection of patch operations to perform on the object
     * @returns {Promise<IdObjectSkeletonInterface>} a promise resolving to an IdObjectSkeletonInterface object
     */
    updateSystemObjectProperties(systemName: string, systemObjectType: string, systemObjectId: string, operations: SystemObjectPatchOperationInterface[]): Promise<IdObjectSkeletonInterface>;
    /**
     * Delete system object
     * @param {string} systemName name of system/connector
     * @param {string} systemObjectType type of system object
     * @param {string} systemObjectId id of system object
     * @returns {Promise<IdObjectSkeletonInterface>} a promise resolving to an IdObjectSkeletonInterface object
     */
    deleteSystemObject(systemName: string, systemObjectType: string, systemObjectId: string): Promise<IdObjectSkeletonInterface>;
    /**
     * Read system schema
     * @param {string} systemName name of system/connector
     * @returns {Promise<Record<string, ObjectTypeSkeleton>>} a promise resolving to a map of Record<string, ObjectTypeSkeleton>
     */
    readSystemSchema(systemName: string): Promise<Record<string, ObjectTypeSkeleton>>;
};
declare const _default: (state: State) => IdmSystem;
export default _default;
/**
 * Test connector servers
 * @returns {Promise<ConnectorServerStatusInterface[]>} a promise that resolves to an array of ConnectorServerStatusInterface objects
 */
export declare function testConnectorServers({ state, }: {
    state: State;
}): Promise<ConnectorServerStatusInterface[]>;
export declare function readAvailableSystems({ state, }: {
    state: State;
}): Promise<SystemStatusInterface[]>;
export declare function readSystemStatus({ systemName, state, }: {
    systemName: string;
    state: State;
}): Promise<SystemStatusInterface>;
export declare function authenticateSystemObject({ systemName, systemObjectType, username, password, state, }: {
    systemName: string;
    systemObjectType: string;
    username: string;
    password: string;
    state: State;
}): Promise<IdObjectSkeletonInterface>;
export declare function runSystemScript({ systemName, scriptName, state, }: {
    systemName: string;
    scriptName: string;
    state: State;
}): Promise<any>;
export declare function queryAllSystemObjectIds({ systemName, systemObjectType, pageSize, pageCookie, state, }: {
    systemName: string;
    systemObjectType: string;
    pageSize?: number;
    pageCookie?: string;
    state: State;
}): Promise<PagedResult<IdObjectSkeletonInterface>>;
export declare function querySystemObjects({ systemName, systemObjectType, filter, fields, pageSize, pageCookie, state, }: {
    systemName: string;
    systemObjectType: string;
    filter: string;
    fields?: string[];
    pageSize?: number;
    pageCookie?: string;
    state: State;
}): Promise<PagedResult<IdObjectSkeletonInterface>>;
export declare function readSystemObject({ systemName, systemObjectType, systemObjectId, fields, state, }: {
    systemName: string;
    systemObjectType: string;
    systemObjectId: string;
    fields?: string[];
    state: State;
}): Promise<IdObjectSkeletonInterface>;
export declare function createSystemObject({ systemName, systemObjectType, systemObjectData, state, }: {
    systemName: string;
    systemObjectType: string;
    systemObjectData: IdObjectSkeletonInterface;
    state: State;
}): Promise<IdObjectSkeletonInterface>;
export declare function updateSystemObject({ systemName, systemObjectType, systemObjectId, systemObjectData, failIfExists, state, }: {
    systemName: string;
    systemObjectType: string;
    systemObjectId: string;
    systemObjectData: IdObjectSkeletonInterface;
    failIfExists?: boolean;
    state: State;
}): Promise<IdObjectSkeletonInterface>;
export declare function updateSystemObjectProperties({ systemName, systemObjectType, systemObjectId, operations, state, }: {
    systemName: string;
    systemObjectType: string;
    systemObjectId: string;
    operations: SystemObjectPatchOperationInterface[];
    state: State;
}): Promise<IdObjectSkeletonInterface>;
export declare function deleteSystemObject({ systemName, systemObjectType, systemObjectId, state, }: {
    systemName: string;
    systemObjectType: string;
    systemObjectId: string;
    state: State;
}): Promise<IdObjectSkeletonInterface>;
export declare function readSystemSchema({ systemName, state, }: {
    systemName: string;
    state: State;
}): Promise<Record<string, ObjectTypeSkeleton>>;
//# sourceMappingURL=IdmSystemOps.d.ts.map