import { IdObjectSkeletonInterface } from '../api/ApiTypes';
import { State } from '../shared/State';
import { MappingSkeleton } from './MappingOps';
import { ExportMetaData } from './OpsTypes';
export type Connector = {
    /**
     * Connector type key used to build the IDM id: '<type>/<id>'
     */
    CONNECTOR_TYPE: string;
    /**
     * Create an empty connector export template
     * @returns {ConnectorExportInterface} an empty connector export template
     */
    createConnectorExportTemplate(): ConnectorExportInterface;
    /**
     * Get all connectors
     * @returns {Promise<ConnectorSkeleton[]>} a promise that resolves to an array of connector objects
     */
    readConnectors(): Promise<ConnectorSkeleton[]>;
    /**
     * Get connector
     * @param {string} connectorId id/name of the connector without the type prefix
     * @returns {Promise<ConnectorSkeleton>} a promise that resolves an connector object
     */
    readConnector(connectorId: string): Promise<ConnectorSkeleton>;
    /**
     * Create connector
     * @param {string} connectorId id/name of the connector without the type prefix
     * @param {ConnectorSkeleton} connectorData connector object
     * @returns {Promise<ConnectorSkeleton>} a promise that resolves to an connector object
     */
    createConnector(connectorId: string, connectorData: ConnectorSkeleton): Promise<ConnectorSkeleton>;
    /**
     * Update or create connector
     * @param {string} connectorId id/name of the connector without the type prefix
     * @param {ConnectorSkeleton} connectorData connector object
     * @returns {Promise<ConnectorSkeleton>} a promise that resolves to an connector object
     */
    updateConnector(connectorId: string, connectorData: ConnectorSkeleton): Promise<ConnectorSkeleton>;
    /**
     * Delete all connectors
     * @returns {Promise<ConnectorSkeleton[]>} a promise that resolves to an array of connector objects
     */
    deleteConnectors(): Promise<ConnectorSkeleton[]>;
    /**
     * Delete connector
     * @param {string} connectorId id/name of the connector without the type prefix
     * @returns {Promise<ConnectorSkeleton>} a promise that resolves an connector object
     */
    deleteConnector(connectorId: string): Promise<ConnectorSkeleton>;
    /**
     * Export connector
     * @param {string} connectorId id/name of the connector without the type prefix
     * @param {ConnectorExportOptions} options export options
     * @returns {Promise<ConnectorExportInterface>} a promise that resolves to a ConnectorExportInterface object
     */
    exportConnector(connectorId: string, options?: ConnectorExportOptions): Promise<ConnectorExportInterface>;
    /**
     * Export all connectors
     * @returns {Promise<ConnectorExportInterface>} a promise that resolves to a ConnectorExportInterface object
     */
    exportConnectors(): Promise<ConnectorExportInterface>;
    /**
     * Import connector
     * @param {string} connectorId id/name of the connector without the type prefix
     * @param {ConnectorExportInterface} importData import data
     * @param {ConnectorImportOptions} options import options
     * @returns {Promise<ConnectorSkeleton>} a promise resolving to a ConnectorSkeleton object
     */
    importConnector(connectorId: string, importData: ConnectorExportInterface, options?: ConnectorImportOptions): Promise<ConnectorSkeleton>;
    /**
     * Import first connector
     * @param {ConnectorExportInterface} importData import data
     * @param {ConnectorImportOptions} options import options
     * @returns {Promise<ConnectorSkeleton>} a promise resolving to a ConnectorSkeleton object
     */
    importFirstConnector(importData: ConnectorExportInterface, options?: ConnectorImportOptions): Promise<ConnectorSkeleton>;
    /**
     * Import all connectors
     * @param {ConnectorExportInterface} importData import data
     * @param {ConnectorImportOptions} options import options
     * @returns {Promise<ConnectorSkeleton[]>} a promise resolving to an array of ConnectorSkeleton objects
     */
    importConnectors(importData: ConnectorExportInterface, options?: ConnectorImportOptions): Promise<ConnectorSkeleton[]>;
};
declare const _default: (state: State) => Connector;
export default _default;
/**
 * Connector type key used to build the IDM id: '\<type>/\<id>'
 */
