///
declare function assert(condition: unknown, message?: string): asserts condition;
declare function assertUnreachable(_: never): void;
declare function assertUnreachableThrowException(_: never): never;
type Mutable = {
-readonly [k in keyof T]: T[k];
};
type DeepMutable = {
-readonly [k in keyof T]: DeepMutable;
};
type DeepPartial = T extends any[] ? T : T extends Record ? {
[P in keyof T]?: DeepPartial;
} : T;
type MethodSignature any> = (...arguments_: Parameters) => ReturnType;
type Optional = T | null | undefined;
/**
* When given a union of objects, extracts all the keys of the union.
*
* "keyof ({a: string} | {b: string})" returns the never type.
*/
type DistributiveKeyOf = T extends object ? keyof T : never;
type Prettify = {
[K in keyof T]: T[K] extends Record ? Prettify : T[K];
} & {};
export { type DeepMutable, type DeepPartial, type DistributiveKeyOf, type MethodSignature, type Mutable, type Optional, type Prettify, assert, assertUnreachable, assertUnreachableThrowException };