export type Config = ConfigDc | ConfigNode export interface ConfigNode { /** * Generator identifier. Values from 0 to 1023 (10 bit). * It can be provided instead of datacenter and worker identifiers. */ node: number /** * Number used to reduce value of a generated timestamp, * Default: 0 */ epoch?: number dataCenter?: never worker?: never /** * @default false * @description wait until next available id if true when conflict */ noWait?: boolean } export interface ConfigDc { /** * DataCenter identifier. It can have values from 0 to 31 (5 bit). */ dataCenter: number /** * Worker identifier. It can have values from 0 to 31 (5 bit). */ worker: number /** * Number used to reduce value of a generated timestamp, * Default: 0 */ epoch?: number node?: never /** * @default false * @description wait until next available id if true when conflict */ noWait?: boolean } export interface Options { epoch: number genId: number dataCenter: number worker: number /** * @default false * @description wait until next available id if true when conflict */ noWait: boolean } export enum KoidMsg { hello = 'hello koid', SeqExceed = 'Sequence exceeded its maximum value', ClockBack = 'Clock moved backwards', NotValidEpoch = 'Not an valid epoch value, value should older than now', NotValidBigintId = 'Not an valid bigint id. Should gross then 0 and less equal then 9223372036854775807n', NotValidBigintString = 'Not an valid bigint string', NotValidHexString = 'Not an valid hex string', NotValidIdFormat = 'Not an valid id value', } export interface IdInfo { dataCenter: Options['dataCenter'] worker: Options['worker'] timestamp: number sequence: number /** hex id */ hex: string }