export declare const CONNECTOR_TYPE = "provisioner.openicf";
export type ObjectPropertyFlag = 'NOT_CREATABLE' | 'NOT_READABLE' | 'NOT_RETURNED_BY_DEFAULT' | 'NOT_UPDATEABLE';
export type ObjectPropertyType = 'array' | 'boolean' | 'string';
export type ObjectPropertyNativeType = 'array' | 'boolean' | 'string' | 'JAVA_TYPE_BIGDECIMAL' | 'JAVA_TYPE_BIGINTEGER' | 'JAVA_TYPE_BYTE' | 'JAVA_TYPE_BYTE_ARRAY' | 'JAVA_TYPE_CHAR' | 'JAVA_TYPE_CHARACTER' | 'JAVA_TYPE_DATE' | 'JAVA_TYPE_DOUBLE' | 'JAVA_TYPE_FILE' | 'JAVA_TYPE_FLOAT' | 'JAVA_TYPE_GUARDEDBYTEARRAY' | 'JAVA_TYPE_GUARDEDSTRING' | 'JAVA_TYPE_INT' | 'JAVA_TYPE_INTEGER' | 'JAVA_TYPE_LONG' | 'JAVA_TYPE_OBJECT' | 'JAVA_TYPE_PRIMITIVE_BOOLEAN' | 'JAVA_TYPE_PRIMITIVE_BYTE' | 'JAVA_TYPE_PRIMITIVE_DOUBLE' | 'JAVA_TYPE_PRIMITIVE_FLOAT' | 'JAVA_TYPE_PRIMITIVE_LONG' | 'JAVA_TYPE_STRING';
export type ObjectPropertySkeleton = {
    flags?: ObjectPropertyFlag[];
    nativeName: string;
    nativeType: ObjectPropertyNativeType;
    type: ObjectPropertyType;
    runAsUser?: boolean;
    required?: boolean;
    items?: {
        nativeType: ObjectPropertyNativeType;
        type: ObjectPropertyType;
    };
};
export type ObjectTypeSkeleton = {
    $schema: string;
    id: string;
    nativeType: string;
    properties: Record<string, ObjectPropertySkeleton>;
    type: 'object';
};
export type ConnectorSkeleton = IdObjectSkeletonInterface & {
    configurationProperties: any;
    connectorRef: {
        bundleName: string;
        bundleVersion: string;
        connectorHostRef: string;
        connectorName: string;
        displayName: string;
        systemType: 'provisioner.openicf';
    };
    enabled: boolean;
    objectTypes: Record<string, ObjectTypeSkeleton>;
};
/**
 * Connector export options
 */
export interface ConnectorExportOptions {
    /**
     * Use string arrays to store multi-line text in scripts.
     */
    useStringArrays: boolean;
    /**
     * Include any dependencies (mappings).
     */
    deps: boolean;
}
/**
 * Connector import options
 */
export interface ConnectorImportOptions {
    /**
     * Include any dependencies (mappings).
     */
    deps: boolean;
}
export interface ConnectorExportInterface {
    meta?: ExportMetaData;
    connector: Record<string, ConnectorSkeleton>;
    mapping?: Record<string, MappingSkeleton>;
}
export declare function createConnectorExportTemplate({ state, }: {
    state: State;
}): ConnectorExportInterface;
/**
 * Get all connectors
 * @returns {Promise<ConnectorSkeleton[]>} a promise that resolves to an array of connector objects
 */
export declare function readConnectors({ state, }: {
    state: State;
}): Promise<ConnectorSkeleton[]>;
/**
 * Get connector
 * @param {string} connectorId id/name of the connector without the type prefix
 * @returns {Promise<ConnectorSkeleton>} a promise that resolves an connector object
 */
