import { type Saml2ProiderLocation, type Saml2ProviderSkeleton, type Saml2ProviderStub } from '../api/Saml2Api';
import { type ScriptSkeleton } from '../api/ScriptApi';
import { State } from '../shared/State';
import { type ExportMetaData } from './OpsTypes';
export type Saml2 = {
    /**
     * Read all SAML2 entity provider stubs
     * @returns {Promise<Saml2ProviderStub[]>} a promise that resolves to an array of saml2 entity stubs
     */
    readSaml2ProviderStubs(): Promise<Saml2ProviderStub[]>;
    /**
     *
     * @param {string} entityId Provider entity id
     * @returns {Promise<Saml2ProviderStub>} Promise resolving to a Saml2ExportInterface object.
     */
    readSaml2ProviderStub(entityId: string): Promise<Saml2ProviderStub>;
    /**
     * Export a single entity provider. The response can be saved to file as is.
     * @param {string} entityId Provider entity id
     * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.
     */
    readSaml2Provider(entityId: string): Promise<Saml2ProviderSkeleton>;
    /**
     * Create a SAML2 entity provider
     * @param {Saml2ProiderLocation} location 'hosted' or 'remote'
     * @param {Saml2ProviderSkeleton} providerData Object representing a SAML entity provider
     * @param {string} metaData Base64-encoded metadata XML. Only required for remote providers
     * @returns {Promise<Saml2ProviderSkeleton>} a promise that resolves to a saml2 entity provider object
     */
    createSaml2Provider(location: Saml2ProiderLocation, providerData: Saml2ProviderSkeleton, metaData: string): Promise<Saml2ProviderSkeleton>;
    /**
     * Update SAML2 entity provider
     * @param {Saml2ProiderLocation} location Entity provider location (hosted or remote)
     * @param {string} entityId SAML2 entity id
     * @param {Saml2ProviderSkeleton} providerData Object representing a SAML entity provider
     * @returns {Promise<Saml2ProviderSkeleton>} a promise that resolves to a saml2 entity provider object
     */
    updateSaml2Provider(location: Saml2ProiderLocation, providerData: Saml2ProviderSkeleton, entityId?: string): Promise<Saml2ProviderSkeleton>;
    /**
     * Delete an entity provider. The response can be saved to file as is.
     * @param {string} entityId Provider entity id
     * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.
     */
    deleteSaml2Provider(entityId: string): Promise<Saml2ProviderSkeleton>;
    /**
     * Delete all entity providers.
     * @returns {Promise<Saml2ProviderSkeleton[]>} Promise resolving to an array of Saml2ProviderSkeleton objects.
     */
    deleteSaml2Providers(): Promise<Saml2ProviderSkeleton[]>;
    /**
     * Get a SAML2 entity provider's metadata URL by entity id
     * @param {string} entityId SAML2 entity id
     * @returns {string} the URL to get the metadata from
     */
    getSaml2ProviderMetadataUrl(entityId: string): string;
    /**
     * Get a SAML2 entity provider's metadata by entity id
     * @param {string} entityId SAML2 entity id
     * @returns {Promise<object>} a promise that resolves to an object containing a SAML2 metadata
     */
    getSaml2ProviderMetadata(entityId: string): Promise<any>;
    /**
     * Export a single entity provider. The response can be saved to file as is.
     * @param {string} entityId Provider entity id
     * @param {Saml2EntitiesExportOptions} options export options
     * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.
     */
    exportSaml2Provider(entityId: string, options?: Saml2EntitiesExportOptions): Promise<Saml2ExportInterface>;
    /**
     * Export all entity providers. The response can be saved to file as is.
     * @param {Saml2EntitiesExportOptions} options export options
     * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.
     */
    exportSaml2Providers(options?: Saml2EntitiesExportOptions): Promise<Saml2ExportInterface>;
    /**
     * Import a SAML entity provider
     * @param {string} entityId Provider entity id
     * @param {Saml2ExportInterface} importData Import data
     * @param {Saml2EntitiesImportOptions} options import options
     * @returns {Promise<Saml2ProviderSkeleton>} a promise resolving to a provider object
     */
    importSaml2Provider(entityId: string, importData: Saml2ExportInterface, options?: Saml2EntitiesImportOptions): Promise<Saml2ProviderSkeleton>;
    /**
     * Import SAML entity providers
     * @param {Saml2ExportInterface} importData Import data
     * @param {Saml2EntitiesImportOptions} options import options
     * @returns {Promise<Saml2ProviderSkeleton[]>} a promise resolving to an array of provider objects
     */
    importSaml2Providers(importData: Saml2ExportInterface, options?: Saml2EntitiesImportOptions): Promise<Saml2ProviderSkeleton[]>;
    /**
     * Get SAML2 entity provider stubs
     * @returns {Promise<Saml2ProviderStub[]>} a promise that resolves to an array of saml2 entity stubs
     * @deprecated since v2.0.0 use {@link Saml2.readSaml2ProviderStubs | readSaml2ProviderStubs} instead
     * ```javascript
     * readSaml2ProviderStubs(): Promise<Saml2ProviderStub[]>
     * ```
     * @group Deprecated
     */
    getSaml2ProviderStubs(): Promise<Saml2ProviderStub[]>;
    /**
     * Get a SAML2 entity provider's metadata URL by entity id
     * @param {string} entityId SAML2 entity id
     * @returns {string} the URL to get the metadata from
     * @deprecated since v2.0.0 use {@link Saml2.getSaml2ProviderMetadataUrl | getSaml2ProviderMetadataUrl} instead
     * ```javascript
     * getSaml2ProviderMetadataUrl(entityId: string): string
     * ```
     * @group Deprecated
     */
    getProviderMetadataUrl(entityId: string): string;
    /**
     * Get a SAML2 entity provider's metadata by entity id
     * @param {string} entityId SAML2 entity id
     * @returns {Promise<any>} a promise that resolves to an object containing a SAML2 metadata
     * @deprecated since v2.0.0 use {@link Saml2.getSaml2ProviderMetadata | getSaml2ProviderMetadata} instead
     * ```javascript
     * getSaml2ProviderMetadata(entityId: string): Promise<any>
     * ```
     * @group Deprecated
     */
    getProviderMetadata(entityId: string): Promise<any>;
    /**
     *
     * @param {string} entityId Provider entity id
     * @returns {Promise<Saml2ProviderStub>} Promise resolving to a Saml2ExportInterface object.
     * @deprecated since v2.0.0 use {@link Saml2.readSaml2ProviderStub | readSaml2ProviderStub} instead
     * ```javascript
     * readSaml2ProviderStub(entityId: string): Promise<Saml2ProviderStub>
     * ```
     * @group Deprecated
     */
    getSaml2ProviderStub(entityId: string): Promise<Saml2ProviderStub>;
    /**
     * Export a single entity provider. The response can be saved to file as is.
     * @param {string} entityId Provider entity id
     * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.
     * @deprecated since v2.0.0 use {@link Saml2.readSaml2Provider | readSaml2Provider} instead
     * ```javascript
     * readSaml2Provider(entityId: string): Promise<Saml2ProviderSkeleton>
     * ```
     * @group Deprecated
     */
    getSaml2Provider(entityId: string): Promise<Saml2ProviderSkeleton>;
};
declare const _default: (state: State) => Saml2;
export default _default;
export interface Saml2EntitiesImportOptions {
    /**
     * Include any dependencies (scripts).
     */
    deps: boolean;
}
export interface Saml2EntitiesExportOptions {
    /**
     * Include any dependencies (scripts).
     */
    deps: boolean;
}
export interface Saml2ExportInterface {
    meta?: ExportMetaData;
    script: Record<string, ScriptSkeleton>;
    saml: {
        hosted: Record<string, Saml2ProviderSkeleton>;
        remote: Record<string, Saml2ProviderSkeleton>;
        metadata: Record<string, string[]>;
    };
}
export declare function createSaml2ExportTemplate({ state, }: {
    state: State;
}): Saml2ExportInterface;
/**
 * Get SAML2 entity provider stubs
 * @returns {Promise<Saml2ProviderStub[]>} a promise that resolves to an array of saml2 entity stubs
 */
