import { type MediaAssetType } from "@prismicio/editor-ui"; import { z } from "zod"; import { type AuthStrategy, type EditorConfig } from "../../../EditorConfig"; export declare const mediaAssetType: z.ZodObject<{ id: z.ZodString; kind: z.ZodString; extension: z.ZodOptional; filename: z.ZodString; width: z.ZodOptional; height: z.ZodOptional; last_modified: z.ZodNumber; url: z.ZodString; alt: z.ZodOptional; uploader_id: z.ZodOptional; size: z.ZodNumber; notes: z.ZodOptional; credits: z.ZodOptional; search_highlight: z.ZodOptional>, string | undefined, string[] | undefined>; alt: z.ZodEffects>, string | undefined, string[] | undefined>; notes: z.ZodEffects>, string | undefined, string[] | undefined>; credits: z.ZodEffects>, string | undefined, string[] | undefined>; }, "strip", z.ZodTypeAny, { notes?: string | undefined; credits?: string | undefined; alt?: string | undefined; filename?: string | undefined; }, { notes?: string[] | undefined; credits?: string[] | undefined; alt?: string[] | undefined; filename?: string[] | undefined; }>>; tags: z.ZodArray; created_at: z.ZodNumber; last_modified: z.ZodNumber; count: z.ZodDefault>; }, "strip", z.ZodTypeAny, { id: string; name: string; created_at: number; last_modified: number; count: number; uploader_id?: string | undefined; }, { id: string; name: string; created_at: number; last_modified: number; uploader_id?: string | undefined; count?: number | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; count: number; uploader_id?: string | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string | undefined; credits?: string | undefined; alt?: string | undefined; filename?: string | undefined; } | undefined; }, { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; uploader_id?: string | undefined; count?: number | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string[] | undefined; credits?: string[] | undefined; alt?: string[] | undefined; filename?: string[] | undefined; } | undefined; }>; export declare const assetApiHeaders: { "X-Prismic-Source": string; }; export declare const mediaSearchResponse: z.ZodObject<{ total: z.ZodNumber; cursor: z.ZodOptional; items: z.ZodArray; filename: z.ZodString; width: z.ZodOptional; height: z.ZodOptional; last_modified: z.ZodNumber; url: z.ZodString; alt: z.ZodOptional; uploader_id: z.ZodOptional; size: z.ZodNumber; notes: z.ZodOptional; credits: z.ZodOptional; search_highlight: z.ZodOptional>, string | undefined, string[] | undefined>; alt: z.ZodEffects>, string | undefined, string[] | undefined>; notes: z.ZodEffects>, string | undefined, string[] | undefined>; credits: z.ZodEffects>, string | undefined, string[] | undefined>; }, "strip", z.ZodTypeAny, { notes?: string | undefined; credits?: string | undefined; alt?: string | undefined; filename?: string | undefined; }, { notes?: string[] | undefined; credits?: string[] | undefined; alt?: string[] | undefined; filename?: string[] | undefined; }>>; tags: z.ZodArray; created_at: z.ZodNumber; last_modified: z.ZodNumber; count: z.ZodDefault>; }, "strip", z.ZodTypeAny, { id: string; name: string; created_at: number; last_modified: number; count: number; uploader_id?: string | undefined; }, { id: string; name: string; created_at: number; last_modified: number; uploader_id?: string | undefined; count?: number | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; count: number; uploader_id?: string | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string | undefined; credits?: string | undefined; alt?: string | undefined; filename?: string | undefined; } | undefined; }, { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; uploader_id?: string | undefined; count?: number | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string[] | undefined; credits?: string[] | undefined; alt?: string[] | undefined; filename?: string[] | undefined; } | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { items: { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; count: number; uploader_id?: string | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string | undefined; credits?: string | undefined; alt?: string | undefined; filename?: string | undefined; } | undefined; }[]; total: number; cursor?: string | undefined; }, { items: { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; uploader_id?: string | undefined; count?: number | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string[] | undefined; credits?: string[] | undefined; alt?: string[] | undefined; filename?: string[] | undefined; } | undefined; }[]; total: number; cursor?: string | undefined; }>; export type MediaAsset = z.TypeOf; export interface ExternalImage { id: string; url: string; width: number; height: number; alt?: string; } export type MediaAssetOrExternalImage = MediaAsset | ExternalImage; export declare function searchMedia(baseUrl: URL | undefined, repository: string, authStrategy: AuthStrategy, keyword: string, assetType: MediaAssetType, uploaderId: string | undefined, tags: string, page: number, cursor?: string): Promise<{ time: string; keyword: string; assetType: MediaAssetType; uploaderId: string | undefined; tags: string; page: number; items: { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; count: number; uploader_id?: string | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string | undefined; credits?: string | undefined; alt?: string | undefined; filename?: string | undefined; } | undefined; }[]; total: number; cursor?: string | undefined; }>; interface UseMediaLibrarySearchArgs { initialAssetType?: MediaAssetType; mode: "select" | "browse"; } export interface MediaLibraryFilters { keyword: string; assetType: MediaAssetType; uploaderId?: string; tagIds: string[]; } export declare const defaultMediaLibraryFilters: MediaLibraryFilters; export declare function useMediaSearch(args: UseMediaLibrarySearchArgs): { keyword: string; assetType: MediaAssetType; uploaderId: string | undefined; tagIds: string[]; setFilters: (filters: Partial) => void; resetFilters: () => void; media: { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; count: number; uploader_id?: string | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string | undefined; credits?: string | undefined; alt?: string | undefined; filename?: string | undefined; } | undefined; }[]; mediaTotal: number; limit: number; hasNextPage: boolean; fetchNextPage: () => void; updateMedia: typeof updateMedia; unshiftMedia: (newMedia: MediaAsset[]) => void; deleteMedia: typeof deleteMedia; deleteSearchData: typeof deleteSearchData; revalidateFirstPage: typeof revalidateFirstPage; }; /** * Function to update media items in the cache and ensure * that the shown data is up to date. */ declare function updateMedia(newFiles: { id: string; response: Partial | undefined; }[]): void; declare function deleteMedia(mediaIds: string[]): void; declare function deleteSearchData(args: MediaLibraryFilters): void; type MediaPage = Awaited>; export declare function getMedia(allPages: MediaPage[], keyword: string, assetType: MediaAssetType, uploaderId: string | undefined, tags: string): { url: string; id: string; tags: { id: string; name: string; created_at: number; last_modified: number; count: number; uploader_id?: string | undefined; }[]; size: number; kind: string; last_modified: number; filename: string; notes?: string | undefined; height?: number | undefined; width?: number | undefined; credits?: string | undefined; alt?: string | undefined; uploader_id?: string | undefined; extension?: string | undefined; search_highlight?: { notes?: string | undefined; credits?: string | undefined; alt?: string | undefined; filename?: string | undefined; } | undefined; }[]; interface PageMetadata { page: number; assetType: MediaAssetType; keyword: string; } type UpdateMediaFunction = (currentItems: MediaAsset[], metadata: PageMetadata) => MediaAsset[] | undefined; export declare function updateMediaCache(updateFunction: UpdateMediaFunction): void; interface RevalidateFirstPageArgs { config: EditorConfig; keyword?: string; assetType?: MediaAssetType; uploaderId?: string; tagIds?: string[]; } /** * Revalidates the first page of the media library immediately. */ declare function revalidateFirstPage(args: RevalidateFirstPageArgs): void; /** * Function to remove media items from cache and ensure that the shown data * is up to date. * * Clear all media library cache but the first page. * * Then the first page will be revalidated to be in sync with the server data. * By not removing the first page and then revalidating we can avoid unnecessary * loading states while relying on the cached data. */ export declare function clearMediaCacheAndRevalidateFirstPage(args: RevalidateFirstPageArgs): void; export interface SearchMediaArgs { assetsApiBaseUrl: URL | undefined; repository: string; authStrategy: AuthStrategy; keyword: string; assetType: MediaAssetType; uploaderId?: string; tagIds: string[]; page: number; cursor?: string; } export declare function searchMediaArgs(args: SearchMediaArgs): Parameters; export {};