"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Visitor = exports.GenericSeed = void 0; const utils_1 = require("../utils"); const interface_1 = require("./interface"); class GenericSeed { constructor(visitor = new Visitor()) { Object.defineProperty(this, "visitor", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.visitor = visitor; } static deserialize(deserializer, visitor = new Visitor()) { return deserializer.deserializeAny(visitor); } deserialize(deserializer) { return GenericSeed.deserialize(deserializer, this.visitor); } } exports.GenericSeed = GenericSeed; class Visitor { constructor(overrides) { Object.defineProperty(this, "overrides", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.overrides = overrides; } static from(visitor) { if (visitor instanceof Visitor || (0, interface_1.isVisitor)(visitor)) { return visitor; } return new this(visitor); } visitBoolean(value) { var _a, _b, _c; return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitBoolean) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; } visitNumber(value) { var _a, _b, _c; return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitNumber) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; } visitBigInt(value) { var _a, _b, _c; return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitBigInt) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; } visitString(value) { var _a, _b, _c; return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitString) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; } visitSymbol(value) { var _a, _b, _c; return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitSymbol) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; } visitNull() { var _a, _b, _c; return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitNull) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : null; } visitObject(access) { var _a, _b; if ((0, utils_1.isFunction)((_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitObject)) { return (_b = this.overrides) === null || _b === void 0 ? void 0 : _b.visitObject(access); } const result = []; for (const entry of access) { result.push(entry); } return Object.fromEntries(result); } visitIterable(access) { var _a, _b; if ((0, utils_1.isFunction)((_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitIterable)) { return (_b = this.overrides) === null || _b === void 0 ? void 0 : _b.visitIterable(access); } const result = []; for (const element of access) { result.push(element); } return result; } } exports.Visitor = Visitor;