//
//
//
import { isNull, Nil } from './maybe';
export const DICTIONARY = "dictionary";
export const RECORD = "record";
export type RecordType = typeof RECORD;
export type Known =
| KnownRecord
| [Known, ...Known[]]
| Known[]
| bigint
| Date
| number
| string
| boolean
| null;
export interface KnownRecord extends Record {}
export const isEmpty = (val: unknown): val is Nil =>
val == null || (isObject(val) && Object.keys(val).length === 0);
export const isObject = (val: unknown): val is Record => val === Object(val);
export const isPrimitive = (val: unknown): boolean => Object(val) !== val;
export const isPlainObject = (val: unknown): val is KnownRecord =>
!isNull(val) && isObject(val) && val.constructor === Object;