import type { DeepPartial } from 'ts-essentials';
import type { CollectionSlug, Payload, RequestContext, TypedLocale } from '../../../index.js';
import type { Document, PayloadRequest, PopulateType, SelectType, Sort, TransformCollectionWithSelect, Where } from '../../../types/index.js';
import type { File } from '../../../uploads/types.js';
import type { BulkOperationResult, RequiredDataFromCollectionSlug, SelectFromCollectionSlug } from '../../config/types.js';
export type BaseOptions<TSlug extends CollectionSlug, TSelect extends SelectType> = {
    /**
     * Whether the current update should be marked as from autosave.
     * `versions.drafts.autosave` should be specified.
     */
    autosave?: boolean;
    /**
     * the Collection slug to operate against.
     */
    collection: TSlug;
    /**
     * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,
     * which can be read by hooks. Useful if you want to pass additional information to the hooks which
     * shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook
     * to determine if it should run or not.
     */
    context?: RequestContext;
    /**
     * The document / documents data to update.
     */
    data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>;
    /**
     * [Control auto-population](https://payloadcms.com/docs/queries/depth) of nested relationship and upload fields.
     */
    depth?: number;
    /**
     * When set to `true`, a [database transactions](https://payloadcms.com/docs/database/transactions) will not be initialized.
     * @default false
     */
    disableTransaction?: boolean;
    /**
     * Update documents to a draft.
     */
    draft?: boolean;
    /**
     * Specify a [fallback locale](https://payloadcms.com/docs/configuration/localization) to use for any returned documents.
     */
    fallbackLocale?: false | TypedLocale;
    /**
     * A `File` object when updating a collection with `upload: true`.
     */
    file?: File;
    /**
     * A file path when creating a collection with `upload: true`.
     */
    filePath?: string;
    /**
     * Specify [locale](https://payloadcms.com/docs/configuration/localization) for any returned documents.
     */
    locale?: TypedLocale;
    /**
     * Skip access control.
     * Set to `false` if you want to respect Access Control for the operation, for example when fetching data for the front-end.
     * @default true
     */
    overrideAccess?: boolean;
    /**
     * By default, document locks are ignored (`true`). Set to `false` to enforce locks and prevent operations when a document is locked by another user. [More details](https://payloadcms.com/docs/admin/locked-documents).
     * @default true
     */
    overrideLock?: boolean;
    /**
     * If you are uploading a file and would like to replace
     * the existing file instead of generating a new filename,
     * you can set the following property to `true`
     */
    overwriteExistingFiles?: boolean;
    /**
     * Specify [populate](https://payloadcms.com/docs/queries/select#populate) to control which fields to include to the result from populated documents.
     */
    populate?: PopulateType;
    /**
     * Publish the document / documents with a specific locale.
     */
    publishSpecificLocale?: string;
    /**
     * The `PayloadRequest` object. You can pass it to thread the current [transaction](https://payloadcms.com/docs/database/transactions), user and locale to the operation.
     * Recommended to pass when using the Local API from hooks, as usually you want to execute the operation within the current transaction.
     */
    req?: Partial<PayloadRequest>;
    /**
     * Specify [select](https://payloadcms.com/docs/queries/select) to control which fields to include to the result.
     */
    select?: TSelect;
    /**
     * Opt-in to receiving hidden fields. By default, they are hidden from returned documents in accordance to your config.
     * @default false
     */
    showHiddenFields?: boolean;
    /**
     * When set to `true`, the operation will update both normal and trashed (soft-deleted) documents.
     * To update only trashed documents, pass `trash: true` and combine with a `where` clause filtering by `deletedAt`.
     * By default (`false`), the update will only include normal documents and exclude those with a `deletedAt` field.
     * @default false
     */
    trash?: boolean;
    /**
     * If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks.
     */
    user?: Document;
};
export type ByIDOptions<TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug<TSlug>> = {
    /**
     * The ID of the document to update.
     */
    id: number | string;
    /**
     * Limit documents to update
     */
    limit?: never;
    /**
     * Sort the documents, can be a string or an array of strings
     * @example '-createdAt' // Sort DESC by createdAt
     * @example ['group', '-createdAt'] // sort by 2 fields, ASC group and DESC createdAt
     */
    sort?: never;
    /**
     * A filter [query](https://payloadcms.com/docs/queries/overview)
     */
    where?: never;
} & BaseOptions<TSlug, TSelect>;
export type ManyOptions<TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug<TSlug>> = {
    /**
     * The ID of the document to update.
     */
    id?: never;
    /**
     * Limit documents to update
     */
    limit?: number;
    /**
     * Sort the documents, can be a string or an array of strings
     * @example '-createdAt' // Sort DESC by createdAt
     * @example ['group', '-createdAt'] // sort by 2 fields, ASC group and DESC createdAt
     */
    sort?: Sort;
    /**
     * A filter [query](https://payloadcms.com/docs/queries/overview)
     */
    where: Where;
} & BaseOptions<TSlug, TSelect>;
export type Options<TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug<TSlug>> = ByIDOptions<TSlug, TSelect> | ManyOptions<TSlug, TSelect>;
declare function updateLocal<TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug<TSlug>>(payload: Payload, options: ByIDOptions<TSlug, TSelect>): Promise<TransformCollectionWithSelect<TSlug, TSelect>>;
declare function updateLocal<TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug<TSlug>>(payload: Payload, options: ManyOptions<TSlug, TSelect>): Promise<BulkOperationResult<TSlug, TSelect>>;
declare function updateLocal<TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug<TSlug>>(payload: Payload, options: Options<TSlug, TSelect>): Promise<BulkOperationResult<TSlug, TSelect> | TransformCollectionWithSelect<TSlug, TSelect>>;
export { updateLocal };
//# sourceMappingURL=update.d.ts.map