export declare function readSaml2ProviderStubs({ state, }: {
    state: State;
}): Promise<Saml2ProviderStub[]>;
/**
 * Get all SAML2 entity ids
 * @returns {Promise<string[]>} a promise that resolves to an array of saml2 entity ids
 */
export declare function readSaml2EntityIds({ state, }: {
    state: State;
}): Promise<string[]>;
/**
 * Get a SAML2 entity provider's metadata URL by entity id
 * @param {string} entityId SAML2 entity id
 * @returns {string} the URL to get the metadata from
 */
export declare function getSaml2ProviderMetadataUrl({ entityId, state, }: {
    entityId: string;
    state: State;
}): string;
/**
 * Get a SAML2 entity provider's metadata by entity id
 * @param {string} entityId SAML2 entity id
 * @returns {Promise<object>} a promise that resolves to an object containing a SAML2 metadata
 */
export declare function getSaml2ProviderMetadata({ entityId, state, }: {
    entityId: string;
    state: State;
}): Promise<string>;
/**
 *
 * @param {string} entityId Provider entity id
 * @returns {Promise<Saml2ProviderStub>} Promise resolving to a Saml2ExportInterface object.
 */
export declare function readSaml2ProviderStub({ entityId, state, }: {
    entityId: string;
    state: State;
}): Promise<Saml2ProviderStub>;
/**
 * Export a single entity provider. The response can be saved to file as is.
 * @param {string} entityId Provider entity id
 * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.
 */