export declare function readConnector({ connectorId, state, }: {
    connectorId: string;
    state: State;
}): Promise<ConnectorSkeleton>;
/**
 * Create connector
 * @param {string} connectorId id/name of the connector without the type prefix
 * @param {ConnectorSkeleton} connectorData connector object
 * @returns {Promise<ConnectorSkeleton>} a promise that resolves to an connector object
 */
export declare function createConnector({ connectorId, connectorData, state, }: {
    connectorId: string;
    connectorData: ConnectorSkeleton;
    state: State;
}): Promise<ConnectorSkeleton>;
/**
 * Update or create connector
 * @param {string} connectorId id/name of the connector without the type prefix
 * @param {ConnectorSkeleton} connectorData connector object
 * @returns {Promise<ConnectorSkeleton>} a promise that resolves to an connector object
 */
export declare function updateConnector({ connectorId, connectorData, state, }: {
    connectorId: string;
    connectorData: ConnectorSkeleton;
    state: State;
}): Promise<ConnectorSkeleton>;
/**
 * Delete all connectors
 * @returns {Promise<ConnectorSkeleton[]>} a promise that resolves to an array of connector objects
 */
export declare function deleteConnectors({ state, }: {
    state: State;
}): Promise<ConnectorSkeleton[]>;
/**
 * Delete connector
 * @param {string} connectorId id/name of the connector without the type prefix
 * @returns {Promise<ConnectorSkeleton>} a promise that resolves an connector object
 */
export declare function deleteConnector({ connectorId, state, }: {
    connectorId: string;
    state: State;
}): Promise<ConnectorSkeleton>;
/**
 * Export connector
 * @param {string} connectorId id/name of the connector without the type prefix
 * @returns {Promise<ConnectorExportInterface>} a promise that resolves to a ConnectorExportInterface object
 */
export declare function exportConnector({ connectorId, options, state, }: {
    connectorId: string;
    options?: ConnectorExportOptions;
    state: State;
}): Promise<ConnectorExportInterface>;
/**
 * Export all connectors
 * @returns {Promise<ConnectorExportInterface>} a promise that resolves to a ConnectorExportInterface object
 */
export declare function exportConnectors({ state, }: {
    state: State;
}): Promise<ConnectorExportInterface>;
/**
 * Import connector
 * @param {string} connectorId id/name of the connector without the type prefix
 * @param {ConnectorExportInterface} importData import data
 * @param {ConnectorImportOptions} options import options
 * @returns {Promise<ConnectorSkeleton>} a promise resolving to a ConnectorSkeleton object
 */
export declare function importConnector({ connectorId, importData, options, state, }: {
    connectorId: string;
    importData: ConnectorExportInterface;
    options?: ConnectorImportOptions;
    state: State;
}): Promise<ConnectorSkeleton>;
/**
 * Import first connector
 * @param {ConnectorExportInterface} importData import data
 * @param {ConnectorImportOptions} options import options
 * @returns {Promise<ConnectorSkeleton>} a promise resolving to a ConnectorSkeleton object
 */
export declare function importFirstConnector({ importData, options, state, }: {
    importData: ConnectorExportInterface;
    options?: ConnectorImportOptions;
    state: State;
}): Promise<ConnectorSkeleton>;
/**
 * Import all connectors
 * @param {ConnectorExportInterface} importData import data
 * @param {ConnectorImportOptions} options import options
 * @returns {Promise<ConnectorSkeleton[]>} a promise resolving to an array of ConnectorSkeleton objects
 */
export declare function importConnectors({ importData, options, state, }: {
    importData: ConnectorExportInterface;
    options?: ConnectorImportOptions;
    state: State;
}): Promise<ConnectorSkeleton[]>;
//# sourceMappingURL=ConnectorOps.d.ts.map