/***
 * This file contains general logic for assessing authorization as part of FDC3 interop.
 *
 * For example, if App A broadcasts a context, but App A has authorization rules that only trust App B,
 * App A's context should only make it to App B. This file provides the logic to process those authorization rules.
 *
 *
 * * Authorization rules require that a specific contextType is provided in each rule. ContextType should be optional (KB: #35932)
 * * Consider slimming down these functions. There is a lot of potential DRY violations here that could be reduced.
 */
import { AppConfig, InteropStore, SelectConnectAppList, SelectConnectRule } from "../types";
export declare const isInteropAuthorized: (appName: string, rules: SelectConnectAppList[]) => boolean;
export declare const getSelectConnectRulesFromManifest: (manifest?: AppConfig | undefined, contextType?: string | undefined) => SelectConnectRule[];
declare type FilterForClientAuthorizationProps = {
    state: InteropStore;
    originClientUuid: string;
    destinationClientUuidList: string[];
    contextType?: string;
    intentType?: string;
};
/***
 * When sending data (usually broadcasting context) from an origin client to a list of possible destination clients,
 * the list of possible destinations need to be filtered based on possible authorization rules.
 * This function takes metadata and a list of possible destination UUID's, and returns a filtered version of that list,
 * where the unauthorized destinations have been removed.
 * Note: This is only for clients, which have UUIDs. For apps generally, see the function `filterForAppAuthorization`.
 *
 * @param {Object} options
 * @param {InteropStore} options.state The current InteropStore state collection (which contains authorization rules)
 * @param {String[]} options.destinationClientUuidList The list of the UUID's of the possible destinations
 * @param {String} options.originClientUuid The UUID of the origin client
 * @param {String} [options.contextType] The type of context to be assessed for
 * @param {String} [options.intentType] The type of intent to be assessed for
 *
 * @returns {String[]} The list of the UUID's of the *filtered* destinations
 */
export declare const filterForClientAuthorization: ({ state, destinationClientUuidList, originClientUuid, contextType, intentType, }: FilterForClientAuthorizationProps) => string[];
declare type FilterForAppAuthorizationProps = {
    state: InteropStore;
    originClientUuid: string;
    destinationAppIdList: string[];
    contextType?: string;
    intentType?: string;
};
/***
 * When sending data (usually raising intents) from an origin client to a list of possible destination apps,
 * the list of possible destinations need to be filtered based on possible authorization rules.
 * This function takes metadata and a list of possible appId's, and returns a filtered version of that list,
 * where the unauthorized destinations have been removed.
 * Note: This is only for apps, which have appId's. For sending data to specific clients,
 * see the function `filterForClientAuthorization`.
 *
 * @param {Object} options
 * @param {InteropStore} options.state The current InteropStore state collection (which contains authorization rules)
 * @param {String[]} options.destinationAppIdList The list of the appId's of the possible destinations
 * @param {String} options.originClientUuid The UUID of the origin client
 * @param {String} [options.contextType] The type of context to be assessed for
 * @param {String} [options.intentType] The type of intent to be assessed for
 *
 * @returns {String[]} The list of the UUID's of the *filtered* destinations
 */
export declare const filterForAppAuthorization: ({ state, destinationAppIdList, originClientUuid, contextType, intentType, }: FilterForAppAuthorizationProps) => String[];
export {};
//# sourceMappingURL=authorize.d.ts.map