import type { IArcGISContext } from "../types/IArcGISContext";
import { HubEntity } from "../core/types/HubEntity";
import { HubEntityType } from "../core/types/HubEntityType";
import { WellKnownCatalog } from "../search/wellKnownCatalog";
import { IHubCatalog } from "../search/types/IHubCatalog";
/**
 * Supported association catalogs that can be requested.
 * These correspond to a specific IHubCatalog definition
 * that gets returned.
 */
export type WellKnownAssociationCatalog = "associated" | "pending" | "requesting" | "availableToRequest";
/**
 * There are two primary UI workflows when we consider associations:
 * 1. Viewing associations
 * 2. Forming associations
 *
 * Because associations involve a 2-way agreement between parent
 * and child, when viewing associations, there are 3 gallery states
 * that can be viewed: "associated", "pending", and "requesting"
 * entities. Additionally, when forming associations, we need a
 * picker experience filtered to entities that can still be
 * requested for association.
 *
 * These define the "well-known" association catalogs that this
 * util can return. In turn, these can be passed into the catalog
 * and/or gallery-picker components to render the appropriate
 * UI experience.
 *
 * @param i18nScope - translation scope to be interpolated into the catalog
 * @param catalogName - name of the well-known catalog requested
 * @param entity - primary entity the catalog is being built for
 * @param associationType - type of entity the primary entity wants to view associations for
 * @param context - contextual auth and portal information
 * @returns {IHubCatalog}
 */
export declare function getWellKnownAssociationsCatalog(i18nScope: string, catalogName: WellKnownAssociationCatalog, entity: HubEntity, associationType: HubEntityType, context: IArcGISContext): Promise<IHubCatalog>;
/**
 * Specific util for building well-known (My content, Favorites,
 * Organization, and World) association catalogs to populate
 * a gallery picker experience for requesting association.
 *
 * In addition to the normal filters that define these well-known
 * catalogs, we also need to further filter the results to only
 * include entities that can still be requested for association.
 *
 * @param i18nScope - translation scope to be interpolated into the catalog
 * @param entity - primary entity the catalog is being built for
 * @param associationType - type of entity the primary entity wants to view associations for
 * @param context - contextual auth and portal information
 * @param catalogs - optional list of well-known catalogs to include
 * @returns {IHubCatalog[]}
 */
export declare const getAvailableToRequestAssociationCatalogs: (i18nScope: string, entity: HubEntity, associationType: HubEntityType, context: IArcGISContext, catalogs?: WellKnownCatalog[]) => IHubCatalog[];
