glassnode-api 0.1.4 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,11 +1,39 @@
1
1
  # Glassnode API
2
2
 
3
- A Node.js client for the [Glassnode API](https://docs.glassnode.com/).
3
+ A TypeScript client for the [Glassnode API](https://docs.glassnode.com/), supporting both Node.js and browser environments.
4
4
 
5
5
  ## Installation
6
6
 
7
+ ### Node.js
8
+
7
9
  ```bash
10
+ # pnpm
11
+ pnpm add glassnode-api
12
+
13
+ # npm
8
14
  npm install glassnode-api
15
+
16
+ # yarn
17
+ yarn add glassnode-api
18
+ ```
19
+
20
+ ### Browser (UMD)
21
+
22
+ ```html
23
+ <script src="https://unpkg.com/glassnode-api/dist/glassnode-api.umd.min.js"></script>
24
+ <script>
25
+ const api = new GlassnodeAPI.GlassnodeAPI({ apiKey: 'YOUR_API_KEY' });
26
+ </script>
27
+ ```
28
+
29
+ ### Browser (ESM)
30
+
31
+ ```html
32
+ <script type="module">
33
+ import { GlassnodeAPI } from 'https://unpkg.com/glassnode-api/dist/glassnode-api.esm.min.js';
34
+
35
+ const api = new GlassnodeAPI({ apiKey: 'YOUR_API_KEY' });
36
+ </script>
9
37
  ```
10
38
 
11
39
  ## Usage
@@ -13,7 +41,6 @@ npm install glassnode-api
13
41
  ```typescript
14
42
  import { GlassnodeAPI } from 'glassnode-api';
15
43
 
16
- // Create an instance with your API key
17
44
  const api = new GlassnodeAPI({
18
45
  apiKey: 'YOUR_API_KEY',
19
46
  // Optional: Override the API URL
@@ -21,58 +48,63 @@ const api = new GlassnodeAPI({
21
48
  });
22
49
 
23
50
  // Fetch asset metadata
24
- async function getAssets() {
25
- try {
26
- const response = await api.getAssetMetadata();
27
- console.log(response.data);
28
- } catch (error) {
29
- console.error('Error fetching asset metadata:', error);
30
- }
31
- }
51
+ const assets = await api.getAssetMetadata();
32
52
 
33
53
  // Fetch metric metadata
34
- async function getMetrics() {
35
- try {
36
- const response = await api.getMetricMetadata();
37
- console.log(response.data);
38
- } catch (error) {
39
- console.error('Error fetching metric metadata:', error);
40
- }
41
- }
54
+ const metric = await api.getMetricMetadata('/distribution/balance_exchanges', { a: 'BTC' });
55
+
56
+ // Get list of all available metrics
57
+ const metrics = await api.getMetricList();
58
+
59
+ // Call a metric directly
60
+ const data = await api.callMetric('/market/price_usd_close', { a: 'BTC', s: '1609459200' });
42
61
  ```
43
62
 
44
- ## Examples
63
+ ## API
45
64
 
46
- Explore our [detailed examples](./examples/README.md) to learn how to use the Glassnode API client effectively. The examples demonstrate:
65
+ ### `new GlassnodeAPI(config)`
47
66
 
48
- - Fetching and validating asset metadata
49
- - Working with metric lists and metadata
50
- - Calling metrics with parameters
67
+ | Parameter | Type | Required | Description |
68
+ | --------- | -------- | -------- | ------------------------------------------------------ |
69
+ | `apiKey` | `string` | Yes | Your Glassnode API key |
70
+ | `apiUrl` | `string` | No | API base URL (defaults to `https://api.glassnode.com`) |
51
71
 
52
- To run the examples:
72
+ ### Methods
53
73
 
54
- 1. Navigate to the examples directory
55
- 2. Create a `.env` file with your API key: `GLASSNODE_API_KEY=your_key_here`
56
- 3. Install dependencies with `npm install`
57
- 4. Run an example with `npx ts-node metadata.validation.ts`
74
+ | Method | Returns | Description |
75
+ | ---------------------------------- | --------------------------------- | ----------------------------------- |
76
+ | `getAssetMetadata()` | `Promise<AssetMetadataResponse>` | Get metadata for all assets |
77
+ | `getMetricMetadata(path, params?)` | `Promise<MetricMetadataResponse>` | Get metadata for a specific metric |
78
+ | `getMetricList()` | `Promise<MetricListResponse>` | Get a list of all available metrics |
79
+ | `callMetric<T>(path, params?)` | `Promise<T>` | Call a metric endpoint directly |
80
+
81
+ ## Examples
82
+
83
+ See the [examples directory](./examples/README.md) for detailed usage patterns.
84
+
85
+ ```bash
86
+ cd examples
87
+ cp .env.example .env # add your API key
88
+ pnpm dlx ts-node metadata.validation.ts
89
+ ```
58
90
 
59
91
  ## Development
60
92
 
61
93
  ```bash
62
94
  # Install dependencies
63
- npm install
95
+ pnpm install
64
96
 
65
- # Build the project
66
- npm run build
97
+ # Build (Node.js + browser bundles)
98
+ pnpm run build && pnpm run build:browser
67
99
 
68
100
  # Run tests
69
- npm test
101
+ pnpm test
70
102
 
71
- # Lint code
72
- npm run lint
103
+ # Lint
104
+ pnpm run lint
73
105
 
74
- # Format code
75
- npm run format
106
+ # Format
107
+ pnpm run format
76
108
  ```
77
109
 
78
110
  ## License
@@ -0,0 +1,6 @@
1
+ export declare class GlassnodeApiError extends Error {
2
+ readonly status: number;
3
+ readonly statusText: string;
4
+ constructor(status: number, statusText: string);
5
+ get isRetryable(): boolean;
6
+ }
package/dist/errors.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GlassnodeApiError = void 0;
4
+ const STATUS_MESSAGES = {
5
+ 400: 'Bad request',
6
+ 401: 'Invalid or missing API key',
7
+ 403: 'Access forbidden — check your API tier',
8
+ 404: 'Endpoint or metric not found',
9
+ 429: 'Rate limit exceeded',
10
+ };
11
+ class GlassnodeApiError extends Error {
12
+ status;
13
+ statusText;
14
+ constructor(status, statusText) {
15
+ const detail = STATUS_MESSAGES[status] ?? statusText;
16
+ super(`API request failed (${status}): ${detail}`);
17
+ this.name = 'GlassnodeApiError';
18
+ this.status = status;
19
+ this.statusText = statusText;
20
+ }
21
+ get isRetryable() {
22
+ return this.status === 429 || this.status >= 500;
23
+ }
24
+ }
25
+ exports.GlassnodeApiError = GlassnodeApiError;
@@ -1,11 +1,15 @@
1
1
  import { GlassnodeConfig } from './types/config';
2
- import { AssetMetadataResponse, MetricMetadataResponse, MetricListResponse } from './types/metadata';
2
+ import { AssetMetadataResponse, MetricMetadataResponse, MetricListResponse, BulkResponse } from './types/metadata';
3
3
  /**
4
4
  * Glassnode API client
5
5
  */
6
6
  export declare class GlassnodeAPI {
7
7
  private apiKey;
8
8
  private apiUrl;
9
+ private logger?;
10
+ private fetchFn;
11
+ private maxRetries;
12
+ private retryDelay;
9
13
  /**
10
14
  * Create a new Glassnode API client
11
15
  * @param config Configuration object
@@ -42,4 +46,11 @@ export declare class GlassnodeAPI {
42
46
  * @returns Promise resolving to the response data
43
47
  */
44
48
  callMetric<T>(metricPath: string, params?: Record<string, string>): Promise<T>;
49
+ /**
50
+ * Call a bulk metric endpoint (returns data for all assets at once)
51
+ * @param metricPath Path of the metric (e.g. /market/marketcap_usd)
52
+ * @param params Query parameters
53
+ * @returns Promise resolving to validated bulk response
54
+ */
55
+ callBulkMetric(metricPath: string, params?: Record<string, string>): Promise<BulkResponse>;
45
56
  }
@@ -0,0 +1,2 @@
1
+ function e(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}c((r=r.apply(e,t||[])).next())})}function t(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:s,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);const o=s.prototype,i=Object.keys(o);for(let e=0;e<i.length;e++){const t=i[e];t in n||(n[t]=o[t].bind(n))}}const o=n?.Parent??Object;class i extends o{}function s(e){var t;const o=n?.Parent?new i:this;r(o,e),(t=o._zod).deferred??(t.deferred=[]);for(const e of o._zod.deferred)e();return o}return Object.defineProperty(i,"name",{value:e}),Object.defineProperty(s,"init",{value:r}),Object.defineProperty(s,Symbol.hasInstance,{value:t=>!!(n?.Parent&&t instanceof n.Parent)||t?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class r extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}}const o={};function i(e){return o}function s(e){const t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,n])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function a(e,t){return"bigint"==typeof t?t.toString():t}function c(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function u(e){return null==e}function d(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}const p=Symbol("evaluating");function l(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==p)return void 0===r&&(r=p,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function f(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function h(...e){const t={};for(const n of e){const e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function m(e){return JSON.stringify(e)}const y="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function g(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}const v=c(()=>{if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function _(e){if(!1===g(e))return!1;const t=e.constructor;if(void 0===t)return!0;if("function"!=typeof t)return!0;const n=t.prototype;return!1!==g(n)&&!1!==Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")}function z(e){return _(e)?{...e}:Array.isArray(e)?[...e]:e}const b=new Set(["string","number","symbol"]);function w(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function k(e,t,n){const r=new e._zod.constr(t??e._zod.def);return t&&!n?.parent||(r._zod.parent=e),r}function $(e){const t=e;if(!t)return{};if("string"==typeof t)return{error:()=>t};if(void 0!==t?.message){if(void 0!==t?.error)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,"string"==typeof t.error?{...t,error:()=>t.error}:t}const O={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function x(e,t=0){if(!0===e.aborted)return!0;for(let n=t;n<e.issues.length;n++)if(!0!==e.issues[n]?.continue)return!0;return!1}function S(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Z(e){return"string"==typeof e?e:e?.message}function T(e,t,n){const r={...e,path:e.path??[]};if(!e.message){const o=Z(e.inst?._zod.def?.error?.(e))??Z(t?.error?.(e))??Z(n.customError?.(e))??Z(n.localeError?.(e))??"Invalid input";r.message=o}return delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function E(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function I(...e){const[t,n,r]=e;return"string"==typeof t?{message:t,code:"custom",input:n,inst:r}:{...t}}const N=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,a,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},P=t("$ZodError",N),A=t("$ZodError",N,{Parent:Error});const j=e=>(t,r,o,s)=>{const a=o?Object.assign(o,{async:!1}):{async:!1},c=t._zod.run({value:r,issues:[]},a);if(c instanceof Promise)throw new n;if(c.issues.length){const t=new(s?.Err??e)(c.issues.map(e=>T(e,a,i())));throw y(t,s?.callee),t}return c.value},F=j(A),R=e=>async(t,n,r,o)=>{const s=r?Object.assign(r,{async:!0}):{async:!0};let a=t._zod.run({value:n,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){const t=new(o?.Err??e)(a.issues.map(e=>T(e,s,i())));throw y(t,o?.callee),t}return a.value},J=R(A),C=e=>(t,r,o)=>{const s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new n;return a.issues.length?{success:!1,error:new(e??P)(a.issues.map(e=>T(e,s,i())))}:{success:!0,data:a.value}},U=C(A),D=e=>async(t,n,r)=>{const o=r?Object.assign(r,{async:!0}):{async:!0};let s=t._zod.run({value:n,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(e=>T(e,o,i())))}:{success:!0,data:s.value}},M=D(A),V=e=>(t,n,r)=>{const o=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return j(e)(t,n,o)},L=e=>(t,n,r)=>j(e)(t,n,r),W=e=>async(t,n,r)=>{const o=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return R(e)(t,n,o)},q=e=>async(t,n,r)=>R(e)(t,n,r),G=e=>(t,n,r)=>{const o=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return C(e)(t,n,o)},B=e=>(t,n,r)=>C(e)(t,n,r),K=e=>async(t,n,r)=>{const o=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return D(e)(t,n,o)},Y=e=>async(t,n,r)=>D(e)(t,n,r),X=/^[cC][^\s-]{8,}$/,H=/^[0-9a-z]+$/,Q=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,ee=/^[0-9a-vA-V]{20}$/,te=/^[A-Za-z0-9]{27}$/,ne=/^[a-zA-Z0-9_-]{21}$/,re=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,oe=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ie=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,se=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;const ae=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ce=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,ue=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,de=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,pe=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,le=/^[A-Za-z0-9_-]*$/,fe=/^\+[1-9]\d{6,14}$/,he="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",me=new RegExp(`^${he}$`);function ye(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}const ge=/^-?\d+$/,ve=/^-?\d+(?:\.\d+)?$/,_e=/^(?:true|false)$/i,ze=/^[^A-Z]*$/,be=/^[^a-z]*$/,we=t("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ke={number:"number",bigint:"bigint",object:"date"},$e=t("$ZodCheckLessThan",(e,t)=>{we.init(e,t);const n=ke[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Oe=t("$ZodCheckGreaterThan",(e,t)=>{we.init(e,t);const n=ke[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),xe=t("$ZodCheckMultipleOf",(e,t)=>{we.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof n.value?n.value%t.value===BigInt(0):0===function(e,t){const n=(e.toString().split(".")[1]||"").length,r=t.toString();let o=(r.split(".")[1]||"").length;if(0===o&&/\d?e-\d?/.test(r)){const e=r.match(/\d?e-(\d?)/);e?.[1]&&(o=Number.parseInt(e[1]))}const i=n>o?n:o;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}(n.value,t.value))||n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Se=t("$ZodCheckNumberFormat",(e,t)=>{we.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),r=n?"int":"number",[o,i]=O[t.format];e._zod.onattach.push(e=>{const r=e._zod.bag;r.format=t.format,r.minimum=o,r.maximum=i,n&&(r.pattern=ge)}),e._zod.check=s=>{const a=s.value;if(n){if(!Number.isInteger(a))return void s.issues.push({expected:r,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});if(!Number.isSafeInteger(a))return void(a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort}))}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),Ze=t("$ZodCheckMaxLength",(e,t)=>{var n;we.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!u(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const r=n.value;if(r.length<=t.maximum)return;const o=E(r);n.issues.push({origin:o,code:"too_big",maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Te=t("$ZodCheckMinLength",(e,t)=>{var n;we.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!u(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const r=n.value;if(r.length>=t.minimum)return;const o=E(r);n.issues.push({origin:o,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Ee=t("$ZodCheckLengthEquals",(e,t)=>{var n;we.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!u(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{const r=n.value,o=r.length;if(o===t.length)return;const i=E(r),s=o>t.length;n.issues.push({origin:i,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Ie=t("$ZodCheckStringFormat",(e,t)=>{var n,r;we.init(e,t),e._zod.onattach.push(e=>{const n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??(n.patterns=new Set),n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Ne=t("$ZodCheckRegex",(e,t)=>{Ie.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Pe=t("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=ze),Ie.init(e,t)}),Ae=t("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=be),Ie.init(e,t)}),je=t("$ZodCheckIncludes",(e,t)=>{we.init(e,t);const n=w(t.includes),r=new RegExp("number"==typeof t.position?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Fe=t("$ZodCheckStartsWith",(e,t)=>{we.init(e,t);const n=new RegExp(`^${w(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Re=t("$ZodCheckEndsWith",(e,t)=>{we.init(e,t);const n=new RegExp(`.*${w(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Je=t("$ZodCheckOverwrite",(e,t)=>{we.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});class Ce{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e)return e(this,{execution:"sync"}),void e(this,{execution:"async"});const t=e.split("\n").filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>" ".repeat(2*this.indent)+e);for(const e of r)this.content.push(e)}compile(){const e=Function,t=this?.args;return new e(...t,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}}const Ue={major:4,minor:3,patch:6},De=t("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Ue;const o=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&o.unshift(e);for(const t of o)for(const n of t._zod.onattach)n(e);if(0===o.length)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const t=(e,t,r)=>{let o,i=x(e);for(const s of t){if(s._zod.def.when){if(!s._zod.def.when(e))continue}else if(i)continue;const t=e.issues.length,a=s._zod.check(e);if(a instanceof Promise&&!1===r?.async)throw new n;if(o||a instanceof Promise)o=(o??Promise.resolve()).then(async()=>{await a;e.issues.length!==t&&(i||(i=x(e,t)))});else{if(e.issues.length===t)continue;i||(i=x(e,t))}}return o?o.then(()=>e):e},r=(r,i,s)=>{if(x(r))return r.aborted=!0,r;const a=t(i,o,s);if(a instanceof Promise){if(!1===s.async)throw new n;return a.then(t=>e._zod.parse(t,s))}return e._zod.parse(a,s)};e._zod.run=(i,s)=>{if(s.skipChecks)return e._zod.parse(i,s);if("backward"===s.direction){const t=e._zod.parse({value:i.value,issues:[]},{...s,skipChecks:!0});return t instanceof Promise?t.then(e=>r(e,i,s)):r(t,i,s)}const a=e._zod.parse(i,s);if(a instanceof Promise){if(!1===s.async)throw new n;return a.then(e=>t(e,o,s))}return t(a,o,s)}}l(e,"~standard",()=>({validate:t=>{try{const n=U(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch(n){return M(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),Me=t("$ZodString",(e,t)=>{var n;De.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??(n=e._zod.bag,new RegExp(`^${n?`[\\s\\S]{${n?.minimum??0},${n?.maximum??""}}`:"[\\s\\S]*"}$`)),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch(r){}return"string"==typeof n.value||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),Ve=t("$ZodStringFormat",(e,t)=>{Ie.init(e,t),Me.init(e,t)}),Le=t("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=oe),Ve.init(e,t)}),We=t("$ZodUUID",(e,t)=>{if(t.version){const e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=ie(e))}else t.pattern??(t.pattern=ie());Ve.init(e,t)}),qe=t("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=se),Ve.init(e,t)}),Ge=t("$ZodURL",(e,t)=>{Ve.init(e,t),e._zod.check=n=>{try{const r=n.value.trim(),o=new URL(r);return t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),void(t.normalize?n.value=o.href:n.value=r)}catch(r){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Be=t("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Ve.init(e,t)}),Ke=t("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=ne),Ve.init(e,t)}),Ye=t("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=X),Ve.init(e,t)}),Xe=t("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=H),Ve.init(e,t)}),He=t("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Q),Ve.init(e,t)}),Qe=t("$ZodXID",(e,t)=>{t.pattern??(t.pattern=ee),Ve.init(e,t)}),et=t("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=te),Ve.init(e,t)}),tt=t("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=function(e){const t=ye({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const r=`${t}(?:${n.join("|")})`;return new RegExp(`^${he}T(?:${r})$`)}(t)),Ve.init(e,t)}),nt=t("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=me),Ve.init(e,t)}),rt=t("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=new RegExp(`^${ye(t)}$`)),Ve.init(e,t)}),ot=t("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=re),Ve.init(e,t)}),it=t("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=ae),Ve.init(e,t),e._zod.bag.format="ipv4"}),st=t("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=ce),Ve.init(e,t),e._zod.bag.format="ipv6",e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}}),at=t("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=ue),Ve.init(e,t)}),ct=t("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=de),Ve.init(e,t),e._zod.check=n=>{const r=n.value.split("/");try{if(2!==r.length)throw new Error;const[e,t]=r;if(!t)throw new Error;const n=Number(t);if(`${n}`!==t)throw new Error;if(n<0||n>128)throw new Error;new URL(`http://[${e}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function ut(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const dt=t("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=pe),Ve.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{ut(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});const pt=t("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=le),Ve.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{(function(e){if(!le.test(e))return!1;const t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return ut(t.padEnd(4*Math.ceil(t.length/4),"="))})(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),lt=t("$ZodE164",(e,t)=>{t.pattern??(t.pattern=fe),Ve.init(e,t)});const ft=t("$ZodJWT",(e,t)=>{Ve.init(e,t),e._zod.check=n=>{(function(e,t=null){try{const n=e.split(".");if(3!==n.length)return!1;const[r]=n;if(!r)return!1;const o=JSON.parse(atob(r));return!("typ"in o&&"JWT"!==o?.typ||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}})(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}}),ht=t("$ZodNumber",(e,t)=>{De.init(e,t),e._zod.pattern=e._zod.bag.pattern??ve,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch(e){}const o=n.value;if("number"==typeof o&&!Number.isNaN(o)&&Number.isFinite(o))return n;const i="number"==typeof o?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return n.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),n}}),mt=t("$ZodNumberFormat",(e,t)=>{Se.init(e,t),ht.init(e,t)}),yt=t("$ZodBoolean",(e,t)=>{De.init(e,t),e._zod.pattern=_e,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Boolean(n.value)}catch(e){}const o=n.value;return"boolean"==typeof o||n.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),n}}),gt=t("$ZodAny",(e,t)=>{De.init(e,t),e._zod.parse=e=>e}),vt=t("$ZodUnknown",(e,t)=>{De.init(e,t),e._zod.parse=e=>e}),_t=t("$ZodNever",(e,t)=>{De.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function zt(e,t,n){e.issues.length&&t.issues.push(...S(n,e.issues)),t.value[n]=e.value}const bt=t("$ZodArray",(e,t)=>{De.init(e,t),e._zod.parse=(n,r)=>{const o=n.value;if(!Array.isArray(o))return n.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),n;n.value=Array(o.length);const i=[];for(let e=0;e<o.length;e++){const s=o[e],a=t.element._zod.run({value:s,issues:[]},r);a instanceof Promise?i.push(a.then(t=>zt(t,n,e))):zt(a,n,e)}return i.length?Promise.all(i).then(()=>n):n}});function wt(e,t,n,r,o){if(e.issues.length){if(o&&!(n in r))return;t.issues.push(...S(n,e.issues))}void 0===e.value?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function kt(e){const t=Object.keys(e.shape);for(const n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);const n=(r=e.shape,Object.keys(r).filter(e=>"optional"===r[e]._zod.optin&&"optional"===r[e]._zod.optout));var r;return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function $t(e,t,n,r,o,i){const s=[],a=o.keySet,c=o.catchall._zod,u=c.def.type,d="optional"===c.optout;for(const o in t){if(a.has(o))continue;if("never"===u){s.push(o);continue}const i=c.run({value:t[o],issues:[]},r);i instanceof Promise?e.push(i.then(e=>wt(e,n,o,t,d))):wt(i,n,o,t,d)}return s.length&&n.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>n):n}const Ot=t("$ZodObject",(e,t)=>{De.init(e,t);const n=Object.getOwnPropertyDescriptor(t,"shape");if(!n?.get){const e=t.shape;Object.defineProperty(t,"shape",{get:()=>{const n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}const r=c(()=>kt(t));l(e._zod,"propValues",()=>{const e=t.shape,n={};for(const t in e){const r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(const e of r.values)n[t].add(e)}}return n});const o=g,i=t.catchall;let s;e._zod.parse=(t,n)=>{s??(s=r.value);const a=t.value;if(!o(a))return t.issues.push({expected:"object",code:"invalid_type",input:a,inst:e}),t;t.value={};const c=[],u=s.shape;for(const e of s.keys){const r=u[e],o="optional"===r._zod.optout,i=r._zod.run({value:a[e],issues:[]},n);i instanceof Promise?c.push(i.then(n=>wt(n,t,e,a,o))):wt(i,t,e,a,o)}return i?$t(c,a,t,n,r.value,e):c.length?Promise.all(c).then(()=>t):t}}),xt=t("$ZodObjectJIT",(e,t)=>{Ot.init(e,t);const n=e._zod.parse,r=c(()=>kt(t));let i;const s=g,a=!o.jitless,u=a&&v.value,d=t.catchall;let p;e._zod.parse=(o,c)=>{p??(p=r.value);const l=o.value;return s(l)?a&&u&&!1===c?.async&&!0!==c.jitless?(i||(i=(e=>{const t=new Ce(["shape","payload","ctx"]),n=r.value,o=e=>{const t=m(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");const i=Object.create(null);let s=0;for(const e of n.keys)i[e]="key_"+s++;t.write("const newResult = {};");for(const r of n.keys){const n=i[r],s=m(r),a=e[r],c="optional"===a?._zod?.optout;t.write(`const ${n} = ${o(r)};`),c?t.write(`\n if (${n}.issues.length) {\n if (${s} in input) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${s}, ...iss.path] : [${s}]\n })));\n }\n }\n \n if (${n}.value === undefined) {\n if (${s} in input) {\n newResult[${s}] = undefined;\n }\n } else {\n newResult[${s}] = ${n}.value;\n }\n \n `):t.write(`\n if (${n}.issues.length) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${s}, ...iss.path] : [${s}]\n })));\n }\n \n if (${n}.value === undefined) {\n if (${s} in input) {\n newResult[${s}] = undefined;\n }\n } else {\n newResult[${s}] = ${n}.value;\n }\n \n `)}t.write("payload.value = newResult;"),t.write("return payload;");const a=t.compile();return(t,n)=>a(e,t,n)})(t.shape)),o=i(o,c),d?$t([],l,o,c,p,e):o):n(o,c):(o.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),o)}});function St(e,t,n,r){for(const n of e)if(0===n.issues.length)return t.value=n.value,t;const o=e.filter(e=>!x(e));return 1===o.length?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>T(e,r,i())))}),t)}const Zt=t("$ZodUnion",(e,t)=>{De.init(e,t),l(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),l(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),l(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),l(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){const e=t.options.map(e=>e._zod.pattern);return new RegExp(`^(${e.map(e=>d(e.source)).join("|")})$`)}});const n=1===t.options.length,r=t.options[0]._zod.run;e._zod.parse=(o,i)=>{if(n)return r(o,i);let s=!1;const a=[];for(const e of t.options){const t=e._zod.run({value:o.value,issues:[]},i);if(t instanceof Promise)a.push(t),s=!0;else{if(0===t.issues.length)return t;a.push(t)}}return s?Promise.all(a).then(t=>St(t,o,e,i)):St(a,o,e,i)}}),Tt=t("$ZodIntersection",(e,t)=>{De.init(e,t),e._zod.parse=(e,n)=>{const r=e.value,o=t.left._zod.run({value:r,issues:[]},n),i=t.right._zod.run({value:r,issues:[]},n);return o instanceof Promise||i instanceof Promise?Promise.all([o,i]).then(([t,n])=>It(e,t,n)):It(e,o,i)}});function Et(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(_(e)&&_(t)){const n=Object.keys(t),r=Object.keys(e).filter(e=>-1!==n.indexOf(e)),o={...e,...t};for(const n of r){const r=Et(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};o[n]=r.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let r=0;r<e.length;r++){const o=Et(e[r],t[r]);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function It(e,t,n){const r=new Map;let o;for(const n of t.issues)if("unrecognized_keys"===n.code){o??(o=n);for(const e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(const t of n.issues)if("unrecognized_keys"===t.code)for(const e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);const i=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(i.length&&o&&e.issues.push({...o,keys:i}),x(e))return e;const s=Et(t.value,n.value);if(!s.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(s.mergeErrorPath)}`);return e.value=s.data,e}const Nt=t("$ZodTuple",(e,t)=>{De.init(e,t);const n=t.items;e._zod.parse=(r,o)=>{const i=r.value;if(!Array.isArray(i))return r.issues.push({input:i,inst:e,expected:"tuple",code:"invalid_type"}),r;r.value=[];const s=[],a=[...n].reverse().findIndex(e=>"optional"!==e._zod.optin),c=-1===a?0:n.length-a;if(!t.rest){const t=i.length>n.length,o=i.length<c-1;if(t||o)return r.issues.push({...t?{code:"too_big",maximum:n.length,inclusive:!0}:{code:"too_small",minimum:n.length},input:i,inst:e,origin:"array"}),r}let u=-1;for(const e of n){if(u++,u>=i.length&&u>=c)continue;const t=e._zod.run({value:i[u],issues:[]},o);t instanceof Promise?s.push(t.then(e=>Pt(e,r,u))):Pt(t,r,u)}if(t.rest){const e=i.slice(n.length);for(const n of e){u++;const e=t.rest._zod.run({value:n,issues:[]},o);e instanceof Promise?s.push(e.then(e=>Pt(e,r,u))):Pt(e,r,u)}}return s.length?Promise.all(s).then(()=>r):r}});function Pt(e,t,n){e.issues.length&&t.issues.push(...S(n,e.issues)),t.value[n]=e.value}const At=t("$ZodRecord",(e,t)=>{De.init(e,t),e._zod.parse=(n,r)=>{const o=n.value;if(!_(o))return n.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),n;const s=[],a=t.keyType._zod.values;if(a){n.value={};const i=new Set;for(const e of a)if("string"==typeof e||"number"==typeof e||"symbol"==typeof e){i.add("number"==typeof e?e.toString():e);const a=t.valueType._zod.run({value:o[e],issues:[]},r);a instanceof Promise?s.push(a.then(t=>{t.issues.length&&n.issues.push(...S(e,t.issues)),n.value[e]=t.value})):(a.issues.length&&n.issues.push(...S(e,a.issues)),n.value[e]=a.value)}let c;for(const e in o)i.has(e)||(c=c??[],c.push(e));c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:c})}else{n.value={};for(const a of Reflect.ownKeys(o)){if("__proto__"===a)continue;let c=t.keyType._zod.run({value:a,issues:[]},r);if(c instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if("string"==typeof a&&ve.test(a)&&c.issues.length){const e=t.keyType._zod.run({value:Number(a),issues:[]},r);if(e instanceof Promise)throw new Error("Async schemas not supported in object keys currently");0===e.issues.length&&(c=e)}if(c.issues.length){"loose"===t.mode?n.value[a]=o[a]:n.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map(e=>T(e,r,i())),input:a,path:[a],inst:e});continue}const u=t.valueType._zod.run({value:o[a],issues:[]},r);u instanceof Promise?s.push(u.then(e=>{e.issues.length&&n.issues.push(...S(a,e.issues)),n.value[c.value]=e.value})):(u.issues.length&&n.issues.push(...S(a,u.issues)),n.value[c.value]=u.value)}}return s.length?Promise.all(s).then(()=>n):n}}),jt=t("$ZodEnum",(e,t)=>{De.init(e,t);const n=s(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=new RegExp(`^(${n.filter(e=>b.has(typeof e)).map(e=>"string"==typeof e?w(e):e.toString()).join("|")})$`),e._zod.parse=(t,o)=>{const i=t.value;return r.has(i)||t.issues.push({code:"invalid_value",values:n,input:i,inst:e}),t}}),Ft=t("$ZodTransform",(e,t)=>{De.init(e,t),e._zod.parse=(o,i)=>{if("backward"===i.direction)throw new r(e.constructor.name);const s=t.transform(o.value,o);if(i.async){return(s instanceof Promise?s:Promise.resolve(s)).then(e=>(o.value=e,o))}if(s instanceof Promise)throw new n;return o.value=s,o}});function Rt(e,t){return e.issues.length&&void 0===t?{issues:[],value:void 0}:e}const Jt=t("$ZodOptional",(e,t)=>{De.init(e,t),e._zod.optin="optional",e._zod.optout="optional",l(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),l(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${d(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if("optional"===t.innerType._zod.optin){const r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>Rt(t,e.value)):Rt(r,e.value)}return void 0===e.value?e:t.innerType._zod.run(e,n)}}),Ct=t("$ZodExactOptional",(e,t)=>{Jt.init(e,t),l(e._zod,"values",()=>t.innerType._zod.values),l(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Ut=t("$ZodNullable",(e,t)=>{De.init(e,t),l(e._zod,"optin",()=>t.innerType._zod.optin),l(e._zod,"optout",()=>t.innerType._zod.optout),l(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${d(e.source)}|null)$`):void 0}),l(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>null===e.value?e:t.innerType._zod.run(e,n)}),Dt=t("$ZodDefault",(e,t)=>{De.init(e,t),e._zod.optin="optional",l(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);if(void 0===e.value)return e.value=t.defaultValue,e;const r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Mt(e,t)):Mt(r,t)}});function Mt(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}const Vt=t("$ZodPrefault",(e,t)=>{De.init(e,t),e._zod.optin="optional",l(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>("backward"===n.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Lt=t("$ZodNonOptional",(e,t)=>{De.init(e,t),l(e._zod,"values",()=>{const e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(n,r)=>{const o=t.innerType._zod.run(n,r);return o instanceof Promise?o.then(t=>Wt(t,e)):Wt(o,e)}});function Wt(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const qt=t("$ZodCatch",(e,t)=>{De.init(e,t),l(e._zod,"optin",()=>t.innerType._zod.optin),l(e._zod,"optout",()=>t.innerType._zod.optout),l(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>T(e,n,i()))},input:e.value}),e.issues=[]),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>T(e,n,i()))},input:e.value}),e.issues=[]),e)}}),Gt=t("$ZodPipe",(e,t)=>{De.init(e,t),l(e._zod,"values",()=>t.in._zod.values),l(e._zod,"optin",()=>t.in._zod.optin),l(e._zod,"optout",()=>t.out._zod.optout),l(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if("backward"===n.direction){const r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>Bt(e,t.in,n)):Bt(r,t.in,n)}const r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Bt(e,t.out,n)):Bt(r,t.out,n)}});function Bt(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const Kt=t("$ZodReadonly",(e,t)=>{De.init(e,t),l(e._zod,"propValues",()=>t.innerType._zod.propValues),l(e._zod,"values",()=>t.innerType._zod.values),l(e._zod,"optin",()=>t.innerType?._zod?.optin),l(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Yt):Yt(r)}});function Yt(e){return e.value=Object.freeze(e.value),e}const Xt=t("$ZodFunction",(e,t)=>(De.init(e,t),e._def=t,e._zod.def=t,e.implement=t=>{if("function"!=typeof t)throw new Error("implement() must be called with a function");return function(...n){const r=e._def.input?F(e._def.input,n):n,o=Reflect.apply(t,this,r);return e._def.output?F(e._def.output,o):o}},e.implementAsync=t=>{if("function"!=typeof t)throw new Error("implementAsync() must be called with a function");return async function(...n){const r=e._def.input?await J(e._def.input,n):n,o=await Reflect.apply(t,this,r);return e._def.output?await J(e._def.output,o):o}},e._zod.parse=(t,n)=>{if("function"!=typeof t.value)return t.issues.push({code:"invalid_type",expected:"function",input:t.value,inst:e}),t;const r=e._def.output&&"promise"===e._def.output._zod.def.type;return t.value=r?e.implementAsync(t.value):e.implement(t.value),t},e.input=(...t)=>{const n=e.constructor;return Array.isArray(t[0])?new n({type:"function",input:new Nt({type:"tuple",items:t[0],rest:t[1]}),output:e._def.output}):new n({type:"function",input:t[0],output:e._def.output})},e.output=t=>new(0,e.constructor)({type:"function",input:e._def.input,output:t}),e)),Ht=t("$ZodCustom",(e,t)=>{we.init(e,t),De.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{const r=n.value,o=t.fn(r);if(o instanceof Promise)return o.then(t=>Qt(t,n,r,e));Qt(o,n,r,e)}});function Qt(e,t,n,r){if(!e){const e={code:"custom",input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(I(e))}}var en;class tn{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const n=t[0];return this._map.set(e,n),n&&"object"==typeof n&&"id"in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const n={...this.get(t)??{}};delete n.id;const r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}(en=globalThis).__zod_globalRegistry??(en.__zod_globalRegistry=new tn);const nn=globalThis.__zod_globalRegistry;function rn(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...$(t)})}function on(e,t){return new $e({check:"less_than",...$(t),value:e,inclusive:!1})}function sn(e,t){return new $e({check:"less_than",...$(t),value:e,inclusive:!0})}function an(e,t){return new Oe({check:"greater_than",...$(t),value:e,inclusive:!1})}function cn(e,t){return new Oe({check:"greater_than",...$(t),value:e,inclusive:!0})}function un(e,t){return new xe({check:"multiple_of",...$(t),value:e})}function dn(e,t){return new Ze({check:"max_length",...$(t),maximum:e})}function pn(e,t){return new Te({check:"min_length",...$(t),minimum:e})}function ln(e,t){return new Ee({check:"length_equals",...$(t),length:e})}function fn(e){return new Je({check:"overwrite",tx:e})}function hn(e){const t=function(e,t){const n=new we({check:"custom",...$(t)});return n._zod.check=e,n}(n=>(n.addIssue=e=>{if("string"==typeof e)n.issues.push(I(e,n.value,t._zod.def));else{const r=e;r.fatal&&(r.continue=!1),r.code??(r.code="custom"),r.input??(r.input=n.value),r.inst??(r.inst=t),r.continue??(r.continue=!t._zod.def.abort),n.issues.push(I(r))}},e(n.value,n)));return t}function mn(e){let t=e?.target??"draft-2020-12";return"draft-4"===t&&(t="draft-04"),"draft-7"===t&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??nn,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function yn(e,t,n={path:[],schemaPath:[]}){var r;const o=e._zod.def,i=t.seen.get(e);if(i){i.count++;return n.schemaPath.includes(e)&&(i.cycle=n.path),i.schema}const s={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,s);const a=e._zod.toJSONSchema?.();if(a)s.schema=a;else{const r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,r);else{const n=s.schema,i=t.processors[o.type];if(!i)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);i(e,t,n,r)}const i=e._zod.parent;i&&(s.ref||(s.ref=i),yn(i,t,r),t.seen.get(i).isParent=!0)}const c=t.metadataRegistry.get(e);c&&Object.assign(s.schema,c),"input"===t.io&&_n(e)&&(delete s.schema.examples,delete s.schema.default),"input"===t.io&&s.schema._prefault&&((r=s.schema).default??(r.default=s.schema._prefault)),delete s.schema._prefault;return t.seen.get(e).schema}function gn(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const t of e.seen.entries()){const n=e.metadataRegistry.get(t[0])?.id;if(n){const e=r.get(n);if(e&&e!==t[0])throw new Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}const o=t=>{if(t[1].schema.$ref)return;const r=t[1],{ref:o,defId:i}=(t=>{const r="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){const n=e.external.registry.get(t[0])?.id,o=e.external.uri??(e=>e);if(n)return{ref:o(n)};const i=t[1].defId??t[1].schema.id??"schema"+e.counter++;return t[1].defId=i,{defId:i,ref:`${o("__shared")}#/${r}/${i}`}}if(t[1]===n)return{ref:"#"};const o=`#/${r}/`,i=t[1].schema.id??"__schema"+e.counter++;return{defId:i,ref:o+i}})(t);r.def={...r.schema},i&&(r.defId=i);const s=r.schema;for(const e in s)delete s[e];s.$ref=o};if("throw"===e.cycles)for(const t of e.seen.entries()){const e=t[1];if(e.cycle)throw new Error(`Cycle detected: #/${e.cycle?.join("/")}/<root>\n\nSet the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const n of e.seen.entries()){const r=n[1];if(t===n[0]){o(n);continue}if(e.external){const r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){o(n);continue}}const i=e.metadataRegistry.get(n[0])?.id;i?o(n):(r.cycle||r.count>1&&"ref"===e.reused)&&o(n)}}function vn(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=t=>{const n=e.seen.get(t);if(null===n.ref)return;const o=n.def??n.schema,i={...o},s=n.ref;if(n.ref=null,s){r(s);const n=e.seen.get(s),a=n.schema;!a.$ref||"draft-07"!==e.target&&"draft-04"!==e.target&&"openapi-3.0"!==e.target?Object.assign(o,a):(o.allOf=o.allOf??[],o.allOf.push(a)),Object.assign(o,i);if(t._zod.parent===s)for(const e in o)"$ref"!==e&&"allOf"!==e&&(e in i||delete o[e]);if(a.$ref&&n.def)for(const e in o)"$ref"!==e&&"allOf"!==e&&e in n.def&&JSON.stringify(o[e])===JSON.stringify(n.def[e])&&delete o[e]}const a=t._zod.parent;if(a&&a!==s){r(a);const t=e.seen.get(a);if(t?.schema.$ref&&(o.$ref=t.schema.$ref,t.def))for(const e in o)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(o[e])===JSON.stringify(t.def[e])&&delete o[e]}e.override({zodSchema:t,jsonSchema:o,path:n.path??[]})};for(const t of[...e.seen.entries()].reverse())r(t[0]);const o={};if("draft-2020-12"===e.target?o.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?o.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const n=e.external.registry.get(t)?.id;if(!n)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(n)}Object.assign(o,n.def??n.schema);const i=e.external?.defs??{};for(const t of e.seen.entries()){const e=t[1];e.def&&e.defId&&(i[e.defId]=e.def)}e.external||Object.keys(i).length>0&&("draft-2020-12"===e.target?o.$defs=i:o.definitions=i);try{const n=JSON.parse(JSON.stringify(o));return Object.defineProperty(n,"~standard",{value:{...t["~standard"],jsonSchema:{input:zn(t,"input",e.processors),output:zn(t,"output",e.processors)}},enumerable:!1,writable:!1}),n}catch(e){throw new Error("Error converting schema to JSON.")}}function _n(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const r=e._zod.def;if("transform"===r.type)return!0;if("array"===r.type)return _n(r.element,n);if("set"===r.type)return _n(r.valueType,n);if("lazy"===r.type)return _n(r.getter(),n);if("promise"===r.type||"optional"===r.type||"nonoptional"===r.type||"nullable"===r.type||"readonly"===r.type||"default"===r.type||"prefault"===r.type)return _n(r.innerType,n);if("intersection"===r.type)return _n(r.left,n)||_n(r.right,n);if("record"===r.type||"map"===r.type)return _n(r.keyType,n)||_n(r.valueType,n);if("pipe"===r.type)return _n(r.in,n)||_n(r.out,n);if("object"===r.type){for(const e in r.shape)if(_n(r.shape[e],n))return!0;return!1}if("union"===r.type){for(const e of r.options)if(_n(e,n))return!0;return!1}if("tuple"===r.type){for(const e of r.items)if(_n(e,n))return!0;return!(!r.rest||!_n(r.rest,n))}return!1}const zn=(e,t,n={})=>r=>{const{libraryOptions:o,target:i}=r??{},s=mn({...o??{},target:i,io:t,processors:n});return yn(e,s),gn(s,e),vn(s,e)},bn={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},wn=(e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r);t.seen.get(e).ref=o.innerType},kn=t("ZodISODateTime",(e,t)=>{tt.init(e,t),Bn.init(e,t)});function $n(e){return function(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...$(t)})}(kn,e)}const On=t("ZodISODate",(e,t)=>{nt.init(e,t),Bn.init(e,t)});function xn(e){return function(e,t){return new e({type:"string",format:"date",check:"string_format",...$(t)})}(On,e)}const Sn=t("ZodISOTime",(e,t)=>{rt.init(e,t),Bn.init(e,t)});function Zn(e){return function(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...$(t)})}(Sn,e)}const Tn=t("ZodISODuration",(e,t)=>{ot.init(e,t),Bn.init(e,t)});function En(e){return function(e,t){return new e({type:"string",format:"duration",check:"string_format",...$(t)})}(Tn,e)}const In=t("ZodError",(e,t)=>{P.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>function(e,t=e=>e.message){const n={_errors:[]},r=e=>{for(const o of e.issues)if("invalid_union"===o.code&&o.errors.length)o.errors.map(e=>r({issues:e}));else if("invalid_key"===o.code)r({issues:o.issues});else if("invalid_element"===o.code)r({issues:o.issues});else if(0===o.path.length)n._errors.push(t(o));else{let e=n,r=0;for(;r<o.path.length;){const n=o.path[r];r===o.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(o))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(e),n}(e,t)},flatten:{value:t=>function(e,t=e=>e.message){const n={},r=[];for(const o of e.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(t(o))):r.push(t(o));return{formErrors:r,fieldErrors:n}}(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,a,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,a,2)}},isEmpty:{get:()=>0===e.issues.length}})},{Parent:Error}),Nn=j(In),Pn=R(In),An=C(In),jn=D(In),Fn=V(In),Rn=L(In),Jn=W(In),Cn=q(In),Un=G(In),Dn=B(In),Mn=K(In),Vn=Y(In),Ln=t("ZodType",(e,t)=>(De.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:zn(e,"input"),output:zn(e,"output")}}),e.toJSONSchema=((e,t={})=>n=>{const r=mn({...n,processors:t});return yn(e,r),gn(r,e),vn(r,e)})(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(h(t,{checks:[...t.checks??[],...n.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,n)=>k(e,t,n),e.brand=()=>e,e.register=(t,n)=>(t.add(e,n),e),e.parse=(t,n)=>Nn(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>An(e,t,n),e.parseAsync=async(t,n)=>Pn(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>jn(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Fn(e,t,n),e.decode=(t,n)=>Rn(e,t,n),e.encodeAsync=async(t,n)=>Jn(e,t,n),e.decodeAsync=async(t,n)=>Cn(e,t,n),e.safeEncode=(t,n)=>Un(e,t,n),e.safeDecode=(t,n)=>Dn(e,t,n),e.safeEncodeAsync=async(t,n)=>Mn(e,t,n),e.safeDecodeAsync=async(t,n)=>Vn(e,t,n),e.refine=(t,n)=>e.check(function(e,t={}){return function(e,t,n){return new e({type:"custom",check:"custom",fn:t,...$(n)})}(Hr,e,t)}(t,n)),e.superRefine=t=>e.check(hn(t)),e.overwrite=t=>e.check(fn(t)),e.optional=()=>Cr(e),e.exactOptional=()=>new Ur({type:"optional",innerType:e}),e.nullable=()=>Mr(e),e.nullish=()=>Cr(Mr(e)),e.nonoptional=t=>function(e,t){return new Wr({type:"nonoptional",innerType:e,...$(t)})}(e,t),e.array=()=>xr(e),e.or=t=>{return new Tr({type:"union",options:[e,t],...$(n)});var n},e.and=t=>new Er({type:"intersection",left:e,right:t}),e.transform=t=>Br(e,new Rr({type:"transform",transform:t})),e.default=t=>{return n=t,new Vr({type:"default",innerType:e,get defaultValue(){return"function"==typeof n?n():z(n)}});var n},e.prefault=t=>{return n=t,new Lr({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof n?n():z(n)}});var n},e.catch=t=>{return new qr({type:"catch",innerType:e,catchValue:"function"==typeof(n=t)?n:()=>n});var n},e.pipe=t=>Br(e,t),e.readonly=()=>new Kr({type:"readonly",innerType:e}),e.describe=t=>{const n=e.clone();return nn.add(n,{description:t}),n},Object.defineProperty(e,"description",{get:()=>nn.get(e)?.description,configurable:!0}),e.meta=(...t)=>{if(0===t.length)return nn.get(e);const n=e.clone();return nn.add(n,t[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),Wn=t("_ZodString",(e,t)=>{Me.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n)=>{const r=n;r.type="string";const{minimum:o,maximum:i,format:s,patterns:a,contentEncoding:c}=e._zod.bag;if("number"==typeof o&&(r.minLength=o),"number"==typeof i&&(r.maxLength=i),s&&(r.format=bn[s]??s,""===r.format&&delete r.format,"time"===s&&delete r.format),c&&(r.contentEncoding=c),a&&a.size>0){const e=[...a];1===e.length?r.pattern=e[0].source:e.length>1&&(r.allOf=[...e.map(e=>({..."draft-07"===t.target||"draft-04"===t.target||"openapi-3.0"===t.target?{type:"string"}:{},pattern:e.source}))])}})(e,t,n);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...t)=>e.check(function(e,t){return new Ne({check:"string_format",format:"regex",...$(t),pattern:e})}(...t)),e.includes=(...t)=>e.check(function(e,t){return new je({check:"string_format",format:"includes",...$(t),includes:e})}(...t)),e.startsWith=(...t)=>e.check(function(e,t){return new Fe({check:"string_format",format:"starts_with",...$(t),prefix:e})}(...t)),e.endsWith=(...t)=>e.check(function(e,t){return new Re({check:"string_format",format:"ends_with",...$(t),suffix:e})}(...t)),e.min=(...t)=>e.check(pn(...t)),e.max=(...t)=>e.check(dn(...t)),e.length=(...t)=>e.check(ln(...t)),e.nonempty=(...t)=>e.check(pn(1,...t)),e.lowercase=t=>e.check(function(e){return new Pe({check:"string_format",format:"lowercase",...$(e)})}(t)),e.uppercase=t=>e.check(function(e){return new Ae({check:"string_format",format:"uppercase",...$(e)})}(t)),e.trim=()=>e.check(fn(e=>e.trim())),e.normalize=(...t)=>e.check(function(e){return fn(t=>t.normalize(e))}(...t)),e.toLowerCase=()=>e.check(fn(e=>e.toLowerCase())),e.toUpperCase=()=>e.check(fn(e=>e.toUpperCase())),e.slugify=()=>e.check(fn(e=>function(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}(e)))}),qn=t("ZodString",(e,t)=>{Me.init(e,t),Wn.init(e,t),e.email=t=>e.check(function(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...$(t)})}(Kn,t)),e.url=t=>e.check(function(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...$(t)})}(Hn,t)),e.jwt=t=>e.check(function(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...$(t)})}(fr,t)),e.emoji=t=>e.check(function(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...$(t)})}(Qn,t)),e.guid=t=>e.check(rn(Yn,t)),e.uuid=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...$(t)})}(Xn,t)),e.uuidv4=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...$(t)})}(Xn,t)),e.uuidv6=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...$(t)})}(Xn,t)),e.uuidv7=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...$(t)})}(Xn,t)),e.nanoid=t=>e.check(function(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...$(t)})}(er,t)),e.guid=t=>e.check(rn(Yn,t)),e.cuid=t=>e.check(function(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...$(t)})}(tr,t)),e.cuid2=t=>e.check(function(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...$(t)})}(nr,t)),e.ulid=t=>e.check(function(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...$(t)})}(rr,t)),e.base64=t=>e.check(function(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...$(t)})}(dr,t)),e.base64url=t=>e.check(function(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...$(t)})}(pr,t)),e.xid=t=>e.check(function(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...$(t)})}(or,t)),e.ksuid=t=>e.check(function(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...$(t)})}(ir,t)),e.ipv4=t=>e.check(function(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...$(t)})}(sr,t)),e.ipv6=t=>e.check(function(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...$(t)})}(ar,t)),e.cidrv4=t=>e.check(function(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...$(t)})}(cr,t)),e.cidrv6=t=>e.check(function(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...$(t)})}(ur,t)),e.e164=t=>e.check(function(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...$(t)})}(lr,t)),e.datetime=t=>e.check($n(t)),e.date=t=>e.check(xn(t)),e.time=t=>e.check(Zn(t)),e.duration=t=>e.check(En(t))});function Gn(e){return function(e,t){return new e({type:"string",...$(t)})}(qn,e)}const Bn=t("ZodStringFormat",(e,t)=>{Ve.init(e,t),Wn.init(e,t)}),Kn=t("ZodEmail",(e,t)=>{qe.init(e,t),Bn.init(e,t)}),Yn=t("ZodGUID",(e,t)=>{Le.init(e,t),Bn.init(e,t)}),Xn=t("ZodUUID",(e,t)=>{We.init(e,t),Bn.init(e,t)}),Hn=t("ZodURL",(e,t)=>{Ge.init(e,t),Bn.init(e,t)}),Qn=t("ZodEmoji",(e,t)=>{Be.init(e,t),Bn.init(e,t)}),er=t("ZodNanoID",(e,t)=>{Ke.init(e,t),Bn.init(e,t)}),tr=t("ZodCUID",(e,t)=>{Ye.init(e,t),Bn.init(e,t)}),nr=t("ZodCUID2",(e,t)=>{Xe.init(e,t),Bn.init(e,t)}),rr=t("ZodULID",(e,t)=>{He.init(e,t),Bn.init(e,t)}),or=t("ZodXID",(e,t)=>{Qe.init(e,t),Bn.init(e,t)}),ir=t("ZodKSUID",(e,t)=>{et.init(e,t),Bn.init(e,t)}),sr=t("ZodIPv4",(e,t)=>{it.init(e,t),Bn.init(e,t)}),ar=t("ZodIPv6",(e,t)=>{st.init(e,t),Bn.init(e,t)}),cr=t("ZodCIDRv4",(e,t)=>{at.init(e,t),Bn.init(e,t)}),ur=t("ZodCIDRv6",(e,t)=>{ct.init(e,t),Bn.init(e,t)}),dr=t("ZodBase64",(e,t)=>{dt.init(e,t),Bn.init(e,t)}),pr=t("ZodBase64URL",(e,t)=>{pt.init(e,t),Bn.init(e,t)}),lr=t("ZodE164",(e,t)=>{lt.init(e,t),Bn.init(e,t)}),fr=t("ZodJWT",(e,t)=>{ft.init(e,t),Bn.init(e,t)}),hr=t("ZodNumber",(e,t)=>{ht.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n)=>{const r=n,{minimum:o,maximum:i,format:s,multipleOf:a,exclusiveMaximum:c,exclusiveMinimum:u}=e._zod.bag;"string"==typeof s&&s.includes("int")?r.type="integer":r.type="number","number"==typeof u&&("draft-04"===t.target||"openapi-3.0"===t.target?(r.minimum=u,r.exclusiveMinimum=!0):r.exclusiveMinimum=u),"number"==typeof o&&(r.minimum=o,"number"==typeof u&&"draft-04"!==t.target&&(u>=o?delete r.minimum:delete r.exclusiveMinimum)),"number"==typeof c&&("draft-04"===t.target||"openapi-3.0"===t.target?(r.maximum=c,r.exclusiveMaximum=!0):r.exclusiveMaximum=c),"number"==typeof i&&(r.maximum=i,"number"==typeof c&&"draft-04"!==t.target&&(c<=i?delete r.maximum:delete r.exclusiveMaximum)),"number"==typeof a&&(r.multipleOf=a)})(e,t,n),e.gt=(t,n)=>e.check(an(t,n)),e.gte=(t,n)=>e.check(cn(t,n)),e.min=(t,n)=>e.check(cn(t,n)),e.lt=(t,n)=>e.check(on(t,n)),e.lte=(t,n)=>e.check(sn(t,n)),e.max=(t,n)=>e.check(sn(t,n)),e.int=t=>e.check(gr(t)),e.safe=t=>e.check(gr(t)),e.positive=t=>e.check(an(0,t)),e.nonnegative=t=>e.check(cn(0,t)),e.negative=t=>e.check(on(0,t)),e.nonpositive=t=>e.check(sn(0,t)),e.multipleOf=(t,n)=>e.check(un(t,n)),e.step=(t,n)=>e.check(un(t,n)),e.finite=()=>e;const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function mr(e){return function(e,t){return new e({type:"number",checks:[],...$(t)})}(hr,e)}const yr=t("ZodNumberFormat",(e,t)=>{mt.init(e,t),hr.init(e,t)});function gr(e){return function(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...$(t)})}(yr,e)}const vr=t("ZodBoolean",(e,t)=>{yt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t,n)=>{n.type="boolean"})(0,0,t)});function _r(e){return function(e,t){return new e({type:"boolean",...$(t)})}(vr,e)}const zr=t("ZodAny",(e,t)=>{gt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>{}});const br=t("ZodUnknown",(e,t)=>{vt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>{}});function wr(){return new br({type:"unknown"})}const kr=t("ZodNever",(e,t)=>{_t.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t,n)=>{n.not={}})(0,0,t)});function $r(e){return function(e,t){return new e({type:"never",...$(t)})}(kr,e)}const Or=t("ZodArray",(e,t)=>{bt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=n,i=e._zod.def,{minimum:s,maximum:a}=e._zod.bag;"number"==typeof s&&(o.minItems=s),"number"==typeof a&&(o.maxItems=a),o.type="array",o.items=yn(i.element,t,{...r,path:[...r.path,"items"]})})(e,t,n,r),e.element=t.element,e.min=(t,n)=>e.check(pn(t,n)),e.nonempty=t=>e.check(pn(1,t)),e.max=(t,n)=>e.check(dn(t,n)),e.length=(t,n)=>e.check(ln(t,n)),e.unwrap=()=>e.element});function xr(e,t){return function(e,t,n){return new e({type:"array",element:t,...$(n)})}(Or,e,t)}const Sr=t("ZodObject",(e,t)=>{xt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=n,i=e._zod.def;o.type="object",o.properties={};const s=i.shape;for(const e in s)o.properties[e]=yn(s[e],t,{...r,path:[...r.path,"properties",e]});const a=new Set(Object.keys(s)),c=new Set([...a].filter(e=>{const n=i.shape[e]._zod;return"input"===t.io?void 0===n.optin:void 0===n.optout}));c.size>0&&(o.required=Array.from(c)),"never"===i.catchall?._zod.def.type?o.additionalProperties=!1:i.catchall?i.catchall&&(o.additionalProperties=yn(i.catchall,t,{...r,path:[...r.path,"additionalProperties"]})):"output"===t.io&&(o.additionalProperties=!1)})(e,t,n,r),l(e,"shape",()=>t.shape),e.keyof=()=>Fr(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:wr()}),e.loose=()=>e.clone({...e._zod.def,catchall:wr()}),e.strict=()=>e.clone({...e._zod.def,catchall:$r()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>function(e,t){if(!_(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const n=e._zod.def.shape;for(const e in t)if(void 0!==Object.getOwnPropertyDescriptor(n,e))throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const r=h(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return f(this,"shape",n),n}});return k(e,r)}(e,t),e.safeExtend=t=>function(e,t){if(!_(t))throw new Error("Invalid input to safeExtend: expected a plain object");const n=h(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return f(this,"shape",n),n}});return k(e,n)}(e,t),e.merge=t=>function(e,t){const n=h(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t._zod.def.shape};return f(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return k(e,n)}(e,t),e.pick=t=>function(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return k(e,h(e._zod.def,{get shape(){const e={};for(const r in t){if(!(r in n.shape))throw new Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return f(this,"shape",e),e},checks:[]}))}(e,t),e.omit=t=>function(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const o=h(e._zod.def,{get shape(){const r={...e._zod.def.shape};for(const e in t){if(!(e in n.shape))throw new Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return f(this,"shape",r),r},checks:[]});return k(e,o)}(e,t),e.partial=(...t)=>function(e,t,n){const r=t._zod.def.checks;if(r&&r.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const o=h(t._zod.def,{get shape(){const r=t._zod.def.shape,o={...r};if(n)for(const t in n){if(!(t in r))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=e?new e({type:"optional",innerType:r[t]}):r[t])}else for(const t in r)o[t]=e?new e({type:"optional",innerType:r[t]}):r[t];return f(this,"shape",o),o},checks:[]});return k(t,o)}(Jr,e,t[0]),e.required=(...t)=>function(e,t,n){const r=h(t._zod.def,{get shape(){const r=t._zod.def.shape,o={...r};if(n)for(const t in n){if(!(t in o))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=new e({type:"nonoptional",innerType:r[t]}))}else for(const t in r)o[t]=new e({type:"nonoptional",innerType:r[t]});return f(this,"shape",o),o}});return k(t,r)}(Wr,e,t[0])});function Zr(e,t){const n={type:"object",shape:e??{},...$(t)};return new Sr(n)}const Tr=t("ZodUnion",(e,t)=>{Zt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def,i=!1===o.inclusive,s=o.options.map((e,n)=>yn(e,t,{...r,path:[...r.path,i?"oneOf":"anyOf",n]}));i?n.oneOf=s:n.anyOf=s})(e,t,n,r),e.options=t.options});const Er=t("ZodIntersection",(e,t)=>{Tt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def,i=yn(o.left,t,{...r,path:[...r.path,"allOf",0]}),s=yn(o.right,t,{...r,path:[...r.path,"allOf",1]}),a=e=>"allOf"in e&&1===Object.keys(e).length,c=[...a(i)?i.allOf:[i],...a(s)?s.allOf:[s]];n.allOf=c})(e,t,n,r)});const Ir=t("ZodTuple",(e,t)=>{Nt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=n,i=e._zod.def;o.type="array";const s="draft-2020-12"===t.target?"prefixItems":"items",a="draft-2020-12"===t.target||"openapi-3.0"===t.target?"items":"additionalItems",c=i.items.map((e,n)=>yn(e,t,{...r,path:[...r.path,s,n]})),u=i.rest?yn(i.rest,t,{...r,path:[...r.path,a,..."openapi-3.0"===t.target?[i.items.length]:[]]}):null;"draft-2020-12"===t.target?(o.prefixItems=c,u&&(o.items=u)):"openapi-3.0"===t.target?(o.items={anyOf:c},u&&o.items.anyOf.push(u),o.minItems=c.length,u||(o.maxItems=c.length)):(o.items=c,u&&(o.additionalItems=u));const{minimum:d,maximum:p}=e._zod.bag;"number"==typeof d&&(o.minItems=d),"number"==typeof p&&(o.maxItems=p)})(e,t,n,r),e.rest=t=>e.clone({...e._zod.def,rest:t})});function Nr(e,t,n){const r=t instanceof De;return new Ir({type:"tuple",items:e,rest:r?t:null,...$(r?n:t)})}const Pr=t("ZodRecord",(e,t)=>{At.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=n,i=e._zod.def;o.type="object";const s=i.keyType,a=s._zod.bag,c=a?.patterns;if("loose"===i.mode&&c&&c.size>0){const e=yn(i.valueType,t,{...r,path:[...r.path,"patternProperties","*"]});o.patternProperties={};for(const t of c)o.patternProperties[t.source]=e}else"draft-07"!==t.target&&"draft-2020-12"!==t.target||(o.propertyNames=yn(i.keyType,t,{...r,path:[...r.path,"propertyNames"]})),o.additionalProperties=yn(i.valueType,t,{...r,path:[...r.path,"additionalProperties"]});const u=s._zod.values;if(u){const e=[...u].filter(e=>"string"==typeof e||"number"==typeof e);e.length>0&&(o.required=e)}})(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function Ar(e,t,n){return new Pr({type:"record",keyType:e,valueType:t,...$(n)})}const jr=t("ZodEnum",(e,t)=>{jt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n)=>{const r=s(e._zod.def.entries);r.every(e=>"number"==typeof e)&&(n.type="number"),r.every(e=>"string"==typeof e)&&(n.type="string"),n.enum=r})(e,0,n),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{const o={};for(const r of e){if(!n.has(r))throw new Error(`Key ${r} not found in enum`);o[r]=t.entries[r]}return new jr({...t,checks:[],...$(r),entries:o})},e.exclude=(e,r)=>{const o={...t.entries};for(const t of e){if(!n.has(t))throw new Error(`Key ${t} not found in enum`);delete o[t]}return new jr({...t,checks:[],...$(r),entries:o})}});function Fr(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new jr({type:"enum",entries:n,...$(t)})}const Rr=t("ZodTransform",(e,t)=>{Ft.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t)=>{if("throw"===t.unrepresentable)throw new Error("Transforms cannot be represented in JSON Schema")})(0,e),e._zod.parse=(n,o)=>{if("backward"===o.direction)throw new r(e.constructor.name);n.addIssue=r=>{if("string"==typeof r)n.issues.push(I(r,n.value,t));else{const t=r;t.fatal&&(t.continue=!1),t.code??(t.code="custom"),t.input??(t.input=n.value),t.inst??(t.inst=e),n.issues.push(I(t))}};const i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});const Jr=t("ZodOptional",(e,t)=>{Jt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wn(e,t,0,r),e.unwrap=()=>e._zod.def.innerType});function Cr(e){return new Jr({type:"optional",innerType:e})}const Ur=t("ZodExactOptional",(e,t)=>{Ct.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wn(e,t,0,r),e.unwrap=()=>e._zod.def.innerType});const Dr=t("ZodNullable",(e,t)=>{Ut.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def,i=yn(o.innerType,t,r),s=t.seen.get(e);"openapi-3.0"===t.target?(s.ref=o.innerType,n.nullable=!0):n.anyOf=[i,{type:"null"}]})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Mr(e){return new Dr({type:"nullable",innerType:e})}const Vr=t("ZodDefault",(e,t)=>{Dt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType,n.default=JSON.parse(JSON.stringify(o.defaultValue))})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});const Lr=t("ZodPrefault",(e,t)=>{Vt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType,"input"===t.io&&(n._prefault=JSON.parse(JSON.stringify(o.defaultValue)))})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});const Wr=t("ZodNonOptional",(e,t)=>{Lt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType})(e,t,0,r),e.unwrap=()=>e._zod.def.innerType});const qr=t("ZodCatch",(e,t)=>{qt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;let i;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=i})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});const Gr=t("ZodPipe",(e,t)=>{Gt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def,i="input"===t.io?"transform"===o.in._zod.def.type?o.out:o.in:o.out;yn(i,t,r),t.seen.get(e).ref=i})(e,t,0,r),e.in=t.in,e.out=t.out});function Br(e,t){return new Gr({type:"pipe",in:e,out:t})}const Kr=t("ZodReadonly",(e,t)=>{Kt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType,n.readOnly=!0})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});const Yr=t("ZodFunction",(e,t)=>{Xt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t)=>{if("throw"===t.unrepresentable)throw new Error("Function types cannot be represented in JSON Schema")})(0,e)});function Xr(e){return new Yr({type:"function",input:Array.isArray(e?.input)?Nr(e?.input):xr(wr()),output:wr()})}const Hr=t("ZodCustom",(e,t)=>{Ht.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t)=>{if("throw"===t.unrepresentable)throw new Error("Custom types cannot be represented in JSON Schema")})(0,e)});const Qr=Zr({apiKey:Gn().min(1,"API key is required"),apiUrl:Gn().url().default("https://api.glassnode.com"),logger:Xr().optional(),fetch:Xr().optional(),maxRetries:mr().int().nonnegative().default(0),retryDelay:mr().int().positive().default(1e3)}),eo={400:"Bad request",401:"Invalid or missing API key",403:"Access forbidden — check your API tier",404:"Endpoint or metric not found",429:"Rate limit exceeded"};class to extends Error{constructor(e,t){var n;super(`API request failed (${e}): ${null!==(n=eo[e])&&void 0!==n?n:t}`),this.name="GlassnodeApiError",this.status=e,this.statusText=t}get isRetryable(){return 429===this.status||this.status>=500}}const no=Fr(["ccdata","coinmarketcap","coingecko"]),ro=Ar(no,Gn().optional()),oo=Zr({blockchain:Gn(),address:Gn(),decimals:mr().int().nonnegative(),on_chain_support:_r()}),io=Zr({id:Gn(),symbol:Gn(),name:Gn(),asset_type:Gn(),external_ids:ro,blockchains:xr(oo)}),so=xr(io),ao=Fr(["free","tier1","tier2","tier3","tier4","tier5"]),co=Fr(["average","sum","count","percentage","ratio"]),uo=Zr({name:Gn().optional(),short_name:Gn().optional(),group:Gn().optional(),tags:xr(Gn()).optional(),description:Ar(Gn(),Gn()).optional(),data_sharing_group:Gn().optional()}),po=Zr({path:Gn(),tier:mr().int().nonnegative(),modified:mr().optional().transform(e=>e?new Date(1e3*e):void 0),is_pit:_r().optional(),bulk_supported:_r().optional(),timerange:Zr({min:mr(),max:mr()}).optional(),refs:Zr({docs:Gn().optional(),studio:Gn().optional(),metric_variant:Zr({base:Gn().optional(),bulk:Gn().optional(),pit:Gn().optional()}).optional()}),queried:Ar(Gn(),new zr({type:"any"})),parameters:Ar(Gn(),xr(Gn())),descriptors:uo.optional()}),lo=po,fo=xr(Gn().startsWith("/")),ho=Zr({a:Gn(),v:mr(),network:Gn().optional()}),mo=xr(Zr({t:mr(),bulk:xr(ho)}));class yo{constructor(e){var t;const n=Qr.parse(e);this.apiKey=n.apiKey,this.apiUrl=n.apiUrl,this.logger=n.logger,this.fetchFn=null!==(t=n.fetch)&&void 0!==t?t:globalThis.fetch,this.maxRetries=n.maxRetries,this.retryDelay=n.retryDelay}request(t){return e(this,arguments,void 0,function*(e,t={}){var n,r;const o=new URLSearchParams(Object.assign(Object.assign({},t),{api_key:this.apiKey})),i=`${this.apiUrl}${e}?${o}`;let s;for(let e=0;e<=this.maxRetries;e++){if(e>0){const t=this.retryDelay*Math.pow(2,e-1);null===(n=this.logger)||void 0===n||n.call(this,`Retry ${e}/${this.maxRetries} after ${t}ms`),yield new Promise(e=>setTimeout(e,t))}null===(r=this.logger)||void 0===r||r.call(this,"API call:",i);try{const t=yield this.fetchFn(i);if(!t.ok){const n=new to(t.status,t.statusText);if(n.isRetryable&&e<this.maxRetries){s=n;continue}throw n}return yield t.json()}catch(t){if(t instanceof to)throw t;if(t instanceof Error){if(s=t,e<this.maxRetries)continue;throw new Error(`Glassnode API error: ${t.message}`,{cause:t})}throw new Error("Unknown error occurred",{cause:t})}}throw s})}getAssetMetadata(){return e(this,void 0,void 0,function*(){const e=yield this.request("/v1/metadata/assets");return so.parse(e.data)})}getMetricMetadata(t){return e(this,arguments,void 0,function*(e,t={}){const n=yield this.request("/v1/metadata/metric",Object.assign({path:e},t));return lo.parse(n)})}getMetricList(){return e(this,void 0,void 0,function*(){const e=yield this.request("/v1/metadata/metrics");return fo.parse(e)})}callMetric(t){return e(this,arguments,void 0,function*(e,t={}){return yield this.request("/v1/metrics"+e,Object.assign(Object.assign({},t),{f:"json"}))})}callBulkMetric(t){return e(this,arguments,void 0,function*(e,t={}){const n=yield this.request("/v1/metrics"+e+"/bulk",Object.assign(Object.assign({},t),{f:"json"}));return mo.parse(n.data)})}}export{oo as AssetBlockchainSchema,so as AssetMetadataResponseSchema,io as AssetMetadataSchema,ho as BulkEntrySchema,mo as BulkResponseSchema,no as ExternalIdSourceSchema,ro as ExternalIdsSchema,yo as GlassnodeAPI,to as GlassnodeApiError,Qr as GlassnodeConfigSchema,co as MetricDataTypeSchema,uo as MetricDescriptorsSchema,fo as MetricListResponseSchema,lo as MetricMetadataResponseSchema,po as MetricMetadataSchema,ao as MetricTierSchema};
2
+ //# sourceMappingURL=glassnode-api.esm.min.js.map