diff --git a/dist/base/index.cjs b/dist/base/index.cjs index fe7bed1..4f12115 100644 --- a/dist/base/index.cjs +++ b/dist/base/index.cjs @@ -474,6 +474,7 @@ var esimSchemaSpec = markAsSchemaSpec({ data_used: zod.z.boolean(), status: zod.z.string().nullable(), status_history: esimStatusHistorySchema, + status_updated_at: timestampNullable, name: zod.z.string(), android_auto: zod.z.boolean(), partner_price: zod.z.number().nullable(), diff --git a/dist/base/index.cjs.map b/dist/base/index.cjs.map index 5ba8085..cd912eb 100644 --- a/dist/base/index.cjs.map +++ b/dist/base/index.cjs.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/builders/client.ts","../../src/common.ts","../../src/specs/user.ts","../../src/specs/common.ts","../../src/specs/booking.ts","../../src/constants.ts","../../src/specs/promocode.ts","../../src/specs/country.ts","../../src/specs/currency.ts","../../src/specs/esim.ts","../../src/specs/payment.ts","../../src/specs/message.ts","../../src/specs/traffic_policy.ts","../../src/specs/package.ts","../../src/specs/partner.ts","../../src/specs/analytics.ts","../../src/specs/apiLogs.ts","../../src/specs/userTouchpoints.ts","../../src/specs/role.ts","../../src/specs/permission.ts","../../src/specs/review.ts","../../src/specs/destination.ts","../../src/specs/package_template.ts","../../src/specs/login_request.ts","../../src/index.client.ts"],"names":["z","packageSpecificationSchema","SUPPORTED_LOCALES"],"mappings":";AAAA,SAAS,KAAAA,UAAqB;;;ACA9B,SAAqB,SAAS;AAQvB,SAAS,cACZ,QACA,SAQU;AACV,MAAI,CAAC;AAAS,WAAO;AAErB,MAAI,UAAU;AAGd,MAAI,QAAQ,YAAY,CAAC,QAAQ,aAAa,GAAG;AAC7C,cAAU,QAAQ,SAAS;AAAA,EAC/B;AAEA,MAAI,QAAQ,YAAY,CAAC,QAAQ,aAAa,GAAG;AAC7C,cAAU,QAAQ,SAAS;AAAA,EAC/B;AAGA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAEhD,QAAI,CAAC,YAAY,UAAU,EAAE,SAAS,GAAG,KAAK,UAAU,QAAW;AAC/D;AAAA,IACJ;AAGA,QAAI,OAAQ,QAAgB,GAAG,MAAM,YAAY;AAC7C,gBAAW,QAAgB,GAAG,EAAE,KAAK;AAAA,IACzC;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,iBACZ,MACA,MACA,SACU;AACV,QAAM,aAAa,KAAK,KAAK,GAAG;AAEhC,MAAI,EAAE,QAAQ,OAAO;AACjB,UAAM,IAAI,MAAM,mBAAmB,UAAU,mBAAmB;AAAA,EACpE;AAEA,QAAM,QAAoC,CAAC;AAC3C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,EAAE,GAAG;AAChD,UAAM,GAAG,IAAI,QAAQ,OAAc,CAAC,GAAG,MAAM,GAAG,CAAC;AAAA,EACrD;AAEA,MAAI,eAA2B,EAAE,OAAO,KAAK;AAC7C,MAAI,KAAK;AAAU,mBAAe,aAAa,SAAS;AACxD,MAAI,KAAK;AAAU,mBAAe,aAAa,SAAS;AACxD,SAAO;AACX;AAMO,SAAS,sBACZ,MACA,MACA,SACU;AACV,QAAM,aAAa,KAAK,KAAK,GAAG;AAGhC,MAAI,WAAW,QAAQ,KAAK,UAAU,YAAY,QAAQ,MAAM;AAC5D,WAAO,iBAAiB,MAAM,MAAM,OAAO;AAAA,EAC/C;AAEA,QAAM,QAAoC,CAAC;AAG3C,aAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC3C,QAAI,QAAQ,WAAW,QAAQ,cAAc,QAAQ,YAAY;AAC7D,YAAM,GAAG,IAAI,QAAQ,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC;AAAA,IAC5C;AAAA,EACJ;AAGA,MAAI,SAAqB,EAAE,OAAO,KAAK;AAGvC,MAAI,cAAc,QAAQ,KAAK,aAAa,MAAM;AAC9C,aAAS,OAAO,SAAS;AAAA,EAC7B;AAEA,MAAI,cAAc,QAAQ,KAAK,aAAa,MAAM;AAC9C,aAAS,OAAO,SAAS;AAAA,EAC7B;AAEA,SAAO;AACX;AAEO,IAAM,gBAAgB,OAAO,qBAAqB;AAElD,SAAS,iBAAmC,MAAY;AAC3D,SAAO,eAAe,MAAM,eAAe;AAAA,IACvC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,UAAU;AAAA,EACd,CAAC;AACD,SAAO;AACX;AAEO,SAAS,aAAa,KAA0C;AACnE,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,iBAAiB;AACvE;;;ADxHO,SAAS,kBAAuC,MAAS,OAAiB,CAAC,GAAsB;AACtG,QAAM,aAAa,KAAK,KAAK,GAAG;AAEhC,MAAI,SAAS,UAAa,SAAS,MAAM;AACvC,UAAM,IAAI,MAAM,2BAA2B,cAAc,QAAQ,eAAe,IAAI,EAAE;AAAA,EACxF;AAGA,MAAI,gBAAgBA,GAAE,SAAS;AAC7B,WAAO,cAAc,IAAI;AAAA,EAC3B;AAGA,MAAI,OAAO,SAAS,YAAY,SAAS,SACrC,UAAU,QAAU,eAAe,QAAS,KAAa,WAAW,GAAG,WAAW,QAAS;AAC7F,QAAI;AAEF,aAAO,cAAc,IAA+B;AAAA,IACtD,SAAS,OAAO;AAEd,cAAQ,KAAK,0CAA0C,UAAU,MAAM,KAAK;AAAA,IAC9E;AAAA,EACF;AAGA,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,WAAW,QAAQ,KAAK,UAAU,SAAS;AAC1F,QAAI,EAAE,QAAQ,OAAO;AACnB,YAAM,IAAI,MAAM,kBAAkB,UAAU,mBAAmB;AAAA,IACjE;AACA,QAAI,SAAqBA,GAAE,MAAM,kBAAkB,KAAK,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC;AAC7E,QAAI,KAAK;AAAU,eAAS,OAAO,SAAS;AAC5C,QAAI,KAAK;AAAU,eAAS,OAAO,SAAS;AAC5C,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,WAAW,QAAQ,KAAK,UAAU,UAAU;AAC3F,QAAI,EAAE,QAAQ,OAAO;AACnB,YAAM,IAAI,MAAM,mBAAmB,UAAU,mBAAmB;AAAA,IAClE;AACA,QAAI,SAAqBA,GAAE,OAAO,kBAAkB,KAAK,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC;AAChF,QAAI,KAAK;AAAU,eAAS,OAAO,SAAS;AAC5C,QAAI,KAAK;AAAU,eAAS,OAAO,SAAS;AAC5C,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,WAAW,QAAQ,KAAK,UAAU,aAAa;AAC9F,QAAI,SAAqBA,GAAE,WAAW,CAAC,QAAQ;AAC7C,UAAI,OAAO,QAAQ,UAAU;AAE3B,cAAM,OAAO,IAAI,KAAK,GAAG;AACzB,eAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,SAAY;AAAA,MAC7C;AACA,UAAI,OAAO,QAAQ,UAAU;AAE3B,cAAM,OAAO,IAAI,KAAK,GAAG;AACzB,eAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,SAAY;AAAA,MAC7C;AAEA,aAAO;AAAA,IACT,GAAGA,GAAE,KAAK,EAAE,gBAAgB,oBAAoB,oBAAoB,sBAAsB,CAAC,CAAC;AAC5F,QAAI,KAAK;AAAU,eAAS,OAAO,SAAS;AAC5C,QAAI,KAAK;AAAU,eAAS,OAAO,SAAS;AAC5C,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,WAAW,QAAQ,KAAK,UAAU,UAAU;AAC3F,QAAI,SAAqBA,GAAE,OAAO;AAClC,QAAI,KAAK;AAAU,eAAS,OAAO,SAAS;AAC5C,QAAI,KAAK;AAAU,eAAS,OAAO,SAAS;AAC5C,WAAO;AAAA,EACT;AAGA,MACE,OAAO,SAAS,YAChB,SAAS,QACT,WAAW,QACX,KAAK,UAAU,YACf,QAAQ,MACR;AACA,WAAO,iBAAiB,MAAM,MAAM,iBAAiB;AAAA,EACvD;AAGA,MAAI,aAAa,IAAI,KAAM,OAAO,SAAS,YAAY,SAAS,QAAQ,WAAW,QAAS,KAAa,UAAU,UAAW;AAC5H,WAAO,sBAAsB,MAAM,MAAM,iBAAiB;AAAA,EAC5D;AAGA,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,QAAI;AACF,aAAO,sBAAsB,MAAM,MAAM,iBAAiB;AAAA,IAC5D,SAAS,OAAO;AAEd,cAAQ,KAAK,+CAA+C,UAAU,MAAM,KAAK;AAAA,IACnF;AAAA,EACF;AAGA,QAAM,IAAI,MAAM,iCAAiC,UAAU,MAAM,KAAK,UAAU,IAAI,CAAC,EAAE;AACzF;;;AE3GA,SAAS,KAAAA,UAAS;;;ACAlB,SAAS,KAAAA,UAAS;AAIX,IAAM,qBAAqB;AAC3B,IAAM,kBAAkB;AAExB,IAAM,qBAAqB;AAC3B,IAAM,8BAA8B;AACpC,IAAM,wBAAwB;AAC9B,IAAM,qBAAqB;AAC3B,IAAM,kBAAkB;AAExB,IAAM,wBAAwB;AAC9B,IAAM,qBAAqB;AAI3B,IAAM,kBAAkB;AACxB,IAAM,wBAAwB;AAC9B,IAAM,4BAA4B;AAWlC,IAAM,4BAA4B,EAAE,OAAO,aAAsB,UAAU,MAAM,UAAU,KAAK;AAChG,IAAM,oBAAoB,EAAE,OAAO,aAAsB,UAAU,MAAM,UAAU,KAAK;AACxF,IAAM,oBAAoB,EAAE,OAAO,aAAsB,UAAU,OAAO,UAAU,MAAM;AAE1F,IAAM,iBAAiB;AAAA,EAC1B,IAAIA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACnC,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY,EAAE,OAAO,UAAmB,YAAY,SAAS,UAAU,MAAM,UAAU,KAAK;AAAA,EAC5F,YAAY,EAAE,OAAO,UAAmB,YAAY,SAAS,UAAU,MAAM,UAAU,KAAK;AAChG;AAEO,IAAM,eAAe;AAAA,EACxB,GAAG;AAAA,EACH,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,OAAO;AAAA,EACf,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC1C;;;AD7CO,IAAM,aAAa;AAAA,EACtB,YAAY,EAAE,OAAO,YAAqB;AAAA,EAC1C,QAAQA,GAAE,OAAO;AAAA,EACjB,WAAWA,GAAE,QAAQ;AACzB;AAEO,IAAM,cAAc;AAAA,EACvB,OAAO;AAAA,EACP,IAAI;AAAA,IACA,OAAO;AAAA,IACP,IAAI;AAAA,EACR;AACJ;AAEO,IAAM,oBAAoB;AAAA,EAC7B,OAAO;AAAA,EACP,IAAI;AAAA,IACA,cAAc,EAAE,OAAO,SAAkB,UAAU,MAAM,UAAU,MAAM,IAAIA,GAAE,OAAO,EAAE;AAAA,IACxF,MAAM;AAAA,EACV;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AACd;AAEO,IAAM,iBAAiB,iBAAiB;AAAA,EAC3C,IAAIA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACnC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,GAAE,OAAO,EAAE,MAAM,EAAE,SAAS;AAAA,EACnC,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACzC,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA,EACzB,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACzC,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,SAASA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,UAAUA,GAAE,KAAK,CAAC,OAAO,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACzD,kBAAkBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACjD,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,YAAYA,GAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACzC,kBAAkBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACjD,KAAKA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,gBAAgBA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,OAAOA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,UAAU;AAAA,EACV,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACzC,eAAeA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9C,QAAQA,GAAE,KAAK,CAAC,UAAU,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACpE,MAAM,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AAAA,EAC9F,aAAa,EAAE,OAAO,SAAkB,IAAI,EAAE,OAAO,UAAmB,YAAY,sBAAsB,GAAG,UAAU,MAAM,UAAU,KAAK;AAAA,EAC5I,SAASA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,WAAW,EAAE,OAAO,YAAqB;AAAA,EACzC,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,MAAM,UAAU,KAAK;AAAA,EACpG,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,qBAAqBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AACxD,CAAC;;;AEpED,SAAS,KAAAA,UAAS;;;ACAlB,SAAS,KAAAA,UAAS;AAEX,IAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQO,IAAM,yBAAyBA,GAAE,KAAK,iBAAiB;;;ACpC9D,SAAS,KAAAA,UAAS;AAaX,IAAM,6BAA6BA,GAAE,OAAO;AAAA,EAC/C,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,GAAGA,GAAE,MAAMA,GAAE,OAAO,CAAC,CAAC;AAAA,EACzD,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACtC,cAAcA,GAAE,KAAK,CAAC,gBAAgB,gBAAgB,WAAW,WAAW,CAAC,EAAE,SAAS;AAAA,EACxF,gBAAgBA,GAAE,OAAO,EAAE,SAAS;AACxC,CAAC;AAGM,IAAM,sBAAsB,iBAAiB;AAAA,EAChD,IAAIA,GAAE,OAAO;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAGhC,MAAMA,GAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,aAAaA,GAAE,OAAO;AAAA,EACtB,MAAMA,GAAE,OAAO;AAAA,EACf,YAAY;AAAA,EACZ,gBAAgBA,GAAE,OAAO;AAAA,EACzB,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,MAAMA,GAAE,KAAK,CAAC,YAAY,WAAW,6BAA6B,CAAC,EAAE,SAAS,EAAE,GAAGA,GAAE,OAAO,CAAC;AAAA,EAC7F,OAAOA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,EACzB,YAAYA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,EAC9B,uBAAuB,2BAA2B,SAAS;AAAA,EAC3D,YAAY;AAAA,EACZ,UAAU;AAAA;AAAA,EAGV,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA;AAAA,EAGpF,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,WAAWA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxC,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,cAAcA,GAAE,OAAO,EAAE,SAAS;AACtC,CAAC;;;AF9CM,IAAM,6BAA6BA,GAAE,KAAK;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAeM,IAAM,sBAAsBA,GAAE,KAAK;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAIM,IAAM,6BAA6BA,GAAE,OAAO;AAAA,EAC/C,qBAAqBA,GAAE,QAAQ;AAAA,EAC/B,UAAUA,GAAE,MAAM,0BAA0B;AAChD,CAAC;AAEM,IAAM,0BAA0BA,GAAE,OAAO;AAAA,EAC5C,+BAA+BA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9D,yBAAyBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxD,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC1C,CAAC,EAAE,SAAS,EAAE,SAAS;AAKhB,IAAM,oBAAoB,iBAAiB;AAAA,EAC9C,IAAIA,GAAE,OAAO,EAAE,SAAS;AAAA,EACxB,aAAaA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACtC,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,KAAKA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACpC,OAAOA,GAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9C,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACtC,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,eAAeA,GAAE,OAAO,EAAE,SAAS;AAAA,EACnC,QAAQA,GAAE,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,SAAS;AAAA,EACzC,eAAeA,GAAE,OAAOA,GAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC1C,QAAQ;AAAA,EACR,QAAQ,oBAAoB,SAAS,EAAE,SAAS;AAAA,EAChD,MAAM;AAAA,IACF,OAAO;AAAA,IACP,IAAI;AAAA,MACA,QAAQA,GAAE,OAAO;AAAA,MACjB,QAAQA,GAAE,QAAQ;AAAA,MAClB,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC3C;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,uBAAuB;AAAA,IACnB,OAAO;AAAA,IACP,IAAI;AAAA,MACA,qBAAqBA,GAAE,QAAQ;AAAA,MAC/B,UAAU;AAAA,QACN,OAAO;AAAA,QACP,IAAI;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,mCAAmCA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EACnE,kBAAkBA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EAClD,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,wBAAwBA,GAAE,MAAM,0BAA0B,EAAE,IAAI,CAAC;AAAA,EACjE,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,SAAS,EAAE,OAAO,UAAmB,YAAY,mBAAmB;AAAA,EACpE,oBAAoB;AAAA,EACpB,aAAa;AAAA,IACT,OAAO;AAAA,IACP,IAAI,EAAE,OAAO,UAAmB,YAAY,sBAAsB;AAAA,IAClE,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,OAAO;AAAA,IACH,OAAO;AAAA,IACP,IAAI,EAAE,OAAO,UAAmB,YAAY,gBAAgB;AAAA,IAC5D,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,OAAO;AAAA,IACH,OAAO;AAAA,IACP,IAAI,EAAE,OAAO,UAAmB,YAAY,gBAAgB;AAAA,IAC5D,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,2BAA2BA,GAAE,OAAO;AAAA,IAChC,sBAAsBA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,CAAC,EAAE,SAAS,EAAE,SAAS;AAC3B,CAAC;;;AGhID,SAAS,KAAAA,UAAS;AAKX,IAAM,oBAAoB,iBAAiB;AAAA,EAC9C,GAAG;AAAA,EACH,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,KAAKA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC1B,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA,EACzB,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACpC,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUA,GAAE,QAAQ;AAAA,EACpB,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,QAAQA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,WAAWA,GAAE,OAAOA,GAAE,OAAO,CAAC;AAAA,EAC9B,WAAWA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,WAAWA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;;;ACtBD,SAAS,KAAAA,UAAS;AAKX,IAAM,uBAAuBA,GAAE,OAAO;AAAA,EACzC,UAAUA,GAAE,OAAO;AACvB,CAAC;AAKM,IAAM,qBAAqB,iBAAiB;AAAA,EAC/C,IAAIA,GAAE,OAAO;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEhC,MAAMA,GAAE,OAAO,EAAE,SAAS,6CAA6C;AAAA;AAAA,EAEvE,QAAQA,GAAE,OAAO,EAAE,SAAS,uCAAkC;AAAA;AAAA,EAE9D,MAAMA,GAAE,OAAO,EAAE,SAAS,+CAA+C;AAAA;AAAA,EAEzE,MAAMA,GAAE,OAAO,EAAE,SAAS,yCAAyC;AAAA;AAAA,EAEnE,YAAYA,GAAE,QAAQ,EAAE,SAAS,sCAAsC;AAC3E,CAAC;;;AC5BD,SAAS,KAAAA,WAAS;AAYX,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EACxC,mBAAmBA,IAAE,OAAO;AAAA,EAC5B,QAAQA,IAAE,OAAO;AAAA,EACjB,QAAQA,IAAE,OAAO;AAAA,EACjB,WAAW;AACf,CAAC;AAEM,IAAM,0BAA0B,iBAAiBA,IAAE,MAAM,mBAAmB,EAAE,SAAS,EAAE,SAAS,CAAC;AAGnG,IAAM,iBAAiB,iBAAiB;AAAA,EAC3C,IAAIA,IAAE,OAAO;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAGhC,MAAMA,IAAE,OAAO;AAAA,EACf,IAAIA,IAAE,OAAO;AAAA,EACb,OAAOA,IAAE,OAAO;AAAA,EAChB,UAAUA,IAAE,OAAO;AAAA,EACnB,gBAAgBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/C,YAAYA,IAAE,OAAO;AAAA,EACrB,WAAWA,IAAE,OAAO;AAAA,EACpB,MAAMA,IAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,WAAWA,IAAE,QAAQ;AAAA,EACrB,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,gBAAgB;AAAA,EAChB,MAAMA,IAAE,OAAO;AAAA,EACf,cAAcA,IAAE,QAAQ;AAAA,EACxB,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,KAAK,CAAC,OAAO,SAAS,WAAW,QAAQ,YAAY,SAAS,CAAC;AAAA,EACvE,iBAAiBA,IAAE,QAAQ;AAAA,EAC3B,aAAaA,IAAE,QAAQ;AAAA,EACvB,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAGzB,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA;AAAA,EAGpF,eAAe;AAAA,EACf,cAAc;AAClB,CAAC;;;AC3DD,SAAS,KAAAA,WAAS;AAUX,IAAM,oBAAoB,iBAAiB;AAAA,EAC9C,GAAG;AAAA;AAAA,EAGH,QAAQA,IAAE,OAAO;AAAA,EACjB,UAAUA,IAAE,OAAO;AAAA,EACnB,MAAM;AAAA,EACN,QAAQA,IAAE,KAAK,CAAC,OAAO,UAAU,UAAU,CAAC;AAAA,EAC5C,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,OAAOA,IAAE,QAAQ;AAAA,EACjB,QAAQA,IAAE,KAAK,CAAC,WAAW,cAAc,aAAa,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA,EAC1E,mBAAmBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAClD,eAAeA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA;AAAA,EAE9C,wBAAwBA,IAAE,MAAMA,IAAE,OAAO;AAAA,IACrC,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,IAClC,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,IAClC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,IACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,IACjC,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,CAAC,CAAC,EAAE,SAAS;AAAA;AAAA,EAGb,MAAM,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AAAA,EAC9F,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,MAAM,UAAU,KAAK;AAAA;AAAA,EAGpG,wBAAwBA,IAAE,OAAO;AAAA,IAC7B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAC7B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC3B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC3B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,IAClC,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC3C,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,IACrC,kBAAkBA,IAAE,QAAQ,EAAE,SAAS;AAAA,IACvC,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChD,CAAC,EAAE,SAAS;AAAA,EAEZ,oCAAoCA,IAAE,OAAO;AAAA,IACzC,aAAaA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IAC1C,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,IAChC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,IAClC,aAAaA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC5C,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,IAClC,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,CAAC,EAAE,SAAS;AAChB,CAAC;;;AC3DD,SAAS,KAAAA,WAAS;AAKX,IAAM,oBAAoB,iBAAiB;AAAA,EAC9C,IAAIA,IAAE,OAAO;AAAA,EACb,KAAKA,IAAE,OAAO;AAAA,EACd,QAAQA,IAAE,KAAK,CAAC,QAAQ,OAAO,OAAO,CAAC;AAAA,EACvC,QAAQA,IAAE,KAAK,CAAC,WAAW,QAAQ,UAAU,WAAW,CAAC;AAAA,EACzD,YAAY;AAAA,EACZ,YAAY;AAChB,CAAC;;;ACZD,SAAS,KAAAA,WAAS;AAKX,IAAM,oBAAoB,iBAAiB;AAAA,EAC9C,GAAG;AAAA,EACH,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO;AAAA,EACtB,aAAaA,IAAE,OAAO;AAAA,EACtB,UAAUA,IAAE,OAAO;AACvB,CAAC;;;ACXD,SAAS,KAAAA,WAAS;AAaX,IAAM,oBAAoB,iBAAiB;AAAA,EAC9C,GAAG;AAAA;AAAA,EAEH,aAAaA,IAAE,OAAO;AAAA,EACtB,UAAUA,IAAE,OAAO;AAAA,EACnB,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,OAAOA,IAAE,OAAO;AAAA,EAChB,OAAOA,IAAE,OAAO;AAAA,EAChB,QAAQA,IAAE,QAAQ;AAAA,EAClB,WAAWA,IAAE,QAAQ;AAAA,EACrB,WAAWA,IAAE,QAAQ;AAAA,EACrB,UAAUA,IAAE,OAAO;AAAA,EACnB,gBAAgB,EAAE,OAAO,UAAmB,YAAY,2BAA2B,UAAU,KAAK;AAAA,EAClG,OAAOA,IAAE,OAAO;AAAA,EAChB,eAAeA,IAAE,OAAO;AAAA,EACxB,MAAMA,IAAE,OAAO;AAAA,EACf,MAAMA,IAAE,OAAO;AAAA,EACf,MAAMA,IAAE,KAAK,CAAC,gBAAgB,gBAAgB,WAAW,WAAW,CAAC,EAAE,SAAS;AAAA,EAChF,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,qBAAqBA,IAAE,OAAO;AAAA,IAC1B,MAAMA,IAAE,OAAO;AAAA,EACnB,CAAC,EAAE,SAAS;AAAA;AAAA,EAGZ,SAAS,EAAE,OAAO,UAAmB,YAAY,mBAAmB;AAAA,EACpE,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA;AAAA;AAAA;AAAA,EAKpF,cAAc;AAAA,IACV,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA;AAEJ,CAAC;AAEM,IAAM,sBAAsB,iBAAiB;AAAA,EAChD,MAAMA,IAAE,OAAO;AAAA,EACf,KAAKA,IAAE,OAAO;AAAA,EACd,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO;AAAA,EAChB,WAAWA,IAAE,QAAQ;AAAA,EACrB,WAAWA,IAAE,QAAQ;AAAA,EACrB,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IAAE,OAAO;AAAA,EACtB,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,MAAM,UAAU,KAAK;AACxG,CAAC;AAEM,IAAM,qBAAqB,iBAAiB;AAAA,EAC/C,gBAAgB,EAAE,OAAO,UAAmB,YAAY,2BAA2B,UAAU,KAAK;AAAA,EAClG,GAAG;AACP,CAAC;AAEM,IAAM,sBAAsB,iBAAiB;AAAA,EAChD,GAAG;AAAA,EACH,OAAOA,IAAE,KAAK,CAAC,UAAU,KAAK,CAAC;AAAA,EAC/B,YAAYA,IAAE,OAAO;AAAA,EACrB,kBAAkBA,IAAE,OAAO;AAAA,EAC3B,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAE/C,CAAC;;;AC5ED,SAAS,KAAAA,WAAkB;AAgBpB,IAAM,gBAAgBA,IAAE,OAAO;AAAA,EAClC,QAAQA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,aAAaA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,SAASA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC5C,CAAC;AAGM,IAAM,kBAAkBA,IAAE,OAAO;AAAA,EACpC,OAAOA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC3C,YAAYA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAChD,YAAYA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAChD,WAAWA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AACnD,CAAC;AAGM,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACvC,4BAA4BA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3D,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,aAAaA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC/C,CAAC;AAGM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EACzC,gBAAgBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/C,eAAeA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9C,WAAWA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,UAAUA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC7C,CAAC;AAGM,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACvC,aAAaA,IAAE,OAAO;AAAA,EACtB,OAAOA,IAAE,OAAO;AAAA,EAChB,MAAMA,IAAE,KAAK,CAAC,gBAAgB,cAAc,CAAC;AAAA,EAC7C,OAAOA,IAAE,OAAO;AAAA,EAChB,SAASA,IAAE,OAAO,EAAE,OAAOA,IAAE,QAAQ,QAAQ,GAAG,YAAYA,IAAE,QAAQ,kBAAkB,EAAE,CAAC;AAC/F,CAAC;AAGM,IAAMC,8BAA6BD,IAAE,OAAO;AAAA,EAC/C,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,aAAaA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAChD,CAAC;AAGM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC1C,UAAUA,IAAE,KAAK,CAAC,SAAS,QAAQ,CAAC;AAAA,EACpC,yBAAyBA,IAAE,OAAO;AAAA,EAClC,oBAAoBA,IAAE,OAAO;AAAA,IACzB,OAAOA,IAAE,QAAQ,QAAQ;AAAA,IACzB,YAAYA,IAAE,QAAQ,qBAAqB;AAAA,IAC3C,UAAUA,IAAE,QAAQ,IAAI;AAAA,EAC5B,CAAC;AAAA,EACD,eAAeA,IAAE,MAAM,kBAAkB;AAC7C,CAAC;AAGM,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EAC/C,QAAQA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,WAAWA,IAAE,OAAO;AAAA,EACpB,KAAKA,IAAE,OAAO;AAAA,EACd,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQ;AAAA,EACR,YAAYA,IAAE,OAAOA,IAAE,OAAO,CAAC;AACnC,CAAC;AAGM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EACzC,MAAMA,IAAE,KAAK,CAAC,QAAQ,UAAU,cAAc,KAAK,CAAC;AAAA,EACpD,OAAOA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC;AAAA,EACvC,YAAYA,IAAE,KAAK;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACL,CAAC;AAGM,IAAM,8BAA8BA,IAAE,OAAO;AAAA,EAChD,UAAUA,IAAE,KAAK,CAAC,SAAS,YAAY,eAAe,aAAa,CAAC;AAAA,EACpE,SAASA,IAAE,MAAM,0BAA0B,EAAE,SAAS,EAAE,SAAS;AACrE,CAAC;AAEM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EACzC,eAAeA,IAAE,OAAO;AAAA,EACxB,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,MAAMA,IAAE,OAAO;AAAA,EACf,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,YAAY,4BAA4B,SAAS;AAAA,EACjD,YAAY,4BAA4B,SAAS;AACrD,CAAC;AAGM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EACzC,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,cAAcA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,cAAcA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AACjD,CAAC;AAGM,IAAM,oBAAoBA,IAAE,OAAO;AAAA,EACtC,QAAQA,IAAE,OAAO;AAAA,EACjB,QAAQA,IAAE,QAAQ;AACtB,CAAC;AAGM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC1C,MAAMA,IAAE,OAAO;AAAA,EACf,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC9C,YAAYA,IAAE,IAAI;AACtB,CAAC;AAGM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EACxC,mBAAmBA,IAAE,OAAO;AAAA,EAC5B,SAASA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE;AAAA,IAC1B,CAAC,QAAgC,OAAO,KAAK,GAAG,EAAE,MAAM,SAAO,kBAAkB,SAAS,GAAuB,CAAC;AAAA,IAClH,EAAE,SAAS,iCAAiC;AAAA,EAChD,EAAE,SAAS;AAAA,EACX,cAAcA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE;AAAA,IAC/B,CAAC,QAAgC,OAAO,KAAK,GAAG,EAAE,MAAM,SAAO,kBAAkB,SAAS,GAAuB,CAAC;AAAA,IAClH,EAAE,SAAS,iCAAiC;AAAA,EAChD,EAAE,SAAS;AACf,CAAC,EAAE,SAAS,EAAE,SAAS;AAGhB,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACvC,OAAOA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACrC,MAAMA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACpC,QAAQA,IAAE,OAAO;AACrB,CAAC,EAAE,SAAS,EAAE,SAAS;AAGhB,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EACnC,MAAMA,IAAE,OAAO;AAAA,EACf,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAMA,IAAE,OAAO;AAAA,EACf,KAAKA,IAAE,OAAO;AAAA,EACd,QAAQA,IAAE,KAAK,CAAC,SAAS,OAAO,YAAY,MAAM,CAAC;AAAA,EACnD,QAAQA,IAAE,KAAK,CAAC,kBAAkB,eAAe,WAAW,CAAC;AAAA,EAC7D,QAAQ,qBAAqB,SAAS,EAAE,SAAS;AACrD,CAAC;AAEM,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EACnC,SAASA,IAAE,QAAQ;AAAA,EACnB,uBAAuBA,IAAE,OAAO;AAAA,IAC5B,MAAMA,IAAE,OAAO;AAAA,IACf,cAAcA,IAAE,OAAO;AAAA,IACvB,aAAaA,IAAE,OAAO;AAAA,IACtB,kBAAkBA,IAAE,OAAO;AAAA,IAC3B,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACzC,CAAC;AAAA,EACD,yBAAyBA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAClD,iCAAiCA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAChE,WAAWA,IAAE,OAAO;AAAA,EACpB,iBAAiBA,IAAE,OAAO;AAC9B,CAAC;AAGM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAC9C,eAAeA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9C,wBAAwBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,yBAAyBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxD,cAAcA,IAAE,KAAK,CAAC,aAAa,YAAY,YAAY,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACzF,8BAA8BA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACtD,kCAAkCA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACjE,yBAAyBA,IAAE,OAAO;AAAA,IAC9B,gBAAgBA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IACxC,yBAAyBA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,IAClD,cAAcA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC3C,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjB,CAAC;AAGM,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EAC3C,kBAAkBA,IAAE,OAAO;AAAA,IACvB,MAAMA,IAAE,OAAO;AAAA,IACf,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IAC9C,YAAYA,IAAE,IAAI;AAAA,IAClB,yBAAyBA,IAAE,KAAK,CAAC,gBAAgB,WAAW,CAAC,EAAE,SAAS;AAAA,EAC5E,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACvB,WAAW,eAAe,SAAS,EAAE,SAAS;AAAA,EAC9C,kBAAkBA,IAAE,OAAO;AAAA,IACvB,QAAQ;AAAA,EACZ,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACvB,sBAAsBA,IAAE,OAAO;AAAA,IAC3B,mBAAmBA,IAAE,OAAO;AAAA,IAC5B,2BAA2BA,IAAE,QAAQ;AAAA,EACzC,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACvB,aAAa,gBAAgB,SAAS,EAAE,SAAS;AAAA,EACjD,WAAWA,IAAE,MAAM,cAAc,EAAE,SAAS;AAAA,EAC5C,OAAOA,IAAE,OAAO;AAAA,IACZ,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,IAC5B,eAAeA,IAAE,QAAQ;AAAA,EAC7B,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACvB,yBAAyBA,IAAE,OAAO;AAAA,IAC9B,gBAAgBA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,IACnD,yBAAyBA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,IAC7D,cAAcA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EACtD,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACvB,uBAAuB,0BAA0B,SAAS,EAAE,SAAS;AAAA,EACrE,eAAeA,IAAE,OAAO;AAAA,IACpB,SAASA,IAAE,QAAQ;AAAA,IACnB,qBAAqBA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAClD,CAAC,EAAE,SAAS,EAAE,SAAS;AAC3B,CAAC;AAKM,IAAM,yBAAyB,iBAAiB;AAAA,EACnD,aAAaA,IAAE,OAAO;AAAA,EACtB,OAAOA,IAAE,OAAO;AAAA,EAChB,MAAMA,IAAE,KAAK,CAAC,gBAAgB,cAAc,CAAC;AAAA,EAC7C,OAAOA,IAAE,OAAO;AAAA,EAChB,SAAS,EAAE,OAAO,UAAmB,YAAY,mBAAmB;AACxE,CAAC;AAGM,IAAM,gCAAgC,iBAAiB;AAAA,EAC1D,oBAAoBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACxC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,gBAAgBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/C,uBAAuBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACtD,gBAAgBA,IAAE,KAAK,CAAC,WAAW,QAAQ,CAAC;AAAA,EAC5C,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,cAAc;AAAA,EACd,cAAc;AAAA,EACd,oBAAoB;AAAA,IAChB,OAAO;AAAA,IACP,IAAI;AAAA,MACA,SAAS;AAAA,QACL,OAAO;AAAA,QACP,IAAI;AAAA,UACA,UAAUA,IAAE,KAAK,CAAC,SAAS,QAAQ,CAAC;AAAA,UACpC,yBAAyBA,IAAE,OAAO;AAAA,UAClC,oBAAoB,EAAE,OAAO,UAAmB,YAAY,uBAAuB,UAAU,KAAK;AAAA,UAClG,eAAe;AAAA,YACX,OAAO;AAAA,YACP,IAAI;AAAA,cACA,OAAO;AAAA,cACP,IAAI;AAAA,gBACA,aAAaA,IAAE,OAAO;AAAA,gBACtB,OAAOA,IAAE,OAAO;AAAA,gBAChB,MAAMA,IAAE,KAAK,CAAC,gBAAgB,cAAc,CAAC;AAAA,gBAC7C,OAAOA,IAAE,OAAO;AAAA,gBAChB,SAAS,EAAE,OAAO,UAAmB,YAAY,mBAAmB;AAAA,cACxE;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,UAAU;AAAA,MACd;AAAA,MACA,MAAM;AAAA,QACF,OAAO;AAAA,QACP,IAAI;AAAA,UACA,yBAAyBA,IAAE,OAAO;AAAA,UAClC,oBAAoB,EAAE,OAAO,UAAmB,YAAY,uBAAuB,UAAU,KAAK;AAAA,UAClG,eAAe;AAAA,YACX,OAAO;AAAA,YACP,IAAI;AAAA,cACA,OAAO;AAAA,cACP,IAAI;AAAA,gBACA,aAAaA,IAAE,OAAO;AAAA,gBACtB,OAAOA,IAAE,OAAO;AAAA,gBAChB,MAAMA,IAAE,KAAK,CAAC,gBAAgB,cAAc,CAAC;AAAA,gBAC7C,OAAOA,IAAE,OAAO;AAAA,gBAChB,SAAS,EAAE,OAAO,UAAmB,YAAY,mBAAmB;AAAA,cACxE;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,UAAU;AAAA,MACd;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,EACd;AACJ,CAAC;AAGM,IAAM,6BAA6B,iBAAiB;AAAA,EACvD,kBAAkB;AAAA,IACd,OAAO;AAAA,IACP,IAAI,sBAAsB;AAAA,IAC1B,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,WAAW;AAAA,IACP,OAAO;AAAA,IACP,IAAI,eAAe;AAAA,IACnB,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,kBAAkB;AAAA,IACd,OAAO;AAAA,IACP,IAAI;AAAA,MACA,QAAQ;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO;AAAA,IACP,IAAI;AAAA,MACA,mBAAmBA,IAAE,OAAO;AAAA,MAC5B,2BAA2BA,IAAE,QAAQ;AAAA,IACzC;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,WAAW;AAAA,IACP,OAAO;AAAA,IACP,IAAI;AAAA,MACA,OAAO;AAAA,MACP,IAAI,eAAe;AAAA,IACvB;AAAA,IACA,UAAU;AAAA,EACd;AAAA,EACA,uBAAuB;AAAA,IACnB,OAAO;AAAA,IACP,IAAI,0BAA0B;AAAA,IAC9B,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AACJ,CAAC;AAGM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC1C,KAAKA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,SAASA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,SAASA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAClC,QAAQA,IAAE,OAAO;AAAA,IACb,sBAAsBA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACnD,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjB,CAAC;AAGM,IAAM,oBAAoB,iBAAiB;AAAA;AAAA,EAE9C,IAAIA,IAAE,OAAO;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAGhC,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,MAAMA,IAAE,KAAK,CAAC,aAAa,YAAY,YAAY,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACjF,WAAWA,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,aAAaA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAG5C,SAAS;AAAA,IACL,OAAO;AAAA,IACP,IAAI,qBAAqB;AAAA,IACzB,UAAU;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACL,OAAO;AAAA,IACP,IAAI,cAAc;AAAA,IAClB,UAAU;AAAA,EACd;AAAA,EACA,cAAc;AAAA,IACV,OAAO;AAAA,IACP,IAAI,mBAAmB;AAAA,IACvB,UAAU;AAAA,EACd;AAAA,EACA,iBAAiB;AAAA,IACb,OAAO;AAAA,IACP,IAAI,qBAAqB;AAAA,IACzB,UAAU;AAAA,EACd;AAAA;AAAA,EAGA,QAAQ,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACnF,OAAO,EAAE,OAAO,SAAkB,IAAI,EAAE,OAAO,UAAmB,YAAY,gBAAgB,GAAG,UAAU,KAAK;AAAA;AAAA,EAGhH,sBAAsB;AAAA;AAAA,EAEtB,iBAAiB;AAAA,IACb,OAAO;AAAA,IACP,IAAI,qBAAqB;AAAA,IACzB,UAAU;AAAA,EACd;AAAA;AAAA,EAGA,mBAAmB;AAAA,IACf,OAAO;AAAA,IACP,IAAI,uBAAuB;AAAA,IAC3B,UAAU;AAAA,EACd;AAAA;AAAA,EAGA,MAAM;AAAA,IACF,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA;AAAA,EAGA,WAAW;AAAA,IACP,OAAO;AAAA,IACP,IAAIA,IAAE,OAAO;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA;AAAA,EAGA,MAAM;AAAA,IACF,OAAO;AAAA,IACP,IAAI,kBAAkB;AAAA,IACtB,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA;AAAA,EAGA,kBAAkB;AAAA,IACd,OAAO;AAAA,IACP,IAAI,sBAAsB;AAAA,IAC1B,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AACJ,CAAC;AAEM,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC5C,aAAaA,IAAE,OAAO;AAAA,EACtB,OAAOA,IAAE,OAAO;AAAA,EAChB,MAAMA,IAAE,KAAK,CAAC,gBAAgB,gBAAgB,WAAW,WAAW,CAAC;AAAA,EACrE,OAAOA,IAAE,OAAO;AAAA,EAChB,SAASA,IAAE,OAAO;AACtB,CAAC;AAGD,IAAM,8BAA8B;AAAA,EAChC,aAAaA,IAAE,OAAO;AAAA,EACtB,OAAOA,IAAE,OAAO;AAAA,EAChB,MAAMA,IAAE,KAAK,CAAC,gBAAgB,gBAAgB,WAAW,WAAW,CAAC;AAAA,EACrE,OAAOA,IAAE,OAAO;AAAA,EAChB,SAAS,EAAE,OAAO,UAAmB,YAAY,mBAAmB;AACxE;AAGO,IAAM,sBAAsB,iBAAiB;AAAA;AAAA,EAEhD,IAAIA,IAAE,OAAO;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAGhC,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,MAAMA,IAAE,KAAK,CAAC,WAAW,UAAU,CAAC;AAAA,EACpC,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,YAAY;AAAA,IACR,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,UAAU;AAAA,EACd;AAAA,EACA,gBAAgB;AAAA,IACZ,OAAO;AAAA,IACP,IAAI;AAAA,EACR;AACJ,CAAC;;;AC3eD,SAAS,KAAAA,WAAS;AAKX,IAAM,gBAAgB,iBAAiB;AAAA,EAC1C,GAAG;AAAA,EACH,SAASA,IAAE,OAAO;AAAA,EAClB,MAAMA,IAAE,OAAO,EAAE,MAAM,qBAAqB;AAAA;AAAA,EAC5C,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,OAAOA,IAAE,OAAO;AAAA,EAChB,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,KAAKA,IAAE,OAAO;AAClB,CAAC;;;ACbD,SAAS,KAAAA,WAAS;AAIX,IAAM,cAAc;AAAA,EACvB,OAAO;AAAA,EACP,IAAIA,IAAE,QAAQ;AAAA,EACd,UAAU;AACd;AAEO,IAAM,mBAAmB,iBAAiB;AAAA,EAC7C,IAAIA,IAAE,OAAO,EAAE,SAAS;AAAA,EACxB,QAAQA,IAAE,OAAO;AAAA,EACjB,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,IAAE,OAAO;AAAA,EACf,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAaA,IAAE,OAAO;AAC1B,CAAC;;;ACrBD,SAAS,KAAAA,WAAS;AAYX,IAAM,4BAA4B,iBAAiB;AAAA,EACtD,IAAIA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACnC,0BAA0BA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACzD,MAAM,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AAAA,EAC9F,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,MAAM,UAAU,KAAK;AAAA,EACpG,YAAY,EAAE,OAAO,UAAmB,YAAY,uBAAuB,UAAU,MAAM,UAAU,KAAK;AAAA,EAC1G,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,MAAM,UAAU,KAAK;AAAA,EACpG,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,iCAAiC;AAAA,EACjC,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AAAA,EACpG,YAAY,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AACxG,CAAC;;;AC7BD,SAAS,KAAAA,WAAS;AAIX,IAAM,iBAAiB,iBAAiB;AAAA,EAC7C,IAAIA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACnC,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO;AAAA,EACtB,aAAa,EAAE,OAAO,SAAkB,IAAI,EAAE,OAAO,UAAmB,YAAY,sBAAsB,GAAG,UAAU,MAAM,UAAU,KAAK;AAAA,EAC5I,YAAY;AAAA,EACZ,YAAY;AACd,CAAC;;;ACXD,SAAS,KAAAA,WAAS;AAIX,IAAM,uBAAuB,iBAAiB;AAAA,EACnD,IAAIA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACnC,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO;AAAA,EACtB,YAAY;AAAA,EACZ,YAAY;AACd,CAAC;;;ACVD,SAAS,KAAAA,WAAS;AAWX,IAAM,oBAAoB;AAI1B,IAAM,0BAA0BA,IAAE,KAAK,CAAC,gBAAgB,SAAS,CAAC;AAIlE,IAAM,mBAAmBA,IAAE,OAAO;AAAA,EACrC,cAAcA,IAAE,OAAO;AAAA,EACvB,cAAc;AAClB,CAAC;AAKM,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC5C,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAC1C,CAAC,EAAE,SAAS;AAKL,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EACzC,aAAa;AAAA,EACb,aAAa;AACjB,CAAC;AAKM,IAAM,mBAAmB,iBAAiB;AAAA,EAC7C,IAAIA,IAAE,OAAO,EAAE,SAAS;AAAA,EACxB,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3C,WAAWA,IAAE,OAAOA,IAAE,IAAI,CAAC;AAAA,EAC3B,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AAAA,EACpG,YAAY,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AACxG,CAAC;AAGM,IAAM,6BAA6B,iBAAiB;AAAA,EACvD,IAAIA,IAAE,OAAO,EAAE,SAAS;AAAA,EACxB,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA,EACpF,QAAQ,EAAE,OAAO,UAAmB,YAAY,mBAAmB,UAAU,KAAK;AAAA,EAClF,MAAM,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,KAAK;AAAA,EAC9E,WAAWA,IAAE,OAAOA,IAAE,IAAI,CAAC;AAAA,EAC3B,OAAOA,IAAE,OAAO;AAAA,EAChB,WAAWA,IAAE,QAAQ;AAAA,EACrB,YAAYA,IAAE,OAAO;AAAA,EACrB,YAAYA,IAAE,OAAO;AAAA,EACrB,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AAAA,EACpG,YAAY,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AAAA,EACpG,UAAUA,IAAE,OAAOA,IAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AACpD,CAAC;;;ACzED,SAAS,KAAAA,WAAS;AAWX,IAAM,wBAAwB,iBAAiB;AAAA,EAClD,IAAIA,IAAE,OAAO;AAAA,EACb,MAAMA,IAAE,OAAO;AAAA;AAAA,EACf,OAAOA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EACzB,MAAMA,IAAE,OAAO;AAAA,EACf,WAAWA,IAAE,OAAOA,IAAE,OAAO,CAAC;AAAA,EAC9B,WAAWA,IAAE,QAAQ;AAAA,EACrB,YAAYA,IAAE,OAAO;AAAA,EACrB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAGM,IAAM,8BAA8B,iBAAiB;AAAA,EACxD,IAAIA,IAAE,OAAO;AAAA,EACb,oBAAoBA,IAAE,OAAO;AAAA,EAC7B,MAAMA,IAAE,KAAK,CAAC,aAAa,gBAAgB,SAAS,CAAC;AAAA,EACrD,OAAOA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EACtC,UAAUA,IAAE,KAAK,CAAC,SAAS,QAAQ,CAAC;AAAA,EAEpC,kBAAkBA,IAAE,OAAO;AAAA,EAC3B,qBAAqBA,IAAE,OAAO;AAAA,EAE9B,eAAeA,IAAE,OAAO;AAAA,EACxB,mBAAmBA,IAAE,OAAO;AAAA,EAC5B,mBAAmBA,IAAE,OAAO;AAAA,EAE5B,kBAAkB,EAAE,OAAO,UAAmB,YAAY,6BAA6B,UAAU,KAAK;AAAA,EACtG,SAAS,EAAE,OAAO,UAAmB,YAAY,oBAAoB,UAAU,KAAK;AAAA;AAAA,EAEpF,gBAAgB,EAAE,OAAO,UAAmB,YAAY,2BAA2B,UAAU,KAAK;AAAA,EAClG,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AAAA,EACpB,mBAAmB;AAAA,IACf,OAAO;AAAA,IACP,IAAIA,IAAE,OAAO;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,mBAAmB;AAAA,IACf,OAAO;AAAA,IACP,IAAIA,IAAE,OAAO;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,WAAWA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACnC,YAAYA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA;AAAA,EACpC,UAAUA,IAAE,OAAO,EAAE,QAAQ,EAAE;AAAA,EAC/B,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;;;ACnED,SAAS,KAAAA,WAAS;AAOX,IAAM,4BAA4B,iBAAiB;AAAA,EACtD,IAAIA,IAAE,OAAO;AAAA,EACb,UAAUA,IAAE,OAAO;AAAA;AAAA,EACnB,MAAMA,IAAE,OAAO;AAAA,EACf,gBAAgBA,IAAE,OAAO;AAAA,EACzB,aAAaA,IAAE,OAAO;AAAA,EACtB,qBAAqBA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA;AAAA,EACvC,wBAAwB;AAAA,IACpB,OAAO;AAAA,IACP,IAAIA,IAAE,IAAI;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;;;ACxBD,SAAS,KAAAA,WAAS;AAKX,IAAM,yBAAyB,iBAAiB;AAAA,EACnD,IAAIA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACnC,OAAOA,IAAE,OAAO,EAAE,MAAM;AAAA,EACxB,QAAQA,IAAE,KAAK,CAAC,WAAW,aAAa,SAAS,CAAC;AAAA,EAClD,MAAM,EAAE,OAAO,UAAmB,YAAY,iBAAiB,UAAU,MAAM,UAAU,KAAK;AAAA,EAC9F,YAAY;AAAA,EACZ,YAAY;AAChB,CAAC;;;ACiDM,IAAM,cAAc,kBAAkB,cAAc;AACpD,IAAM,iBAAiB,kBAAkB,iBAAiB;AAC1D,IAAM,iBAAiB,kBAAkB,iBAAiB;AAC1D,IAAM,kBAAkB,kBAAkB,kBAAkB;AAC5D,IAAM,cAAc,kBAAkB,cAAc;AACpD,IAAM,iBAAiB,kBAAkB,iBAAiB;AAC1D,IAAM,iBAAiB,kBAAkB,iBAAiB;AAC1D,IAAM,iBAAiB,kBAAkB,iBAAiB;AAC1D,IAAM,mBAAmB,kBAAkB,mBAAmB;AAC9D,IAAM,iBAAiB,kBAAkB,iBAAiB;AAC1D,IAAM,mBAAmB,kBAAkB,mBAAmB;AAC9D,IAAM,6BAA6B,kBAAkB,6BAAyB;AAC9E,IAAM,gBAAgB,kBAAkB,gBAAgB;AACxD,IAAM,sBAAsB,kBAAkB,kBAAkB;AAChE,IAAM,mBAAmB,kBAAkB,cAAc;AACzD,IAAM,oBAAoB,kBAAkB,iBAAiB;AAC7D,IAAM,0BAA0B,kBAAkB,sBAAsB;AACxE,IAAM,wBAAwB,kBAAkB,oBAAoB;AACpE,IAAM,yBAAyB,kBAAkB,qBAAqB;AACtE,IAAM,kBAAkB,kBAAkB,cAAc;AACxD,IAAM,mBAAmB,kBAAkB,aAAa;AACxD,IAAM,cAAc,kBAAkB,cAAc;AACpD,IAAM,oBAAoB,kBAAkB,oBAAoB;AAChE,IAAM,aAAa,kBAAkB,YAAY;AACjD,IAAM,uBAAuB,kBAAkB,iBAAiB;AAChE,IAAM,sBAAsB,kBAAkB,kBAAkB;AAChE,IAAM,uBAAuB,kBAAkB,mBAAmB;AAClE,IAAM,gBAAgB,kBAAkB,gBAAgB;AACxD,IAAM,0BAA0B,kBAAkB,0BAA0B;AAC5E,IAAM,qBAAqB,kBAAkB,qBAAqB;AAClE,IAAM,2BAA2B,kBAAkB,2BAA2B;AAC9E,IAAM,yBAAyB,kBAAkB,yBAAyB;AAC1E,IAAM,yBAAyB,kBAAkB,yBAAyB;AAC1E,IAAM,sBAAsB,kBAAkB,sBAAsB;AAEpE,IAAM,iBAAiB;AACvB,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAC9B,IAAM,qCAAqCC;AAC3C,IAAM,mCAAmC;AACzC,IAAM,8BAA8B;AACpC,IAAM,wBAAwB;AAC9B,IAAM,wBAAwB;AAC9B,IAAM,qBAAqB;AAC3B,IAAM,8BAA8B;AACpC,IAAM,uBAAuB;AAC7B,IAAM,8BAA8B;AACpC,IAAM,wBAAwB;AAC9B,IAAM,oBAAoB;AAC1B,IAAM,2BAA2B;AACjC,IAAM,2BAA2B;AAiDjC,IAAMC,qBAAoB","sourcesContent":["import { z, ZodTypeAny } from 'zod';\nimport type { FieldSpec, SchemaFromSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\n\nexport function buildClientSchema(spec: S, path: string[] = []): SchemaFromSpec {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid schema spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec) as unknown as SchemaFromSpec;\n }\n\n // Check if object might be a Zod schema (has _def property or ~standard metadata)\n if (typeof spec === 'object' && spec !== null &&\n (('_def' in spec) || ('~standard' in spec && (spec as any)['~standard']?.vendor === 'zod'))) {\n try {\n // Try to use it as a Zod schema directly\n return wrapZodSchema(spec as unknown as z.ZodTypeAny) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this fails, we'll continue with the other checks\n console.warn(`Failed to use object as Zod schema at \"${pathString}\":`, error);\n }\n }\n\n // ----- Array -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.array(buildClientSchema(spec.of, [...path, '[i]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Record -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.record(buildClientSchema(spec.of, [...path, '[key]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Timestamp -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'timestamp') {\n let schema: ZodTypeAny = z.preprocess((val) => {\n if (typeof val === 'string') {\n // Try to parse the string to a Date object\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date; // undefined will cause z.date() to fail\n }\n if (typeof val === 'number') {\n // Handle numeric timestamps\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date;\n }\n // If it's already a Date or something else, return it as is\n return val;\n }, z.date({ required_error: 'Date is required', invalid_type_error: 'Invalid date format' }));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- DocRef -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'docRef') {\n let schema: ZodTypeAny = z.string(); // only ID on client\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Object (plain nested object spec) -----\n if (\n typeof spec === 'object' &&\n spec !== null &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || (typeof spec === 'object' && spec !== null && '_type' in spec && (spec as any)._type === 'object')) {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // If we have an object with fields that look like schema specs, try to handle it as a schema object\n if (typeof spec === 'object' && spec !== null) {\n try {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this also fails, we'll throw the error below\n console.warn(`Failed to handle object as plain schema at \"${pathString}\":`, error);\n }\n }\n\n // 🔥 If we got here, the spec had a structure we didn't handle\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n}\n\n","import { ZodTypeAny, z } from 'zod';\nimport type { SchemaBuilder } from './types';\n\n/**\n * Ensures a Zod schema is wrapped to be optional and/or nullable,\n * if not already. Use this in recursive schema builders.\n * Also applies any other supported schema transformations provided in options.\n */\nexport function wrapZodSchema(\n schema: ZodTypeAny,\n options?: {\n optional?: boolean;\n nullable?: boolean;\n min?: number;\n max?: number;\n // Allow arbitrary extensions via dynamic property\n [key: string]: any;\n }\n): ZodTypeAny {\n if (!options) return schema;\n\n let wrapped = schema;\n\n // Handle nullable and optional specially since they're common\n if (options.nullable && !wrapped.isNullable?.()) {\n wrapped = wrapped.nullable();\n }\n\n if (options.optional && !wrapped.isOptional?.()) {\n wrapped = wrapped.optional();\n }\n\n // Process all other options dynamically\n for (const [key, value] of Object.entries(options)) {\n // Skip the already handled properties and undefined values\n if (['nullable', 'optional'].includes(key) || value === undefined) {\n continue;\n }\n\n // Check if the schema has a method matching the option key\n if (typeof (wrapped as any)[key] === 'function') {\n wrapped = (wrapped as any)[key](value);\n }\n }\n\n return wrapped;\n}\n\nexport function wrapObjectSchema(\n spec: any, // using any to support dynamic `spec.type === 'object'`\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n if (!('of' in spec)) {\n throw new Error(`Object spec at \"${pathString}\" is missing 'of'`);\n }\n\n const shape: Record = {};\n for (const [key, value] of Object.entries(spec.of)) {\n shape[key] = builder(value as any, [...path, key]);\n }\n\n let objectSchema: ZodTypeAny = z.object(shape);\n if (spec.nullable) objectSchema = objectSchema.nullable();\n if (spec.optional) objectSchema = objectSchema.optional();\n return objectSchema;\n}\n\n/**\n * Wraps a plain object shape (no `type: 'object'`) into a Zod schema.\n * Assumes each field is either a Zod schema or another FieldSpec.\n */\nexport function wrapPlainObjectSchema(\n spec: Record,\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n // Handle object field specs with '_type': 'object'\n if ('_type' in spec && spec._type === 'object' && 'of' in spec) {\n return wrapObjectSchema(spec, path, builder);\n }\n\n const shape: Record = {};\n\n // Only add fields to the schema if they're not special control properties\n for (const [key, val] of Object.entries(spec)) {\n if (key !== '_type' && key !== 'nullable' && key !== 'optional') {\n shape[key] = builder(val, [...path, key]);\n }\n }\n\n // Create the base object schema\n let schema: ZodTypeAny = z.object(shape);\n\n // Apply nullable/optional modifiers if needed\n if ('nullable' in spec && spec.nullable === true) {\n schema = schema.nullable();\n }\n\n if ('optional' in spec && spec.optional === true) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nexport const SCHEMA_MARKER = Symbol('ZodSchemaSpecMarker');\n\nexport function markAsSchemaSpec(spec: T): T {\n Object.defineProperty(spec, SCHEMA_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return spec;\n}\n\nexport function isSchemaSpec(obj: unknown): obj is Record {\n return typeof obj === 'object' && obj !== null && SCHEMA_MARKER in obj;\n}","import { z } from 'zod';\nimport { PARTNER_COLLECTION, PROFILE_COLLECTION, timestampNullableOptional, timestampRequired, timestampNullable, ROLE_COLLECTION, PERMISSION_COLLECTION } from './common';\nimport { markAsSchemaSpec } from '../common'\n\nexport const apiKeySpec = {\n expires_at: { _type: 'timestamp' as const },\n secret: z.string(),\n is_active: z.boolean(),\n}\n\nexport const apiKeysSpec = {\n _type: 'record' as const,\n of: {\n _type: 'object' as const,\n of: apiKeySpec\n }\n}\n\nexport const apiKeysObjectSpec = {\n _type: 'object' as const,\n of: {\n allowed_keys: { _type: 'array' as const, nullable: true, optional: true, of: z.string() },\n keys: apiKeysSpec\n },\n nullable: true,\n optional: true\n}\n\nexport const userSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string().nullable(),\n email: z.string().email().nullable(),\n stripe_id: z.string().nullable().optional(),\n referral: z.string().nullable().optional(),\n fcm: z.string().optional(),\n deeplink: z.string().nullable().optional(),\n gender: z.string().nullable().optional(),\n company: z.string().nullable().optional(),\n coordinates: z.string().nullable().optional(),\n platform: z.enum(['ios', 'android']).nullable().optional(),\n platform_version: z.string().nullable().optional(),\n device_type: z.string().nullable().optional(),\n app_version: z.string().nullable().optional(),\n parameters: z.any().nullable().optional(),\n locale: z.string().nullable().optional(),\n phone_model: z.string().nullable().optional(),\n phone_os: z.string().nullable().optional(),\n phone_os_version: z.string().nullable().optional(),\n ios: z.boolean().nullable().optional(),\n has_card_saved: z.boolean().nullable().optional(),\n admin: z.boolean().nullable().optional(),\n api_keys: apiKeysObjectSpec,\n profileRef: z.string().nullable().optional(),\n currency: z.string().nullable().optional(),\n receipt_email: z.string().nullable().optional(),\n source: z.enum(['direct', 'promo', 'platform']).nullable().optional(),\n role: { _type: 'docRef' as const, collection: ROLE_COLLECTION, optional: true, nullable: true },\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n balance: z.number().nullable().optional(),\n createdAt: { _type: 'timestamp' as const },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, optional: true, nullable: true },\n review_requested: timestampNullableOptional,\n last_seen: timestampNullableOptional,\n created_at: timestampNullableOptional,\n updated_at: timestampNullableOptional,\n created_by: z.string().nullable().optional(),\n updated_by: z.string().nullable().optional(),\n push_to_start_token: z.string().nullable().optional(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const PARTNER_COLLECTION = '/companies/hubby/partners';\nexport const USER_COLLECTION = 'users';\nexport const PROFILE_COLLECTION = '/companies/hubby/profiles';\nexport const PACKAGE_COLLECTION = '/companies/hubby/packages';\nexport const PACKAGE_TEMPLATE_COLLECTION = '/companies/hubby/package_templates';\nexport const PROMO_CODE_COLLECTION = '/companies/hubby/promo_codes';\nexport const COUNTRY_COLLECTION = 'countries';\nexport const ESIM_COLLECTION = 'esims';\nexport const PAYMENT_COLLECTION = 'payments';\nexport const PRICE_LIST_COLLECTION = 'price_lists';\nexport const BOOKING_COLLECTION = 'bookings';\nexport const MESSAGE_COLLECTION = 'messages';\nexport const CURRENCY_COLLECTION = 'currencies';\nexport const API_LOG_COLLECTION = 'api_logs'\nexport const ROLE_COLLECTION = 'roles';\nexport const PERMISSION_COLLECTION = 'permissions';\nexport const TRAFFIC_POLICY_COLLECTION = 'traffic_policies';\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\nexport const DESTINATION_COLLECTION = 'destinations';\nexport const DESTINATION_OFFER_COLLECTION = 'offers';\nexport const USER_TOUCHPOINTS_COLLECTION = 'user_touchpoints';\n\n\nexport const packageTypes = ['data-limited', 'time-limited', 'starter', 'unlimited'];\n\n// Timestamp specs\nexport const timestampNullableOptional = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampNullable = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampRequired = { _type: 'timestamp' as const, nullable: false, optional: false };\n\nexport const hubbyModelSpec = {\n id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n created_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n}\n\nexport const tagModelSpec = {\n ...hubbyModelSpec,\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n color: z.string().nullable().optional(),\n}","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n PROMO_CODE_COLLECTION,\n USER_COLLECTION,\n ESIM_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema } from '../constants';\nimport { packageSpecificationSchema } from './promocode';\n\n// Enum for communication channels\nexport const communicationChannelSchema = z.enum([\n 'EMAIL',\n 'WHATSAPP',\n 'PUSH_NOTIFICATION',\n 'SMS'\n]);\nexport type CommunicationChannelType = z.infer;\n\n// For backward compatibility\nexport type CommunicationChannel = CommunicationChannelType;\n\n// Add enum-like object for use in code\nexport const CommunicationChannel = {\n EMAIL: 'EMAIL' as const,\n WHATSAPP: 'WHATSAPP' as const,\n PUSH_NOTIFICATION: 'PUSH_NOTIFICATION' as const,\n SMS: 'SMS' as const\n} as const;\n\n// Status type for bookings\nexport const bookingStatusSchema = z.enum([\n 'PENDING',\n 'CONFIRMED',\n 'COMPLETED',\n 'CANCELLED',\n 'UNPAID',\n 'EXPIRED'\n]);\nexport type BookingStatus = z.infer;\n\n// Communication options schema\nexport const communicationOptionsSchema = z.object({\n should_send_message: z.boolean(),\n channels: z.array(communicationChannelSchema)\n});\n\nexport const financialInsightsSchema = z.object({\n partner_commission_percentage: z.number().nullable().optional(),\n total_commission_amount: z.number().nullable().optional(),\n price: z.number().nullable().optional(),\n}).nullable().optional()\n\nexport type CommunicationOptions = z.infer;\n\n// Define the booking schema spec\nexport const bookingSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n external_id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n title: z.string().nullable().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n full_name: z.string().nullable().optional(),\n pax: z.number().optional().nullable(),\n email: z.string().email().nullable().optional(),\n phone: z.string().nullable().optional(),\n booking_id: z.string().nullable().optional(),\n flight_number: z.string().optional(),\n gender: z.enum(['M', 'F', 'O']).optional(),\n sent_messages: z.record(z.any()).optional(),\n locale: supportedLocalesSchema,\n status: bookingStatusSchema.optional().nullable(),\n data: {\n _type: 'object' as const,\n of: {\n source: z.string(),\n manual: z.boolean(),\n action: z.string().nullable().optional()\n },\n nullable: true,\n optional: true\n },\n communication_options: {\n _type: 'object' as const,\n of: {\n should_send_message: z.boolean(),\n channels: {\n _type: 'array' as const,\n of: communicationChannelSchema\n }\n }\n },\n is_processed_for_esim_restoration: z.boolean().optional().nullable(),\n is_pseudonymized: z.boolean().optional().nullable(),\n import_id: z.string().nullable().optional(),\n package_specifications: z.array(packageSpecificationSchema).min(1),\n departure_date: timestampRequired,\n return_date: timestampNullable,\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION },\n financial_insights: financialInsightsSchema,\n promo_codes: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION },\n nullable: true,\n optional: true\n },\n users: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: USER_COLLECTION },\n nullable: true,\n optional: true\n },\n esims: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: ESIM_COLLECTION },\n nullable: true,\n optional: true\n },\n hubby_foreign_identifiers: z.object({\n messaging_contact_id: z.string().nullable()\n }).nullable().optional()\n});\n\n","import { z } from \"zod\";\n\nexport const SUPPORTED_LOCALES = [\n \"en-US\",\n \"en-EU\",\n \"en-GB\",\n \"en-CA\",\n \"nl-NL\",\n \"de-DE\",\n \"fr-FR\",\n \"fr-CA\",\n \"it-IT\",\n \"es-ES\",\n \"cs-CZ\",\n \"pl-PL\",\n \"pt-PT\",\n \"fr-BE\",\n \"nl-BE\",\n \"de-AT\",\n \"de-CH\",\n \"fr-CH\",\n \"it-CH\",\n \"sv-SE\",\n \"sk-SK\",\n \"de-BE\",\n \"en-AU\",\n \"da-DK\",\n \"ko-KR\",\n] as const;\n\n// Define the type using TypeScript's typeof and indexing\n\n// Define the type using TypeScript's typeof and indexing\nexport type SupportedLocales = (typeof SUPPORTED_LOCALES)[number];\n\n// Create a Zod schema for validation\nexport const supportedLocalesSchema = z.enum(SUPPORTED_LOCALES);\n\n// Type inference from the schema (alternative way to define the type)\nexport type SupportedLocalesFromSchema = z.infer;\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n PACKAGE_COLLECTION,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// Define package specification schema for use in promo code\nexport const packageSpecificationSchema = z.object({\n destination: z.string().optional().or(z.array(z.string())),\n iso3: z.string().optional(),\n size: z.string().optional(),\n package_id: z.string().optional(),\n bundle_id: z.string().optional(),\n iata_code: z.string().optional(),\n package_duration: z.number().optional(),\n package_type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).optional(),\n traffic_policy: z.string().optional(),\n});\n\n// Define the promo code schema spec\nexport const promoCodeSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n redeemed_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // PromoCode specific fields\n uuid: z.string().uuid().nullable().optional(),\n external_id: z.string(),\n code: z.string(),\n claimed_at: timestampNullableOptional,\n allowance_user: z.number(),\n allowance_total: z.number(),\n type: z.enum(['discount', 'booking', 'booking_without_destination']).nullable().or(z.string()),\n usage: z.array(z.string()),\n uuid_usage: z.array(z.string()),\n package_specification: packageSpecificationSchema.optional(),\n valid_from: timestampRequired,\n valid_to: timestampRequired,\n\n // Reference fields\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION, nullable: true },\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true },\n\n // Optional fields based on the type\n discount: z.number().optional(),\n package_size: z.string().optional(),\n countries: z.array(z.string()).optional(),\n max_bytes: z.number().optional(),\n starter_data: z.number().optional()\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const countrySchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n bokun_id: z.number().nullable(),\n LTE: z.boolean().nullable(),\n apn: z.string().nullable(),\n click_count: z.number().nullable(),\n global_network: z.string().nullable(),\n global_price: z.number().nullable(),\n hubby: z.number().nullable(),\n imsi: z.number().nullable(),\n has_esim: z.boolean(),\n name: z.string().nullable(),\n region: z.boolean().nullable(),\n i18n_name: z.record(z.string()),\n is_region: z.boolean().nullable(),\n countries: z.array(z.string()).nullable(),\n tier: z.number().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define schema for conversion rates (for backward compatibility)\nexport const conversionRateSchema = z.object({\n currency: z.number()\n});\n\nexport type CoversionRate = z.infer;\n\n// Define the currency schema spec\nexport const currencySchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n // ISO 4217 currency code (e.g., \"USD\", \"EUR\")\n code: z.string().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n // Currency symbol (e.g., \"$\", \"€\")\n symbol: z.string().describe('Currency symbol (e.g., \"$\", \"€\")'),\n // Full name of the currency (e.g., \"US Dollar\")\n name: z.string().describe('Full name of the currency (e.g., \"US Dollar\")'),\n // Exchange rate relative to base currency\n rate: z.number().describe('Exchange rate relative to base currency'),\n // Whether this is the default currency\n is_default: z.boolean().describe('Whether this is the default currency')\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n PARTNER_COLLECTION,\n PAYMENT_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\n\n\nexport const statusHistorySchema = z.object({\n telna_esim_status: z.number(),\n source: z.string(),\n status: z.string(),\n timestamp: timestampRequired as unknown as z.ZodType,\n})\n\nexport const esimStatusHistorySchema = markAsSchemaSpec(z.array(statusHistorySchema).nullable().optional());\n\n// Define the eSIM schema spec\nexport const esimSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Common eSIM fields\n imsi: z.number(),\n qr: z.string(),\n iccid: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable().optional(),\n total_data: z.number(),\n data_left: z.number(),\n uuid: z.string().uuid().nullable().optional(),\n data_used: z.boolean(),\n status: z.string().nullable(),\n status_history: esimStatusHistorySchema,\n name: z.string(),\n android_auto: z.boolean(),\n partner_price: z.number().nullable(),\n promo: z.string().nullable(),\n type: z.enum(['api', 'promo', 'balance', 'code', 'external', 'payment']),\n is_auto_install: z.boolean(),\n is_archived: z.boolean(),\n user: z.string().nullable(),\n payment: z.string().nullable(),\n apn: z.string().nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Timestamp fields\n time_assigned: timestampNullable,\n last_updated: timestampNullable\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n USER_COLLECTION,\n timestampRequired,\n hubbyModelSpec,\n PARTNER_COLLECTION\n} from './common';\n\n// Define the payment schema spec\nexport const paymentSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n\n // Core payment fields (universal across ALL payment types)\n amount: z.number(),\n customer: z.string(),\n date: timestampRequired,\n source: z.enum(['app', 'webapp', 'platform']),\n invoice: z.string().optional(),\n fee: z.number().optional(),\n topup: z.boolean(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']).optional(), // 'pending' | 'processing' | 'completed' | 'failed'\n payment_intent_id: z.string().nullable().optional(), // Stripe PaymentIntent ID\n error_message: z.string().nullable().optional(), // Error message\n // Common resolved package specification (same format for all sources)\n package_specifications: z.array(z.object({\n package_type: z.string().optional(),\n package_size: z.string().optional(),\n package_duration: z.number().optional(),\n destination: z.string().optional(),\n iso3: z.string().optional(),\n })).optional(),\n\n // Reference fields\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n\n // Source-specific payment properties\n app_payment_properties: z.object({\n package: z.string().optional(), // package_id for app payments\n promo: z.string().optional(),\n iccid: z.string().optional(),\n global: z.string().optional(),\n balance_used: z.number().optional(),\n booking_id: z.string().nullable().optional(),\n discount_amount: z.string().optional(),\n is_special_offer: z.boolean().optional(),\n special_offer_discount: z.number().optional(),\n }).optional(),\n\n webapp_platform_payment_properties: z.object({\n promo_codes: z.array(z.string()).optional(),\n booking_id: z.string().optional(),\n partner: z.string().optional(),\n purchaseType: z.string().optional(),\n affiliateId: z.string().nullable().optional(),\n partner_name: z.string().optional(),\n locale: z.string().optional(),\n }).optional(),\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define the message schema spec\nexport const messageSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n key: z.string(),\n method: z.enum([\"push\", \"sms\", \"email\"]),\n status: z.enum([\"pending\", \"sent\", \"failed\", \"delivered\"]),\n created_at: timestampRequired,\n updated_at: timestampRequired\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const trafficPolicySpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n name: z.string(),\n description: z.string(),\n external_id: z.string(),\n provider: z.string()\n})","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n PARTNER_COLLECTION,\n TRAFFIC_POLICY_COLLECTION,\n timestampRequired,\n hubbyModelSpec\n} from './common';\n\nimport { countrySchemaSpec } from './country';\n\n// Define the package schema spec\nexport const packageSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n // Package specific fields\n external_id: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable(),\n label: z.string(),\n bytes: z.number(),\n hidden: z.boolean(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n price: z.number(),\n partner_price: z.number(),\n days: z.number(),\n name: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).nullable(),\n throttling: z.number().optional(),\n provider_parameters: z.object({\n imsi: z.number()\n }).nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Nested country data - need to use dynamic reference to country schema\n // This would typically be handled better with a proper recursive schema definition\n // but for simplicity, we're using any type here\n country_data: {\n _type: 'object' as const,\n of: countrySchemaSpec,\n nullable: true,\n optional: true\n }\n // country_data: z.any().nullable()\n});\n\nexport const commonPackageSchema = markAsSchemaSpec({\n size: z.string(),\n iso: z.string(),\n days: z.number(),\n price: z.number(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n packageType: z.string(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n});\n\nexport const telnaPackageSchema = markAsSchemaSpec({\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n ...commonPackageSchema,\n});\n\nexport const bondioPackageSchema = markAsSchemaSpec({\n ...commonPackageSchema,\n label: z.enum(['lambda', 'tau']),\n periodDays: z.number(),\n periodIterations: z.number(),\n throttling: z.number().optional().nullable(),\n \n});","import { z, ZodLazy } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema, SUPPORTED_LOCALES, SupportedLocales } from '../constants';\nimport {\n PARTNER_COLLECTION,\n USER_COLLECTION,\n PACKAGE_COLLECTION,\n PRICE_LIST_COLLECTION,\n tagModelSpec,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// ===== Helper schemas for nested structures =====\n\n// Address schema\nexport const addressSchema = z.object({\n street: z.string().nullable().optional(),\n city: z.string().nullable().optional(),\n postal_code: z.string().nullable().optional(),\n country: z.string().nullable().optional()\n});\n\n// Emit event schema\nexport const emitEventSchema = z.object({\n topup: z.boolean().optional().default(false),\n redemption: z.boolean().optional().default(false),\n activation: z.boolean().optional().default(false),\n depletion: z.boolean().optional().default(false),\n});\n\n// Registration schema\nexport const registrationSchema = z.object({\n chamber_of_commerce_number: z.string().nullable().optional(),\n vat_number: z.string().nullable().optional(),\n anvr_number: z.number().nullable().optional(),\n tax_number: z.string().nullable().optional()\n});\n\n// Banking details schema\nexport const bankingDetailsSchema = z.object({\n account_holder: z.string().nullable().optional(),\n billing_email: z.string().nullable().optional(),\n bank_name: z.string().nullable().optional(),\n iban: z.string().nullable().optional(),\n currency: z.string().nullable().optional()\n});\n\n// Package price schema\nexport const packagePriceSchema = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: z.object({ _type: z.literal('docRef'), collection: z.literal(PACKAGE_COLLECTION) })\n});\n\n// Package specification schema\nexport const packageSpecificationSchema = z.object({\n size: z.string().nullable().optional(),\n type: z.string().nullable().optional(),\n destination: z.string().nullable().optional()\n});\n\n// Pricing strategy schema\nexport const pricingStrategySchema = z.object({\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: z.object({\n _type: z.literal('docRef'),\n collection: z.literal(PRICE_LIST_COLLECTION),\n nullable: z.literal(true)\n }),\n custom_prices: z.array(packagePriceSchema)\n});\n\n// Visual identity banner schema\nexport const visualIdentityBannerSchema = z.object({\n action: z.string().nullable().optional(),\n image_url: z.string(),\n alt: z.string(),\n click_url: z.string(),\n locale: supportedLocalesSchema,\n properties: z.record(z.string())\n});\n\n// Schedule filter schema\nexport const scheduleFilterSchema = z.object({\n type: z.enum(['iso3', 'gender', 'percentage', 'age']),\n value: z.union([z.string(), z.number()]),\n comparison: z.enum([\n 'equal',\n 'not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal'\n ])\n});\n\n// Convert object-like schemas to proper Zod objects\nexport const visualIdentityBannersSchema = z.object({\n strategy: z.enum(['fixed', 'rotating', 'destination', 'time_of_day']),\n banners: z.array(visualIdentityBannerSchema).nullable().optional()\n});\n\nexport const visualIdentitySchema = z.object({\n primary_color: z.string(),\n secondary_color: z.string(),\n logo: z.string(),\n font: z.string().nullable().optional(),\n top_banner: visualIdentityBannersSchema.optional(),\n mid_banner: visualIdentityBannersSchema.optional()\n});\n\n// Partner contact schema\nexport const partnerContactSchema = z.object({\n name: z.string().nullable().optional(),\n email: z.string().nullable(),\n office_phone: z.string().nullable().optional(),\n office_email: z.string().nullable().optional()\n});\n\n// Partner data schema\nexport const partnerDataSchema = z.object({\n source: z.string(),\n manual: z.boolean()\n});\n\n// Package strategy schema\nexport const packageStrategySchema = z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any()\n});\n\n// Schedule email schema\nexport const scheduleEmailSchema = z.object({\n brevo_template_id: z.number(),\n subject: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional(),\n preview_text: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional()\n}).nullable().optional();\n\n// Schedule push schema\nexport const schedulePushSchema = z.object({\n title: z.record(z.string()).optional(),\n body: z.record(z.string()).optional(),\n target: z.string()\n}).nullable().optional();\n\n// Schedule schema\nexport const scheduleSchema = z.object({\n days: z.number(),\n email: scheduleEmailSchema,\n push: schedulePushSchema,\n hour: z.number(),\n key: z.string(),\n method: z.enum(['email', 'sms', 'whatsapp', 'push']),\n moment: z.enum(['departure_date', 'return_date', 'immediate']),\n filter: scheduleFilterSchema.nullable().optional()\n});\n\nexport const freeEsimSchema = z.object({\n enabled: z.boolean(),\n package_specification: z.object({\n size: z.string(),\n package_type: z.string(),\n destination: z.string(),\n package_duration: z.number(),\n type: z.string().nullable().optional()\n }),\n booking_id_verification: z.boolean().default(false),\n booking_id_verification_pattern: z.string().nullable().optional(),\n allowance: z.number(),\n total_allowance: z.number(),\n});\n\n// Agent signup settings schema\nexport const agentSignupSettingsSchema = z.object({\n slack_channel: z.string().nullable().optional(),\n welcome_email_template: z.number().nullable().optional(),\n password_reset_template: z.number().nullable().optional(),\n partner_type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n enable_complimentary_booking: z.boolean().default(true),\n complimentary_booking_partner_id: z.string().nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().default(true),\n source_partner_branding: z.boolean().default(false),\n own_branding: z.boolean().default(false)\n }).default({})\n});\n\n// Platform settings schema\nexport const platformSettingsSchema = z.object({\n package_strategy: z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any(),\n supported_package_types: z.enum(['data-limited', 'unlimited']).optional()\n }).nullable().optional(),\n free_esim: freeEsimSchema.nullable().optional(),\n booking_defaults: z.object({\n locale: supportedLocalesSchema\n }).nullable().optional(),\n booking_confirmation: z.object({\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n }).nullable().optional(),\n emit_events: emitEventSchema.nullable().optional(),\n schedules: z.array(scheduleSchema).optional(),\n brevo: z.object({\n list_ids: z.array(z.number()),\n campaign_mode: z.boolean()\n }).nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().optional().default(true),\n source_partner_branding: z.boolean().optional().default(false),\n own_branding: z.boolean().optional().default(false)\n }).nullable().optional(),\n agent_signup_settings: agentSignupSettingsSchema.nullable().optional(),\n upgrade_offer: z.object({\n enabled: z.boolean(),\n discount_percentage: z.number().min(0).max(100),\n }).nullable().optional()\n});\n\n// ===== Exportable schema specs =====\n\n// Package price schema spec\nexport const packagePriceSchemaSpec = markAsSchemaSpec({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n});\n\n// Financial properties schema spec\nexport const financialPropertiesSchemaSpec = markAsSchemaSpec({\n administration_fee: z.number().nullable(),\n income_per_gb: z.number().nullable(),\n commission_fee: z.number().nullable().optional(),\n commission_percentage: z.number().nullable().optional(),\n payment_method: z.enum(['invoice', 'direct']),\n requires_card: z.boolean().nullable(),\n next_invoice: timestampNullableOptional,\n last_invoice: timestampNullableOptional,\n pricing_strategies: {\n _type: 'object' as const,\n of: {\n partner: {\n _type: 'object' as const,\n of: {\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n },\n user: {\n _type: 'object' as const,\n of: {\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n }\n },\n nullable: true\n }\n});\n\n// Platform settings schema spec\nexport const platformSettingsSchemaSpec = markAsSchemaSpec({\n package_strategy: {\n _type: 'object' as const,\n of: packageStrategySchema.shape,\n nullable: true,\n optional: true\n },\n free_esim: {\n _type: 'object' as const,\n of: freeEsimSchema.shape,\n nullable: true,\n optional: true\n },\n booking_defaults: {\n _type: 'object' as const,\n of: {\n locale: supportedLocalesSchema\n },\n nullable: true,\n optional: true\n },\n booking_confirmation: {\n _type: 'object' as const,\n of: {\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n },\n nullable: true,\n optional: true\n },\n schedules: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: scheduleSchema.shape\n },\n optional: true\n },\n agent_signup_settings: {\n _type: 'object' as const,\n of: agentSignupSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\n// Webhook settings schema\nexport const webhookSettingsSchema = z.object({\n url: z.string().url().nullable().optional(),\n api_key: z.string().nullable().optional(),\n enabled: z.boolean().default(false),\n events: z.object({\n promocode_redemption: z.boolean().default(false)\n }).default({})\n});\n\n// ===== Main partner schema =====\nexport const partnerSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Partner specific fields\n name: z.string().min(3),\n type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n is_active: z.boolean().nullable().optional(),\n external_id: z.string().nullable().optional(),\n\n // Complex nested objects\n contact: {\n _type: 'object' as const,\n of: partnerContactSchema.shape,\n nullable: true\n },\n address: {\n _type: 'object' as const,\n of: addressSchema.shape,\n nullable: true\n },\n registration: {\n _type: 'object' as const,\n of: registrationSchema.shape,\n nullable: true\n },\n banking_details: {\n _type: 'object' as const,\n of: bankingDetailsSchema.shape,\n nullable: true\n },\n\n // Reference fields\n parent: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n users: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: USER_COLLECTION }, nullable: true },\n\n // Complex nested structures\n financial_properties: financialPropertiesSchemaSpec,\n // Visual identity\n visual_identity: {\n _type: 'object' as const,\n of: visualIdentitySchema.shape,\n nullable: true\n },\n\n // Platform settings\n platform_settings: {\n _type: 'object' as const,\n of: platformSettingsSchema.shape,\n nullable: true\n },\n\n // Tags\n tags: {\n _type: 'array' as const,\n of: tagModelSpec,\n nullable: true,\n optional: true\n },\n\n // Tag slugs\n tag_slugs: {\n _type: 'array' as const,\n of: z.string(),\n nullable: true,\n optional: true\n },\n\n // Metadata\n data: {\n _type: 'object' as const,\n of: partnerDataSchema.shape,\n nullable: true,\n optional: true\n },\n\n // Webhook settings\n webhook_settings: {\n _type: 'object' as const,\n of: webhookSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\nexport const priceListItemSchemaSpec = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: z.string(),\n});\n\n// Price list item with docRef support for use in priceListSchemaSpec\nconst priceListItemWithDocRefSpec = {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n};\n\n// ===== Price list schema =====\nexport const priceListSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Price list specific fields\n name: z.string().min(3),\n description: z.string().nullable(),\n type: z.enum(['partner', 'consumer']),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n price_list: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec,\n optional: true\n },\n package_prices: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec\n },\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec, PARTNER_COLLECTION } from './common';\n\n// Country schema spec\nexport const analyticsSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n service: z.string(),\n date: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/), // YYYY-MM-DD\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n event: z.string(),\n parameter: z.string().nullable(),\n sum: z.number(),\n});","import { z } from 'zod';\nimport { timestampRequired } from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const payloadSpec = {\n _type: 'record' as const,\n of: z.unknown(),\n optional: true\n};\n\nexport const apiLogSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n method: z.string(),\n user_id: z.string().optional(),\n path: z.string(),\n resource_type: z.string().optional(),\n resource_id: z.string().optional(),\n partner_id: z.string().optional(),\n payload: payloadSpec,\n timestamp: timestampRequired,\n status_code: z.number()\n});\n","import { z } from 'zod';\nimport { \n USER_TOUCHPOINTS_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullableOptional,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n PARTNER_COLLECTION\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const userTouchpointsSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n unique_device_identifier: z.string().nullable().optional(),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true, optional: true },\n promo_code: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n promo_code_redeemed_at: timestampNullableOptional,\n esim_assigned_at: timestampNullableOptional,\n esim_install_initiated_at: timestampNullableOptional,\n esim_install_completed_at: timestampNullableOptional,\n esim_first_package_activated_at: timestampNullableOptional,\n esim_topped_up_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional, PERMISSION_COLLECTION } from './common';\n\nexport const roleSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional } from './common';\n\nexport const permissionSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullable\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\n\n// Package type schema for reward strategy\nexport const rewardPackageTypeSchema = z.enum(['data-limited', 'starter']);\nexport type RewardPackageType = z.infer;\n\n// Reward strategy base reward schema\nexport const baseRewardSchema = z.object({\n package_size: z.string(),\n package_type: rewardPackageTypeSchema\n});\n\nexport type BaseReward = z.infer;\n\n// Reward strategy multipliers schema\nexport const rewardMultipliersSchema = z.object({\n quality_based: z.number().optional(),\n completion_based: z.number().optional()\n}).optional();\n\nexport type RewardMultipliers = z.infer;\n\n// Reward strategy schema\nexport const rewardStrategySchema = z.object({\n base_reward: baseRewardSchema,\n multipliers: rewardMultipliersSchema\n});\n\nexport type RewardStrategy = z.infer;\n\n// Review schema spec\nexport const reviewSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n partner_id: z.string().nullable().optional(),\n questions: z.record(z.any()),\n reward_strategy: rewardStrategySchema,\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true }\n});\n\n// Review submission schema spec\nexport const reviewSubmissionSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n review: { _type: 'docRef' as const, collection: REVIEW_COLLECTION, nullable: true },\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true },\n questions: z.record(z.any()),\n iccid: z.string(),\n isAndroid: z.boolean(),\n country_id: z.string(),\n partner_id: z.string(),\n review_id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n analysis: z.record(z.any()).nullable().optional()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PACKAGE_TEMPLATE_COLLECTION,\n PARTNER_COLLECTION,\n timestampNullable,\n timestampRequired,\n TRAFFIC_POLICY_COLLECTION\n} from './common';\n\n// Destination schema spec\nexport const destinationSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n type: z.string(), // \"country\" or region names like \"Europe\", \"Asia\", \"Middle East\"\n iso3s: z.array(z.string()),\n name: z.string(),\n i18n_name: z.record(z.string()),\n is_active: z.boolean(),\n sort_order: z.number(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n\n// Destination offer schema spec\nexport const destinationBundleSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n parent_document_id: z.string(),\n type: z.enum(['unlimited', 'data-limited', 'starter']),\n label: z.string().nullable().optional(), //'5 Days' or '5GB'\n provider: z.enum(['telna', 'bondio']),\n\n duration_in_days: z.number(),\n duration_in_seconds: z.number(),\n \n size_in_bytes: z.number(),\n size_in_megabytes: z.number(),\n size_in_gigabytes: z.number(),\n\n package_template: { _type: 'docRef' as const, collection: PACKAGE_TEMPLATE_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n //All unlimited packages will have a traffic policy, but this only refers to telna bundles\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n b2c_price: z.number(),\n b2b_price: z.number(),\n partner_b2c_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n partner_b2b_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n is_active: z.boolean().default(true),\n is_visible: z.boolean().default(true), //All bundles that will have a partner will probably be invisible\n priority: z.number().default(10),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n deleted_at: timestampNullable,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n deleted_by: z.string().nullable()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n timestampRequired\n} from './common';\n\n// Package Template Schema Spec - unified schema for all providers\nexport const packageTemplateSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n provider: z.string(), // e.g., \"telna\", \"bondio\"\n type: z.string(),\n purchase_price: z.number(),\n external_id: z.string(),\n supported_countries: z.array(z.string()), // iso3 codes\n provider_specific_data: {\n _type: 'record' as const,\n of: z.any(),\n nullable: true,\n optional: true\n },\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, USER_COLLECTION } from './common';\n\n// Define the login request schema spec\nexport const loginRequestSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n email: z.string().email(),\n status: z.enum(['pending', 'completed', 'expired']),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n created_at: timestampRequired,\n expires_at: timestampRequired\n});\n","import { buildClientSchema } from './builders/client';\nimport {\n userSchemaSpec,\n apiKeySpec,\n apiKeysSpec,\n apiKeysObjectSpec\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { bondioPackageSchema, packageSchemaSpec, telnaPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n financialPropertiesSchemaSpec as financialPropertiesSchema,\n packagePriceSchema,\n platformSettingsSchema,\n visualIdentitySchema,\n pricingStrategySchema,\n freeEsimSchema,\n} from './specs/partner';\nimport { analyticsSpec } from './specs/analytics';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { z } from 'zod';\nimport { roleSchemaSpec } from './specs/role';\nimport { permissionSchemaSpec } from './specs/permission';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\n\n\n/** ZOD SCHEMAS */\nexport const HUserSchema = buildClientSchema(userSchemaSpec);\nexport const HBookingSchema = buildClientSchema(bookingSchemaSpec);\nexport const HCountrySchema = buildClientSchema(countrySchemaSpec);\nexport const HCurrencySchema = buildClientSchema(currencySchemaSpec);\nexport const HESIMSchema = buildClientSchema(esimSchemaSpec);\nexport const HPaymentSchema = buildClientSchema(paymentSchemaSpec);\nexport const HMessageSchema = buildClientSchema(messageSchemaSpec);\nexport const HPackageSchema = buildClientSchema(packageSchemaSpec);\nexport const HPromoCodeSchema = buildClientSchema(promoCodeSchemaSpec);\nexport const HPartnerSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPriceListSchema = buildClientSchema(priceListSchemaSpec);\nexport const HFinancialPropertiesSchema = buildClientSchema(financialPropertiesSchema);\nexport const HApiLogSchema = buildClientSchema(apiLogSchemaSpec);\nexport const HPackagePriceSchema = buildClientSchema(packagePriceSchema);\nexport const HubbyModelSchema = buildClientSchema(hubbyModelSpec);\nexport const HPartnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPlatformSettingsSchema = buildClientSchema(platformSettingsSchema);\nexport const HVisualIdentitySchema = buildClientSchema(visualIdentitySchema);\nexport const HPricingStrategySchema = buildClientSchema(pricingStrategySchema);\nexport const HFreeEsimSchema = buildClientSchema(freeEsimSchema);\nexport const HAnalyticsSchema = buildClientSchema(analyticsSpec);\nexport const HRoleSchema = buildClientSchema(roleSchemaSpec);\nexport const HPermissionSchema = buildClientSchema(permissionSchemaSpec);\nexport const HTagSchema = buildClientSchema(tagModelSpec);\nexport const HTrafficPolicySchema = buildClientSchema(trafficPolicySpec);\nexport const HTelnaPackageSchema = buildClientSchema(telnaPackageSchema);\nexport const HBondioPackageSchema = buildClientSchema(bondioPackageSchema);\nexport const HReviewSchema = buildClientSchema(reviewSchemaSpec);\nexport const HReviewSubmissionSchema = buildClientSchema(reviewSubmissionSchemaSpec);\nexport const HDestinationSchema = buildClientSchema(destinationSchemaSpec);\nexport const HDestinationBundleSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const HPackageTemplateSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const HUserTouchpointsSchema = buildClientSchema(userTouchpointsSchemaSpec);\nexport const HLoginRequestSchema = buildClientSchema(loginRequestSchemaSpec);\n// Additional lower-level schemas\nexport const HAddressSchema = addressSchema;\nexport const HRegistrationSchema = registrationSchema;\nexport const HBankingDetailsSchema = bankingDetailsSchema;\nexport const HPartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const HPromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const HVisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const HScheduleFilterSchema = scheduleFilterSchema;\nexport const HPartnerContactSchema = partnerContactSchema;\nexport const HPartnerDataSchema = partnerDataSchema;\nexport const HCommunicationChannelSchema = communicationChannelSchema;\nexport const HBookingStatusSchema = bookingStatusSchema;\nexport const HCommunicationOptionsSchema = communicationOptionsSchema;\nexport const HRewardStrategySchema = rewardStrategySchema;\nexport const HBaseRewardSchema = baseRewardSchema;\nexport const HRewardMultipliersSchema = rewardMultipliersSchema;\nexport const HRewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type HAnalytics = z.infer;\nexport type HUser = z.infer;\nexport type HBooking = z.infer;\nexport type HCountry = z.infer;\nexport type HCurrency = z.infer;\nexport type HESIM = z.infer;\nexport type HPayment = z.infer;\nexport type HMessage = z.infer;\nexport type HPackage = z.infer;\nexport type HPromoCode = z.infer;\nexport type HPartner = z.infer;\nexport type HPriceList = z.infer;\nexport type HApiLog = z.infer;\nexport type HTag = z.infer;\nexport type HTrafficPolicy = z.infer;\nexport type HBondioPackage = z.infer;\nexport type HTelnaPackage = z.infer;\nexport type HReview = z.infer;\nexport type HReviewSubmission = z.infer;\nexport type HDestination = z.infer;\nexport type HDestinationBundle = z.infer;\nexport type HPackageTemplate = z.infer;\nexport type HUserTouchpoints = z.infer;\nexport type HLoginRequest = z.infer;\n// Additional lower-level types\nexport type HAddress = z.infer;\nexport type HRegistration = z.infer;\nexport type HBankingDetails = z.infer;\nexport type HPartnerPackageSpecification = z.infer;\nexport type HPromoPackageSpecification = z.infer;\nexport type HVisualIdentityBanner = z.infer;\nexport type HFinancialProperties = z.infer;\nexport type HScheduleFilter = z.infer;\nexport type HPartnerContact = z.infer;\nexport type HPartnerData = z.infer;\nexport type HCommunicationChannel = z.infer;\nexport type HBookingStatus = z.infer;\nexport type HCommunicationOptions = z.infer;\nexport type HRewardStrategy = z.infer;\nexport type HBaseReward = z.infer;\nexport type HRewardMultipliers = z.infer;\nexport type HRewardPackageType = z.infer;\nexport type HHubbyModel = z.infer;\n\nexport type HubbyModelApp = HHubbyModel;\n\nexport type SupportedLocales = typeof SUPPORTED_LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\nexport type HRole = z.infer;\nexport type HPermission = z.infer; "]} \ No newline at end of file +{"version":3,"sources":["../../src/builders/client.ts","../../src/common.ts","../../src/specs/user.ts","../../src/specs/common.ts","../../src/specs/booking.ts","../../src/constants.ts","../../src/specs/promocode.ts","../../src/specs/country.ts","../../src/specs/currency.ts","../../src/specs/esim.ts","../../src/specs/payment.ts","../../src/specs/message.ts","../../src/specs/traffic_policy.ts","../../src/specs/package.ts","../../src/specs/partner.ts","../../src/specs/analytics.ts","../../src/specs/apiLogs.ts","../../src/specs/userTouchpoints.ts","../../src/specs/role.ts","../../src/specs/permission.ts","../../src/specs/review.ts","../../src/specs/destination.ts","../../src/specs/package_template.ts","../../src/specs/login_request.ts","../../src/index.client.ts"],"names":["z","packageSpecificationSchema","SUPPORTED_LOCALES"],"mappings":"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","sourcesContent":["import { z, ZodTypeAny } from 'zod';\nimport type { FieldSpec, SchemaFromSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\n\nexport function buildClientSchema(spec: S, path: string[] = []): SchemaFromSpec {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid schema spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec) as unknown as SchemaFromSpec;\n }\n\n // Check if object might be a Zod schema (has _def property or ~standard metadata)\n if (typeof spec === 'object' && spec !== null &&\n (('_def' in spec) || ('~standard' in spec && (spec as any)['~standard']?.vendor === 'zod'))) {\n try {\n // Try to use it as a Zod schema directly\n return wrapZodSchema(spec as unknown as z.ZodTypeAny) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this fails, we'll continue with the other checks\n console.warn(`Failed to use object as Zod schema at \"${pathString}\":`, error);\n }\n }\n\n // ----- Array -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.array(buildClientSchema(spec.of, [...path, '[i]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Record -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.record(buildClientSchema(spec.of, [...path, '[key]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Timestamp -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'timestamp') {\n let schema: ZodTypeAny = z.preprocess((val) => {\n if (typeof val === 'string') {\n // Try to parse the string to a Date object\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date; // undefined will cause z.date() to fail\n }\n if (typeof val === 'number') {\n // Handle numeric timestamps\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date;\n }\n // If it's already a Date or something else, return it as is\n return val;\n }, z.date({ required_error: 'Date is required', invalid_type_error: 'Invalid date format' }));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- DocRef -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'docRef') {\n let schema: ZodTypeAny = z.string(); // only ID on client\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Object (plain nested object spec) -----\n if (\n typeof spec === 'object' &&\n spec !== null &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || (typeof spec === 'object' && spec !== null && '_type' in spec && (spec as any)._type === 'object')) {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // If we have an object with fields that look like schema specs, try to handle it as a schema object\n if (typeof spec === 'object' && spec !== null) {\n try {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this also fails, we'll throw the error below\n console.warn(`Failed to handle object as plain schema at \"${pathString}\":`, error);\n }\n }\n\n // 🔥 If we got here, the spec had a structure we didn't handle\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n}\n\n","import { ZodTypeAny, z } from 'zod';\nimport type { SchemaBuilder } from './types';\n\n/**\n * Ensures a Zod schema is wrapped to be optional and/or nullable,\n * if not already. Use this in recursive schema builders.\n * Also applies any other supported schema transformations provided in options.\n */\nexport function wrapZodSchema(\n schema: ZodTypeAny,\n options?: {\n optional?: boolean;\n nullable?: boolean;\n min?: number;\n max?: number;\n // Allow arbitrary extensions via dynamic property\n [key: string]: any;\n }\n): ZodTypeAny {\n if (!options) return schema;\n\n let wrapped = schema;\n\n // Handle nullable and optional specially since they're common\n if (options.nullable && !wrapped.isNullable?.()) {\n wrapped = wrapped.nullable();\n }\n\n if (options.optional && !wrapped.isOptional?.()) {\n wrapped = wrapped.optional();\n }\n\n // Process all other options dynamically\n for (const [key, value] of Object.entries(options)) {\n // Skip the already handled properties and undefined values\n if (['nullable', 'optional'].includes(key) || value === undefined) {\n continue;\n }\n\n // Check if the schema has a method matching the option key\n if (typeof (wrapped as any)[key] === 'function') {\n wrapped = (wrapped as any)[key](value);\n }\n }\n\n return wrapped;\n}\n\nexport function wrapObjectSchema(\n spec: any, // using any to support dynamic `spec.type === 'object'`\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n if (!('of' in spec)) {\n throw new Error(`Object spec at \"${pathString}\" is missing 'of'`);\n }\n\n const shape: Record = {};\n for (const [key, value] of Object.entries(spec.of)) {\n shape[key] = builder(value as any, [...path, key]);\n }\n\n let objectSchema: ZodTypeAny = z.object(shape);\n if (spec.nullable) objectSchema = objectSchema.nullable();\n if (spec.optional) objectSchema = objectSchema.optional();\n return objectSchema;\n}\n\n/**\n * Wraps a plain object shape (no `type: 'object'`) into a Zod schema.\n * Assumes each field is either a Zod schema or another FieldSpec.\n */\nexport function wrapPlainObjectSchema(\n spec: Record,\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n // Handle object field specs with '_type': 'object'\n if ('_type' in spec && spec._type === 'object' && 'of' in spec) {\n return wrapObjectSchema(spec, path, builder);\n }\n\n const shape: Record = {};\n\n // Only add fields to the schema if they're not special control properties\n for (const [key, val] of Object.entries(spec)) {\n if (key !== '_type' && key !== 'nullable' && key !== 'optional') {\n shape[key] = builder(val, [...path, key]);\n }\n }\n\n // Create the base object schema\n let schema: ZodTypeAny = z.object(shape);\n\n // Apply nullable/optional modifiers if needed\n if ('nullable' in spec && spec.nullable === true) {\n schema = schema.nullable();\n }\n\n if ('optional' in spec && spec.optional === true) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nexport const SCHEMA_MARKER = Symbol('ZodSchemaSpecMarker');\n\nexport function markAsSchemaSpec(spec: T): T {\n Object.defineProperty(spec, SCHEMA_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return spec;\n}\n\nexport function isSchemaSpec(obj: unknown): obj is Record {\n return typeof obj === 'object' && obj !== null && SCHEMA_MARKER in obj;\n}","import { z } from 'zod';\nimport { PARTNER_COLLECTION, PROFILE_COLLECTION, timestampNullableOptional, timestampRequired, timestampNullable, ROLE_COLLECTION, PERMISSION_COLLECTION } from './common';\nimport { markAsSchemaSpec } from '../common'\n\nexport const apiKeySpec = {\n expires_at: { _type: 'timestamp' as const },\n secret: z.string(),\n is_active: z.boolean(),\n}\n\nexport const apiKeysSpec = {\n _type: 'record' as const,\n of: {\n _type: 'object' as const,\n of: apiKeySpec\n }\n}\n\nexport const apiKeysObjectSpec = {\n _type: 'object' as const,\n of: {\n allowed_keys: { _type: 'array' as const, nullable: true, optional: true, of: z.string() },\n keys: apiKeysSpec\n },\n nullable: true,\n optional: true\n}\n\nexport const userSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string().nullable(),\n email: z.string().email().nullable(),\n stripe_id: z.string().nullable().optional(),\n referral: z.string().nullable().optional(),\n fcm: z.string().optional(),\n deeplink: z.string().nullable().optional(),\n gender: z.string().nullable().optional(),\n company: z.string().nullable().optional(),\n coordinates: z.string().nullable().optional(),\n platform: z.enum(['ios', 'android']).nullable().optional(),\n platform_version: z.string().nullable().optional(),\n device_type: z.string().nullable().optional(),\n app_version: z.string().nullable().optional(),\n parameters: z.any().nullable().optional(),\n locale: z.string().nullable().optional(),\n phone_model: z.string().nullable().optional(),\n phone_os: z.string().nullable().optional(),\n phone_os_version: z.string().nullable().optional(),\n ios: z.boolean().nullable().optional(),\n has_card_saved: z.boolean().nullable().optional(),\n admin: z.boolean().nullable().optional(),\n api_keys: apiKeysObjectSpec,\n profileRef: z.string().nullable().optional(),\n currency: z.string().nullable().optional(),\n receipt_email: z.string().nullable().optional(),\n source: z.enum(['direct', 'promo', 'platform']).nullable().optional(),\n role: { _type: 'docRef' as const, collection: ROLE_COLLECTION, optional: true, nullable: true },\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n balance: z.number().nullable().optional(),\n createdAt: { _type: 'timestamp' as const },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, optional: true, nullable: true },\n review_requested: timestampNullableOptional,\n last_seen: timestampNullableOptional,\n created_at: timestampNullableOptional,\n updated_at: timestampNullableOptional,\n created_by: z.string().nullable().optional(),\n updated_by: z.string().nullable().optional(),\n push_to_start_token: z.string().nullable().optional(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const PARTNER_COLLECTION = '/companies/hubby/partners';\nexport const USER_COLLECTION = 'users';\nexport const PROFILE_COLLECTION = '/companies/hubby/profiles';\nexport const PACKAGE_COLLECTION = '/companies/hubby/packages';\nexport const PACKAGE_TEMPLATE_COLLECTION = '/companies/hubby/package_templates';\nexport const PROMO_CODE_COLLECTION = '/companies/hubby/promo_codes';\nexport const COUNTRY_COLLECTION = 'countries';\nexport const ESIM_COLLECTION = 'esims';\nexport const PAYMENT_COLLECTION = 'payments';\nexport const PRICE_LIST_COLLECTION = 'price_lists';\nexport const BOOKING_COLLECTION = 'bookings';\nexport const MESSAGE_COLLECTION = 'messages';\nexport const CURRENCY_COLLECTION = 'currencies';\nexport const API_LOG_COLLECTION = 'api_logs'\nexport const ROLE_COLLECTION = 'roles';\nexport const PERMISSION_COLLECTION = 'permissions';\nexport const TRAFFIC_POLICY_COLLECTION = 'traffic_policies';\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\nexport const DESTINATION_COLLECTION = 'destinations';\nexport const DESTINATION_OFFER_COLLECTION = 'offers';\nexport const USER_TOUCHPOINTS_COLLECTION = 'user_touchpoints';\n\n\nexport const packageTypes = ['data-limited', 'time-limited', 'starter', 'unlimited'];\n\n// Timestamp specs\nexport const timestampNullableOptional = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampNullable = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampRequired = { _type: 'timestamp' as const, nullable: false, optional: false };\n\nexport const hubbyModelSpec = {\n id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n created_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n}\n\nexport const tagModelSpec = {\n ...hubbyModelSpec,\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n color: z.string().nullable().optional(),\n}","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n PROMO_CODE_COLLECTION,\n USER_COLLECTION,\n ESIM_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema } from '../constants';\nimport { packageSpecificationSchema } from './promocode';\n\n// Enum for communication channels\nexport const communicationChannelSchema = z.enum([\n 'EMAIL',\n 'WHATSAPP',\n 'PUSH_NOTIFICATION',\n 'SMS'\n]);\nexport type CommunicationChannelType = z.infer;\n\n// For backward compatibility\nexport type CommunicationChannel = CommunicationChannelType;\n\n// Add enum-like object for use in code\nexport const CommunicationChannel = {\n EMAIL: 'EMAIL' as const,\n WHATSAPP: 'WHATSAPP' as const,\n PUSH_NOTIFICATION: 'PUSH_NOTIFICATION' as const,\n SMS: 'SMS' as const\n} as const;\n\n// Status type for bookings\nexport const bookingStatusSchema = z.enum([\n 'PENDING',\n 'CONFIRMED',\n 'COMPLETED',\n 'CANCELLED',\n 'UNPAID',\n 'EXPIRED'\n]);\nexport type BookingStatus = z.infer;\n\n// Communication options schema\nexport const communicationOptionsSchema = z.object({\n should_send_message: z.boolean(),\n channels: z.array(communicationChannelSchema)\n});\n\nexport const financialInsightsSchema = z.object({\n partner_commission_percentage: z.number().nullable().optional(),\n total_commission_amount: z.number().nullable().optional(),\n price: z.number().nullable().optional(),\n}).nullable().optional()\n\nexport type CommunicationOptions = z.infer;\n\n// Define the booking schema spec\nexport const bookingSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n external_id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n title: z.string().nullable().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n full_name: z.string().nullable().optional(),\n pax: z.number().optional().nullable(),\n email: z.string().email().nullable().optional(),\n phone: z.string().nullable().optional(),\n booking_id: z.string().nullable().optional(),\n flight_number: z.string().optional(),\n gender: z.enum(['M', 'F', 'O']).optional(),\n sent_messages: z.record(z.any()).optional(),\n locale: supportedLocalesSchema,\n status: bookingStatusSchema.optional().nullable(),\n data: {\n _type: 'object' as const,\n of: {\n source: z.string(),\n manual: z.boolean(),\n action: z.string().nullable().optional()\n },\n nullable: true,\n optional: true\n },\n communication_options: {\n _type: 'object' as const,\n of: {\n should_send_message: z.boolean(),\n channels: {\n _type: 'array' as const,\n of: communicationChannelSchema\n }\n }\n },\n is_processed_for_esim_restoration: z.boolean().optional().nullable(),\n is_pseudonymized: z.boolean().optional().nullable(),\n import_id: z.string().nullable().optional(),\n package_specifications: z.array(packageSpecificationSchema).min(1),\n departure_date: timestampRequired,\n return_date: timestampNullable,\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION },\n financial_insights: financialInsightsSchema,\n promo_codes: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION },\n nullable: true,\n optional: true\n },\n users: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: USER_COLLECTION },\n nullable: true,\n optional: true\n },\n esims: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: ESIM_COLLECTION },\n nullable: true,\n optional: true\n },\n hubby_foreign_identifiers: z.object({\n messaging_contact_id: z.string().nullable()\n }).nullable().optional()\n});\n\n","import { z } from \"zod\";\n\nexport const SUPPORTED_LOCALES = [\n \"en-US\",\n \"en-EU\",\n \"en-GB\",\n \"en-CA\",\n \"nl-NL\",\n \"de-DE\",\n \"fr-FR\",\n \"fr-CA\",\n \"it-IT\",\n \"es-ES\",\n \"cs-CZ\",\n \"pl-PL\",\n \"pt-PT\",\n \"fr-BE\",\n \"nl-BE\",\n \"de-AT\",\n \"de-CH\",\n \"fr-CH\",\n \"it-CH\",\n \"sv-SE\",\n \"sk-SK\",\n \"de-BE\",\n \"en-AU\",\n \"da-DK\",\n \"ko-KR\",\n] as const;\n\n// Define the type using TypeScript's typeof and indexing\n\n// Define the type using TypeScript's typeof and indexing\nexport type SupportedLocales = (typeof SUPPORTED_LOCALES)[number];\n\n// Create a Zod schema for validation\nexport const supportedLocalesSchema = z.enum(SUPPORTED_LOCALES);\n\n// Type inference from the schema (alternative way to define the type)\nexport type SupportedLocalesFromSchema = z.infer;\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n PACKAGE_COLLECTION,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// Define package specification schema for use in promo code\nexport const packageSpecificationSchema = z.object({\n destination: z.string().optional().or(z.array(z.string())),\n iso3: z.string().optional(),\n size: z.string().optional(),\n package_id: z.string().optional(),\n bundle_id: z.string().optional(),\n iata_code: z.string().optional(),\n package_duration: z.number().optional(),\n package_type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).optional(),\n traffic_policy: z.string().optional(),\n});\n\n// Define the promo code schema spec\nexport const promoCodeSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n redeemed_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // PromoCode specific fields\n uuid: z.string().uuid().nullable().optional(),\n external_id: z.string(),\n code: z.string(),\n claimed_at: timestampNullableOptional,\n allowance_user: z.number(),\n allowance_total: z.number(),\n type: z.enum(['discount', 'booking', 'booking_without_destination']).nullable().or(z.string()),\n usage: z.array(z.string()),\n uuid_usage: z.array(z.string()),\n package_specification: packageSpecificationSchema.optional(),\n valid_from: timestampRequired,\n valid_to: timestampRequired,\n\n // Reference fields\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION, nullable: true },\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true },\n\n // Optional fields based on the type\n discount: z.number().optional(),\n package_size: z.string().optional(),\n countries: z.array(z.string()).optional(),\n max_bytes: z.number().optional(),\n starter_data: z.number().optional()\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const countrySchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n bokun_id: z.number().nullable(),\n LTE: z.boolean().nullable(),\n apn: z.string().nullable(),\n click_count: z.number().nullable(),\n global_network: z.string().nullable(),\n global_price: z.number().nullable(),\n hubby: z.number().nullable(),\n imsi: z.number().nullable(),\n has_esim: z.boolean(),\n name: z.string().nullable(),\n region: z.boolean().nullable(),\n i18n_name: z.record(z.string()),\n is_region: z.boolean().nullable(),\n countries: z.array(z.string()).nullable(),\n tier: z.number().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define schema for conversion rates (for backward compatibility)\nexport const conversionRateSchema = z.object({\n currency: z.number()\n});\n\nexport type CoversionRate = z.infer;\n\n// Define the currency schema spec\nexport const currencySchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n // ISO 4217 currency code (e.g., \"USD\", \"EUR\")\n code: z.string().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n // Currency symbol (e.g., \"$\", \"€\")\n symbol: z.string().describe('Currency symbol (e.g., \"$\", \"€\")'),\n // Full name of the currency (e.g., \"US Dollar\")\n name: z.string().describe('Full name of the currency (e.g., \"US Dollar\")'),\n // Exchange rate relative to base currency\n rate: z.number().describe('Exchange rate relative to base currency'),\n // Whether this is the default currency\n is_default: z.boolean().describe('Whether this is the default currency')\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n PARTNER_COLLECTION,\n PAYMENT_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\n\n\nexport const statusHistorySchema = z.object({\n telna_esim_status: z.number(),\n source: z.string(),\n status: z.string(),\n timestamp: timestampRequired as unknown as z.ZodType,\n})\n\nexport const esimStatusHistorySchema = markAsSchemaSpec(z.array(statusHistorySchema).nullable().optional());\n\n// Define the eSIM schema spec\nexport const esimSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Common eSIM fields\n imsi: z.number(),\n qr: z.string(),\n iccid: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable().optional(),\n total_data: z.number(),\n data_left: z.number(),\n uuid: z.string().uuid().nullable().optional(),\n data_used: z.boolean(),\n status: z.string().nullable(),\n status_history: esimStatusHistorySchema,\n status_updated_at: timestampNullable,\n name: z.string(),\n android_auto: z.boolean(),\n partner_price: z.number().nullable(),\n promo: z.string().nullable(),\n type: z.enum(['api', 'promo', 'balance', 'code', 'external', 'payment']),\n is_auto_install: z.boolean(),\n is_archived: z.boolean(),\n user: z.string().nullable(),\n payment: z.string().nullable(),\n apn: z.string().nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Timestamp fields\n time_assigned: timestampNullable,\n last_updated: timestampNullable\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n USER_COLLECTION,\n timestampRequired,\n hubbyModelSpec,\n PARTNER_COLLECTION\n} from './common';\n\n// Define the payment schema spec\nexport const paymentSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n\n // Core payment fields (universal across ALL payment types)\n amount: z.number(),\n customer: z.string(),\n date: timestampRequired,\n source: z.enum(['app', 'webapp', 'platform']),\n invoice: z.string().optional(),\n fee: z.number().optional(),\n topup: z.boolean(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']).optional(), // 'pending' | 'processing' | 'completed' | 'failed'\n payment_intent_id: z.string().nullable().optional(), // Stripe PaymentIntent ID\n error_message: z.string().nullable().optional(), // Error message\n // Common resolved package specification (same format for all sources)\n package_specifications: z.array(z.object({\n package_type: z.string().optional(),\n package_size: z.string().optional(),\n package_duration: z.number().optional(),\n destination: z.string().optional(),\n iso3: z.string().optional(),\n })).optional(),\n\n // Reference fields\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n\n // Source-specific payment properties\n app_payment_properties: z.object({\n package: z.string().optional(), // package_id for app payments\n promo: z.string().optional(),\n iccid: z.string().optional(),\n global: z.string().optional(),\n balance_used: z.number().optional(),\n booking_id: z.string().nullable().optional(),\n discount_amount: z.string().optional(),\n is_special_offer: z.boolean().optional(),\n special_offer_discount: z.number().optional(),\n }).optional(),\n\n webapp_platform_payment_properties: z.object({\n promo_codes: z.array(z.string()).optional(),\n booking_id: z.string().optional(),\n partner: z.string().optional(),\n purchaseType: z.string().optional(),\n affiliateId: z.string().nullable().optional(),\n partner_name: z.string().optional(),\n locale: z.string().optional(),\n }).optional(),\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define the message schema spec\nexport const messageSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n key: z.string(),\n method: z.enum([\"push\", \"sms\", \"email\"]),\n status: z.enum([\"pending\", \"sent\", \"failed\", \"delivered\"]),\n created_at: timestampRequired,\n updated_at: timestampRequired\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const trafficPolicySpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n name: z.string(),\n description: z.string(),\n external_id: z.string(),\n provider: z.string()\n})","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n PARTNER_COLLECTION,\n TRAFFIC_POLICY_COLLECTION,\n timestampRequired,\n hubbyModelSpec\n} from './common';\n\nimport { countrySchemaSpec } from './country';\n\n// Define the package schema spec\nexport const packageSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n // Package specific fields\n external_id: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable(),\n label: z.string(),\n bytes: z.number(),\n hidden: z.boolean(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n price: z.number(),\n partner_price: z.number(),\n days: z.number(),\n name: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).nullable(),\n throttling: z.number().optional(),\n provider_parameters: z.object({\n imsi: z.number()\n }).nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Nested country data - need to use dynamic reference to country schema\n // This would typically be handled better with a proper recursive schema definition\n // but for simplicity, we're using any type here\n country_data: {\n _type: 'object' as const,\n of: countrySchemaSpec,\n nullable: true,\n optional: true\n }\n // country_data: z.any().nullable()\n});\n\nexport const commonPackageSchema = markAsSchemaSpec({\n size: z.string(),\n iso: z.string(),\n days: z.number(),\n price: z.number(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n packageType: z.string(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n});\n\nexport const telnaPackageSchema = markAsSchemaSpec({\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n ...commonPackageSchema,\n});\n\nexport const bondioPackageSchema = markAsSchemaSpec({\n ...commonPackageSchema,\n label: z.enum(['lambda', 'tau']),\n periodDays: z.number(),\n periodIterations: z.number(),\n throttling: z.number().optional().nullable(),\n \n});","import { z, ZodLazy } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema, SUPPORTED_LOCALES, SupportedLocales } from '../constants';\nimport {\n PARTNER_COLLECTION,\n USER_COLLECTION,\n PACKAGE_COLLECTION,\n PRICE_LIST_COLLECTION,\n tagModelSpec,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// ===== Helper schemas for nested structures =====\n\n// Address schema\nexport const addressSchema = z.object({\n street: z.string().nullable().optional(),\n city: z.string().nullable().optional(),\n postal_code: z.string().nullable().optional(),\n country: z.string().nullable().optional()\n});\n\n// Emit event schema\nexport const emitEventSchema = z.object({\n topup: z.boolean().optional().default(false),\n redemption: z.boolean().optional().default(false),\n activation: z.boolean().optional().default(false),\n depletion: z.boolean().optional().default(false),\n});\n\n// Registration schema\nexport const registrationSchema = z.object({\n chamber_of_commerce_number: z.string().nullable().optional(),\n vat_number: z.string().nullable().optional(),\n anvr_number: z.number().nullable().optional(),\n tax_number: z.string().nullable().optional()\n});\n\n// Banking details schema\nexport const bankingDetailsSchema = z.object({\n account_holder: z.string().nullable().optional(),\n billing_email: z.string().nullable().optional(),\n bank_name: z.string().nullable().optional(),\n iban: z.string().nullable().optional(),\n currency: z.string().nullable().optional()\n});\n\n// Package price schema\nexport const packagePriceSchema = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: z.object({ _type: z.literal('docRef'), collection: z.literal(PACKAGE_COLLECTION) })\n});\n\n// Package specification schema\nexport const packageSpecificationSchema = z.object({\n size: z.string().nullable().optional(),\n type: z.string().nullable().optional(),\n destination: z.string().nullable().optional()\n});\n\n// Pricing strategy schema\nexport const pricingStrategySchema = z.object({\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: z.object({\n _type: z.literal('docRef'),\n collection: z.literal(PRICE_LIST_COLLECTION),\n nullable: z.literal(true)\n }),\n custom_prices: z.array(packagePriceSchema)\n});\n\n// Visual identity banner schema\nexport const visualIdentityBannerSchema = z.object({\n action: z.string().nullable().optional(),\n image_url: z.string(),\n alt: z.string(),\n click_url: z.string(),\n locale: supportedLocalesSchema,\n properties: z.record(z.string())\n});\n\n// Schedule filter schema\nexport const scheduleFilterSchema = z.object({\n type: z.enum(['iso3', 'gender', 'percentage', 'age']),\n value: z.union([z.string(), z.number()]),\n comparison: z.enum([\n 'equal',\n 'not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal'\n ])\n});\n\n// Convert object-like schemas to proper Zod objects\nexport const visualIdentityBannersSchema = z.object({\n strategy: z.enum(['fixed', 'rotating', 'destination', 'time_of_day']),\n banners: z.array(visualIdentityBannerSchema).nullable().optional()\n});\n\nexport const visualIdentitySchema = z.object({\n primary_color: z.string(),\n secondary_color: z.string(),\n logo: z.string(),\n font: z.string().nullable().optional(),\n top_banner: visualIdentityBannersSchema.optional(),\n mid_banner: visualIdentityBannersSchema.optional()\n});\n\n// Partner contact schema\nexport const partnerContactSchema = z.object({\n name: z.string().nullable().optional(),\n email: z.string().nullable(),\n office_phone: z.string().nullable().optional(),\n office_email: z.string().nullable().optional()\n});\n\n// Partner data schema\nexport const partnerDataSchema = z.object({\n source: z.string(),\n manual: z.boolean()\n});\n\n// Package strategy schema\nexport const packageStrategySchema = z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any()\n});\n\n// Schedule email schema\nexport const scheduleEmailSchema = z.object({\n brevo_template_id: z.number(),\n subject: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional(),\n preview_text: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional()\n}).nullable().optional();\n\n// Schedule push schema\nexport const schedulePushSchema = z.object({\n title: z.record(z.string()).optional(),\n body: z.record(z.string()).optional(),\n target: z.string()\n}).nullable().optional();\n\n// Schedule schema\nexport const scheduleSchema = z.object({\n days: z.number(),\n email: scheduleEmailSchema,\n push: schedulePushSchema,\n hour: z.number(),\n key: z.string(),\n method: z.enum(['email', 'sms', 'whatsapp', 'push']),\n moment: z.enum(['departure_date', 'return_date', 'immediate']),\n filter: scheduleFilterSchema.nullable().optional()\n});\n\nexport const freeEsimSchema = z.object({\n enabled: z.boolean(),\n package_specification: z.object({\n size: z.string(),\n package_type: z.string(),\n destination: z.string(),\n package_duration: z.number(),\n type: z.string().nullable().optional()\n }),\n booking_id_verification: z.boolean().default(false),\n booking_id_verification_pattern: z.string().nullable().optional(),\n allowance: z.number(),\n total_allowance: z.number(),\n});\n\n// Agent signup settings schema\nexport const agentSignupSettingsSchema = z.object({\n slack_channel: z.string().nullable().optional(),\n welcome_email_template: z.number().nullable().optional(),\n password_reset_template: z.number().nullable().optional(),\n partner_type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n enable_complimentary_booking: z.boolean().default(true),\n complimentary_booking_partner_id: z.string().nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().default(true),\n source_partner_branding: z.boolean().default(false),\n own_branding: z.boolean().default(false)\n }).default({})\n});\n\n// Platform settings schema\nexport const platformSettingsSchema = z.object({\n package_strategy: z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any(),\n supported_package_types: z.enum(['data-limited', 'unlimited']).optional()\n }).nullable().optional(),\n free_esim: freeEsimSchema.nullable().optional(),\n booking_defaults: z.object({\n locale: supportedLocalesSchema\n }).nullable().optional(),\n booking_confirmation: z.object({\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n }).nullable().optional(),\n emit_events: emitEventSchema.nullable().optional(),\n schedules: z.array(scheduleSchema).optional(),\n brevo: z.object({\n list_ids: z.array(z.number()),\n campaign_mode: z.boolean()\n }).nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().optional().default(true),\n source_partner_branding: z.boolean().optional().default(false),\n own_branding: z.boolean().optional().default(false)\n }).nullable().optional(),\n agent_signup_settings: agentSignupSettingsSchema.nullable().optional(),\n upgrade_offer: z.object({\n enabled: z.boolean(),\n discount_percentage: z.number().min(0).max(100),\n }).nullable().optional()\n});\n\n// ===== Exportable schema specs =====\n\n// Package price schema spec\nexport const packagePriceSchemaSpec = markAsSchemaSpec({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n});\n\n// Financial properties schema spec\nexport const financialPropertiesSchemaSpec = markAsSchemaSpec({\n administration_fee: z.number().nullable(),\n income_per_gb: z.number().nullable(),\n commission_fee: z.number().nullable().optional(),\n commission_percentage: z.number().nullable().optional(),\n payment_method: z.enum(['invoice', 'direct']),\n requires_card: z.boolean().nullable(),\n next_invoice: timestampNullableOptional,\n last_invoice: timestampNullableOptional,\n pricing_strategies: {\n _type: 'object' as const,\n of: {\n partner: {\n _type: 'object' as const,\n of: {\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n },\n user: {\n _type: 'object' as const,\n of: {\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n }\n },\n nullable: true\n }\n});\n\n// Platform settings schema spec\nexport const platformSettingsSchemaSpec = markAsSchemaSpec({\n package_strategy: {\n _type: 'object' as const,\n of: packageStrategySchema.shape,\n nullable: true,\n optional: true\n },\n free_esim: {\n _type: 'object' as const,\n of: freeEsimSchema.shape,\n nullable: true,\n optional: true\n },\n booking_defaults: {\n _type: 'object' as const,\n of: {\n locale: supportedLocalesSchema\n },\n nullable: true,\n optional: true\n },\n booking_confirmation: {\n _type: 'object' as const,\n of: {\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n },\n nullable: true,\n optional: true\n },\n schedules: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: scheduleSchema.shape\n },\n optional: true\n },\n agent_signup_settings: {\n _type: 'object' as const,\n of: agentSignupSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\n// Webhook settings schema\nexport const webhookSettingsSchema = z.object({\n url: z.string().url().nullable().optional(),\n api_key: z.string().nullable().optional(),\n enabled: z.boolean().default(false),\n events: z.object({\n promocode_redemption: z.boolean().default(false)\n }).default({})\n});\n\n// ===== Main partner schema =====\nexport const partnerSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Partner specific fields\n name: z.string().min(3),\n type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n is_active: z.boolean().nullable().optional(),\n external_id: z.string().nullable().optional(),\n\n // Complex nested objects\n contact: {\n _type: 'object' as const,\n of: partnerContactSchema.shape,\n nullable: true\n },\n address: {\n _type: 'object' as const,\n of: addressSchema.shape,\n nullable: true\n },\n registration: {\n _type: 'object' as const,\n of: registrationSchema.shape,\n nullable: true\n },\n banking_details: {\n _type: 'object' as const,\n of: bankingDetailsSchema.shape,\n nullable: true\n },\n\n // Reference fields\n parent: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n users: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: USER_COLLECTION }, nullable: true },\n\n // Complex nested structures\n financial_properties: financialPropertiesSchemaSpec,\n // Visual identity\n visual_identity: {\n _type: 'object' as const,\n of: visualIdentitySchema.shape,\n nullable: true\n },\n\n // Platform settings\n platform_settings: {\n _type: 'object' as const,\n of: platformSettingsSchema.shape,\n nullable: true\n },\n\n // Tags\n tags: {\n _type: 'array' as const,\n of: tagModelSpec,\n nullable: true,\n optional: true\n },\n\n // Tag slugs\n tag_slugs: {\n _type: 'array' as const,\n of: z.string(),\n nullable: true,\n optional: true\n },\n\n // Metadata\n data: {\n _type: 'object' as const,\n of: partnerDataSchema.shape,\n nullable: true,\n optional: true\n },\n\n // Webhook settings\n webhook_settings: {\n _type: 'object' as const,\n of: webhookSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\nexport const priceListItemSchemaSpec = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: z.string(),\n});\n\n// Price list item with docRef support for use in priceListSchemaSpec\nconst priceListItemWithDocRefSpec = {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n};\n\n// ===== Price list schema =====\nexport const priceListSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Price list specific fields\n name: z.string().min(3),\n description: z.string().nullable(),\n type: z.enum(['partner', 'consumer']),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n price_list: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec,\n optional: true\n },\n package_prices: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec\n },\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec, PARTNER_COLLECTION } from './common';\n\n// Country schema spec\nexport const analyticsSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n service: z.string(),\n date: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/), // YYYY-MM-DD\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n event: z.string(),\n parameter: z.string().nullable(),\n sum: z.number(),\n});","import { z } from 'zod';\nimport { timestampRequired } from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const payloadSpec = {\n _type: 'record' as const,\n of: z.unknown(),\n optional: true\n};\n\nexport const apiLogSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n method: z.string(),\n user_id: z.string().optional(),\n path: z.string(),\n resource_type: z.string().optional(),\n resource_id: z.string().optional(),\n partner_id: z.string().optional(),\n payload: payloadSpec,\n timestamp: timestampRequired,\n status_code: z.number()\n});\n","import { z } from 'zod';\nimport { \n USER_TOUCHPOINTS_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullableOptional,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n PARTNER_COLLECTION\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const userTouchpointsSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n unique_device_identifier: z.string().nullable().optional(),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true, optional: true },\n promo_code: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n promo_code_redeemed_at: timestampNullableOptional,\n esim_assigned_at: timestampNullableOptional,\n esim_install_initiated_at: timestampNullableOptional,\n esim_install_completed_at: timestampNullableOptional,\n esim_first_package_activated_at: timestampNullableOptional,\n esim_topped_up_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional, PERMISSION_COLLECTION } from './common';\n\nexport const roleSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional } from './common';\n\nexport const permissionSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullable\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\n\n// Package type schema for reward strategy\nexport const rewardPackageTypeSchema = z.enum(['data-limited', 'starter']);\nexport type RewardPackageType = z.infer;\n\n// Reward strategy base reward schema\nexport const baseRewardSchema = z.object({\n package_size: z.string(),\n package_type: rewardPackageTypeSchema\n});\n\nexport type BaseReward = z.infer;\n\n// Reward strategy multipliers schema\nexport const rewardMultipliersSchema = z.object({\n quality_based: z.number().optional(),\n completion_based: z.number().optional()\n}).optional();\n\nexport type RewardMultipliers = z.infer;\n\n// Reward strategy schema\nexport const rewardStrategySchema = z.object({\n base_reward: baseRewardSchema,\n multipliers: rewardMultipliersSchema\n});\n\nexport type RewardStrategy = z.infer;\n\n// Review schema spec\nexport const reviewSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n partner_id: z.string().nullable().optional(),\n questions: z.record(z.any()),\n reward_strategy: rewardStrategySchema,\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true }\n});\n\n// Review submission schema spec\nexport const reviewSubmissionSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n review: { _type: 'docRef' as const, collection: REVIEW_COLLECTION, nullable: true },\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true },\n questions: z.record(z.any()),\n iccid: z.string(),\n isAndroid: z.boolean(),\n country_id: z.string(),\n partner_id: z.string(),\n review_id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n analysis: z.record(z.any()).nullable().optional()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PACKAGE_TEMPLATE_COLLECTION,\n PARTNER_COLLECTION,\n timestampNullable,\n timestampRequired,\n TRAFFIC_POLICY_COLLECTION\n} from './common';\n\n// Destination schema spec\nexport const destinationSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n type: z.string(), // \"country\" or region names like \"Europe\", \"Asia\", \"Middle East\"\n iso3s: z.array(z.string()),\n name: z.string(),\n i18n_name: z.record(z.string()),\n is_active: z.boolean(),\n sort_order: z.number(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n\n// Destination offer schema spec\nexport const destinationBundleSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n parent_document_id: z.string(),\n type: z.enum(['unlimited', 'data-limited', 'starter']),\n label: z.string().nullable().optional(), //'5 Days' or '5GB'\n provider: z.enum(['telna', 'bondio']),\n\n duration_in_days: z.number(),\n duration_in_seconds: z.number(),\n \n size_in_bytes: z.number(),\n size_in_megabytes: z.number(),\n size_in_gigabytes: z.number(),\n\n package_template: { _type: 'docRef' as const, collection: PACKAGE_TEMPLATE_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n //All unlimited packages will have a traffic policy, but this only refers to telna bundles\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n b2c_price: z.number(),\n b2b_price: z.number(),\n partner_b2c_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n partner_b2b_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n is_active: z.boolean().default(true),\n is_visible: z.boolean().default(true), //All bundles that will have a partner will probably be invisible\n priority: z.number().default(10),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n deleted_at: timestampNullable,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n deleted_by: z.string().nullable()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n timestampRequired\n} from './common';\n\n// Package Template Schema Spec - unified schema for all providers\nexport const packageTemplateSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n provider: z.string(), // e.g., \"telna\", \"bondio\"\n type: z.string(),\n purchase_price: z.number(),\n external_id: z.string(),\n supported_countries: z.array(z.string()), // iso3 codes\n provider_specific_data: {\n _type: 'record' as const,\n of: z.any(),\n nullable: true,\n optional: true\n },\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, USER_COLLECTION } from './common';\n\n// Define the login request schema spec\nexport const loginRequestSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n email: z.string().email(),\n status: z.enum(['pending', 'completed', 'expired']),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n created_at: timestampRequired,\n expires_at: timestampRequired\n});\n","import { buildClientSchema } from './builders/client';\nimport {\n userSchemaSpec,\n apiKeySpec,\n apiKeysSpec,\n apiKeysObjectSpec\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { bondioPackageSchema, packageSchemaSpec, telnaPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n financialPropertiesSchemaSpec as financialPropertiesSchema,\n packagePriceSchema,\n platformSettingsSchema,\n visualIdentitySchema,\n pricingStrategySchema,\n freeEsimSchema,\n} from './specs/partner';\nimport { analyticsSpec } from './specs/analytics';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { z } from 'zod';\nimport { roleSchemaSpec } from './specs/role';\nimport { permissionSchemaSpec } from './specs/permission';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\n\n\n/** ZOD SCHEMAS */\nexport const HUserSchema = buildClientSchema(userSchemaSpec);\nexport const HBookingSchema = buildClientSchema(bookingSchemaSpec);\nexport const HCountrySchema = buildClientSchema(countrySchemaSpec);\nexport const HCurrencySchema = buildClientSchema(currencySchemaSpec);\nexport const HESIMSchema = buildClientSchema(esimSchemaSpec);\nexport const HPaymentSchema = buildClientSchema(paymentSchemaSpec);\nexport const HMessageSchema = buildClientSchema(messageSchemaSpec);\nexport const HPackageSchema = buildClientSchema(packageSchemaSpec);\nexport const HPromoCodeSchema = buildClientSchema(promoCodeSchemaSpec);\nexport const HPartnerSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPriceListSchema = buildClientSchema(priceListSchemaSpec);\nexport const HFinancialPropertiesSchema = buildClientSchema(financialPropertiesSchema);\nexport const HApiLogSchema = buildClientSchema(apiLogSchemaSpec);\nexport const HPackagePriceSchema = buildClientSchema(packagePriceSchema);\nexport const HubbyModelSchema = buildClientSchema(hubbyModelSpec);\nexport const HPartnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPlatformSettingsSchema = buildClientSchema(platformSettingsSchema);\nexport const HVisualIdentitySchema = buildClientSchema(visualIdentitySchema);\nexport const HPricingStrategySchema = buildClientSchema(pricingStrategySchema);\nexport const HFreeEsimSchema = buildClientSchema(freeEsimSchema);\nexport const HAnalyticsSchema = buildClientSchema(analyticsSpec);\nexport const HRoleSchema = buildClientSchema(roleSchemaSpec);\nexport const HPermissionSchema = buildClientSchema(permissionSchemaSpec);\nexport const HTagSchema = buildClientSchema(tagModelSpec);\nexport const HTrafficPolicySchema = buildClientSchema(trafficPolicySpec);\nexport const HTelnaPackageSchema = buildClientSchema(telnaPackageSchema);\nexport const HBondioPackageSchema = buildClientSchema(bondioPackageSchema);\nexport const HReviewSchema = buildClientSchema(reviewSchemaSpec);\nexport const HReviewSubmissionSchema = buildClientSchema(reviewSubmissionSchemaSpec);\nexport const HDestinationSchema = buildClientSchema(destinationSchemaSpec);\nexport const HDestinationBundleSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const HPackageTemplateSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const HUserTouchpointsSchema = buildClientSchema(userTouchpointsSchemaSpec);\nexport const HLoginRequestSchema = buildClientSchema(loginRequestSchemaSpec);\n// Additional lower-level schemas\nexport const HAddressSchema = addressSchema;\nexport const HRegistrationSchema = registrationSchema;\nexport const HBankingDetailsSchema = bankingDetailsSchema;\nexport const HPartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const HPromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const HVisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const HScheduleFilterSchema = scheduleFilterSchema;\nexport const HPartnerContactSchema = partnerContactSchema;\nexport const HPartnerDataSchema = partnerDataSchema;\nexport const HCommunicationChannelSchema = communicationChannelSchema;\nexport const HBookingStatusSchema = bookingStatusSchema;\nexport const HCommunicationOptionsSchema = communicationOptionsSchema;\nexport const HRewardStrategySchema = rewardStrategySchema;\nexport const HBaseRewardSchema = baseRewardSchema;\nexport const HRewardMultipliersSchema = rewardMultipliersSchema;\nexport const HRewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type HAnalytics = z.infer;\nexport type HUser = z.infer;\nexport type HBooking = z.infer;\nexport type HCountry = z.infer;\nexport type HCurrency = z.infer;\nexport type HESIM = z.infer;\nexport type HPayment = z.infer;\nexport type HMessage = z.infer;\nexport type HPackage = z.infer;\nexport type HPromoCode = z.infer;\nexport type HPartner = z.infer;\nexport type HPriceList = z.infer;\nexport type HApiLog = z.infer;\nexport type HTag = z.infer;\nexport type HTrafficPolicy = z.infer;\nexport type HBondioPackage = z.infer;\nexport type HTelnaPackage = z.infer;\nexport type HReview = z.infer;\nexport type HReviewSubmission = z.infer;\nexport type HDestination = z.infer;\nexport type HDestinationBundle = z.infer;\nexport type HPackageTemplate = z.infer;\nexport type HUserTouchpoints = z.infer;\nexport type HLoginRequest = z.infer;\n// Additional lower-level types\nexport type HAddress = z.infer;\nexport type HRegistration = z.infer;\nexport type HBankingDetails = z.infer;\nexport type HPartnerPackageSpecification = z.infer;\nexport type HPromoPackageSpecification = z.infer;\nexport type HVisualIdentityBanner = z.infer;\nexport type HFinancialProperties = z.infer;\nexport type HScheduleFilter = z.infer;\nexport type HPartnerContact = z.infer;\nexport type HPartnerData = z.infer;\nexport type HCommunicationChannel = z.infer;\nexport type HBookingStatus = z.infer;\nexport type HCommunicationOptions = z.infer;\nexport type HRewardStrategy = z.infer;\nexport type HBaseReward = z.infer;\nexport type HRewardMultipliers = z.infer;\nexport type HRewardPackageType = z.infer;\nexport type HHubbyModel = z.infer;\n\nexport type HubbyModelApp = HHubbyModel;\n\nexport type SupportedLocales = typeof SUPPORTED_LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\nexport type HRole = z.infer;\nexport type HPermission = z.infer; "]} \ No newline at end of file diff --git a/dist/base/index.d.cts b/dist/base/index.d.cts index ce15b0f..2848f10 100644 --- a/dist/base/index.d.cts +++ b/dist/base/index.d.cts @@ -513,6 +513,7 @@ declare const HESIMSchema: z.ZodObject<{ status: string; telna_esim_status: number; }>, "many">>>; + status_updated_at: z.ZodEffects; name: z.ZodString; android_auto: z.ZodBoolean; partner_price: z.ZodNullable; @@ -546,6 +547,7 @@ declare const HESIMSchema: z.ZodObject<{ total_data: number; data_left: number; data_used: boolean; + status_updated_at: Date; android_auto: boolean; partner_price: number | null; payment: string | null; @@ -582,6 +584,7 @@ declare const HESIMSchema: z.ZodObject<{ total_data: number; data_left: number; data_used: boolean; + status_updated_at: Date; android_auto: boolean; partner_price: number | null; payment: string | null; diff --git a/dist/base/index.d.ts b/dist/base/index.d.ts index ce15b0f..2848f10 100644 --- a/dist/base/index.d.ts +++ b/dist/base/index.d.ts @@ -513,6 +513,7 @@ declare const HESIMSchema: z.ZodObject<{ status: string; telna_esim_status: number; }>, "many">>>; + status_updated_at: z.ZodEffects; name: z.ZodString; android_auto: z.ZodBoolean; partner_price: z.ZodNullable; @@ -546,6 +547,7 @@ declare const HESIMSchema: z.ZodObject<{ total_data: number; data_left: number; data_used: boolean; + status_updated_at: Date; android_auto: boolean; partner_price: number | null; payment: string | null; @@ -582,6 +584,7 @@ declare const HESIMSchema: z.ZodObject<{ total_data: number; data_left: number; data_used: boolean; + status_updated_at: Date; android_auto: boolean; partner_price: number | null; payment: string | null; diff --git a/dist/base/index.js b/dist/base/index.js index 036e435..9ad20c8 100644 --- a/dist/base/index.js +++ b/dist/base/index.js @@ -472,6 +472,7 @@ var esimSchemaSpec = markAsSchemaSpec({ data_used: z.boolean(), status: z.string().nullable(), status_history: esimStatusHistorySchema, + status_updated_at: timestampNullable, name: z.string(), android_auto: z.boolean(), partner_price: z.number().nullable(), diff --git a/dist/base/index.js.map b/dist/base/index.js.map index 5ba8085..cd912eb 100644 --- a/dist/base/index.js.map +++ b/dist/base/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/builders/client.ts","../../src/common.ts","../../src/specs/user.ts","../../src/specs/common.ts","../../src/specs/booking.ts","../../src/constants.ts","../../src/specs/promocode.ts","../../src/specs/country.ts","../../src/specs/currency.ts","../../src/specs/esim.ts","../../src/specs/payment.ts","../../src/specs/message.ts","../../src/specs/traffic_policy.ts","../../src/specs/package.ts","../../src/specs/partner.ts","../../src/specs/analytics.ts","../../src/specs/apiLogs.ts","../../src/specs/userTouchpoints.ts","../../src/specs/role.ts","../../src/specs/permission.ts","../../src/specs/review.ts","../../src/specs/destination.ts","../../src/specs/package_template.ts","../../src/specs/login_request.ts","../../src/index.client.ts"],"names":["z","packageSpecificationSchema","SUPPORTED_LOCALES"],"mappings":"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","sourcesContent":["import { z, ZodTypeAny } from 'zod';\nimport type { FieldSpec, SchemaFromSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\n\nexport function buildClientSchema(spec: S, path: string[] = []): SchemaFromSpec {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid schema spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec) as unknown as SchemaFromSpec;\n }\n\n // Check if object might be a Zod schema (has _def property or ~standard metadata)\n if (typeof spec === 'object' && spec !== null &&\n (('_def' in spec) || ('~standard' in spec && (spec as any)['~standard']?.vendor === 'zod'))) {\n try {\n // Try to use it as a Zod schema directly\n return wrapZodSchema(spec as unknown as z.ZodTypeAny) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this fails, we'll continue with the other checks\n console.warn(`Failed to use object as Zod schema at \"${pathString}\":`, error);\n }\n }\n\n // ----- Array -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.array(buildClientSchema(spec.of, [...path, '[i]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Record -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.record(buildClientSchema(spec.of, [...path, '[key]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Timestamp -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'timestamp') {\n let schema: ZodTypeAny = z.preprocess((val) => {\n if (typeof val === 'string') {\n // Try to parse the string to a Date object\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date; // undefined will cause z.date() to fail\n }\n if (typeof val === 'number') {\n // Handle numeric timestamps\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date;\n }\n // If it's already a Date or something else, return it as is\n return val;\n }, z.date({ required_error: 'Date is required', invalid_type_error: 'Invalid date format' }));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- DocRef -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'docRef') {\n let schema: ZodTypeAny = z.string(); // only ID on client\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Object (plain nested object spec) -----\n if (\n typeof spec === 'object' &&\n spec !== null &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || (typeof spec === 'object' && spec !== null && '_type' in spec && (spec as any)._type === 'object')) {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // If we have an object with fields that look like schema specs, try to handle it as a schema object\n if (typeof spec === 'object' && spec !== null) {\n try {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this also fails, we'll throw the error below\n console.warn(`Failed to handle object as plain schema at \"${pathString}\":`, error);\n }\n }\n\n // 🔥 If we got here, the spec had a structure we didn't handle\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n}\n\n","import { ZodTypeAny, z } from 'zod';\nimport type { SchemaBuilder } from './types';\n\n/**\n * Ensures a Zod schema is wrapped to be optional and/or nullable,\n * if not already. Use this in recursive schema builders.\n * Also applies any other supported schema transformations provided in options.\n */\nexport function wrapZodSchema(\n schema: ZodTypeAny,\n options?: {\n optional?: boolean;\n nullable?: boolean;\n min?: number;\n max?: number;\n // Allow arbitrary extensions via dynamic property\n [key: string]: any;\n }\n): ZodTypeAny {\n if (!options) return schema;\n\n let wrapped = schema;\n\n // Handle nullable and optional specially since they're common\n if (options.nullable && !wrapped.isNullable?.()) {\n wrapped = wrapped.nullable();\n }\n\n if (options.optional && !wrapped.isOptional?.()) {\n wrapped = wrapped.optional();\n }\n\n // Process all other options dynamically\n for (const [key, value] of Object.entries(options)) {\n // Skip the already handled properties and undefined values\n if (['nullable', 'optional'].includes(key) || value === undefined) {\n continue;\n }\n\n // Check if the schema has a method matching the option key\n if (typeof (wrapped as any)[key] === 'function') {\n wrapped = (wrapped as any)[key](value);\n }\n }\n\n return wrapped;\n}\n\nexport function wrapObjectSchema(\n spec: any, // using any to support dynamic `spec.type === 'object'`\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n if (!('of' in spec)) {\n throw new Error(`Object spec at \"${pathString}\" is missing 'of'`);\n }\n\n const shape: Record = {};\n for (const [key, value] of Object.entries(spec.of)) {\n shape[key] = builder(value as any, [...path, key]);\n }\n\n let objectSchema: ZodTypeAny = z.object(shape);\n if (spec.nullable) objectSchema = objectSchema.nullable();\n if (spec.optional) objectSchema = objectSchema.optional();\n return objectSchema;\n}\n\n/**\n * Wraps a plain object shape (no `type: 'object'`) into a Zod schema.\n * Assumes each field is either a Zod schema or another FieldSpec.\n */\nexport function wrapPlainObjectSchema(\n spec: Record,\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n // Handle object field specs with '_type': 'object'\n if ('_type' in spec && spec._type === 'object' && 'of' in spec) {\n return wrapObjectSchema(spec, path, builder);\n }\n\n const shape: Record = {};\n\n // Only add fields to the schema if they're not special control properties\n for (const [key, val] of Object.entries(spec)) {\n if (key !== '_type' && key !== 'nullable' && key !== 'optional') {\n shape[key] = builder(val, [...path, key]);\n }\n }\n\n // Create the base object schema\n let schema: ZodTypeAny = z.object(shape);\n\n // Apply nullable/optional modifiers if needed\n if ('nullable' in spec && spec.nullable === true) {\n schema = schema.nullable();\n }\n\n if ('optional' in spec && spec.optional === true) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nexport const SCHEMA_MARKER = Symbol('ZodSchemaSpecMarker');\n\nexport function markAsSchemaSpec(spec: T): T {\n Object.defineProperty(spec, SCHEMA_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return spec;\n}\n\nexport function isSchemaSpec(obj: unknown): obj is Record {\n return typeof obj === 'object' && obj !== null && SCHEMA_MARKER in obj;\n}","import { z } from 'zod';\nimport { PARTNER_COLLECTION, PROFILE_COLLECTION, timestampNullableOptional, timestampRequired, timestampNullable, ROLE_COLLECTION, PERMISSION_COLLECTION } from './common';\nimport { markAsSchemaSpec } from '../common'\n\nexport const apiKeySpec = {\n expires_at: { _type: 'timestamp' as const },\n secret: z.string(),\n is_active: z.boolean(),\n}\n\nexport const apiKeysSpec = {\n _type: 'record' as const,\n of: {\n _type: 'object' as const,\n of: apiKeySpec\n }\n}\n\nexport const apiKeysObjectSpec = {\n _type: 'object' as const,\n of: {\n allowed_keys: { _type: 'array' as const, nullable: true, optional: true, of: z.string() },\n keys: apiKeysSpec\n },\n nullable: true,\n optional: true\n}\n\nexport const userSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string().nullable(),\n email: z.string().email().nullable(),\n stripe_id: z.string().nullable().optional(),\n referral: z.string().nullable().optional(),\n fcm: z.string().optional(),\n deeplink: z.string().nullable().optional(),\n gender: z.string().nullable().optional(),\n company: z.string().nullable().optional(),\n coordinates: z.string().nullable().optional(),\n platform: z.enum(['ios', 'android']).nullable().optional(),\n platform_version: z.string().nullable().optional(),\n device_type: z.string().nullable().optional(),\n app_version: z.string().nullable().optional(),\n parameters: z.any().nullable().optional(),\n locale: z.string().nullable().optional(),\n phone_model: z.string().nullable().optional(),\n phone_os: z.string().nullable().optional(),\n phone_os_version: z.string().nullable().optional(),\n ios: z.boolean().nullable().optional(),\n has_card_saved: z.boolean().nullable().optional(),\n admin: z.boolean().nullable().optional(),\n api_keys: apiKeysObjectSpec,\n profileRef: z.string().nullable().optional(),\n currency: z.string().nullable().optional(),\n receipt_email: z.string().nullable().optional(),\n source: z.enum(['direct', 'promo', 'platform']).nullable().optional(),\n role: { _type: 'docRef' as const, collection: ROLE_COLLECTION, optional: true, nullable: true },\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n balance: z.number().nullable().optional(),\n createdAt: { _type: 'timestamp' as const },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, optional: true, nullable: true },\n review_requested: timestampNullableOptional,\n last_seen: timestampNullableOptional,\n created_at: timestampNullableOptional,\n updated_at: timestampNullableOptional,\n created_by: z.string().nullable().optional(),\n updated_by: z.string().nullable().optional(),\n push_to_start_token: z.string().nullable().optional(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const PARTNER_COLLECTION = '/companies/hubby/partners';\nexport const USER_COLLECTION = 'users';\nexport const PROFILE_COLLECTION = '/companies/hubby/profiles';\nexport const PACKAGE_COLLECTION = '/companies/hubby/packages';\nexport const PACKAGE_TEMPLATE_COLLECTION = '/companies/hubby/package_templates';\nexport const PROMO_CODE_COLLECTION = '/companies/hubby/promo_codes';\nexport const COUNTRY_COLLECTION = 'countries';\nexport const ESIM_COLLECTION = 'esims';\nexport const PAYMENT_COLLECTION = 'payments';\nexport const PRICE_LIST_COLLECTION = 'price_lists';\nexport const BOOKING_COLLECTION = 'bookings';\nexport const MESSAGE_COLLECTION = 'messages';\nexport const CURRENCY_COLLECTION = 'currencies';\nexport const API_LOG_COLLECTION = 'api_logs'\nexport const ROLE_COLLECTION = 'roles';\nexport const PERMISSION_COLLECTION = 'permissions';\nexport const TRAFFIC_POLICY_COLLECTION = 'traffic_policies';\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\nexport const DESTINATION_COLLECTION = 'destinations';\nexport const DESTINATION_OFFER_COLLECTION = 'offers';\nexport const USER_TOUCHPOINTS_COLLECTION = 'user_touchpoints';\n\n\nexport const packageTypes = ['data-limited', 'time-limited', 'starter', 'unlimited'];\n\n// Timestamp specs\nexport const timestampNullableOptional = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampNullable = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampRequired = { _type: 'timestamp' as const, nullable: false, optional: false };\n\nexport const hubbyModelSpec = {\n id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n created_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n}\n\nexport const tagModelSpec = {\n ...hubbyModelSpec,\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n color: z.string().nullable().optional(),\n}","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n PROMO_CODE_COLLECTION,\n USER_COLLECTION,\n ESIM_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema } from '../constants';\nimport { packageSpecificationSchema } from './promocode';\n\n// Enum for communication channels\nexport const communicationChannelSchema = z.enum([\n 'EMAIL',\n 'WHATSAPP',\n 'PUSH_NOTIFICATION',\n 'SMS'\n]);\nexport type CommunicationChannelType = z.infer;\n\n// For backward compatibility\nexport type CommunicationChannel = CommunicationChannelType;\n\n// Add enum-like object for use in code\nexport const CommunicationChannel = {\n EMAIL: 'EMAIL' as const,\n WHATSAPP: 'WHATSAPP' as const,\n PUSH_NOTIFICATION: 'PUSH_NOTIFICATION' as const,\n SMS: 'SMS' as const\n} as const;\n\n// Status type for bookings\nexport const bookingStatusSchema = z.enum([\n 'PENDING',\n 'CONFIRMED',\n 'COMPLETED',\n 'CANCELLED',\n 'UNPAID',\n 'EXPIRED'\n]);\nexport type BookingStatus = z.infer;\n\n// Communication options schema\nexport const communicationOptionsSchema = z.object({\n should_send_message: z.boolean(),\n channels: z.array(communicationChannelSchema)\n});\n\nexport const financialInsightsSchema = z.object({\n partner_commission_percentage: z.number().nullable().optional(),\n total_commission_amount: z.number().nullable().optional(),\n price: z.number().nullable().optional(),\n}).nullable().optional()\n\nexport type CommunicationOptions = z.infer;\n\n// Define the booking schema spec\nexport const bookingSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n external_id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n title: z.string().nullable().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n full_name: z.string().nullable().optional(),\n pax: z.number().optional().nullable(),\n email: z.string().email().nullable().optional(),\n phone: z.string().nullable().optional(),\n booking_id: z.string().nullable().optional(),\n flight_number: z.string().optional(),\n gender: z.enum(['M', 'F', 'O']).optional(),\n sent_messages: z.record(z.any()).optional(),\n locale: supportedLocalesSchema,\n status: bookingStatusSchema.optional().nullable(),\n data: {\n _type: 'object' as const,\n of: {\n source: z.string(),\n manual: z.boolean(),\n action: z.string().nullable().optional()\n },\n nullable: true,\n optional: true\n },\n communication_options: {\n _type: 'object' as const,\n of: {\n should_send_message: z.boolean(),\n channels: {\n _type: 'array' as const,\n of: communicationChannelSchema\n }\n }\n },\n is_processed_for_esim_restoration: z.boolean().optional().nullable(),\n is_pseudonymized: z.boolean().optional().nullable(),\n import_id: z.string().nullable().optional(),\n package_specifications: z.array(packageSpecificationSchema).min(1),\n departure_date: timestampRequired,\n return_date: timestampNullable,\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION },\n financial_insights: financialInsightsSchema,\n promo_codes: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION },\n nullable: true,\n optional: true\n },\n users: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: USER_COLLECTION },\n nullable: true,\n optional: true\n },\n esims: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: ESIM_COLLECTION },\n nullable: true,\n optional: true\n },\n hubby_foreign_identifiers: z.object({\n messaging_contact_id: z.string().nullable()\n }).nullable().optional()\n});\n\n","import { z } from \"zod\";\n\nexport const SUPPORTED_LOCALES = [\n \"en-US\",\n \"en-EU\",\n \"en-GB\",\n \"en-CA\",\n \"nl-NL\",\n \"de-DE\",\n \"fr-FR\",\n \"fr-CA\",\n \"it-IT\",\n \"es-ES\",\n \"cs-CZ\",\n \"pl-PL\",\n \"pt-PT\",\n \"fr-BE\",\n \"nl-BE\",\n \"de-AT\",\n \"de-CH\",\n \"fr-CH\",\n \"it-CH\",\n \"sv-SE\",\n \"sk-SK\",\n \"de-BE\",\n \"en-AU\",\n \"da-DK\",\n \"ko-KR\",\n] as const;\n\n// Define the type using TypeScript's typeof and indexing\n\n// Define the type using TypeScript's typeof and indexing\nexport type SupportedLocales = (typeof SUPPORTED_LOCALES)[number];\n\n// Create a Zod schema for validation\nexport const supportedLocalesSchema = z.enum(SUPPORTED_LOCALES);\n\n// Type inference from the schema (alternative way to define the type)\nexport type SupportedLocalesFromSchema = z.infer;\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n PACKAGE_COLLECTION,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// Define package specification schema for use in promo code\nexport const packageSpecificationSchema = z.object({\n destination: z.string().optional().or(z.array(z.string())),\n iso3: z.string().optional(),\n size: z.string().optional(),\n package_id: z.string().optional(),\n bundle_id: z.string().optional(),\n iata_code: z.string().optional(),\n package_duration: z.number().optional(),\n package_type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).optional(),\n traffic_policy: z.string().optional(),\n});\n\n// Define the promo code schema spec\nexport const promoCodeSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n redeemed_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // PromoCode specific fields\n uuid: z.string().uuid().nullable().optional(),\n external_id: z.string(),\n code: z.string(),\n claimed_at: timestampNullableOptional,\n allowance_user: z.number(),\n allowance_total: z.number(),\n type: z.enum(['discount', 'booking', 'booking_without_destination']).nullable().or(z.string()),\n usage: z.array(z.string()),\n uuid_usage: z.array(z.string()),\n package_specification: packageSpecificationSchema.optional(),\n valid_from: timestampRequired,\n valid_to: timestampRequired,\n\n // Reference fields\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION, nullable: true },\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true },\n\n // Optional fields based on the type\n discount: z.number().optional(),\n package_size: z.string().optional(),\n countries: z.array(z.string()).optional(),\n max_bytes: z.number().optional(),\n starter_data: z.number().optional()\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const countrySchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n bokun_id: z.number().nullable(),\n LTE: z.boolean().nullable(),\n apn: z.string().nullable(),\n click_count: z.number().nullable(),\n global_network: z.string().nullable(),\n global_price: z.number().nullable(),\n hubby: z.number().nullable(),\n imsi: z.number().nullable(),\n has_esim: z.boolean(),\n name: z.string().nullable(),\n region: z.boolean().nullable(),\n i18n_name: z.record(z.string()),\n is_region: z.boolean().nullable(),\n countries: z.array(z.string()).nullable(),\n tier: z.number().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define schema for conversion rates (for backward compatibility)\nexport const conversionRateSchema = z.object({\n currency: z.number()\n});\n\nexport type CoversionRate = z.infer;\n\n// Define the currency schema spec\nexport const currencySchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n // ISO 4217 currency code (e.g., \"USD\", \"EUR\")\n code: z.string().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n // Currency symbol (e.g., \"$\", \"€\")\n symbol: z.string().describe('Currency symbol (e.g., \"$\", \"€\")'),\n // Full name of the currency (e.g., \"US Dollar\")\n name: z.string().describe('Full name of the currency (e.g., \"US Dollar\")'),\n // Exchange rate relative to base currency\n rate: z.number().describe('Exchange rate relative to base currency'),\n // Whether this is the default currency\n is_default: z.boolean().describe('Whether this is the default currency')\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n PARTNER_COLLECTION,\n PAYMENT_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\n\n\nexport const statusHistorySchema = z.object({\n telna_esim_status: z.number(),\n source: z.string(),\n status: z.string(),\n timestamp: timestampRequired as unknown as z.ZodType,\n})\n\nexport const esimStatusHistorySchema = markAsSchemaSpec(z.array(statusHistorySchema).nullable().optional());\n\n// Define the eSIM schema spec\nexport const esimSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Common eSIM fields\n imsi: z.number(),\n qr: z.string(),\n iccid: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable().optional(),\n total_data: z.number(),\n data_left: z.number(),\n uuid: z.string().uuid().nullable().optional(),\n data_used: z.boolean(),\n status: z.string().nullable(),\n status_history: esimStatusHistorySchema,\n name: z.string(),\n android_auto: z.boolean(),\n partner_price: z.number().nullable(),\n promo: z.string().nullable(),\n type: z.enum(['api', 'promo', 'balance', 'code', 'external', 'payment']),\n is_auto_install: z.boolean(),\n is_archived: z.boolean(),\n user: z.string().nullable(),\n payment: z.string().nullable(),\n apn: z.string().nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Timestamp fields\n time_assigned: timestampNullable,\n last_updated: timestampNullable\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n USER_COLLECTION,\n timestampRequired,\n hubbyModelSpec,\n PARTNER_COLLECTION\n} from './common';\n\n// Define the payment schema spec\nexport const paymentSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n\n // Core payment fields (universal across ALL payment types)\n amount: z.number(),\n customer: z.string(),\n date: timestampRequired,\n source: z.enum(['app', 'webapp', 'platform']),\n invoice: z.string().optional(),\n fee: z.number().optional(),\n topup: z.boolean(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']).optional(), // 'pending' | 'processing' | 'completed' | 'failed'\n payment_intent_id: z.string().nullable().optional(), // Stripe PaymentIntent ID\n error_message: z.string().nullable().optional(), // Error message\n // Common resolved package specification (same format for all sources)\n package_specifications: z.array(z.object({\n package_type: z.string().optional(),\n package_size: z.string().optional(),\n package_duration: z.number().optional(),\n destination: z.string().optional(),\n iso3: z.string().optional(),\n })).optional(),\n\n // Reference fields\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n\n // Source-specific payment properties\n app_payment_properties: z.object({\n package: z.string().optional(), // package_id for app payments\n promo: z.string().optional(),\n iccid: z.string().optional(),\n global: z.string().optional(),\n balance_used: z.number().optional(),\n booking_id: z.string().nullable().optional(),\n discount_amount: z.string().optional(),\n is_special_offer: z.boolean().optional(),\n special_offer_discount: z.number().optional(),\n }).optional(),\n\n webapp_platform_payment_properties: z.object({\n promo_codes: z.array(z.string()).optional(),\n booking_id: z.string().optional(),\n partner: z.string().optional(),\n purchaseType: z.string().optional(),\n affiliateId: z.string().nullable().optional(),\n partner_name: z.string().optional(),\n locale: z.string().optional(),\n }).optional(),\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define the message schema spec\nexport const messageSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n key: z.string(),\n method: z.enum([\"push\", \"sms\", \"email\"]),\n status: z.enum([\"pending\", \"sent\", \"failed\", \"delivered\"]),\n created_at: timestampRequired,\n updated_at: timestampRequired\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const trafficPolicySpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n name: z.string(),\n description: z.string(),\n external_id: z.string(),\n provider: z.string()\n})","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n PARTNER_COLLECTION,\n TRAFFIC_POLICY_COLLECTION,\n timestampRequired,\n hubbyModelSpec\n} from './common';\n\nimport { countrySchemaSpec } from './country';\n\n// Define the package schema spec\nexport const packageSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n // Package specific fields\n external_id: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable(),\n label: z.string(),\n bytes: z.number(),\n hidden: z.boolean(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n price: z.number(),\n partner_price: z.number(),\n days: z.number(),\n name: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).nullable(),\n throttling: z.number().optional(),\n provider_parameters: z.object({\n imsi: z.number()\n }).nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Nested country data - need to use dynamic reference to country schema\n // This would typically be handled better with a proper recursive schema definition\n // but for simplicity, we're using any type here\n country_data: {\n _type: 'object' as const,\n of: countrySchemaSpec,\n nullable: true,\n optional: true\n }\n // country_data: z.any().nullable()\n});\n\nexport const commonPackageSchema = markAsSchemaSpec({\n size: z.string(),\n iso: z.string(),\n days: z.number(),\n price: z.number(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n packageType: z.string(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n});\n\nexport const telnaPackageSchema = markAsSchemaSpec({\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n ...commonPackageSchema,\n});\n\nexport const bondioPackageSchema = markAsSchemaSpec({\n ...commonPackageSchema,\n label: z.enum(['lambda', 'tau']),\n periodDays: z.number(),\n periodIterations: z.number(),\n throttling: z.number().optional().nullable(),\n \n});","import { z, ZodLazy } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema, SUPPORTED_LOCALES, SupportedLocales } from '../constants';\nimport {\n PARTNER_COLLECTION,\n USER_COLLECTION,\n PACKAGE_COLLECTION,\n PRICE_LIST_COLLECTION,\n tagModelSpec,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// ===== Helper schemas for nested structures =====\n\n// Address schema\nexport const addressSchema = z.object({\n street: z.string().nullable().optional(),\n city: z.string().nullable().optional(),\n postal_code: z.string().nullable().optional(),\n country: z.string().nullable().optional()\n});\n\n// Emit event schema\nexport const emitEventSchema = z.object({\n topup: z.boolean().optional().default(false),\n redemption: z.boolean().optional().default(false),\n activation: z.boolean().optional().default(false),\n depletion: z.boolean().optional().default(false),\n});\n\n// Registration schema\nexport const registrationSchema = z.object({\n chamber_of_commerce_number: z.string().nullable().optional(),\n vat_number: z.string().nullable().optional(),\n anvr_number: z.number().nullable().optional(),\n tax_number: z.string().nullable().optional()\n});\n\n// Banking details schema\nexport const bankingDetailsSchema = z.object({\n account_holder: z.string().nullable().optional(),\n billing_email: z.string().nullable().optional(),\n bank_name: z.string().nullable().optional(),\n iban: z.string().nullable().optional(),\n currency: z.string().nullable().optional()\n});\n\n// Package price schema\nexport const packagePriceSchema = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: z.object({ _type: z.literal('docRef'), collection: z.literal(PACKAGE_COLLECTION) })\n});\n\n// Package specification schema\nexport const packageSpecificationSchema = z.object({\n size: z.string().nullable().optional(),\n type: z.string().nullable().optional(),\n destination: z.string().nullable().optional()\n});\n\n// Pricing strategy schema\nexport const pricingStrategySchema = z.object({\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: z.object({\n _type: z.literal('docRef'),\n collection: z.literal(PRICE_LIST_COLLECTION),\n nullable: z.literal(true)\n }),\n custom_prices: z.array(packagePriceSchema)\n});\n\n// Visual identity banner schema\nexport const visualIdentityBannerSchema = z.object({\n action: z.string().nullable().optional(),\n image_url: z.string(),\n alt: z.string(),\n click_url: z.string(),\n locale: supportedLocalesSchema,\n properties: z.record(z.string())\n});\n\n// Schedule filter schema\nexport const scheduleFilterSchema = z.object({\n type: z.enum(['iso3', 'gender', 'percentage', 'age']),\n value: z.union([z.string(), z.number()]),\n comparison: z.enum([\n 'equal',\n 'not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal'\n ])\n});\n\n// Convert object-like schemas to proper Zod objects\nexport const visualIdentityBannersSchema = z.object({\n strategy: z.enum(['fixed', 'rotating', 'destination', 'time_of_day']),\n banners: z.array(visualIdentityBannerSchema).nullable().optional()\n});\n\nexport const visualIdentitySchema = z.object({\n primary_color: z.string(),\n secondary_color: z.string(),\n logo: z.string(),\n font: z.string().nullable().optional(),\n top_banner: visualIdentityBannersSchema.optional(),\n mid_banner: visualIdentityBannersSchema.optional()\n});\n\n// Partner contact schema\nexport const partnerContactSchema = z.object({\n name: z.string().nullable().optional(),\n email: z.string().nullable(),\n office_phone: z.string().nullable().optional(),\n office_email: z.string().nullable().optional()\n});\n\n// Partner data schema\nexport const partnerDataSchema = z.object({\n source: z.string(),\n manual: z.boolean()\n});\n\n// Package strategy schema\nexport const packageStrategySchema = z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any()\n});\n\n// Schedule email schema\nexport const scheduleEmailSchema = z.object({\n brevo_template_id: z.number(),\n subject: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional(),\n preview_text: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional()\n}).nullable().optional();\n\n// Schedule push schema\nexport const schedulePushSchema = z.object({\n title: z.record(z.string()).optional(),\n body: z.record(z.string()).optional(),\n target: z.string()\n}).nullable().optional();\n\n// Schedule schema\nexport const scheduleSchema = z.object({\n days: z.number(),\n email: scheduleEmailSchema,\n push: schedulePushSchema,\n hour: z.number(),\n key: z.string(),\n method: z.enum(['email', 'sms', 'whatsapp', 'push']),\n moment: z.enum(['departure_date', 'return_date', 'immediate']),\n filter: scheduleFilterSchema.nullable().optional()\n});\n\nexport const freeEsimSchema = z.object({\n enabled: z.boolean(),\n package_specification: z.object({\n size: z.string(),\n package_type: z.string(),\n destination: z.string(),\n package_duration: z.number(),\n type: z.string().nullable().optional()\n }),\n booking_id_verification: z.boolean().default(false),\n booking_id_verification_pattern: z.string().nullable().optional(),\n allowance: z.number(),\n total_allowance: z.number(),\n});\n\n// Agent signup settings schema\nexport const agentSignupSettingsSchema = z.object({\n slack_channel: z.string().nullable().optional(),\n welcome_email_template: z.number().nullable().optional(),\n password_reset_template: z.number().nullable().optional(),\n partner_type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n enable_complimentary_booking: z.boolean().default(true),\n complimentary_booking_partner_id: z.string().nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().default(true),\n source_partner_branding: z.boolean().default(false),\n own_branding: z.boolean().default(false)\n }).default({})\n});\n\n// Platform settings schema\nexport const platformSettingsSchema = z.object({\n package_strategy: z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any(),\n supported_package_types: z.enum(['data-limited', 'unlimited']).optional()\n }).nullable().optional(),\n free_esim: freeEsimSchema.nullable().optional(),\n booking_defaults: z.object({\n locale: supportedLocalesSchema\n }).nullable().optional(),\n booking_confirmation: z.object({\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n }).nullable().optional(),\n emit_events: emitEventSchema.nullable().optional(),\n schedules: z.array(scheduleSchema).optional(),\n brevo: z.object({\n list_ids: z.array(z.number()),\n campaign_mode: z.boolean()\n }).nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().optional().default(true),\n source_partner_branding: z.boolean().optional().default(false),\n own_branding: z.boolean().optional().default(false)\n }).nullable().optional(),\n agent_signup_settings: agentSignupSettingsSchema.nullable().optional(),\n upgrade_offer: z.object({\n enabled: z.boolean(),\n discount_percentage: z.number().min(0).max(100),\n }).nullable().optional()\n});\n\n// ===== Exportable schema specs =====\n\n// Package price schema spec\nexport const packagePriceSchemaSpec = markAsSchemaSpec({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n});\n\n// Financial properties schema spec\nexport const financialPropertiesSchemaSpec = markAsSchemaSpec({\n administration_fee: z.number().nullable(),\n income_per_gb: z.number().nullable(),\n commission_fee: z.number().nullable().optional(),\n commission_percentage: z.number().nullable().optional(),\n payment_method: z.enum(['invoice', 'direct']),\n requires_card: z.boolean().nullable(),\n next_invoice: timestampNullableOptional,\n last_invoice: timestampNullableOptional,\n pricing_strategies: {\n _type: 'object' as const,\n of: {\n partner: {\n _type: 'object' as const,\n of: {\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n },\n user: {\n _type: 'object' as const,\n of: {\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n }\n },\n nullable: true\n }\n});\n\n// Platform settings schema spec\nexport const platformSettingsSchemaSpec = markAsSchemaSpec({\n package_strategy: {\n _type: 'object' as const,\n of: packageStrategySchema.shape,\n nullable: true,\n optional: true\n },\n free_esim: {\n _type: 'object' as const,\n of: freeEsimSchema.shape,\n nullable: true,\n optional: true\n },\n booking_defaults: {\n _type: 'object' as const,\n of: {\n locale: supportedLocalesSchema\n },\n nullable: true,\n optional: true\n },\n booking_confirmation: {\n _type: 'object' as const,\n of: {\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n },\n nullable: true,\n optional: true\n },\n schedules: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: scheduleSchema.shape\n },\n optional: true\n },\n agent_signup_settings: {\n _type: 'object' as const,\n of: agentSignupSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\n// Webhook settings schema\nexport const webhookSettingsSchema = z.object({\n url: z.string().url().nullable().optional(),\n api_key: z.string().nullable().optional(),\n enabled: z.boolean().default(false),\n events: z.object({\n promocode_redemption: z.boolean().default(false)\n }).default({})\n});\n\n// ===== Main partner schema =====\nexport const partnerSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Partner specific fields\n name: z.string().min(3),\n type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n is_active: z.boolean().nullable().optional(),\n external_id: z.string().nullable().optional(),\n\n // Complex nested objects\n contact: {\n _type: 'object' as const,\n of: partnerContactSchema.shape,\n nullable: true\n },\n address: {\n _type: 'object' as const,\n of: addressSchema.shape,\n nullable: true\n },\n registration: {\n _type: 'object' as const,\n of: registrationSchema.shape,\n nullable: true\n },\n banking_details: {\n _type: 'object' as const,\n of: bankingDetailsSchema.shape,\n nullable: true\n },\n\n // Reference fields\n parent: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n users: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: USER_COLLECTION }, nullable: true },\n\n // Complex nested structures\n financial_properties: financialPropertiesSchemaSpec,\n // Visual identity\n visual_identity: {\n _type: 'object' as const,\n of: visualIdentitySchema.shape,\n nullable: true\n },\n\n // Platform settings\n platform_settings: {\n _type: 'object' as const,\n of: platformSettingsSchema.shape,\n nullable: true\n },\n\n // Tags\n tags: {\n _type: 'array' as const,\n of: tagModelSpec,\n nullable: true,\n optional: true\n },\n\n // Tag slugs\n tag_slugs: {\n _type: 'array' as const,\n of: z.string(),\n nullable: true,\n optional: true\n },\n\n // Metadata\n data: {\n _type: 'object' as const,\n of: partnerDataSchema.shape,\n nullable: true,\n optional: true\n },\n\n // Webhook settings\n webhook_settings: {\n _type: 'object' as const,\n of: webhookSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\nexport const priceListItemSchemaSpec = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: z.string(),\n});\n\n// Price list item with docRef support for use in priceListSchemaSpec\nconst priceListItemWithDocRefSpec = {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n};\n\n// ===== Price list schema =====\nexport const priceListSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Price list specific fields\n name: z.string().min(3),\n description: z.string().nullable(),\n type: z.enum(['partner', 'consumer']),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n price_list: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec,\n optional: true\n },\n package_prices: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec\n },\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec, PARTNER_COLLECTION } from './common';\n\n// Country schema spec\nexport const analyticsSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n service: z.string(),\n date: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/), // YYYY-MM-DD\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n event: z.string(),\n parameter: z.string().nullable(),\n sum: z.number(),\n});","import { z } from 'zod';\nimport { timestampRequired } from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const payloadSpec = {\n _type: 'record' as const,\n of: z.unknown(),\n optional: true\n};\n\nexport const apiLogSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n method: z.string(),\n user_id: z.string().optional(),\n path: z.string(),\n resource_type: z.string().optional(),\n resource_id: z.string().optional(),\n partner_id: z.string().optional(),\n payload: payloadSpec,\n timestamp: timestampRequired,\n status_code: z.number()\n});\n","import { z } from 'zod';\nimport { \n USER_TOUCHPOINTS_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullableOptional,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n PARTNER_COLLECTION\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const userTouchpointsSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n unique_device_identifier: z.string().nullable().optional(),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true, optional: true },\n promo_code: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n promo_code_redeemed_at: timestampNullableOptional,\n esim_assigned_at: timestampNullableOptional,\n esim_install_initiated_at: timestampNullableOptional,\n esim_install_completed_at: timestampNullableOptional,\n esim_first_package_activated_at: timestampNullableOptional,\n esim_topped_up_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional, PERMISSION_COLLECTION } from './common';\n\nexport const roleSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional } from './common';\n\nexport const permissionSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullable\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\n\n// Package type schema for reward strategy\nexport const rewardPackageTypeSchema = z.enum(['data-limited', 'starter']);\nexport type RewardPackageType = z.infer;\n\n// Reward strategy base reward schema\nexport const baseRewardSchema = z.object({\n package_size: z.string(),\n package_type: rewardPackageTypeSchema\n});\n\nexport type BaseReward = z.infer;\n\n// Reward strategy multipliers schema\nexport const rewardMultipliersSchema = z.object({\n quality_based: z.number().optional(),\n completion_based: z.number().optional()\n}).optional();\n\nexport type RewardMultipliers = z.infer;\n\n// Reward strategy schema\nexport const rewardStrategySchema = z.object({\n base_reward: baseRewardSchema,\n multipliers: rewardMultipliersSchema\n});\n\nexport type RewardStrategy = z.infer;\n\n// Review schema spec\nexport const reviewSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n partner_id: z.string().nullable().optional(),\n questions: z.record(z.any()),\n reward_strategy: rewardStrategySchema,\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true }\n});\n\n// Review submission schema spec\nexport const reviewSubmissionSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n review: { _type: 'docRef' as const, collection: REVIEW_COLLECTION, nullable: true },\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true },\n questions: z.record(z.any()),\n iccid: z.string(),\n isAndroid: z.boolean(),\n country_id: z.string(),\n partner_id: z.string(),\n review_id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n analysis: z.record(z.any()).nullable().optional()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PACKAGE_TEMPLATE_COLLECTION,\n PARTNER_COLLECTION,\n timestampNullable,\n timestampRequired,\n TRAFFIC_POLICY_COLLECTION\n} from './common';\n\n// Destination schema spec\nexport const destinationSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n type: z.string(), // \"country\" or region names like \"Europe\", \"Asia\", \"Middle East\"\n iso3s: z.array(z.string()),\n name: z.string(),\n i18n_name: z.record(z.string()),\n is_active: z.boolean(),\n sort_order: z.number(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n\n// Destination offer schema spec\nexport const destinationBundleSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n parent_document_id: z.string(),\n type: z.enum(['unlimited', 'data-limited', 'starter']),\n label: z.string().nullable().optional(), //'5 Days' or '5GB'\n provider: z.enum(['telna', 'bondio']),\n\n duration_in_days: z.number(),\n duration_in_seconds: z.number(),\n \n size_in_bytes: z.number(),\n size_in_megabytes: z.number(),\n size_in_gigabytes: z.number(),\n\n package_template: { _type: 'docRef' as const, collection: PACKAGE_TEMPLATE_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n //All unlimited packages will have a traffic policy, but this only refers to telna bundles\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n b2c_price: z.number(),\n b2b_price: z.number(),\n partner_b2c_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n partner_b2b_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n is_active: z.boolean().default(true),\n is_visible: z.boolean().default(true), //All bundles that will have a partner will probably be invisible\n priority: z.number().default(10),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n deleted_at: timestampNullable,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n deleted_by: z.string().nullable()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n timestampRequired\n} from './common';\n\n// Package Template Schema Spec - unified schema for all providers\nexport const packageTemplateSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n provider: z.string(), // e.g., \"telna\", \"bondio\"\n type: z.string(),\n purchase_price: z.number(),\n external_id: z.string(),\n supported_countries: z.array(z.string()), // iso3 codes\n provider_specific_data: {\n _type: 'record' as const,\n of: z.any(),\n nullable: true,\n optional: true\n },\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, USER_COLLECTION } from './common';\n\n// Define the login request schema spec\nexport const loginRequestSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n email: z.string().email(),\n status: z.enum(['pending', 'completed', 'expired']),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n created_at: timestampRequired,\n expires_at: timestampRequired\n});\n","import { buildClientSchema } from './builders/client';\nimport {\n userSchemaSpec,\n apiKeySpec,\n apiKeysSpec,\n apiKeysObjectSpec\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { bondioPackageSchema, packageSchemaSpec, telnaPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n financialPropertiesSchemaSpec as financialPropertiesSchema,\n packagePriceSchema,\n platformSettingsSchema,\n visualIdentitySchema,\n pricingStrategySchema,\n freeEsimSchema,\n} from './specs/partner';\nimport { analyticsSpec } from './specs/analytics';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { z } from 'zod';\nimport { roleSchemaSpec } from './specs/role';\nimport { permissionSchemaSpec } from './specs/permission';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\n\n\n/** ZOD SCHEMAS */\nexport const HUserSchema = buildClientSchema(userSchemaSpec);\nexport const HBookingSchema = buildClientSchema(bookingSchemaSpec);\nexport const HCountrySchema = buildClientSchema(countrySchemaSpec);\nexport const HCurrencySchema = buildClientSchema(currencySchemaSpec);\nexport const HESIMSchema = buildClientSchema(esimSchemaSpec);\nexport const HPaymentSchema = buildClientSchema(paymentSchemaSpec);\nexport const HMessageSchema = buildClientSchema(messageSchemaSpec);\nexport const HPackageSchema = buildClientSchema(packageSchemaSpec);\nexport const HPromoCodeSchema = buildClientSchema(promoCodeSchemaSpec);\nexport const HPartnerSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPriceListSchema = buildClientSchema(priceListSchemaSpec);\nexport const HFinancialPropertiesSchema = buildClientSchema(financialPropertiesSchema);\nexport const HApiLogSchema = buildClientSchema(apiLogSchemaSpec);\nexport const HPackagePriceSchema = buildClientSchema(packagePriceSchema);\nexport const HubbyModelSchema = buildClientSchema(hubbyModelSpec);\nexport const HPartnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPlatformSettingsSchema = buildClientSchema(platformSettingsSchema);\nexport const HVisualIdentitySchema = buildClientSchema(visualIdentitySchema);\nexport const HPricingStrategySchema = buildClientSchema(pricingStrategySchema);\nexport const HFreeEsimSchema = buildClientSchema(freeEsimSchema);\nexport const HAnalyticsSchema = buildClientSchema(analyticsSpec);\nexport const HRoleSchema = buildClientSchema(roleSchemaSpec);\nexport const HPermissionSchema = buildClientSchema(permissionSchemaSpec);\nexport const HTagSchema = buildClientSchema(tagModelSpec);\nexport const HTrafficPolicySchema = buildClientSchema(trafficPolicySpec);\nexport const HTelnaPackageSchema = buildClientSchema(telnaPackageSchema);\nexport const HBondioPackageSchema = buildClientSchema(bondioPackageSchema);\nexport const HReviewSchema = buildClientSchema(reviewSchemaSpec);\nexport const HReviewSubmissionSchema = buildClientSchema(reviewSubmissionSchemaSpec);\nexport const HDestinationSchema = buildClientSchema(destinationSchemaSpec);\nexport const HDestinationBundleSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const HPackageTemplateSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const HUserTouchpointsSchema = buildClientSchema(userTouchpointsSchemaSpec);\nexport const HLoginRequestSchema = buildClientSchema(loginRequestSchemaSpec);\n// Additional lower-level schemas\nexport const HAddressSchema = addressSchema;\nexport const HRegistrationSchema = registrationSchema;\nexport const HBankingDetailsSchema = bankingDetailsSchema;\nexport const HPartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const HPromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const HVisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const HScheduleFilterSchema = scheduleFilterSchema;\nexport const HPartnerContactSchema = partnerContactSchema;\nexport const HPartnerDataSchema = partnerDataSchema;\nexport const HCommunicationChannelSchema = communicationChannelSchema;\nexport const HBookingStatusSchema = bookingStatusSchema;\nexport const HCommunicationOptionsSchema = communicationOptionsSchema;\nexport const HRewardStrategySchema = rewardStrategySchema;\nexport const HBaseRewardSchema = baseRewardSchema;\nexport const HRewardMultipliersSchema = rewardMultipliersSchema;\nexport const HRewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type HAnalytics = z.infer;\nexport type HUser = z.infer;\nexport type HBooking = z.infer;\nexport type HCountry = z.infer;\nexport type HCurrency = z.infer;\nexport type HESIM = z.infer;\nexport type HPayment = z.infer;\nexport type HMessage = z.infer;\nexport type HPackage = z.infer;\nexport type HPromoCode = z.infer;\nexport type HPartner = z.infer;\nexport type HPriceList = z.infer;\nexport type HApiLog = z.infer;\nexport type HTag = z.infer;\nexport type HTrafficPolicy = z.infer;\nexport type HBondioPackage = z.infer;\nexport type HTelnaPackage = z.infer;\nexport type HReview = z.infer;\nexport type HReviewSubmission = z.infer;\nexport type HDestination = z.infer;\nexport type HDestinationBundle = z.infer;\nexport type HPackageTemplate = z.infer;\nexport type HUserTouchpoints = z.infer;\nexport type HLoginRequest = z.infer;\n// Additional lower-level types\nexport type HAddress = z.infer;\nexport type HRegistration = z.infer;\nexport type HBankingDetails = z.infer;\nexport type HPartnerPackageSpecification = z.infer;\nexport type HPromoPackageSpecification = z.infer;\nexport type HVisualIdentityBanner = z.infer;\nexport type HFinancialProperties = z.infer;\nexport type HScheduleFilter = z.infer;\nexport type HPartnerContact = z.infer;\nexport type HPartnerData = z.infer;\nexport type HCommunicationChannel = z.infer;\nexport type HBookingStatus = z.infer;\nexport type HCommunicationOptions = z.infer;\nexport type HRewardStrategy = z.infer;\nexport type HBaseReward = z.infer;\nexport type HRewardMultipliers = z.infer;\nexport type HRewardPackageType = z.infer;\nexport type HHubbyModel = z.infer;\n\nexport type HubbyModelApp = HHubbyModel;\n\nexport type SupportedLocales = typeof SUPPORTED_LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\nexport type HRole = z.infer;\nexport type HPermission = z.infer; "]} \ No newline at end of file +{"version":3,"sources":["../../src/builders/client.ts","../../src/common.ts","../../src/specs/user.ts","../../src/specs/common.ts","../../src/specs/booking.ts","../../src/constants.ts","../../src/specs/promocode.ts","../../src/specs/country.ts","../../src/specs/currency.ts","../../src/specs/esim.ts","../../src/specs/payment.ts","../../src/specs/message.ts","../../src/specs/traffic_policy.ts","../../src/specs/package.ts","../../src/specs/partner.ts","../../src/specs/analytics.ts","../../src/specs/apiLogs.ts","../../src/specs/userTouchpoints.ts","../../src/specs/role.ts","../../src/specs/permission.ts","../../src/specs/review.ts","../../src/specs/destination.ts","../../src/specs/package_template.ts","../../src/specs/login_request.ts","../../src/index.client.ts"],"names":["z","packageSpecificationSchema","SUPPORTED_LOCALES"],"mappings":"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","sourcesContent":["import { z, ZodTypeAny } from 'zod';\nimport type { FieldSpec, SchemaFromSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\n\nexport function buildClientSchema(spec: S, path: string[] = []): SchemaFromSpec {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid schema spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec) as unknown as SchemaFromSpec;\n }\n\n // Check if object might be a Zod schema (has _def property or ~standard metadata)\n if (typeof spec === 'object' && spec !== null &&\n (('_def' in spec) || ('~standard' in spec && (spec as any)['~standard']?.vendor === 'zod'))) {\n try {\n // Try to use it as a Zod schema directly\n return wrapZodSchema(spec as unknown as z.ZodTypeAny) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this fails, we'll continue with the other checks\n console.warn(`Failed to use object as Zod schema at \"${pathString}\":`, error);\n }\n }\n\n // ----- Array -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.array(buildClientSchema(spec.of, [...path, '[i]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Record -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.record(buildClientSchema(spec.of, [...path, '[key]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Timestamp -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'timestamp') {\n let schema: ZodTypeAny = z.preprocess((val) => {\n if (typeof val === 'string') {\n // Try to parse the string to a Date object\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date; // undefined will cause z.date() to fail\n }\n if (typeof val === 'number') {\n // Handle numeric timestamps\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date;\n }\n // If it's already a Date or something else, return it as is\n return val;\n }, z.date({ required_error: 'Date is required', invalid_type_error: 'Invalid date format' }));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- DocRef -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'docRef') {\n let schema: ZodTypeAny = z.string(); // only ID on client\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Object (plain nested object spec) -----\n if (\n typeof spec === 'object' &&\n spec !== null &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || (typeof spec === 'object' && spec !== null && '_type' in spec && (spec as any)._type === 'object')) {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // If we have an object with fields that look like schema specs, try to handle it as a schema object\n if (typeof spec === 'object' && spec !== null) {\n try {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this also fails, we'll throw the error below\n console.warn(`Failed to handle object as plain schema at \"${pathString}\":`, error);\n }\n }\n\n // 🔥 If we got here, the spec had a structure we didn't handle\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n}\n\n","import { ZodTypeAny, z } from 'zod';\nimport type { SchemaBuilder } from './types';\n\n/**\n * Ensures a Zod schema is wrapped to be optional and/or nullable,\n * if not already. Use this in recursive schema builders.\n * Also applies any other supported schema transformations provided in options.\n */\nexport function wrapZodSchema(\n schema: ZodTypeAny,\n options?: {\n optional?: boolean;\n nullable?: boolean;\n min?: number;\n max?: number;\n // Allow arbitrary extensions via dynamic property\n [key: string]: any;\n }\n): ZodTypeAny {\n if (!options) return schema;\n\n let wrapped = schema;\n\n // Handle nullable and optional specially since they're common\n if (options.nullable && !wrapped.isNullable?.()) {\n wrapped = wrapped.nullable();\n }\n\n if (options.optional && !wrapped.isOptional?.()) {\n wrapped = wrapped.optional();\n }\n\n // Process all other options dynamically\n for (const [key, value] of Object.entries(options)) {\n // Skip the already handled properties and undefined values\n if (['nullable', 'optional'].includes(key) || value === undefined) {\n continue;\n }\n\n // Check if the schema has a method matching the option key\n if (typeof (wrapped as any)[key] === 'function') {\n wrapped = (wrapped as any)[key](value);\n }\n }\n\n return wrapped;\n}\n\nexport function wrapObjectSchema(\n spec: any, // using any to support dynamic `spec.type === 'object'`\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n if (!('of' in spec)) {\n throw new Error(`Object spec at \"${pathString}\" is missing 'of'`);\n }\n\n const shape: Record = {};\n for (const [key, value] of Object.entries(spec.of)) {\n shape[key] = builder(value as any, [...path, key]);\n }\n\n let objectSchema: ZodTypeAny = z.object(shape);\n if (spec.nullable) objectSchema = objectSchema.nullable();\n if (spec.optional) objectSchema = objectSchema.optional();\n return objectSchema;\n}\n\n/**\n * Wraps a plain object shape (no `type: 'object'`) into a Zod schema.\n * Assumes each field is either a Zod schema or another FieldSpec.\n */\nexport function wrapPlainObjectSchema(\n spec: Record,\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n // Handle object field specs with '_type': 'object'\n if ('_type' in spec && spec._type === 'object' && 'of' in spec) {\n return wrapObjectSchema(spec, path, builder);\n }\n\n const shape: Record = {};\n\n // Only add fields to the schema if they're not special control properties\n for (const [key, val] of Object.entries(spec)) {\n if (key !== '_type' && key !== 'nullable' && key !== 'optional') {\n shape[key] = builder(val, [...path, key]);\n }\n }\n\n // Create the base object schema\n let schema: ZodTypeAny = z.object(shape);\n\n // Apply nullable/optional modifiers if needed\n if ('nullable' in spec && spec.nullable === true) {\n schema = schema.nullable();\n }\n\n if ('optional' in spec && spec.optional === true) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nexport const SCHEMA_MARKER = Symbol('ZodSchemaSpecMarker');\n\nexport function markAsSchemaSpec(spec: T): T {\n Object.defineProperty(spec, SCHEMA_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return spec;\n}\n\nexport function isSchemaSpec(obj: unknown): obj is Record {\n return typeof obj === 'object' && obj !== null && SCHEMA_MARKER in obj;\n}","import { z } from 'zod';\nimport { PARTNER_COLLECTION, PROFILE_COLLECTION, timestampNullableOptional, timestampRequired, timestampNullable, ROLE_COLLECTION, PERMISSION_COLLECTION } from './common';\nimport { markAsSchemaSpec } from '../common'\n\nexport const apiKeySpec = {\n expires_at: { _type: 'timestamp' as const },\n secret: z.string(),\n is_active: z.boolean(),\n}\n\nexport const apiKeysSpec = {\n _type: 'record' as const,\n of: {\n _type: 'object' as const,\n of: apiKeySpec\n }\n}\n\nexport const apiKeysObjectSpec = {\n _type: 'object' as const,\n of: {\n allowed_keys: { _type: 'array' as const, nullable: true, optional: true, of: z.string() },\n keys: apiKeysSpec\n },\n nullable: true,\n optional: true\n}\n\nexport const userSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string().nullable(),\n email: z.string().email().nullable(),\n stripe_id: z.string().nullable().optional(),\n referral: z.string().nullable().optional(),\n fcm: z.string().optional(),\n deeplink: z.string().nullable().optional(),\n gender: z.string().nullable().optional(),\n company: z.string().nullable().optional(),\n coordinates: z.string().nullable().optional(),\n platform: z.enum(['ios', 'android']).nullable().optional(),\n platform_version: z.string().nullable().optional(),\n device_type: z.string().nullable().optional(),\n app_version: z.string().nullable().optional(),\n parameters: z.any().nullable().optional(),\n locale: z.string().nullable().optional(),\n phone_model: z.string().nullable().optional(),\n phone_os: z.string().nullable().optional(),\n phone_os_version: z.string().nullable().optional(),\n ios: z.boolean().nullable().optional(),\n has_card_saved: z.boolean().nullable().optional(),\n admin: z.boolean().nullable().optional(),\n api_keys: apiKeysObjectSpec,\n profileRef: z.string().nullable().optional(),\n currency: z.string().nullable().optional(),\n receipt_email: z.string().nullable().optional(),\n source: z.enum(['direct', 'promo', 'platform']).nullable().optional(),\n role: { _type: 'docRef' as const, collection: ROLE_COLLECTION, optional: true, nullable: true },\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n balance: z.number().nullable().optional(),\n createdAt: { _type: 'timestamp' as const },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, optional: true, nullable: true },\n review_requested: timestampNullableOptional,\n last_seen: timestampNullableOptional,\n created_at: timestampNullableOptional,\n updated_at: timestampNullableOptional,\n created_by: z.string().nullable().optional(),\n updated_by: z.string().nullable().optional(),\n push_to_start_token: z.string().nullable().optional(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const PARTNER_COLLECTION = '/companies/hubby/partners';\nexport const USER_COLLECTION = 'users';\nexport const PROFILE_COLLECTION = '/companies/hubby/profiles';\nexport const PACKAGE_COLLECTION = '/companies/hubby/packages';\nexport const PACKAGE_TEMPLATE_COLLECTION = '/companies/hubby/package_templates';\nexport const PROMO_CODE_COLLECTION = '/companies/hubby/promo_codes';\nexport const COUNTRY_COLLECTION = 'countries';\nexport const ESIM_COLLECTION = 'esims';\nexport const PAYMENT_COLLECTION = 'payments';\nexport const PRICE_LIST_COLLECTION = 'price_lists';\nexport const BOOKING_COLLECTION = 'bookings';\nexport const MESSAGE_COLLECTION = 'messages';\nexport const CURRENCY_COLLECTION = 'currencies';\nexport const API_LOG_COLLECTION = 'api_logs'\nexport const ROLE_COLLECTION = 'roles';\nexport const PERMISSION_COLLECTION = 'permissions';\nexport const TRAFFIC_POLICY_COLLECTION = 'traffic_policies';\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\nexport const DESTINATION_COLLECTION = 'destinations';\nexport const DESTINATION_OFFER_COLLECTION = 'offers';\nexport const USER_TOUCHPOINTS_COLLECTION = 'user_touchpoints';\n\n\nexport const packageTypes = ['data-limited', 'time-limited', 'starter', 'unlimited'];\n\n// Timestamp specs\nexport const timestampNullableOptional = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampNullable = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampRequired = { _type: 'timestamp' as const, nullable: false, optional: false };\n\nexport const hubbyModelSpec = {\n id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n created_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n}\n\nexport const tagModelSpec = {\n ...hubbyModelSpec,\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n color: z.string().nullable().optional(),\n}","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n PROMO_CODE_COLLECTION,\n USER_COLLECTION,\n ESIM_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema } from '../constants';\nimport { packageSpecificationSchema } from './promocode';\n\n// Enum for communication channels\nexport const communicationChannelSchema = z.enum([\n 'EMAIL',\n 'WHATSAPP',\n 'PUSH_NOTIFICATION',\n 'SMS'\n]);\nexport type CommunicationChannelType = z.infer;\n\n// For backward compatibility\nexport type CommunicationChannel = CommunicationChannelType;\n\n// Add enum-like object for use in code\nexport const CommunicationChannel = {\n EMAIL: 'EMAIL' as const,\n WHATSAPP: 'WHATSAPP' as const,\n PUSH_NOTIFICATION: 'PUSH_NOTIFICATION' as const,\n SMS: 'SMS' as const\n} as const;\n\n// Status type for bookings\nexport const bookingStatusSchema = z.enum([\n 'PENDING',\n 'CONFIRMED',\n 'COMPLETED',\n 'CANCELLED',\n 'UNPAID',\n 'EXPIRED'\n]);\nexport type BookingStatus = z.infer;\n\n// Communication options schema\nexport const communicationOptionsSchema = z.object({\n should_send_message: z.boolean(),\n channels: z.array(communicationChannelSchema)\n});\n\nexport const financialInsightsSchema = z.object({\n partner_commission_percentage: z.number().nullable().optional(),\n total_commission_amount: z.number().nullable().optional(),\n price: z.number().nullable().optional(),\n}).nullable().optional()\n\nexport type CommunicationOptions = z.infer;\n\n// Define the booking schema spec\nexport const bookingSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n external_id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n title: z.string().nullable().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n full_name: z.string().nullable().optional(),\n pax: z.number().optional().nullable(),\n email: z.string().email().nullable().optional(),\n phone: z.string().nullable().optional(),\n booking_id: z.string().nullable().optional(),\n flight_number: z.string().optional(),\n gender: z.enum(['M', 'F', 'O']).optional(),\n sent_messages: z.record(z.any()).optional(),\n locale: supportedLocalesSchema,\n status: bookingStatusSchema.optional().nullable(),\n data: {\n _type: 'object' as const,\n of: {\n source: z.string(),\n manual: z.boolean(),\n action: z.string().nullable().optional()\n },\n nullable: true,\n optional: true\n },\n communication_options: {\n _type: 'object' as const,\n of: {\n should_send_message: z.boolean(),\n channels: {\n _type: 'array' as const,\n of: communicationChannelSchema\n }\n }\n },\n is_processed_for_esim_restoration: z.boolean().optional().nullable(),\n is_pseudonymized: z.boolean().optional().nullable(),\n import_id: z.string().nullable().optional(),\n package_specifications: z.array(packageSpecificationSchema).min(1),\n departure_date: timestampRequired,\n return_date: timestampNullable,\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION },\n financial_insights: financialInsightsSchema,\n promo_codes: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION },\n nullable: true,\n optional: true\n },\n users: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: USER_COLLECTION },\n nullable: true,\n optional: true\n },\n esims: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: ESIM_COLLECTION },\n nullable: true,\n optional: true\n },\n hubby_foreign_identifiers: z.object({\n messaging_contact_id: z.string().nullable()\n }).nullable().optional()\n});\n\n","import { z } from \"zod\";\n\nexport const SUPPORTED_LOCALES = [\n \"en-US\",\n \"en-EU\",\n \"en-GB\",\n \"en-CA\",\n \"nl-NL\",\n \"de-DE\",\n \"fr-FR\",\n \"fr-CA\",\n \"it-IT\",\n \"es-ES\",\n \"cs-CZ\",\n \"pl-PL\",\n \"pt-PT\",\n \"fr-BE\",\n \"nl-BE\",\n \"de-AT\",\n \"de-CH\",\n \"fr-CH\",\n \"it-CH\",\n \"sv-SE\",\n \"sk-SK\",\n \"de-BE\",\n \"en-AU\",\n \"da-DK\",\n \"ko-KR\",\n] as const;\n\n// Define the type using TypeScript's typeof and indexing\n\n// Define the type using TypeScript's typeof and indexing\nexport type SupportedLocales = (typeof SUPPORTED_LOCALES)[number];\n\n// Create a Zod schema for validation\nexport const supportedLocalesSchema = z.enum(SUPPORTED_LOCALES);\n\n// Type inference from the schema (alternative way to define the type)\nexport type SupportedLocalesFromSchema = z.infer;\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n PACKAGE_COLLECTION,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// Define package specification schema for use in promo code\nexport const packageSpecificationSchema = z.object({\n destination: z.string().optional().or(z.array(z.string())),\n iso3: z.string().optional(),\n size: z.string().optional(),\n package_id: z.string().optional(),\n bundle_id: z.string().optional(),\n iata_code: z.string().optional(),\n package_duration: z.number().optional(),\n package_type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).optional(),\n traffic_policy: z.string().optional(),\n});\n\n// Define the promo code schema spec\nexport const promoCodeSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n redeemed_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // PromoCode specific fields\n uuid: z.string().uuid().nullable().optional(),\n external_id: z.string(),\n code: z.string(),\n claimed_at: timestampNullableOptional,\n allowance_user: z.number(),\n allowance_total: z.number(),\n type: z.enum(['discount', 'booking', 'booking_without_destination']).nullable().or(z.string()),\n usage: z.array(z.string()),\n uuid_usage: z.array(z.string()),\n package_specification: packageSpecificationSchema.optional(),\n valid_from: timestampRequired,\n valid_to: timestampRequired,\n\n // Reference fields\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION, nullable: true },\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true },\n\n // Optional fields based on the type\n discount: z.number().optional(),\n package_size: z.string().optional(),\n countries: z.array(z.string()).optional(),\n max_bytes: z.number().optional(),\n starter_data: z.number().optional()\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const countrySchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n bokun_id: z.number().nullable(),\n LTE: z.boolean().nullable(),\n apn: z.string().nullable(),\n click_count: z.number().nullable(),\n global_network: z.string().nullable(),\n global_price: z.number().nullable(),\n hubby: z.number().nullable(),\n imsi: z.number().nullable(),\n has_esim: z.boolean(),\n name: z.string().nullable(),\n region: z.boolean().nullable(),\n i18n_name: z.record(z.string()),\n is_region: z.boolean().nullable(),\n countries: z.array(z.string()).nullable(),\n tier: z.number().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define schema for conversion rates (for backward compatibility)\nexport const conversionRateSchema = z.object({\n currency: z.number()\n});\n\nexport type CoversionRate = z.infer;\n\n// Define the currency schema spec\nexport const currencySchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n // ISO 4217 currency code (e.g., \"USD\", \"EUR\")\n code: z.string().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n // Currency symbol (e.g., \"$\", \"€\")\n symbol: z.string().describe('Currency symbol (e.g., \"$\", \"€\")'),\n // Full name of the currency (e.g., \"US Dollar\")\n name: z.string().describe('Full name of the currency (e.g., \"US Dollar\")'),\n // Exchange rate relative to base currency\n rate: z.number().describe('Exchange rate relative to base currency'),\n // Whether this is the default currency\n is_default: z.boolean().describe('Whether this is the default currency')\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n PARTNER_COLLECTION,\n PAYMENT_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\n\n\nexport const statusHistorySchema = z.object({\n telna_esim_status: z.number(),\n source: z.string(),\n status: z.string(),\n timestamp: timestampRequired as unknown as z.ZodType,\n})\n\nexport const esimStatusHistorySchema = markAsSchemaSpec(z.array(statusHistorySchema).nullable().optional());\n\n// Define the eSIM schema spec\nexport const esimSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Common eSIM fields\n imsi: z.number(),\n qr: z.string(),\n iccid: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable().optional(),\n total_data: z.number(),\n data_left: z.number(),\n uuid: z.string().uuid().nullable().optional(),\n data_used: z.boolean(),\n status: z.string().nullable(),\n status_history: esimStatusHistorySchema,\n status_updated_at: timestampNullable,\n name: z.string(),\n android_auto: z.boolean(),\n partner_price: z.number().nullable(),\n promo: z.string().nullable(),\n type: z.enum(['api', 'promo', 'balance', 'code', 'external', 'payment']),\n is_auto_install: z.boolean(),\n is_archived: z.boolean(),\n user: z.string().nullable(),\n payment: z.string().nullable(),\n apn: z.string().nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Timestamp fields\n time_assigned: timestampNullable,\n last_updated: timestampNullable\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n USER_COLLECTION,\n timestampRequired,\n hubbyModelSpec,\n PARTNER_COLLECTION\n} from './common';\n\n// Define the payment schema spec\nexport const paymentSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n\n // Core payment fields (universal across ALL payment types)\n amount: z.number(),\n customer: z.string(),\n date: timestampRequired,\n source: z.enum(['app', 'webapp', 'platform']),\n invoice: z.string().optional(),\n fee: z.number().optional(),\n topup: z.boolean(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']).optional(), // 'pending' | 'processing' | 'completed' | 'failed'\n payment_intent_id: z.string().nullable().optional(), // Stripe PaymentIntent ID\n error_message: z.string().nullable().optional(), // Error message\n // Common resolved package specification (same format for all sources)\n package_specifications: z.array(z.object({\n package_type: z.string().optional(),\n package_size: z.string().optional(),\n package_duration: z.number().optional(),\n destination: z.string().optional(),\n iso3: z.string().optional(),\n })).optional(),\n\n // Reference fields\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n\n // Source-specific payment properties\n app_payment_properties: z.object({\n package: z.string().optional(), // package_id for app payments\n promo: z.string().optional(),\n iccid: z.string().optional(),\n global: z.string().optional(),\n balance_used: z.number().optional(),\n booking_id: z.string().nullable().optional(),\n discount_amount: z.string().optional(),\n is_special_offer: z.boolean().optional(),\n special_offer_discount: z.number().optional(),\n }).optional(),\n\n webapp_platform_payment_properties: z.object({\n promo_codes: z.array(z.string()).optional(),\n booking_id: z.string().optional(),\n partner: z.string().optional(),\n purchaseType: z.string().optional(),\n affiliateId: z.string().nullable().optional(),\n partner_name: z.string().optional(),\n locale: z.string().optional(),\n }).optional(),\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define the message schema spec\nexport const messageSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n key: z.string(),\n method: z.enum([\"push\", \"sms\", \"email\"]),\n status: z.enum([\"pending\", \"sent\", \"failed\", \"delivered\"]),\n created_at: timestampRequired,\n updated_at: timestampRequired\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const trafficPolicySpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n name: z.string(),\n description: z.string(),\n external_id: z.string(),\n provider: z.string()\n})","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n PARTNER_COLLECTION,\n TRAFFIC_POLICY_COLLECTION,\n timestampRequired,\n hubbyModelSpec\n} from './common';\n\nimport { countrySchemaSpec } from './country';\n\n// Define the package schema spec\nexport const packageSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n // Package specific fields\n external_id: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable(),\n label: z.string(),\n bytes: z.number(),\n hidden: z.boolean(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n price: z.number(),\n partner_price: z.number(),\n days: z.number(),\n name: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).nullable(),\n throttling: z.number().optional(),\n provider_parameters: z.object({\n imsi: z.number()\n }).nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Nested country data - need to use dynamic reference to country schema\n // This would typically be handled better with a proper recursive schema definition\n // but for simplicity, we're using any type here\n country_data: {\n _type: 'object' as const,\n of: countrySchemaSpec,\n nullable: true,\n optional: true\n }\n // country_data: z.any().nullable()\n});\n\nexport const commonPackageSchema = markAsSchemaSpec({\n size: z.string(),\n iso: z.string(),\n days: z.number(),\n price: z.number(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n packageType: z.string(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n});\n\nexport const telnaPackageSchema = markAsSchemaSpec({\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n ...commonPackageSchema,\n});\n\nexport const bondioPackageSchema = markAsSchemaSpec({\n ...commonPackageSchema,\n label: z.enum(['lambda', 'tau']),\n periodDays: z.number(),\n periodIterations: z.number(),\n throttling: z.number().optional().nullable(),\n \n});","import { z, ZodLazy } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema, SUPPORTED_LOCALES, SupportedLocales } from '../constants';\nimport {\n PARTNER_COLLECTION,\n USER_COLLECTION,\n PACKAGE_COLLECTION,\n PRICE_LIST_COLLECTION,\n tagModelSpec,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// ===== Helper schemas for nested structures =====\n\n// Address schema\nexport const addressSchema = z.object({\n street: z.string().nullable().optional(),\n city: z.string().nullable().optional(),\n postal_code: z.string().nullable().optional(),\n country: z.string().nullable().optional()\n});\n\n// Emit event schema\nexport const emitEventSchema = z.object({\n topup: z.boolean().optional().default(false),\n redemption: z.boolean().optional().default(false),\n activation: z.boolean().optional().default(false),\n depletion: z.boolean().optional().default(false),\n});\n\n// Registration schema\nexport const registrationSchema = z.object({\n chamber_of_commerce_number: z.string().nullable().optional(),\n vat_number: z.string().nullable().optional(),\n anvr_number: z.number().nullable().optional(),\n tax_number: z.string().nullable().optional()\n});\n\n// Banking details schema\nexport const bankingDetailsSchema = z.object({\n account_holder: z.string().nullable().optional(),\n billing_email: z.string().nullable().optional(),\n bank_name: z.string().nullable().optional(),\n iban: z.string().nullable().optional(),\n currency: z.string().nullable().optional()\n});\n\n// Package price schema\nexport const packagePriceSchema = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: z.object({ _type: z.literal('docRef'), collection: z.literal(PACKAGE_COLLECTION) })\n});\n\n// Package specification schema\nexport const packageSpecificationSchema = z.object({\n size: z.string().nullable().optional(),\n type: z.string().nullable().optional(),\n destination: z.string().nullable().optional()\n});\n\n// Pricing strategy schema\nexport const pricingStrategySchema = z.object({\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: z.object({\n _type: z.literal('docRef'),\n collection: z.literal(PRICE_LIST_COLLECTION),\n nullable: z.literal(true)\n }),\n custom_prices: z.array(packagePriceSchema)\n});\n\n// Visual identity banner schema\nexport const visualIdentityBannerSchema = z.object({\n action: z.string().nullable().optional(),\n image_url: z.string(),\n alt: z.string(),\n click_url: z.string(),\n locale: supportedLocalesSchema,\n properties: z.record(z.string())\n});\n\n// Schedule filter schema\nexport const scheduleFilterSchema = z.object({\n type: z.enum(['iso3', 'gender', 'percentage', 'age']),\n value: z.union([z.string(), z.number()]),\n comparison: z.enum([\n 'equal',\n 'not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal'\n ])\n});\n\n// Convert object-like schemas to proper Zod objects\nexport const visualIdentityBannersSchema = z.object({\n strategy: z.enum(['fixed', 'rotating', 'destination', 'time_of_day']),\n banners: z.array(visualIdentityBannerSchema).nullable().optional()\n});\n\nexport const visualIdentitySchema = z.object({\n primary_color: z.string(),\n secondary_color: z.string(),\n logo: z.string(),\n font: z.string().nullable().optional(),\n top_banner: visualIdentityBannersSchema.optional(),\n mid_banner: visualIdentityBannersSchema.optional()\n});\n\n// Partner contact schema\nexport const partnerContactSchema = z.object({\n name: z.string().nullable().optional(),\n email: z.string().nullable(),\n office_phone: z.string().nullable().optional(),\n office_email: z.string().nullable().optional()\n});\n\n// Partner data schema\nexport const partnerDataSchema = z.object({\n source: z.string(),\n manual: z.boolean()\n});\n\n// Package strategy schema\nexport const packageStrategySchema = z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any()\n});\n\n// Schedule email schema\nexport const scheduleEmailSchema = z.object({\n brevo_template_id: z.number(),\n subject: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional(),\n preview_text: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional()\n}).nullable().optional();\n\n// Schedule push schema\nexport const schedulePushSchema = z.object({\n title: z.record(z.string()).optional(),\n body: z.record(z.string()).optional(),\n target: z.string()\n}).nullable().optional();\n\n// Schedule schema\nexport const scheduleSchema = z.object({\n days: z.number(),\n email: scheduleEmailSchema,\n push: schedulePushSchema,\n hour: z.number(),\n key: z.string(),\n method: z.enum(['email', 'sms', 'whatsapp', 'push']),\n moment: z.enum(['departure_date', 'return_date', 'immediate']),\n filter: scheduleFilterSchema.nullable().optional()\n});\n\nexport const freeEsimSchema = z.object({\n enabled: z.boolean(),\n package_specification: z.object({\n size: z.string(),\n package_type: z.string(),\n destination: z.string(),\n package_duration: z.number(),\n type: z.string().nullable().optional()\n }),\n booking_id_verification: z.boolean().default(false),\n booking_id_verification_pattern: z.string().nullable().optional(),\n allowance: z.number(),\n total_allowance: z.number(),\n});\n\n// Agent signup settings schema\nexport const agentSignupSettingsSchema = z.object({\n slack_channel: z.string().nullable().optional(),\n welcome_email_template: z.number().nullable().optional(),\n password_reset_template: z.number().nullable().optional(),\n partner_type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n enable_complimentary_booking: z.boolean().default(true),\n complimentary_booking_partner_id: z.string().nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().default(true),\n source_partner_branding: z.boolean().default(false),\n own_branding: z.boolean().default(false)\n }).default({})\n});\n\n// Platform settings schema\nexport const platformSettingsSchema = z.object({\n package_strategy: z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any(),\n supported_package_types: z.enum(['data-limited', 'unlimited']).optional()\n }).nullable().optional(),\n free_esim: freeEsimSchema.nullable().optional(),\n booking_defaults: z.object({\n locale: supportedLocalesSchema\n }).nullable().optional(),\n booking_confirmation: z.object({\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n }).nullable().optional(),\n emit_events: emitEventSchema.nullable().optional(),\n schedules: z.array(scheduleSchema).optional(),\n brevo: z.object({\n list_ids: z.array(z.number()),\n campaign_mode: z.boolean()\n }).nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().optional().default(true),\n source_partner_branding: z.boolean().optional().default(false),\n own_branding: z.boolean().optional().default(false)\n }).nullable().optional(),\n agent_signup_settings: agentSignupSettingsSchema.nullable().optional(),\n upgrade_offer: z.object({\n enabled: z.boolean(),\n discount_percentage: z.number().min(0).max(100),\n }).nullable().optional()\n});\n\n// ===== Exportable schema specs =====\n\n// Package price schema spec\nexport const packagePriceSchemaSpec = markAsSchemaSpec({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n});\n\n// Financial properties schema spec\nexport const financialPropertiesSchemaSpec = markAsSchemaSpec({\n administration_fee: z.number().nullable(),\n income_per_gb: z.number().nullable(),\n commission_fee: z.number().nullable().optional(),\n commission_percentage: z.number().nullable().optional(),\n payment_method: z.enum(['invoice', 'direct']),\n requires_card: z.boolean().nullable(),\n next_invoice: timestampNullableOptional,\n last_invoice: timestampNullableOptional,\n pricing_strategies: {\n _type: 'object' as const,\n of: {\n partner: {\n _type: 'object' as const,\n of: {\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n },\n user: {\n _type: 'object' as const,\n of: {\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n }\n },\n nullable: true\n }\n});\n\n// Platform settings schema spec\nexport const platformSettingsSchemaSpec = markAsSchemaSpec({\n package_strategy: {\n _type: 'object' as const,\n of: packageStrategySchema.shape,\n nullable: true,\n optional: true\n },\n free_esim: {\n _type: 'object' as const,\n of: freeEsimSchema.shape,\n nullable: true,\n optional: true\n },\n booking_defaults: {\n _type: 'object' as const,\n of: {\n locale: supportedLocalesSchema\n },\n nullable: true,\n optional: true\n },\n booking_confirmation: {\n _type: 'object' as const,\n of: {\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n },\n nullable: true,\n optional: true\n },\n schedules: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: scheduleSchema.shape\n },\n optional: true\n },\n agent_signup_settings: {\n _type: 'object' as const,\n of: agentSignupSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\n// Webhook settings schema\nexport const webhookSettingsSchema = z.object({\n url: z.string().url().nullable().optional(),\n api_key: z.string().nullable().optional(),\n enabled: z.boolean().default(false),\n events: z.object({\n promocode_redemption: z.boolean().default(false)\n }).default({})\n});\n\n// ===== Main partner schema =====\nexport const partnerSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Partner specific fields\n name: z.string().min(3),\n type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n is_active: z.boolean().nullable().optional(),\n external_id: z.string().nullable().optional(),\n\n // Complex nested objects\n contact: {\n _type: 'object' as const,\n of: partnerContactSchema.shape,\n nullable: true\n },\n address: {\n _type: 'object' as const,\n of: addressSchema.shape,\n nullable: true\n },\n registration: {\n _type: 'object' as const,\n of: registrationSchema.shape,\n nullable: true\n },\n banking_details: {\n _type: 'object' as const,\n of: bankingDetailsSchema.shape,\n nullable: true\n },\n\n // Reference fields\n parent: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n users: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: USER_COLLECTION }, nullable: true },\n\n // Complex nested structures\n financial_properties: financialPropertiesSchemaSpec,\n // Visual identity\n visual_identity: {\n _type: 'object' as const,\n of: visualIdentitySchema.shape,\n nullable: true\n },\n\n // Platform settings\n platform_settings: {\n _type: 'object' as const,\n of: platformSettingsSchema.shape,\n nullable: true\n },\n\n // Tags\n tags: {\n _type: 'array' as const,\n of: tagModelSpec,\n nullable: true,\n optional: true\n },\n\n // Tag slugs\n tag_slugs: {\n _type: 'array' as const,\n of: z.string(),\n nullable: true,\n optional: true\n },\n\n // Metadata\n data: {\n _type: 'object' as const,\n of: partnerDataSchema.shape,\n nullable: true,\n optional: true\n },\n\n // Webhook settings\n webhook_settings: {\n _type: 'object' as const,\n of: webhookSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\nexport const priceListItemSchemaSpec = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: z.string(),\n});\n\n// Price list item with docRef support for use in priceListSchemaSpec\nconst priceListItemWithDocRefSpec = {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n};\n\n// ===== Price list schema =====\nexport const priceListSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Price list specific fields\n name: z.string().min(3),\n description: z.string().nullable(),\n type: z.enum(['partner', 'consumer']),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n price_list: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec,\n optional: true\n },\n package_prices: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec\n },\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec, PARTNER_COLLECTION } from './common';\n\n// Country schema spec\nexport const analyticsSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n service: z.string(),\n date: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/), // YYYY-MM-DD\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n event: z.string(),\n parameter: z.string().nullable(),\n sum: z.number(),\n});","import { z } from 'zod';\nimport { timestampRequired } from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const payloadSpec = {\n _type: 'record' as const,\n of: z.unknown(),\n optional: true\n};\n\nexport const apiLogSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n method: z.string(),\n user_id: z.string().optional(),\n path: z.string(),\n resource_type: z.string().optional(),\n resource_id: z.string().optional(),\n partner_id: z.string().optional(),\n payload: payloadSpec,\n timestamp: timestampRequired,\n status_code: z.number()\n});\n","import { z } from 'zod';\nimport { \n USER_TOUCHPOINTS_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullableOptional,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n PARTNER_COLLECTION\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const userTouchpointsSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n unique_device_identifier: z.string().nullable().optional(),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true, optional: true },\n promo_code: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n promo_code_redeemed_at: timestampNullableOptional,\n esim_assigned_at: timestampNullableOptional,\n esim_install_initiated_at: timestampNullableOptional,\n esim_install_completed_at: timestampNullableOptional,\n esim_first_package_activated_at: timestampNullableOptional,\n esim_topped_up_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional, PERMISSION_COLLECTION } from './common';\n\nexport const roleSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional } from './common';\n\nexport const permissionSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullable\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\n\n// Package type schema for reward strategy\nexport const rewardPackageTypeSchema = z.enum(['data-limited', 'starter']);\nexport type RewardPackageType = z.infer;\n\n// Reward strategy base reward schema\nexport const baseRewardSchema = z.object({\n package_size: z.string(),\n package_type: rewardPackageTypeSchema\n});\n\nexport type BaseReward = z.infer;\n\n// Reward strategy multipliers schema\nexport const rewardMultipliersSchema = z.object({\n quality_based: z.number().optional(),\n completion_based: z.number().optional()\n}).optional();\n\nexport type RewardMultipliers = z.infer;\n\n// Reward strategy schema\nexport const rewardStrategySchema = z.object({\n base_reward: baseRewardSchema,\n multipliers: rewardMultipliersSchema\n});\n\nexport type RewardStrategy = z.infer;\n\n// Review schema spec\nexport const reviewSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n partner_id: z.string().nullable().optional(),\n questions: z.record(z.any()),\n reward_strategy: rewardStrategySchema,\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true }\n});\n\n// Review submission schema spec\nexport const reviewSubmissionSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n review: { _type: 'docRef' as const, collection: REVIEW_COLLECTION, nullable: true },\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true },\n questions: z.record(z.any()),\n iccid: z.string(),\n isAndroid: z.boolean(),\n country_id: z.string(),\n partner_id: z.string(),\n review_id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n analysis: z.record(z.any()).nullable().optional()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PACKAGE_TEMPLATE_COLLECTION,\n PARTNER_COLLECTION,\n timestampNullable,\n timestampRequired,\n TRAFFIC_POLICY_COLLECTION\n} from './common';\n\n// Destination schema spec\nexport const destinationSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n type: z.string(), // \"country\" or region names like \"Europe\", \"Asia\", \"Middle East\"\n iso3s: z.array(z.string()),\n name: z.string(),\n i18n_name: z.record(z.string()),\n is_active: z.boolean(),\n sort_order: z.number(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n\n// Destination offer schema spec\nexport const destinationBundleSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n parent_document_id: z.string(),\n type: z.enum(['unlimited', 'data-limited', 'starter']),\n label: z.string().nullable().optional(), //'5 Days' or '5GB'\n provider: z.enum(['telna', 'bondio']),\n\n duration_in_days: z.number(),\n duration_in_seconds: z.number(),\n \n size_in_bytes: z.number(),\n size_in_megabytes: z.number(),\n size_in_gigabytes: z.number(),\n\n package_template: { _type: 'docRef' as const, collection: PACKAGE_TEMPLATE_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n //All unlimited packages will have a traffic policy, but this only refers to telna bundles\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n b2c_price: z.number(),\n b2b_price: z.number(),\n partner_b2c_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n partner_b2b_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n is_active: z.boolean().default(true),\n is_visible: z.boolean().default(true), //All bundles that will have a partner will probably be invisible\n priority: z.number().default(10),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n deleted_at: timestampNullable,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n deleted_by: z.string().nullable()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n timestampRequired\n} from './common';\n\n// Package Template Schema Spec - unified schema for all providers\nexport const packageTemplateSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n provider: z.string(), // e.g., \"telna\", \"bondio\"\n type: z.string(),\n purchase_price: z.number(),\n external_id: z.string(),\n supported_countries: z.array(z.string()), // iso3 codes\n provider_specific_data: {\n _type: 'record' as const,\n of: z.any(),\n nullable: true,\n optional: true\n },\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, USER_COLLECTION } from './common';\n\n// Define the login request schema spec\nexport const loginRequestSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n email: z.string().email(),\n status: z.enum(['pending', 'completed', 'expired']),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n created_at: timestampRequired,\n expires_at: timestampRequired\n});\n","import { buildClientSchema } from './builders/client';\nimport {\n userSchemaSpec,\n apiKeySpec,\n apiKeysSpec,\n apiKeysObjectSpec\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { bondioPackageSchema, packageSchemaSpec, telnaPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n financialPropertiesSchemaSpec as financialPropertiesSchema,\n packagePriceSchema,\n platformSettingsSchema,\n visualIdentitySchema,\n pricingStrategySchema,\n freeEsimSchema,\n} from './specs/partner';\nimport { analyticsSpec } from './specs/analytics';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { z } from 'zod';\nimport { roleSchemaSpec } from './specs/role';\nimport { permissionSchemaSpec } from './specs/permission';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\n\n\n/** ZOD SCHEMAS */\nexport const HUserSchema = buildClientSchema(userSchemaSpec);\nexport const HBookingSchema = buildClientSchema(bookingSchemaSpec);\nexport const HCountrySchema = buildClientSchema(countrySchemaSpec);\nexport const HCurrencySchema = buildClientSchema(currencySchemaSpec);\nexport const HESIMSchema = buildClientSchema(esimSchemaSpec);\nexport const HPaymentSchema = buildClientSchema(paymentSchemaSpec);\nexport const HMessageSchema = buildClientSchema(messageSchemaSpec);\nexport const HPackageSchema = buildClientSchema(packageSchemaSpec);\nexport const HPromoCodeSchema = buildClientSchema(promoCodeSchemaSpec);\nexport const HPartnerSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPriceListSchema = buildClientSchema(priceListSchemaSpec);\nexport const HFinancialPropertiesSchema = buildClientSchema(financialPropertiesSchema);\nexport const HApiLogSchema = buildClientSchema(apiLogSchemaSpec);\nexport const HPackagePriceSchema = buildClientSchema(packagePriceSchema);\nexport const HubbyModelSchema = buildClientSchema(hubbyModelSpec);\nexport const HPartnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPlatformSettingsSchema = buildClientSchema(platformSettingsSchema);\nexport const HVisualIdentitySchema = buildClientSchema(visualIdentitySchema);\nexport const HPricingStrategySchema = buildClientSchema(pricingStrategySchema);\nexport const HFreeEsimSchema = buildClientSchema(freeEsimSchema);\nexport const HAnalyticsSchema = buildClientSchema(analyticsSpec);\nexport const HRoleSchema = buildClientSchema(roleSchemaSpec);\nexport const HPermissionSchema = buildClientSchema(permissionSchemaSpec);\nexport const HTagSchema = buildClientSchema(tagModelSpec);\nexport const HTrafficPolicySchema = buildClientSchema(trafficPolicySpec);\nexport const HTelnaPackageSchema = buildClientSchema(telnaPackageSchema);\nexport const HBondioPackageSchema = buildClientSchema(bondioPackageSchema);\nexport const HReviewSchema = buildClientSchema(reviewSchemaSpec);\nexport const HReviewSubmissionSchema = buildClientSchema(reviewSubmissionSchemaSpec);\nexport const HDestinationSchema = buildClientSchema(destinationSchemaSpec);\nexport const HDestinationBundleSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const HPackageTemplateSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const HUserTouchpointsSchema = buildClientSchema(userTouchpointsSchemaSpec);\nexport const HLoginRequestSchema = buildClientSchema(loginRequestSchemaSpec);\n// Additional lower-level schemas\nexport const HAddressSchema = addressSchema;\nexport const HRegistrationSchema = registrationSchema;\nexport const HBankingDetailsSchema = bankingDetailsSchema;\nexport const HPartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const HPromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const HVisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const HScheduleFilterSchema = scheduleFilterSchema;\nexport const HPartnerContactSchema = partnerContactSchema;\nexport const HPartnerDataSchema = partnerDataSchema;\nexport const HCommunicationChannelSchema = communicationChannelSchema;\nexport const HBookingStatusSchema = bookingStatusSchema;\nexport const HCommunicationOptionsSchema = communicationOptionsSchema;\nexport const HRewardStrategySchema = rewardStrategySchema;\nexport const HBaseRewardSchema = baseRewardSchema;\nexport const HRewardMultipliersSchema = rewardMultipliersSchema;\nexport const HRewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type HAnalytics = z.infer;\nexport type HUser = z.infer;\nexport type HBooking = z.infer;\nexport type HCountry = z.infer;\nexport type HCurrency = z.infer;\nexport type HESIM = z.infer;\nexport type HPayment = z.infer;\nexport type HMessage = z.infer;\nexport type HPackage = z.infer;\nexport type HPromoCode = z.infer;\nexport type HPartner = z.infer;\nexport type HPriceList = z.infer;\nexport type HApiLog = z.infer;\nexport type HTag = z.infer;\nexport type HTrafficPolicy = z.infer;\nexport type HBondioPackage = z.infer;\nexport type HTelnaPackage = z.infer;\nexport type HReview = z.infer;\nexport type HReviewSubmission = z.infer;\nexport type HDestination = z.infer;\nexport type HDestinationBundle = z.infer;\nexport type HPackageTemplate = z.infer;\nexport type HUserTouchpoints = z.infer;\nexport type HLoginRequest = z.infer;\n// Additional lower-level types\nexport type HAddress = z.infer;\nexport type HRegistration = z.infer;\nexport type HBankingDetails = z.infer;\nexport type HPartnerPackageSpecification = z.infer;\nexport type HPromoPackageSpecification = z.infer;\nexport type HVisualIdentityBanner = z.infer;\nexport type HFinancialProperties = z.infer;\nexport type HScheduleFilter = z.infer;\nexport type HPartnerContact = z.infer;\nexport type HPartnerData = z.infer;\nexport type HCommunicationChannel = z.infer;\nexport type HBookingStatus = z.infer;\nexport type HCommunicationOptions = z.infer;\nexport type HRewardStrategy = z.infer;\nexport type HBaseReward = z.infer;\nexport type HRewardMultipliers = z.infer;\nexport type HRewardPackageType = z.infer;\nexport type HHubbyModel = z.infer;\n\nexport type HubbyModelApp = HHubbyModel;\n\nexport type SupportedLocales = typeof SUPPORTED_LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\nexport type HRole = z.infer;\nexport type HPermission = z.infer; "]} \ No newline at end of file diff --git a/dist/index.cjs b/dist/index.cjs index 028574c..1c85e10 100644 --- a/dist/index.cjs +++ b/dist/index.cjs @@ -501,6 +501,7 @@ var esimSchemaSpec = markAsSchemaSpec({ data_used: zod.z.boolean(), status: zod.z.string().nullable(), status_history: esimStatusHistorySchema, + status_updated_at: timestampNullable, name: zod.z.string(), android_auto: zod.z.boolean(), partner_price: zod.z.number().nullable(), diff --git a/dist/index.cjs.map b/dist/index.cjs.map index fa317db..9f970c3 100644 --- a/dist/index.cjs.map +++ b/dist/index.cjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/builders/server.ts","../src/common.ts","../src/services/firebase.ts","../src/specs/user.ts","../src/specs/common.ts","../src/specs/booking.ts","../src/constants.ts","../src/specs/promocode.ts","../src/specs/country.ts","../src/specs/currency.ts","../src/specs/esim.ts","../src/specs/payment.ts","../src/specs/analytics.ts","../src/specs/message.ts","../src/specs/traffic_policy.ts","../src/specs/package.ts","../src/specs/partner.ts","../src/specs/apiLogs.ts","../src/specs/userTouchpoints.ts","../src/specs/review.ts","../src/specs/destination.ts","../src/specs/package_template.ts","../src/specs/login_request.ts","../src/utils/firestoreTransformUtils.ts","../src/builders/client.ts","../src/specs/role.ts","../src/specs/permission.ts","../src/index.client.ts","../src/utils/modelConverterFactory.ts","../src/index.server.ts"],"names":["z","packageSpecificationSchema","REVIEW_COLLECTION","Timestamp","convertJSToFirestore","convertFirestoreToJS","SUPPORTED_LOCALES"],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { Timestamp } from 'firebase-admin/firestore';\nimport type { FieldSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\nimport { FirebaseService } from '../services/firebase';\n\nexport const buildServerSchema = (spec: FieldSpec, path: string[] = []): z.ZodTypeAny => {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod schema passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec);\n }\n\n // ----- Array -----\n if ('_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n\n const itemSchema =\n spec.of instanceof z.ZodType\n ? spec.of\n : buildServerSchema(spec.of, [...path, '[i]']);\n\n let arraySchema = z.array(itemSchema);\n if (spec.nullable) arraySchema = arraySchema.nullable();\n if (spec.optional) arraySchema = arraySchema.optional();\n return arraySchema;\n }\n\n // ----- Record -----\n if ('_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n\n const valueSchema =\n spec.of instanceof z.ZodType\n ? spec.of\n : buildServerSchema(spec.of, [...path, '[key]']);\n\n let recordSchema = z.record(valueSchema);\n if (spec.nullable) recordSchema = recordSchema.nullable();\n if (spec.optional) recordSchema = recordSchema.optional();\n return recordSchema;\n }\n\n // ----- Timestamp -----\n if ('_type' in spec && spec._type === 'timestamp') {\n let tsSchema = z.date().transform(date => Timestamp.fromDate(date));\n if (spec.nullable) tsSchema = tsSchema.nullable();\n if (spec.optional) tsSchema = tsSchema.optional();\n return tsSchema;\n }\n\n // ----- Document Reference -----\n if ('_type' in spec && spec._type === 'docRef') {\n let refSchema = z.string().transform(id => {\n const firestore = FirebaseService.getDefaultInstance().getFirestore()\n return firestore.collection(spec.collection).doc(id);\n });\n if (spec.nullable) refSchema = refSchema.nullable();\n if (spec.optional) refSchema = refSchema.optional();\n return refSchema;\n }\n\n // ----- Nested object shape -----\n if (typeof spec === 'object' && !('_type' in spec)) {\n const shape: Record = {};\n for (const [key, val] of Object.entries(spec)) {\n shape[key] = buildServerSchema(val, [...path, key]);\n }\n return z.object(shape);\n }\n\n // ----- Object -----\n if (\n typeof spec === 'object' &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildServerSchema);\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || typeof spec === 'object' && '_type' in spec && spec._type === 'object') {\n return wrapPlainObjectSchema(spec, path, buildServerSchema);\n }\n\n // ----- Unknown or malformed spec -----\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n};\n","import { ZodTypeAny, z } from 'zod';\nimport type { SchemaBuilder } from './types';\n\n/**\n * Ensures a Zod schema is wrapped to be optional and/or nullable,\n * if not already. Use this in recursive schema builders.\n * Also applies any other supported schema transformations provided in options.\n */\nexport function wrapZodSchema(\n schema: ZodTypeAny,\n options?: {\n optional?: boolean;\n nullable?: boolean;\n min?: number;\n max?: number;\n // Allow arbitrary extensions via dynamic property\n [key: string]: any;\n }\n): ZodTypeAny {\n if (!options) return schema;\n\n let wrapped = schema;\n\n // Handle nullable and optional specially since they're common\n if (options.nullable && !wrapped.isNullable?.()) {\n wrapped = wrapped.nullable();\n }\n\n if (options.optional && !wrapped.isOptional?.()) {\n wrapped = wrapped.optional();\n }\n\n // Process all other options dynamically\n for (const [key, value] of Object.entries(options)) {\n // Skip the already handled properties and undefined values\n if (['nullable', 'optional'].includes(key) || value === undefined) {\n continue;\n }\n\n // Check if the schema has a method matching the option key\n if (typeof (wrapped as any)[key] === 'function') {\n wrapped = (wrapped as any)[key](value);\n }\n }\n\n return wrapped;\n}\n\nexport function wrapObjectSchema(\n spec: any, // using any to support dynamic `spec.type === 'object'`\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n if (!('of' in spec)) {\n throw new Error(`Object spec at \"${pathString}\" is missing 'of'`);\n }\n\n const shape: Record = {};\n for (const [key, value] of Object.entries(spec.of)) {\n shape[key] = builder(value as any, [...path, key]);\n }\n\n let objectSchema: ZodTypeAny = z.object(shape);\n if (spec.nullable) objectSchema = objectSchema.nullable();\n if (spec.optional) objectSchema = objectSchema.optional();\n return objectSchema;\n}\n\n/**\n * Wraps a plain object shape (no `type: 'object'`) into a Zod schema.\n * Assumes each field is either a Zod schema or another FieldSpec.\n */\nexport function wrapPlainObjectSchema(\n spec: Record,\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n // Handle object field specs with '_type': 'object'\n if ('_type' in spec && spec._type === 'object' && 'of' in spec) {\n return wrapObjectSchema(spec, path, builder);\n }\n\n const shape: Record = {};\n\n // Only add fields to the schema if they're not special control properties\n for (const [key, val] of Object.entries(spec)) {\n if (key !== '_type' && key !== 'nullable' && key !== 'optional') {\n shape[key] = builder(val, [...path, key]);\n }\n }\n\n // Create the base object schema\n let schema: ZodTypeAny = z.object(shape);\n\n // Apply nullable/optional modifiers if needed\n if ('nullable' in spec && spec.nullable === true) {\n schema = schema.nullable();\n }\n\n if ('optional' in spec && spec.optional === true) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nexport const SCHEMA_MARKER = Symbol('ZodSchemaSpecMarker');\n\nexport function markAsSchemaSpec(spec: T): T {\n Object.defineProperty(spec, SCHEMA_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return spec;\n}\n\nexport function isSchemaSpec(obj: unknown): obj is Record {\n return typeof obj === 'object' && obj !== null && SCHEMA_MARKER in obj;\n}","import { getApps, initializeApp, cert, AppOptions, App } from \"firebase-admin/app\";\nimport { getFirestore, Firestore } from \"firebase-admin/firestore\";\nimport { applicationDefault } from \"firebase-admin/app\";\n\nexport interface FirebaseConfig {\n credential?: AppOptions['credential'];\n projectId?: string;\n storageBucket?: string;\n databaseURL?: string;\n // Options for testing\n isTest?: boolean;\n}\n\n// Define variable to hold singleton instance (must be injected by consumer/tests)\nlet defaultInstance: FirebaseService | null = null;\n\nexport class FirebaseService {\n\n private firestoreInstance: Firestore;\n constructor(db: Firestore) {\n this.firestoreInstance = db;\n }\n\n getFirestore(): Firestore {\n return this.firestoreInstance;\n }\n\n // Get default instance with singleton pattern\n public static getDefaultInstance(): FirebaseService {\n if (defaultInstance === null) {\n throw new Error(\n \"FirebaseService default instance not set. Inject a FirebaseService via FirebaseService.setDefaultInstance(...) in your application startup or test setup.\"\n );\n }\n return defaultInstance;\n }\n\n // Allow for setting a custom default instance (useful for tests)\n public static setDefaultInstance(instance: FirebaseService): void {\n defaultInstance = instance;\n }\n}\n\n// Function to create a new Firebase service instance (use in tests or by consumers before injection)\nexport function createFirebaseService(db: Firestore): FirebaseService {\n return new FirebaseService(db);\n}","import { z } from 'zod';\nimport { PARTNER_COLLECTION, PROFILE_COLLECTION, timestampNullableOptional, timestampRequired, timestampNullable, ROLE_COLLECTION, PERMISSION_COLLECTION } from './common';\nimport { markAsSchemaSpec } from '../common'\n\nexport const apiKeySpec = {\n expires_at: { _type: 'timestamp' as const },\n secret: z.string(),\n is_active: z.boolean(),\n}\n\nexport const apiKeysSpec = {\n _type: 'record' as const,\n of: {\n _type: 'object' as const,\n of: apiKeySpec\n }\n}\n\nexport const apiKeysObjectSpec = {\n _type: 'object' as const,\n of: {\n allowed_keys: { _type: 'array' as const, nullable: true, optional: true, of: z.string() },\n keys: apiKeysSpec\n },\n nullable: true,\n optional: true\n}\n\nexport const userSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string().nullable(),\n email: z.string().email().nullable(),\n stripe_id: z.string().nullable().optional(),\n referral: z.string().nullable().optional(),\n fcm: z.string().optional(),\n deeplink: z.string().nullable().optional(),\n gender: z.string().nullable().optional(),\n company: z.string().nullable().optional(),\n coordinates: z.string().nullable().optional(),\n platform: z.enum(['ios', 'android']).nullable().optional(),\n platform_version: z.string().nullable().optional(),\n device_type: z.string().nullable().optional(),\n app_version: z.string().nullable().optional(),\n parameters: z.any().nullable().optional(),\n locale: z.string().nullable().optional(),\n phone_model: z.string().nullable().optional(),\n phone_os: z.string().nullable().optional(),\n phone_os_version: z.string().nullable().optional(),\n ios: z.boolean().nullable().optional(),\n has_card_saved: z.boolean().nullable().optional(),\n admin: z.boolean().nullable().optional(),\n api_keys: apiKeysObjectSpec,\n profileRef: z.string().nullable().optional(),\n currency: z.string().nullable().optional(),\n receipt_email: z.string().nullable().optional(),\n source: z.enum(['direct', 'promo', 'platform']).nullable().optional(),\n role: { _type: 'docRef' as const, collection: ROLE_COLLECTION, optional: true, nullable: true },\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n balance: z.number().nullable().optional(),\n createdAt: { _type: 'timestamp' as const },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, optional: true, nullable: true },\n review_requested: timestampNullableOptional,\n last_seen: timestampNullableOptional,\n created_at: timestampNullableOptional,\n updated_at: timestampNullableOptional,\n created_by: z.string().nullable().optional(),\n updated_by: z.string().nullable().optional(),\n push_to_start_token: z.string().nullable().optional(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const PARTNER_COLLECTION = '/companies/hubby/partners';\nexport const USER_COLLECTION = 'users';\nexport const PROFILE_COLLECTION = '/companies/hubby/profiles';\nexport const PACKAGE_COLLECTION = '/companies/hubby/packages';\nexport const PACKAGE_TEMPLATE_COLLECTION = '/companies/hubby/package_templates';\nexport const PROMO_CODE_COLLECTION = '/companies/hubby/promo_codes';\nexport const COUNTRY_COLLECTION = 'countries';\nexport const ESIM_COLLECTION = 'esims';\nexport const PAYMENT_COLLECTION = 'payments';\nexport const PRICE_LIST_COLLECTION = 'price_lists';\nexport const BOOKING_COLLECTION = 'bookings';\nexport const MESSAGE_COLLECTION = 'messages';\nexport const CURRENCY_COLLECTION = 'currencies';\nexport const API_LOG_COLLECTION = 'api_logs'\nexport const ROLE_COLLECTION = 'roles';\nexport const PERMISSION_COLLECTION = 'permissions';\nexport const TRAFFIC_POLICY_COLLECTION = 'traffic_policies';\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\nexport const DESTINATION_COLLECTION = 'destinations';\nexport const DESTINATION_OFFER_COLLECTION = 'offers';\nexport const USER_TOUCHPOINTS_COLLECTION = 'user_touchpoints';\n\n\nexport const packageTypes = ['data-limited', 'time-limited', 'starter', 'unlimited'];\n\n// Timestamp specs\nexport const timestampNullableOptional = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampNullable = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampRequired = { _type: 'timestamp' as const, nullable: false, optional: false };\n\nexport const hubbyModelSpec = {\n id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n created_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n}\n\nexport const tagModelSpec = {\n ...hubbyModelSpec,\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n color: z.string().nullable().optional(),\n}","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n PROMO_CODE_COLLECTION,\n USER_COLLECTION,\n ESIM_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema } from '../constants';\nimport { packageSpecificationSchema } from './promocode';\n\n// Enum for communication channels\nexport const communicationChannelSchema = z.enum([\n 'EMAIL',\n 'WHATSAPP',\n 'PUSH_NOTIFICATION',\n 'SMS'\n]);\nexport type CommunicationChannelType = z.infer;\n\n// For backward compatibility\nexport type CommunicationChannel = CommunicationChannelType;\n\n// Add enum-like object for use in code\nexport const CommunicationChannel = {\n EMAIL: 'EMAIL' as const,\n WHATSAPP: 'WHATSAPP' as const,\n PUSH_NOTIFICATION: 'PUSH_NOTIFICATION' as const,\n SMS: 'SMS' as const\n} as const;\n\n// Status type for bookings\nexport const bookingStatusSchema = z.enum([\n 'PENDING',\n 'CONFIRMED',\n 'COMPLETED',\n 'CANCELLED',\n 'UNPAID',\n 'EXPIRED'\n]);\nexport type BookingStatus = z.infer;\n\n// Communication options schema\nexport const communicationOptionsSchema = z.object({\n should_send_message: z.boolean(),\n channels: z.array(communicationChannelSchema)\n});\n\nexport const financialInsightsSchema = z.object({\n partner_commission_percentage: z.number().nullable().optional(),\n total_commission_amount: z.number().nullable().optional(),\n price: z.number().nullable().optional(),\n}).nullable().optional()\n\nexport type CommunicationOptions = z.infer;\n\n// Define the booking schema spec\nexport const bookingSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n external_id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n title: z.string().nullable().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n full_name: z.string().nullable().optional(),\n pax: z.number().optional().nullable(),\n email: z.string().email().nullable().optional(),\n phone: z.string().nullable().optional(),\n booking_id: z.string().nullable().optional(),\n flight_number: z.string().optional(),\n gender: z.enum(['M', 'F', 'O']).optional(),\n sent_messages: z.record(z.any()).optional(),\n locale: supportedLocalesSchema,\n status: bookingStatusSchema.optional().nullable(),\n data: {\n _type: 'object' as const,\n of: {\n source: z.string(),\n manual: z.boolean(),\n action: z.string().nullable().optional()\n },\n nullable: true,\n optional: true\n },\n communication_options: {\n _type: 'object' as const,\n of: {\n should_send_message: z.boolean(),\n channels: {\n _type: 'array' as const,\n of: communicationChannelSchema\n }\n }\n },\n is_processed_for_esim_restoration: z.boolean().optional().nullable(),\n is_pseudonymized: z.boolean().optional().nullable(),\n import_id: z.string().nullable().optional(),\n package_specifications: z.array(packageSpecificationSchema).min(1),\n departure_date: timestampRequired,\n return_date: timestampNullable,\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION },\n financial_insights: financialInsightsSchema,\n promo_codes: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION },\n nullable: true,\n optional: true\n },\n users: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: USER_COLLECTION },\n nullable: true,\n optional: true\n },\n esims: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: ESIM_COLLECTION },\n nullable: true,\n optional: true\n },\n hubby_foreign_identifiers: z.object({\n messaging_contact_id: z.string().nullable()\n }).nullable().optional()\n});\n\n","import { z } from \"zod\";\n\nexport const SUPPORTED_LOCALES = [\n \"en-US\",\n \"en-EU\",\n \"en-GB\",\n \"en-CA\",\n \"nl-NL\",\n \"de-DE\",\n \"fr-FR\",\n \"fr-CA\",\n \"it-IT\",\n \"es-ES\",\n \"cs-CZ\",\n \"pl-PL\",\n \"pt-PT\",\n \"fr-BE\",\n \"nl-BE\",\n \"de-AT\",\n \"de-CH\",\n \"fr-CH\",\n \"it-CH\",\n \"sv-SE\",\n \"sk-SK\",\n \"de-BE\",\n \"en-AU\",\n \"da-DK\",\n \"ko-KR\",\n] as const;\n\n// Define the type using TypeScript's typeof and indexing\n\n// Define the type using TypeScript's typeof and indexing\nexport type SupportedLocales = (typeof SUPPORTED_LOCALES)[number];\n\n// Create a Zod schema for validation\nexport const supportedLocalesSchema = z.enum(SUPPORTED_LOCALES);\n\n// Type inference from the schema (alternative way to define the type)\nexport type SupportedLocalesFromSchema = z.infer;\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n PACKAGE_COLLECTION,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// Define package specification schema for use in promo code\nexport const packageSpecificationSchema = z.object({\n destination: z.string().optional().or(z.array(z.string())),\n iso3: z.string().optional(),\n size: z.string().optional(),\n package_id: z.string().optional(),\n bundle_id: z.string().optional(),\n iata_code: z.string().optional(),\n package_duration: z.number().optional(),\n package_type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).optional(),\n traffic_policy: z.string().optional(),\n});\n\n// Define the promo code schema spec\nexport const promoCodeSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n redeemed_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // PromoCode specific fields\n uuid: z.string().uuid().nullable().optional(),\n external_id: z.string(),\n code: z.string(),\n claimed_at: timestampNullableOptional,\n allowance_user: z.number(),\n allowance_total: z.number(),\n type: z.enum(['discount', 'booking', 'booking_without_destination']).nullable().or(z.string()),\n usage: z.array(z.string()),\n uuid_usage: z.array(z.string()),\n package_specification: packageSpecificationSchema.optional(),\n valid_from: timestampRequired,\n valid_to: timestampRequired,\n\n // Reference fields\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION, nullable: true },\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true },\n\n // Optional fields based on the type\n discount: z.number().optional(),\n package_size: z.string().optional(),\n countries: z.array(z.string()).optional(),\n max_bytes: z.number().optional(),\n starter_data: z.number().optional()\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const countrySchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n bokun_id: z.number().nullable(),\n LTE: z.boolean().nullable(),\n apn: z.string().nullable(),\n click_count: z.number().nullable(),\n global_network: z.string().nullable(),\n global_price: z.number().nullable(),\n hubby: z.number().nullable(),\n imsi: z.number().nullable(),\n has_esim: z.boolean(),\n name: z.string().nullable(),\n region: z.boolean().nullable(),\n i18n_name: z.record(z.string()),\n is_region: z.boolean().nullable(),\n countries: z.array(z.string()).nullable(),\n tier: z.number().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define schema for conversion rates (for backward compatibility)\nexport const conversionRateSchema = z.object({\n currency: z.number()\n});\n\nexport type CoversionRate = z.infer;\n\n// Define the currency schema spec\nexport const currencySchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n // ISO 4217 currency code (e.g., \"USD\", \"EUR\")\n code: z.string().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n // Currency symbol (e.g., \"$\", \"€\")\n symbol: z.string().describe('Currency symbol (e.g., \"$\", \"€\")'),\n // Full name of the currency (e.g., \"US Dollar\")\n name: z.string().describe('Full name of the currency (e.g., \"US Dollar\")'),\n // Exchange rate relative to base currency\n rate: z.number().describe('Exchange rate relative to base currency'),\n // Whether this is the default currency\n is_default: z.boolean().describe('Whether this is the default currency')\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n PARTNER_COLLECTION,\n PAYMENT_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\n\n\nexport const statusHistorySchema = z.object({\n telna_esim_status: z.number(),\n source: z.string(),\n status: z.string(),\n timestamp: timestampRequired as unknown as z.ZodType,\n})\n\nexport const esimStatusHistorySchema = markAsSchemaSpec(z.array(statusHistorySchema).nullable().optional());\n\n// Define the eSIM schema spec\nexport const esimSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Common eSIM fields\n imsi: z.number(),\n qr: z.string(),\n iccid: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable().optional(),\n total_data: z.number(),\n data_left: z.number(),\n uuid: z.string().uuid().nullable().optional(),\n data_used: z.boolean(),\n status: z.string().nullable(),\n status_history: esimStatusHistorySchema,\n name: z.string(),\n android_auto: z.boolean(),\n partner_price: z.number().nullable(),\n promo: z.string().nullable(),\n type: z.enum(['api', 'promo', 'balance', 'code', 'external', 'payment']),\n is_auto_install: z.boolean(),\n is_archived: z.boolean(),\n user: z.string().nullable(),\n payment: z.string().nullable(),\n apn: z.string().nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Timestamp fields\n time_assigned: timestampNullable,\n last_updated: timestampNullable\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n USER_COLLECTION,\n timestampRequired,\n hubbyModelSpec,\n PARTNER_COLLECTION\n} from './common';\n\n// Define the payment schema spec\nexport const paymentSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n\n // Core payment fields (universal across ALL payment types)\n amount: z.number(),\n customer: z.string(),\n date: timestampRequired,\n source: z.enum(['app', 'webapp', 'platform']),\n invoice: z.string().optional(),\n fee: z.number().optional(),\n topup: z.boolean(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']).optional(), // 'pending' | 'processing' | 'completed' | 'failed'\n payment_intent_id: z.string().nullable().optional(), // Stripe PaymentIntent ID\n error_message: z.string().nullable().optional(), // Error message\n // Common resolved package specification (same format for all sources)\n package_specifications: z.array(z.object({\n package_type: z.string().optional(),\n package_size: z.string().optional(),\n package_duration: z.number().optional(),\n destination: z.string().optional(),\n iso3: z.string().optional(),\n })).optional(),\n\n // Reference fields\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n\n // Source-specific payment properties\n app_payment_properties: z.object({\n package: z.string().optional(), // package_id for app payments\n promo: z.string().optional(),\n iccid: z.string().optional(),\n global: z.string().optional(),\n balance_used: z.number().optional(),\n booking_id: z.string().nullable().optional(),\n discount_amount: z.string().optional(),\n is_special_offer: z.boolean().optional(),\n special_offer_discount: z.number().optional(),\n }).optional(),\n\n webapp_platform_payment_properties: z.object({\n promo_codes: z.array(z.string()).optional(),\n booking_id: z.string().optional(),\n partner: z.string().optional(),\n purchaseType: z.string().optional(),\n affiliateId: z.string().nullable().optional(),\n partner_name: z.string().optional(),\n locale: z.string().optional(),\n }).optional(),\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec, PARTNER_COLLECTION } from './common';\n\n// Country schema spec\nexport const analyticsSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n service: z.string(),\n date: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/), // YYYY-MM-DD\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n event: z.string(),\n parameter: z.string().nullable(),\n sum: z.number(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define the message schema spec\nexport const messageSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n key: z.string(),\n method: z.enum([\"push\", \"sms\", \"email\"]),\n status: z.enum([\"pending\", \"sent\", \"failed\", \"delivered\"]),\n created_at: timestampRequired,\n updated_at: timestampRequired\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const trafficPolicySpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n name: z.string(),\n description: z.string(),\n external_id: z.string(),\n provider: z.string()\n})","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n PARTNER_COLLECTION,\n TRAFFIC_POLICY_COLLECTION,\n timestampRequired,\n hubbyModelSpec\n} from './common';\n\nimport { countrySchemaSpec } from './country';\n\n// Define the package schema spec\nexport const packageSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n // Package specific fields\n external_id: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable(),\n label: z.string(),\n bytes: z.number(),\n hidden: z.boolean(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n price: z.number(),\n partner_price: z.number(),\n days: z.number(),\n name: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).nullable(),\n throttling: z.number().optional(),\n provider_parameters: z.object({\n imsi: z.number()\n }).nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Nested country data - need to use dynamic reference to country schema\n // This would typically be handled better with a proper recursive schema definition\n // but for simplicity, we're using any type here\n country_data: {\n _type: 'object' as const,\n of: countrySchemaSpec,\n nullable: true,\n optional: true\n }\n // country_data: z.any().nullable()\n});\n\nexport const commonPackageSchema = markAsSchemaSpec({\n size: z.string(),\n iso: z.string(),\n days: z.number(),\n price: z.number(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n packageType: z.string(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n});\n\nexport const telnaPackageSchema = markAsSchemaSpec({\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n ...commonPackageSchema,\n});\n\nexport const bondioPackageSchema = markAsSchemaSpec({\n ...commonPackageSchema,\n label: z.enum(['lambda', 'tau']),\n periodDays: z.number(),\n periodIterations: z.number(),\n throttling: z.number().optional().nullable(),\n \n});","import { z, ZodLazy } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema, SUPPORTED_LOCALES, SupportedLocales } from '../constants';\nimport {\n PARTNER_COLLECTION,\n USER_COLLECTION,\n PACKAGE_COLLECTION,\n PRICE_LIST_COLLECTION,\n tagModelSpec,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// ===== Helper schemas for nested structures =====\n\n// Address schema\nexport const addressSchema = z.object({\n street: z.string().nullable().optional(),\n city: z.string().nullable().optional(),\n postal_code: z.string().nullable().optional(),\n country: z.string().nullable().optional()\n});\n\n// Emit event schema\nexport const emitEventSchema = z.object({\n topup: z.boolean().optional().default(false),\n redemption: z.boolean().optional().default(false),\n activation: z.boolean().optional().default(false),\n depletion: z.boolean().optional().default(false),\n});\n\n// Registration schema\nexport const registrationSchema = z.object({\n chamber_of_commerce_number: z.string().nullable().optional(),\n vat_number: z.string().nullable().optional(),\n anvr_number: z.number().nullable().optional(),\n tax_number: z.string().nullable().optional()\n});\n\n// Banking details schema\nexport const bankingDetailsSchema = z.object({\n account_holder: z.string().nullable().optional(),\n billing_email: z.string().nullable().optional(),\n bank_name: z.string().nullable().optional(),\n iban: z.string().nullable().optional(),\n currency: z.string().nullable().optional()\n});\n\n// Package price schema\nexport const packagePriceSchema = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: z.object({ _type: z.literal('docRef'), collection: z.literal(PACKAGE_COLLECTION) })\n});\n\n// Package specification schema\nexport const packageSpecificationSchema = z.object({\n size: z.string().nullable().optional(),\n type: z.string().nullable().optional(),\n destination: z.string().nullable().optional()\n});\n\n// Pricing strategy schema\nexport const pricingStrategySchema = z.object({\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: z.object({\n _type: z.literal('docRef'),\n collection: z.literal(PRICE_LIST_COLLECTION),\n nullable: z.literal(true)\n }),\n custom_prices: z.array(packagePriceSchema)\n});\n\n// Visual identity banner schema\nexport const visualIdentityBannerSchema = z.object({\n action: z.string().nullable().optional(),\n image_url: z.string(),\n alt: z.string(),\n click_url: z.string(),\n locale: supportedLocalesSchema,\n properties: z.record(z.string())\n});\n\n// Schedule filter schema\nexport const scheduleFilterSchema = z.object({\n type: z.enum(['iso3', 'gender', 'percentage', 'age']),\n value: z.union([z.string(), z.number()]),\n comparison: z.enum([\n 'equal',\n 'not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal'\n ])\n});\n\n// Convert object-like schemas to proper Zod objects\nexport const visualIdentityBannersSchema = z.object({\n strategy: z.enum(['fixed', 'rotating', 'destination', 'time_of_day']),\n banners: z.array(visualIdentityBannerSchema).nullable().optional()\n});\n\nexport const visualIdentitySchema = z.object({\n primary_color: z.string(),\n secondary_color: z.string(),\n logo: z.string(),\n font: z.string().nullable().optional(),\n top_banner: visualIdentityBannersSchema.optional(),\n mid_banner: visualIdentityBannersSchema.optional()\n});\n\n// Partner contact schema\nexport const partnerContactSchema = z.object({\n name: z.string().nullable().optional(),\n email: z.string().nullable(),\n office_phone: z.string().nullable().optional(),\n office_email: z.string().nullable().optional()\n});\n\n// Partner data schema\nexport const partnerDataSchema = z.object({\n source: z.string(),\n manual: z.boolean()\n});\n\n// Package strategy schema\nexport const packageStrategySchema = z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any()\n});\n\n// Schedule email schema\nexport const scheduleEmailSchema = z.object({\n brevo_template_id: z.number(),\n subject: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional(),\n preview_text: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional()\n}).nullable().optional();\n\n// Schedule push schema\nexport const schedulePushSchema = z.object({\n title: z.record(z.string()).optional(),\n body: z.record(z.string()).optional(),\n target: z.string()\n}).nullable().optional();\n\n// Schedule schema\nexport const scheduleSchema = z.object({\n days: z.number(),\n email: scheduleEmailSchema,\n push: schedulePushSchema,\n hour: z.number(),\n key: z.string(),\n method: z.enum(['email', 'sms', 'whatsapp', 'push']),\n moment: z.enum(['departure_date', 'return_date', 'immediate']),\n filter: scheduleFilterSchema.nullable().optional()\n});\n\nexport const freeEsimSchema = z.object({\n enabled: z.boolean(),\n package_specification: z.object({\n size: z.string(),\n package_type: z.string(),\n destination: z.string(),\n package_duration: z.number(),\n type: z.string().nullable().optional()\n }),\n booking_id_verification: z.boolean().default(false),\n booking_id_verification_pattern: z.string().nullable().optional(),\n allowance: z.number(),\n total_allowance: z.number(),\n});\n\n// Agent signup settings schema\nexport const agentSignupSettingsSchema = z.object({\n slack_channel: z.string().nullable().optional(),\n welcome_email_template: z.number().nullable().optional(),\n password_reset_template: z.number().nullable().optional(),\n partner_type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n enable_complimentary_booking: z.boolean().default(true),\n complimentary_booking_partner_id: z.string().nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().default(true),\n source_partner_branding: z.boolean().default(false),\n own_branding: z.boolean().default(false)\n }).default({})\n});\n\n// Platform settings schema\nexport const platformSettingsSchema = z.object({\n package_strategy: z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any(),\n supported_package_types: z.enum(['data-limited', 'unlimited']).optional()\n }).nullable().optional(),\n free_esim: freeEsimSchema.nullable().optional(),\n booking_defaults: z.object({\n locale: supportedLocalesSchema\n }).nullable().optional(),\n booking_confirmation: z.object({\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n }).nullable().optional(),\n emit_events: emitEventSchema.nullable().optional(),\n schedules: z.array(scheduleSchema).optional(),\n brevo: z.object({\n list_ids: z.array(z.number()),\n campaign_mode: z.boolean()\n }).nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().optional().default(true),\n source_partner_branding: z.boolean().optional().default(false),\n own_branding: z.boolean().optional().default(false)\n }).nullable().optional(),\n agent_signup_settings: agentSignupSettingsSchema.nullable().optional(),\n upgrade_offer: z.object({\n enabled: z.boolean(),\n discount_percentage: z.number().min(0).max(100),\n }).nullable().optional()\n});\n\n// ===== Exportable schema specs =====\n\n// Package price schema spec\nexport const packagePriceSchemaSpec = markAsSchemaSpec({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n});\n\n// Financial properties schema spec\nexport const financialPropertiesSchemaSpec = markAsSchemaSpec({\n administration_fee: z.number().nullable(),\n income_per_gb: z.number().nullable(),\n commission_fee: z.number().nullable().optional(),\n commission_percentage: z.number().nullable().optional(),\n payment_method: z.enum(['invoice', 'direct']),\n requires_card: z.boolean().nullable(),\n next_invoice: timestampNullableOptional,\n last_invoice: timestampNullableOptional,\n pricing_strategies: {\n _type: 'object' as const,\n of: {\n partner: {\n _type: 'object' as const,\n of: {\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n },\n user: {\n _type: 'object' as const,\n of: {\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n }\n },\n nullable: true\n }\n});\n\n// Platform settings schema spec\nexport const platformSettingsSchemaSpec = markAsSchemaSpec({\n package_strategy: {\n _type: 'object' as const,\n of: packageStrategySchema.shape,\n nullable: true,\n optional: true\n },\n free_esim: {\n _type: 'object' as const,\n of: freeEsimSchema.shape,\n nullable: true,\n optional: true\n },\n booking_defaults: {\n _type: 'object' as const,\n of: {\n locale: supportedLocalesSchema\n },\n nullable: true,\n optional: true\n },\n booking_confirmation: {\n _type: 'object' as const,\n of: {\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n },\n nullable: true,\n optional: true\n },\n schedules: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: scheduleSchema.shape\n },\n optional: true\n },\n agent_signup_settings: {\n _type: 'object' as const,\n of: agentSignupSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\n// Webhook settings schema\nexport const webhookSettingsSchema = z.object({\n url: z.string().url().nullable().optional(),\n api_key: z.string().nullable().optional(),\n enabled: z.boolean().default(false),\n events: z.object({\n promocode_redemption: z.boolean().default(false)\n }).default({})\n});\n\n// ===== Main partner schema =====\nexport const partnerSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Partner specific fields\n name: z.string().min(3),\n type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n is_active: z.boolean().nullable().optional(),\n external_id: z.string().nullable().optional(),\n\n // Complex nested objects\n contact: {\n _type: 'object' as const,\n of: partnerContactSchema.shape,\n nullable: true\n },\n address: {\n _type: 'object' as const,\n of: addressSchema.shape,\n nullable: true\n },\n registration: {\n _type: 'object' as const,\n of: registrationSchema.shape,\n nullable: true\n },\n banking_details: {\n _type: 'object' as const,\n of: bankingDetailsSchema.shape,\n nullable: true\n },\n\n // Reference fields\n parent: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n users: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: USER_COLLECTION }, nullable: true },\n\n // Complex nested structures\n financial_properties: financialPropertiesSchemaSpec,\n // Visual identity\n visual_identity: {\n _type: 'object' as const,\n of: visualIdentitySchema.shape,\n nullable: true\n },\n\n // Platform settings\n platform_settings: {\n _type: 'object' as const,\n of: platformSettingsSchema.shape,\n nullable: true\n },\n\n // Tags\n tags: {\n _type: 'array' as const,\n of: tagModelSpec,\n nullable: true,\n optional: true\n },\n\n // Tag slugs\n tag_slugs: {\n _type: 'array' as const,\n of: z.string(),\n nullable: true,\n optional: true\n },\n\n // Metadata\n data: {\n _type: 'object' as const,\n of: partnerDataSchema.shape,\n nullable: true,\n optional: true\n },\n\n // Webhook settings\n webhook_settings: {\n _type: 'object' as const,\n of: webhookSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\nexport const priceListItemSchemaSpec = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: z.string(),\n});\n\n// Price list item with docRef support for use in priceListSchemaSpec\nconst priceListItemWithDocRefSpec = {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n};\n\n// ===== Price list schema =====\nexport const priceListSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Price list specific fields\n name: z.string().min(3),\n description: z.string().nullable(),\n type: z.enum(['partner', 'consumer']),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n price_list: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec,\n optional: true\n },\n package_prices: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec\n },\n});\n","import { z } from 'zod';\nimport { timestampRequired } from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const payloadSpec = {\n _type: 'record' as const,\n of: z.unknown(),\n optional: true\n};\n\nexport const apiLogSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n method: z.string(),\n user_id: z.string().optional(),\n path: z.string(),\n resource_type: z.string().optional(),\n resource_id: z.string().optional(),\n partner_id: z.string().optional(),\n payload: payloadSpec,\n timestamp: timestampRequired,\n status_code: z.number()\n});\n","import { z } from 'zod';\nimport { \n USER_TOUCHPOINTS_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullableOptional,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n PARTNER_COLLECTION\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const userTouchpointsSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n unique_device_identifier: z.string().nullable().optional(),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true, optional: true },\n promo_code: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n promo_code_redeemed_at: timestampNullableOptional,\n esim_assigned_at: timestampNullableOptional,\n esim_install_initiated_at: timestampNullableOptional,\n esim_install_completed_at: timestampNullableOptional,\n esim_first_package_activated_at: timestampNullableOptional,\n esim_topped_up_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n});\n","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullable\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\n\n// Package type schema for reward strategy\nexport const rewardPackageTypeSchema = z.enum(['data-limited', 'starter']);\nexport type RewardPackageType = z.infer;\n\n// Reward strategy base reward schema\nexport const baseRewardSchema = z.object({\n package_size: z.string(),\n package_type: rewardPackageTypeSchema\n});\n\nexport type BaseReward = z.infer;\n\n// Reward strategy multipliers schema\nexport const rewardMultipliersSchema = z.object({\n quality_based: z.number().optional(),\n completion_based: z.number().optional()\n}).optional();\n\nexport type RewardMultipliers = z.infer;\n\n// Reward strategy schema\nexport const rewardStrategySchema = z.object({\n base_reward: baseRewardSchema,\n multipliers: rewardMultipliersSchema\n});\n\nexport type RewardStrategy = z.infer;\n\n// Review schema spec\nexport const reviewSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n partner_id: z.string().nullable().optional(),\n questions: z.record(z.any()),\n reward_strategy: rewardStrategySchema,\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true }\n});\n\n// Review submission schema spec\nexport const reviewSubmissionSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n review: { _type: 'docRef' as const, collection: REVIEW_COLLECTION, nullable: true },\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true },\n questions: z.record(z.any()),\n iccid: z.string(),\n isAndroid: z.boolean(),\n country_id: z.string(),\n partner_id: z.string(),\n review_id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n analysis: z.record(z.any()).nullable().optional()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PACKAGE_TEMPLATE_COLLECTION,\n PARTNER_COLLECTION,\n timestampNullable,\n timestampRequired,\n TRAFFIC_POLICY_COLLECTION\n} from './common';\n\n// Destination schema spec\nexport const destinationSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n type: z.string(), // \"country\" or region names like \"Europe\", \"Asia\", \"Middle East\"\n iso3s: z.array(z.string()),\n name: z.string(),\n i18n_name: z.record(z.string()),\n is_active: z.boolean(),\n sort_order: z.number(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n\n// Destination offer schema spec\nexport const destinationBundleSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n parent_document_id: z.string(),\n type: z.enum(['unlimited', 'data-limited', 'starter']),\n label: z.string().nullable().optional(), //'5 Days' or '5GB'\n provider: z.enum(['telna', 'bondio']),\n\n duration_in_days: z.number(),\n duration_in_seconds: z.number(),\n \n size_in_bytes: z.number(),\n size_in_megabytes: z.number(),\n size_in_gigabytes: z.number(),\n\n package_template: { _type: 'docRef' as const, collection: PACKAGE_TEMPLATE_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n //All unlimited packages will have a traffic policy, but this only refers to telna bundles\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n b2c_price: z.number(),\n b2b_price: z.number(),\n partner_b2c_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n partner_b2b_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n is_active: z.boolean().default(true),\n is_visible: z.boolean().default(true), //All bundles that will have a partner will probably be invisible\n priority: z.number().default(10),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n deleted_at: timestampNullable,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n deleted_by: z.string().nullable()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n timestampRequired\n} from './common';\n\n// Package Template Schema Spec - unified schema for all providers\nexport const packageTemplateSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n provider: z.string(), // e.g., \"telna\", \"bondio\"\n type: z.string(),\n purchase_price: z.number(),\n external_id: z.string(),\n supported_countries: z.array(z.string()), // iso3 codes\n provider_specific_data: {\n _type: 'record' as const,\n of: z.any(),\n nullable: true,\n optional: true\n },\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, USER_COLLECTION } from './common';\n\n// Define the login request schema spec\nexport const loginRequestSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n email: z.string().email(),\n status: z.enum(['pending', 'completed', 'expired']),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n created_at: timestampRequired,\n expires_at: timestampRequired\n});\n","// firestoreTransformUtils.ts\n\nimport { z } from 'zod';\nimport { DocumentReference, Timestamp, Firestore } from 'firebase-admin/firestore';\nimport { FieldSpec } from '../types';\nimport { FirebaseService } from '../services/firebase';\n// Note: Firestore instance must be injected by consumers/tests via factory\n\nexport function createConvertJSToFirestore(db: Firestore) {\n return function convertJSToFirestore(input: any, spec: FieldSpec): any {\n // Handle null/undefined at the top level\n if (input === undefined || input === null) return null;\n\n if (spec instanceof z.ZodType) {\n if (input instanceof Date) return Timestamp.fromDate(input);\n return input; // already valid\n }\n\n if ('_type' in spec) {\n switch (spec._type) {\n case 'timestamp':\n if (input instanceof Date) {\n return Timestamp.fromDate(input);\n } else if (typeof input === 'string' || typeof input === 'number') {\n return Timestamp.fromDate(new Date(input));\n }\n return input;\n case 'docRef':\n return db.collection(spec.collection).doc(input);\n case 'array':\n return input.map((item: any) => convertJSToFirestore(item, spec.of));\n case 'record':\n // For records, filter out undefined values\n return Object.fromEntries(\n Object.entries(input)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => [k, convertJSToFirestore(v, spec.of)])\n );\n case 'object':\n if ('of' in spec && typeof spec.of === 'object') {\n const result: any = {};\n for (const [key, fieldSpec] of Object.entries(spec.of)) {\n // Check if the field exists in the input\n if (key in input) {\n const value = input[key];\n\n // Handle based on field optionality and nullability\n if (value === undefined) {\n // Check if field is optional by looking at its spec\n const isOptional = typeof fieldSpec === 'object' && '_type' in fieldSpec && fieldSpec._type === 'optional';\n if (!isOptional) {\n // If not optional but nullable, convert to null\n result[key] = null;\n }\n // If optional, just skip it (don't add to result)\n } else {\n // Normal case - value exists and is not undefined\n result[key] = convertJSToFirestore(value, fieldSpec);\n }\n }\n }\n return result;\n }\n return input;\n default:\n throw new Error(`Unknown field type: ${spec._type}`);\n }\n }\n\n // fallback: plain object shape with explicit schema\n if (typeof input === 'object' && !Array.isArray(input) && typeof spec === 'object') {\n const result: any = {};\n\n for (const [key, fieldSpec] of Object.entries(spec)) {\n if (key in input) {\n const value = input[key];\n\n // Handle undefined values\n if (value === undefined) {\n // Check if field is optional\n const isOptional = typeof fieldSpec === 'object' && '_type' in fieldSpec && fieldSpec._type === 'optional';\n if (!isOptional) {\n // If not optional but nullable, convert to null\n result[key] = null;\n }\n // If optional, don't include in the result\n } else {\n // Normal case - value exists\n result[key] = convertJSToFirestore(value, fieldSpec);\n }\n }\n }\n\n return result;\n }\n\n return input;\n };\n}\n\nfunction isDuckTimestamp(obj: any): obj is { toDate: () => Date } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj.toDate === 'function' &&\n Object.prototype.toString.call(obj.toDate()) === '[object Date]'\n );\n}\n\nfunction isRawFirestoreTimestamp(obj: any): obj is { _seconds: number; _nanoseconds: number } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj._seconds === 'number' &&\n typeof obj._nanoseconds === 'number'\n );\n}\n\nfunction isDuckDocumentRef(obj: any): obj is { id: string } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj.id === 'string' &&\n typeof obj.path === 'string'\n );\n}\n\nfunction isRawFirestoreDocumentRef(obj: any): obj is { _path: { segments: string[] } } {\n return (\n obj &&\n typeof obj === 'object' &&\n obj._path &&\n typeof obj._path === 'object' &&\n Array.isArray(obj._path.segments) &&\n obj._path.segments.length > 0\n );\n}\n\nexport function createConvertFirestoreToJS() {\n return function convertFirestoreToJS(input: any, spec: FieldSpec, path: string[] = []): any {\n const pathString = path.join('.') || '';\n\n // ✅ Convert Firestore-native or duck-typed Timestamp\n if (input instanceof Timestamp || isDuckTimestamp(input)) {\n return input.toDate();\n }\n\n // ✅ Convert raw Firestore timestamp objects\n if (isRawFirestoreTimestamp(input)) {\n const seconds = input._seconds || 0;\n const nanoseconds = input._nanoseconds || 0;\n const milliseconds = seconds * 1000 + Math.floor(nanoseconds / 1000000);\n return new Date(milliseconds);\n }\n\n // ✅ Convert Firestore-native or duck-typed DocumentReference\n if (input instanceof DocumentReference || isDuckDocumentRef(input)) {\n return input.id;\n }\n\n // ✅ Convert raw Firestore DocumentReference objects\n if (isRawFirestoreDocumentRef(input)) {\n // Extract document ID from the path segments (last segment)\n return input._path.segments[input._path.segments.length - 1];\n }\n\n if (input === null || input === undefined) return input;\n if (!spec) return input;\n\n if (spec instanceof z.ZodType) {\n // 🔁 Keep in place if it's already a native value\n return input;\n }\n\n if ('_type' in spec) {\n switch (spec._type) {\n case 'timestamp':\n if (input instanceof Timestamp || isDuckTimestamp(input)) {\n return input.toDate();\n }\n if (isRawFirestoreTimestamp(input)) {\n const seconds = input._seconds || 0;\n const nanoseconds = input._nanoseconds || 0;\n const milliseconds = seconds * 1000 + Math.floor(nanoseconds / 1000000);\n return new Date(milliseconds);\n }\n return input;\n\n case 'docRef':\n if (input instanceof DocumentReference || isDuckDocumentRef(input)) {\n return input.id;\n }\n if (isRawFirestoreDocumentRef(input)) {\n return input._path.segments[input._path.segments.length - 1];\n }\n return input;\n\n case 'array':\n return Array.isArray(input)\n ? input.map((item, i) => convertFirestoreToJS(item, spec.of, [...path, `[${i}]`]))\n : input;\n\n case 'record':\n if (typeof input !== 'object' || input === null) return input;\n return Object.fromEntries(\n Object.entries(input)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => [\n k,\n convertFirestoreToJS(v, spec.of, [...path, k]),\n ])\n );\n\n case 'object':\n if (!spec.of || typeof spec.of !== 'object') return input;\n const result: Record = {};\n for (const [key, fieldSpec] of Object.entries(spec.of)) {\n // Only include properties that exist in the input and aren't undefined\n if (key in input && input[key] !== undefined) {\n result[key] = convertFirestoreToJS(input[key], fieldSpec, [...path, key]);\n }\n }\n return result;\n }\n }\n\n if (typeof spec === 'object' && typeof input === 'object' && !Array.isArray(input)) {\n const result: Record = {};\n for (const [key, valSpec] of Object.entries(spec)) {\n // Only include properties that exist in the input and aren't undefined\n if (key in input && input[key] !== undefined) {\n result[key] = convertFirestoreToJS(input[key], valSpec, [...path, key]);\n }\n }\n return result;\n }\n\n return input;\n };\n}\n\n// For backward compatibility, export the default functions\nexport const convertFirestoreToJS = createConvertFirestoreToJS();\n\n// Backward-compatible helper that lazily uses injected default Firestore instance\nexport function convertJSToFirestore(input: any, spec: FieldSpec): any {\n const firestore = FirebaseService.getDefaultInstance().getFirestore();\n return createConvertJSToFirestore(firestore)(input, spec);\n}\n","import { z, ZodTypeAny } from 'zod';\nimport type { FieldSpec, SchemaFromSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\n\nexport function buildClientSchema(spec: S, path: string[] = []): SchemaFromSpec {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid schema spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec) as unknown as SchemaFromSpec;\n }\n\n // Check if object might be a Zod schema (has _def property or ~standard metadata)\n if (typeof spec === 'object' && spec !== null &&\n (('_def' in spec) || ('~standard' in spec && (spec as any)['~standard']?.vendor === 'zod'))) {\n try {\n // Try to use it as a Zod schema directly\n return wrapZodSchema(spec as unknown as z.ZodTypeAny) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this fails, we'll continue with the other checks\n console.warn(`Failed to use object as Zod schema at \"${pathString}\":`, error);\n }\n }\n\n // ----- Array -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.array(buildClientSchema(spec.of, [...path, '[i]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Record -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.record(buildClientSchema(spec.of, [...path, '[key]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Timestamp -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'timestamp') {\n let schema: ZodTypeAny = z.preprocess((val) => {\n if (typeof val === 'string') {\n // Try to parse the string to a Date object\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date; // undefined will cause z.date() to fail\n }\n if (typeof val === 'number') {\n // Handle numeric timestamps\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date;\n }\n // If it's already a Date or something else, return it as is\n return val;\n }, z.date({ required_error: 'Date is required', invalid_type_error: 'Invalid date format' }));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- DocRef -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'docRef') {\n let schema: ZodTypeAny = z.string(); // only ID on client\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Object (plain nested object spec) -----\n if (\n typeof spec === 'object' &&\n spec !== null &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || (typeof spec === 'object' && spec !== null && '_type' in spec && (spec as any)._type === 'object')) {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // If we have an object with fields that look like schema specs, try to handle it as a schema object\n if (typeof spec === 'object' && spec !== null) {\n try {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this also fails, we'll throw the error below\n console.warn(`Failed to handle object as plain schema at \"${pathString}\":`, error);\n }\n }\n\n // 🔥 If we got here, the spec had a structure we didn't handle\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n}\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional, PERMISSION_COLLECTION } from './common';\n\nexport const roleSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional } from './common';\n\nexport const permissionSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { buildClientSchema } from './builders/client';\nimport {\n userSchemaSpec,\n apiKeySpec,\n apiKeysSpec,\n apiKeysObjectSpec\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { bondioPackageSchema, packageSchemaSpec, telnaPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n financialPropertiesSchemaSpec as financialPropertiesSchema,\n packagePriceSchema,\n platformSettingsSchema,\n visualIdentitySchema,\n pricingStrategySchema,\n freeEsimSchema,\n} from './specs/partner';\nimport { analyticsSpec } from './specs/analytics';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { z } from 'zod';\nimport { roleSchemaSpec } from './specs/role';\nimport { permissionSchemaSpec } from './specs/permission';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\n\n\n/** ZOD SCHEMAS */\nexport const HUserSchema = buildClientSchema(userSchemaSpec);\nexport const HBookingSchema = buildClientSchema(bookingSchemaSpec);\nexport const HCountrySchema = buildClientSchema(countrySchemaSpec);\nexport const HCurrencySchema = buildClientSchema(currencySchemaSpec);\nexport const HESIMSchema = buildClientSchema(esimSchemaSpec);\nexport const HPaymentSchema = buildClientSchema(paymentSchemaSpec);\nexport const HMessageSchema = buildClientSchema(messageSchemaSpec);\nexport const HPackageSchema = buildClientSchema(packageSchemaSpec);\nexport const HPromoCodeSchema = buildClientSchema(promoCodeSchemaSpec);\nexport const HPartnerSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPriceListSchema = buildClientSchema(priceListSchemaSpec);\nexport const HFinancialPropertiesSchema = buildClientSchema(financialPropertiesSchema);\nexport const HApiLogSchema = buildClientSchema(apiLogSchemaSpec);\nexport const HPackagePriceSchema = buildClientSchema(packagePriceSchema);\nexport const HubbyModelSchema = buildClientSchema(hubbyModelSpec);\nexport const HPartnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPlatformSettingsSchema = buildClientSchema(platformSettingsSchema);\nexport const HVisualIdentitySchema = buildClientSchema(visualIdentitySchema);\nexport const HPricingStrategySchema = buildClientSchema(pricingStrategySchema);\nexport const HFreeEsimSchema = buildClientSchema(freeEsimSchema);\nexport const HAnalyticsSchema = buildClientSchema(analyticsSpec);\nexport const HRoleSchema = buildClientSchema(roleSchemaSpec);\nexport const HPermissionSchema = buildClientSchema(permissionSchemaSpec);\nexport const HTagSchema = buildClientSchema(tagModelSpec);\nexport const HTrafficPolicySchema = buildClientSchema(trafficPolicySpec);\nexport const HTelnaPackageSchema = buildClientSchema(telnaPackageSchema);\nexport const HBondioPackageSchema = buildClientSchema(bondioPackageSchema);\nexport const HReviewSchema = buildClientSchema(reviewSchemaSpec);\nexport const HReviewSubmissionSchema = buildClientSchema(reviewSubmissionSchemaSpec);\nexport const HDestinationSchema = buildClientSchema(destinationSchemaSpec);\nexport const HDestinationBundleSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const HPackageTemplateSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const HUserTouchpointsSchema = buildClientSchema(userTouchpointsSchemaSpec);\nexport const HLoginRequestSchema = buildClientSchema(loginRequestSchemaSpec);\n// Additional lower-level schemas\nexport const HAddressSchema = addressSchema;\nexport const HRegistrationSchema = registrationSchema;\nexport const HBankingDetailsSchema = bankingDetailsSchema;\nexport const HPartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const HPromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const HVisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const HScheduleFilterSchema = scheduleFilterSchema;\nexport const HPartnerContactSchema = partnerContactSchema;\nexport const HPartnerDataSchema = partnerDataSchema;\nexport const HCommunicationChannelSchema = communicationChannelSchema;\nexport const HBookingStatusSchema = bookingStatusSchema;\nexport const HCommunicationOptionsSchema = communicationOptionsSchema;\nexport const HRewardStrategySchema = rewardStrategySchema;\nexport const HBaseRewardSchema = baseRewardSchema;\nexport const HRewardMultipliersSchema = rewardMultipliersSchema;\nexport const HRewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type HAnalytics = z.infer;\nexport type HUser = z.infer;\nexport type HBooking = z.infer;\nexport type HCountry = z.infer;\nexport type HCurrency = z.infer;\nexport type HESIM = z.infer;\nexport type HPayment = z.infer;\nexport type HMessage = z.infer;\nexport type HPackage = z.infer;\nexport type HPromoCode = z.infer;\nexport type HPartner = z.infer;\nexport type HPriceList = z.infer;\nexport type HApiLog = z.infer;\nexport type HTag = z.infer;\nexport type HTrafficPolicy = z.infer;\nexport type HBondioPackage = z.infer;\nexport type HTelnaPackage = z.infer;\nexport type HReview = z.infer;\nexport type HReviewSubmission = z.infer;\nexport type HDestination = z.infer;\nexport type HDestinationBundle = z.infer;\nexport type HPackageTemplate = z.infer;\nexport type HUserTouchpoints = z.infer;\nexport type HLoginRequest = z.infer;\n// Additional lower-level types\nexport type HAddress = z.infer;\nexport type HRegistration = z.infer;\nexport type HBankingDetails = z.infer;\nexport type HPartnerPackageSpecification = z.infer;\nexport type HPromoPackageSpecification = z.infer;\nexport type HVisualIdentityBanner = z.infer;\nexport type HFinancialProperties = z.infer;\nexport type HScheduleFilter = z.infer;\nexport type HPartnerContact = z.infer;\nexport type HPartnerData = z.infer;\nexport type HCommunicationChannel = z.infer;\nexport type HBookingStatus = z.infer;\nexport type HCommunicationOptions = z.infer;\nexport type HRewardStrategy = z.infer;\nexport type HBaseReward = z.infer;\nexport type HRewardMultipliers = z.infer;\nexport type HRewardPackageType = z.infer;\nexport type HHubbyModel = z.infer;\n\nexport type HubbyModelApp = HHubbyModel;\n\nexport type SupportedLocales = typeof SUPPORTED_LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\nexport type HRole = z.infer;\nexport type HPermission = z.infer; ","import { Firestore } from 'firebase-admin/firestore';\nimport {\n createConvertJSToFirestore,\n createConvertFirestoreToJS\n} from './firestoreTransformUtils';\nimport { FieldSpec } from '../types';\n\n/**\n * Creates converter functions for a specific model type with dependency injection.\n * This lets you use the conversion functions with your own Firebase instance.\n * \n * @param db - Firestore instance to use for document references\n * @param modelSchemaSpec - Schema specification for the model\n * @returns Object with to/from Firestore conversion functions\n */\nexport function createModelConverters(\n db: Firestore,\n modelSchemaSpec: FieldSpec\n) {\n const convertToFirestore = createConvertJSToFirestore(db);\n const convertFromFirestore = createConvertFirestoreToJS();\n\n return {\n /**\n * Converts a model instance to Firestore format\n */\n toFirestore: (model: TModel): TFirestore => {\n return convertToFirestore(model, modelSchemaSpec);\n },\n\n /**\n * Converts Firestore data to a model instance\n */\n fromFirestore: (firestoreData: TFirestore): TModel => {\n return convertFromFirestore(firestoreData, modelSchemaSpec);\n }\n };\n} ","import { buildServerSchema } from './builders/server';\nimport {\n userSchemaSpec,\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { analyticsSpec } from './specs/analytics';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { packageSchemaSpec, telnaPackageSchema, bondioPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n visualIdentityBannersSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n scheduleSchema,\n visualIdentitySchema,\n packagePriceSchemaSpec,\n platformSettingsSchemaSpec\n} from './specs/partner';\n\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\nimport { z } from 'zod';\nimport { DocumentReference, Timestamp } from 'firebase-admin/firestore';\n\n\nimport { convertFirestoreToJS, convertJSToFirestore } from './utils/firestoreTransformUtils';\nimport { HPackage, HPartner, HPriceList, HPromoCode, HUserTouchpoints } from './index.client';\nimport { buildClientSchema } from './builders/client';\n\nexport {\n partnerSchemaSpec,\n analyticsSpec,\n packageSchemaSpec,\n userSchemaSpec,\n bookingSchemaSpec,\n countrySchemaSpec,\n currencySchemaSpec,\n esimSchemaSpec,\n paymentSchemaSpec,\n messageSchemaSpec,\n promoCodeSchemaSpec,\n priceListSchemaSpec,\n apiLogSchemaSpec,\n reviewSchemaSpec,\n reviewSubmissionSchemaSpec,\n destinationSchemaSpec,\n destinationBundleSchemaSpec,\n packageTemplateSchemaSpec,\n userTouchpointsSchemaSpec,\n loginRequestSchemaSpec\n};\n\n\n/** ZOD SCHEMAS */\nexport const UserSchema = buildServerSchema(userSchemaSpec);\nexport const UserFirestoreSchema = buildServerSchema(userSchemaSpec);\nexport const BookingSchema = buildServerSchema(bookingSchemaSpec);\nexport const CountrySchema = buildServerSchema(countrySchemaSpec);\nexport const CurrencySchema = buildServerSchema(currencySchemaSpec);\nexport const ESIMSchema = buildServerSchema(esimSchemaSpec);\nexport const PaymentSchema = buildServerSchema(paymentSchemaSpec);\nexport const MessageSchema = buildServerSchema(messageSchemaSpec);\nexport const PackageSchema = buildServerSchema(packageSchemaSpec);\nexport const PromoCodeSchema = buildServerSchema(promoCodeSchemaSpec);\nexport const PartnerSchema = buildServerSchema(partnerSchemaSpec);\nexport const PriceListSchema = buildServerSchema(priceListSchemaSpec);\nexport const ApiLogSchema = buildServerSchema(apiLogSchemaSpec);\nexport const VisualIdentitySchema = buildServerSchema(visualIdentitySchema);\nexport const PackagePriceSchema = buildServerSchema(packagePriceSchemaSpec);\nexport const PlatformSettingsSchema = buildServerSchema(platformSettingsSchemaSpec);\nexport const ScheduleSchema = buildServerSchema(scheduleSchema);\nexport const AnalyticsSchema = buildServerSchema(analyticsSpec);\nexport const TagSchema = buildServerSchema(tagModelSpec);\nexport const TelnaPackageSchema = buildServerSchema(telnaPackageSchema);\nexport const BondioPackageSchema = buildServerSchema(bondioPackageSchema);\nexport const TrafficPolicySchema = buildServerSchema(trafficPolicySpec);\nexport const ReviewSchema = buildServerSchema(reviewSchemaSpec);\nexport const ReviewSubmissionSchema = buildServerSchema(reviewSubmissionSchemaSpec);\nexport const DestinationSchema = buildServerSchema(destinationSchemaSpec);\nexport const DestinationBundleSchema = buildServerSchema(destinationBundleSchemaSpec);\nexport const PackageTemplateSchema = buildServerSchema(packageTemplateSchemaSpec);\nexport const UserTouchpointsSchema = buildServerSchema(userTouchpointsSchemaSpec);\nexport const LoginRequestSchema = buildServerSchema(loginRequestSchemaSpec);\n\n// Additional lower-level schemas\nexport const AddressSchema = addressSchema;\nexport const RegistrationSchema = registrationSchema;\nexport const BankingDetailsSchema = bankingDetailsSchema;\nexport const PartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const PromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const VisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const ScheduleFilterSchema = scheduleFilterSchema;\nexport const PartnerContactSchema = partnerContactSchema;\nexport const PartnerDataSchema = partnerDataSchema;\nexport const CommunicationChannelSchema = communicationChannelSchema;\nexport const BookingStatusSchema = bookingStatusSchema;\nexport const CommunicationOptionsSchema = communicationOptionsSchema;\nexport const VisualIdentityBannersSchema = visualIdentityBannersSchema;\nexport const RewardStrategySchema = rewardStrategySchema;\nexport const BaseRewardSchema = baseRewardSchema;\nexport const RewardMultipliersSchema = rewardMultipliersSchema;\nexport const RewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type User = z.infer;\nexport type UserFirestore = z.infer;\nexport type Booking = z.infer;\nexport type Country = z.infer;\nexport type Currency = z.infer;\nexport type ESIM = z.infer;\nexport type Payment = z.infer;\nexport type Message = z.infer;\nexport type Package = z.infer;\nexport type PromoCode = z.infer;\nexport type Partner = z.infer;\nexport type PriceList = z.infer;\nexport type ApiLog = z.infer;\nexport type Analytics = z.infer;\nexport type Schedule = z.infer;\nexport type TelnaPackage = z.infer;\nexport type BondioPackage = z.infer;\nexport type TrafficPolicy = z.infer;\nexport type Review = z.infer;\nexport type ReviewSubmission = z.infer;\nexport type Destination = z.infer;\nexport type DestinationBundle = z.infer;\nexport type PackageTemplate = z.infer;\nexport type UserTouchpoints = z.infer;\nexport type LoginRequest = z.infer;\n\n// Additional lower-level types\nexport type Address = z.infer;\nexport type Registration = z.infer;\nexport type BankingDetails = z.infer;\nexport type PartnerPackageSpecification = z.infer;\nexport type PackageSpecification = z.infer;\nexport type VisualIdentity = z.infer;\nexport type VisualIdentityBanner = z.infer;\nexport type VisualIdentityBanners = z.infer;\nexport type VisualIdentityBannerStrategy = VisualIdentityBanners;\nexport type ScheduleFilter = z.infer;\nexport type PartnerContact = z.infer;\nexport type PartnerData = z.infer;\nexport type CommunicationChannel = z.infer;\nexport type BookingStatus = z.infer;\nexport type CommunicationOptions = z.infer;\nexport type PackagePrice = z.infer;\nexport type PlatformSettings = z.infer;\nexport type RewardStrategy = z.infer;\nexport type BaseReward = z.infer;\nexport type RewardMultipliers = z.infer;\nexport type RewardPackageType = z.infer;\nexport type BookingApiRequest = Booking;\nexport type BookingApiResponse = Booking;\nexport type PartnerApiRequest = Partner;\nexport type PartnerApiResponse = Partner;\nexport type PriceListApiRequest = PriceList;\nexport type PriceListApiResponse = PriceList;\nexport type ApiLogApiRequest = ApiLog;\nexport type ApiLogApiResponse = ApiLog;\nexport type Tag = z.infer;\n\nexport * from './index.client';\n\nexport type HubbyModel = {\n id: string;\n created_at: Date;\n updated_at: Date | null;\n created_by: string;\n updated_by: string | null;\n}\n\nexport type HubbyModelFirestore = {\n id: string;\n created_at: Timestamp;\n updated_at: Timestamp | null;\n created_by: DocumentReference | null | string;\n updated_by: DocumentReference | null | string;\n}\n\nexport const partnerFromFirestore = (partner: Partner): HPartner => {\n return convertFirestoreToJS(partner, partnerSchemaSpec);\n}\n\nexport const partnerToFirestore = (partner: HPartner): Partner => {\n return convertJSToFirestore(partner, partnerSchemaSpec);\n}\n\nexport const userToFirestore = (user: User): UserFirestore => {\n return convertJSToFirestore(user, userSchemaSpec);\n}\n\nexport const userFromFirestore = (user: UserFirestore): User => {\n return convertFirestoreToJS(user, userSchemaSpec);\n}\n\nexport const priceListFromFirestore = (priceList: PriceList): HPriceList => {\n return convertFirestoreToJS(priceList, priceListSchemaSpec);\n}\n\nexport const priceListToFirestore = (priceList: HPriceList): PriceList => {\n return convertJSToFirestore(priceList, priceListSchemaSpec);\n}\n\nexport const promoCodeFromFirestore = (promoCode: PromoCode): HPromoCode => {\n return convertFirestoreToJS(promoCode, promoCodeSchemaSpec);\n}\n\nexport const promoCodeToFirestore = (promoCode: HPromoCode): PromoCode => {\n return convertJSToFirestore(promoCode, promoCodeSchemaSpec);\n}\n\nexport const userTouchpointsFromFirestore = (userTouchpoints: UserTouchpoints): HUserTouchpoints => {\n return convertFirestoreToJS(userTouchpoints, userTouchpointsSchemaSpec);\n}\n\nexport const userTouchpointsToFirestore = (userTouchpoints: HUserTouchpoints): UserTouchpoints => {\n return convertJSToFirestore(userTouchpoints, userTouchpointsSchemaSpec);\n}\n\n\nexport const bookingAppSchema = buildClientSchema(bookingSchemaSpec);\nexport const partnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const destinationAppSchema = buildClientSchema(destinationSchemaSpec);\nexport const destinationBundleAppSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const packageTemplateAppSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const promoPackageSpecificationAppSchema = buildClientSchema(promoPackageSpecificationSchema);\n// Export the type and constant\nexport type SupportedLocales = typeof LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\n// Dependency Injection exports\nexport { createModelConverters } from './utils/modelConverterFactory';\nexport { createConvertJSToFirestore, createConvertFirestoreToJS } from './utils/firestoreTransformUtils';\nexport { FirebaseService, createFirebaseService } from './services/firebase';\n\nexport { USER_COLLECTION, PACKAGE_COLLECTION, PARTNER_COLLECTION, BOOKING_COLLECTION, ROLE_COLLECTION, PERMISSION_COLLECTION, TRAFFIC_POLICY_COLLECTION, PROFILE_COLLECTION, PROMO_CODE_COLLECTION, COUNTRY_COLLECTION, ESIM_COLLECTION, PAYMENT_COLLECTION, PRICE_LIST_COLLECTION, MESSAGE_COLLECTION, CURRENCY_COLLECTION, API_LOG_COLLECTION, REVIEW_COLLECTION, REVIEW_SUBMISSION_COLLECTION, USER_TOUCHPOINTS_COLLECTION, DESTINATION_COLLECTION, DESTINATION_OFFER_COLLECTION } from './specs/common';\n\n"]} \ No newline at end of file +{"version":3,"sources":["../src/builders/server.ts","../src/common.ts","../src/services/firebase.ts","../src/specs/user.ts","../src/specs/common.ts","../src/specs/booking.ts","../src/constants.ts","../src/specs/promocode.ts","../src/specs/country.ts","../src/specs/currency.ts","../src/specs/esim.ts","../src/specs/payment.ts","../src/specs/analytics.ts","../src/specs/message.ts","../src/specs/traffic_policy.ts","../src/specs/package.ts","../src/specs/partner.ts","../src/specs/apiLogs.ts","../src/specs/userTouchpoints.ts","../src/specs/review.ts","../src/specs/destination.ts","../src/specs/package_template.ts","../src/specs/login_request.ts","../src/utils/firestoreTransformUtils.ts","../src/builders/client.ts","../src/specs/role.ts","../src/specs/permission.ts","../src/index.client.ts","../src/utils/modelConverterFactory.ts","../src/index.server.ts"],"names":["z","packageSpecificationSchema","REVIEW_COLLECTION","Timestamp","convertJSToFirestore","convertFirestoreToJS","SUPPORTED_LOCALES"],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { Timestamp } from 'firebase-admin/firestore';\nimport type { FieldSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\nimport { FirebaseService } from '../services/firebase';\n\nexport const buildServerSchema = (spec: FieldSpec, path: string[] = []): z.ZodTypeAny => {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod schema passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec);\n }\n\n // ----- Array -----\n if ('_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n\n const itemSchema =\n spec.of instanceof z.ZodType\n ? spec.of\n : buildServerSchema(spec.of, [...path, '[i]']);\n\n let arraySchema = z.array(itemSchema);\n if (spec.nullable) arraySchema = arraySchema.nullable();\n if (spec.optional) arraySchema = arraySchema.optional();\n return arraySchema;\n }\n\n // ----- Record -----\n if ('_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n\n const valueSchema =\n spec.of instanceof z.ZodType\n ? spec.of\n : buildServerSchema(spec.of, [...path, '[key]']);\n\n let recordSchema = z.record(valueSchema);\n if (spec.nullable) recordSchema = recordSchema.nullable();\n if (spec.optional) recordSchema = recordSchema.optional();\n return recordSchema;\n }\n\n // ----- Timestamp -----\n if ('_type' in spec && spec._type === 'timestamp') {\n let tsSchema = z.date().transform(date => Timestamp.fromDate(date));\n if (spec.nullable) tsSchema = tsSchema.nullable();\n if (spec.optional) tsSchema = tsSchema.optional();\n return tsSchema;\n }\n\n // ----- Document Reference -----\n if ('_type' in spec && spec._type === 'docRef') {\n let refSchema = z.string().transform(id => {\n const firestore = FirebaseService.getDefaultInstance().getFirestore()\n return firestore.collection(spec.collection).doc(id);\n });\n if (spec.nullable) refSchema = refSchema.nullable();\n if (spec.optional) refSchema = refSchema.optional();\n return refSchema;\n }\n\n // ----- Nested object shape -----\n if (typeof spec === 'object' && !('_type' in spec)) {\n const shape: Record = {};\n for (const [key, val] of Object.entries(spec)) {\n shape[key] = buildServerSchema(val, [...path, key]);\n }\n return z.object(shape);\n }\n\n // ----- Object -----\n if (\n typeof spec === 'object' &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildServerSchema);\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || typeof spec === 'object' && '_type' in spec && spec._type === 'object') {\n return wrapPlainObjectSchema(spec, path, buildServerSchema);\n }\n\n // ----- Unknown or malformed spec -----\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n};\n","import { ZodTypeAny, z } from 'zod';\nimport type { SchemaBuilder } from './types';\n\n/**\n * Ensures a Zod schema is wrapped to be optional and/or nullable,\n * if not already. Use this in recursive schema builders.\n * Also applies any other supported schema transformations provided in options.\n */\nexport function wrapZodSchema(\n schema: ZodTypeAny,\n options?: {\n optional?: boolean;\n nullable?: boolean;\n min?: number;\n max?: number;\n // Allow arbitrary extensions via dynamic property\n [key: string]: any;\n }\n): ZodTypeAny {\n if (!options) return schema;\n\n let wrapped = schema;\n\n // Handle nullable and optional specially since they're common\n if (options.nullable && !wrapped.isNullable?.()) {\n wrapped = wrapped.nullable();\n }\n\n if (options.optional && !wrapped.isOptional?.()) {\n wrapped = wrapped.optional();\n }\n\n // Process all other options dynamically\n for (const [key, value] of Object.entries(options)) {\n // Skip the already handled properties and undefined values\n if (['nullable', 'optional'].includes(key) || value === undefined) {\n continue;\n }\n\n // Check if the schema has a method matching the option key\n if (typeof (wrapped as any)[key] === 'function') {\n wrapped = (wrapped as any)[key](value);\n }\n }\n\n return wrapped;\n}\n\nexport function wrapObjectSchema(\n spec: any, // using any to support dynamic `spec.type === 'object'`\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n if (!('of' in spec)) {\n throw new Error(`Object spec at \"${pathString}\" is missing 'of'`);\n }\n\n const shape: Record = {};\n for (const [key, value] of Object.entries(spec.of)) {\n shape[key] = builder(value as any, [...path, key]);\n }\n\n let objectSchema: ZodTypeAny = z.object(shape);\n if (spec.nullable) objectSchema = objectSchema.nullable();\n if (spec.optional) objectSchema = objectSchema.optional();\n return objectSchema;\n}\n\n/**\n * Wraps a plain object shape (no `type: 'object'`) into a Zod schema.\n * Assumes each field is either a Zod schema or another FieldSpec.\n */\nexport function wrapPlainObjectSchema(\n spec: Record,\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n // Handle object field specs with '_type': 'object'\n if ('_type' in spec && spec._type === 'object' && 'of' in spec) {\n return wrapObjectSchema(spec, path, builder);\n }\n\n const shape: Record = {};\n\n // Only add fields to the schema if they're not special control properties\n for (const [key, val] of Object.entries(spec)) {\n if (key !== '_type' && key !== 'nullable' && key !== 'optional') {\n shape[key] = builder(val, [...path, key]);\n }\n }\n\n // Create the base object schema\n let schema: ZodTypeAny = z.object(shape);\n\n // Apply nullable/optional modifiers if needed\n if ('nullable' in spec && spec.nullable === true) {\n schema = schema.nullable();\n }\n\n if ('optional' in spec && spec.optional === true) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nexport const SCHEMA_MARKER = Symbol('ZodSchemaSpecMarker');\n\nexport function markAsSchemaSpec(spec: T): T {\n Object.defineProperty(spec, SCHEMA_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return spec;\n}\n\nexport function isSchemaSpec(obj: unknown): obj is Record {\n return typeof obj === 'object' && obj !== null && SCHEMA_MARKER in obj;\n}","import { getApps, initializeApp, cert, AppOptions, App } from \"firebase-admin/app\";\nimport { getFirestore, Firestore } from \"firebase-admin/firestore\";\nimport { applicationDefault } from \"firebase-admin/app\";\n\nexport interface FirebaseConfig {\n credential?: AppOptions['credential'];\n projectId?: string;\n storageBucket?: string;\n databaseURL?: string;\n // Options for testing\n isTest?: boolean;\n}\n\n// Define variable to hold singleton instance (must be injected by consumer/tests)\nlet defaultInstance: FirebaseService | null = null;\n\nexport class FirebaseService {\n\n private firestoreInstance: Firestore;\n constructor(db: Firestore) {\n this.firestoreInstance = db;\n }\n\n getFirestore(): Firestore {\n return this.firestoreInstance;\n }\n\n // Get default instance with singleton pattern\n public static getDefaultInstance(): FirebaseService {\n if (defaultInstance === null) {\n throw new Error(\n \"FirebaseService default instance not set. Inject a FirebaseService via FirebaseService.setDefaultInstance(...) in your application startup or test setup.\"\n );\n }\n return defaultInstance;\n }\n\n // Allow for setting a custom default instance (useful for tests)\n public static setDefaultInstance(instance: FirebaseService): void {\n defaultInstance = instance;\n }\n}\n\n// Function to create a new Firebase service instance (use in tests or by consumers before injection)\nexport function createFirebaseService(db: Firestore): FirebaseService {\n return new FirebaseService(db);\n}","import { z } from 'zod';\nimport { PARTNER_COLLECTION, PROFILE_COLLECTION, timestampNullableOptional, timestampRequired, timestampNullable, ROLE_COLLECTION, PERMISSION_COLLECTION } from './common';\nimport { markAsSchemaSpec } from '../common'\n\nexport const apiKeySpec = {\n expires_at: { _type: 'timestamp' as const },\n secret: z.string(),\n is_active: z.boolean(),\n}\n\nexport const apiKeysSpec = {\n _type: 'record' as const,\n of: {\n _type: 'object' as const,\n of: apiKeySpec\n }\n}\n\nexport const apiKeysObjectSpec = {\n _type: 'object' as const,\n of: {\n allowed_keys: { _type: 'array' as const, nullable: true, optional: true, of: z.string() },\n keys: apiKeysSpec\n },\n nullable: true,\n optional: true\n}\n\nexport const userSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string().nullable(),\n email: z.string().email().nullable(),\n stripe_id: z.string().nullable().optional(),\n referral: z.string().nullable().optional(),\n fcm: z.string().optional(),\n deeplink: z.string().nullable().optional(),\n gender: z.string().nullable().optional(),\n company: z.string().nullable().optional(),\n coordinates: z.string().nullable().optional(),\n platform: z.enum(['ios', 'android']).nullable().optional(),\n platform_version: z.string().nullable().optional(),\n device_type: z.string().nullable().optional(),\n app_version: z.string().nullable().optional(),\n parameters: z.any().nullable().optional(),\n locale: z.string().nullable().optional(),\n phone_model: z.string().nullable().optional(),\n phone_os: z.string().nullable().optional(),\n phone_os_version: z.string().nullable().optional(),\n ios: z.boolean().nullable().optional(),\n has_card_saved: z.boolean().nullable().optional(),\n admin: z.boolean().nullable().optional(),\n api_keys: apiKeysObjectSpec,\n profileRef: z.string().nullable().optional(),\n currency: z.string().nullable().optional(),\n receipt_email: z.string().nullable().optional(),\n source: z.enum(['direct', 'promo', 'platform']).nullable().optional(),\n role: { _type: 'docRef' as const, collection: ROLE_COLLECTION, optional: true, nullable: true },\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n balance: z.number().nullable().optional(),\n createdAt: { _type: 'timestamp' as const },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, optional: true, nullable: true },\n review_requested: timestampNullableOptional,\n last_seen: timestampNullableOptional,\n created_at: timestampNullableOptional,\n updated_at: timestampNullableOptional,\n created_by: z.string().nullable().optional(),\n updated_by: z.string().nullable().optional(),\n push_to_start_token: z.string().nullable().optional(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const PARTNER_COLLECTION = '/companies/hubby/partners';\nexport const USER_COLLECTION = 'users';\nexport const PROFILE_COLLECTION = '/companies/hubby/profiles';\nexport const PACKAGE_COLLECTION = '/companies/hubby/packages';\nexport const PACKAGE_TEMPLATE_COLLECTION = '/companies/hubby/package_templates';\nexport const PROMO_CODE_COLLECTION = '/companies/hubby/promo_codes';\nexport const COUNTRY_COLLECTION = 'countries';\nexport const ESIM_COLLECTION = 'esims';\nexport const PAYMENT_COLLECTION = 'payments';\nexport const PRICE_LIST_COLLECTION = 'price_lists';\nexport const BOOKING_COLLECTION = 'bookings';\nexport const MESSAGE_COLLECTION = 'messages';\nexport const CURRENCY_COLLECTION = 'currencies';\nexport const API_LOG_COLLECTION = 'api_logs'\nexport const ROLE_COLLECTION = 'roles';\nexport const PERMISSION_COLLECTION = 'permissions';\nexport const TRAFFIC_POLICY_COLLECTION = 'traffic_policies';\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\nexport const DESTINATION_COLLECTION = 'destinations';\nexport const DESTINATION_OFFER_COLLECTION = 'offers';\nexport const USER_TOUCHPOINTS_COLLECTION = 'user_touchpoints';\n\n\nexport const packageTypes = ['data-limited', 'time-limited', 'starter', 'unlimited'];\n\n// Timestamp specs\nexport const timestampNullableOptional = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampNullable = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampRequired = { _type: 'timestamp' as const, nullable: false, optional: false };\n\nexport const hubbyModelSpec = {\n id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n created_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n}\n\nexport const tagModelSpec = {\n ...hubbyModelSpec,\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n color: z.string().nullable().optional(),\n}","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n PROMO_CODE_COLLECTION,\n USER_COLLECTION,\n ESIM_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema } from '../constants';\nimport { packageSpecificationSchema } from './promocode';\n\n// Enum for communication channels\nexport const communicationChannelSchema = z.enum([\n 'EMAIL',\n 'WHATSAPP',\n 'PUSH_NOTIFICATION',\n 'SMS'\n]);\nexport type CommunicationChannelType = z.infer;\n\n// For backward compatibility\nexport type CommunicationChannel = CommunicationChannelType;\n\n// Add enum-like object for use in code\nexport const CommunicationChannel = {\n EMAIL: 'EMAIL' as const,\n WHATSAPP: 'WHATSAPP' as const,\n PUSH_NOTIFICATION: 'PUSH_NOTIFICATION' as const,\n SMS: 'SMS' as const\n} as const;\n\n// Status type for bookings\nexport const bookingStatusSchema = z.enum([\n 'PENDING',\n 'CONFIRMED',\n 'COMPLETED',\n 'CANCELLED',\n 'UNPAID',\n 'EXPIRED'\n]);\nexport type BookingStatus = z.infer;\n\n// Communication options schema\nexport const communicationOptionsSchema = z.object({\n should_send_message: z.boolean(),\n channels: z.array(communicationChannelSchema)\n});\n\nexport const financialInsightsSchema = z.object({\n partner_commission_percentage: z.number().nullable().optional(),\n total_commission_amount: z.number().nullable().optional(),\n price: z.number().nullable().optional(),\n}).nullable().optional()\n\nexport type CommunicationOptions = z.infer;\n\n// Define the booking schema spec\nexport const bookingSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n external_id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n title: z.string().nullable().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n full_name: z.string().nullable().optional(),\n pax: z.number().optional().nullable(),\n email: z.string().email().nullable().optional(),\n phone: z.string().nullable().optional(),\n booking_id: z.string().nullable().optional(),\n flight_number: z.string().optional(),\n gender: z.enum(['M', 'F', 'O']).optional(),\n sent_messages: z.record(z.any()).optional(),\n locale: supportedLocalesSchema,\n status: bookingStatusSchema.optional().nullable(),\n data: {\n _type: 'object' as const,\n of: {\n source: z.string(),\n manual: z.boolean(),\n action: z.string().nullable().optional()\n },\n nullable: true,\n optional: true\n },\n communication_options: {\n _type: 'object' as const,\n of: {\n should_send_message: z.boolean(),\n channels: {\n _type: 'array' as const,\n of: communicationChannelSchema\n }\n }\n },\n is_processed_for_esim_restoration: z.boolean().optional().nullable(),\n is_pseudonymized: z.boolean().optional().nullable(),\n import_id: z.string().nullable().optional(),\n package_specifications: z.array(packageSpecificationSchema).min(1),\n departure_date: timestampRequired,\n return_date: timestampNullable,\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION },\n financial_insights: financialInsightsSchema,\n promo_codes: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION },\n nullable: true,\n optional: true\n },\n users: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: USER_COLLECTION },\n nullable: true,\n optional: true\n },\n esims: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: ESIM_COLLECTION },\n nullable: true,\n optional: true\n },\n hubby_foreign_identifiers: z.object({\n messaging_contact_id: z.string().nullable()\n }).nullable().optional()\n});\n\n","import { z } from \"zod\";\n\nexport const SUPPORTED_LOCALES = [\n \"en-US\",\n \"en-EU\",\n \"en-GB\",\n \"en-CA\",\n \"nl-NL\",\n \"de-DE\",\n \"fr-FR\",\n \"fr-CA\",\n \"it-IT\",\n \"es-ES\",\n \"cs-CZ\",\n \"pl-PL\",\n \"pt-PT\",\n \"fr-BE\",\n \"nl-BE\",\n \"de-AT\",\n \"de-CH\",\n \"fr-CH\",\n \"it-CH\",\n \"sv-SE\",\n \"sk-SK\",\n \"de-BE\",\n \"en-AU\",\n \"da-DK\",\n \"ko-KR\",\n] as const;\n\n// Define the type using TypeScript's typeof and indexing\n\n// Define the type using TypeScript's typeof and indexing\nexport type SupportedLocales = (typeof SUPPORTED_LOCALES)[number];\n\n// Create a Zod schema for validation\nexport const supportedLocalesSchema = z.enum(SUPPORTED_LOCALES);\n\n// Type inference from the schema (alternative way to define the type)\nexport type SupportedLocalesFromSchema = z.infer;\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n PACKAGE_COLLECTION,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// Define package specification schema for use in promo code\nexport const packageSpecificationSchema = z.object({\n destination: z.string().optional().or(z.array(z.string())),\n iso3: z.string().optional(),\n size: z.string().optional(),\n package_id: z.string().optional(),\n bundle_id: z.string().optional(),\n iata_code: z.string().optional(),\n package_duration: z.number().optional(),\n package_type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).optional(),\n traffic_policy: z.string().optional(),\n});\n\n// Define the promo code schema spec\nexport const promoCodeSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n redeemed_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // PromoCode specific fields\n uuid: z.string().uuid().nullable().optional(),\n external_id: z.string(),\n code: z.string(),\n claimed_at: timestampNullableOptional,\n allowance_user: z.number(),\n allowance_total: z.number(),\n type: z.enum(['discount', 'booking', 'booking_without_destination']).nullable().or(z.string()),\n usage: z.array(z.string()),\n uuid_usage: z.array(z.string()),\n package_specification: packageSpecificationSchema.optional(),\n valid_from: timestampRequired,\n valid_to: timestampRequired,\n\n // Reference fields\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION, nullable: true },\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true },\n\n // Optional fields based on the type\n discount: z.number().optional(),\n package_size: z.string().optional(),\n countries: z.array(z.string()).optional(),\n max_bytes: z.number().optional(),\n starter_data: z.number().optional()\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const countrySchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n bokun_id: z.number().nullable(),\n LTE: z.boolean().nullable(),\n apn: z.string().nullable(),\n click_count: z.number().nullable(),\n global_network: z.string().nullable(),\n global_price: z.number().nullable(),\n hubby: z.number().nullable(),\n imsi: z.number().nullable(),\n has_esim: z.boolean(),\n name: z.string().nullable(),\n region: z.boolean().nullable(),\n i18n_name: z.record(z.string()),\n is_region: z.boolean().nullable(),\n countries: z.array(z.string()).nullable(),\n tier: z.number().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define schema for conversion rates (for backward compatibility)\nexport const conversionRateSchema = z.object({\n currency: z.number()\n});\n\nexport type CoversionRate = z.infer;\n\n// Define the currency schema spec\nexport const currencySchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n // ISO 4217 currency code (e.g., \"USD\", \"EUR\")\n code: z.string().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n // Currency symbol (e.g., \"$\", \"€\")\n symbol: z.string().describe('Currency symbol (e.g., \"$\", \"€\")'),\n // Full name of the currency (e.g., \"US Dollar\")\n name: z.string().describe('Full name of the currency (e.g., \"US Dollar\")'),\n // Exchange rate relative to base currency\n rate: z.number().describe('Exchange rate relative to base currency'),\n // Whether this is the default currency\n is_default: z.boolean().describe('Whether this is the default currency')\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n PARTNER_COLLECTION,\n PAYMENT_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\n\n\nexport const statusHistorySchema = z.object({\n telna_esim_status: z.number(),\n source: z.string(),\n status: z.string(),\n timestamp: timestampRequired as unknown as z.ZodType,\n})\n\nexport const esimStatusHistorySchema = markAsSchemaSpec(z.array(statusHistorySchema).nullable().optional());\n\n// Define the eSIM schema spec\nexport const esimSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Common eSIM fields\n imsi: z.number(),\n qr: z.string(),\n iccid: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable().optional(),\n total_data: z.number(),\n data_left: z.number(),\n uuid: z.string().uuid().nullable().optional(),\n data_used: z.boolean(),\n status: z.string().nullable(),\n status_history: esimStatusHistorySchema,\n status_updated_at: timestampNullable,\n name: z.string(),\n android_auto: z.boolean(),\n partner_price: z.number().nullable(),\n promo: z.string().nullable(),\n type: z.enum(['api', 'promo', 'balance', 'code', 'external', 'payment']),\n is_auto_install: z.boolean(),\n is_archived: z.boolean(),\n user: z.string().nullable(),\n payment: z.string().nullable(),\n apn: z.string().nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Timestamp fields\n time_assigned: timestampNullable,\n last_updated: timestampNullable\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n USER_COLLECTION,\n timestampRequired,\n hubbyModelSpec,\n PARTNER_COLLECTION\n} from './common';\n\n// Define the payment schema spec\nexport const paymentSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n\n // Core payment fields (universal across ALL payment types)\n amount: z.number(),\n customer: z.string(),\n date: timestampRequired,\n source: z.enum(['app', 'webapp', 'platform']),\n invoice: z.string().optional(),\n fee: z.number().optional(),\n topup: z.boolean(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']).optional(), // 'pending' | 'processing' | 'completed' | 'failed'\n payment_intent_id: z.string().nullable().optional(), // Stripe PaymentIntent ID\n error_message: z.string().nullable().optional(), // Error message\n // Common resolved package specification (same format for all sources)\n package_specifications: z.array(z.object({\n package_type: z.string().optional(),\n package_size: z.string().optional(),\n package_duration: z.number().optional(),\n destination: z.string().optional(),\n iso3: z.string().optional(),\n })).optional(),\n\n // Reference fields\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n\n // Source-specific payment properties\n app_payment_properties: z.object({\n package: z.string().optional(), // package_id for app payments\n promo: z.string().optional(),\n iccid: z.string().optional(),\n global: z.string().optional(),\n balance_used: z.number().optional(),\n booking_id: z.string().nullable().optional(),\n discount_amount: z.string().optional(),\n is_special_offer: z.boolean().optional(),\n special_offer_discount: z.number().optional(),\n }).optional(),\n\n webapp_platform_payment_properties: z.object({\n promo_codes: z.array(z.string()).optional(),\n booking_id: z.string().optional(),\n partner: z.string().optional(),\n purchaseType: z.string().optional(),\n affiliateId: z.string().nullable().optional(),\n partner_name: z.string().optional(),\n locale: z.string().optional(),\n }).optional(),\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec, PARTNER_COLLECTION } from './common';\n\n// Country schema spec\nexport const analyticsSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n service: z.string(),\n date: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/), // YYYY-MM-DD\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n event: z.string(),\n parameter: z.string().nullable(),\n sum: z.number(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define the message schema spec\nexport const messageSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n key: z.string(),\n method: z.enum([\"push\", \"sms\", \"email\"]),\n status: z.enum([\"pending\", \"sent\", \"failed\", \"delivered\"]),\n created_at: timestampRequired,\n updated_at: timestampRequired\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const trafficPolicySpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n name: z.string(),\n description: z.string(),\n external_id: z.string(),\n provider: z.string()\n})","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n PARTNER_COLLECTION,\n TRAFFIC_POLICY_COLLECTION,\n timestampRequired,\n hubbyModelSpec\n} from './common';\n\nimport { countrySchemaSpec } from './country';\n\n// Define the package schema spec\nexport const packageSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n // Package specific fields\n external_id: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable(),\n label: z.string(),\n bytes: z.number(),\n hidden: z.boolean(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n price: z.number(),\n partner_price: z.number(),\n days: z.number(),\n name: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).nullable(),\n throttling: z.number().optional(),\n provider_parameters: z.object({\n imsi: z.number()\n }).nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Nested country data - need to use dynamic reference to country schema\n // This would typically be handled better with a proper recursive schema definition\n // but for simplicity, we're using any type here\n country_data: {\n _type: 'object' as const,\n of: countrySchemaSpec,\n nullable: true,\n optional: true\n }\n // country_data: z.any().nullable()\n});\n\nexport const commonPackageSchema = markAsSchemaSpec({\n size: z.string(),\n iso: z.string(),\n days: z.number(),\n price: z.number(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n packageType: z.string(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n});\n\nexport const telnaPackageSchema = markAsSchemaSpec({\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n ...commonPackageSchema,\n});\n\nexport const bondioPackageSchema = markAsSchemaSpec({\n ...commonPackageSchema,\n label: z.enum(['lambda', 'tau']),\n periodDays: z.number(),\n periodIterations: z.number(),\n throttling: z.number().optional().nullable(),\n \n});","import { z, ZodLazy } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema, SUPPORTED_LOCALES, SupportedLocales } from '../constants';\nimport {\n PARTNER_COLLECTION,\n USER_COLLECTION,\n PACKAGE_COLLECTION,\n PRICE_LIST_COLLECTION,\n tagModelSpec,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// ===== Helper schemas for nested structures =====\n\n// Address schema\nexport const addressSchema = z.object({\n street: z.string().nullable().optional(),\n city: z.string().nullable().optional(),\n postal_code: z.string().nullable().optional(),\n country: z.string().nullable().optional()\n});\n\n// Emit event schema\nexport const emitEventSchema = z.object({\n topup: z.boolean().optional().default(false),\n redemption: z.boolean().optional().default(false),\n activation: z.boolean().optional().default(false),\n depletion: z.boolean().optional().default(false),\n});\n\n// Registration schema\nexport const registrationSchema = z.object({\n chamber_of_commerce_number: z.string().nullable().optional(),\n vat_number: z.string().nullable().optional(),\n anvr_number: z.number().nullable().optional(),\n tax_number: z.string().nullable().optional()\n});\n\n// Banking details schema\nexport const bankingDetailsSchema = z.object({\n account_holder: z.string().nullable().optional(),\n billing_email: z.string().nullable().optional(),\n bank_name: z.string().nullable().optional(),\n iban: z.string().nullable().optional(),\n currency: z.string().nullable().optional()\n});\n\n// Package price schema\nexport const packagePriceSchema = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: z.object({ _type: z.literal('docRef'), collection: z.literal(PACKAGE_COLLECTION) })\n});\n\n// Package specification schema\nexport const packageSpecificationSchema = z.object({\n size: z.string().nullable().optional(),\n type: z.string().nullable().optional(),\n destination: z.string().nullable().optional()\n});\n\n// Pricing strategy schema\nexport const pricingStrategySchema = z.object({\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: z.object({\n _type: z.literal('docRef'),\n collection: z.literal(PRICE_LIST_COLLECTION),\n nullable: z.literal(true)\n }),\n custom_prices: z.array(packagePriceSchema)\n});\n\n// Visual identity banner schema\nexport const visualIdentityBannerSchema = z.object({\n action: z.string().nullable().optional(),\n image_url: z.string(),\n alt: z.string(),\n click_url: z.string(),\n locale: supportedLocalesSchema,\n properties: z.record(z.string())\n});\n\n// Schedule filter schema\nexport const scheduleFilterSchema = z.object({\n type: z.enum(['iso3', 'gender', 'percentage', 'age']),\n value: z.union([z.string(), z.number()]),\n comparison: z.enum([\n 'equal',\n 'not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal'\n ])\n});\n\n// Convert object-like schemas to proper Zod objects\nexport const visualIdentityBannersSchema = z.object({\n strategy: z.enum(['fixed', 'rotating', 'destination', 'time_of_day']),\n banners: z.array(visualIdentityBannerSchema).nullable().optional()\n});\n\nexport const visualIdentitySchema = z.object({\n primary_color: z.string(),\n secondary_color: z.string(),\n logo: z.string(),\n font: z.string().nullable().optional(),\n top_banner: visualIdentityBannersSchema.optional(),\n mid_banner: visualIdentityBannersSchema.optional()\n});\n\n// Partner contact schema\nexport const partnerContactSchema = z.object({\n name: z.string().nullable().optional(),\n email: z.string().nullable(),\n office_phone: z.string().nullable().optional(),\n office_email: z.string().nullable().optional()\n});\n\n// Partner data schema\nexport const partnerDataSchema = z.object({\n source: z.string(),\n manual: z.boolean()\n});\n\n// Package strategy schema\nexport const packageStrategySchema = z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any()\n});\n\n// Schedule email schema\nexport const scheduleEmailSchema = z.object({\n brevo_template_id: z.number(),\n subject: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional(),\n preview_text: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional()\n}).nullable().optional();\n\n// Schedule push schema\nexport const schedulePushSchema = z.object({\n title: z.record(z.string()).optional(),\n body: z.record(z.string()).optional(),\n target: z.string()\n}).nullable().optional();\n\n// Schedule schema\nexport const scheduleSchema = z.object({\n days: z.number(),\n email: scheduleEmailSchema,\n push: schedulePushSchema,\n hour: z.number(),\n key: z.string(),\n method: z.enum(['email', 'sms', 'whatsapp', 'push']),\n moment: z.enum(['departure_date', 'return_date', 'immediate']),\n filter: scheduleFilterSchema.nullable().optional()\n});\n\nexport const freeEsimSchema = z.object({\n enabled: z.boolean(),\n package_specification: z.object({\n size: z.string(),\n package_type: z.string(),\n destination: z.string(),\n package_duration: z.number(),\n type: z.string().nullable().optional()\n }),\n booking_id_verification: z.boolean().default(false),\n booking_id_verification_pattern: z.string().nullable().optional(),\n allowance: z.number(),\n total_allowance: z.number(),\n});\n\n// Agent signup settings schema\nexport const agentSignupSettingsSchema = z.object({\n slack_channel: z.string().nullable().optional(),\n welcome_email_template: z.number().nullable().optional(),\n password_reset_template: z.number().nullable().optional(),\n partner_type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n enable_complimentary_booking: z.boolean().default(true),\n complimentary_booking_partner_id: z.string().nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().default(true),\n source_partner_branding: z.boolean().default(false),\n own_branding: z.boolean().default(false)\n }).default({})\n});\n\n// Platform settings schema\nexport const platformSettingsSchema = z.object({\n package_strategy: z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any(),\n supported_package_types: z.enum(['data-limited', 'unlimited']).optional()\n }).nullable().optional(),\n free_esim: freeEsimSchema.nullable().optional(),\n booking_defaults: z.object({\n locale: supportedLocalesSchema\n }).nullable().optional(),\n booking_confirmation: z.object({\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n }).nullable().optional(),\n emit_events: emitEventSchema.nullable().optional(),\n schedules: z.array(scheduleSchema).optional(),\n brevo: z.object({\n list_ids: z.array(z.number()),\n campaign_mode: z.boolean()\n }).nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().optional().default(true),\n source_partner_branding: z.boolean().optional().default(false),\n own_branding: z.boolean().optional().default(false)\n }).nullable().optional(),\n agent_signup_settings: agentSignupSettingsSchema.nullable().optional(),\n upgrade_offer: z.object({\n enabled: z.boolean(),\n discount_percentage: z.number().min(0).max(100),\n }).nullable().optional()\n});\n\n// ===== Exportable schema specs =====\n\n// Package price schema spec\nexport const packagePriceSchemaSpec = markAsSchemaSpec({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n});\n\n// Financial properties schema spec\nexport const financialPropertiesSchemaSpec = markAsSchemaSpec({\n administration_fee: z.number().nullable(),\n income_per_gb: z.number().nullable(),\n commission_fee: z.number().nullable().optional(),\n commission_percentage: z.number().nullable().optional(),\n payment_method: z.enum(['invoice', 'direct']),\n requires_card: z.boolean().nullable(),\n next_invoice: timestampNullableOptional,\n last_invoice: timestampNullableOptional,\n pricing_strategies: {\n _type: 'object' as const,\n of: {\n partner: {\n _type: 'object' as const,\n of: {\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n },\n user: {\n _type: 'object' as const,\n of: {\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n }\n },\n nullable: true\n }\n});\n\n// Platform settings schema spec\nexport const platformSettingsSchemaSpec = markAsSchemaSpec({\n package_strategy: {\n _type: 'object' as const,\n of: packageStrategySchema.shape,\n nullable: true,\n optional: true\n },\n free_esim: {\n _type: 'object' as const,\n of: freeEsimSchema.shape,\n nullable: true,\n optional: true\n },\n booking_defaults: {\n _type: 'object' as const,\n of: {\n locale: supportedLocalesSchema\n },\n nullable: true,\n optional: true\n },\n booking_confirmation: {\n _type: 'object' as const,\n of: {\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n },\n nullable: true,\n optional: true\n },\n schedules: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: scheduleSchema.shape\n },\n optional: true\n },\n agent_signup_settings: {\n _type: 'object' as const,\n of: agentSignupSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\n// Webhook settings schema\nexport const webhookSettingsSchema = z.object({\n url: z.string().url().nullable().optional(),\n api_key: z.string().nullable().optional(),\n enabled: z.boolean().default(false),\n events: z.object({\n promocode_redemption: z.boolean().default(false)\n }).default({})\n});\n\n// ===== Main partner schema =====\nexport const partnerSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Partner specific fields\n name: z.string().min(3),\n type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n is_active: z.boolean().nullable().optional(),\n external_id: z.string().nullable().optional(),\n\n // Complex nested objects\n contact: {\n _type: 'object' as const,\n of: partnerContactSchema.shape,\n nullable: true\n },\n address: {\n _type: 'object' as const,\n of: addressSchema.shape,\n nullable: true\n },\n registration: {\n _type: 'object' as const,\n of: registrationSchema.shape,\n nullable: true\n },\n banking_details: {\n _type: 'object' as const,\n of: bankingDetailsSchema.shape,\n nullable: true\n },\n\n // Reference fields\n parent: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n users: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: USER_COLLECTION }, nullable: true },\n\n // Complex nested structures\n financial_properties: financialPropertiesSchemaSpec,\n // Visual identity\n visual_identity: {\n _type: 'object' as const,\n of: visualIdentitySchema.shape,\n nullable: true\n },\n\n // Platform settings\n platform_settings: {\n _type: 'object' as const,\n of: platformSettingsSchema.shape,\n nullable: true\n },\n\n // Tags\n tags: {\n _type: 'array' as const,\n of: tagModelSpec,\n nullable: true,\n optional: true\n },\n\n // Tag slugs\n tag_slugs: {\n _type: 'array' as const,\n of: z.string(),\n nullable: true,\n optional: true\n },\n\n // Metadata\n data: {\n _type: 'object' as const,\n of: partnerDataSchema.shape,\n nullable: true,\n optional: true\n },\n\n // Webhook settings\n webhook_settings: {\n _type: 'object' as const,\n of: webhookSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\nexport const priceListItemSchemaSpec = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: z.string(),\n});\n\n// Price list item with docRef support for use in priceListSchemaSpec\nconst priceListItemWithDocRefSpec = {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n};\n\n// ===== Price list schema =====\nexport const priceListSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Price list specific fields\n name: z.string().min(3),\n description: z.string().nullable(),\n type: z.enum(['partner', 'consumer']),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n price_list: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec,\n optional: true\n },\n package_prices: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec\n },\n});\n","import { z } from 'zod';\nimport { timestampRequired } from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const payloadSpec = {\n _type: 'record' as const,\n of: z.unknown(),\n optional: true\n};\n\nexport const apiLogSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n method: z.string(),\n user_id: z.string().optional(),\n path: z.string(),\n resource_type: z.string().optional(),\n resource_id: z.string().optional(),\n partner_id: z.string().optional(),\n payload: payloadSpec,\n timestamp: timestampRequired,\n status_code: z.number()\n});\n","import { z } from 'zod';\nimport { \n USER_TOUCHPOINTS_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullableOptional,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n PARTNER_COLLECTION\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const userTouchpointsSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n unique_device_identifier: z.string().nullable().optional(),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true, optional: true },\n promo_code: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n promo_code_redeemed_at: timestampNullableOptional,\n esim_assigned_at: timestampNullableOptional,\n esim_install_initiated_at: timestampNullableOptional,\n esim_install_completed_at: timestampNullableOptional,\n esim_first_package_activated_at: timestampNullableOptional,\n esim_topped_up_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n});\n","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullable\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\n\n// Package type schema for reward strategy\nexport const rewardPackageTypeSchema = z.enum(['data-limited', 'starter']);\nexport type RewardPackageType = z.infer;\n\n// Reward strategy base reward schema\nexport const baseRewardSchema = z.object({\n package_size: z.string(),\n package_type: rewardPackageTypeSchema\n});\n\nexport type BaseReward = z.infer;\n\n// Reward strategy multipliers schema\nexport const rewardMultipliersSchema = z.object({\n quality_based: z.number().optional(),\n completion_based: z.number().optional()\n}).optional();\n\nexport type RewardMultipliers = z.infer;\n\n// Reward strategy schema\nexport const rewardStrategySchema = z.object({\n base_reward: baseRewardSchema,\n multipliers: rewardMultipliersSchema\n});\n\nexport type RewardStrategy = z.infer;\n\n// Review schema spec\nexport const reviewSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n partner_id: z.string().nullable().optional(),\n questions: z.record(z.any()),\n reward_strategy: rewardStrategySchema,\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true }\n});\n\n// Review submission schema spec\nexport const reviewSubmissionSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n review: { _type: 'docRef' as const, collection: REVIEW_COLLECTION, nullable: true },\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true },\n questions: z.record(z.any()),\n iccid: z.string(),\n isAndroid: z.boolean(),\n country_id: z.string(),\n partner_id: z.string(),\n review_id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n analysis: z.record(z.any()).nullable().optional()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PACKAGE_TEMPLATE_COLLECTION,\n PARTNER_COLLECTION,\n timestampNullable,\n timestampRequired,\n TRAFFIC_POLICY_COLLECTION\n} from './common';\n\n// Destination schema spec\nexport const destinationSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n type: z.string(), // \"country\" or region names like \"Europe\", \"Asia\", \"Middle East\"\n iso3s: z.array(z.string()),\n name: z.string(),\n i18n_name: z.record(z.string()),\n is_active: z.boolean(),\n sort_order: z.number(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n\n// Destination offer schema spec\nexport const destinationBundleSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n parent_document_id: z.string(),\n type: z.enum(['unlimited', 'data-limited', 'starter']),\n label: z.string().nullable().optional(), //'5 Days' or '5GB'\n provider: z.enum(['telna', 'bondio']),\n\n duration_in_days: z.number(),\n duration_in_seconds: z.number(),\n \n size_in_bytes: z.number(),\n size_in_megabytes: z.number(),\n size_in_gigabytes: z.number(),\n\n package_template: { _type: 'docRef' as const, collection: PACKAGE_TEMPLATE_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n //All unlimited packages will have a traffic policy, but this only refers to telna bundles\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n b2c_price: z.number(),\n b2b_price: z.number(),\n partner_b2c_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n partner_b2b_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n is_active: z.boolean().default(true),\n is_visible: z.boolean().default(true), //All bundles that will have a partner will probably be invisible\n priority: z.number().default(10),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n deleted_at: timestampNullable,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n deleted_by: z.string().nullable()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n timestampRequired\n} from './common';\n\n// Package Template Schema Spec - unified schema for all providers\nexport const packageTemplateSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n provider: z.string(), // e.g., \"telna\", \"bondio\"\n type: z.string(),\n purchase_price: z.number(),\n external_id: z.string(),\n supported_countries: z.array(z.string()), // iso3 codes\n provider_specific_data: {\n _type: 'record' as const,\n of: z.any(),\n nullable: true,\n optional: true\n },\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, USER_COLLECTION } from './common';\n\n// Define the login request schema spec\nexport const loginRequestSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n email: z.string().email(),\n status: z.enum(['pending', 'completed', 'expired']),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n created_at: timestampRequired,\n expires_at: timestampRequired\n});\n","// firestoreTransformUtils.ts\n\nimport { z } from 'zod';\nimport { DocumentReference, Timestamp, Firestore } from 'firebase-admin/firestore';\nimport { FieldSpec } from '../types';\nimport { FirebaseService } from '../services/firebase';\n// Note: Firestore instance must be injected by consumers/tests via factory\n\nexport function createConvertJSToFirestore(db: Firestore) {\n return function convertJSToFirestore(input: any, spec: FieldSpec): any {\n // Handle null/undefined at the top level\n if (input === undefined || input === null) return null;\n\n if (spec instanceof z.ZodType) {\n if (input instanceof Date) return Timestamp.fromDate(input);\n return input; // already valid\n }\n\n if ('_type' in spec) {\n switch (spec._type) {\n case 'timestamp':\n if (input instanceof Date) {\n return Timestamp.fromDate(input);\n } else if (typeof input === 'string' || typeof input === 'number') {\n return Timestamp.fromDate(new Date(input));\n }\n return input;\n case 'docRef':\n return db.collection(spec.collection).doc(input);\n case 'array':\n return input.map((item: any) => convertJSToFirestore(item, spec.of));\n case 'record':\n // For records, filter out undefined values\n return Object.fromEntries(\n Object.entries(input)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => [k, convertJSToFirestore(v, spec.of)])\n );\n case 'object':\n if ('of' in spec && typeof spec.of === 'object') {\n const result: any = {};\n for (const [key, fieldSpec] of Object.entries(spec.of)) {\n // Check if the field exists in the input\n if (key in input) {\n const value = input[key];\n\n // Handle based on field optionality and nullability\n if (value === undefined) {\n // Check if field is optional by looking at its spec\n const isOptional = typeof fieldSpec === 'object' && '_type' in fieldSpec && fieldSpec._type === 'optional';\n if (!isOptional) {\n // If not optional but nullable, convert to null\n result[key] = null;\n }\n // If optional, just skip it (don't add to result)\n } else {\n // Normal case - value exists and is not undefined\n result[key] = convertJSToFirestore(value, fieldSpec);\n }\n }\n }\n return result;\n }\n return input;\n default:\n throw new Error(`Unknown field type: ${spec._type}`);\n }\n }\n\n // fallback: plain object shape with explicit schema\n if (typeof input === 'object' && !Array.isArray(input) && typeof spec === 'object') {\n const result: any = {};\n\n for (const [key, fieldSpec] of Object.entries(spec)) {\n if (key in input) {\n const value = input[key];\n\n // Handle undefined values\n if (value === undefined) {\n // Check if field is optional\n const isOptional = typeof fieldSpec === 'object' && '_type' in fieldSpec && fieldSpec._type === 'optional';\n if (!isOptional) {\n // If not optional but nullable, convert to null\n result[key] = null;\n }\n // If optional, don't include in the result\n } else {\n // Normal case - value exists\n result[key] = convertJSToFirestore(value, fieldSpec);\n }\n }\n }\n\n return result;\n }\n\n return input;\n };\n}\n\nfunction isDuckTimestamp(obj: any): obj is { toDate: () => Date } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj.toDate === 'function' &&\n Object.prototype.toString.call(obj.toDate()) === '[object Date]'\n );\n}\n\nfunction isRawFirestoreTimestamp(obj: any): obj is { _seconds: number; _nanoseconds: number } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj._seconds === 'number' &&\n typeof obj._nanoseconds === 'number'\n );\n}\n\nfunction isDuckDocumentRef(obj: any): obj is { id: string } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj.id === 'string' &&\n typeof obj.path === 'string'\n );\n}\n\nfunction isRawFirestoreDocumentRef(obj: any): obj is { _path: { segments: string[] } } {\n return (\n obj &&\n typeof obj === 'object' &&\n obj._path &&\n typeof obj._path === 'object' &&\n Array.isArray(obj._path.segments) &&\n obj._path.segments.length > 0\n );\n}\n\nexport function createConvertFirestoreToJS() {\n return function convertFirestoreToJS(input: any, spec: FieldSpec, path: string[] = []): any {\n const pathString = path.join('.') || '';\n\n // ✅ Convert Firestore-native or duck-typed Timestamp\n if (input instanceof Timestamp || isDuckTimestamp(input)) {\n return input.toDate();\n }\n\n // ✅ Convert raw Firestore timestamp objects\n if (isRawFirestoreTimestamp(input)) {\n const seconds = input._seconds || 0;\n const nanoseconds = input._nanoseconds || 0;\n const milliseconds = seconds * 1000 + Math.floor(nanoseconds / 1000000);\n return new Date(milliseconds);\n }\n\n // ✅ Convert Firestore-native or duck-typed DocumentReference\n if (input instanceof DocumentReference || isDuckDocumentRef(input)) {\n return input.id;\n }\n\n // ✅ Convert raw Firestore DocumentReference objects\n if (isRawFirestoreDocumentRef(input)) {\n // Extract document ID from the path segments (last segment)\n return input._path.segments[input._path.segments.length - 1];\n }\n\n if (input === null || input === undefined) return input;\n if (!spec) return input;\n\n if (spec instanceof z.ZodType) {\n // 🔁 Keep in place if it's already a native value\n return input;\n }\n\n if ('_type' in spec) {\n switch (spec._type) {\n case 'timestamp':\n if (input instanceof Timestamp || isDuckTimestamp(input)) {\n return input.toDate();\n }\n if (isRawFirestoreTimestamp(input)) {\n const seconds = input._seconds || 0;\n const nanoseconds = input._nanoseconds || 0;\n const milliseconds = seconds * 1000 + Math.floor(nanoseconds / 1000000);\n return new Date(milliseconds);\n }\n return input;\n\n case 'docRef':\n if (input instanceof DocumentReference || isDuckDocumentRef(input)) {\n return input.id;\n }\n if (isRawFirestoreDocumentRef(input)) {\n return input._path.segments[input._path.segments.length - 1];\n }\n return input;\n\n case 'array':\n return Array.isArray(input)\n ? input.map((item, i) => convertFirestoreToJS(item, spec.of, [...path, `[${i}]`]))\n : input;\n\n case 'record':\n if (typeof input !== 'object' || input === null) return input;\n return Object.fromEntries(\n Object.entries(input)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => [\n k,\n convertFirestoreToJS(v, spec.of, [...path, k]),\n ])\n );\n\n case 'object':\n if (!spec.of || typeof spec.of !== 'object') return input;\n const result: Record = {};\n for (const [key, fieldSpec] of Object.entries(spec.of)) {\n // Only include properties that exist in the input and aren't undefined\n if (key in input && input[key] !== undefined) {\n result[key] = convertFirestoreToJS(input[key], fieldSpec, [...path, key]);\n }\n }\n return result;\n }\n }\n\n if (typeof spec === 'object' && typeof input === 'object' && !Array.isArray(input)) {\n const result: Record = {};\n for (const [key, valSpec] of Object.entries(spec)) {\n // Only include properties that exist in the input and aren't undefined\n if (key in input && input[key] !== undefined) {\n result[key] = convertFirestoreToJS(input[key], valSpec, [...path, key]);\n }\n }\n return result;\n }\n\n return input;\n };\n}\n\n// For backward compatibility, export the default functions\nexport const convertFirestoreToJS = createConvertFirestoreToJS();\n\n// Backward-compatible helper that lazily uses injected default Firestore instance\nexport function convertJSToFirestore(input: any, spec: FieldSpec): any {\n const firestore = FirebaseService.getDefaultInstance().getFirestore();\n return createConvertJSToFirestore(firestore)(input, spec);\n}\n","import { z, ZodTypeAny } from 'zod';\nimport type { FieldSpec, SchemaFromSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\n\nexport function buildClientSchema(spec: S, path: string[] = []): SchemaFromSpec {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid schema spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec) as unknown as SchemaFromSpec;\n }\n\n // Check if object might be a Zod schema (has _def property or ~standard metadata)\n if (typeof spec === 'object' && spec !== null &&\n (('_def' in spec) || ('~standard' in spec && (spec as any)['~standard']?.vendor === 'zod'))) {\n try {\n // Try to use it as a Zod schema directly\n return wrapZodSchema(spec as unknown as z.ZodTypeAny) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this fails, we'll continue with the other checks\n console.warn(`Failed to use object as Zod schema at \"${pathString}\":`, error);\n }\n }\n\n // ----- Array -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.array(buildClientSchema(spec.of, [...path, '[i]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Record -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.record(buildClientSchema(spec.of, [...path, '[key]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Timestamp -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'timestamp') {\n let schema: ZodTypeAny = z.preprocess((val) => {\n if (typeof val === 'string') {\n // Try to parse the string to a Date object\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date; // undefined will cause z.date() to fail\n }\n if (typeof val === 'number') {\n // Handle numeric timestamps\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date;\n }\n // If it's already a Date or something else, return it as is\n return val;\n }, z.date({ required_error: 'Date is required', invalid_type_error: 'Invalid date format' }));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- DocRef -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'docRef') {\n let schema: ZodTypeAny = z.string(); // only ID on client\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Object (plain nested object spec) -----\n if (\n typeof spec === 'object' &&\n spec !== null &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || (typeof spec === 'object' && spec !== null && '_type' in spec && (spec as any)._type === 'object')) {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // If we have an object with fields that look like schema specs, try to handle it as a schema object\n if (typeof spec === 'object' && spec !== null) {\n try {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this also fails, we'll throw the error below\n console.warn(`Failed to handle object as plain schema at \"${pathString}\":`, error);\n }\n }\n\n // 🔥 If we got here, the spec had a structure we didn't handle\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n}\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional, PERMISSION_COLLECTION } from './common';\n\nexport const roleSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional } from './common';\n\nexport const permissionSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { buildClientSchema } from './builders/client';\nimport {\n userSchemaSpec,\n apiKeySpec,\n apiKeysSpec,\n apiKeysObjectSpec\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { bondioPackageSchema, packageSchemaSpec, telnaPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n financialPropertiesSchemaSpec as financialPropertiesSchema,\n packagePriceSchema,\n platformSettingsSchema,\n visualIdentitySchema,\n pricingStrategySchema,\n freeEsimSchema,\n} from './specs/partner';\nimport { analyticsSpec } from './specs/analytics';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { z } from 'zod';\nimport { roleSchemaSpec } from './specs/role';\nimport { permissionSchemaSpec } from './specs/permission';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\n\n\n/** ZOD SCHEMAS */\nexport const HUserSchema = buildClientSchema(userSchemaSpec);\nexport const HBookingSchema = buildClientSchema(bookingSchemaSpec);\nexport const HCountrySchema = buildClientSchema(countrySchemaSpec);\nexport const HCurrencySchema = buildClientSchema(currencySchemaSpec);\nexport const HESIMSchema = buildClientSchema(esimSchemaSpec);\nexport const HPaymentSchema = buildClientSchema(paymentSchemaSpec);\nexport const HMessageSchema = buildClientSchema(messageSchemaSpec);\nexport const HPackageSchema = buildClientSchema(packageSchemaSpec);\nexport const HPromoCodeSchema = buildClientSchema(promoCodeSchemaSpec);\nexport const HPartnerSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPriceListSchema = buildClientSchema(priceListSchemaSpec);\nexport const HFinancialPropertiesSchema = buildClientSchema(financialPropertiesSchema);\nexport const HApiLogSchema = buildClientSchema(apiLogSchemaSpec);\nexport const HPackagePriceSchema = buildClientSchema(packagePriceSchema);\nexport const HubbyModelSchema = buildClientSchema(hubbyModelSpec);\nexport const HPartnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPlatformSettingsSchema = buildClientSchema(platformSettingsSchema);\nexport const HVisualIdentitySchema = buildClientSchema(visualIdentitySchema);\nexport const HPricingStrategySchema = buildClientSchema(pricingStrategySchema);\nexport const HFreeEsimSchema = buildClientSchema(freeEsimSchema);\nexport const HAnalyticsSchema = buildClientSchema(analyticsSpec);\nexport const HRoleSchema = buildClientSchema(roleSchemaSpec);\nexport const HPermissionSchema = buildClientSchema(permissionSchemaSpec);\nexport const HTagSchema = buildClientSchema(tagModelSpec);\nexport const HTrafficPolicySchema = buildClientSchema(trafficPolicySpec);\nexport const HTelnaPackageSchema = buildClientSchema(telnaPackageSchema);\nexport const HBondioPackageSchema = buildClientSchema(bondioPackageSchema);\nexport const HReviewSchema = buildClientSchema(reviewSchemaSpec);\nexport const HReviewSubmissionSchema = buildClientSchema(reviewSubmissionSchemaSpec);\nexport const HDestinationSchema = buildClientSchema(destinationSchemaSpec);\nexport const HDestinationBundleSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const HPackageTemplateSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const HUserTouchpointsSchema = buildClientSchema(userTouchpointsSchemaSpec);\nexport const HLoginRequestSchema = buildClientSchema(loginRequestSchemaSpec);\n// Additional lower-level schemas\nexport const HAddressSchema = addressSchema;\nexport const HRegistrationSchema = registrationSchema;\nexport const HBankingDetailsSchema = bankingDetailsSchema;\nexport const HPartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const HPromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const HVisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const HScheduleFilterSchema = scheduleFilterSchema;\nexport const HPartnerContactSchema = partnerContactSchema;\nexport const HPartnerDataSchema = partnerDataSchema;\nexport const HCommunicationChannelSchema = communicationChannelSchema;\nexport const HBookingStatusSchema = bookingStatusSchema;\nexport const HCommunicationOptionsSchema = communicationOptionsSchema;\nexport const HRewardStrategySchema = rewardStrategySchema;\nexport const HBaseRewardSchema = baseRewardSchema;\nexport const HRewardMultipliersSchema = rewardMultipliersSchema;\nexport const HRewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type HAnalytics = z.infer;\nexport type HUser = z.infer;\nexport type HBooking = z.infer;\nexport type HCountry = z.infer;\nexport type HCurrency = z.infer;\nexport type HESIM = z.infer;\nexport type HPayment = z.infer;\nexport type HMessage = z.infer;\nexport type HPackage = z.infer;\nexport type HPromoCode = z.infer;\nexport type HPartner = z.infer;\nexport type HPriceList = z.infer;\nexport type HApiLog = z.infer;\nexport type HTag = z.infer;\nexport type HTrafficPolicy = z.infer;\nexport type HBondioPackage = z.infer;\nexport type HTelnaPackage = z.infer;\nexport type HReview = z.infer;\nexport type HReviewSubmission = z.infer;\nexport type HDestination = z.infer;\nexport type HDestinationBundle = z.infer;\nexport type HPackageTemplate = z.infer;\nexport type HUserTouchpoints = z.infer;\nexport type HLoginRequest = z.infer;\n// Additional lower-level types\nexport type HAddress = z.infer;\nexport type HRegistration = z.infer;\nexport type HBankingDetails = z.infer;\nexport type HPartnerPackageSpecification = z.infer;\nexport type HPromoPackageSpecification = z.infer;\nexport type HVisualIdentityBanner = z.infer;\nexport type HFinancialProperties = z.infer;\nexport type HScheduleFilter = z.infer;\nexport type HPartnerContact = z.infer;\nexport type HPartnerData = z.infer;\nexport type HCommunicationChannel = z.infer;\nexport type HBookingStatus = z.infer;\nexport type HCommunicationOptions = z.infer;\nexport type HRewardStrategy = z.infer;\nexport type HBaseReward = z.infer;\nexport type HRewardMultipliers = z.infer;\nexport type HRewardPackageType = z.infer;\nexport type HHubbyModel = z.infer;\n\nexport type HubbyModelApp = HHubbyModel;\n\nexport type SupportedLocales = typeof SUPPORTED_LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\nexport type HRole = z.infer;\nexport type HPermission = z.infer; ","import { Firestore } from 'firebase-admin/firestore';\nimport {\n createConvertJSToFirestore,\n createConvertFirestoreToJS\n} from './firestoreTransformUtils';\nimport { FieldSpec } from '../types';\n\n/**\n * Creates converter functions for a specific model type with dependency injection.\n * This lets you use the conversion functions with your own Firebase instance.\n * \n * @param db - Firestore instance to use for document references\n * @param modelSchemaSpec - Schema specification for the model\n * @returns Object with to/from Firestore conversion functions\n */\nexport function createModelConverters(\n db: Firestore,\n modelSchemaSpec: FieldSpec\n) {\n const convertToFirestore = createConvertJSToFirestore(db);\n const convertFromFirestore = createConvertFirestoreToJS();\n\n return {\n /**\n * Converts a model instance to Firestore format\n */\n toFirestore: (model: TModel): TFirestore => {\n return convertToFirestore(model, modelSchemaSpec);\n },\n\n /**\n * Converts Firestore data to a model instance\n */\n fromFirestore: (firestoreData: TFirestore): TModel => {\n return convertFromFirestore(firestoreData, modelSchemaSpec);\n }\n };\n} ","import { buildServerSchema } from './builders/server';\nimport {\n userSchemaSpec,\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { analyticsSpec } from './specs/analytics';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { packageSchemaSpec, telnaPackageSchema, bondioPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n visualIdentityBannersSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n scheduleSchema,\n visualIdentitySchema,\n packagePriceSchemaSpec,\n platformSettingsSchemaSpec\n} from './specs/partner';\n\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\nimport { z } from 'zod';\nimport { DocumentReference, Timestamp } from 'firebase-admin/firestore';\n\n\nimport { convertFirestoreToJS, convertJSToFirestore } from './utils/firestoreTransformUtils';\nimport { HPackage, HPartner, HPriceList, HPromoCode, HUserTouchpoints } from './index.client';\nimport { buildClientSchema } from './builders/client';\n\nexport {\n partnerSchemaSpec,\n analyticsSpec,\n packageSchemaSpec,\n userSchemaSpec,\n bookingSchemaSpec,\n countrySchemaSpec,\n currencySchemaSpec,\n esimSchemaSpec,\n paymentSchemaSpec,\n messageSchemaSpec,\n promoCodeSchemaSpec,\n priceListSchemaSpec,\n apiLogSchemaSpec,\n reviewSchemaSpec,\n reviewSubmissionSchemaSpec,\n destinationSchemaSpec,\n destinationBundleSchemaSpec,\n packageTemplateSchemaSpec,\n userTouchpointsSchemaSpec,\n loginRequestSchemaSpec\n};\n\n\n/** ZOD SCHEMAS */\nexport const UserSchema = buildServerSchema(userSchemaSpec);\nexport const UserFirestoreSchema = buildServerSchema(userSchemaSpec);\nexport const BookingSchema = buildServerSchema(bookingSchemaSpec);\nexport const CountrySchema = buildServerSchema(countrySchemaSpec);\nexport const CurrencySchema = buildServerSchema(currencySchemaSpec);\nexport const ESIMSchema = buildServerSchema(esimSchemaSpec);\nexport const PaymentSchema = buildServerSchema(paymentSchemaSpec);\nexport const MessageSchema = buildServerSchema(messageSchemaSpec);\nexport const PackageSchema = buildServerSchema(packageSchemaSpec);\nexport const PromoCodeSchema = buildServerSchema(promoCodeSchemaSpec);\nexport const PartnerSchema = buildServerSchema(partnerSchemaSpec);\nexport const PriceListSchema = buildServerSchema(priceListSchemaSpec);\nexport const ApiLogSchema = buildServerSchema(apiLogSchemaSpec);\nexport const VisualIdentitySchema = buildServerSchema(visualIdentitySchema);\nexport const PackagePriceSchema = buildServerSchema(packagePriceSchemaSpec);\nexport const PlatformSettingsSchema = buildServerSchema(platformSettingsSchemaSpec);\nexport const ScheduleSchema = buildServerSchema(scheduleSchema);\nexport const AnalyticsSchema = buildServerSchema(analyticsSpec);\nexport const TagSchema = buildServerSchema(tagModelSpec);\nexport const TelnaPackageSchema = buildServerSchema(telnaPackageSchema);\nexport const BondioPackageSchema = buildServerSchema(bondioPackageSchema);\nexport const TrafficPolicySchema = buildServerSchema(trafficPolicySpec);\nexport const ReviewSchema = buildServerSchema(reviewSchemaSpec);\nexport const ReviewSubmissionSchema = buildServerSchema(reviewSubmissionSchemaSpec);\nexport const DestinationSchema = buildServerSchema(destinationSchemaSpec);\nexport const DestinationBundleSchema = buildServerSchema(destinationBundleSchemaSpec);\nexport const PackageTemplateSchema = buildServerSchema(packageTemplateSchemaSpec);\nexport const UserTouchpointsSchema = buildServerSchema(userTouchpointsSchemaSpec);\nexport const LoginRequestSchema = buildServerSchema(loginRequestSchemaSpec);\n\n// Additional lower-level schemas\nexport const AddressSchema = addressSchema;\nexport const RegistrationSchema = registrationSchema;\nexport const BankingDetailsSchema = bankingDetailsSchema;\nexport const PartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const PromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const VisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const ScheduleFilterSchema = scheduleFilterSchema;\nexport const PartnerContactSchema = partnerContactSchema;\nexport const PartnerDataSchema = partnerDataSchema;\nexport const CommunicationChannelSchema = communicationChannelSchema;\nexport const BookingStatusSchema = bookingStatusSchema;\nexport const CommunicationOptionsSchema = communicationOptionsSchema;\nexport const VisualIdentityBannersSchema = visualIdentityBannersSchema;\nexport const RewardStrategySchema = rewardStrategySchema;\nexport const BaseRewardSchema = baseRewardSchema;\nexport const RewardMultipliersSchema = rewardMultipliersSchema;\nexport const RewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type User = z.infer;\nexport type UserFirestore = z.infer;\nexport type Booking = z.infer;\nexport type Country = z.infer;\nexport type Currency = z.infer;\nexport type ESIM = z.infer;\nexport type Payment = z.infer;\nexport type Message = z.infer;\nexport type Package = z.infer;\nexport type PromoCode = z.infer;\nexport type Partner = z.infer;\nexport type PriceList = z.infer;\nexport type ApiLog = z.infer;\nexport type Analytics = z.infer;\nexport type Schedule = z.infer;\nexport type TelnaPackage = z.infer;\nexport type BondioPackage = z.infer;\nexport type TrafficPolicy = z.infer;\nexport type Review = z.infer;\nexport type ReviewSubmission = z.infer;\nexport type Destination = z.infer;\nexport type DestinationBundle = z.infer;\nexport type PackageTemplate = z.infer;\nexport type UserTouchpoints = z.infer;\nexport type LoginRequest = z.infer;\n\n// Additional lower-level types\nexport type Address = z.infer;\nexport type Registration = z.infer;\nexport type BankingDetails = z.infer;\nexport type PartnerPackageSpecification = z.infer;\nexport type PackageSpecification = z.infer;\nexport type VisualIdentity = z.infer;\nexport type VisualIdentityBanner = z.infer;\nexport type VisualIdentityBanners = z.infer;\nexport type VisualIdentityBannerStrategy = VisualIdentityBanners;\nexport type ScheduleFilter = z.infer;\nexport type PartnerContact = z.infer;\nexport type PartnerData = z.infer;\nexport type CommunicationChannel = z.infer;\nexport type BookingStatus = z.infer;\nexport type CommunicationOptions = z.infer;\nexport type PackagePrice = z.infer;\nexport type PlatformSettings = z.infer;\nexport type RewardStrategy = z.infer;\nexport type BaseReward = z.infer;\nexport type RewardMultipliers = z.infer;\nexport type RewardPackageType = z.infer;\nexport type BookingApiRequest = Booking;\nexport type BookingApiResponse = Booking;\nexport type PartnerApiRequest = Partner;\nexport type PartnerApiResponse = Partner;\nexport type PriceListApiRequest = PriceList;\nexport type PriceListApiResponse = PriceList;\nexport type ApiLogApiRequest = ApiLog;\nexport type ApiLogApiResponse = ApiLog;\nexport type Tag = z.infer;\n\nexport * from './index.client';\n\nexport type HubbyModel = {\n id: string;\n created_at: Date;\n updated_at: Date | null;\n created_by: string;\n updated_by: string | null;\n}\n\nexport type HubbyModelFirestore = {\n id: string;\n created_at: Timestamp;\n updated_at: Timestamp | null;\n created_by: DocumentReference | null | string;\n updated_by: DocumentReference | null | string;\n}\n\nexport const partnerFromFirestore = (partner: Partner): HPartner => {\n return convertFirestoreToJS(partner, partnerSchemaSpec);\n}\n\nexport const partnerToFirestore = (partner: HPartner): Partner => {\n return convertJSToFirestore(partner, partnerSchemaSpec);\n}\n\nexport const userToFirestore = (user: User): UserFirestore => {\n return convertJSToFirestore(user, userSchemaSpec);\n}\n\nexport const userFromFirestore = (user: UserFirestore): User => {\n return convertFirestoreToJS(user, userSchemaSpec);\n}\n\nexport const priceListFromFirestore = (priceList: PriceList): HPriceList => {\n return convertFirestoreToJS(priceList, priceListSchemaSpec);\n}\n\nexport const priceListToFirestore = (priceList: HPriceList): PriceList => {\n return convertJSToFirestore(priceList, priceListSchemaSpec);\n}\n\nexport const promoCodeFromFirestore = (promoCode: PromoCode): HPromoCode => {\n return convertFirestoreToJS(promoCode, promoCodeSchemaSpec);\n}\n\nexport const promoCodeToFirestore = (promoCode: HPromoCode): PromoCode => {\n return convertJSToFirestore(promoCode, promoCodeSchemaSpec);\n}\n\nexport const userTouchpointsFromFirestore = (userTouchpoints: UserTouchpoints): HUserTouchpoints => {\n return convertFirestoreToJS(userTouchpoints, userTouchpointsSchemaSpec);\n}\n\nexport const userTouchpointsToFirestore = (userTouchpoints: HUserTouchpoints): UserTouchpoints => {\n return convertJSToFirestore(userTouchpoints, userTouchpointsSchemaSpec);\n}\n\n\nexport const bookingAppSchema = buildClientSchema(bookingSchemaSpec);\nexport const partnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const destinationAppSchema = buildClientSchema(destinationSchemaSpec);\nexport const destinationBundleAppSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const packageTemplateAppSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const promoPackageSpecificationAppSchema = buildClientSchema(promoPackageSpecificationSchema);\n// Export the type and constant\nexport type SupportedLocales = typeof LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\n// Dependency Injection exports\nexport { createModelConverters } from './utils/modelConverterFactory';\nexport { createConvertJSToFirestore, createConvertFirestoreToJS } from './utils/firestoreTransformUtils';\nexport { FirebaseService, createFirebaseService } from './services/firebase';\n\nexport { USER_COLLECTION, PACKAGE_COLLECTION, PARTNER_COLLECTION, BOOKING_COLLECTION, ROLE_COLLECTION, PERMISSION_COLLECTION, TRAFFIC_POLICY_COLLECTION, PROFILE_COLLECTION, PROMO_CODE_COLLECTION, COUNTRY_COLLECTION, ESIM_COLLECTION, PAYMENT_COLLECTION, PRICE_LIST_COLLECTION, MESSAGE_COLLECTION, CURRENCY_COLLECTION, API_LOG_COLLECTION, REVIEW_COLLECTION, REVIEW_SUBMISSION_COLLECTION, USER_TOUCHPOINTS_COLLECTION, DESTINATION_COLLECTION, DESTINATION_OFFER_COLLECTION } from './specs/common';\n\n"]} \ No newline at end of file diff --git a/dist/index.d.cts b/dist/index.d.cts index 7b7e6d7..d8080a0 100644 --- a/dist/index.d.cts +++ b/dist/index.d.cts @@ -351,6 +351,11 @@ declare const esimSchemaSpec: { status: string; telna_esim_status: number; }>, "many">>>; + status_updated_at: { + _type: "timestamp"; + nullable: boolean; + optional: boolean; + }; name: z.ZodString; android_auto: z.ZodBoolean; partner_price: z.ZodNullable; @@ -2289,6 +2294,7 @@ declare const HESIMSchema: z.ZodObject<{ status: string; telna_esim_status: number; }>, "many">>>; + status_updated_at: z.ZodEffects; name: z.ZodString; android_auto: z.ZodBoolean; partner_price: z.ZodNullable; @@ -2322,6 +2328,7 @@ declare const HESIMSchema: z.ZodObject<{ total_data: number; data_left: number; data_used: boolean; + status_updated_at: Date; android_auto: boolean; partner_price: number | null; payment: string | null; @@ -2358,6 +2365,7 @@ declare const HESIMSchema: z.ZodObject<{ total_data: number; data_left: number; data_used: boolean; + status_updated_at: Date; android_auto: boolean; partner_price: number | null; payment: string | null; diff --git a/dist/index.d.ts b/dist/index.d.ts index 7b7e6d7..d8080a0 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -351,6 +351,11 @@ declare const esimSchemaSpec: { status: string; telna_esim_status: number; }>, "many">>>; + status_updated_at: { + _type: "timestamp"; + nullable: boolean; + optional: boolean; + }; name: z.ZodString; android_auto: z.ZodBoolean; partner_price: z.ZodNullable; @@ -2289,6 +2294,7 @@ declare const HESIMSchema: z.ZodObject<{ status: string; telna_esim_status: number; }>, "many">>>; + status_updated_at: z.ZodEffects; name: z.ZodString; android_auto: z.ZodBoolean; partner_price: z.ZodNullable; @@ -2322,6 +2328,7 @@ declare const HESIMSchema: z.ZodObject<{ total_data: number; data_left: number; data_used: boolean; + status_updated_at: Date; android_auto: boolean; partner_price: number | null; payment: string | null; @@ -2358,6 +2365,7 @@ declare const HESIMSchema: z.ZodObject<{ total_data: number; data_left: number; data_used: boolean; + status_updated_at: Date; android_auto: boolean; partner_price: number | null; payment: string | null; diff --git a/dist/index.js b/dist/index.js index 16fc522..b1042f7 100644 --- a/dist/index.js +++ b/dist/index.js @@ -499,6 +499,7 @@ var esimSchemaSpec = markAsSchemaSpec({ data_used: z.boolean(), status: z.string().nullable(), status_history: esimStatusHistorySchema, + status_updated_at: timestampNullable, name: z.string(), android_auto: z.boolean(), partner_price: z.number().nullable(), diff --git a/dist/index.js.map b/dist/index.js.map index fa317db..9f970c3 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/builders/server.ts","../src/common.ts","../src/services/firebase.ts","../src/specs/user.ts","../src/specs/common.ts","../src/specs/booking.ts","../src/constants.ts","../src/specs/promocode.ts","../src/specs/country.ts","../src/specs/currency.ts","../src/specs/esim.ts","../src/specs/payment.ts","../src/specs/analytics.ts","../src/specs/message.ts","../src/specs/traffic_policy.ts","../src/specs/package.ts","../src/specs/partner.ts","../src/specs/apiLogs.ts","../src/specs/userTouchpoints.ts","../src/specs/review.ts","../src/specs/destination.ts","../src/specs/package_template.ts","../src/specs/login_request.ts","../src/utils/firestoreTransformUtils.ts","../src/builders/client.ts","../src/specs/role.ts","../src/specs/permission.ts","../src/index.client.ts","../src/utils/modelConverterFactory.ts","../src/index.server.ts"],"names":["z","packageSpecificationSchema","REVIEW_COLLECTION","Timestamp","convertJSToFirestore","convertFirestoreToJS","SUPPORTED_LOCALES"],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { Timestamp } from 'firebase-admin/firestore';\nimport type { FieldSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\nimport { FirebaseService } from '../services/firebase';\n\nexport const buildServerSchema = (spec: FieldSpec, path: string[] = []): z.ZodTypeAny => {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod schema passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec);\n }\n\n // ----- Array -----\n if ('_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n\n const itemSchema =\n spec.of instanceof z.ZodType\n ? spec.of\n : buildServerSchema(spec.of, [...path, '[i]']);\n\n let arraySchema = z.array(itemSchema);\n if (spec.nullable) arraySchema = arraySchema.nullable();\n if (spec.optional) arraySchema = arraySchema.optional();\n return arraySchema;\n }\n\n // ----- Record -----\n if ('_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n\n const valueSchema =\n spec.of instanceof z.ZodType\n ? spec.of\n : buildServerSchema(spec.of, [...path, '[key]']);\n\n let recordSchema = z.record(valueSchema);\n if (spec.nullable) recordSchema = recordSchema.nullable();\n if (spec.optional) recordSchema = recordSchema.optional();\n return recordSchema;\n }\n\n // ----- Timestamp -----\n if ('_type' in spec && spec._type === 'timestamp') {\n let tsSchema = z.date().transform(date => Timestamp.fromDate(date));\n if (spec.nullable) tsSchema = tsSchema.nullable();\n if (spec.optional) tsSchema = tsSchema.optional();\n return tsSchema;\n }\n\n // ----- Document Reference -----\n if ('_type' in spec && spec._type === 'docRef') {\n let refSchema = z.string().transform(id => {\n const firestore = FirebaseService.getDefaultInstance().getFirestore()\n return firestore.collection(spec.collection).doc(id);\n });\n if (spec.nullable) refSchema = refSchema.nullable();\n if (spec.optional) refSchema = refSchema.optional();\n return refSchema;\n }\n\n // ----- Nested object shape -----\n if (typeof spec === 'object' && !('_type' in spec)) {\n const shape: Record = {};\n for (const [key, val] of Object.entries(spec)) {\n shape[key] = buildServerSchema(val, [...path, key]);\n }\n return z.object(shape);\n }\n\n // ----- Object -----\n if (\n typeof spec === 'object' &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildServerSchema);\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || typeof spec === 'object' && '_type' in spec && spec._type === 'object') {\n return wrapPlainObjectSchema(spec, path, buildServerSchema);\n }\n\n // ----- Unknown or malformed spec -----\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n};\n","import { ZodTypeAny, z } from 'zod';\nimport type { SchemaBuilder } from './types';\n\n/**\n * Ensures a Zod schema is wrapped to be optional and/or nullable,\n * if not already. Use this in recursive schema builders.\n * Also applies any other supported schema transformations provided in options.\n */\nexport function wrapZodSchema(\n schema: ZodTypeAny,\n options?: {\n optional?: boolean;\n nullable?: boolean;\n min?: number;\n max?: number;\n // Allow arbitrary extensions via dynamic property\n [key: string]: any;\n }\n): ZodTypeAny {\n if (!options) return schema;\n\n let wrapped = schema;\n\n // Handle nullable and optional specially since they're common\n if (options.nullable && !wrapped.isNullable?.()) {\n wrapped = wrapped.nullable();\n }\n\n if (options.optional && !wrapped.isOptional?.()) {\n wrapped = wrapped.optional();\n }\n\n // Process all other options dynamically\n for (const [key, value] of Object.entries(options)) {\n // Skip the already handled properties and undefined values\n if (['nullable', 'optional'].includes(key) || value === undefined) {\n continue;\n }\n\n // Check if the schema has a method matching the option key\n if (typeof (wrapped as any)[key] === 'function') {\n wrapped = (wrapped as any)[key](value);\n }\n }\n\n return wrapped;\n}\n\nexport function wrapObjectSchema(\n spec: any, // using any to support dynamic `spec.type === 'object'`\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n if (!('of' in spec)) {\n throw new Error(`Object spec at \"${pathString}\" is missing 'of'`);\n }\n\n const shape: Record = {};\n for (const [key, value] of Object.entries(spec.of)) {\n shape[key] = builder(value as any, [...path, key]);\n }\n\n let objectSchema: ZodTypeAny = z.object(shape);\n if (spec.nullable) objectSchema = objectSchema.nullable();\n if (spec.optional) objectSchema = objectSchema.optional();\n return objectSchema;\n}\n\n/**\n * Wraps a plain object shape (no `type: 'object'`) into a Zod schema.\n * Assumes each field is either a Zod schema or another FieldSpec.\n */\nexport function wrapPlainObjectSchema(\n spec: Record,\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n // Handle object field specs with '_type': 'object'\n if ('_type' in spec && spec._type === 'object' && 'of' in spec) {\n return wrapObjectSchema(spec, path, builder);\n }\n\n const shape: Record = {};\n\n // Only add fields to the schema if they're not special control properties\n for (const [key, val] of Object.entries(spec)) {\n if (key !== '_type' && key !== 'nullable' && key !== 'optional') {\n shape[key] = builder(val, [...path, key]);\n }\n }\n\n // Create the base object schema\n let schema: ZodTypeAny = z.object(shape);\n\n // Apply nullable/optional modifiers if needed\n if ('nullable' in spec && spec.nullable === true) {\n schema = schema.nullable();\n }\n\n if ('optional' in spec && spec.optional === true) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nexport const SCHEMA_MARKER = Symbol('ZodSchemaSpecMarker');\n\nexport function markAsSchemaSpec(spec: T): T {\n Object.defineProperty(spec, SCHEMA_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return spec;\n}\n\nexport function isSchemaSpec(obj: unknown): obj is Record {\n return typeof obj === 'object' && obj !== null && SCHEMA_MARKER in obj;\n}","import { getApps, initializeApp, cert, AppOptions, App } from \"firebase-admin/app\";\nimport { getFirestore, Firestore } from \"firebase-admin/firestore\";\nimport { applicationDefault } from \"firebase-admin/app\";\n\nexport interface FirebaseConfig {\n credential?: AppOptions['credential'];\n projectId?: string;\n storageBucket?: string;\n databaseURL?: string;\n // Options for testing\n isTest?: boolean;\n}\n\n// Define variable to hold singleton instance (must be injected by consumer/tests)\nlet defaultInstance: FirebaseService | null = null;\n\nexport class FirebaseService {\n\n private firestoreInstance: Firestore;\n constructor(db: Firestore) {\n this.firestoreInstance = db;\n }\n\n getFirestore(): Firestore {\n return this.firestoreInstance;\n }\n\n // Get default instance with singleton pattern\n public static getDefaultInstance(): FirebaseService {\n if (defaultInstance === null) {\n throw new Error(\n \"FirebaseService default instance not set. Inject a FirebaseService via FirebaseService.setDefaultInstance(...) in your application startup or test setup.\"\n );\n }\n return defaultInstance;\n }\n\n // Allow for setting a custom default instance (useful for tests)\n public static setDefaultInstance(instance: FirebaseService): void {\n defaultInstance = instance;\n }\n}\n\n// Function to create a new Firebase service instance (use in tests or by consumers before injection)\nexport function createFirebaseService(db: Firestore): FirebaseService {\n return new FirebaseService(db);\n}","import { z } from 'zod';\nimport { PARTNER_COLLECTION, PROFILE_COLLECTION, timestampNullableOptional, timestampRequired, timestampNullable, ROLE_COLLECTION, PERMISSION_COLLECTION } from './common';\nimport { markAsSchemaSpec } from '../common'\n\nexport const apiKeySpec = {\n expires_at: { _type: 'timestamp' as const },\n secret: z.string(),\n is_active: z.boolean(),\n}\n\nexport const apiKeysSpec = {\n _type: 'record' as const,\n of: {\n _type: 'object' as const,\n of: apiKeySpec\n }\n}\n\nexport const apiKeysObjectSpec = {\n _type: 'object' as const,\n of: {\n allowed_keys: { _type: 'array' as const, nullable: true, optional: true, of: z.string() },\n keys: apiKeysSpec\n },\n nullable: true,\n optional: true\n}\n\nexport const userSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string().nullable(),\n email: z.string().email().nullable(),\n stripe_id: z.string().nullable().optional(),\n referral: z.string().nullable().optional(),\n fcm: z.string().optional(),\n deeplink: z.string().nullable().optional(),\n gender: z.string().nullable().optional(),\n company: z.string().nullable().optional(),\n coordinates: z.string().nullable().optional(),\n platform: z.enum(['ios', 'android']).nullable().optional(),\n platform_version: z.string().nullable().optional(),\n device_type: z.string().nullable().optional(),\n app_version: z.string().nullable().optional(),\n parameters: z.any().nullable().optional(),\n locale: z.string().nullable().optional(),\n phone_model: z.string().nullable().optional(),\n phone_os: z.string().nullable().optional(),\n phone_os_version: z.string().nullable().optional(),\n ios: z.boolean().nullable().optional(),\n has_card_saved: z.boolean().nullable().optional(),\n admin: z.boolean().nullable().optional(),\n api_keys: apiKeysObjectSpec,\n profileRef: z.string().nullable().optional(),\n currency: z.string().nullable().optional(),\n receipt_email: z.string().nullable().optional(),\n source: z.enum(['direct', 'promo', 'platform']).nullable().optional(),\n role: { _type: 'docRef' as const, collection: ROLE_COLLECTION, optional: true, nullable: true },\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n balance: z.number().nullable().optional(),\n createdAt: { _type: 'timestamp' as const },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, optional: true, nullable: true },\n review_requested: timestampNullableOptional,\n last_seen: timestampNullableOptional,\n created_at: timestampNullableOptional,\n updated_at: timestampNullableOptional,\n created_by: z.string().nullable().optional(),\n updated_by: z.string().nullable().optional(),\n push_to_start_token: z.string().nullable().optional(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const PARTNER_COLLECTION = '/companies/hubby/partners';\nexport const USER_COLLECTION = 'users';\nexport const PROFILE_COLLECTION = '/companies/hubby/profiles';\nexport const PACKAGE_COLLECTION = '/companies/hubby/packages';\nexport const PACKAGE_TEMPLATE_COLLECTION = '/companies/hubby/package_templates';\nexport const PROMO_CODE_COLLECTION = '/companies/hubby/promo_codes';\nexport const COUNTRY_COLLECTION = 'countries';\nexport const ESIM_COLLECTION = 'esims';\nexport const PAYMENT_COLLECTION = 'payments';\nexport const PRICE_LIST_COLLECTION = 'price_lists';\nexport const BOOKING_COLLECTION = 'bookings';\nexport const MESSAGE_COLLECTION = 'messages';\nexport const CURRENCY_COLLECTION = 'currencies';\nexport const API_LOG_COLLECTION = 'api_logs'\nexport const ROLE_COLLECTION = 'roles';\nexport const PERMISSION_COLLECTION = 'permissions';\nexport const TRAFFIC_POLICY_COLLECTION = 'traffic_policies';\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\nexport const DESTINATION_COLLECTION = 'destinations';\nexport const DESTINATION_OFFER_COLLECTION = 'offers';\nexport const USER_TOUCHPOINTS_COLLECTION = 'user_touchpoints';\n\n\nexport const packageTypes = ['data-limited', 'time-limited', 'starter', 'unlimited'];\n\n// Timestamp specs\nexport const timestampNullableOptional = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampNullable = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampRequired = { _type: 'timestamp' as const, nullable: false, optional: false };\n\nexport const hubbyModelSpec = {\n id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n created_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n}\n\nexport const tagModelSpec = {\n ...hubbyModelSpec,\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n color: z.string().nullable().optional(),\n}","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n PROMO_CODE_COLLECTION,\n USER_COLLECTION,\n ESIM_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema } from '../constants';\nimport { packageSpecificationSchema } from './promocode';\n\n// Enum for communication channels\nexport const communicationChannelSchema = z.enum([\n 'EMAIL',\n 'WHATSAPP',\n 'PUSH_NOTIFICATION',\n 'SMS'\n]);\nexport type CommunicationChannelType = z.infer;\n\n// For backward compatibility\nexport type CommunicationChannel = CommunicationChannelType;\n\n// Add enum-like object for use in code\nexport const CommunicationChannel = {\n EMAIL: 'EMAIL' as const,\n WHATSAPP: 'WHATSAPP' as const,\n PUSH_NOTIFICATION: 'PUSH_NOTIFICATION' as const,\n SMS: 'SMS' as const\n} as const;\n\n// Status type for bookings\nexport const bookingStatusSchema = z.enum([\n 'PENDING',\n 'CONFIRMED',\n 'COMPLETED',\n 'CANCELLED',\n 'UNPAID',\n 'EXPIRED'\n]);\nexport type BookingStatus = z.infer;\n\n// Communication options schema\nexport const communicationOptionsSchema = z.object({\n should_send_message: z.boolean(),\n channels: z.array(communicationChannelSchema)\n});\n\nexport const financialInsightsSchema = z.object({\n partner_commission_percentage: z.number().nullable().optional(),\n total_commission_amount: z.number().nullable().optional(),\n price: z.number().nullable().optional(),\n}).nullable().optional()\n\nexport type CommunicationOptions = z.infer;\n\n// Define the booking schema spec\nexport const bookingSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n external_id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n title: z.string().nullable().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n full_name: z.string().nullable().optional(),\n pax: z.number().optional().nullable(),\n email: z.string().email().nullable().optional(),\n phone: z.string().nullable().optional(),\n booking_id: z.string().nullable().optional(),\n flight_number: z.string().optional(),\n gender: z.enum(['M', 'F', 'O']).optional(),\n sent_messages: z.record(z.any()).optional(),\n locale: supportedLocalesSchema,\n status: bookingStatusSchema.optional().nullable(),\n data: {\n _type: 'object' as const,\n of: {\n source: z.string(),\n manual: z.boolean(),\n action: z.string().nullable().optional()\n },\n nullable: true,\n optional: true\n },\n communication_options: {\n _type: 'object' as const,\n of: {\n should_send_message: z.boolean(),\n channels: {\n _type: 'array' as const,\n of: communicationChannelSchema\n }\n }\n },\n is_processed_for_esim_restoration: z.boolean().optional().nullable(),\n is_pseudonymized: z.boolean().optional().nullable(),\n import_id: z.string().nullable().optional(),\n package_specifications: z.array(packageSpecificationSchema).min(1),\n departure_date: timestampRequired,\n return_date: timestampNullable,\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION },\n financial_insights: financialInsightsSchema,\n promo_codes: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION },\n nullable: true,\n optional: true\n },\n users: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: USER_COLLECTION },\n nullable: true,\n optional: true\n },\n esims: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: ESIM_COLLECTION },\n nullable: true,\n optional: true\n },\n hubby_foreign_identifiers: z.object({\n messaging_contact_id: z.string().nullable()\n }).nullable().optional()\n});\n\n","import { z } from \"zod\";\n\nexport const SUPPORTED_LOCALES = [\n \"en-US\",\n \"en-EU\",\n \"en-GB\",\n \"en-CA\",\n \"nl-NL\",\n \"de-DE\",\n \"fr-FR\",\n \"fr-CA\",\n \"it-IT\",\n \"es-ES\",\n \"cs-CZ\",\n \"pl-PL\",\n \"pt-PT\",\n \"fr-BE\",\n \"nl-BE\",\n \"de-AT\",\n \"de-CH\",\n \"fr-CH\",\n \"it-CH\",\n \"sv-SE\",\n \"sk-SK\",\n \"de-BE\",\n \"en-AU\",\n \"da-DK\",\n \"ko-KR\",\n] as const;\n\n// Define the type using TypeScript's typeof and indexing\n\n// Define the type using TypeScript's typeof and indexing\nexport type SupportedLocales = (typeof SUPPORTED_LOCALES)[number];\n\n// Create a Zod schema for validation\nexport const supportedLocalesSchema = z.enum(SUPPORTED_LOCALES);\n\n// Type inference from the schema (alternative way to define the type)\nexport type SupportedLocalesFromSchema = z.infer;\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n PACKAGE_COLLECTION,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// Define package specification schema for use in promo code\nexport const packageSpecificationSchema = z.object({\n destination: z.string().optional().or(z.array(z.string())),\n iso3: z.string().optional(),\n size: z.string().optional(),\n package_id: z.string().optional(),\n bundle_id: z.string().optional(),\n iata_code: z.string().optional(),\n package_duration: z.number().optional(),\n package_type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).optional(),\n traffic_policy: z.string().optional(),\n});\n\n// Define the promo code schema spec\nexport const promoCodeSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n redeemed_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // PromoCode specific fields\n uuid: z.string().uuid().nullable().optional(),\n external_id: z.string(),\n code: z.string(),\n claimed_at: timestampNullableOptional,\n allowance_user: z.number(),\n allowance_total: z.number(),\n type: z.enum(['discount', 'booking', 'booking_without_destination']).nullable().or(z.string()),\n usage: z.array(z.string()),\n uuid_usage: z.array(z.string()),\n package_specification: packageSpecificationSchema.optional(),\n valid_from: timestampRequired,\n valid_to: timestampRequired,\n\n // Reference fields\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION, nullable: true },\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true },\n\n // Optional fields based on the type\n discount: z.number().optional(),\n package_size: z.string().optional(),\n countries: z.array(z.string()).optional(),\n max_bytes: z.number().optional(),\n starter_data: z.number().optional()\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const countrySchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n bokun_id: z.number().nullable(),\n LTE: z.boolean().nullable(),\n apn: z.string().nullable(),\n click_count: z.number().nullable(),\n global_network: z.string().nullable(),\n global_price: z.number().nullable(),\n hubby: z.number().nullable(),\n imsi: z.number().nullable(),\n has_esim: z.boolean(),\n name: z.string().nullable(),\n region: z.boolean().nullable(),\n i18n_name: z.record(z.string()),\n is_region: z.boolean().nullable(),\n countries: z.array(z.string()).nullable(),\n tier: z.number().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define schema for conversion rates (for backward compatibility)\nexport const conversionRateSchema = z.object({\n currency: z.number()\n});\n\nexport type CoversionRate = z.infer;\n\n// Define the currency schema spec\nexport const currencySchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n // ISO 4217 currency code (e.g., \"USD\", \"EUR\")\n code: z.string().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n // Currency symbol (e.g., \"$\", \"€\")\n symbol: z.string().describe('Currency symbol (e.g., \"$\", \"€\")'),\n // Full name of the currency (e.g., \"US Dollar\")\n name: z.string().describe('Full name of the currency (e.g., \"US Dollar\")'),\n // Exchange rate relative to base currency\n rate: z.number().describe('Exchange rate relative to base currency'),\n // Whether this is the default currency\n is_default: z.boolean().describe('Whether this is the default currency')\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n PARTNER_COLLECTION,\n PAYMENT_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\n\n\nexport const statusHistorySchema = z.object({\n telna_esim_status: z.number(),\n source: z.string(),\n status: z.string(),\n timestamp: timestampRequired as unknown as z.ZodType,\n})\n\nexport const esimStatusHistorySchema = markAsSchemaSpec(z.array(statusHistorySchema).nullable().optional());\n\n// Define the eSIM schema spec\nexport const esimSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Common eSIM fields\n imsi: z.number(),\n qr: z.string(),\n iccid: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable().optional(),\n total_data: z.number(),\n data_left: z.number(),\n uuid: z.string().uuid().nullable().optional(),\n data_used: z.boolean(),\n status: z.string().nullable(),\n status_history: esimStatusHistorySchema,\n name: z.string(),\n android_auto: z.boolean(),\n partner_price: z.number().nullable(),\n promo: z.string().nullable(),\n type: z.enum(['api', 'promo', 'balance', 'code', 'external', 'payment']),\n is_auto_install: z.boolean(),\n is_archived: z.boolean(),\n user: z.string().nullable(),\n payment: z.string().nullable(),\n apn: z.string().nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Timestamp fields\n time_assigned: timestampNullable,\n last_updated: timestampNullable\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n USER_COLLECTION,\n timestampRequired,\n hubbyModelSpec,\n PARTNER_COLLECTION\n} from './common';\n\n// Define the payment schema spec\nexport const paymentSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n\n // Core payment fields (universal across ALL payment types)\n amount: z.number(),\n customer: z.string(),\n date: timestampRequired,\n source: z.enum(['app', 'webapp', 'platform']),\n invoice: z.string().optional(),\n fee: z.number().optional(),\n topup: z.boolean(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']).optional(), // 'pending' | 'processing' | 'completed' | 'failed'\n payment_intent_id: z.string().nullable().optional(), // Stripe PaymentIntent ID\n error_message: z.string().nullable().optional(), // Error message\n // Common resolved package specification (same format for all sources)\n package_specifications: z.array(z.object({\n package_type: z.string().optional(),\n package_size: z.string().optional(),\n package_duration: z.number().optional(),\n destination: z.string().optional(),\n iso3: z.string().optional(),\n })).optional(),\n\n // Reference fields\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n\n // Source-specific payment properties\n app_payment_properties: z.object({\n package: z.string().optional(), // package_id for app payments\n promo: z.string().optional(),\n iccid: z.string().optional(),\n global: z.string().optional(),\n balance_used: z.number().optional(),\n booking_id: z.string().nullable().optional(),\n discount_amount: z.string().optional(),\n is_special_offer: z.boolean().optional(),\n special_offer_discount: z.number().optional(),\n }).optional(),\n\n webapp_platform_payment_properties: z.object({\n promo_codes: z.array(z.string()).optional(),\n booking_id: z.string().optional(),\n partner: z.string().optional(),\n purchaseType: z.string().optional(),\n affiliateId: z.string().nullable().optional(),\n partner_name: z.string().optional(),\n locale: z.string().optional(),\n }).optional(),\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec, PARTNER_COLLECTION } from './common';\n\n// Country schema spec\nexport const analyticsSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n service: z.string(),\n date: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/), // YYYY-MM-DD\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n event: z.string(),\n parameter: z.string().nullable(),\n sum: z.number(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define the message schema spec\nexport const messageSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n key: z.string(),\n method: z.enum([\"push\", \"sms\", \"email\"]),\n status: z.enum([\"pending\", \"sent\", \"failed\", \"delivered\"]),\n created_at: timestampRequired,\n updated_at: timestampRequired\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const trafficPolicySpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n name: z.string(),\n description: z.string(),\n external_id: z.string(),\n provider: z.string()\n})","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n PARTNER_COLLECTION,\n TRAFFIC_POLICY_COLLECTION,\n timestampRequired,\n hubbyModelSpec\n} from './common';\n\nimport { countrySchemaSpec } from './country';\n\n// Define the package schema spec\nexport const packageSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n // Package specific fields\n external_id: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable(),\n label: z.string(),\n bytes: z.number(),\n hidden: z.boolean(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n price: z.number(),\n partner_price: z.number(),\n days: z.number(),\n name: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).nullable(),\n throttling: z.number().optional(),\n provider_parameters: z.object({\n imsi: z.number()\n }).nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Nested country data - need to use dynamic reference to country schema\n // This would typically be handled better with a proper recursive schema definition\n // but for simplicity, we're using any type here\n country_data: {\n _type: 'object' as const,\n of: countrySchemaSpec,\n nullable: true,\n optional: true\n }\n // country_data: z.any().nullable()\n});\n\nexport const commonPackageSchema = markAsSchemaSpec({\n size: z.string(),\n iso: z.string(),\n days: z.number(),\n price: z.number(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n packageType: z.string(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n});\n\nexport const telnaPackageSchema = markAsSchemaSpec({\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n ...commonPackageSchema,\n});\n\nexport const bondioPackageSchema = markAsSchemaSpec({\n ...commonPackageSchema,\n label: z.enum(['lambda', 'tau']),\n periodDays: z.number(),\n periodIterations: z.number(),\n throttling: z.number().optional().nullable(),\n \n});","import { z, ZodLazy } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema, SUPPORTED_LOCALES, SupportedLocales } from '../constants';\nimport {\n PARTNER_COLLECTION,\n USER_COLLECTION,\n PACKAGE_COLLECTION,\n PRICE_LIST_COLLECTION,\n tagModelSpec,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// ===== Helper schemas for nested structures =====\n\n// Address schema\nexport const addressSchema = z.object({\n street: z.string().nullable().optional(),\n city: z.string().nullable().optional(),\n postal_code: z.string().nullable().optional(),\n country: z.string().nullable().optional()\n});\n\n// Emit event schema\nexport const emitEventSchema = z.object({\n topup: z.boolean().optional().default(false),\n redemption: z.boolean().optional().default(false),\n activation: z.boolean().optional().default(false),\n depletion: z.boolean().optional().default(false),\n});\n\n// Registration schema\nexport const registrationSchema = z.object({\n chamber_of_commerce_number: z.string().nullable().optional(),\n vat_number: z.string().nullable().optional(),\n anvr_number: z.number().nullable().optional(),\n tax_number: z.string().nullable().optional()\n});\n\n// Banking details schema\nexport const bankingDetailsSchema = z.object({\n account_holder: z.string().nullable().optional(),\n billing_email: z.string().nullable().optional(),\n bank_name: z.string().nullable().optional(),\n iban: z.string().nullable().optional(),\n currency: z.string().nullable().optional()\n});\n\n// Package price schema\nexport const packagePriceSchema = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: z.object({ _type: z.literal('docRef'), collection: z.literal(PACKAGE_COLLECTION) })\n});\n\n// Package specification schema\nexport const packageSpecificationSchema = z.object({\n size: z.string().nullable().optional(),\n type: z.string().nullable().optional(),\n destination: z.string().nullable().optional()\n});\n\n// Pricing strategy schema\nexport const pricingStrategySchema = z.object({\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: z.object({\n _type: z.literal('docRef'),\n collection: z.literal(PRICE_LIST_COLLECTION),\n nullable: z.literal(true)\n }),\n custom_prices: z.array(packagePriceSchema)\n});\n\n// Visual identity banner schema\nexport const visualIdentityBannerSchema = z.object({\n action: z.string().nullable().optional(),\n image_url: z.string(),\n alt: z.string(),\n click_url: z.string(),\n locale: supportedLocalesSchema,\n properties: z.record(z.string())\n});\n\n// Schedule filter schema\nexport const scheduleFilterSchema = z.object({\n type: z.enum(['iso3', 'gender', 'percentage', 'age']),\n value: z.union([z.string(), z.number()]),\n comparison: z.enum([\n 'equal',\n 'not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal'\n ])\n});\n\n// Convert object-like schemas to proper Zod objects\nexport const visualIdentityBannersSchema = z.object({\n strategy: z.enum(['fixed', 'rotating', 'destination', 'time_of_day']),\n banners: z.array(visualIdentityBannerSchema).nullable().optional()\n});\n\nexport const visualIdentitySchema = z.object({\n primary_color: z.string(),\n secondary_color: z.string(),\n logo: z.string(),\n font: z.string().nullable().optional(),\n top_banner: visualIdentityBannersSchema.optional(),\n mid_banner: visualIdentityBannersSchema.optional()\n});\n\n// Partner contact schema\nexport const partnerContactSchema = z.object({\n name: z.string().nullable().optional(),\n email: z.string().nullable(),\n office_phone: z.string().nullable().optional(),\n office_email: z.string().nullable().optional()\n});\n\n// Partner data schema\nexport const partnerDataSchema = z.object({\n source: z.string(),\n manual: z.boolean()\n});\n\n// Package strategy schema\nexport const packageStrategySchema = z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any()\n});\n\n// Schedule email schema\nexport const scheduleEmailSchema = z.object({\n brevo_template_id: z.number(),\n subject: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional(),\n preview_text: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional()\n}).nullable().optional();\n\n// Schedule push schema\nexport const schedulePushSchema = z.object({\n title: z.record(z.string()).optional(),\n body: z.record(z.string()).optional(),\n target: z.string()\n}).nullable().optional();\n\n// Schedule schema\nexport const scheduleSchema = z.object({\n days: z.number(),\n email: scheduleEmailSchema,\n push: schedulePushSchema,\n hour: z.number(),\n key: z.string(),\n method: z.enum(['email', 'sms', 'whatsapp', 'push']),\n moment: z.enum(['departure_date', 'return_date', 'immediate']),\n filter: scheduleFilterSchema.nullable().optional()\n});\n\nexport const freeEsimSchema = z.object({\n enabled: z.boolean(),\n package_specification: z.object({\n size: z.string(),\n package_type: z.string(),\n destination: z.string(),\n package_duration: z.number(),\n type: z.string().nullable().optional()\n }),\n booking_id_verification: z.boolean().default(false),\n booking_id_verification_pattern: z.string().nullable().optional(),\n allowance: z.number(),\n total_allowance: z.number(),\n});\n\n// Agent signup settings schema\nexport const agentSignupSettingsSchema = z.object({\n slack_channel: z.string().nullable().optional(),\n welcome_email_template: z.number().nullable().optional(),\n password_reset_template: z.number().nullable().optional(),\n partner_type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n enable_complimentary_booking: z.boolean().default(true),\n complimentary_booking_partner_id: z.string().nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().default(true),\n source_partner_branding: z.boolean().default(false),\n own_branding: z.boolean().default(false)\n }).default({})\n});\n\n// Platform settings schema\nexport const platformSettingsSchema = z.object({\n package_strategy: z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any(),\n supported_package_types: z.enum(['data-limited', 'unlimited']).optional()\n }).nullable().optional(),\n free_esim: freeEsimSchema.nullable().optional(),\n booking_defaults: z.object({\n locale: supportedLocalesSchema\n }).nullable().optional(),\n booking_confirmation: z.object({\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n }).nullable().optional(),\n emit_events: emitEventSchema.nullable().optional(),\n schedules: z.array(scheduleSchema).optional(),\n brevo: z.object({\n list_ids: z.array(z.number()),\n campaign_mode: z.boolean()\n }).nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().optional().default(true),\n source_partner_branding: z.boolean().optional().default(false),\n own_branding: z.boolean().optional().default(false)\n }).nullable().optional(),\n agent_signup_settings: agentSignupSettingsSchema.nullable().optional(),\n upgrade_offer: z.object({\n enabled: z.boolean(),\n discount_percentage: z.number().min(0).max(100),\n }).nullable().optional()\n});\n\n// ===== Exportable schema specs =====\n\n// Package price schema spec\nexport const packagePriceSchemaSpec = markAsSchemaSpec({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n});\n\n// Financial properties schema spec\nexport const financialPropertiesSchemaSpec = markAsSchemaSpec({\n administration_fee: z.number().nullable(),\n income_per_gb: z.number().nullable(),\n commission_fee: z.number().nullable().optional(),\n commission_percentage: z.number().nullable().optional(),\n payment_method: z.enum(['invoice', 'direct']),\n requires_card: z.boolean().nullable(),\n next_invoice: timestampNullableOptional,\n last_invoice: timestampNullableOptional,\n pricing_strategies: {\n _type: 'object' as const,\n of: {\n partner: {\n _type: 'object' as const,\n of: {\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n },\n user: {\n _type: 'object' as const,\n of: {\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n }\n },\n nullable: true\n }\n});\n\n// Platform settings schema spec\nexport const platformSettingsSchemaSpec = markAsSchemaSpec({\n package_strategy: {\n _type: 'object' as const,\n of: packageStrategySchema.shape,\n nullable: true,\n optional: true\n },\n free_esim: {\n _type: 'object' as const,\n of: freeEsimSchema.shape,\n nullable: true,\n optional: true\n },\n booking_defaults: {\n _type: 'object' as const,\n of: {\n locale: supportedLocalesSchema\n },\n nullable: true,\n optional: true\n },\n booking_confirmation: {\n _type: 'object' as const,\n of: {\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n },\n nullable: true,\n optional: true\n },\n schedules: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: scheduleSchema.shape\n },\n optional: true\n },\n agent_signup_settings: {\n _type: 'object' as const,\n of: agentSignupSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\n// Webhook settings schema\nexport const webhookSettingsSchema = z.object({\n url: z.string().url().nullable().optional(),\n api_key: z.string().nullable().optional(),\n enabled: z.boolean().default(false),\n events: z.object({\n promocode_redemption: z.boolean().default(false)\n }).default({})\n});\n\n// ===== Main partner schema =====\nexport const partnerSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Partner specific fields\n name: z.string().min(3),\n type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n is_active: z.boolean().nullable().optional(),\n external_id: z.string().nullable().optional(),\n\n // Complex nested objects\n contact: {\n _type: 'object' as const,\n of: partnerContactSchema.shape,\n nullable: true\n },\n address: {\n _type: 'object' as const,\n of: addressSchema.shape,\n nullable: true\n },\n registration: {\n _type: 'object' as const,\n of: registrationSchema.shape,\n nullable: true\n },\n banking_details: {\n _type: 'object' as const,\n of: bankingDetailsSchema.shape,\n nullable: true\n },\n\n // Reference fields\n parent: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n users: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: USER_COLLECTION }, nullable: true },\n\n // Complex nested structures\n financial_properties: financialPropertiesSchemaSpec,\n // Visual identity\n visual_identity: {\n _type: 'object' as const,\n of: visualIdentitySchema.shape,\n nullable: true\n },\n\n // Platform settings\n platform_settings: {\n _type: 'object' as const,\n of: platformSettingsSchema.shape,\n nullable: true\n },\n\n // Tags\n tags: {\n _type: 'array' as const,\n of: tagModelSpec,\n nullable: true,\n optional: true\n },\n\n // Tag slugs\n tag_slugs: {\n _type: 'array' as const,\n of: z.string(),\n nullable: true,\n optional: true\n },\n\n // Metadata\n data: {\n _type: 'object' as const,\n of: partnerDataSchema.shape,\n nullable: true,\n optional: true\n },\n\n // Webhook settings\n webhook_settings: {\n _type: 'object' as const,\n of: webhookSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\nexport const priceListItemSchemaSpec = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: z.string(),\n});\n\n// Price list item with docRef support for use in priceListSchemaSpec\nconst priceListItemWithDocRefSpec = {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n};\n\n// ===== Price list schema =====\nexport const priceListSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Price list specific fields\n name: z.string().min(3),\n description: z.string().nullable(),\n type: z.enum(['partner', 'consumer']),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n price_list: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec,\n optional: true\n },\n package_prices: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec\n },\n});\n","import { z } from 'zod';\nimport { timestampRequired } from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const payloadSpec = {\n _type: 'record' as const,\n of: z.unknown(),\n optional: true\n};\n\nexport const apiLogSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n method: z.string(),\n user_id: z.string().optional(),\n path: z.string(),\n resource_type: z.string().optional(),\n resource_id: z.string().optional(),\n partner_id: z.string().optional(),\n payload: payloadSpec,\n timestamp: timestampRequired,\n status_code: z.number()\n});\n","import { z } from 'zod';\nimport { \n USER_TOUCHPOINTS_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullableOptional,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n PARTNER_COLLECTION\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const userTouchpointsSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n unique_device_identifier: z.string().nullable().optional(),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true, optional: true },\n promo_code: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n promo_code_redeemed_at: timestampNullableOptional,\n esim_assigned_at: timestampNullableOptional,\n esim_install_initiated_at: timestampNullableOptional,\n esim_install_completed_at: timestampNullableOptional,\n esim_first_package_activated_at: timestampNullableOptional,\n esim_topped_up_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n});\n","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullable\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\n\n// Package type schema for reward strategy\nexport const rewardPackageTypeSchema = z.enum(['data-limited', 'starter']);\nexport type RewardPackageType = z.infer;\n\n// Reward strategy base reward schema\nexport const baseRewardSchema = z.object({\n package_size: z.string(),\n package_type: rewardPackageTypeSchema\n});\n\nexport type BaseReward = z.infer;\n\n// Reward strategy multipliers schema\nexport const rewardMultipliersSchema = z.object({\n quality_based: z.number().optional(),\n completion_based: z.number().optional()\n}).optional();\n\nexport type RewardMultipliers = z.infer;\n\n// Reward strategy schema\nexport const rewardStrategySchema = z.object({\n base_reward: baseRewardSchema,\n multipliers: rewardMultipliersSchema\n});\n\nexport type RewardStrategy = z.infer;\n\n// Review schema spec\nexport const reviewSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n partner_id: z.string().nullable().optional(),\n questions: z.record(z.any()),\n reward_strategy: rewardStrategySchema,\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true }\n});\n\n// Review submission schema spec\nexport const reviewSubmissionSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n review: { _type: 'docRef' as const, collection: REVIEW_COLLECTION, nullable: true },\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true },\n questions: z.record(z.any()),\n iccid: z.string(),\n isAndroid: z.boolean(),\n country_id: z.string(),\n partner_id: z.string(),\n review_id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n analysis: z.record(z.any()).nullable().optional()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PACKAGE_TEMPLATE_COLLECTION,\n PARTNER_COLLECTION,\n timestampNullable,\n timestampRequired,\n TRAFFIC_POLICY_COLLECTION\n} from './common';\n\n// Destination schema spec\nexport const destinationSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n type: z.string(), // \"country\" or region names like \"Europe\", \"Asia\", \"Middle East\"\n iso3s: z.array(z.string()),\n name: z.string(),\n i18n_name: z.record(z.string()),\n is_active: z.boolean(),\n sort_order: z.number(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n\n// Destination offer schema spec\nexport const destinationBundleSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n parent_document_id: z.string(),\n type: z.enum(['unlimited', 'data-limited', 'starter']),\n label: z.string().nullable().optional(), //'5 Days' or '5GB'\n provider: z.enum(['telna', 'bondio']),\n\n duration_in_days: z.number(),\n duration_in_seconds: z.number(),\n \n size_in_bytes: z.number(),\n size_in_megabytes: z.number(),\n size_in_gigabytes: z.number(),\n\n package_template: { _type: 'docRef' as const, collection: PACKAGE_TEMPLATE_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n //All unlimited packages will have a traffic policy, but this only refers to telna bundles\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n b2c_price: z.number(),\n b2b_price: z.number(),\n partner_b2c_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n partner_b2b_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n is_active: z.boolean().default(true),\n is_visible: z.boolean().default(true), //All bundles that will have a partner will probably be invisible\n priority: z.number().default(10),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n deleted_at: timestampNullable,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n deleted_by: z.string().nullable()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n timestampRequired\n} from './common';\n\n// Package Template Schema Spec - unified schema for all providers\nexport const packageTemplateSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n provider: z.string(), // e.g., \"telna\", \"bondio\"\n type: z.string(),\n purchase_price: z.number(),\n external_id: z.string(),\n supported_countries: z.array(z.string()), // iso3 codes\n provider_specific_data: {\n _type: 'record' as const,\n of: z.any(),\n nullable: true,\n optional: true\n },\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, USER_COLLECTION } from './common';\n\n// Define the login request schema spec\nexport const loginRequestSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n email: z.string().email(),\n status: z.enum(['pending', 'completed', 'expired']),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n created_at: timestampRequired,\n expires_at: timestampRequired\n});\n","// firestoreTransformUtils.ts\n\nimport { z } from 'zod';\nimport { DocumentReference, Timestamp, Firestore } from 'firebase-admin/firestore';\nimport { FieldSpec } from '../types';\nimport { FirebaseService } from '../services/firebase';\n// Note: Firestore instance must be injected by consumers/tests via factory\n\nexport function createConvertJSToFirestore(db: Firestore) {\n return function convertJSToFirestore(input: any, spec: FieldSpec): any {\n // Handle null/undefined at the top level\n if (input === undefined || input === null) return null;\n\n if (spec instanceof z.ZodType) {\n if (input instanceof Date) return Timestamp.fromDate(input);\n return input; // already valid\n }\n\n if ('_type' in spec) {\n switch (spec._type) {\n case 'timestamp':\n if (input instanceof Date) {\n return Timestamp.fromDate(input);\n } else if (typeof input === 'string' || typeof input === 'number') {\n return Timestamp.fromDate(new Date(input));\n }\n return input;\n case 'docRef':\n return db.collection(spec.collection).doc(input);\n case 'array':\n return input.map((item: any) => convertJSToFirestore(item, spec.of));\n case 'record':\n // For records, filter out undefined values\n return Object.fromEntries(\n Object.entries(input)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => [k, convertJSToFirestore(v, spec.of)])\n );\n case 'object':\n if ('of' in spec && typeof spec.of === 'object') {\n const result: any = {};\n for (const [key, fieldSpec] of Object.entries(spec.of)) {\n // Check if the field exists in the input\n if (key in input) {\n const value = input[key];\n\n // Handle based on field optionality and nullability\n if (value === undefined) {\n // Check if field is optional by looking at its spec\n const isOptional = typeof fieldSpec === 'object' && '_type' in fieldSpec && fieldSpec._type === 'optional';\n if (!isOptional) {\n // If not optional but nullable, convert to null\n result[key] = null;\n }\n // If optional, just skip it (don't add to result)\n } else {\n // Normal case - value exists and is not undefined\n result[key] = convertJSToFirestore(value, fieldSpec);\n }\n }\n }\n return result;\n }\n return input;\n default:\n throw new Error(`Unknown field type: ${spec._type}`);\n }\n }\n\n // fallback: plain object shape with explicit schema\n if (typeof input === 'object' && !Array.isArray(input) && typeof spec === 'object') {\n const result: any = {};\n\n for (const [key, fieldSpec] of Object.entries(spec)) {\n if (key in input) {\n const value = input[key];\n\n // Handle undefined values\n if (value === undefined) {\n // Check if field is optional\n const isOptional = typeof fieldSpec === 'object' && '_type' in fieldSpec && fieldSpec._type === 'optional';\n if (!isOptional) {\n // If not optional but nullable, convert to null\n result[key] = null;\n }\n // If optional, don't include in the result\n } else {\n // Normal case - value exists\n result[key] = convertJSToFirestore(value, fieldSpec);\n }\n }\n }\n\n return result;\n }\n\n return input;\n };\n}\n\nfunction isDuckTimestamp(obj: any): obj is { toDate: () => Date } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj.toDate === 'function' &&\n Object.prototype.toString.call(obj.toDate()) === '[object Date]'\n );\n}\n\nfunction isRawFirestoreTimestamp(obj: any): obj is { _seconds: number; _nanoseconds: number } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj._seconds === 'number' &&\n typeof obj._nanoseconds === 'number'\n );\n}\n\nfunction isDuckDocumentRef(obj: any): obj is { id: string } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj.id === 'string' &&\n typeof obj.path === 'string'\n );\n}\n\nfunction isRawFirestoreDocumentRef(obj: any): obj is { _path: { segments: string[] } } {\n return (\n obj &&\n typeof obj === 'object' &&\n obj._path &&\n typeof obj._path === 'object' &&\n Array.isArray(obj._path.segments) &&\n obj._path.segments.length > 0\n );\n}\n\nexport function createConvertFirestoreToJS() {\n return function convertFirestoreToJS(input: any, spec: FieldSpec, path: string[] = []): any {\n const pathString = path.join('.') || '';\n\n // ✅ Convert Firestore-native or duck-typed Timestamp\n if (input instanceof Timestamp || isDuckTimestamp(input)) {\n return input.toDate();\n }\n\n // ✅ Convert raw Firestore timestamp objects\n if (isRawFirestoreTimestamp(input)) {\n const seconds = input._seconds || 0;\n const nanoseconds = input._nanoseconds || 0;\n const milliseconds = seconds * 1000 + Math.floor(nanoseconds / 1000000);\n return new Date(milliseconds);\n }\n\n // ✅ Convert Firestore-native or duck-typed DocumentReference\n if (input instanceof DocumentReference || isDuckDocumentRef(input)) {\n return input.id;\n }\n\n // ✅ Convert raw Firestore DocumentReference objects\n if (isRawFirestoreDocumentRef(input)) {\n // Extract document ID from the path segments (last segment)\n return input._path.segments[input._path.segments.length - 1];\n }\n\n if (input === null || input === undefined) return input;\n if (!spec) return input;\n\n if (spec instanceof z.ZodType) {\n // 🔁 Keep in place if it's already a native value\n return input;\n }\n\n if ('_type' in spec) {\n switch (spec._type) {\n case 'timestamp':\n if (input instanceof Timestamp || isDuckTimestamp(input)) {\n return input.toDate();\n }\n if (isRawFirestoreTimestamp(input)) {\n const seconds = input._seconds || 0;\n const nanoseconds = input._nanoseconds || 0;\n const milliseconds = seconds * 1000 + Math.floor(nanoseconds / 1000000);\n return new Date(milliseconds);\n }\n return input;\n\n case 'docRef':\n if (input instanceof DocumentReference || isDuckDocumentRef(input)) {\n return input.id;\n }\n if (isRawFirestoreDocumentRef(input)) {\n return input._path.segments[input._path.segments.length - 1];\n }\n return input;\n\n case 'array':\n return Array.isArray(input)\n ? input.map((item, i) => convertFirestoreToJS(item, spec.of, [...path, `[${i}]`]))\n : input;\n\n case 'record':\n if (typeof input !== 'object' || input === null) return input;\n return Object.fromEntries(\n Object.entries(input)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => [\n k,\n convertFirestoreToJS(v, spec.of, [...path, k]),\n ])\n );\n\n case 'object':\n if (!spec.of || typeof spec.of !== 'object') return input;\n const result: Record = {};\n for (const [key, fieldSpec] of Object.entries(spec.of)) {\n // Only include properties that exist in the input and aren't undefined\n if (key in input && input[key] !== undefined) {\n result[key] = convertFirestoreToJS(input[key], fieldSpec, [...path, key]);\n }\n }\n return result;\n }\n }\n\n if (typeof spec === 'object' && typeof input === 'object' && !Array.isArray(input)) {\n const result: Record = {};\n for (const [key, valSpec] of Object.entries(spec)) {\n // Only include properties that exist in the input and aren't undefined\n if (key in input && input[key] !== undefined) {\n result[key] = convertFirestoreToJS(input[key], valSpec, [...path, key]);\n }\n }\n return result;\n }\n\n return input;\n };\n}\n\n// For backward compatibility, export the default functions\nexport const convertFirestoreToJS = createConvertFirestoreToJS();\n\n// Backward-compatible helper that lazily uses injected default Firestore instance\nexport function convertJSToFirestore(input: any, spec: FieldSpec): any {\n const firestore = FirebaseService.getDefaultInstance().getFirestore();\n return createConvertJSToFirestore(firestore)(input, spec);\n}\n","import { z, ZodTypeAny } from 'zod';\nimport type { FieldSpec, SchemaFromSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\n\nexport function buildClientSchema(spec: S, path: string[] = []): SchemaFromSpec {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid schema spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec) as unknown as SchemaFromSpec;\n }\n\n // Check if object might be a Zod schema (has _def property or ~standard metadata)\n if (typeof spec === 'object' && spec !== null &&\n (('_def' in spec) || ('~standard' in spec && (spec as any)['~standard']?.vendor === 'zod'))) {\n try {\n // Try to use it as a Zod schema directly\n return wrapZodSchema(spec as unknown as z.ZodTypeAny) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this fails, we'll continue with the other checks\n console.warn(`Failed to use object as Zod schema at \"${pathString}\":`, error);\n }\n }\n\n // ----- Array -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.array(buildClientSchema(spec.of, [...path, '[i]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Record -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.record(buildClientSchema(spec.of, [...path, '[key]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Timestamp -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'timestamp') {\n let schema: ZodTypeAny = z.preprocess((val) => {\n if (typeof val === 'string') {\n // Try to parse the string to a Date object\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date; // undefined will cause z.date() to fail\n }\n if (typeof val === 'number') {\n // Handle numeric timestamps\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date;\n }\n // If it's already a Date or something else, return it as is\n return val;\n }, z.date({ required_error: 'Date is required', invalid_type_error: 'Invalid date format' }));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- DocRef -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'docRef') {\n let schema: ZodTypeAny = z.string(); // only ID on client\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Object (plain nested object spec) -----\n if (\n typeof spec === 'object' &&\n spec !== null &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || (typeof spec === 'object' && spec !== null && '_type' in spec && (spec as any)._type === 'object')) {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // If we have an object with fields that look like schema specs, try to handle it as a schema object\n if (typeof spec === 'object' && spec !== null) {\n try {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this also fails, we'll throw the error below\n console.warn(`Failed to handle object as plain schema at \"${pathString}\":`, error);\n }\n }\n\n // 🔥 If we got here, the spec had a structure we didn't handle\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n}\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional, PERMISSION_COLLECTION } from './common';\n\nexport const roleSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional } from './common';\n\nexport const permissionSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { buildClientSchema } from './builders/client';\nimport {\n userSchemaSpec,\n apiKeySpec,\n apiKeysSpec,\n apiKeysObjectSpec\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { bondioPackageSchema, packageSchemaSpec, telnaPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n financialPropertiesSchemaSpec as financialPropertiesSchema,\n packagePriceSchema,\n platformSettingsSchema,\n visualIdentitySchema,\n pricingStrategySchema,\n freeEsimSchema,\n} from './specs/partner';\nimport { analyticsSpec } from './specs/analytics';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { z } from 'zod';\nimport { roleSchemaSpec } from './specs/role';\nimport { permissionSchemaSpec } from './specs/permission';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\n\n\n/** ZOD SCHEMAS */\nexport const HUserSchema = buildClientSchema(userSchemaSpec);\nexport const HBookingSchema = buildClientSchema(bookingSchemaSpec);\nexport const HCountrySchema = buildClientSchema(countrySchemaSpec);\nexport const HCurrencySchema = buildClientSchema(currencySchemaSpec);\nexport const HESIMSchema = buildClientSchema(esimSchemaSpec);\nexport const HPaymentSchema = buildClientSchema(paymentSchemaSpec);\nexport const HMessageSchema = buildClientSchema(messageSchemaSpec);\nexport const HPackageSchema = buildClientSchema(packageSchemaSpec);\nexport const HPromoCodeSchema = buildClientSchema(promoCodeSchemaSpec);\nexport const HPartnerSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPriceListSchema = buildClientSchema(priceListSchemaSpec);\nexport const HFinancialPropertiesSchema = buildClientSchema(financialPropertiesSchema);\nexport const HApiLogSchema = buildClientSchema(apiLogSchemaSpec);\nexport const HPackagePriceSchema = buildClientSchema(packagePriceSchema);\nexport const HubbyModelSchema = buildClientSchema(hubbyModelSpec);\nexport const HPartnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPlatformSettingsSchema = buildClientSchema(platformSettingsSchema);\nexport const HVisualIdentitySchema = buildClientSchema(visualIdentitySchema);\nexport const HPricingStrategySchema = buildClientSchema(pricingStrategySchema);\nexport const HFreeEsimSchema = buildClientSchema(freeEsimSchema);\nexport const HAnalyticsSchema = buildClientSchema(analyticsSpec);\nexport const HRoleSchema = buildClientSchema(roleSchemaSpec);\nexport const HPermissionSchema = buildClientSchema(permissionSchemaSpec);\nexport const HTagSchema = buildClientSchema(tagModelSpec);\nexport const HTrafficPolicySchema = buildClientSchema(trafficPolicySpec);\nexport const HTelnaPackageSchema = buildClientSchema(telnaPackageSchema);\nexport const HBondioPackageSchema = buildClientSchema(bondioPackageSchema);\nexport const HReviewSchema = buildClientSchema(reviewSchemaSpec);\nexport const HReviewSubmissionSchema = buildClientSchema(reviewSubmissionSchemaSpec);\nexport const HDestinationSchema = buildClientSchema(destinationSchemaSpec);\nexport const HDestinationBundleSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const HPackageTemplateSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const HUserTouchpointsSchema = buildClientSchema(userTouchpointsSchemaSpec);\nexport const HLoginRequestSchema = buildClientSchema(loginRequestSchemaSpec);\n// Additional lower-level schemas\nexport const HAddressSchema = addressSchema;\nexport const HRegistrationSchema = registrationSchema;\nexport const HBankingDetailsSchema = bankingDetailsSchema;\nexport const HPartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const HPromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const HVisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const HScheduleFilterSchema = scheduleFilterSchema;\nexport const HPartnerContactSchema = partnerContactSchema;\nexport const HPartnerDataSchema = partnerDataSchema;\nexport const HCommunicationChannelSchema = communicationChannelSchema;\nexport const HBookingStatusSchema = bookingStatusSchema;\nexport const HCommunicationOptionsSchema = communicationOptionsSchema;\nexport const HRewardStrategySchema = rewardStrategySchema;\nexport const HBaseRewardSchema = baseRewardSchema;\nexport const HRewardMultipliersSchema = rewardMultipliersSchema;\nexport const HRewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type HAnalytics = z.infer;\nexport type HUser = z.infer;\nexport type HBooking = z.infer;\nexport type HCountry = z.infer;\nexport type HCurrency = z.infer;\nexport type HESIM = z.infer;\nexport type HPayment = z.infer;\nexport type HMessage = z.infer;\nexport type HPackage = z.infer;\nexport type HPromoCode = z.infer;\nexport type HPartner = z.infer;\nexport type HPriceList = z.infer;\nexport type HApiLog = z.infer;\nexport type HTag = z.infer;\nexport type HTrafficPolicy = z.infer;\nexport type HBondioPackage = z.infer;\nexport type HTelnaPackage = z.infer;\nexport type HReview = z.infer;\nexport type HReviewSubmission = z.infer;\nexport type HDestination = z.infer;\nexport type HDestinationBundle = z.infer;\nexport type HPackageTemplate = z.infer;\nexport type HUserTouchpoints = z.infer;\nexport type HLoginRequest = z.infer;\n// Additional lower-level types\nexport type HAddress = z.infer;\nexport type HRegistration = z.infer;\nexport type HBankingDetails = z.infer;\nexport type HPartnerPackageSpecification = z.infer;\nexport type HPromoPackageSpecification = z.infer;\nexport type HVisualIdentityBanner = z.infer;\nexport type HFinancialProperties = z.infer;\nexport type HScheduleFilter = z.infer;\nexport type HPartnerContact = z.infer;\nexport type HPartnerData = z.infer;\nexport type HCommunicationChannel = z.infer;\nexport type HBookingStatus = z.infer;\nexport type HCommunicationOptions = z.infer;\nexport type HRewardStrategy = z.infer;\nexport type HBaseReward = z.infer;\nexport type HRewardMultipliers = z.infer;\nexport type HRewardPackageType = z.infer;\nexport type HHubbyModel = z.infer;\n\nexport type HubbyModelApp = HHubbyModel;\n\nexport type SupportedLocales = typeof SUPPORTED_LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\nexport type HRole = z.infer;\nexport type HPermission = z.infer; ","import { Firestore } from 'firebase-admin/firestore';\nimport {\n createConvertJSToFirestore,\n createConvertFirestoreToJS\n} from './firestoreTransformUtils';\nimport { FieldSpec } from '../types';\n\n/**\n * Creates converter functions for a specific model type with dependency injection.\n * This lets you use the conversion functions with your own Firebase instance.\n * \n * @param db - Firestore instance to use for document references\n * @param modelSchemaSpec - Schema specification for the model\n * @returns Object with to/from Firestore conversion functions\n */\nexport function createModelConverters(\n db: Firestore,\n modelSchemaSpec: FieldSpec\n) {\n const convertToFirestore = createConvertJSToFirestore(db);\n const convertFromFirestore = createConvertFirestoreToJS();\n\n return {\n /**\n * Converts a model instance to Firestore format\n */\n toFirestore: (model: TModel): TFirestore => {\n return convertToFirestore(model, modelSchemaSpec);\n },\n\n /**\n * Converts Firestore data to a model instance\n */\n fromFirestore: (firestoreData: TFirestore): TModel => {\n return convertFromFirestore(firestoreData, modelSchemaSpec);\n }\n };\n} ","import { buildServerSchema } from './builders/server';\nimport {\n userSchemaSpec,\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { analyticsSpec } from './specs/analytics';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { packageSchemaSpec, telnaPackageSchema, bondioPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n visualIdentityBannersSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n scheduleSchema,\n visualIdentitySchema,\n packagePriceSchemaSpec,\n platformSettingsSchemaSpec\n} from './specs/partner';\n\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\nimport { z } from 'zod';\nimport { DocumentReference, Timestamp } from 'firebase-admin/firestore';\n\n\nimport { convertFirestoreToJS, convertJSToFirestore } from './utils/firestoreTransformUtils';\nimport { HPackage, HPartner, HPriceList, HPromoCode, HUserTouchpoints } from './index.client';\nimport { buildClientSchema } from './builders/client';\n\nexport {\n partnerSchemaSpec,\n analyticsSpec,\n packageSchemaSpec,\n userSchemaSpec,\n bookingSchemaSpec,\n countrySchemaSpec,\n currencySchemaSpec,\n esimSchemaSpec,\n paymentSchemaSpec,\n messageSchemaSpec,\n promoCodeSchemaSpec,\n priceListSchemaSpec,\n apiLogSchemaSpec,\n reviewSchemaSpec,\n reviewSubmissionSchemaSpec,\n destinationSchemaSpec,\n destinationBundleSchemaSpec,\n packageTemplateSchemaSpec,\n userTouchpointsSchemaSpec,\n loginRequestSchemaSpec\n};\n\n\n/** ZOD SCHEMAS */\nexport const UserSchema = buildServerSchema(userSchemaSpec);\nexport const UserFirestoreSchema = buildServerSchema(userSchemaSpec);\nexport const BookingSchema = buildServerSchema(bookingSchemaSpec);\nexport const CountrySchema = buildServerSchema(countrySchemaSpec);\nexport const CurrencySchema = buildServerSchema(currencySchemaSpec);\nexport const ESIMSchema = buildServerSchema(esimSchemaSpec);\nexport const PaymentSchema = buildServerSchema(paymentSchemaSpec);\nexport const MessageSchema = buildServerSchema(messageSchemaSpec);\nexport const PackageSchema = buildServerSchema(packageSchemaSpec);\nexport const PromoCodeSchema = buildServerSchema(promoCodeSchemaSpec);\nexport const PartnerSchema = buildServerSchema(partnerSchemaSpec);\nexport const PriceListSchema = buildServerSchema(priceListSchemaSpec);\nexport const ApiLogSchema = buildServerSchema(apiLogSchemaSpec);\nexport const VisualIdentitySchema = buildServerSchema(visualIdentitySchema);\nexport const PackagePriceSchema = buildServerSchema(packagePriceSchemaSpec);\nexport const PlatformSettingsSchema = buildServerSchema(platformSettingsSchemaSpec);\nexport const ScheduleSchema = buildServerSchema(scheduleSchema);\nexport const AnalyticsSchema = buildServerSchema(analyticsSpec);\nexport const TagSchema = buildServerSchema(tagModelSpec);\nexport const TelnaPackageSchema = buildServerSchema(telnaPackageSchema);\nexport const BondioPackageSchema = buildServerSchema(bondioPackageSchema);\nexport const TrafficPolicySchema = buildServerSchema(trafficPolicySpec);\nexport const ReviewSchema = buildServerSchema(reviewSchemaSpec);\nexport const ReviewSubmissionSchema = buildServerSchema(reviewSubmissionSchemaSpec);\nexport const DestinationSchema = buildServerSchema(destinationSchemaSpec);\nexport const DestinationBundleSchema = buildServerSchema(destinationBundleSchemaSpec);\nexport const PackageTemplateSchema = buildServerSchema(packageTemplateSchemaSpec);\nexport const UserTouchpointsSchema = buildServerSchema(userTouchpointsSchemaSpec);\nexport const LoginRequestSchema = buildServerSchema(loginRequestSchemaSpec);\n\n// Additional lower-level schemas\nexport const AddressSchema = addressSchema;\nexport const RegistrationSchema = registrationSchema;\nexport const BankingDetailsSchema = bankingDetailsSchema;\nexport const PartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const PromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const VisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const ScheduleFilterSchema = scheduleFilterSchema;\nexport const PartnerContactSchema = partnerContactSchema;\nexport const PartnerDataSchema = partnerDataSchema;\nexport const CommunicationChannelSchema = communicationChannelSchema;\nexport const BookingStatusSchema = bookingStatusSchema;\nexport const CommunicationOptionsSchema = communicationOptionsSchema;\nexport const VisualIdentityBannersSchema = visualIdentityBannersSchema;\nexport const RewardStrategySchema = rewardStrategySchema;\nexport const BaseRewardSchema = baseRewardSchema;\nexport const RewardMultipliersSchema = rewardMultipliersSchema;\nexport const RewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type User = z.infer;\nexport type UserFirestore = z.infer;\nexport type Booking = z.infer;\nexport type Country = z.infer;\nexport type Currency = z.infer;\nexport type ESIM = z.infer;\nexport type Payment = z.infer;\nexport type Message = z.infer;\nexport type Package = z.infer;\nexport type PromoCode = z.infer;\nexport type Partner = z.infer;\nexport type PriceList = z.infer;\nexport type ApiLog = z.infer;\nexport type Analytics = z.infer;\nexport type Schedule = z.infer;\nexport type TelnaPackage = z.infer;\nexport type BondioPackage = z.infer;\nexport type TrafficPolicy = z.infer;\nexport type Review = z.infer;\nexport type ReviewSubmission = z.infer;\nexport type Destination = z.infer;\nexport type DestinationBundle = z.infer;\nexport type PackageTemplate = z.infer;\nexport type UserTouchpoints = z.infer;\nexport type LoginRequest = z.infer;\n\n// Additional lower-level types\nexport type Address = z.infer;\nexport type Registration = z.infer;\nexport type BankingDetails = z.infer;\nexport type PartnerPackageSpecification = z.infer;\nexport type PackageSpecification = z.infer;\nexport type VisualIdentity = z.infer;\nexport type VisualIdentityBanner = z.infer;\nexport type VisualIdentityBanners = z.infer;\nexport type VisualIdentityBannerStrategy = VisualIdentityBanners;\nexport type ScheduleFilter = z.infer;\nexport type PartnerContact = z.infer;\nexport type PartnerData = z.infer;\nexport type CommunicationChannel = z.infer;\nexport type BookingStatus = z.infer;\nexport type CommunicationOptions = z.infer;\nexport type PackagePrice = z.infer;\nexport type PlatformSettings = z.infer;\nexport type RewardStrategy = z.infer;\nexport type BaseReward = z.infer;\nexport type RewardMultipliers = z.infer;\nexport type RewardPackageType = z.infer;\nexport type BookingApiRequest = Booking;\nexport type BookingApiResponse = Booking;\nexport type PartnerApiRequest = Partner;\nexport type PartnerApiResponse = Partner;\nexport type PriceListApiRequest = PriceList;\nexport type PriceListApiResponse = PriceList;\nexport type ApiLogApiRequest = ApiLog;\nexport type ApiLogApiResponse = ApiLog;\nexport type Tag = z.infer;\n\nexport * from './index.client';\n\nexport type HubbyModel = {\n id: string;\n created_at: Date;\n updated_at: Date | null;\n created_by: string;\n updated_by: string | null;\n}\n\nexport type HubbyModelFirestore = {\n id: string;\n created_at: Timestamp;\n updated_at: Timestamp | null;\n created_by: DocumentReference | null | string;\n updated_by: DocumentReference | null | string;\n}\n\nexport const partnerFromFirestore = (partner: Partner): HPartner => {\n return convertFirestoreToJS(partner, partnerSchemaSpec);\n}\n\nexport const partnerToFirestore = (partner: HPartner): Partner => {\n return convertJSToFirestore(partner, partnerSchemaSpec);\n}\n\nexport const userToFirestore = (user: User): UserFirestore => {\n return convertJSToFirestore(user, userSchemaSpec);\n}\n\nexport const userFromFirestore = (user: UserFirestore): User => {\n return convertFirestoreToJS(user, userSchemaSpec);\n}\n\nexport const priceListFromFirestore = (priceList: PriceList): HPriceList => {\n return convertFirestoreToJS(priceList, priceListSchemaSpec);\n}\n\nexport const priceListToFirestore = (priceList: HPriceList): PriceList => {\n return convertJSToFirestore(priceList, priceListSchemaSpec);\n}\n\nexport const promoCodeFromFirestore = (promoCode: PromoCode): HPromoCode => {\n return convertFirestoreToJS(promoCode, promoCodeSchemaSpec);\n}\n\nexport const promoCodeToFirestore = (promoCode: HPromoCode): PromoCode => {\n return convertJSToFirestore(promoCode, promoCodeSchemaSpec);\n}\n\nexport const userTouchpointsFromFirestore = (userTouchpoints: UserTouchpoints): HUserTouchpoints => {\n return convertFirestoreToJS(userTouchpoints, userTouchpointsSchemaSpec);\n}\n\nexport const userTouchpointsToFirestore = (userTouchpoints: HUserTouchpoints): UserTouchpoints => {\n return convertJSToFirestore(userTouchpoints, userTouchpointsSchemaSpec);\n}\n\n\nexport const bookingAppSchema = buildClientSchema(bookingSchemaSpec);\nexport const partnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const destinationAppSchema = buildClientSchema(destinationSchemaSpec);\nexport const destinationBundleAppSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const packageTemplateAppSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const promoPackageSpecificationAppSchema = buildClientSchema(promoPackageSpecificationSchema);\n// Export the type and constant\nexport type SupportedLocales = typeof LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\n// Dependency Injection exports\nexport { createModelConverters } from './utils/modelConverterFactory';\nexport { createConvertJSToFirestore, createConvertFirestoreToJS } from './utils/firestoreTransformUtils';\nexport { FirebaseService, createFirebaseService } from './services/firebase';\n\nexport { USER_COLLECTION, PACKAGE_COLLECTION, PARTNER_COLLECTION, BOOKING_COLLECTION, ROLE_COLLECTION, PERMISSION_COLLECTION, TRAFFIC_POLICY_COLLECTION, PROFILE_COLLECTION, PROMO_CODE_COLLECTION, COUNTRY_COLLECTION, ESIM_COLLECTION, PAYMENT_COLLECTION, PRICE_LIST_COLLECTION, MESSAGE_COLLECTION, CURRENCY_COLLECTION, API_LOG_COLLECTION, REVIEW_COLLECTION, REVIEW_SUBMISSION_COLLECTION, USER_TOUCHPOINTS_COLLECTION, DESTINATION_COLLECTION, DESTINATION_OFFER_COLLECTION } from './specs/common';\n\n"]} \ No newline at end of file +{"version":3,"sources":["../src/builders/server.ts","../src/common.ts","../src/services/firebase.ts","../src/specs/user.ts","../src/specs/common.ts","../src/specs/booking.ts","../src/constants.ts","../src/specs/promocode.ts","../src/specs/country.ts","../src/specs/currency.ts","../src/specs/esim.ts","../src/specs/payment.ts","../src/specs/analytics.ts","../src/specs/message.ts","../src/specs/traffic_policy.ts","../src/specs/package.ts","../src/specs/partner.ts","../src/specs/apiLogs.ts","../src/specs/userTouchpoints.ts","../src/specs/review.ts","../src/specs/destination.ts","../src/specs/package_template.ts","../src/specs/login_request.ts","../src/utils/firestoreTransformUtils.ts","../src/builders/client.ts","../src/specs/role.ts","../src/specs/permission.ts","../src/index.client.ts","../src/utils/modelConverterFactory.ts","../src/index.server.ts"],"names":["z","packageSpecificationSchema","REVIEW_COLLECTION","Timestamp","convertJSToFirestore","convertFirestoreToJS","SUPPORTED_LOCALES"],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { Timestamp } from 'firebase-admin/firestore';\nimport type { FieldSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\nimport { FirebaseService } from '../services/firebase';\n\nexport const buildServerSchema = (spec: FieldSpec, path: string[] = []): z.ZodTypeAny => {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod schema passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec);\n }\n\n // ----- Array -----\n if ('_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n\n const itemSchema =\n spec.of instanceof z.ZodType\n ? spec.of\n : buildServerSchema(spec.of, [...path, '[i]']);\n\n let arraySchema = z.array(itemSchema);\n if (spec.nullable) arraySchema = arraySchema.nullable();\n if (spec.optional) arraySchema = arraySchema.optional();\n return arraySchema;\n }\n\n // ----- Record -----\n if ('_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n\n const valueSchema =\n spec.of instanceof z.ZodType\n ? spec.of\n : buildServerSchema(spec.of, [...path, '[key]']);\n\n let recordSchema = z.record(valueSchema);\n if (spec.nullable) recordSchema = recordSchema.nullable();\n if (spec.optional) recordSchema = recordSchema.optional();\n return recordSchema;\n }\n\n // ----- Timestamp -----\n if ('_type' in spec && spec._type === 'timestamp') {\n let tsSchema = z.date().transform(date => Timestamp.fromDate(date));\n if (spec.nullable) tsSchema = tsSchema.nullable();\n if (spec.optional) tsSchema = tsSchema.optional();\n return tsSchema;\n }\n\n // ----- Document Reference -----\n if ('_type' in spec && spec._type === 'docRef') {\n let refSchema = z.string().transform(id => {\n const firestore = FirebaseService.getDefaultInstance().getFirestore()\n return firestore.collection(spec.collection).doc(id);\n });\n if (spec.nullable) refSchema = refSchema.nullable();\n if (spec.optional) refSchema = refSchema.optional();\n return refSchema;\n }\n\n // ----- Nested object shape -----\n if (typeof spec === 'object' && !('_type' in spec)) {\n const shape: Record = {};\n for (const [key, val] of Object.entries(spec)) {\n shape[key] = buildServerSchema(val, [...path, key]);\n }\n return z.object(shape);\n }\n\n // ----- Object -----\n if (\n typeof spec === 'object' &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildServerSchema);\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || typeof spec === 'object' && '_type' in spec && spec._type === 'object') {\n return wrapPlainObjectSchema(spec, path, buildServerSchema);\n }\n\n // ----- Unknown or malformed spec -----\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n};\n","import { ZodTypeAny, z } from 'zod';\nimport type { SchemaBuilder } from './types';\n\n/**\n * Ensures a Zod schema is wrapped to be optional and/or nullable,\n * if not already. Use this in recursive schema builders.\n * Also applies any other supported schema transformations provided in options.\n */\nexport function wrapZodSchema(\n schema: ZodTypeAny,\n options?: {\n optional?: boolean;\n nullable?: boolean;\n min?: number;\n max?: number;\n // Allow arbitrary extensions via dynamic property\n [key: string]: any;\n }\n): ZodTypeAny {\n if (!options) return schema;\n\n let wrapped = schema;\n\n // Handle nullable and optional specially since they're common\n if (options.nullable && !wrapped.isNullable?.()) {\n wrapped = wrapped.nullable();\n }\n\n if (options.optional && !wrapped.isOptional?.()) {\n wrapped = wrapped.optional();\n }\n\n // Process all other options dynamically\n for (const [key, value] of Object.entries(options)) {\n // Skip the already handled properties and undefined values\n if (['nullable', 'optional'].includes(key) || value === undefined) {\n continue;\n }\n\n // Check if the schema has a method matching the option key\n if (typeof (wrapped as any)[key] === 'function') {\n wrapped = (wrapped as any)[key](value);\n }\n }\n\n return wrapped;\n}\n\nexport function wrapObjectSchema(\n spec: any, // using any to support dynamic `spec.type === 'object'`\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n if (!('of' in spec)) {\n throw new Error(`Object spec at \"${pathString}\" is missing 'of'`);\n }\n\n const shape: Record = {};\n for (const [key, value] of Object.entries(spec.of)) {\n shape[key] = builder(value as any, [...path, key]);\n }\n\n let objectSchema: ZodTypeAny = z.object(shape);\n if (spec.nullable) objectSchema = objectSchema.nullable();\n if (spec.optional) objectSchema = objectSchema.optional();\n return objectSchema;\n}\n\n/**\n * Wraps a plain object shape (no `type: 'object'`) into a Zod schema.\n * Assumes each field is either a Zod schema or another FieldSpec.\n */\nexport function wrapPlainObjectSchema(\n spec: Record,\n path: string[],\n builder: SchemaBuilder\n): ZodTypeAny {\n const pathString = path.join('.');\n\n // Handle object field specs with '_type': 'object'\n if ('_type' in spec && spec._type === 'object' && 'of' in spec) {\n return wrapObjectSchema(spec, path, builder);\n }\n\n const shape: Record = {};\n\n // Only add fields to the schema if they're not special control properties\n for (const [key, val] of Object.entries(spec)) {\n if (key !== '_type' && key !== 'nullable' && key !== 'optional') {\n shape[key] = builder(val, [...path, key]);\n }\n }\n\n // Create the base object schema\n let schema: ZodTypeAny = z.object(shape);\n\n // Apply nullable/optional modifiers if needed\n if ('nullable' in spec && spec.nullable === true) {\n schema = schema.nullable();\n }\n\n if ('optional' in spec && spec.optional === true) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nexport const SCHEMA_MARKER = Symbol('ZodSchemaSpecMarker');\n\nexport function markAsSchemaSpec(spec: T): T {\n Object.defineProperty(spec, SCHEMA_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return spec;\n}\n\nexport function isSchemaSpec(obj: unknown): obj is Record {\n return typeof obj === 'object' && obj !== null && SCHEMA_MARKER in obj;\n}","import { getApps, initializeApp, cert, AppOptions, App } from \"firebase-admin/app\";\nimport { getFirestore, Firestore } from \"firebase-admin/firestore\";\nimport { applicationDefault } from \"firebase-admin/app\";\n\nexport interface FirebaseConfig {\n credential?: AppOptions['credential'];\n projectId?: string;\n storageBucket?: string;\n databaseURL?: string;\n // Options for testing\n isTest?: boolean;\n}\n\n// Define variable to hold singleton instance (must be injected by consumer/tests)\nlet defaultInstance: FirebaseService | null = null;\n\nexport class FirebaseService {\n\n private firestoreInstance: Firestore;\n constructor(db: Firestore) {\n this.firestoreInstance = db;\n }\n\n getFirestore(): Firestore {\n return this.firestoreInstance;\n }\n\n // Get default instance with singleton pattern\n public static getDefaultInstance(): FirebaseService {\n if (defaultInstance === null) {\n throw new Error(\n \"FirebaseService default instance not set. Inject a FirebaseService via FirebaseService.setDefaultInstance(...) in your application startup or test setup.\"\n );\n }\n return defaultInstance;\n }\n\n // Allow for setting a custom default instance (useful for tests)\n public static setDefaultInstance(instance: FirebaseService): void {\n defaultInstance = instance;\n }\n}\n\n// Function to create a new Firebase service instance (use in tests or by consumers before injection)\nexport function createFirebaseService(db: Firestore): FirebaseService {\n return new FirebaseService(db);\n}","import { z } from 'zod';\nimport { PARTNER_COLLECTION, PROFILE_COLLECTION, timestampNullableOptional, timestampRequired, timestampNullable, ROLE_COLLECTION, PERMISSION_COLLECTION } from './common';\nimport { markAsSchemaSpec } from '../common'\n\nexport const apiKeySpec = {\n expires_at: { _type: 'timestamp' as const },\n secret: z.string(),\n is_active: z.boolean(),\n}\n\nexport const apiKeysSpec = {\n _type: 'record' as const,\n of: {\n _type: 'object' as const,\n of: apiKeySpec\n }\n}\n\nexport const apiKeysObjectSpec = {\n _type: 'object' as const,\n of: {\n allowed_keys: { _type: 'array' as const, nullable: true, optional: true, of: z.string() },\n keys: apiKeysSpec\n },\n nullable: true,\n optional: true\n}\n\nexport const userSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string().nullable(),\n email: z.string().email().nullable(),\n stripe_id: z.string().nullable().optional(),\n referral: z.string().nullable().optional(),\n fcm: z.string().optional(),\n deeplink: z.string().nullable().optional(),\n gender: z.string().nullable().optional(),\n company: z.string().nullable().optional(),\n coordinates: z.string().nullable().optional(),\n platform: z.enum(['ios', 'android']).nullable().optional(),\n platform_version: z.string().nullable().optional(),\n device_type: z.string().nullable().optional(),\n app_version: z.string().nullable().optional(),\n parameters: z.any().nullable().optional(),\n locale: z.string().nullable().optional(),\n phone_model: z.string().nullable().optional(),\n phone_os: z.string().nullable().optional(),\n phone_os_version: z.string().nullable().optional(),\n ios: z.boolean().nullable().optional(),\n has_card_saved: z.boolean().nullable().optional(),\n admin: z.boolean().nullable().optional(),\n api_keys: apiKeysObjectSpec,\n profileRef: z.string().nullable().optional(),\n currency: z.string().nullable().optional(),\n receipt_email: z.string().nullable().optional(),\n source: z.enum(['direct', 'promo', 'platform']).nullable().optional(),\n role: { _type: 'docRef' as const, collection: ROLE_COLLECTION, optional: true, nullable: true },\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n balance: z.number().nullable().optional(),\n createdAt: { _type: 'timestamp' as const },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, optional: true, nullable: true },\n review_requested: timestampNullableOptional,\n last_seen: timestampNullableOptional,\n created_at: timestampNullableOptional,\n updated_at: timestampNullableOptional,\n created_by: z.string().nullable().optional(),\n updated_by: z.string().nullable().optional(),\n push_to_start_token: z.string().nullable().optional(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const PARTNER_COLLECTION = '/companies/hubby/partners';\nexport const USER_COLLECTION = 'users';\nexport const PROFILE_COLLECTION = '/companies/hubby/profiles';\nexport const PACKAGE_COLLECTION = '/companies/hubby/packages';\nexport const PACKAGE_TEMPLATE_COLLECTION = '/companies/hubby/package_templates';\nexport const PROMO_CODE_COLLECTION = '/companies/hubby/promo_codes';\nexport const COUNTRY_COLLECTION = 'countries';\nexport const ESIM_COLLECTION = 'esims';\nexport const PAYMENT_COLLECTION = 'payments';\nexport const PRICE_LIST_COLLECTION = 'price_lists';\nexport const BOOKING_COLLECTION = 'bookings';\nexport const MESSAGE_COLLECTION = 'messages';\nexport const CURRENCY_COLLECTION = 'currencies';\nexport const API_LOG_COLLECTION = 'api_logs'\nexport const ROLE_COLLECTION = 'roles';\nexport const PERMISSION_COLLECTION = 'permissions';\nexport const TRAFFIC_POLICY_COLLECTION = 'traffic_policies';\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\nexport const DESTINATION_COLLECTION = 'destinations';\nexport const DESTINATION_OFFER_COLLECTION = 'offers';\nexport const USER_TOUCHPOINTS_COLLECTION = 'user_touchpoints';\n\n\nexport const packageTypes = ['data-limited', 'time-limited', 'starter', 'unlimited'];\n\n// Timestamp specs\nexport const timestampNullableOptional = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampNullable = { _type: 'timestamp' as const, nullable: true, optional: true };\nexport const timestampRequired = { _type: 'timestamp' as const, nullable: false, optional: false };\n\nexport const hubbyModelSpec = {\n id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n created_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: 'users', nullable: true, optional: true },\n}\n\nexport const tagModelSpec = {\n ...hubbyModelSpec,\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n color: z.string().nullable().optional(),\n}","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n PROMO_CODE_COLLECTION,\n USER_COLLECTION,\n ESIM_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema } from '../constants';\nimport { packageSpecificationSchema } from './promocode';\n\n// Enum for communication channels\nexport const communicationChannelSchema = z.enum([\n 'EMAIL',\n 'WHATSAPP',\n 'PUSH_NOTIFICATION',\n 'SMS'\n]);\nexport type CommunicationChannelType = z.infer;\n\n// For backward compatibility\nexport type CommunicationChannel = CommunicationChannelType;\n\n// Add enum-like object for use in code\nexport const CommunicationChannel = {\n EMAIL: 'EMAIL' as const,\n WHATSAPP: 'WHATSAPP' as const,\n PUSH_NOTIFICATION: 'PUSH_NOTIFICATION' as const,\n SMS: 'SMS' as const\n} as const;\n\n// Status type for bookings\nexport const bookingStatusSchema = z.enum([\n 'PENDING',\n 'CONFIRMED',\n 'COMPLETED',\n 'CANCELLED',\n 'UNPAID',\n 'EXPIRED'\n]);\nexport type BookingStatus = z.infer;\n\n// Communication options schema\nexport const communicationOptionsSchema = z.object({\n should_send_message: z.boolean(),\n channels: z.array(communicationChannelSchema)\n});\n\nexport const financialInsightsSchema = z.object({\n partner_commission_percentage: z.number().nullable().optional(),\n total_commission_amount: z.number().nullable().optional(),\n price: z.number().nullable().optional(),\n}).nullable().optional()\n\nexport type CommunicationOptions = z.infer;\n\n// Define the booking schema spec\nexport const bookingSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n external_id: z.string().nullable().optional(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n title: z.string().nullable().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n full_name: z.string().nullable().optional(),\n pax: z.number().optional().nullable(),\n email: z.string().email().nullable().optional(),\n phone: z.string().nullable().optional(),\n booking_id: z.string().nullable().optional(),\n flight_number: z.string().optional(),\n gender: z.enum(['M', 'F', 'O']).optional(),\n sent_messages: z.record(z.any()).optional(),\n locale: supportedLocalesSchema,\n status: bookingStatusSchema.optional().nullable(),\n data: {\n _type: 'object' as const,\n of: {\n source: z.string(),\n manual: z.boolean(),\n action: z.string().nullable().optional()\n },\n nullable: true,\n optional: true\n },\n communication_options: {\n _type: 'object' as const,\n of: {\n should_send_message: z.boolean(),\n channels: {\n _type: 'array' as const,\n of: communicationChannelSchema\n }\n }\n },\n is_processed_for_esim_restoration: z.boolean().optional().nullable(),\n is_pseudonymized: z.boolean().optional().nullable(),\n import_id: z.string().nullable().optional(),\n package_specifications: z.array(packageSpecificationSchema).min(1),\n departure_date: timestampRequired,\n return_date: timestampNullable,\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION },\n financial_insights: financialInsightsSchema,\n promo_codes: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION },\n nullable: true,\n optional: true\n },\n users: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: USER_COLLECTION },\n nullable: true,\n optional: true\n },\n esims: {\n _type: 'array' as const,\n of: { _type: 'docRef' as const, collection: ESIM_COLLECTION },\n nullable: true,\n optional: true\n },\n hubby_foreign_identifiers: z.object({\n messaging_contact_id: z.string().nullable()\n }).nullable().optional()\n});\n\n","import { z } from \"zod\";\n\nexport const SUPPORTED_LOCALES = [\n \"en-US\",\n \"en-EU\",\n \"en-GB\",\n \"en-CA\",\n \"nl-NL\",\n \"de-DE\",\n \"fr-FR\",\n \"fr-CA\",\n \"it-IT\",\n \"es-ES\",\n \"cs-CZ\",\n \"pl-PL\",\n \"pt-PT\",\n \"fr-BE\",\n \"nl-BE\",\n \"de-AT\",\n \"de-CH\",\n \"fr-CH\",\n \"it-CH\",\n \"sv-SE\",\n \"sk-SK\",\n \"de-BE\",\n \"en-AU\",\n \"da-DK\",\n \"ko-KR\",\n] as const;\n\n// Define the type using TypeScript's typeof and indexing\n\n// Define the type using TypeScript's typeof and indexing\nexport type SupportedLocales = (typeof SUPPORTED_LOCALES)[number];\n\n// Create a Zod schema for validation\nexport const supportedLocalesSchema = z.enum(SUPPORTED_LOCALES);\n\n// Type inference from the schema (alternative way to define the type)\nexport type SupportedLocalesFromSchema = z.infer;\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n PACKAGE_COLLECTION,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// Define package specification schema for use in promo code\nexport const packageSpecificationSchema = z.object({\n destination: z.string().optional().or(z.array(z.string())),\n iso3: z.string().optional(),\n size: z.string().optional(),\n package_id: z.string().optional(),\n bundle_id: z.string().optional(),\n iata_code: z.string().optional(),\n package_duration: z.number().optional(),\n package_type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).optional(),\n traffic_policy: z.string().optional(),\n});\n\n// Define the promo code schema spec\nexport const promoCodeSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n redeemed_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // PromoCode specific fields\n uuid: z.string().uuid().nullable().optional(),\n external_id: z.string(),\n code: z.string(),\n claimed_at: timestampNullableOptional,\n allowance_user: z.number(),\n allowance_total: z.number(),\n type: z.enum(['discount', 'booking', 'booking_without_destination']).nullable().or(z.string()),\n usage: z.array(z.string()),\n uuid_usage: z.array(z.string()),\n package_specification: packageSpecificationSchema.optional(),\n valid_from: timestampRequired,\n valid_to: timestampRequired,\n\n // Reference fields\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION, nullable: true },\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true },\n\n // Optional fields based on the type\n discount: z.number().optional(),\n package_size: z.string().optional(),\n countries: z.array(z.string()).optional(),\n max_bytes: z.number().optional(),\n starter_data: z.number().optional()\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const countrySchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n bokun_id: z.number().nullable(),\n LTE: z.boolean().nullable(),\n apn: z.string().nullable(),\n click_count: z.number().nullable(),\n global_network: z.string().nullable(),\n global_price: z.number().nullable(),\n hubby: z.number().nullable(),\n imsi: z.number().nullable(),\n has_esim: z.boolean(),\n name: z.string().nullable(),\n region: z.boolean().nullable(),\n i18n_name: z.record(z.string()),\n is_region: z.boolean().nullable(),\n countries: z.array(z.string()).nullable(),\n tier: z.number().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define schema for conversion rates (for backward compatibility)\nexport const conversionRateSchema = z.object({\n currency: z.number()\n});\n\nexport type CoversionRate = z.infer;\n\n// Define the currency schema spec\nexport const currencySchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n // ISO 4217 currency code (e.g., \"USD\", \"EUR\")\n code: z.string().describe('ISO 4217 currency code (e.g., \"USD\", \"EUR\")'),\n // Currency symbol (e.g., \"$\", \"€\")\n symbol: z.string().describe('Currency symbol (e.g., \"$\", \"€\")'),\n // Full name of the currency (e.g., \"US Dollar\")\n name: z.string().describe('Full name of the currency (e.g., \"US Dollar\")'),\n // Exchange rate relative to base currency\n rate: z.number().describe('Exchange rate relative to base currency'),\n // Whether this is the default currency\n is_default: z.boolean().describe('Whether this is the default currency')\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n PARTNER_COLLECTION,\n PAYMENT_COLLECTION,\n timestampNullable,\n timestampRequired\n} from './common';\n\n\nexport const statusHistorySchema = z.object({\n telna_esim_status: z.number(),\n source: z.string(),\n status: z.string(),\n timestamp: timestampRequired as unknown as z.ZodType,\n})\n\nexport const esimStatusHistorySchema = markAsSchemaSpec(z.array(statusHistorySchema).nullable().optional());\n\n// Define the eSIM schema spec\nexport const esimSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Common eSIM fields\n imsi: z.number(),\n qr: z.string(),\n iccid: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable().optional(),\n total_data: z.number(),\n data_left: z.number(),\n uuid: z.string().uuid().nullable().optional(),\n data_used: z.boolean(),\n status: z.string().nullable(),\n status_history: esimStatusHistorySchema,\n status_updated_at: timestampNullable,\n name: z.string(),\n android_auto: z.boolean(),\n partner_price: z.number().nullable(),\n promo: z.string().nullable(),\n type: z.enum(['api', 'promo', 'balance', 'code', 'external', 'payment']),\n is_auto_install: z.boolean(),\n is_archived: z.boolean(),\n user: z.string().nullable(),\n payment: z.string().nullable(),\n apn: z.string().nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Timestamp fields\n time_assigned: timestampNullable,\n last_updated: timestampNullable\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n USER_COLLECTION,\n timestampRequired,\n hubbyModelSpec,\n PARTNER_COLLECTION\n} from './common';\n\n// Define the payment schema spec\nexport const paymentSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n\n // Core payment fields (universal across ALL payment types)\n amount: z.number(),\n customer: z.string(),\n date: timestampRequired,\n source: z.enum(['app', 'webapp', 'platform']),\n invoice: z.string().optional(),\n fee: z.number().optional(),\n topup: z.boolean(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']).optional(), // 'pending' | 'processing' | 'completed' | 'failed'\n payment_intent_id: z.string().nullable().optional(), // Stripe PaymentIntent ID\n error_message: z.string().nullable().optional(), // Error message\n // Common resolved package specification (same format for all sources)\n package_specifications: z.array(z.object({\n package_type: z.string().optional(),\n package_size: z.string().optional(),\n package_duration: z.number().optional(),\n destination: z.string().optional(),\n iso3: z.string().optional(),\n })).optional(),\n\n // Reference fields\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n\n // Source-specific payment properties\n app_payment_properties: z.object({\n package: z.string().optional(), // package_id for app payments\n promo: z.string().optional(),\n iccid: z.string().optional(),\n global: z.string().optional(),\n balance_used: z.number().optional(),\n booking_id: z.string().nullable().optional(),\n discount_amount: z.string().optional(),\n is_special_offer: z.boolean().optional(),\n special_offer_discount: z.number().optional(),\n }).optional(),\n\n webapp_platform_payment_properties: z.object({\n promo_codes: z.array(z.string()).optional(),\n booking_id: z.string().optional(),\n partner: z.string().optional(),\n purchaseType: z.string().optional(),\n affiliateId: z.string().nullable().optional(),\n partner_name: z.string().optional(),\n locale: z.string().optional(),\n }).optional(),\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec, PARTNER_COLLECTION } from './common';\n\n// Country schema spec\nexport const analyticsSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n service: z.string(),\n date: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/), // YYYY-MM-DD\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n event: z.string(),\n parameter: z.string().nullable(),\n sum: z.number(),\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired } from './common';\n\n// Define the message schema spec\nexport const messageSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n key: z.string(),\n method: z.enum([\"push\", \"sms\", \"email\"]),\n status: z.enum([\"pending\", \"sent\", \"failed\", \"delivered\"]),\n created_at: timestampRequired,\n updated_at: timestampRequired\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { hubbyModelSpec } from './common';\n\n// Country schema spec\nexport const trafficPolicySpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n name: z.string(),\n description: z.string(),\n external_id: z.string(),\n provider: z.string()\n})","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n COUNTRY_COLLECTION,\n PARTNER_COLLECTION,\n TRAFFIC_POLICY_COLLECTION,\n timestampRequired,\n hubbyModelSpec\n} from './common';\n\nimport { countrySchemaSpec } from './country';\n\n// Define the package schema spec\nexport const packageSchemaSpec = markAsSchemaSpec({\n ...hubbyModelSpec,\n // Package specific fields\n external_id: z.string(),\n provider: z.string(),\n coverage_label: z.string().nullable(),\n label: z.string(),\n bytes: z.number(),\n hidden: z.boolean(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n price: z.number(),\n partner_price: z.number(),\n days: z.number(),\n name: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']).nullable(),\n throttling: z.number().optional(),\n provider_parameters: z.object({\n imsi: z.number()\n }).nullable(),\n\n // Reference fields\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n\n // Nested country data - need to use dynamic reference to country schema\n // This would typically be handled better with a proper recursive schema definition\n // but for simplicity, we're using any type here\n country_data: {\n _type: 'object' as const,\n of: countrySchemaSpec,\n nullable: true,\n optional: true\n }\n // country_data: z.any().nullable()\n});\n\nexport const commonPackageSchema = markAsSchemaSpec({\n size: z.string(),\n iso: z.string(),\n days: z.number(),\n price: z.number(),\n is_hidden: z.boolean(),\n is_active: z.boolean(),\n priority: z.number(),\n packageType: z.string(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n});\n\nexport const telnaPackageSchema = markAsSchemaSpec({\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n ...commonPackageSchema,\n});\n\nexport const bondioPackageSchema = markAsSchemaSpec({\n ...commonPackageSchema,\n label: z.enum(['lambda', 'tau']),\n periodDays: z.number(),\n periodIterations: z.number(),\n throttling: z.number().optional().nullable(),\n \n});","import { z, ZodLazy } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { supportedLocalesSchema, SUPPORTED_LOCALES, SupportedLocales } from '../constants';\nimport {\n PARTNER_COLLECTION,\n USER_COLLECTION,\n PACKAGE_COLLECTION,\n PRICE_LIST_COLLECTION,\n tagModelSpec,\n timestampRequired,\n timestampNullableOptional\n} from './common';\n\n// ===== Helper schemas for nested structures =====\n\n// Address schema\nexport const addressSchema = z.object({\n street: z.string().nullable().optional(),\n city: z.string().nullable().optional(),\n postal_code: z.string().nullable().optional(),\n country: z.string().nullable().optional()\n});\n\n// Emit event schema\nexport const emitEventSchema = z.object({\n topup: z.boolean().optional().default(false),\n redemption: z.boolean().optional().default(false),\n activation: z.boolean().optional().default(false),\n depletion: z.boolean().optional().default(false),\n});\n\n// Registration schema\nexport const registrationSchema = z.object({\n chamber_of_commerce_number: z.string().nullable().optional(),\n vat_number: z.string().nullable().optional(),\n anvr_number: z.number().nullable().optional(),\n tax_number: z.string().nullable().optional()\n});\n\n// Banking details schema\nexport const bankingDetailsSchema = z.object({\n account_holder: z.string().nullable().optional(),\n billing_email: z.string().nullable().optional(),\n bank_name: z.string().nullable().optional(),\n iban: z.string().nullable().optional(),\n currency: z.string().nullable().optional()\n});\n\n// Package price schema\nexport const packagePriceSchema = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: z.object({ _type: z.literal('docRef'), collection: z.literal(PACKAGE_COLLECTION) })\n});\n\n// Package specification schema\nexport const packageSpecificationSchema = z.object({\n size: z.string().nullable().optional(),\n type: z.string().nullable().optional(),\n destination: z.string().nullable().optional()\n});\n\n// Pricing strategy schema\nexport const pricingStrategySchema = z.object({\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: z.object({\n _type: z.literal('docRef'),\n collection: z.literal(PRICE_LIST_COLLECTION),\n nullable: z.literal(true)\n }),\n custom_prices: z.array(packagePriceSchema)\n});\n\n// Visual identity banner schema\nexport const visualIdentityBannerSchema = z.object({\n action: z.string().nullable().optional(),\n image_url: z.string(),\n alt: z.string(),\n click_url: z.string(),\n locale: supportedLocalesSchema,\n properties: z.record(z.string())\n});\n\n// Schedule filter schema\nexport const scheduleFilterSchema = z.object({\n type: z.enum(['iso3', 'gender', 'percentage', 'age']),\n value: z.union([z.string(), z.number()]),\n comparison: z.enum([\n 'equal',\n 'not_equal',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal'\n ])\n});\n\n// Convert object-like schemas to proper Zod objects\nexport const visualIdentityBannersSchema = z.object({\n strategy: z.enum(['fixed', 'rotating', 'destination', 'time_of_day']),\n banners: z.array(visualIdentityBannerSchema).nullable().optional()\n});\n\nexport const visualIdentitySchema = z.object({\n primary_color: z.string(),\n secondary_color: z.string(),\n logo: z.string(),\n font: z.string().nullable().optional(),\n top_banner: visualIdentityBannersSchema.optional(),\n mid_banner: visualIdentityBannersSchema.optional()\n});\n\n// Partner contact schema\nexport const partnerContactSchema = z.object({\n name: z.string().nullable().optional(),\n email: z.string().nullable(),\n office_phone: z.string().nullable().optional(),\n office_email: z.string().nullable().optional()\n});\n\n// Partner data schema\nexport const partnerDataSchema = z.object({\n source: z.string(),\n manual: z.boolean()\n});\n\n// Package strategy schema\nexport const packageStrategySchema = z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any()\n});\n\n// Schedule email schema\nexport const scheduleEmailSchema = z.object({\n brevo_template_id: z.number(),\n subject: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional(),\n preview_text: z.record(z.string()).refine(\n (val: Record) => Object.keys(val).every(key => SUPPORTED_LOCALES.includes(key as SupportedLocales)),\n { message: \"Keys must be supported locales\" }\n ).optional()\n}).nullable().optional();\n\n// Schedule push schema\nexport const schedulePushSchema = z.object({\n title: z.record(z.string()).optional(),\n body: z.record(z.string()).optional(),\n target: z.string()\n}).nullable().optional();\n\n// Schedule schema\nexport const scheduleSchema = z.object({\n days: z.number(),\n email: scheduleEmailSchema,\n push: schedulePushSchema,\n hour: z.number(),\n key: z.string(),\n method: z.enum(['email', 'sms', 'whatsapp', 'push']),\n moment: z.enum(['departure_date', 'return_date', 'immediate']),\n filter: scheduleFilterSchema.nullable().optional()\n});\n\nexport const freeEsimSchema = z.object({\n enabled: z.boolean(),\n package_specification: z.object({\n size: z.string(),\n package_type: z.string(),\n destination: z.string(),\n package_duration: z.number(),\n type: z.string().nullable().optional()\n }),\n booking_id_verification: z.boolean().default(false),\n booking_id_verification_pattern: z.string().nullable().optional(),\n allowance: z.number(),\n total_allowance: z.number(),\n});\n\n// Agent signup settings schema\nexport const agentSignupSettingsSchema = z.object({\n slack_channel: z.string().nullable().optional(),\n welcome_email_template: z.number().nullable().optional(),\n password_reset_template: z.number().nullable().optional(),\n partner_type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n enable_complimentary_booking: z.boolean().default(true),\n complimentary_booking_partner_id: z.string().nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().default(true),\n source_partner_branding: z.boolean().default(false),\n own_branding: z.boolean().default(false)\n }).default({})\n});\n\n// Platform settings schema\nexport const platformSettingsSchema = z.object({\n package_strategy: z.object({\n name: z.string(),\n iso3_white_list: z.array(z.string()).optional(),\n parameters: z.any(),\n supported_package_types: z.enum(['data-limited', 'unlimited']).optional()\n }).nullable().optional(),\n free_esim: freeEsimSchema.nullable().optional(),\n booking_defaults: z.object({\n locale: supportedLocalesSchema\n }).nullable().optional(),\n booking_confirmation: z.object({\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n }).nullable().optional(),\n emit_events: emitEventSchema.nullable().optional(),\n schedules: z.array(scheduleSchema).optional(),\n brevo: z.object({\n list_ids: z.array(z.number()),\n campaign_mode: z.boolean()\n }).nullable().optional(),\n visual_identity_options: z.object({\n hubby_branding: z.boolean().optional().default(true),\n source_partner_branding: z.boolean().optional().default(false),\n own_branding: z.boolean().optional().default(false)\n }).nullable().optional(),\n agent_signup_settings: agentSignupSettingsSchema.nullable().optional(),\n upgrade_offer: z.object({\n enabled: z.boolean(),\n discount_percentage: z.number().min(0).max(100),\n }).nullable().optional()\n});\n\n// ===== Exportable schema specs =====\n\n// Package price schema spec\nexport const packagePriceSchemaSpec = markAsSchemaSpec({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n});\n\n// Financial properties schema spec\nexport const financialPropertiesSchemaSpec = markAsSchemaSpec({\n administration_fee: z.number().nullable(),\n income_per_gb: z.number().nullable(),\n commission_fee: z.number().nullable().optional(),\n commission_percentage: z.number().nullable().optional(),\n payment_method: z.enum(['invoice', 'direct']),\n requires_card: z.boolean().nullable(),\n next_invoice: timestampNullableOptional,\n last_invoice: timestampNullableOptional,\n pricing_strategies: {\n _type: 'object' as const,\n of: {\n partner: {\n _type: 'object' as const,\n of: {\n strategy: z.enum(['split', 'bundle']),\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n },\n user: {\n _type: 'object' as const,\n of: {\n modification_percentage: z.number(),\n default_price_list: { _type: 'docRef' as const, collection: PRICE_LIST_COLLECTION, nullable: true },\n custom_prices: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n }\n }\n }\n },\n optional: true\n }\n },\n nullable: true\n }\n});\n\n// Platform settings schema spec\nexport const platformSettingsSchemaSpec = markAsSchemaSpec({\n package_strategy: {\n _type: 'object' as const,\n of: packageStrategySchema.shape,\n nullable: true,\n optional: true\n },\n free_esim: {\n _type: 'object' as const,\n of: freeEsimSchema.shape,\n nullable: true,\n optional: true\n },\n booking_defaults: {\n _type: 'object' as const,\n of: {\n locale: supportedLocalesSchema\n },\n nullable: true,\n optional: true\n },\n booking_confirmation: {\n _type: 'object' as const,\n of: {\n brevo_template_id: z.number(),\n send_booking_confirmation: z.boolean()\n },\n nullable: true,\n optional: true\n },\n schedules: {\n _type: 'array' as const,\n of: {\n _type: 'object' as const,\n of: scheduleSchema.shape\n },\n optional: true\n },\n agent_signup_settings: {\n _type: 'object' as const,\n of: agentSignupSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\n// Webhook settings schema\nexport const webhookSettingsSchema = z.object({\n url: z.string().url().nullable().optional(),\n api_key: z.string().nullable().optional(),\n enabled: z.boolean().default(false),\n events: z.object({\n promocode_redemption: z.boolean().default(false)\n }).default({})\n});\n\n// ===== Main partner schema =====\nexport const partnerSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Partner specific fields\n name: z.string().min(3),\n type: z.enum(['wholesale', 'reseller', 'platform', 'agent']).nullable().optional(),\n is_active: z.boolean().nullable().optional(),\n external_id: z.string().nullable().optional(),\n\n // Complex nested objects\n contact: {\n _type: 'object' as const,\n of: partnerContactSchema.shape,\n nullable: true\n },\n address: {\n _type: 'object' as const,\n of: addressSchema.shape,\n nullable: true\n },\n registration: {\n _type: 'object' as const,\n of: registrationSchema.shape,\n nullable: true\n },\n banking_details: {\n _type: 'object' as const,\n of: bankingDetailsSchema.shape,\n nullable: true\n },\n\n // Reference fields\n parent: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n users: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: USER_COLLECTION }, nullable: true },\n\n // Complex nested structures\n financial_properties: financialPropertiesSchemaSpec,\n // Visual identity\n visual_identity: {\n _type: 'object' as const,\n of: visualIdentitySchema.shape,\n nullable: true\n },\n\n // Platform settings\n platform_settings: {\n _type: 'object' as const,\n of: platformSettingsSchema.shape,\n nullable: true\n },\n\n // Tags\n tags: {\n _type: 'array' as const,\n of: tagModelSpec,\n nullable: true,\n optional: true\n },\n\n // Tag slugs\n tag_slugs: {\n _type: 'array' as const,\n of: z.string(),\n nullable: true,\n optional: true\n },\n\n // Metadata\n data: {\n _type: 'object' as const,\n of: partnerDataSchema.shape,\n nullable: true,\n optional: true\n },\n\n // Webhook settings\n webhook_settings: {\n _type: 'object' as const,\n of: webhookSettingsSchema.shape,\n nullable: true,\n optional: true\n }\n});\n\nexport const priceListItemSchemaSpec = z.object({\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: z.string(),\n});\n\n// Price list item with docRef support for use in priceListSchemaSpec\nconst priceListItemWithDocRefSpec = {\n destination: z.string(),\n label: z.string(),\n type: z.enum(['data-limited', 'time-limited', 'starter', 'unlimited']),\n price: z.number(),\n package: { _type: 'docRef' as const, collection: PACKAGE_COLLECTION }\n};\n\n// ===== Price list schema =====\nexport const priceListSchemaSpec = markAsSchemaSpec({\n // Base model fields\n id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n\n // Price list specific fields\n name: z.string().min(3),\n description: z.string().nullable(),\n type: z.enum(['partner', 'consumer']),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n price_list: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec,\n optional: true\n },\n package_prices: {\n _type: 'array' as const,\n of: priceListItemWithDocRefSpec\n },\n});\n","import { z } from 'zod';\nimport { timestampRequired } from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const payloadSpec = {\n _type: 'record' as const,\n of: z.unknown(),\n optional: true\n};\n\nexport const apiLogSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n method: z.string(),\n user_id: z.string().optional(),\n path: z.string(),\n resource_type: z.string().optional(),\n resource_id: z.string().optional(),\n partner_id: z.string().optional(),\n payload: payloadSpec,\n timestamp: timestampRequired,\n status_code: z.number()\n});\n","import { z } from 'zod';\nimport { \n USER_TOUCHPOINTS_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullableOptional,\n BOOKING_COLLECTION,\n PROMO_CODE_COLLECTION,\n PARTNER_COLLECTION\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\nexport const userTouchpointsSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n unique_device_identifier: z.string().nullable().optional(),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n booking: { _type: 'docRef' as const, collection: BOOKING_COLLECTION, nullable: true, optional: true },\n promo_code: { _type: 'docRef' as const, collection: PROMO_CODE_COLLECTION, nullable: true, optional: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true, optional: true },\n promo_code_redeemed_at: timestampNullableOptional,\n esim_assigned_at: timestampNullableOptional,\n esim_install_initiated_at: timestampNullableOptional,\n esim_install_completed_at: timestampNullableOptional,\n esim_first_package_activated_at: timestampNullableOptional,\n esim_topped_up_at: timestampNullableOptional,\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n});\n","import { z } from 'zod';\nimport {\n PARTNER_COLLECTION,\n COUNTRY_COLLECTION,\n USER_COLLECTION,\n timestampRequired,\n timestampNullable\n} from './common';\nimport { markAsSchemaSpec } from '../common';\n\n// Collection paths\nexport const REVIEW_COLLECTION = '/companies/hubby/reviews';\nexport const REVIEW_SUBMISSION_COLLECTION = '/companies/hubby/review_submissions';\n\n// Package type schema for reward strategy\nexport const rewardPackageTypeSchema = z.enum(['data-limited', 'starter']);\nexport type RewardPackageType = z.infer;\n\n// Reward strategy base reward schema\nexport const baseRewardSchema = z.object({\n package_size: z.string(),\n package_type: rewardPackageTypeSchema\n});\n\nexport type BaseReward = z.infer;\n\n// Reward strategy multipliers schema\nexport const rewardMultipliersSchema = z.object({\n quality_based: z.number().optional(),\n completion_based: z.number().optional()\n}).optional();\n\nexport type RewardMultipliers = z.infer;\n\n// Reward strategy schema\nexport const rewardStrategySchema = z.object({\n base_reward: baseRewardSchema,\n multipliers: rewardMultipliersSchema\n});\n\nexport type RewardStrategy = z.infer;\n\n// Review schema spec\nexport const reviewSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n partner_id: z.string().nullable().optional(),\n questions: z.record(z.any()),\n reward_strategy: rewardStrategySchema,\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true }\n});\n\n// Review submission schema spec\nexport const reviewSubmissionSchemaSpec = markAsSchemaSpec({\n id: z.string().optional(),\n country: { _type: 'docRef' as const, collection: COUNTRY_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n review: { _type: 'docRef' as const, collection: REVIEW_COLLECTION, nullable: true },\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true },\n questions: z.record(z.any()),\n iccid: z.string(),\n isAndroid: z.boolean(),\n country_id: z.string(),\n partner_id: z.string(),\n review_id: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullable,\n created_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n updated_by: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n analysis: z.record(z.any()).nullable().optional()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n PACKAGE_TEMPLATE_COLLECTION,\n PARTNER_COLLECTION,\n timestampNullable,\n timestampRequired,\n TRAFFIC_POLICY_COLLECTION\n} from './common';\n\n// Destination schema spec\nexport const destinationSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n type: z.string(), // \"country\" or region names like \"Europe\", \"Asia\", \"Middle East\"\n iso3s: z.array(z.string()),\n name: z.string(),\n i18n_name: z.record(z.string()),\n is_active: z.boolean(),\n sort_order: z.number(),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n\n// Destination offer schema spec\nexport const destinationBundleSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n parent_document_id: z.string(),\n type: z.enum(['unlimited', 'data-limited', 'starter']),\n label: z.string().nullable().optional(), //'5 Days' or '5GB'\n provider: z.enum(['telna', 'bondio']),\n\n duration_in_days: z.number(),\n duration_in_seconds: z.number(),\n \n size_in_bytes: z.number(),\n size_in_megabytes: z.number(),\n size_in_gigabytes: z.number(),\n\n package_template: { _type: 'docRef' as const, collection: PACKAGE_TEMPLATE_COLLECTION, nullable: true },\n partner: { _type: 'docRef' as const, collection: PARTNER_COLLECTION, nullable: true },\n //All unlimited packages will have a traffic policy, but this only refers to telna bundles\n traffic_policy: { _type: 'docRef' as const, collection: TRAFFIC_POLICY_COLLECTION, nullable: true },\n b2c_price: z.number(),\n b2b_price: z.number(),\n partner_b2c_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n partner_b2b_price: {\n _type: 'record' as const,\n of: z.number(),\n nullable: true,\n optional: true\n },\n is_active: z.boolean().default(true),\n is_visible: z.boolean().default(true), //All bundles that will have a partner will probably be invisible\n priority: z.number().default(10),\n created_at: timestampRequired,\n updated_at: timestampRequired,\n deleted_at: timestampNullable,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable(),\n deleted_by: z.string().nullable()\n});\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport {\n timestampRequired\n} from './common';\n\n// Package Template Schema Spec - unified schema for all providers\nexport const packageTemplateSchemaSpec = markAsSchemaSpec({\n id: z.string(),\n provider: z.string(), // e.g., \"telna\", \"bondio\"\n type: z.string(),\n purchase_price: z.number(),\n external_id: z.string(),\n supported_countries: z.array(z.string()), // iso3 codes\n provider_specific_data: {\n _type: 'record' as const,\n of: z.any(),\n nullable: true,\n optional: true\n },\n created_at: timestampRequired,\n updated_at: timestampRequired,\n created_by: z.string().nullable(),\n updated_by: z.string().nullable()\n});\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, USER_COLLECTION } from './common';\n\n// Define the login request schema spec\nexport const loginRequestSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n email: z.string().email(),\n status: z.enum(['pending', 'completed', 'expired']),\n user: { _type: 'docRef' as const, collection: USER_COLLECTION, nullable: true, optional: true },\n created_at: timestampRequired,\n expires_at: timestampRequired\n});\n","// firestoreTransformUtils.ts\n\nimport { z } from 'zod';\nimport { DocumentReference, Timestamp, Firestore } from 'firebase-admin/firestore';\nimport { FieldSpec } from '../types';\nimport { FirebaseService } from '../services/firebase';\n// Note: Firestore instance must be injected by consumers/tests via factory\n\nexport function createConvertJSToFirestore(db: Firestore) {\n return function convertJSToFirestore(input: any, spec: FieldSpec): any {\n // Handle null/undefined at the top level\n if (input === undefined || input === null) return null;\n\n if (spec instanceof z.ZodType) {\n if (input instanceof Date) return Timestamp.fromDate(input);\n return input; // already valid\n }\n\n if ('_type' in spec) {\n switch (spec._type) {\n case 'timestamp':\n if (input instanceof Date) {\n return Timestamp.fromDate(input);\n } else if (typeof input === 'string' || typeof input === 'number') {\n return Timestamp.fromDate(new Date(input));\n }\n return input;\n case 'docRef':\n return db.collection(spec.collection).doc(input);\n case 'array':\n return input.map((item: any) => convertJSToFirestore(item, spec.of));\n case 'record':\n // For records, filter out undefined values\n return Object.fromEntries(\n Object.entries(input)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => [k, convertJSToFirestore(v, spec.of)])\n );\n case 'object':\n if ('of' in spec && typeof spec.of === 'object') {\n const result: any = {};\n for (const [key, fieldSpec] of Object.entries(spec.of)) {\n // Check if the field exists in the input\n if (key in input) {\n const value = input[key];\n\n // Handle based on field optionality and nullability\n if (value === undefined) {\n // Check if field is optional by looking at its spec\n const isOptional = typeof fieldSpec === 'object' && '_type' in fieldSpec && fieldSpec._type === 'optional';\n if (!isOptional) {\n // If not optional but nullable, convert to null\n result[key] = null;\n }\n // If optional, just skip it (don't add to result)\n } else {\n // Normal case - value exists and is not undefined\n result[key] = convertJSToFirestore(value, fieldSpec);\n }\n }\n }\n return result;\n }\n return input;\n default:\n throw new Error(`Unknown field type: ${spec._type}`);\n }\n }\n\n // fallback: plain object shape with explicit schema\n if (typeof input === 'object' && !Array.isArray(input) && typeof spec === 'object') {\n const result: any = {};\n\n for (const [key, fieldSpec] of Object.entries(spec)) {\n if (key in input) {\n const value = input[key];\n\n // Handle undefined values\n if (value === undefined) {\n // Check if field is optional\n const isOptional = typeof fieldSpec === 'object' && '_type' in fieldSpec && fieldSpec._type === 'optional';\n if (!isOptional) {\n // If not optional but nullable, convert to null\n result[key] = null;\n }\n // If optional, don't include in the result\n } else {\n // Normal case - value exists\n result[key] = convertJSToFirestore(value, fieldSpec);\n }\n }\n }\n\n return result;\n }\n\n return input;\n };\n}\n\nfunction isDuckTimestamp(obj: any): obj is { toDate: () => Date } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj.toDate === 'function' &&\n Object.prototype.toString.call(obj.toDate()) === '[object Date]'\n );\n}\n\nfunction isRawFirestoreTimestamp(obj: any): obj is { _seconds: number; _nanoseconds: number } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj._seconds === 'number' &&\n typeof obj._nanoseconds === 'number'\n );\n}\n\nfunction isDuckDocumentRef(obj: any): obj is { id: string } {\n return (\n obj &&\n typeof obj === 'object' &&\n typeof obj.id === 'string' &&\n typeof obj.path === 'string'\n );\n}\n\nfunction isRawFirestoreDocumentRef(obj: any): obj is { _path: { segments: string[] } } {\n return (\n obj &&\n typeof obj === 'object' &&\n obj._path &&\n typeof obj._path === 'object' &&\n Array.isArray(obj._path.segments) &&\n obj._path.segments.length > 0\n );\n}\n\nexport function createConvertFirestoreToJS() {\n return function convertFirestoreToJS(input: any, spec: FieldSpec, path: string[] = []): any {\n const pathString = path.join('.') || '';\n\n // ✅ Convert Firestore-native or duck-typed Timestamp\n if (input instanceof Timestamp || isDuckTimestamp(input)) {\n return input.toDate();\n }\n\n // ✅ Convert raw Firestore timestamp objects\n if (isRawFirestoreTimestamp(input)) {\n const seconds = input._seconds || 0;\n const nanoseconds = input._nanoseconds || 0;\n const milliseconds = seconds * 1000 + Math.floor(nanoseconds / 1000000);\n return new Date(milliseconds);\n }\n\n // ✅ Convert Firestore-native or duck-typed DocumentReference\n if (input instanceof DocumentReference || isDuckDocumentRef(input)) {\n return input.id;\n }\n\n // ✅ Convert raw Firestore DocumentReference objects\n if (isRawFirestoreDocumentRef(input)) {\n // Extract document ID from the path segments (last segment)\n return input._path.segments[input._path.segments.length - 1];\n }\n\n if (input === null || input === undefined) return input;\n if (!spec) return input;\n\n if (spec instanceof z.ZodType) {\n // 🔁 Keep in place if it's already a native value\n return input;\n }\n\n if ('_type' in spec) {\n switch (spec._type) {\n case 'timestamp':\n if (input instanceof Timestamp || isDuckTimestamp(input)) {\n return input.toDate();\n }\n if (isRawFirestoreTimestamp(input)) {\n const seconds = input._seconds || 0;\n const nanoseconds = input._nanoseconds || 0;\n const milliseconds = seconds * 1000 + Math.floor(nanoseconds / 1000000);\n return new Date(milliseconds);\n }\n return input;\n\n case 'docRef':\n if (input instanceof DocumentReference || isDuckDocumentRef(input)) {\n return input.id;\n }\n if (isRawFirestoreDocumentRef(input)) {\n return input._path.segments[input._path.segments.length - 1];\n }\n return input;\n\n case 'array':\n return Array.isArray(input)\n ? input.map((item, i) => convertFirestoreToJS(item, spec.of, [...path, `[${i}]`]))\n : input;\n\n case 'record':\n if (typeof input !== 'object' || input === null) return input;\n return Object.fromEntries(\n Object.entries(input)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => [\n k,\n convertFirestoreToJS(v, spec.of, [...path, k]),\n ])\n );\n\n case 'object':\n if (!spec.of || typeof spec.of !== 'object') return input;\n const result: Record = {};\n for (const [key, fieldSpec] of Object.entries(spec.of)) {\n // Only include properties that exist in the input and aren't undefined\n if (key in input && input[key] !== undefined) {\n result[key] = convertFirestoreToJS(input[key], fieldSpec, [...path, key]);\n }\n }\n return result;\n }\n }\n\n if (typeof spec === 'object' && typeof input === 'object' && !Array.isArray(input)) {\n const result: Record = {};\n for (const [key, valSpec] of Object.entries(spec)) {\n // Only include properties that exist in the input and aren't undefined\n if (key in input && input[key] !== undefined) {\n result[key] = convertFirestoreToJS(input[key], valSpec, [...path, key]);\n }\n }\n return result;\n }\n\n return input;\n };\n}\n\n// For backward compatibility, export the default functions\nexport const convertFirestoreToJS = createConvertFirestoreToJS();\n\n// Backward-compatible helper that lazily uses injected default Firestore instance\nexport function convertJSToFirestore(input: any, spec: FieldSpec): any {\n const firestore = FirebaseService.getDefaultInstance().getFirestore();\n return createConvertJSToFirestore(firestore)(input, spec);\n}\n","import { z, ZodTypeAny } from 'zod';\nimport type { FieldSpec, SchemaFromSpec } from '../types';\nimport { wrapZodSchema, wrapObjectSchema, wrapPlainObjectSchema, isSchemaSpec } from '../common';\n\nexport function buildClientSchema(spec: S, path: string[] = []): SchemaFromSpec {\n const pathString = path.join('.');\n\n if (spec === undefined || spec === null) {\n throw new Error(`Invalid schema spec at \"${pathString || ''}\": received ${spec}`);\n }\n\n // ----- Zod passed directly -----\n if (spec instanceof z.ZodType) {\n return wrapZodSchema(spec) as unknown as SchemaFromSpec;\n }\n\n // Check if object might be a Zod schema (has _def property or ~standard metadata)\n if (typeof spec === 'object' && spec !== null &&\n (('_def' in spec) || ('~standard' in spec && (spec as any)['~standard']?.vendor === 'zod'))) {\n try {\n // Try to use it as a Zod schema directly\n return wrapZodSchema(spec as unknown as z.ZodTypeAny) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this fails, we'll continue with the other checks\n console.warn(`Failed to use object as Zod schema at \"${pathString}\":`, error);\n }\n }\n\n // ----- Array -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'array') {\n if (!('of' in spec)) {\n throw new Error(`Array spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.array(buildClientSchema(spec.of, [...path, '[i]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Record -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'record') {\n if (!('of' in spec)) {\n throw new Error(`Record spec at \"${pathString}\" is missing 'of'`);\n }\n let schema: ZodTypeAny = z.record(buildClientSchema(spec.of, [...path, '[key]']));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Timestamp -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'timestamp') {\n let schema: ZodTypeAny = z.preprocess((val) => {\n if (typeof val === 'string') {\n // Try to parse the string to a Date object\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date; // undefined will cause z.date() to fail\n }\n if (typeof val === 'number') {\n // Handle numeric timestamps\n const date = new Date(val);\n return isNaN(date.getTime()) ? undefined : date;\n }\n // If it's already a Date or something else, return it as is\n return val;\n }, z.date({ required_error: 'Date is required', invalid_type_error: 'Invalid date format' }));\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- DocRef -----\n if (typeof spec === 'object' && spec !== null && '_type' in spec && spec._type === 'docRef') {\n let schema: ZodTypeAny = z.string(); // only ID on client\n if (spec.nullable) schema = schema.nullable();\n if (spec.optional) schema = schema.optional();\n return schema as unknown as SchemaFromSpec;\n }\n\n // ----- Object (plain nested object spec) -----\n if (\n typeof spec === 'object' &&\n spec !== null &&\n '_type' in spec &&\n spec._type === 'object' &&\n 'of' in spec\n ) {\n return wrapObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // ----- Plain object shape -----\n if (isSchemaSpec(spec) || (typeof spec === 'object' && spec !== null && '_type' in spec && (spec as any)._type === 'object')) {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n }\n\n // If we have an object with fields that look like schema specs, try to handle it as a schema object\n if (typeof spec === 'object' && spec !== null) {\n try {\n return wrapPlainObjectSchema(spec, path, buildClientSchema) as unknown as SchemaFromSpec;\n } catch (error) {\n // If this also fails, we'll throw the error below\n console.warn(`Failed to handle object as plain schema at \"${pathString}\":`, error);\n }\n }\n\n // 🔥 If we got here, the spec had a structure we didn't handle\n throw new Error(`Unknown or malformed spec at \"${pathString}\": ${JSON.stringify(spec)}`);\n}\n\n","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional, PERMISSION_COLLECTION } from './common';\n\nexport const roleSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n permissions: { _type: 'array' as const, of: { _type: 'docRef' as const, collection: PERMISSION_COLLECTION }, optional: true, nullable: true },\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { z } from 'zod';\nimport { markAsSchemaSpec } from '../common';\nimport { timestampRequired, timestampNullableOptional } from './common';\n\nexport const permissionSchemaSpec = markAsSchemaSpec({\n id: z.string().nullable().optional(),\n name: z.string(),\n description: z.string(),\n created_at: timestampRequired,\n updated_at: timestampNullableOptional,\n});","import { buildClientSchema } from './builders/client';\nimport {\n userSchemaSpec,\n apiKeySpec,\n apiKeysSpec,\n apiKeysObjectSpec\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { bondioPackageSchema, packageSchemaSpec, telnaPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n financialPropertiesSchemaSpec as financialPropertiesSchema,\n packagePriceSchema,\n platformSettingsSchema,\n visualIdentitySchema,\n pricingStrategySchema,\n freeEsimSchema,\n} from './specs/partner';\nimport { analyticsSpec } from './specs/analytics';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { z } from 'zod';\nimport { roleSchemaSpec } from './specs/role';\nimport { permissionSchemaSpec } from './specs/permission';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\n\n\n/** ZOD SCHEMAS */\nexport const HUserSchema = buildClientSchema(userSchemaSpec);\nexport const HBookingSchema = buildClientSchema(bookingSchemaSpec);\nexport const HCountrySchema = buildClientSchema(countrySchemaSpec);\nexport const HCurrencySchema = buildClientSchema(currencySchemaSpec);\nexport const HESIMSchema = buildClientSchema(esimSchemaSpec);\nexport const HPaymentSchema = buildClientSchema(paymentSchemaSpec);\nexport const HMessageSchema = buildClientSchema(messageSchemaSpec);\nexport const HPackageSchema = buildClientSchema(packageSchemaSpec);\nexport const HPromoCodeSchema = buildClientSchema(promoCodeSchemaSpec);\nexport const HPartnerSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPriceListSchema = buildClientSchema(priceListSchemaSpec);\nexport const HFinancialPropertiesSchema = buildClientSchema(financialPropertiesSchema);\nexport const HApiLogSchema = buildClientSchema(apiLogSchemaSpec);\nexport const HPackagePriceSchema = buildClientSchema(packagePriceSchema);\nexport const HubbyModelSchema = buildClientSchema(hubbyModelSpec);\nexport const HPartnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const HPlatformSettingsSchema = buildClientSchema(platformSettingsSchema);\nexport const HVisualIdentitySchema = buildClientSchema(visualIdentitySchema);\nexport const HPricingStrategySchema = buildClientSchema(pricingStrategySchema);\nexport const HFreeEsimSchema = buildClientSchema(freeEsimSchema);\nexport const HAnalyticsSchema = buildClientSchema(analyticsSpec);\nexport const HRoleSchema = buildClientSchema(roleSchemaSpec);\nexport const HPermissionSchema = buildClientSchema(permissionSchemaSpec);\nexport const HTagSchema = buildClientSchema(tagModelSpec);\nexport const HTrafficPolicySchema = buildClientSchema(trafficPolicySpec);\nexport const HTelnaPackageSchema = buildClientSchema(telnaPackageSchema);\nexport const HBondioPackageSchema = buildClientSchema(bondioPackageSchema);\nexport const HReviewSchema = buildClientSchema(reviewSchemaSpec);\nexport const HReviewSubmissionSchema = buildClientSchema(reviewSubmissionSchemaSpec);\nexport const HDestinationSchema = buildClientSchema(destinationSchemaSpec);\nexport const HDestinationBundleSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const HPackageTemplateSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const HUserTouchpointsSchema = buildClientSchema(userTouchpointsSchemaSpec);\nexport const HLoginRequestSchema = buildClientSchema(loginRequestSchemaSpec);\n// Additional lower-level schemas\nexport const HAddressSchema = addressSchema;\nexport const HRegistrationSchema = registrationSchema;\nexport const HBankingDetailsSchema = bankingDetailsSchema;\nexport const HPartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const HPromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const HVisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const HScheduleFilterSchema = scheduleFilterSchema;\nexport const HPartnerContactSchema = partnerContactSchema;\nexport const HPartnerDataSchema = partnerDataSchema;\nexport const HCommunicationChannelSchema = communicationChannelSchema;\nexport const HBookingStatusSchema = bookingStatusSchema;\nexport const HCommunicationOptionsSchema = communicationOptionsSchema;\nexport const HRewardStrategySchema = rewardStrategySchema;\nexport const HBaseRewardSchema = baseRewardSchema;\nexport const HRewardMultipliersSchema = rewardMultipliersSchema;\nexport const HRewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type HAnalytics = z.infer;\nexport type HUser = z.infer;\nexport type HBooking = z.infer;\nexport type HCountry = z.infer;\nexport type HCurrency = z.infer;\nexport type HESIM = z.infer;\nexport type HPayment = z.infer;\nexport type HMessage = z.infer;\nexport type HPackage = z.infer;\nexport type HPromoCode = z.infer;\nexport type HPartner = z.infer;\nexport type HPriceList = z.infer;\nexport type HApiLog = z.infer;\nexport type HTag = z.infer;\nexport type HTrafficPolicy = z.infer;\nexport type HBondioPackage = z.infer;\nexport type HTelnaPackage = z.infer;\nexport type HReview = z.infer;\nexport type HReviewSubmission = z.infer;\nexport type HDestination = z.infer;\nexport type HDestinationBundle = z.infer;\nexport type HPackageTemplate = z.infer;\nexport type HUserTouchpoints = z.infer;\nexport type HLoginRequest = z.infer;\n// Additional lower-level types\nexport type HAddress = z.infer;\nexport type HRegistration = z.infer;\nexport type HBankingDetails = z.infer;\nexport type HPartnerPackageSpecification = z.infer;\nexport type HPromoPackageSpecification = z.infer;\nexport type HVisualIdentityBanner = z.infer;\nexport type HFinancialProperties = z.infer;\nexport type HScheduleFilter = z.infer;\nexport type HPartnerContact = z.infer;\nexport type HPartnerData = z.infer;\nexport type HCommunicationChannel = z.infer;\nexport type HBookingStatus = z.infer;\nexport type HCommunicationOptions = z.infer;\nexport type HRewardStrategy = z.infer;\nexport type HBaseReward = z.infer;\nexport type HRewardMultipliers = z.infer;\nexport type HRewardPackageType = z.infer;\nexport type HHubbyModel = z.infer;\n\nexport type HubbyModelApp = HHubbyModel;\n\nexport type SupportedLocales = typeof SUPPORTED_LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\nexport type HRole = z.infer;\nexport type HPermission = z.infer; ","import { Firestore } from 'firebase-admin/firestore';\nimport {\n createConvertJSToFirestore,\n createConvertFirestoreToJS\n} from './firestoreTransformUtils';\nimport { FieldSpec } from '../types';\n\n/**\n * Creates converter functions for a specific model type with dependency injection.\n * This lets you use the conversion functions with your own Firebase instance.\n * \n * @param db - Firestore instance to use for document references\n * @param modelSchemaSpec - Schema specification for the model\n * @returns Object with to/from Firestore conversion functions\n */\nexport function createModelConverters(\n db: Firestore,\n modelSchemaSpec: FieldSpec\n) {\n const convertToFirestore = createConvertJSToFirestore(db);\n const convertFromFirestore = createConvertFirestoreToJS();\n\n return {\n /**\n * Converts a model instance to Firestore format\n */\n toFirestore: (model: TModel): TFirestore => {\n return convertToFirestore(model, modelSchemaSpec);\n },\n\n /**\n * Converts Firestore data to a model instance\n */\n fromFirestore: (firestoreData: TFirestore): TModel => {\n return convertFromFirestore(firestoreData, modelSchemaSpec);\n }\n };\n} ","import { buildServerSchema } from './builders/server';\nimport {\n userSchemaSpec,\n} from './specs/user';\nimport {\n bookingSchemaSpec,\n communicationChannelSchema,\n bookingStatusSchema,\n communicationOptionsSchema\n} from './specs/booking';\nimport { countrySchemaSpec } from './specs/country';\nimport { currencySchemaSpec } from './specs/currency';\nimport { esimSchemaSpec } from './specs/esim';\nimport { paymentSchemaSpec } from './specs/payment';\nimport { analyticsSpec } from './specs/analytics';\nimport { messageSchemaSpec } from './specs/message';\nimport { trafficPolicySpec } from './specs/traffic_policy';\nimport { packageSchemaSpec, telnaPackageSchema, bondioPackageSchema } from './specs/package';\nimport { promoCodeSchemaSpec, packageSpecificationSchema as promoPackageSpecificationSchema } from './specs/promocode';\nimport {\n partnerSchemaSpec,\n priceListSchemaSpec,\n addressSchema,\n registrationSchema,\n bankingDetailsSchema,\n packageSpecificationSchema as partnerPackageSpecificationSchema,\n visualIdentityBannerSchema,\n visualIdentityBannersSchema,\n scheduleFilterSchema,\n partnerContactSchema,\n partnerDataSchema,\n scheduleSchema,\n visualIdentitySchema,\n packagePriceSchemaSpec,\n platformSettingsSchemaSpec\n} from './specs/partner';\n\nimport { hubbyModelSpec, tagModelSpec } from './specs/common';\nimport { SUPPORTED_LOCALES as LOCALES } from './constants';\nimport { apiLogSchemaSpec } from './specs/apiLogs';\nimport { userTouchpointsSchemaSpec } from './specs/userTouchpoints';\nimport { \n reviewSchemaSpec, \n reviewSubmissionSchemaSpec,\n rewardStrategySchema,\n baseRewardSchema,\n rewardMultipliersSchema,\n rewardPackageTypeSchema\n} from './specs/review';\nimport { destinationSchemaSpec, destinationBundleSchemaSpec } from './specs/destination';\nimport { packageTemplateSchemaSpec } from './specs/package_template';\nimport { loginRequestSchemaSpec } from './specs/login_request';\nimport { z } from 'zod';\nimport { DocumentReference, Timestamp } from 'firebase-admin/firestore';\n\n\nimport { convertFirestoreToJS, convertJSToFirestore } from './utils/firestoreTransformUtils';\nimport { HPackage, HPartner, HPriceList, HPromoCode, HUserTouchpoints } from './index.client';\nimport { buildClientSchema } from './builders/client';\n\nexport {\n partnerSchemaSpec,\n analyticsSpec,\n packageSchemaSpec,\n userSchemaSpec,\n bookingSchemaSpec,\n countrySchemaSpec,\n currencySchemaSpec,\n esimSchemaSpec,\n paymentSchemaSpec,\n messageSchemaSpec,\n promoCodeSchemaSpec,\n priceListSchemaSpec,\n apiLogSchemaSpec,\n reviewSchemaSpec,\n reviewSubmissionSchemaSpec,\n destinationSchemaSpec,\n destinationBundleSchemaSpec,\n packageTemplateSchemaSpec,\n userTouchpointsSchemaSpec,\n loginRequestSchemaSpec\n};\n\n\n/** ZOD SCHEMAS */\nexport const UserSchema = buildServerSchema(userSchemaSpec);\nexport const UserFirestoreSchema = buildServerSchema(userSchemaSpec);\nexport const BookingSchema = buildServerSchema(bookingSchemaSpec);\nexport const CountrySchema = buildServerSchema(countrySchemaSpec);\nexport const CurrencySchema = buildServerSchema(currencySchemaSpec);\nexport const ESIMSchema = buildServerSchema(esimSchemaSpec);\nexport const PaymentSchema = buildServerSchema(paymentSchemaSpec);\nexport const MessageSchema = buildServerSchema(messageSchemaSpec);\nexport const PackageSchema = buildServerSchema(packageSchemaSpec);\nexport const PromoCodeSchema = buildServerSchema(promoCodeSchemaSpec);\nexport const PartnerSchema = buildServerSchema(partnerSchemaSpec);\nexport const PriceListSchema = buildServerSchema(priceListSchemaSpec);\nexport const ApiLogSchema = buildServerSchema(apiLogSchemaSpec);\nexport const VisualIdentitySchema = buildServerSchema(visualIdentitySchema);\nexport const PackagePriceSchema = buildServerSchema(packagePriceSchemaSpec);\nexport const PlatformSettingsSchema = buildServerSchema(platformSettingsSchemaSpec);\nexport const ScheduleSchema = buildServerSchema(scheduleSchema);\nexport const AnalyticsSchema = buildServerSchema(analyticsSpec);\nexport const TagSchema = buildServerSchema(tagModelSpec);\nexport const TelnaPackageSchema = buildServerSchema(telnaPackageSchema);\nexport const BondioPackageSchema = buildServerSchema(bondioPackageSchema);\nexport const TrafficPolicySchema = buildServerSchema(trafficPolicySpec);\nexport const ReviewSchema = buildServerSchema(reviewSchemaSpec);\nexport const ReviewSubmissionSchema = buildServerSchema(reviewSubmissionSchemaSpec);\nexport const DestinationSchema = buildServerSchema(destinationSchemaSpec);\nexport const DestinationBundleSchema = buildServerSchema(destinationBundleSchemaSpec);\nexport const PackageTemplateSchema = buildServerSchema(packageTemplateSchemaSpec);\nexport const UserTouchpointsSchema = buildServerSchema(userTouchpointsSchemaSpec);\nexport const LoginRequestSchema = buildServerSchema(loginRequestSchemaSpec);\n\n// Additional lower-level schemas\nexport const AddressSchema = addressSchema;\nexport const RegistrationSchema = registrationSchema;\nexport const BankingDetailsSchema = bankingDetailsSchema;\nexport const PartnerPackageSpecificationSchema = partnerPackageSpecificationSchema;\nexport const PromoPackageSpecificationSchema = promoPackageSpecificationSchema;\nexport const VisualIdentityBannerSchema = visualIdentityBannerSchema;\nexport const ScheduleFilterSchema = scheduleFilterSchema;\nexport const PartnerContactSchema = partnerContactSchema;\nexport const PartnerDataSchema = partnerDataSchema;\nexport const CommunicationChannelSchema = communicationChannelSchema;\nexport const BookingStatusSchema = bookingStatusSchema;\nexport const CommunicationOptionsSchema = communicationOptionsSchema;\nexport const VisualIdentityBannersSchema = visualIdentityBannersSchema;\nexport const RewardStrategySchema = rewardStrategySchema;\nexport const BaseRewardSchema = baseRewardSchema;\nexport const RewardMultipliersSchema = rewardMultipliersSchema;\nexport const RewardPackageTypeSchema = rewardPackageTypeSchema;\n\nexport type User = z.infer;\nexport type UserFirestore = z.infer;\nexport type Booking = z.infer;\nexport type Country = z.infer;\nexport type Currency = z.infer;\nexport type ESIM = z.infer;\nexport type Payment = z.infer;\nexport type Message = z.infer;\nexport type Package = z.infer;\nexport type PromoCode = z.infer;\nexport type Partner = z.infer;\nexport type PriceList = z.infer;\nexport type ApiLog = z.infer;\nexport type Analytics = z.infer;\nexport type Schedule = z.infer;\nexport type TelnaPackage = z.infer;\nexport type BondioPackage = z.infer;\nexport type TrafficPolicy = z.infer;\nexport type Review = z.infer;\nexport type ReviewSubmission = z.infer;\nexport type Destination = z.infer;\nexport type DestinationBundle = z.infer;\nexport type PackageTemplate = z.infer;\nexport type UserTouchpoints = z.infer;\nexport type LoginRequest = z.infer;\n\n// Additional lower-level types\nexport type Address = z.infer;\nexport type Registration = z.infer;\nexport type BankingDetails = z.infer;\nexport type PartnerPackageSpecification = z.infer;\nexport type PackageSpecification = z.infer;\nexport type VisualIdentity = z.infer;\nexport type VisualIdentityBanner = z.infer;\nexport type VisualIdentityBanners = z.infer;\nexport type VisualIdentityBannerStrategy = VisualIdentityBanners;\nexport type ScheduleFilter = z.infer;\nexport type PartnerContact = z.infer;\nexport type PartnerData = z.infer;\nexport type CommunicationChannel = z.infer;\nexport type BookingStatus = z.infer;\nexport type CommunicationOptions = z.infer;\nexport type PackagePrice = z.infer;\nexport type PlatformSettings = z.infer;\nexport type RewardStrategy = z.infer;\nexport type BaseReward = z.infer;\nexport type RewardMultipliers = z.infer;\nexport type RewardPackageType = z.infer;\nexport type BookingApiRequest = Booking;\nexport type BookingApiResponse = Booking;\nexport type PartnerApiRequest = Partner;\nexport type PartnerApiResponse = Partner;\nexport type PriceListApiRequest = PriceList;\nexport type PriceListApiResponse = PriceList;\nexport type ApiLogApiRequest = ApiLog;\nexport type ApiLogApiResponse = ApiLog;\nexport type Tag = z.infer;\n\nexport * from './index.client';\n\nexport type HubbyModel = {\n id: string;\n created_at: Date;\n updated_at: Date | null;\n created_by: string;\n updated_by: string | null;\n}\n\nexport type HubbyModelFirestore = {\n id: string;\n created_at: Timestamp;\n updated_at: Timestamp | null;\n created_by: DocumentReference | null | string;\n updated_by: DocumentReference | null | string;\n}\n\nexport const partnerFromFirestore = (partner: Partner): HPartner => {\n return convertFirestoreToJS(partner, partnerSchemaSpec);\n}\n\nexport const partnerToFirestore = (partner: HPartner): Partner => {\n return convertJSToFirestore(partner, partnerSchemaSpec);\n}\n\nexport const userToFirestore = (user: User): UserFirestore => {\n return convertJSToFirestore(user, userSchemaSpec);\n}\n\nexport const userFromFirestore = (user: UserFirestore): User => {\n return convertFirestoreToJS(user, userSchemaSpec);\n}\n\nexport const priceListFromFirestore = (priceList: PriceList): HPriceList => {\n return convertFirestoreToJS(priceList, priceListSchemaSpec);\n}\n\nexport const priceListToFirestore = (priceList: HPriceList): PriceList => {\n return convertJSToFirestore(priceList, priceListSchemaSpec);\n}\n\nexport const promoCodeFromFirestore = (promoCode: PromoCode): HPromoCode => {\n return convertFirestoreToJS(promoCode, promoCodeSchemaSpec);\n}\n\nexport const promoCodeToFirestore = (promoCode: HPromoCode): PromoCode => {\n return convertJSToFirestore(promoCode, promoCodeSchemaSpec);\n}\n\nexport const userTouchpointsFromFirestore = (userTouchpoints: UserTouchpoints): HUserTouchpoints => {\n return convertFirestoreToJS(userTouchpoints, userTouchpointsSchemaSpec);\n}\n\nexport const userTouchpointsToFirestore = (userTouchpoints: HUserTouchpoints): UserTouchpoints => {\n return convertJSToFirestore(userTouchpoints, userTouchpointsSchemaSpec);\n}\n\n\nexport const bookingAppSchema = buildClientSchema(bookingSchemaSpec);\nexport const partnerAppSchema = buildClientSchema(partnerSchemaSpec);\nexport const destinationAppSchema = buildClientSchema(destinationSchemaSpec);\nexport const destinationBundleAppSchema = buildClientSchema(destinationBundleSchemaSpec);\nexport const packageTemplateAppSchema = buildClientSchema(packageTemplateSchemaSpec);\nexport const promoPackageSpecificationAppSchema = buildClientSchema(promoPackageSpecificationSchema);\n// Export the type and constant\nexport type SupportedLocales = typeof LOCALES[number];\nexport const SUPPORTED_LOCALES = LOCALES;\n\n// Dependency Injection exports\nexport { createModelConverters } from './utils/modelConverterFactory';\nexport { createConvertJSToFirestore, createConvertFirestoreToJS } from './utils/firestoreTransformUtils';\nexport { FirebaseService, createFirebaseService } from './services/firebase';\n\nexport { USER_COLLECTION, PACKAGE_COLLECTION, PARTNER_COLLECTION, BOOKING_COLLECTION, ROLE_COLLECTION, PERMISSION_COLLECTION, TRAFFIC_POLICY_COLLECTION, PROFILE_COLLECTION, PROMO_CODE_COLLECTION, COUNTRY_COLLECTION, ESIM_COLLECTION, PAYMENT_COLLECTION, PRICE_LIST_COLLECTION, MESSAGE_COLLECTION, CURRENCY_COLLECTION, API_LOG_COLLECTION, REVIEW_COLLECTION, REVIEW_SUBMISSION_COLLECTION, USER_TOUCHPOINTS_COLLECTION, DESTINATION_COLLECTION, DESTINATION_OFFER_COLLECTION } from './specs/common';\n\n"]} \ No newline at end of file diff --git a/package.json b/package.json index bac9c04..fc54d9b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@hubbyesim/types", - "version": "2.3.0", + "version": "2.3.1", "description": "Type definitions for the hubbyesim project", "type": "module", "main": "./dist/index.js", diff --git a/src/specs/esim.ts b/src/specs/esim.ts index b7a2793..539c2d7 100644 --- a/src/specs/esim.ts +++ b/src/specs/esim.ts @@ -39,6 +39,7 @@ export const esimSchemaSpec = markAsSchemaSpec({ data_used: z.boolean(), status: z.string().nullable(), status_history: esimStatusHistorySchema, + status_updated_at: timestampNullable, name: z.string(), android_auto: z.boolean(), partner_price: z.number().nullable(),