import type { IUser } from "@esri/arcgis-rest-portal";
import { HubFamily } from "../hub-types";
import type { IArcGISContext } from "../types/IArcGISContext";
import { IFilter, EntityType, IHubCatalog, IHubCollection } from "./types/IHubCatalog";
/** well-known item catalogs */
export declare const WELL_KNOWN_ITEM_CATALOGS: readonly ["myContent", "favorites", "organization", "world", "partners", "community", "livingAtlas"];
export type WellKnownItemCatalog = (typeof WELL_KNOWN_ITEM_CATALOGS)[number];
/** well-known group catalogs */
export declare const WELL_KNOWN_GROUP_CATALOGS: readonly ["editGroups", "viewGroups", "allGroups", "myGroups", "orgGroups", "communityGroups", "publicGroups"];
export type WellKnownGroupCatalog = (typeof WELL_KNOWN_GROUP_CATALOGS)[number];
/** well-known event catalogs */
export declare const WELL_KNOWN_EVENT_CATALOGS: readonly ["myEvents", "orgEvents", "worldEvents"];
export type WellKnownEventCatalog = (typeof WELL_KNOWN_EVENT_CATALOGS)[number];
/** well known catalogs */
export type WellKnownCatalog = WellKnownItemCatalog | WellKnownGroupCatalog | WellKnownEventCatalog;
/**
 * This is used to determine what IHubCollection definition JSON object
 * can be created. We use HubFamily here to define most of the collections
 * to ensure consistency
 */
export type WellKnownCollection = Exclude<HubFamily, "app" | "map"> | "appAndMap" | "solution" | "projectAndInitiative";
/**TODO: On the next breaking change User and context should be
 * removed from this interface and passed into the function as a single required context.
 */
/**
 * A list of optional arguments to pass into getWellKnownCatalog
 * user is the owner of the entity
 * collectionNames is a list of names of the collections, only those collections
 * in the catalog will be returned
 */
export interface IGetWellKnownCatalogOptions {
    user?: IUser;
    collectionNames?: WellKnownCollection[];
    /** additional filters to apply to the catalog scope */
    filters?: IFilter[];
    /** optional context */
    context?: IArcGISContext;
}
/**
 * Check if i18nScope is defined and not ending with a ".", if so add a "." at the end.
 * e.g. if the i18nScope is 'project.edit', the path is `${i18nScope}catalog.organization`,
 * we will want "project.edit.catalog.organization" instead of "project.editcatalog.organization"
 * @param i18nScope
 * @returns i18nScope with a "." at the end if it is defined
 */
export declare function dotifyString(i18nScope: string): string;
/**
 * Helper function to build an array of well-known Catalogs
 * note: requested well-known Catalogs must be for the same
 * targetEntity type
 *
 * @param i18nScope Translation scope to be interpolated into the catalog
 * @param targetEntity The type of entity to query for
 * @param catalogNames Names of the catalogs requested
 * @param context contextual portal & auth information
 * @param opts optional IGetWellKnownCatalogOptions args
 */
export declare function getWellKnownCatalogs(i18nScope: string, targetEntity: EntityType, catalogNames: WellKnownCatalog[], context: IArcGISContext, opts?: Exclude<IGetWellKnownCatalogOptions, "context" | "user">): IHubCatalog[];
/** Get a single catalog based on the catalog name, entity type and optional requests
 * @param i18nScope Translation scope to be interpolated into the catalog
 * @param name Name of the catalog requested
 * @param entityType
 * @param options An opitional IGetWellKnownCatalogOptions definition JSON object
 * @returns An IHubCatalog definition JSON object
 */
export declare function getWellKnownCatalog(i18nScope: string, catalogName: WellKnownCatalog, entityType: EntityType, options?: IGetWellKnownCatalogOptions): IHubCatalog;
/**
 * Get a list of collections based on the entity type and an optional
 * list of collection names, will return a list of default collections if none passed
 * @param i18nScope Translation scope to be interpolated into the collections
 * @param entityType
 * @param collectionNames List of names of the requested collections, optional, if passed in,
 * only those collections will be returned
 * @returns A list of IHubCollection definition JSON objects
 */
export declare function getWellknownCollections(i18nScope: string, entityType: EntityType, collectionNames?: WellKnownCollection[]): IHubCollection[];
/**
 * Get a single collection based on the collection name and entity type
 * @param i18nScope
 * @param entityType
 * @param collectionName Name of the collection requested
 * @returns An IHubCollection definition JSON object
 */
export declare function getWellknownCollection(i18nScope: string, entityType: EntityType, collectionName: WellKnownCollection): IHubCollection;
