import * as Utils from '@datocms/rest-client-utils';
import BaseResource from '../../BaseResource';
import type { ItemTypeDefinition } from '../../utilities/itemDefinition';
import type * as ApiTypes from '../ApiTypes';
import type * as RawApiTypes from '../RawApiTypes';
type NoInfer<T> = [T][T extends any ? 0 : never];
export default class Upload extends BaseResource {
    static readonly TYPE: "upload";
    /**
     * Create a new upload
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/create
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    create(body: ApiTypes.UploadCreateSchema): Promise<ApiTypes.Upload>;
    /**
     * Create a new upload
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/create
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawCreate(body: RawApiTypes.UploadCreateSchema): Promise<RawApiTypes.UploadCreateJobSchema>;
    /**
     * List all uploads
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/instances
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    list(queryParams?: ApiTypes.UploadInstancesHrefSchema): Promise<ApiTypes.UploadInstancesTargetSchema>;
    /**
     * List all uploads
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/instances
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawList(queryParams?: RawApiTypes.UploadInstancesHrefSchema): Promise<RawApiTypes.UploadInstancesTargetSchema>;
    /**
     * Async iterator to auto-paginate over elements returned by list()
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/instances
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    listPagedIterator(queryParams?: Utils.OmitFromKnownKeys<ApiTypes.UploadInstancesHrefSchema, 'page'>, iteratorOptions?: Utils.IteratorOptions): AsyncGenerator<ApiTypes.Upload, void, unknown>;
    /**
     * Async iterator to auto-paginate over elements returned by rawList()
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/instances
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawListPagedIterator(queryParams?: Utils.OmitFromKnownKeys<RawApiTypes.UploadInstancesHrefSchema, 'page'>, iteratorOptions?: Utils.IteratorOptions): AsyncGenerator<RawApiTypes.Upload, void, unknown>;
    /**
     * Retrieve an upload
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/self
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    find(uploadId: string | ApiTypes.UploadData): Promise<ApiTypes.Upload>;
    /**
     * Retrieve an upload
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/self
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawFind(uploadId: string): Promise<RawApiTypes.UploadSelfTargetSchema>;
    /**
     * Delete an upload
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/destroy
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    destroy(uploadId: string | ApiTypes.UploadData): Promise<ApiTypes.Upload>;
    /**
     * Delete an upload
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/destroy
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawDestroy(uploadId: string): Promise<RawApiTypes.UploadDestroyTargetSchema>;
    /**
     * Update an upload
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/update
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    update(uploadId: string | ApiTypes.UploadData, body: ApiTypes.UploadUpdateSchema, queryParams?: ApiTypes.UploadUpdateHrefSchema): Promise<ApiTypes.Upload>;
    /**
     * Update an upload
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/update
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawUpdate(uploadId: string, body: RawApiTypes.UploadUpdateSchema, queryParams?: RawApiTypes.UploadUpdateHrefSchema): Promise<RawApiTypes.UploadUpdateJobSchema>;
    /**
     * Referenced records
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/references
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    references<D extends ItemTypeDefinition = ItemTypeDefinition>(uploadId: string | ApiTypes.UploadData, queryParams: ApiTypes.UploadReferencesHrefSchema & {
        nested: true;
    }): Promise<ApiTypes.UploadReferencesTargetSchema<NoInfer<D>, true>>;
    references<D extends ItemTypeDefinition = ItemTypeDefinition>(uploadId: string | ApiTypes.UploadData, queryParams?: ApiTypes.UploadReferencesHrefSchema & {
        nested?: false | undefined;
    }): Promise<ApiTypes.UploadReferencesTargetSchema<NoInfer<D>, false>>;
    /**
     * Referenced records
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/references
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawReferences<D extends ItemTypeDefinition = ItemTypeDefinition>(uploadId: string, queryParams: RawApiTypes.UploadReferencesHrefSchema & {
        nested: true;
    }): Promise<RawApiTypes.UploadReferencesTargetSchema<NoInfer<D>, true>>;
    rawReferences<D extends ItemTypeDefinition = ItemTypeDefinition>(uploadId: string, queryParams?: RawApiTypes.UploadReferencesHrefSchema & {
        nested?: false | undefined;
    }): Promise<RawApiTypes.UploadReferencesTargetSchema<NoInfer<D>, false>>;
    rawReferences<D extends ItemTypeDefinition = ItemTypeDefinition>(uploadId: string, queryParams?: RawApiTypes.UploadReferencesHrefSchema): Promise<RawApiTypes.UploadReferencesTargetSchema<NoInfer<D>, true>>;
    /**
     * Add tags to assets in bulk
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/bulk_tag
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    bulkTag(body: ApiTypes.UploadBulkTagSchema): Promise<ApiTypes.UploadBulkTagJobSchema>;
    /**
     * Add tags to assets in bulk
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/bulk_tag
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawBulkTag(body: RawApiTypes.UploadBulkTagSchema): Promise<RawApiTypes.UploadBulkTagJobSchema>;
    /**
     * Put assets into a collection in bulk
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/bulk_set_upload_collection
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    bulkSetUploadCollection(body: ApiTypes.UploadBulkSetUploadCollectionSchema): Promise<ApiTypes.UploadBulkSetUploadCollectionJobSchema>;
    /**
     * Put assets into a collection in bulk
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/bulk_set_upload_collection
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawBulkSetUploadCollection(body: RawApiTypes.UploadBulkSetUploadCollectionSchema): Promise<RawApiTypes.UploadBulkSetUploadCollectionJobSchema>;
    /**
     * Destroy uploads
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/bulk_destroy
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    bulkDestroy(body: ApiTypes.UploadBulkDestroySchema): Promise<ApiTypes.UploadBulkDestroyJobSchema>;
    /**
     * Destroy uploads
     *
     * Read more: https://www.datocms.com/docs/content-management-api/resources/upload/bulk_destroy
     *
     * @throws {ApiError}
     * @throws {TimeoutError}
     */
    rawBulkDestroy(body: RawApiTypes.UploadBulkDestroySchema): Promise<RawApiTypes.UploadBulkDestroyJobSchema>;
}
export {};
