export type PlainObject = Record<string | symbol, unknown>;

export type PlainFunction = (...args: unknown[]) => unknown;

export type AsyncFunction = (...args: unknown[]) => Promise<unknown>;

export type PrimitiveTypes =
	| "undefined"
	| "null"
	| "number"
	| "string"
	| "boolean"
	| "symbol"
	| "bigint";

export type StandardTags =
	| "Undefined"
	| "Boolean"
	| "String"
	| "Function"
	| "Promise"
	| "Array"
	| "ArrayBuffer"
	| "SharedArrayBuffer"
	| "Int8Array"
	| "Int16Array"
	| "Int32Array"
	| "Uint8Array"
	| "Uint8ClampedArray"
	| "Uint16Array"
	| "Uint32Array"
	| "Float32Array"
	| "Float64Array"
	| "BigInt64Array"
	| "BigUint64Array"
	| "DataView"
	| "Map"
	| "Set"
	| "WeakMap"
	| "WeakSet"
	| "WeakRef"
	| "Proxy"
	| "RegExp"
	| "Error"
	| "Date"
	| "FinalizationRegistry"
	| "BigInt"
	| "Symbol"
	| "Iterator"
	| "AsyncFunction"
	| "GeneratorFunction"
	| "AsyncGeneratorFunction"
	| "Atomics"
	| "JSON"
	| "Math"
	| "Reflect"
	| "Null"
	| "Number"
	| "Generator"
	| "AsyncGenerator"
	| "Object"
	| "Intl.Collator"
	| "Intl.DateTimeFormat"
	| "Intl.ListFormat"
	| "Intl.NumberFormat"
	| "Intl.PluralRules"
	| "Intl.RelativeTimeFormat"
	| "Intl.Locale";
