import type { AssetTag } from "./tag";
/**
 * Asset types.
 */
export declare const AssetType: {
    readonly All: "all";
    readonly Audio: "audio";
    readonly Document: "document";
    readonly Image: "image";
    readonly Video: "video";
};
/**
 * An object representing an asset returned by the Asset API.
 *
 * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
 */
export type Asset = {
    /**
     * Asset ID.
     */
    id: string;
    /**
     * Asset URL.
     */
    url: string;
    /**
     * Asset creation date.
     */
    created_at: number;
    /**
     * Asset last modification date.
     */
    last_modified: number;
    /**
     * Asset filename.
     */
    filename: string;
    /**
     * Asset extension.
     */
    extension: string;
    /**
     * Asset size in bytes.
     */
    size: number;
    /**
     * Asset kind.
     */
    kind: Exclude<(typeof AssetType)[keyof typeof AssetType], (typeof AssetType)["All"]>;
    /**
     * Asset width in pixels.
     */
    width?: number;
    /**
     * Asset height in pixels.
     */
    height?: number;
    /**
     * Asset notes.
     */
    notes?: string;
    /**
     * Asset credits.
     */
    credits?: string;
    /**
     * Asset alt text.
     */
    alt?: string;
    /**
     * Asset tags.
     */
    tags?: AssetTag[];
    /**
     * @internal
     */
    origin_url?: string;
    /**
     * @internal
     */
    uploader_id?: string;
    /**
     * @internal
     */
    search_highlight?: {
        filename?: string[];
        notes?: string[];
        credits?: string[];
        alt?: string[];
    };
};
/**
 * Available query parameters when querying assets from the Asset API.
 *
 * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
 */
export type GetAssetsParams = {
    /**
     * Number of items to return.
     */
    pageSize?: number;
    /**
     * @internal
     */
    cursor?: string;
    /**
     * Asset type to filter by.
     */
    assetType?: (typeof AssetType)[keyof typeof AssetType];
    /**
     * Search query.
     */
    keyword?: string;
    /**
     * Asset IDs to filter by.
     */
    ids?: string[];
    /**
     * Asset tags to filter by.
     */
    tags?: string[];
};
/**
 * An object representing the result of querying assets from the Asset API.
 *
 * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
 */
export type GetAssetsResult = {
    items: Asset[];
    total: number;
    cursor?: string;
    missing_ids?: string[];
    is_opensearch_result: boolean;
};
/**
 * Parameters for uploading an asset to the Asset API.
 *
 * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
 */
export type PostAssetParams = {
    file: BlobPart;
    notes?: string;
    credits?: string;
    alt?: string;
};
/**
 * Result of uploading an asset to the Asset API.
 *
 * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
 */
export type PostAssetResult = Asset;
/**
 * Parameters for updating an asset in the Asset API.
 *
 * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
 */
export type PatchAssetParams = {
    notes?: string;
    credits?: string;
    alt?: string;
    filename?: string;
    tags?: string[];
};
/**
 * Result of updating an asset in the Asset API.
 *
 * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
 */
export type PatchAssetResult = Asset;
/**
 * Parameters for deleting an asset from the Asset API.
 *
 * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
 */
export type BulkDeleteAssetsParams = {
    ids: string[];
};
