import type { nullish } from '../nullish/index.js';
import type { _, OmitByValue_, RequiredKeys_, Value } from './/index.js';
import type { AlsoAccept } from '../type/AlsoAccept.js';
/**
* 💀 You most likely want to use distributive `$Override_` - this one can be
* super-slow in generic contexts
*
* @inline
*/
export type Override_ = _ & Omit>;
/**
* 💀 You most likely want to use distributive `$Override` - this one can be
* super-slow in generic contexts
*
* @inline
*/
export type Override;
}> = Override_;
/**
* ✅ Distributive version of `Override_`
*
* @inline
*/
export type $Override_ = Base extends any ? Overrides extends any ? Override_ : never : never;
/**
* ✅ Distributive version of `Override`
*
* @inline
*/
export type $Override;
}> = $Override_;
export type OverrideWithOptionals_ = _<{
[k in RequiredKeys_ | RequiredKeys_]: k extends RequiredKeys_ ? Overrides[k & keyof Overrides] : Base[k & keyof Base] | Value;
} & {
[k in Exclude | RequiredKeys_>]?: Value | Value;
}>;
export type OverrideWithOptionals;
}> = OverrideWithOptionals_;
export type $OverrideWithOptionals_ = Base extends any ? Overrides extends any ? OverrideWithOptionals_ : never : never;
export type $OverrideWithOptionals;
}> = $OverrideWithOptionals_;
export declare function overrideStrict;
}>(base: Base, overrides: Overrides): $OverrideWithOptionals;
/**
* @deprecated Use `overrideStrict` instead (or consider using
* `overrideDefined`)
*/
export declare const override: typeof overrideStrict;
export type OverrideWithNonStrictOptionals_ = OverrideWithOptionals_>;
export type OverrideWithNonStrictOptionals;
}> = OverrideWithNonStrictOptionals_;
export type $OverrideWithNonStrictOptionals_ = Base extends any ? Overrides extends any ? OverrideWithNonStrictOptionals_ : never : never;
export type $OverrideWithNonStrictOptionals;
}> = $OverrideWithNonStrictOptionals_;
export declare function overrideDefined;
}>(base: Base, overrides: Overrides): $OverrideWithNonStrictOptionals;
/** Nullable Overrides */
export declare function overrideDefined;
} | nullish>(base: Base, overrides: Overrides): Overrides extends object ? $OverrideWithNonStrictOptionals : Base;
//# sourceMappingURL=Override.d.ts.map