import type { TagDescription } from "@reduxjs/toolkit/query";
import type { Alert, ApiKey, Bookmark, Card, CardId, CardQueryMetadata, Collection, CollectionItem, CollectionItemModel, Dashboard, DashboardQueryMetadata, DashboardSubscription, Database, DatabaseXray, Field, FieldDimension, FieldId, ForeignKey, GetUserKeyValueRequest, Group, GroupListQuery, ModelCacheRefreshStatus, ModelIndex, NativeQuerySnippet, NotificationChannel, PopularItem, RecentItem, Revision, SearchModel, SearchResult, Segment, Table, Task, Timeline, TimelineEvent, UserInfo, WritebackAction } from "../../../metabase-types/api";
import type { CloudMigration } from "../../../metabase-types/api/cloud-migration";
import type { TagType } from "./constants";
export declare function tag(type: TagType): TagDescription<TagType>;
export declare function listTag(type: TagType): TagDescription<TagType>;
export declare function idTag(type: TagType, id: string | number): TagDescription<TagType>;
export declare function invalidateTags(error: unknown, tags: TagDescription<TagType>[]): TagDescription<TagType>[];
export declare function provideActionListTags(actions: WritebackAction[]): TagDescription<TagType>[];
export declare function provideActionTags(action: WritebackAction): TagDescription<TagType>[];
export declare function provideActivityItemListTags(items: RecentItem[] | PopularItem[]): TagDescription<TagType>[];
export declare function provideActivityItemTags(item: RecentItem | PopularItem): TagDescription<TagType>[];
export declare function provideAdhocQueryMetadataTags(metadata: CardQueryMetadata): TagDescription<TagType>[];
export declare function provideAlertListTags(alerts: Alert[]): TagDescription<TagType>[];
export declare function provideAlertTags(alert: Alert): TagDescription<TagType>[];
export declare function provideApiKeyListTags(apiKeys: ApiKey[]): TagDescription<TagType>[];
export declare function provideApiKeyTags(apiKey: ApiKey): TagDescription<TagType>[];
export declare function provideBookmarkListTags(bookmarks: Bookmark[]): TagDescription<TagType>[];
export declare function provideBookmarkTags(bookmark: Bookmark): TagDescription<TagType>[];
export declare function provideCardListTags(cards: Card[]): TagDescription<TagType>[];
export declare function provideCardTags(card: Card): TagDescription<TagType>[];
export declare function provideCardQueryMetadataTags(id: CardId, metadata: CardQueryMetadata): TagDescription<TagType>[];
export declare function provideCardQueryTags(cardId: CardId): TagDescription<TagType>[];
export declare function provideCloudMigrationTags(migration: CloudMigration): TagDescription<TagType>[];
export declare function provideCollectionItemListTags(items: CollectionItem[], models?: CollectionItemModel[]): TagDescription<TagType>[];
export declare function provideCollectionItemTags(item: CollectionItem): TagDescription<TagType>[];
export declare function provideCollectionListTags(collections: Collection[]): TagDescription<TagType>[];
export declare function provideCollectionTags(collection: Collection): TagDescription<TagType>[];
export declare function provideModelIndexTags(modelIndex: ModelIndex): TagDescription<TagType>[];
export declare function provideModelIndexListTags(modelIndexes: ModelIndex[]): TagDescription<TagType>[];
export declare function provideModeratedItemTags(itemType: TagType, itemId: number): TagDescription<TagType>[];
export declare function provideChannelTags(channel: NotificationChannel): TagDescription<TagType>[];
export declare function provideChannelListTags(channels: NotificationChannel[]): TagDescription<TagType>[];
export declare function provideDatabaseCandidateListTags(candidates: DatabaseXray[]): TagDescription<TagType>[];
export declare function provideDatabaseCandidateTags(candidate: DatabaseXray): TagDescription<TagType>[];
export declare function provideDatabaseListTags(databases: Database[]): TagDescription<TagType>[];
export declare function provideDatabaseTags(database: Database): TagDescription<TagType>[];
export declare function provideDashboardListTags(dashboards: Pick<Dashboard, "id">[]): TagDescription<TagType>[];
export declare function provideDashboardTags(dashboard: Dashboard): TagDescription<TagType>[];
export declare function provideDashboardQueryMetadataTags(metadata: DashboardQueryMetadata): TagDescription<TagType>[];
export declare function provideFieldListTags(fields: Field[]): TagDescription<TagType>[];
export declare function provideFieldTags(field: Field): TagDescription<TagType>[];
export declare function provideForeignKeyListTags(foreignKeys: ForeignKey[]): TagDescription<TagType>[];
export declare function provideForeignKeyTags(foreignKey: ForeignKey): TagDescription<TagType>[];
export declare function provideFieldDimensionListTags(dimensions: FieldDimension[]): TagDescription<TagType>[];
export declare function provideFieldDimensionTags(dimension: FieldDimension): TagDescription<TagType>[];
export declare function provideFieldValuesTags(id: FieldId): TagDescription<TagType>[];
export declare function providePermissionsGroupListTags(groups: GroupListQuery[]): TagDescription<TagType>[];
export declare function providePermissionsGroupListQueryTags(group: GroupListQuery): TagDescription<TagType>[];
export declare function providePermissionsGroupTags(group: Group): TagDescription<TagType>[];
export declare function providePersistedInfoListTags(statuses: ModelCacheRefreshStatus[]): TagDescription<TagType>[];
export declare function providePersistedInfoTags(status: ModelCacheRefreshStatus): TagDescription<TagType>[];
/**
 * We have to differentiate between the `persisted-info` and `persisted-model` tags
 * because the model cache refresh lives on the card api `/api/card/model/:id/refresh`.
 * That endpoint doesn't have information about the persisted info id, so we have to
 * map the model id to the `card_id` on the ModelCacheRefreshStatus.
 */
