/**
 * `create(baseState, callback, options)` to create the next state
 *
 * ## Example
 *
 * ```ts
 * import { create } from '../index';
 *
 * const baseState = { foo: { bar: 'str' }, arr: [] };
 * const state = create(
 *   baseState,
 *   (draft) => {
 *     draft.foo.bar = 'str2';
 *   },
 * );
 *
 * expect(state).toEqual({ foo: { bar: 'str2' }, arr: [] });
 * expect(state).not.toBe(baseState);
 * expect(state.foo).not.toBe(baseState.foo);
 * expect(state.arr).toBe(baseState.arr);
 * ```
 */
declare const create: {
    <T extends unknown, F extends boolean = false, O extends import("./interface").PatchesOptions = false, R extends void | T | Promise<void> | Promise<T> = void>(base: T, mutate: (draft: import("./interface").Draft<T>) => R, options?: import("./interface").ExternalOptions<O, F> | undefined): import("./interface").CreateResult<T, O, F, R>;
    <T_1 extends unknown, F_1 extends boolean = false, O_1 extends import("./interface").PatchesOptions = false, R_1 extends void | Promise<void> = void>(base: T_1, mutate: (draft: T_1) => R_1, options?: import("./interface").ExternalOptions<O_1, F_1> | undefined): import("./interface").CreateResult<T_1, O_1, F_1, R_1>;
    <T_2 extends unknown, P extends any[] = [], F_2 extends boolean = false, O_2 extends import("./interface").PatchesOptions = false, R_2 extends void | Promise<void> = void>(mutate: (draft: import("./interface").Draft<T_2>, ...args: P) => R_2, options?: import("./interface").ExternalOptions<O_2, F_2> | undefined): (base: T_2, ...args: P) => import("./interface").CreateResult<T_2, O_2, F_2, R_2>;
    <T_3 extends unknown, O_3 extends import("./interface").PatchesOptions = false, F_3 extends boolean = false>(base: T_3, options?: import("./interface").ExternalOptions<O_3, F_3> | undefined): [T_3, () => import("./interface").Result<T_3, O_3, F_3>];
};
export { create };
