import { EJSONOptions } from "./extended_json.ts";
export interface Int32Extended { $numberInt: string;}
export class Int32 { _bsontype = "Int32"; value!: number; constructor(value: number | string) { if ((value as unknown) instanceof Number) { value = value.valueOf(); }
this.value = +value | 0; }
valueOf(): number { return this.value; }
toString(radix?: number): string { return this.value.toString(radix); }
toJSON(): number { return this.value; }
toExtendedJSON(options?: EJSONOptions): number | Int32Extended { if (options?.relaxed) return this.value; return { $numberInt: this.value.toString() }; }
static fromExtendedJSON( doc: Int32Extended, options?: EJSONOptions, ): number | Int32 { return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt); }
[Symbol.for("Deno.customInspect")](): string { return `new Int32(${this.valueOf()})`; }}