export declare function readSaml2Provider({ entityId, state, }: {
    entityId: string;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
/**
 * Create a SAML2 entity provider
 * @param {Saml2ProiderLocation} location 'hosted' or 'remote'
 * @param {Saml2ProviderSkeleton} providerData Object representing a SAML entity provider
 * @param {string} metaData Base64-encoded metadata XML. Only required for remote providers
 * @returns {Promise<Saml2ProviderSkeleton>} a promise that resolves to a saml2 entity provider object
 */
export declare function createSaml2Provider({ location, providerData, metaData, state, }: {
    location: Saml2ProiderLocation;
    providerData: Saml2ProviderSkeleton;
    metaData?: string;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
/**
 * Update SAML2 entity provider
 * @param {Saml2ProiderLocation} location Entity provider location (hosted or remote)
 * @param {string} entityId SAML2 entity id
 * @param {Saml2ProviderSkeleton} providerData Object representing a SAML entity provider
 * @returns {Promise<Saml2ProviderSkeleton>} a promise that resolves to a saml2 entity provider object
 */
export declare function updateSaml2Provider({ location, entityId, providerData, state, }: {
    location: Saml2ProiderLocation;
    entityId?: string;
    providerData: Saml2ProviderSkeleton;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
/**
 * Delete an entity provider. The response can be saved to file as is.
 * @param {string} entityId Provider entity id
 * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.
 */
export declare function deleteSaml2Provider({ entityId, state, }: {
    entityId: string;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
/**
 * Delete all entity providers.
 * @returns {Promise<Saml2ProviderSkeleton[]>} Promise resolving to an array of Saml2ProviderSkeleton objects.
 */
export declare function deleteSaml2Providers({ state, }: {
    state: State;
}): Promise<Saml2ProviderSkeleton[]>;
/**
 * Export a single entity provider. The response can be saved to file as is.
 * @param {string} entityId Provider entity id
 * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.
 */
export declare function exportSaml2Provider({ entityId, options, state, }: {
    entityId: string;
    options?: Saml2EntitiesExportOptions;
    state: State;
}): Promise<Saml2ExportInterface>;
/**
 * Export all entity providers. The response can be saved to file as is.
 * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.
 */
export declare function exportSaml2Providers({ options, state, }: {
    options?: Saml2EntitiesExportOptions;
    state: State;
}): Promise<Saml2ExportInterface>;
/**
 * Include dependencies from the import file
 * @param {object} providerData Object representing a SAML entity provider
 * @param {object} fileData File data object to read dependencies from
 */
export declare function importDependencies({ providerData, fileData, state, }: {
    providerData: Saml2ProviderSkeleton;
    fileData: Saml2ExportInterface;
    state: State;
}): Promise<void>;
/**
 * Import a SAML entity provider
 * @param {string} entityId Provider entity id
 * @param {Saml2ExportInterface} importData Import data
 * @param {Saml2ProviderImportOptions} options import options
 * @returns {Promise<Saml2ProviderSkeleton>} a promise resolving to a provider object
 */
export declare function importSaml2Provider({ entityId, importData, options, state, }: {
    entityId: string;
    importData: Saml2ExportInterface;
    options?: Saml2EntitiesImportOptions;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
/**
 * Import SAML entity providers
 * @param {Saml2ExportInterface} importData Import data
 * @param {Saml2ProviderImportOptions} options import options
 * @returns {Promise<Saml2ProviderSkeleton[]>} a promise resolving to an array of provider objects
 */
export declare function importSaml2Providers({ importData, options, state, }: {
    importData: Saml2ExportInterface;
    options?: Saml2EntitiesImportOptions;
    state: State;
}): Promise<Saml2ProviderSkeleton[]>;
//# sourceMappingURL=Saml2Ops.d.ts.map