export function createLong(low: number, high: number): Long { return Long.create(low, high); } export class Long { static readonly ZERO = new Long(0, 0) low: number high: number constructor(low: number, high: number) { this.low = low | 0; this.high = high | 0; } static create(low: number, high: number): Long { // Special-case zero to avoid GC overhead for default values return low == 0 && high == 0 ? Long.ZERO : new Long(low, high); } toFloat64(): number { return (this.low >>> 0) + this.high * 0x100000000; } equals(other: Long): boolean { return this.low == other.low && this.high == other.high; } }