export declare function providePersistedModelTags(status: ModelCacheRefreshStatus): TagDescription<TagType>[];
export declare function provideRevisionListTags(revisions: Revision[]): TagDescription<TagType>[];
export declare function provideRevisionTags(revision: Revision): TagDescription<TagType>[];
export declare function provideSearchItemListTags(items: SearchResult[], models?: SearchModel[]): TagDescription<TagType>[];
export declare function provideSearchItemTags(item: SearchResult): TagDescription<TagType>[];
export declare function provideSegmentListTags(segments: Segment[]): TagDescription<TagType>[];
export declare function provideSegmentTags(segment: Segment): TagDescription<TagType>[];
export declare function provideSnippetListTags(snippets: NativeQuerySnippet[]): TagDescription<TagType>[];
export declare function provideSnippetTags(snippet: NativeQuerySnippet): TagDescription<TagType>[];
export declare function provideSubscriptionListTags(subscriptions: DashboardSubscription[]): TagDescription<TagType>[];
export declare function provideSubscriptionChannelListTags(): TagDescription<TagType>[];
export declare function provideSubscriptionTags(subscription: DashboardSubscription): TagDescription<TagType>[];
export declare function provideTableListTags(tables: Table[]): TagDescription<TagType>[];
export declare function provideTableTags(table: Table): TagDescription<TagType>[];
export declare function provideTaskListTags(tasks: Task[]): TagDescription<TagType>[];
export declare function provideTaskTags(task: Task): TagDescription<TagType>[];
export declare function provideTimelineEventListTags(events: TimelineEvent[]): TagDescription<TagType>[];
export declare function provideTimelineEventTags(event: TimelineEvent): TagDescription<TagType>[];
export declare function provideTimelineListTags(timelines: Timeline[]): TagDescription<TagType>[];
export declare function provideTimelineTags(timeline: Timeline): TagDescription<TagType>[];
export declare function provideUserListTags(users: UserInfo[]): TagDescription<TagType>[];
export declare function provideUserTags(user: UserInfo): TagDescription<TagType>[];
export declare function provideUserKeyValueTags({ namespace, key, }: GetUserKeyValueRequest): {
    type: "user-key-value";
    id: string;
}[];
