import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as V1API from 'cloudflare/resources/images/v1/v1';
import * as BlobsAPI from 'cloudflare/resources/images/v1/blobs';
import * as KeysAPI from 'cloudflare/resources/images/v1/keys';
import * as StatsAPI from 'cloudflare/resources/images/v1/stats';
import * as VariantsAPI from 'cloudflare/resources/images/v1/variants';
import { V4PagePagination, type V4PagePaginationParams } from 'cloudflare/pagination';
export declare class V1 extends APIResource {
    keys: KeysAPI.Keys;
    stats: StatsAPI.Stats;
    variants: VariantsAPI.Variants;
    blobs: BlobsAPI.Blobs;
    /**
     * Upload an image with up to 10 Megabytes using a single HTTP POST
     * (multipart/form-data) request. An image can be uploaded by sending an image file
     * or passing an accessible to an API url.
     */
    create(params: V1CreateParams, options?: Core.RequestOptions): Core.APIPromise<Image>;
    /**
     * List up to 100 images with one request. Use the optional parameters below to get
     * a specific range of images.
     */
    list(params: V1ListParams, options?: Core.RequestOptions): Core.PagePromise<V1ListResponsesV4PagePagination, V1ListResponse>;
    /**
     * Delete an image on Cloudflare Images. On success, all copies of the image are
     * deleted and purged from cache.
     */
    delete(imageId: string, params: V1DeleteParams, options?: Core.RequestOptions): Core.APIPromise<V1DeleteResponse>;
    /**
     * Update image access control. On access control change, all copies of the image
     * are purged from cache.
     */
    edit(imageId: string, params: V1EditParams, options?: Core.RequestOptions): Core.APIPromise<Image>;
    /**
     * Fetch details for a single image.
     */
    get(imageId: string, params: V1GetParams, options?: Core.RequestOptions): Core.APIPromise<Image>;
}
export declare class V1ListResponsesV4PagePagination extends V4PagePagination<V1ListResponse> {
}
export interface Image {
    /**
     * Image unique identifier.
     */
    id?: string;
    /**
     * Image file name.
     */
    filename?: string;
    /**
     * User modifiable key-value store. Can be used for keeping references to another
     * system of record for managing images. Metadata must not exceed 1024 bytes.
     */
    meta?: unknown;
    /**
     * Indicates whether the image can be a accessed only using it's UID. If set to
     * true, a signed token needs to be generated with a signing key to view the image.
     */
    requireSignedURLs?: boolean;
    /**
     * When the media item was uploaded.
     */
    uploaded?: string;
    /**
     * Object specifying available variants for an image.
     */
    variants?: Array<string | string | string>;
}
export interface V1ListResponse {
    errors: Array<V1ListResponse.Error>;
    messages: Array<V1ListResponse.Message>;
    result: V1ListResponse.Result;
    /**
     * Whether the API call was successful
     */
    success: true;
}
export declare namespace V1ListResponse {
    interface Error {
        code: number;
        message: string;
    }
    interface Message {
        code: number;
        message: string;
    }
    interface Result {
        images?: Array<V1API.Image>;
    }
}
export type V1DeleteResponse = unknown | string;
export type V1CreateParams = V1CreateParams.ImagesImageUploadViaFile | V1CreateParams.ImagesImageUploadViaURL;
export declare namespace V1CreateParams {
    interface ImagesImageUploadViaFile {
        /**
         * Path param: Account identifier tag.
         */
        account_id: string;
        /**
         * Body param: An image binary data.
         */
        file: unknown;
    }
    interface ImagesImageUploadViaURL {
        /**
         * Path param: Account identifier tag.
         */
        account_id: string;
        /**
         * Body param: A URL to fetch an image from origin.
         */
        url: string;
    }
}
export interface V1ListParams extends V4PagePaginationParams {
    /**
     * Path param: Account identifier tag.
     */
    account_id: string;
}
export interface V1DeleteParams {
    /**
     * Account identifier tag.
     */
    account_id: string;
}
export interface V1EditParams {
    /**
     * Path param: Account identifier tag.
     */
    account_id: string;
    /**
     * Body param: User modifiable key-value store. Can be used for keeping references
     * to another system of record for managing images. No change if not specified.
     */
    metadata?: unknown;
    /**
     * Body param: Indicates whether the image can be accessed using only its UID. If
     * set to `true`, a signed token needs to be generated with a signing key to view
     * the image. Returns a new UID on a change. No change if not specified.
     */
    requireSignedURLs?: boolean;
}
export interface V1GetParams {
    /**
     * Account identifier tag.
     */
    account_id: string;
}
export declare namespace V1 {
    export import Image = V1API.Image;
    export import V1ListResponse = V1API.V1ListResponse;
    export import V1DeleteResponse = V1API.V1DeleteResponse;
    export import V1ListResponsesV4PagePagination = V1API.V1ListResponsesV4PagePagination;
    export import V1CreateParams = V1API.V1CreateParams;
    export import V1ListParams = V1API.V1ListParams;
    export import V1DeleteParams = V1API.V1DeleteParams;
    export import V1EditParams = V1API.V1EditParams;
    export import V1GetParams = V1API.V1GetParams;
    export import Keys = KeysAPI.Keys;
    export import ImagesImageKeys = KeysAPI.ImagesImageKeys;
    export import KeyUpdateParams = KeysAPI.KeyUpdateParams;
    export import KeyListParams = KeysAPI.KeyListParams;
    export import KeyDeleteParams = KeysAPI.KeyDeleteParams;
    export import Stats = StatsAPI.Stats;
    export import ImagesImagesStats = StatsAPI.ImagesImagesStats;
    export import StatGetParams = StatsAPI.StatGetParams;
    export import Variants = VariantsAPI.Variants;
    export import V1ImageVariant = VariantsAPI.V1ImageVariant;
    export import V1ImageVariants = VariantsAPI.V1ImageVariants;
    export import VariantDeleteResponse = VariantsAPI.VariantDeleteResponse;
    export import VariantCreateParams = VariantsAPI.VariantCreateParams;
    export import VariantListParams = VariantsAPI.VariantListParams;
    export import VariantDeleteParams = VariantsAPI.VariantDeleteParams;
    export import VariantEditParams = VariantsAPI.VariantEditParams;
    export import VariantGetParams = VariantsAPI.VariantGetParams;
    export import Blobs = BlobsAPI.Blobs;
    export import BlobGetParams = BlobsAPI.BlobGetParams;
}
//# sourceMappingURL=v1.d.ts.map