import { IdObjectSkeletonInterface } from '../api/ApiTypes';
import { State } from '../shared/State';
import { JwkRsa } from './JoseOps';
export type ConnectionProfile = {
    /**
     * Get connection profiles file name
     * @returns {string} connection profiles file name
     */
    getConnectionProfilesPath(): string;
    /**
     * Find connection profiles
     * @param {ConnectionsFileInterface} connectionProfiles connection profile object
     * @param {string} host host url or unique substring
     * @returns {SecureConnectionProfileInterface[]} Array of connection profiles
     */
    findConnectionProfiles(connectionProfiles: ConnectionsFileInterface, host: string): SecureConnectionProfileInterface[];
    /**
     * Initialize connection profiles
     *
     * This method is called from app.ts and runs before any of the message handlers are registered.
     * Therefore none of the Console message functions will produce any output.
     */
    initConnectionProfiles(): Promise<void>;
    /**
     * Get connection profile by host
     * @param {String} host host tenant host url or unique substring
     * @returns {Object} connection profile or null
     */
    getConnectionProfileByHost(host: string): Promise<ConnectionProfileInterface>;
    /**
     * Get connection profile
     * @returns {Object} connection profile or null
     */
    getConnectionProfile(): Promise<ConnectionProfileInterface>;
    /**
     * Load a connection profile into library state
     * @param {string} host AM host URL or unique substring
     * @returns {Promise<boolean>} A promise resolving to true if successful
     */
    loadConnectionProfileByHost(host: string): Promise<boolean>;
    /**
     * Load a connection profile into library state
     * @returns {Promise<boolean>} A promise resolving to true if successful
     */
    loadConnectionProfile(): Promise<boolean>;
    /**
     * Save connection profile
     * @param {string} host host url for new profiles or unique substring for existing profiles
     * @returns {Promise<boolean>} true if the operation succeeded, false otherwise
     */
    saveConnectionProfile(host: string): Promise<boolean>;
    /**
     * Delete connection profile
     * @param {string} host host tenant host url or unique substring
     */
    deleteConnectionProfile(host: string): void;
    /**
     * Create a new service account using auto-generated parameters
     * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object
     */
    addNewServiceAccount(): Promise<IdObjectSkeletonInterface>;
};
declare const _default: (state: State) => ConnectionProfile;
export default _default;
export interface SecureConnectionProfileInterface {
    tenant: string;
    idmHost?: string;
    allowInsecureConnection?: boolean;
    deploymentType?: string;
    username?: string | null;
    encodedPassword?: string | null;
    logApiKey?: string | null;
    encodedLogApiSecret?: string | null;
    authenticationService?: string | null;
    authenticationHeaderOverrides?: Record<string, string>;
    adminClientId?: string | null;
    adminClientRedirectUri?: string | null;
    svcacctId?: string | null;
    encodedSvcacctJwk?: string | null;
    svcacctName?: string | null;
    svcacctScope?: string | null;
}
export interface ConnectionProfileInterface {
    tenant: string;
    idmHost?: string;
    allowInsecureConnection?: boolean;
    deploymentType?: string;
    username?: string | null;
    password?: string | null;
    logApiKey?: string | null;
    logApiSecret?: string | null;
    authenticationService?: string | null;
    authenticationHeaderOverrides?: Record<string, string>;
    adminClientId?: string | null;
    adminClientRedirectUri?: string | null;
    svcacctId?: string | null;
    svcacctJwk?: JwkRsa;
    svcacctName?: string | null;
    svcacctScope?: string | null;
}
export interface ConnectionsFileInterface {
    [key: string]: SecureConnectionProfileInterface;
}
/**
 * Get connection profiles file name
 * @param {State} state library state
 * @returns {String} connection profiles file name
 */
export declare function getConnectionProfilesPath({ state }: {
    state: State;
}): string;
/**
 * Initialize connection profiles
 *
 * This method is called from app.ts and runs before any of the message handlers are registered.
 * Therefore none of the Console message functions will produce any output.
 * @param {State} state library state
 */
export declare function initConnectionProfiles({ state }: {
    state: State;
}): Promise<void>;
/**
 * Get connection profile by host
 * @param {string} host host tenant host url or unique substring
 * @param {State} state library state
 * @returns {Promise<ConnectionProfileInterface>} connection profile
 */
export declare function getConnectionProfileByHost({ host, state, }: {
    host: string;
    state: State;
}): Promise<ConnectionProfileInterface>;
/**
 * Get connection profile
 * @param {Object} params Params object
 * @param {State} params.state State object
 * @returns {Promise<ConnectionProfileInterface>} A promise resolving to a connection profile or null
 */
export declare function getConnectionProfile({ state, }: {
    state: State;
}): Promise<ConnectionProfileInterface>;
/**
 * Load a connection profile into library state
 * @param {Object} params Params object
 * @param {string} params.host AM host URL or unique substring
 * @param {State} params.state State object
 * @returns {Promise<boolean>} A promise resolving to true if successful
 */
export declare function loadConnectionProfileByHost({ host, state, }: {
    host: string;
    state: State;
}): Promise<boolean>;
/**
 * Load a connection profile into library state
 * @param {Object} params Params object
 * @param {State} params.state State object
 * @returns {Promise<boolean>} A promise resolving to true if successful
 */
export declare function loadConnectionProfile({ state, }: {
    state: State;
}): Promise<boolean>;
/**
 * Save connection profile
 * @param {string} host host url for new profiles or unique substring for existing profiles
 * @returns {Promise<boolean>} true if the operation succeeded, false otherwise
 */
export declare function saveConnectionProfile({ host, state, }: {
    host: string;
    state: State;
}): Promise<boolean>;
/**
 * Delete connection profile
 * @param {String} host host tenant host url or unique substring
 */
export declare function deleteConnectionProfile({ host, state, }: {
    host: string;
    state: State;
}): void;
/**
 * Create a new service account using auto-generated parameters
 * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object
 */
export declare function addNewServiceAccount({ state, }: {
    state: State;
}): Promise<IdObjectSkeletonInterface>;
//# sourceMappingURL=ConnectionProfileOps.d.ts.map