import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as V1API from 'cloudflaredev/resources/images/v1/v1';
import * as Shared from 'cloudflaredev/resources/shared';
import * as BlobsAPI from 'cloudflaredev/resources/images/v1/blobs';
import * as KeysAPI from 'cloudflaredev/resources/images/v1/keys';
import * as StatsAPI from 'cloudflaredev/resources/images/v1/stats';
import * as VariantsAPI from 'cloudflaredev/resources/images/v1/variants';
import { V4PagePagination, type V4PagePaginationParams } from 'cloudflaredev/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<Shared.ResponseInfo>;
    messages: Array<Shared.ResponseInfo>;
    result: V1ListResponse.Result;
    /**
     * Whether the API call was successful
     */
    success: true;
}
export declare namespace V1ListResponse {
    interface Result {
        images?: Array<V1API.Image>;
    }
}
export type V1DeleteResponse = unknown | string | null;
export interface V1CreateParams {
    /**
     * Path param: Account identifier tag.
     */
    account_id: string;
    /**
     * Body param: An image binary data. Only needed when type is uploading a file.
     */
    file?: unknown;
    /**
     * Body param: User modifiable key-value store. Can use used for keeping references
     * to another system of record for managing images.
     */
    metadata?: unknown;
    /**
     * Body param: Indicates whether the image requires a signature token for the
     * access.
     */
    requireSignedURLs?: boolean;
    /**
     * Body param: A URL to fetch an image from origin. Only needed when type is
     * uploading from a URL.
     */
    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 Key = KeysAPI.Key;
    export import KeyUpdateResponse = KeysAPI.KeyUpdateResponse;
    export import KeyListResponse = KeysAPI.KeyListResponse;
    export import KeyDeleteResponse = KeysAPI.KeyDeleteResponse;
    export import KeyUpdateParams = KeysAPI.KeyUpdateParams;
    export import KeyListParams = KeysAPI.KeyListParams;
    export import KeyDeleteParams = KeysAPI.KeyDeleteParams;
    export import Stats = StatsAPI.Stats;
    export import Stat = StatsAPI.Stat;
    export import StatGetParams = StatsAPI.StatGetParams;
    export import Variants = VariantsAPI.Variants;
    export import Variant = VariantsAPI.Variant;
    export import VariantCreateResponse = VariantsAPI.VariantCreateResponse;
    export import VariantDeleteResponse = VariantsAPI.VariantDeleteResponse;
    export import VariantEditResponse = VariantsAPI.VariantEditResponse;
    export import VariantGetResponse = VariantsAPI.VariantGetResponse;
    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