import { type AxiosInstance, type AxiosPromise, type AxiosRequestConfig } from "axios";
import { type ITigerClientBase } from "./client.js";
import { type EntitiesApiGetAllEntitiesAnalyticalDashboardsRequest, type EntitiesApiGetAllEntitiesAttributesRequest, type EntitiesApiGetAllEntitiesDashboardPluginsRequest, type EntitiesApiGetAllEntitiesExportDefinitionsRequest, type EntitiesApiGetAllEntitiesFactsRequest, type EntitiesApiGetAllEntitiesMetricsRequest, type EntitiesApiGetAllEntitiesVisualizationObjectsRequest, type EntitiesApiGetAllEntitiesWorkspacesRequest, type JsonApiDataSourceIdentifierOutList, type JsonApiUserGroupOutList, type JsonApiUserOutList, type JsonApiWorkspaceOutList } from "./generated/metadata-json-api/index.js";
/**
 * All possible responses of API client getEntities* functions which support `included` field
 *
 * @internal
 */
export type OrganizationGetEntitiesSupportingIncludedResult = JsonApiUserOutList | JsonApiUserGroupOutList | JsonApiWorkspaceOutList;
/**
 * All possible responses of API client getEntities* functions.
 *
 * @internal
 */
export type OrganizationGetEntitiesResult = JsonApiDataSourceIdentifierOutList | OrganizationGetEntitiesSupportingIncludedResult;
/**
 * All possible params of API client getEntities* functions.
 *
 * @internal
 */
export type OrganizationGetEntitiesParams = EntitiesApiGetAllEntitiesAttributesRequest | EntitiesApiGetAllEntitiesFactsRequest | EntitiesApiGetAllEntitiesAnalyticalDashboardsRequest | EntitiesApiGetAllEntitiesDashboardPluginsRequest | EntitiesApiGetAllEntitiesVisualizationObjectsRequest | EntitiesApiGetAllEntitiesMetricsRequest | EntitiesApiGetAllEntitiesWorkspacesRequest | EntitiesApiGetAllEntitiesExportDefinitionsRequest;
/**
 * All API client getEntities* functions follow this signature.
 *
 * @internal
 */
export type OrganizationGetEntitiesFn<T extends OrganizationGetEntitiesResult, P extends OrganizationGetEntitiesParams> = (params: P, options: AxiosRequestConfig) => AxiosPromise<T>;
/**
 * All API client getEntities* functions follow this signature.
 *
 * @internal
 */
export type OrganizationGetEntitiesFnNew<T extends OrganizationGetEntitiesResult, P extends OrganizationGetEntitiesParams> = (axios: AxiosInstance, basePath: string, params: P, options: AxiosRequestConfig) => AxiosPromise<T>;
/**
 * Tiger organization utility functions
 *
 * @internal
 */
export declare class OrganizationUtilities {
    /**
     * Guard for recognizing entities which support `included` field.
     * @internal
     */
    private static supportsIncluded;
    static getAllPagesOf: <T extends OrganizationGetEntitiesResult, P extends OrganizationGetEntitiesParams>(client: ITigerClientBase, entitiesGet: OrganizationGetEntitiesFnNew<T, P>, params: P, options?: AxiosRequestConfig<any>) => Promise<T[]>;
    /**
     * This function merges multiple pages containing metadata entities into a single page. The entity data from different
     * pages are concatenated. The side-loaded entities are concatenated and their uniqueness is ensured so that same
     * entity sideloaded on multiple pages only appears once.
     *
     * The merges result WILL NOT contain any links section.
     *
     * @param pages - pages to merge
     * @internal
     */
    static mergeEntitiesResults<T extends OrganizationGetEntitiesResult>(pages: T[]): T;
}
//# sourceMappingURL=organizationUtilities.d.ts.map