@domino-sdk/relay 1.55.0 → 1.56.0
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/CHANGELOG.md +11 -0
- package/dist/authoring.d.ts +146 -64
- package/dist/authoring.js +36 -6
- package/dist/browser.d.ts +5 -5
- package/dist/browser.js +10 -10
- package/dist/{chunk-VFBQVY4X.js → chunk-ABJ4G47X.js} +1 -1
- package/dist/{chunk-YCOKTQ4E.js → chunk-BHHUSBSD.js} +1 -1
- package/dist/{chunk-C7QZ4UBB.js → chunk-BJYMTCWG.js} +16 -3
- package/dist/{chunk-YEVD4A5X.js → chunk-CK7HO32Z.js} +1 -1
- package/dist/{chunk-IUF7DW76.js → chunk-CXKXPB7K.js} +12 -7
- package/dist/{chunk-WUEQOKJH.js → chunk-G6XVBYH7.js} +4 -4
- package/dist/{chunk-SABMNPF2.js → chunk-H2MD6E7Z.js} +1 -1
- package/dist/{chunk-WHG5WE43.js → chunk-INSWI2VZ.js} +1 -1
- package/dist/{chunk-TLK2MD4S.js → chunk-KBVH4XZC.js} +1 -1
- package/dist/{chunk-MLIXJPKL.js → chunk-MHPKEVEW.js} +1 -0
- package/dist/{chunk-XALIFNMD.js → chunk-MNU6UPXY.js} +1 -1
- package/dist/{chunk-GL43VQ5D.js → chunk-NK6EER33.js} +38 -8
- package/dist/{chunk-IZRITLVV.js → chunk-OTITLABX.js} +2 -2
- package/dist/{chunk-56DBFNR2.js → chunk-QNQNKIAA.js} +1 -1
- package/dist/{chunk-UY6KMLQG.js → chunk-RBPMT53S.js} +125 -99
- package/dist/{chunk-F6HECAXA.js → chunk-ULQU7KC4.js} +144 -101
- package/dist/{chunk-WHMXXHPX.js → chunk-VSHV7FEA.js} +1 -1
- package/dist/{chunk-YE3XYB2F.js → chunk-W5U2WXG3.js} +2 -2
- package/dist/{client-C4zUZKpj.d.ts → client-bX3oTpRu.d.ts} +79 -4
- package/dist/{deployments-B32QS1CI.d.ts → deployments-D3lxfQMB.d.ts} +824 -400
- package/dist/{groups-O6onGPmC.d.ts → groups-DPE004_V.d.ts} +4 -2
- package/dist/index.d.ts +5 -5
- package/dist/index.js +9 -9
- package/dist/{integrations-C6_uUh-s.d.ts → integrations-CcD5NPEA.d.ts} +50 -1
- package/dist/internal.d.ts +5 -5
- package/dist/internal.js +9 -9
- package/dist/{offers-BMDNcvwB.d.ts → offers-CtzMeB7O.d.ts} +206 -1
- package/dist/{pages-BFloMpyQ.d.ts → pages-BlLqB8ZQ.d.ts} +57 -1
- package/dist/portal-proxy.js +4 -4
- package/dist/react/index.d.ts +86 -8
- package/dist/react/index.js +65 -10
- package/dist/runtime/authoring.js +1 -1
- package/dist/runtime/chunks/NDB42VFF.js +1 -0
- package/dist/runtime/manifest.json +3 -3
- package/dist/runtime/schema.js +1 -1
- package/dist/schema.d.ts +634 -388
- package/dist/schema.js +30 -10
- package/dist/server/index.d.ts +5 -5
- package/dist/server/index.js +1232 -1072
- package/dist/{submission-input-BbdawqVy.d.ts → submission-input-wTiYGdgA.d.ts} +1 -1
- package/dist/{telegram-browser-CwaxROAZ.d.ts → telegram-browser-Bh3i0HiH.d.ts} +1 -1
- package/dist/testing.js +5 -5
- package/dist/{transport-CZJOW5Sr.d.ts → transport-CnKA-_RL.d.ts} +6451 -4210
- package/package.json +1 -1
- package/dist/runtime/chunks/WKATKZXE.js +0 -1
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Gb as ie,Kb as oe,Lb as cr,Qc as tt,Rb as Fe,Sb as c,T as ar,Ub as we,Vb as t,Wb as b,Xb as se,Xc as dr,Yb as We,Yc as rt,Z as W,Zb as f,Zc as mr,a as K,bc as g,ca as ir,cc as Ge,d as nr,ec as Je,ed as ce,fc as lr,gc as Xe,hc as y,ld as L,ma as ae,mb as sr,md as Ae,nb as o,oc as Ye,pa as r,pc as u,rc as et,sc as s,sd as I,vb as m,wa as or}from"./IDOMZWRY.js";var oa=Symbol.for("@domino-sdk/relay.RequestError");var sa=class extends Error{name="RequestError";[oa]=!0;kind;uncertain;status;code;operationId;recovery;retryAfter;constructor(e,n){super(e,n.cause===void 0?{}:{cause:n.cause}),this.kind=n.kind,this.uncertain=n.uncertain??!1,this.status=n.status,this.code=n.code,this.operationId=n.operationId,this.retryAfter=n.retryAfter,this.recovery=this.uncertain?n.operationId&&(n.replaySafe??!0)?"replay":"reconcile":void 0}},ca={NotSignedIn:"not-signed-in",StaleSession:"stale-session",InvalidInput:"invalid-input",InvalidResponse:"invalid-response",Network:"network",Timeout:"timeout",Aborted:"aborted",NotFound:"not-found",RetryUnavailable:"retry-unavailable",SubmissionStorage:"submission-storage",SubmissionStorageQuota:"submission-storage-quota",SubmissionConflict:"submission-conflict",OperationRetired:"operation-retired",QuestUpdated:"quest-updated",AttemptPending:"attempt-pending",RetryCooldown:"retry-cooldown",CompletionCooldown:"completion-cooldown",StaleQuiz:"stale-quiz",InvalidSubmission:"invalid-submission",InvalidCursor:"invalid-cursor",PointLedgerNotFound:"point-ledger-not-found",NotJoined:"not-joined",OutsideWindow:"outside-window",EnrollmentRequired:"enrollment-required",BudgetExhausted:"budget-exhausted",OfferNotFound:"offer-not-found",OfferPaused:"offer-paused",OfferLimitReached:"offer-limit-reached",OfferOutOfStock:"offer-out-of-stock",InsufficientPoints:"insufficient-points",Credential:"credential",WalletSigner:"wallet-signer",PrerequisitesIncomplete:"prerequisites-incomplete",QuestClosed:"quest-closed",QuestPaused:"quest-paused",ProfileLocked:"profile-locked",InvitationNotFound:"invitation-not-found",InvalidCode:"invalid-code",CodeExpired:"code-expired",ChallengeExpired:"challenge-expired",RateLimited:"rate-limited"},la=Symbol.for("@domino-sdk/relay.RelayError");var da=class extends sa{name="RelayError";[la]=!0;window;missing;retryAt;constructor(e,n){super(e,n),this.window=n.window,this.missing=n.missing??[],this.retryAt=n.retryAt}};function ma(e,n,i={}){return new da(e,{...i,kind:"client",code:n})}var a=r().min(1).max(100).regex(/^[a-zA-Z0-9_-]+$/),ua=Symbol("domino.response.tolerant-v1");function Pr(e){return Object.assign(e,{[ua]:!0})}var nt=new WeakMap;function xs(e){for(let n of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,n)?.get;if(!i)continue;let l=d=>(Object.defineProperty(e,n,{value:d,writable:!0,enumerable:!0,configurable:!0}),d);Object.defineProperty(e,n,{get:()=>l(i.call(e)),set:l,enumerable:!0,configurable:!0})}return e}function j(e){let n=nt.get(e);if(n)return n;let i=Object.create(Object.getPrototypeOf(e._zod.def),Object.getOwnPropertyDescriptors(e._zod.def));if(e instanceof we){let d;Object.defineProperty(i,"shape",{get:()=>d??=Object.fromEntries(Object.entries(e.shape).map(([z,p])=>[z,j(p)])),configurable:!0,enumerable:!0}),Object.assign(i,{catchall:e._zod.def.catchall instanceof cr||!e._zod.def.catchall?void 0:j(e._zod.def.catchall)})}else e instanceof sr?Object.assign(i,{checks:e._zod.def.checks?.filter(d=>{let z=d._zod.def;return z.check!=="less_than"||!("value"in z)||z.value===Number.MAX_SAFE_INTEGER||z.value===864e13})}):e instanceof Fe?Object.assign(i,{element:j(e.element),checks:[]}):e instanceof We?Object.assign(i,{options:e.options.map(j)}):e instanceof Je?Object.assign(i,{items:e._zod.def.items.map(j),rest:e._zod.def.rest?j(e._zod.def.rest):null}):e instanceof Ge?Object.assign(i,{left:j(e._zod.def.left),right:j(e._zod.def.right)}):e instanceof rt?Object.assign(i,{getter:()=>j(e._zod.def.getter())}):e instanceof Xe?Object.assign(i,{valueType:j(e.valueType)}):e instanceof tt?Object.assign(i,{in:j(e.in),out:j(e.out)}):"innerType"in i&&i.innerType instanceof ae&&Object.assign(i,{innerType:j(i.innerType)});let l=nr(e,i);return nt.set(e,l),nt.set(l,l),l}function za(e){return j(e)}function Cr(e){if(e instanceof we)return e.shape;if("innerType"in e._zod.def&&e._zod.def.innerType instanceof ae)return Cr(e._zod.def.innerType)}function mt(e){if(e instanceof et)return[...e.values];if(e instanceof Ye)return e.options;if("innerType"in e._zod.def&&e._zod.def.innerType instanceof ae)return mt(e._zod.def.innerType)}function E(e,n){if(e instanceof et)return typeof n=="string"&&[...e.values].every(i=>typeof i=="string")&&!e.values.has(n);if(e instanceof Ye)return typeof n=="string"&&!e.options.includes(n);if(e instanceof Fe&&Array.isArray(n))return n.some(i=>E(e.element,i));if(e instanceof Je&&Array.isArray(n))return n.some((i,l)=>{let d=e._zod.def.items[l]??e._zod.def.rest;return d?E(d,i):!1});if(e instanceof Ge)return E(e._zod.def.left,n)||E(e._zod.def.right,n);if(e instanceof rt)return E(e._zod.def.getter(),n);if(e instanceof Xe&&n!==null&&typeof n=="object"&&!Array.isArray(n))return Object.entries(n).some(([i,l])=>E(e.keyType,i)||E(e.valueType,l));if(e instanceof We){let i=[...e.options];if(typeof n=="string"){let l=i.flatMap(d=>mt(d)??[]);if(l.some(d=>typeof d=="string")&&!l.includes(n))return!0}if(n!==null&&typeof n=="object"&&!Array.isArray(n)){let l=y(r(),oe()).parse(n),d=["kind","status","provider","input","type","mode"];for(let z of d){if(typeof l[z]!="string")continue;let p=i.map(C=>{let D=Cr(C)?.[z];return D?mt(D):void 0});if(p.some(C=>!C))continue;let v=i.filter((C,D)=>p[D]?.includes(l[z]));if(!v.length)return!0;i=v}}return i.every(l=>E(l,n))}if(e instanceof we&&n!==null&&typeof n=="object"&&!Array.isArray(n)){let i=y(r(),oe()).parse(n);return Object.entries(e.shape).some(([l,d])=>E(d,i[l]))||Object.entries(i).some(([l,d])=>!(l in e.shape)&&!!e._zod.def.catchall&&E(e._zod.def.catchall,d))}if(e instanceof tt){if(E(e.in,n))return!0;let i=ir(e.in,n);return i.success&&E(e.out,i.data)}return"innerType"in e._zod.def&&e._zod.def.innerType instanceof ae?E(e._zod.def.innerType,n):!1}function ba(e){return Pr(L().transform((n,i)=>{let l=za(e),d=l.safeParse(n);if(d.success)return{kind:"supported",value:d.data};if(E(l,n))return{kind:"unsupported",raw:n};for(let z of d.error.issues)i.addIssue({...z});return K}))}function ws(e){return Pr(c(ba(e)).transform(n=>({items:n,unsupportedCount:n.filter(i=>i.kind==="unsupported").length})))}var S=r().min(1).max(4096),As=b({cursor:S.optional()});async function*Is(e){let n;do{let i=await e(n);yield*i.items,n=i.nextCursor??void 0}while(n!==void 0)}var Os=b({cursor:S.optional(),limit:I.number().int().min(1).max(100).default(50)}),xt=u(["google","apple","x","discord"]),$r=t({provider:xt,configured:m(),status:u(["disconnected","connected","reconnect"]),subject:r().nullable(),revision:o().int().nonnegative()}),qs=t({}).strict(),Rs=t({channelId:r().regex(/^[0-9]{1,20}$/),messageId:r().regex(/^[0-9]{1,20}$/)}).strict(),Ps=t({userId:r().regex(/^[0-9]{1,20}$/).nullable().default(null),nickname:r().nullable().default(null),displayName:r().nullable().default(null),boostingSince:r().datetime({offset:!0}).nullable().default(null),roles:c(r().regex(/^[0-9]{1,20}$/)),joinedAt:r().datetime({offset:!0}).nullable(),pending:m()}),Cs=t({guildId:r(),channelId:r(),messageId:r(),userId:r(),content:r().nullable(),replyTo:r().nullable(),publishedAt:o()}).strict(),Er=b({kind:s("discord-messages"),text:m().optional()}),Tr=b({kind:s("discord-reactions")}),pa=t({guildId:r(),channelId:r(),messageId:r(),replyTo:r().nullable(),publishedAt:o()}),$s=pa.extend({text:r().nullable()}),Es=t({guildId:r(),channelId:r(),messageId:r(),emoji:t({id:r().nullable(),name:r()}),reactorRoles:c(r()),messagePublishedAt:o()}),fa=b({kind:s("integration"),provider:s("discord"),action:s("grant-role"),roleId:r().regex(/^[0-9]{1,20}$/)}),ga=f([b({provider:s("discord"),resource:s("channel"),types:c(u(["text","announcement"])).min(1)}),b({provider:s("discord"),resource:s("role"),assignable:m().default(!1)})]),ha=16,va=32768,ya=16,le=256,ur=f([r(),o().finite(),m(),ie()]),Ie=o().int().safe().nonnegative(),Oe=o().finite(),at=()=>c(me).min(1).max(ya),me=mr(()=>b({type:u(["object","array","string","number","integer","boolean","null"]).optional(),properties:y(r(),me).refine(e=>Object.keys(e).length<=le,`An object schema lists at most ${le} properties`).optional(),required:c(r()).max(le).optional(),additionalProperties:f([m(),me]).optional(),propertyNames:b({type:s("string"),enum:c(r()).max(le).optional()}).optional(),items:me.optional(),minItems:Ie.optional(),maxItems:Ie.optional(),minLength:Ie.optional(),maxLength:Ie.optional(),minimum:Oe.optional(),maximum:Oe.optional(),exclusiveMinimum:Oe.optional(),exclusiveMaximum:Oe.optional(),enum:c(ur).min(1).max(le).optional(),const:ur.optional(),anyOf:at().optional(),oneOf:at().optional(),allOf:at().optional()}));function ka(e){let n=[[e,0]];for(;n.length;){let[i,l]=n.pop();if(!(typeof i!="object"||i===null)){if(l>=ha)return"Tracker data schemas are at most 32 KB and 16 levels deep";if(!Array.isArray(i)&&Object.hasOwn(i,"__proto__"))return"Tracker data schemas cannot name a property __proto__";for(let d of Object.values(i))n.push([d,l+1])}}return new TextEncoder().encode(JSON.stringify(e)).byteLength>va?"Tracker data schemas are at most 32 KB and 16 levels deep":null}var Mr=e=>[...e.anyOf??[],...e.oneOf??[],...e.allOf??[]],ja=e=>e.properties!==void 0||e.items!==void 0||typeof e.additionalProperties=="object"||Mr(e).length>0;function ut(e,n,i){let l=Mr(e);if(i&&l.filter(ja).length>1)return n;let d=[...Object.entries(e.properties??{}).map(([z,p])=>[p,`${n}.${z}`])];e.items&&d.push([e.items,n]),typeof e.additionalProperties=="object"&&d.push([e.additionalProperties,n]);for(let[z,p]of d){let v=ut(z,p,i);if(v)return v}for(let z of l){let p=ut(z,n,!0);if(p)return p}return null}var Ur=oe().superRefine((e,n)=>{let i=ka(e);i&&n.addIssue({code:"custom",message:i,abort:!0})}).pipe(me).refine(e=>e.type==="object","A tracker's record data is an object: declare it with z.object({ ... })").superRefine((e,n)=>{let i=ut(e,"data",!1);i&&n.addIssue({code:"custom",message:`Tracker data schemas cannot nest a union with several object, array or union branches inside another union's branch (${i}): flatten it into one union`})}),zr={pattern:"check string patterns in your evaluator",format:"use z.string() and check the format in your evaluator",prefixItems:"use an array or an object instead of a tuple",multipleOf:"check divisibility in your evaluator",not:"describe the allowed values instead",$ref:"inline the schema instead of registering or reusing it by ID",$defs:"inline the schema instead of registering or reusing it by ID",definitions:"inline the schema instead of registering or reusing it by ID",if:"use a union instead",then:"use a union instead",else:"use a union instead",contains:"check array contents in your evaluator",minContains:"check array contents in your evaluator",maxContains:"check array contents in your evaluator",uniqueItems:"check uniqueness in your evaluator",minProperties:"check key counts in your evaluator",maxProperties:"check key counts in your evaluator",patternProperties:"use z.record(z.string(), value) instead",dependentRequired:"use a union instead",dependentSchemas:"use a union instead",unevaluatedProperties:"use a strict object instead",unevaluatedItems:"use an array instead"},_r=new Set(["additionalProperties","items","propertyNames"]),Dr=new Set(["anyOf","oneOf","allOf"]),Sa=new Set(["type","properties","required","minItems","maxItems","minLength","maxLength","minimum","maximum","exclusiveMinimum","exclusiveMaximum","enum","const",..._r,...Dr]),xa=new Set(["$schema","$id","$comment","title","description","default","examples","deprecated","readOnly","writeOnly"]);function $e(e,n){if(typeof e!="object"||e===null||Array.isArray(e))return e;let i={};for(let[l,d]of Object.entries(e)){if(Object.hasOwn(zr,l))throw new Error(`Tracker data schemas cannot use ${l} (${n}): ${zr[l]}`);if(!xa.has(l)){if(!Sa.has(l))throw new Error(`Tracker data schemas cannot use the keyword ${l} (${n}): keep metadata to title, description, default and examples`);if(l==="properties"&&Object.hasOwn(d,"__proto__")||l==="required"&&d.includes("__proto__"))throw new Error(`Tracker data schemas cannot name a property __proto__ (${n})`);i[l]=l==="properties"?Object.fromEntries(Object.entries(d).map(([z,p])=>[z,$e(p,`${n}.${z}`)])):_r.has(l)?$e(d,n):Dr.has(l)?d.map(z=>$e(z,n)):d}}return i}function Ts(e){let n;try{n=ar(e,{target:"draft-2020-12",io:"input",unrepresentable:"throw",cycles:"throw",reused:"inline",override:({zodSchema:l,path:d})=>{let z=l._zod.def,p=["data",...d].join(".");if(z.type==="pipe"||z.type==="transform")throw new Error(`Tracker data schemas cannot transform values (${p}): records are stored as sent`);if(z.checks?.some(v=>v._zod.def.check==="custom"))throw new Error(`Tracker data schemas cannot use refinements (${p}): check the value in your evaluator`)}})}catch(l){let d=l instanceof Error?l.message:String(l);throw new Error(d.startsWith("Tracker data schemas")?d:`Tracker data schemas describe JSON: ${d}. Use z.unknown() for any JSON value.`)}let i=Ur.safeParse($e(n,"data"));if(!i.success)throw new Error(i.error.issues.map(l=>l.message).join("; "));return i.data}var Lr=25e4,wa=6e6,Zr=class extends Error{};function qe(e,n){if(e.steps-=n,e.steps<0)throw new Zr}var Nr=64,Aa=256;function zt(e,n){return e.length>n?e.slice(0,n-1)+"\u2026":e}function Ia(e){let n=[];for(let i=e;i;i=i.parent)n.push(zt(String(i.key),Nr));return zt(["data",...n.reverse()].join("."),Aa)}var G=e=>e===null?"null":Array.isArray(e)?"an array":typeof e,it=10;function Oa(e){let n=e.slice(0,it).map(i=>JSON.stringify(i)).join(", ");return e.length>it?`expected one of ${n}, or ${e.length-it} more`:`expected one of ${n}`}var br=new WeakMap,pr=new WeakMap;function fr(e,n){let i=br.get(e);return i||(i=new Set(n),br.set(e,i)),i}function qa(e){let n=pr.get(e);return n||(n=Object.entries(e.properties??{}).filter(([,i])=>i.const!==void 0),pr.set(e,n)),n}function X(e,n,i,l){qe(l,1);let d=z=>({at:i,reason:z});if(e.const!==void 0&&n!==e.const)return d(()=>`expected ${JSON.stringify(e.const)}`);if(e.enum&&!fr(e,e.enum).has(n)){let z=e.enum;return d(()=>Oa(z))}switch(e.type){case"null":if(n!==null)return d(()=>`expected null, got ${G(n)}`);break;case"boolean":case"string":if(typeof n!==e.type){let z=e.type;return d(()=>`expected a ${z}, got ${G(n)}`)}break;case"number":if(typeof n!="number")return d(()=>`expected a number, got ${G(n)}`);break;case"integer":if(!Number.isInteger(n))return d(()=>typeof n=="number"?"expected an integer":`expected an integer, got ${G(n)}`);break;case"array":if(!Array.isArray(n))return d(()=>`expected an array, got ${G(n)}`);break;case"object":if(typeof n!="object"||n===null||Array.isArray(n))return d(()=>`expected an object, got ${G(n)}`);break}if(typeof n=="string"){let{minLength:z,maxLength:p}=e;if(z!==void 0&&n.length<z)return d(()=>`expected at least ${z} characters`);if(p!==void 0&&n.length>p)return d(()=>`expected at most ${p} characters`)}if(typeof n=="number"){let z=[[e.minimum,p=>n>=p,"at least"],[e.exclusiveMinimum,p=>n>p,"more than"],[e.maximum,p=>n<=p,"at most"],[e.exclusiveMaximum,p=>n<p,"less than"]];for(let[p,v,C]of z)if(p!==void 0&&!v(p))return d(()=>`expected ${C} ${p}`)}if(Array.isArray(n)){let{minItems:z,maxItems:p}=e;if(z!==void 0&&n.length<z)return d(()=>`expected at least ${z} items`);if(p!==void 0&&n.length>p)return d(()=>`expected at most ${p} items`);if(e.items)for(let v=0;v<n.length;v++){let C=X(e.items,n[v],{parent:i,key:v},l);if(C)return C}}if(typeof n=="object"&&n!==null&&!Array.isArray(n)){let z=n,p=e.properties??{},v=e.required??[];qe(l,v.length);for(let $ of v)if(!Object.hasOwn(z,$))return d(()=>`missing required key "${zt($,Nr)}"`);let C=qa(e);qe(l,C.length);for(let[$,H]of C)if(Object.hasOwn(z,$)&&z[$]!==H.const)return{at:{parent:i,key:$},reason:()=>`expected ${JSON.stringify(H.const)}`};let D=Object.keys(z);qe(l,D.length);let er=e.propertyNames?.enum,tr=er&&fr(e.propertyNames,er);for(let $ of D){if(tr&&!tr.has($))return{at:{parent:i,key:$},reason:()=>"is not an allowed key"};let H=Object.hasOwn(p,$)?p[$]:e.additionalProperties;if(H===!1)return{at:{parent:i,key:$},reason:()=>"is not an allowed key"};if(H&&H!==!0){let rr=X(H,z[$],{parent:i,key:$},l);if(rr)return rr}}}for(let z of e.allOf??[]){let p=X(z,n,i,l);if(p)return p}if(e.anyOf&&!e.anyOf.some(z=>!X(z,n,i,l)))return d(()=>"matches none of the allowed shapes");if(e.oneOf){let z=0;for(let p of e.oneOf)if(!X(p,n,i,l)&&++z>1)return d(()=>"matches more than one of the allowed shapes");if(!z)return d(()=>"matches none of the allowed shapes")}return null}function Ra(e,n,i={steps:Lr}){try{let l=X(e,n,null,i);return l&&{kind:"mismatch",path:Ia(l.at),reason:l.reason()}}catch(l){if(l instanceof Zr)return{kind:"too-complex",path:"data",reason:"is too complex to validate against the tracker's schema"};throw l}}function Pa(e,n){let i={steps:wa};return n.map(l=>{let d={steps:Math.min(Lr,i.steps)},z=d.steps,p=Ra(e,l,d);return i.steps-=z-Math.max(d.steps,0),p})}function bt(e){return e.flatMap(n=>n.anyOf||n.oneOf||n.allOf?bt([...n.anyOf??[],...n.oneOf??[],...n.allOf??[]]):[n])}var gr=e=>e.type===void 0&&e.properties===void 0&&e.const===void 0&&e.enum===void 0;function Ca(e,n){let i=new Set(["string","number","boolean","null","object","array"]),l=[e];for(let z of n.split(".")){let p=[];for(let v of bt(l))if(gr(v))p.push({});else{if(v.type!=="object")continue;v.properties&&Object.hasOwn(v.properties,z)?p.push(v.properties[z]):v.additionalProperties===!0?p.push({}):v.additionalProperties&&p.push(v.additionalProperties)}if(!p.length)return null;l=p}let d=new Set;for(let z of bt(l)){if(gr(z))return i;z.type&&d.add(z.type==="integer"?"number":z.type);for(let p of[...z.const!==void 0?[z.const]:[],...z.enum??[]])d.add(p===null?"null":typeof p)}return d}function Ms(e){return{content:(n,i)=>e.content(n,i),summary:(n,i)=>e.summary(n,i),records:(async(n,i)=>{let l=await e.records(n,i),d=n.source,z=d?.kind==="custom"?d.data:void 0;if(!z)return l;let p=Pa(z,l.items.map(C=>C.data)),v=l.items.filter((C,D)=>!p[D]);return{...l,items:v,excluded:l.items.length-v.length}})}}function Us(e,n){let i=n===void 0?[]:Array.isArray(n)?n:[n];for(let l of i){let d=Ca(e,l.path);if(!d)return`The tracker filter reads data.${l.path}, which the tracker's data schema does not declare`;if(!("equals"in l?[typeof l.equals]:["number","string"]).some(p=>d.has(p)))return`The tracker filter compares data.${l.path} with ${"equals"in l?JSON.stringify(l.equals):"a number"}, but the field holds ${[...d].join(" or ")}`}return null}var x=o().int().safe().nonnegative().max(864e13),O=o().int().safe().nonnegative(),T=r().min(1).max(256),J=O.nullable().default(null),$a=se({id:T,userId:T,content:r(),createdAt:W.datetime({offset:!0}),author:se({id:T,username:r(),name:r(),verified:m().nullable().default(null)}),likeCount:J,replyCount:J,retweetCount:J,quoteCount:J,viewCount:J,bookmarkCount:J,isReply:m(),isRetweet:m(),isQuoteTweet:m()}),Ea=b({version:s(1),id:r().min(1),authorId:r().min(1),publishedAt:x,text:r(),isReply:m(),isRetweet:m(),isQuoteTweet:m(),media:c(b({type:r(),url:r()})).nullable(),mentionedAuthorIds:c(r().min(1)).nullable(),videoLengthSeconds:o().nonnegative().nullable(),references:b({replyId:r().nullable(),replyAuthorId:r().nullable(),quoteId:r().nullable(),quoteAuthorId:r().nullable(),repostId:r().nullable(),repostAuthorId:r().nullable()})}),Ta=b({id:T,observation:r().regex(/^observation_[a-f0-9]{64}$/)}),_s=Ta.extend({member:a}),ot={member:a,capturedAt:x},Qr=b({contentRevision:a,observation:a}),Ds=b({tracker:a,source:s("x"),evidence:Qr,content:Ea,observedAt:x,removed:m(),attribution:g("kind",[b({...ot,kind:s("linked"),account:b({provider:s("x"),issuer:r().min(1),subject:T,revision:O,linkedAt:x.nullable()})}),b({...ot,kind:s("unlinked")}),b({...ot,kind:s("different-author")})])}),Ma=["wallet","x","discord","member"],Br=dr(["app:",r().regex(/^[a-z0-9][a-z0-9_-]{0,39}$/,"Name an app identity kind like app:telegram: lowercase letters, digits, _ or -, at most 40")]),wt=f([u(Ma),Br]),Ls=e=>e.startsWith("app:"),pe=r().min(1).max(64),Zs=t({kind:pe,subject:T,revision:O,linkedAt:x.nullable()}),fe=r().regex(/^[a-zA-Z][a-zA-Z0-9_]{0,39}$/,"Name roles like author or recipient: a letter, then letters, digits or underscores"),Ns=["author","inReplyTo"],pt=e=>new Set(e).size===e.length,Hr=r().regex(/^[a-z][a-zA-Z0-9]{0,39}$/,"Name metrics like likes or watchTime: a lowercase letter, then letters or digits"),Ua=["likes","replies","reposts","quotes","views","bookmarks"],_a=b({metrics:c(Hr).max(10).refine(pt,"List each metric once")}),Me=t({kind:s("x-search"),query:r().trim().min(1).max(2e3)}).strict(),Kr=t({kind:s("custom"),namespace:a,identities:c(wt).min(1).max(8).refine(pt,"List each identity kind once").optional(),accounts:c(fe).min(1).max(10).refine(pt,"List each account role once").refine(e=>!e.includes("author"),"author is every record's own role; name other accounts").optional(),data:Ur.optional(),content:_a.optional()}).strict().refine(e=>!e.content||e.data?.properties?.body?.type==="object"&&(e.data.required??[]).includes("body"),"A content source's data schema has a required object body").refine(e=>!e.accounts||e.identities,"Named accounts need identities"),Da=g("kind",[Me,Kr,Er,Tr]),La=["x-search","custom","discord-messages","discord-reactions"];function Qs(e){if(Na(e))switch(e.kind){case"x-search":return["x"];case"discord-messages":case"discord-reactions":return["discord"];case"custom":return e.identities}}function Bs(e){switch(e.kind){case"x-search":return{metrics:Ua};case"custom":return e.content;case"discord-messages":case"discord-reactions":return}}var At=t({start:x,end:x.optional()}).strict().refine(e=>e.end===void 0||e.end>e.start,"End must follow start"),V=t({key:a,title:r().trim().min(1).max(120),source:Da,window:At,refreshSeconds:o().int().min(300).max(86400).default(21600),maxPages:o().int().min(1).max(1e3).default(60)}).strict(),Hs=f([V,t({code:r().min(1).max(2e6)}).strict()]),Vr=g("kind",[t(Me.shape),t({...Kr.shape,identities:c(pe).optional()}),t(Er.shape),t(Tr.shape)]),Za=f([Vr,t({kind:r().min(1).refine(e=>!La.some(n=>n===e),"Known source kinds must match their schema")}).catchall(L())]);function Na(e){return Vr.safeParse(e).success}var Qa=t({...V.shape,source:Za,window:t(At.shape)}),Ba=t({id:a,version:a,definition:Qa,publishedAt:x,actor:r().nullable()}),Fr=t({archivedAt:o().int().nonnegative().nullable().optional(),published:Ba,paused:m(),pauseReason:r().nullable().optional(),resumesAt:x.nullable().optional(),effectiveRefreshSeconds:o().int().positive().optional(),state:u(["idle","syncing","error","complete"]),lastStartedAt:x.nullable(),lastCompletedAt:x.nullable(),nextSyncAt:x.nullable(),coverage:u(["unknown","partial","complete"]),error:r().nullable(),records:O,origin:u(["code","data"]).optional()}),Wr=t({title:V.shape.title,query:Me.shape.query,window:At,refreshSeconds:V.shape.refreshSeconds.unwrap(),maxPages:V.shape.maxPages.unwrap()}).strict(),Ks=Wr.extend({key:a,refreshSeconds:V.shape.refreshSeconds,maxPages:V.shape.maxPages,actionId:a}).strict(),Vs=Wr.partial().extend({actionId:a}).strict().refine(({actionId:e,...n})=>Object.values(n).some(i=>i!==void 0),"Change at least one field"),Fs=t({actionId:a,action:u(["pause","resume","refresh"])}).strict(),Ha=b({kind:wt.optional(),id:T}),Ka=t({id:T,occurredAt:x,observedAt:x,author:t({id:T,verified:m().nullable().default(null),kind:wt.optional()}).strict().nullable().default(null),accounts:y(fe,Ha).refine(e=>Object.keys(e).length<=10,"At most 10 accounts").optional(),data:y(r(),L()),removed:m().default(!1)}).strict().refine(e=>new TextEncoder().encode(JSON.stringify(e.data)).byteLength<=131072,"Record exceeds 128 KB"),Gr=t({kind:pe.optional(),id:r()}),Va=t({id:r(),occurredAt:x,observedAt:x,author:t({id:r(),verified:m().nullable().default(null),kind:pe.optional()}).nullable().default(null),accounts:y(r(),Gr).optional(),data:y(r(),L()),removed:m().default(!1),source:r(),firstSeenAt:x,synthetic:s(!0).optional(),evidence:Qr.nullable().optional()}),Ws=t({actionId:a,records:c(Ka).min(1).max(100)}).strict(),Gs=t({stored:O,admissions:t({admitted:O,skipped:O,filtered:O.optional()}).optional()}),hr={quest:a,tracker:a,record:T,observedAt:x,release:a,account:r().nullable(),createdAt:x,updatedAt:x,actor:r().nullable()},Js=["quest-paused","before-activation","outside-window","future-record","record-removed","invalid-record-data","content-unavailable","no-account","beneficiary-is-author","unlinked-account","ambiguous-account","not-joined","already-completed","not-enrolled","before-enrollment","historical","prerequisites-incomplete"],Jr=g("state",[t({...hr,state:s("admitted"),code:ie(),reason:ie(),member:a,attempt:a}),t({...hr,state:s("skipped"),code:r().min(1),reason:r(),window:u(["tracker","quest"]).optional(),member:a.nullable(),attempt:a.nullable()})]),Xr={quest:a.optional(),record:T.optional(),member:a.optional(),state:u(["admitted","skipped"]).optional(),code:r().min(1).max(100).optional(),limit:I.number().int().min(1).max(100).default(25)},Xs=b({...Xr,cursor:S.optional()}),Ys=t({items:c(Jr).max(100),nextCursor:S.nullable()}),ec=b({...Xr,before:r().max(512).optional()}),tc=b({items:c(Jr).max(100),next:r().nullable()}),rc=b({actionId:a,quest:a,record:T,observedAt:x}),st=f([m(),u(["true","false"]).transform(e=>e==="true")]),nc=t({author:T.optional(),member:a.optional(),verified:st.optional(),since:I.number().int().safe().nonnegative().optional(),until:I.number().int().safe().nonnegative().optional(),removed:st.default(!1),minLikes:I.number().int().safe().nonnegative().optional(),minViews:I.number().int().safe().nonnegative().optional(),limit:I.number().int().min(1).max(100).default(25),cursor:r().max(2048).optional(),includeEvidence:st.optional()}).strict().refine(e=>e.since===void 0||e.until===void 0||e.until>e.since,"Until must follow since"),ac=t({tracker:a,items:c(Va),nextCursor:r().nullable(),total:O,status:Fr}),ic=t({records:O,authors:O,metrics:t({likes:O,replies:O,reposts:O,quotes:O,views:O,bookmarks:O}),missingMetrics:O,status:Fr}),Fa={pages:3,posts:100,days:30},oc=t({query:Me.shape.query,since:x}).strict(),sc=t({query:r(),since:x,fetchedAt:x,pages:O,posts:c($a).max(Fa.posts),more:m()}),cc=b({kind:u(["accept","reject","review","defer","progress","superseded"]),reason:r().nullable()}),Wa=b({quest:a,member:a.optional(),content:r().min(1).max(256).optional(),cursor:S.optional()}),Yr=b({quest:a,content:r(),member:a,release:a,attempt:a,revision:a,observation:a,current:m(),state:u(["pending","qualified","unqualified","needs-review","failed","superseded","stale","blocked","unavailable"]),reason:r().nullable(),reward:b({attempt:a.nullable(),completion:a.nullable(),state:u(["unresolved","awarded","excluded"])})}),lc=b({items:c(Yr),nextCursor:S.nullable()}),Ue=Hr,Q=y(Ue,o().int().safe().nonnegative()),Ga=b({metrics:c(Ue).min(1).max(10).refine(e=>new Set(e).size===e.length,"Metrics must be unique"),maxAgeMs:o().int().positive().max(864e5).default(36e5)}),ct=864e5,Ja=t({kind:s("count"),count:o().int().min(1).max(1e4)}).strict(),Xa=g("kind",[t({kind:s("lifetime")}).strict(),t({kind:s("calendar"),period:u(["day","week","month"]),latenessMs:o().int().min(0).max(90*ct).default(7*ct)}).strict(),t({kind:s("rolling"),durationMs:o().int().min(1).max(365*ct)}).strict()]),Ya=t({kind:s("progress"),goal:Ja,window:Xa,repeat:u(["once","repeat"]).default("once")}).strict(),lt=t({id:a,ordinal:o().int().positive(),achievedAt:o().int(),window:r()}),en=g("status",[lt.extend({status:s("revoked"),completion:a,revokedAt:o().int()}),lt.extend({status:s("awarded"),completion:a}),lt.extend({status:s("budget-exhausted"),budget:a})]),ei=t({goal:o().int().positive(),current:o().int().nonnegative(),window:t({key:r(),start:o().int().nullable(),end:o().int().nullable()}),repeat:u(["once","repeat"]),settled:o().int().nonnegative(),latest:en.nullable()}),ti=t({id:a,distinct:r(),attempt:a,occurredAt:o().int(),recordedAt:o().int(),window:r(),status:u(["counted","late","future","excluded"]),achievement:en.nullable(),reason:r().nullable()}),dc=t({items:c(ti),nextCursor:r().nullable()}),mc=t({actionId:or(),excluded:m(),reason:r().trim().min(1).max(2e3)}).strict(),uc=t({cursor:r().max(2e3).optional(),limit:I.number().int().min(1).max(100).optional()}).strict(),zc=t({excluded:m()}),vr=o().int().safe(),ft=/^(?:[+-]|(?:Etc\/)?GMT[+-]\d|(?:EST|MST|HST)$)/i;function ri(e){let n;try{n=new Intl.DateTimeFormat("en",{timeZone:e}).resolvedOptions().timeZone}catch{return null}return n==="UTC"?"UTC":ft.test(e)||ft.test(n)?null:n}var tn=r().min(1).max(100).transform((e,n)=>{let i=ri(e);return i===null?(n.addIssue({code:"custom",message:ft.test(e)?"Use a named IANA timezone, such as Europe/Budapest or UTC. Fixed offsets have no daylight-saving rules.":"Use an IANA timezone name, such as Europe/Budapest or UTC"}),K):i}),ue=r().min(1).max(100),rn=e=>`${e} no longer take a timeZone: they follow the project calendar. Set calendar.timeZone in relay.json or in Console settings.`,gt=e=>typeof e=="object"&&e!==null;function ni(e,n){return gt(e)&&e.kind==="streak"&&"timeZone"in e&&n.addIssue({code:"custom",path:["timeZone"],message:rn("Streaks")}),e}function nn(e,n){let i=gt(e)?e.window:void 0;return gt(i)&&i.kind==="calendar"&&"timeZone"in i&&n.addIssue({code:"custom",path:["window","timeZone"],message:rn("Calendar leaderboard windows")}),e}var te=u(["lifetime","day","week","month"]),bc=t({timeZone:ue,today:r(),nextBoundary:vr,pending:t({timeZone:ue,effectiveAt:vr}).nullable(),declared:ue.nullable(),unsupported:r().nullable().default(null)}),pc=t({actionId:a,timeZone:tn,reason:r().trim().min(1).max(500)}).strict(),fc=t({timeZone:tn}).strict(),ai=t({kind:s("streak"),days:o().int().min(1).max(3650)}),ii=t({goal:o().int().positive(),current:o().int().nonnegative(),best:o().int().nonnegative(),today:r(),todayQualified:m(),timeZone:ue,nextBoundary:o().int(),pendingTimeZone:t({timeZone:ue,effectiveAt:o().int()}).nullable(),days:c(t({day:o().int(),date:r(),timeZone:r(),occurredAt:o().int()})),milestone:g("status",[t({status:s("pending")}),t({status:s("awarded"),completion:r(),achievedAt:o().int()}),t({status:s("budget-exhausted"),budget:r(),achievedAt:o().int()})])}),N=o().int().safe().nonnegative().max(864e13),ht=o().int().safe().nonnegative(),oi=u(["new-record","new-observation","data-changed"]);function gc(e){return e==="custom"?"new-observation":"new-record"}var Re=f([o().finite(),b({setting:r().regex(/^[a-zA-Z][a-zA-Z0-9_]*$/)})]),yr=r().max(200).regex(/^[^.\s]+(\.[^.\s]+)*$/,"Use dot-separated keys, such as metrics.likes"),kr=f([b({path:yr,equals:f([r().max(1e3),o().finite(),m()])}),b({path:yr,gt:Re.optional(),gte:Re.optional(),lt:Re.optional(),lte:Re.optional()}).refine(e=>[e.gt,e.gte,e.lt,e.lte].some(n=>n!==void 0),"Compare with equals, gt, gte, lt or lte")]),si=f([kr,c(kr).min(1).max(10)]);function ci(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function hc(e){return ci(e).flatMap(n=>"equals"in n?[]:[n.gt,n.gte,n.lt,n.lte].flatMap(i=>typeof i=="object"?[i.setting]:[]))}var li=u(["none","required"]),di=u(["activation","window","enrollment"]),mi=u(["staff","claim","automatic"]),ui=b({tracker:a,source:r().min(1).max(100),on:oi,where:si.optional(),beneficiary:fe,enrollment:li.optional(),since:di.optional(),historical:mi.optional(),content:s(!0).optional()}).refine(e=>e.since!=="enrollment"||e.enrollment==="required",'since: "enrollment" needs enrollment: "required"');function vc(e){return e.on}function yc(e){return{enrollment:e.enrollment??"none",since:e.since??"activation",historical:e.historical??(e.content?"claim":"staff")}}function kc(e){return e.beneficiary}var jr={issuer:r().min(1),subject:r().min(1).max(256),revision:ht,linkedAt:N.nullable()},zi=t({member:a,capturedAt:N,account:f([t({provider:s("wallet"),id:r().min(5).max(256),revision:ht,linkedAt:N.nullable()}),t({provider:s("x"),...jr}),t({provider:s("discord"),...jr}),t({provider:s("member"),id:a}),t({provider:Br,subject:r().min(1).max(256),revision:ht,linkedAt:N.nullable()}),t({provider:r().min(1)})])}),bi=t({id:r().min(1).max(256),source:r(),occurredAt:N,observedAt:N,firstSeenAt:N,author:t({id:r().min(1).max(256),verified:m().nullable(),kind:pe.optional()}).nullable(),accounts:y(fe,Gr).optional(),data:y(r(),L()),removed:m()}),pi=t({revision:a,observation:a,body:y(r(),L())}),jc=t({tracker:a,key:a,beneficiary:fe,record:bi,content:pi.optional(),attribution:zi,enrolledAt:N.optional()}),Sr=Object.freeze(["budget-exhausted","defer-expired","defer-limit-exceeded","evaluator-deferred","evaluator-progress","imported","integration-required","not-linked","provider-unavailable","author-error","evaluator-error","capability-limit"]),xr=64,fi=/^[a-z0-9-]+$/;function gi(e){return typeof e!="string"||e.length===0||e.length>xr||!fi.test(e)?`Invalid reject code ${JSON.stringify(e)}: use lowercase letters, digits and hyphens, at most ${xr} characters, such as "wrong-answers"`:Sr.includes(e)?`Invalid reject code ${JSON.stringify(e)}: Relay writes it itself. A reject code cannot be ${Sr.join(", ")}`:null}var hi=r().superRefine((e,n)=>{let i=gi(e);i&&n.addIssue({code:"custom",message:i})}),vi={quests:1e3,questTypes:200,collections:1e3},Pe={modules:200,size:2e6},yi=r().regex(/^[0-9a-f]{64}$/),ki=r().max(200).regex(/^[a-z0-9_][a-z0-9_.-]*(\/[a-z0-9_][a-z0-9_.-]*)*\.js$/i).refine(e=>!e.split("/").some(n=>n==="."||n===".."),"Runtime module paths cannot contain . or .. segments"),It=t({digest:yi,sdkVersion:r().min(1).max(64)}).strict(),ji=y(ki,r().min(1)).refine(e=>{let n=Object.values(e);return n.length>0&&n.length<=Pe.modules&&n.reduce((i,l)=>i+l.length,0)<=Pe.size},`A runtime has 1 to ${Pe.modules} modules and at most ${Pe.size} characters of source`),Sc=It.extend({zodVersion:r().min(1).max(64),modules:ji}).strict();async function xc(e){let n=JSON.stringify(Object.entries(e).sort(([l],[d])=>l<d?-1:l>d?1:0)),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n));return[...new Uint8Array(i)].map(l=>l.toString(16).padStart(2,"0")).join("")}var wr=r().regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,199}$/),Ot=g("kind",[ai,Ya,t({kind:s("once")}).strict(),t({kind:s("keyed")}).strict()]),vt=r().min(1).max(500),Si=t({id:wr,scope:u(["member","project"]),period:te,limit:o().int().positive().max(Number.MAX_SAFE_INTEGER),cost:f([o().int().positive().max(Number.MAX_SAFE_INTEGER),t({balance:wr}).strict()])}).strict(),wc=t({quest:r().min(1).max(200),key:vt,completedAt:o().int().nonnegative().safe().nullable()}),Ac=100,xi=u(["discord","x"]),wi=u(["discord"]),Ai=t({id:r().regex(/^[0-9]{1,20}$/),name:r().min(1),icon:r().nullable()}),Ic=t({provider:wi,configured:m(),status:u(["disconnected","ready","attention"]),revision:o().int().nonnegative(),server:Ai.nullable(),issue:r().nullable(),connectedAt:o().default(0)}),Ii=r().min(32).max(44).regex(/^[1-9A-HJ-NP-Za-km-z]+$/),_e=u(["solana","eip155","cosmos"]),an=/^cosmos:[-_a-zA-Z0-9]{1,32}$/,qt=ce(e=>typeof e=="string"&&an.test(e),"Use a Cosmos network: cosmos:<chain ID>"),Oc=r().regex(/^[a-zA-Z][a-zA-Z0-9/:._-]{2,127}$/,"Use a Cosmos bank denomination such as uatom or uosmo");function qc(e){if(typeof e=="string"&&!e.startsWith("cosmos:"))throw new Error('Use a Cosmos network such as "cosmos:cosmoshub-4"');let n=typeof e=="string"?{chainId:e.slice(7)}:e;if(typeof n?.chainId!="string")throw new Error('Pass a Cosmos chain as { chainId } or a network such as "cosmos:cosmoshub-4"');let i=`cosmos:${n.chainId}`;if(!an.test(i))throw new Error("A Cosmos chain ID has 1 to 32 letters, digits, hyphens or underscores");if(n.chainInfo&&n.chainInfo.chainId!==n.chainId)throw new Error("The chain info describes another chain ID");return{...n,network:i}}var on="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",Oi=r().regex(/^0x[0-9a-fA-F]{40}$/),qi=r().min(8).max(90).regex(/^(?:[a-z][a-z0-9]{0,82}1[02-9ac-hj-np-z]{38,}|[A-Z][A-Z0-9]{0,82}1[02-9AC-HJ-NP-Z]{38,})$/),Rc=g("chain",[t({chain:s("solana"),address:Ii}).strict(),t({chain:s("eip155"),address:Oi,chainId:o().int().positive().safe().optional()}).strict(),t({chain:s("cosmos"),network:qt,address:qi}).strict()]),Pc=t({id:r().min(1).max(200),purpose:u(["link","sign-in"]),chain:_e,network:qt.nullable(),address:r(),message:r().max(4096),expiresAt:o().int()}),Cc=t({challenge:r().min(1).max(200),signature:r().min(1).max(256),publicKey:r().max(128).optional()}).strict(),$c=t({chain:_e,network:qt.nullable(),address:r(),verifiedAt:o().int().nonnegative(),revision:o().int().positive(),signIn:m()}),Ec=t({chain:_e,address:r().min(1).max(100)}).strict();async function Tc(e){let n=await e.address();switch(e.chain){case"solana":return{chain:"solana",address:n};case"eip155":return{chain:"eip155",address:n,...e.chainId?{chainId:await e.chainId()}:{}};case"cosmos":if(!e.network)throw ma("Choose the Cosmos chain for this wallet",ca.InvalidInput);return{chain:"cosmos",network:e.network,address:n}}}var Mc=5,yt=["solana","eip155","cosmos"],Ri=u(yt),Uc=c(Ri).max(yt.length).refine(e=>new Set(e).size===e.length,{message:"Duplicate wallet family"}).transform(e=>yt.filter(n=>e.includes(n)));function _c(e){return e.chain}function Dc(e,n){if(e.chain==="cosmos"){if(!e.network||n&&n!==e.network)throw new Error("A Cosmos wallet belongs to its own network");return`${e.network}:${e.address}`}let i=n??(e.chain==="solana"?on:"eip155:1");if(!(e.chain==="solana"?/^solana:[1-9A-HJ-NP-Za-km-z]{32}$/.test(i):Rt(i)))throw new Error(`Use a ${e.chain} network for this wallet`);return`${i}:${e.address}`}function Rt(e){return/^eip155:[1-9][0-9]{0,15}$/.test(e)}var Lc=ce(e=>typeof e=="string"&&Rt(e),'Use an EVM chain ID such as "eip155:8453"'),dt=r().regex(/^(0|[1-9][0-9]*)$/),Zc=j(t({chain:r(),token:r().nullable(),decimals:o().int().min(0).max(255).nullable(),total:dt,wallets:c(t({address:r(),amount:dt}).strict()),at:t({kind:u(["slot","block"]),number:dt}).strict(),observedAt:o().int().nonnegative()}).strict()),Pi=t({required:m().default(!0),minLength:o().int().min(0).max(1e4).default(1),maxLength:o().int().min(1).max(1e4).default(1e4)}).strict().refine(e=>e.minLength<=e.maxLength,"minLength must not exceed maxLength"),Ci=r().min(1).max(253).refine(e=>{if(!/^[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$/i.test(e)||e.includes(".."))return!1;try{let n=new URL(`https://${e}`);return n.hostname===e.toLowerCase()&&!n.port&&!n.username&&!n.password&&n.pathname==="/"&&!n.search&&!n.hash}catch{return!1}},"Use a hostname without a scheme, path, port, or wildcard"),$i=t({required:m().default(!0),allowedHosts:c(Ci).min(1).max(100).optional()}).strict(),sn=t({kind:s("text"),value:r().max(1e4)}).strict(),cn=t({kind:s("url"),value:r().max(2048)}).strict(),Nc=g("kind",[sn,cn]);function Qc(e,n){let i=e.kind==="text"?1e4:2048;if(e.value.length>i)return`Enter no more than ${i} characters`;if(e.kind!==n.input)return`This quest requires ${n.input} input`;if(!e.value.trim())return n.constraints.required?"This field is required":null;if(n.input==="text")return e.value.length<n.constraints.minLength?`Enter at least ${n.constraints.minLength} characters`:e.value.length>n.constraints.maxLength?`Enter no more than ${n.constraints.maxLength} characters`:null;let l=ln(e.value);return l?n.constraints.allowedHosts&&!n.constraints.allowedHosts.some(d=>d.toLowerCase()===l.hostname.toLowerCase())?`Use a URL hosted on: ${n.constraints.allowedHosts.join(", ")}`:null:"Enter a valid HTTP or HTTPS URL without credentials"}function ln(e){if(e!==e.trim()||/[\\\s]/.test(e)||!/^https?:\/\//i.test(e))return null;try{let n=new URL(e);return["http:","https:"].includes(n.protocol)&&!n.username&&!n.password?n:null}catch{return null}}function Bc(e){let n=ln(e);return!n||n.port||!["x.com","www.x.com","twitter.com","www.twitter.com","mobile.twitter.com"].includes(n.hostname)?null:/^\/(?:[A-Za-z0-9_]+|i\/web)\/status\/([0-9]{1,20})\/?$/.exec(n.pathname)?.[1]??null}var Pt=r().regex(/^[a-zA-Z0-9_-]+$/).max(100),Ei=t({id:Pt,label:r().trim().min(1).max(500)}).strict(),dn=t({id:Pt,prompt:r().trim().min(1).max(1e3),choices:c(Ei).min(2).max(8).refine(e=>new Set(e.map(n=>n.id)).size===e.length,"Choice IDs must be unique")}).strict(),Ti=c(dn).min(1).max(20).refine(e=>new Set(e.map(n=>n.id)).size===e.length,"Question IDs must be unique"),Ct=c(dn.extend({correct:Pt}).refine(e=>e.choices.some(n=>n.id===e.correct),"Choose a correct answer from the available choices")).min(1).max(20).refine(e=>new Set(e.map(n=>n.id)).size===e.length,"Question IDs must be unique"),mn=f([b({provider:s("domino"),resource:s("point-ledger")}),ga]),Hc=t({source:mn,query:r().max(100).optional(),cursor:r().regex(/^\d{1,6}$/).optional(),ids:c(r().min(1).max(100)).max(50).optional()}).strict(),Kc=t({revision:o().int(),options:c(t({id:r(),label:r(),description:r().optional(),group:r().optional(),disabledReason:r().optional()})),nextCursor:r().nullable().default(null),cursor:r().nullable()}),un=W.datetime({offset:!0}).transform(e=>new Date(e).toISOString()),kt=f([s(""),r().regex(/^\S{1,200}$/)]),Z={label:r().min(1),description:r().optional()},Mi=g("kind",[t({...Z,kind:s("point-ledger"),default:a.or(s(""))}).strict(),t({...Z,kind:s("datetime"),default:un}).strict(),t({...Z,kind:s("resource"),default:kt,source:mn}).strict(),t({...Z,kind:s("quiz"),default:Ct}).strict(),t({...Z,kind:s("text"),default:r(),minLength:o().int().nonnegative(),maxLength:o().int().positive(),multiline:m(),picker:r().optional(),decimals:o().int().min(0).max(255).optional()}).strict(),t({...Z,kind:s("integer"),default:o().int(),min:o().int(),max:o().int()}).strict(),t({...Z,kind:s("boolean"),default:m()}).strict(),t({...Z,kind:s("choice"),default:r(),options:c(r().min(1)).min(1)}).strict()]),Ui=y(r().regex(/^[a-zA-Z][a-zA-Z0-9_]*$/),Mi),Y=y(r(),f([r(),o().finite(),m(),Ct]));function _i(e){return e.length<=100&&/^(0|[1-9][0-9]*)$/.test(e)}function Di(e){return e==="solana"||e===on||Rt(e)}function Vc(e){return e?.kind==="integer"||e?.kind==="text"&&e.picker==="amount"}function Li(e){let n=r().min(e.minLength).max(e.maxLength);switch(e.picker){case"amount":return n.refine(_i,"Use a whole number of base units, such as 1000000");case"chain":return n.refine(Di,'Use "solana" or an EVM chain ID such as "eip155:8453"');default:return n}}function Fc(e,n){let i={};for(let[l,d]of Object.entries(e))switch(d.kind){case"point-ledger":i[l]=kt.default(d.default);break;case"datetime":i[l]=un.default(d.default);break;case"resource":i[l]=kt.default(d.default);break;case"quiz":i[l]=Ct.default(d.default);break;case"text":i[l]=Li(d).default(d.default);break;case"integer":i[l]=o().int().min(d.min).max(d.max).default(d.default);break;case"boolean":i[l]=m().default(d.default);break;case"choice":i[l]=u(d.options).default(d.default);break}return Y.parse(t(i).strict().parse(n))}function Wc(e,n){return Object.entries(e).filter(([i,l])=>(l.kind==="resource"||l.kind==="point-ledger")&&!n[i]).map(([i])=>i)}function Gc(e,n){return e.kind===n.kind||e.kind==="resource"&&e.source.provider==="domino"&&n.kind==="point-ledger"||n.kind==="resource"&&n.source.provider==="domino"&&e.kind==="point-ledger"||e.kind==="text"&&(n.kind==="resource"||n.kind==="datetime"||n.kind==="point-ledger")}var re={key:a};function Jc(e){if("id"in e)throw new Error("Authoring definitions use key, not id");return a.parse(e.key)}var ee=o().int().safe().nonnegative(),$t=t({from:ee,until:ee}).strict().refine(e=>e.until>e.from,{message:"Window end must follow its start",path:["until"]}),Ee=t({key:a,title:r().trim().min(1).max(120),window:$t.optional(),enrollment:u(["none","required"]).default("none")}).strict(),Zi=Ee.omit({key:!0,title:!0}).extend({...re,title:r().trim().min(1).max(120).optional()}).strict().transform(e=>{let n=e;return Ee.parse({...n,title:e.title??n.key})});function Xc(e){return Zi.parse(e)}var Ni=Ee.extend({enrolledAt:ee.nullable(),withdrawnAt:ee.nullable().default(null),withdrawalReason:r().nullable().default(null)}),zn=t({actionId:a,campaign:a}).strict(),Yc=zn.extend({member:a}),Qi=zn,el=Qi.extend({member:a,reason:r().trim().min(1).max(500)}),tl=t({campaign:a,member:a,enrolledAt:ee,withdrawnAt:ee.nullable().default(null),withdrawalReason:r().nullable().default(null)});function ge(e,n){return n}var rl=a.or(s("")).brand();function Bi(e){return typeof e=="string"?e:e.key}var Ar=t({key:a,title:r().trim().min(1).max(120)}).strict(),Hi=Ar.omit({key:!0,title:!0}).extend({...re,title:r().trim().min(1).max(120).optional()}).strict().transform(e=>Ar.parse({...e,title:e.title??e.key}));function nl(e){return ge("group",Hi.parse(e))}function Ki(e){return a.parse(e.key)}var bn=r().trim().min(1).max(120),pn=r().trim().min(1).max(1e3),jt=o().int().nonnegative().max(864e13),al=t({actionId:a,key:a,title:bn}).strict(),il=t({title:bn}).strict(),ol=t({actionId:a,member:a,reason:pn}).strict(),sl=t({actionId:a,reason:pn}).strict(),cl=b({cursor:S.optional(),limit:o().int().min(1).max(100).optional()}),Vi=t({key:a,title:r(),members:o().int().nonnegative(),createdAt:jt,archivedAt:jt.nullable()}),ll=t({items:c(Vi),nextCursor:S.nullable()}),Fi=t({member:a,addedAt:jt.nullable()}),dl=t({items:c(Fi),nextCursor:S.nullable()}),fn=o().int().safe().nonnegative(),gn=fn.positive(),hn=g("scope",[t({kind:s("completion"),quest:a,scope:s("ever")}).strict(),t({kind:s("completion"),quest:a,scope:s("period"),period:te.exclude(["lifetime"])}).strict()]),vn=t({kind:s("balance"),balance:a,minimum:gn}).strict(),yn=t({kind:s("group"),group:a,title:r()}).strict(),Wi=g("kind",[hn,vn,yn]),Et=f([t({kind:s("completion"),quest:a,title:r(),scope:s("ever")}),t({kind:s("completion"),quest:a,title:r(),scope:s("period"),period:te.exclude(["lifetime"]),resetsAt:o().int().safe()}),t({kind:s("balance"),balance:a,title:r(),minimum:gn,current:fn}),t({kind:s("group"),group:a,title:r()})]);function ml(e,n={}){let i=e.key;return hn.parse({kind:"completion",quest:i,scope:n.scope??"ever",..."period"in n?{period:n.period}:{}})}function ul(e,n){return vn.parse({kind:"balance",balance:Bi(e),minimum:n})}function zl(e){return yn.parse({kind:"group",group:Ki(e),title:e.title})}var he=2147483647,ve=t({kind:s("points").default("points"),balance:a,amount:o().int().min(0).max(he)}).strict(),Tt=t({badge:a.optional(),group:a.optional(),id:a,title:r().min(1).max(120),tiers:c(t({id:a,title:r().min(1).max(120)}).strict()).min(1).max(20).refine(e=>new Set(e.map(n=>n.id)).size===e.length,"Tier IDs must be unique"),inventory:t({kind:s("untracked")}).strict(),fulfillment:g("kind",[t({kind:s("staff-handover")}).strict(),t({kind:s("automatic")}).strict()])}).strict().refine(e=>e.badge===void 0&&e.group===void 0||e.fulfillment.kind==="automatic"&&e.tiers.length===1&&e.tiers[0].id==="awarded","Badge and group rewards require the fixed automatic achievement envelope").refine(e=>e.badge===void 0||e.group===void 0,"A reward is either a badge or a group membership"),bl=t({id:a,key:a.nullable()}),B=t({kind:s("tier"),reward:Tt,tier:a}).strict().refine(e=>e.reward.tiers.some(n=>n.id===e.tier),"Unknown reward tier"),Gi=B.transform((e,n)=>{let i=e.reward.badge;return!i||e.reward.fulfillment.kind!=="automatic"||e.reward.tiers.length!==1||e.tier!=="awarded"?(n.addIssue({code:"custom",message:"Invalid badge reward"}),K):{...e,reward:{...e.reward,badge:i}}});function pl(e,n){return Gi.parse({kind:"tier",tier:"awarded",reward:{id:e,badge:e,title:n,tiers:[{id:"awarded",title:"Awarded"}],inventory:{kind:"untracked"},fulfillment:{kind:"automatic"}}})}var Ji=B.transform((e,n)=>{let i=e.reward.group;return!i||e.reward.fulfillment.kind!=="automatic"||e.reward.tiers.length!==1||e.tier!=="awarded"?(n.addIssue({code:"custom",message:"Invalid group reward"}),K):{...e,reward:{...e.reward,group:i}}});function fl(e,n){return Ji.parse({kind:"tier",tier:"awarded",reward:{id:e,group:e,title:n,tiers:[{id:"awarded",title:"Awarded"}],inventory:{kind:"untracked"},fulfillment:{kind:"automatic"}}})}var Xi=fa,St=f([ve,B,Xi]);function Mt(e){return e.kind==="tier"&&e.reward.badge?"badge:"+e.reward.badge:e.kind==="tier"&&e.reward.group?"group:"+e.reward.group:e.kind==="integration"?`integration:${e.provider}:${e.action}:${e.roleId}`:e.kind==="points"?"points:"+e.balance:"tier:"+e.reward.id}var kn=f([t({kind:s("manual"),input:s("text"),constraints:Pi,actor:u(["member","staff"]).optional()}).strict(),t({kind:s("manual"),input:s("url"),constraints:$i,actor:u(["member","staff"]).optional()}).strict(),t({kind:s("manual"),input:u(["photo","quiz","none"]),actor:u(["member","staff"]).optional()}).strict(),t({kind:s("automatic"),tracker:ui.optional()}).strict()]),Yi=f(kn.options.map(e=>e.strip())),jn=t({kind:u(["pass","fail","unclear"]),reason:r().min(1).max(2e3)}).strict(),gl=t({text:r().min(1).max(16e3).refine(e=>e.trim().length>0,"Text must not be blank"),criteria:r().trim().min(1).max(2e3)}).strict(),hl=jn,Ir={minRetryAfterMs:1e3,maxRetryAfterMs:36e5,retryAfterMs:6e4,horizonMs:864e5,maxDefers:100},Or={minMs:1e3,maxMs:6048e5},qr=o().int().min(Or.minMs).max(Or.maxMs),Ut=t({current:o().finite().nonnegative(),target:o().finite().positive(),reason:r().min(1).max(2e3)}).refine(e=>e.current<=e.target,{message:"Progress current must not exceed target"}),vl=g("kind",[b({kind:s("defer"),reason:r().min(1).max(2e3),retryAfterMs:o().int().min(Ir.minRetryAfterMs).max(Ir.maxRetryAfterMs).optional(),until:o().int().safe().nonnegative().optional()}),Ut.safeExtend({kind:s("progress")}).strict(),t({kind:s("accept"),rewards:c(St).max(10),completionKey:vt.optional()}).strict(),t({kind:s("reject"),reason:r().min(1).max(2e3),code:hi.optional(),requestedReview:s(!0).optional()}).strict(),t({kind:s("review"),reason:r().min(1).max(2e3),rewards:c(St).max(10).optional(),completionKey:vt.optional()}).strict()]),eo=u(["workers-ai"]),to=u(["fixture-pass","fixture-fail","fixture-unclear","fixture-error","workers-ai"]),_t=c(St).max(10).refine(e=>new Set(e.map(Mt)).size===e.length,"Use one entry per balance or shared reward"),ze=r().max(2e3).refine(e=>{if(/^\/(?!\/)[^\\\s]*$/.test(e))return!0;try{return new URL(e).protocol==="https:"}catch{return!1}},"Use an HTTPS URL or a same-site path beginning with /"),ro=g("kind",[t({kind:s("link"),url:ze.refine(e=>e.startsWith("https://"),"Use an HTTPS URL"),label:r().trim().min(1).max(120)}).strict()]),no=t({title:r().trim().min(1).max(120),description:r().max(4e3).optional(),action:ro.optional()}).strict(),ao=g("kind",[t({kind:s("account"),provider:xt}).strict(),t({kind:s("wallet"),chain:_e.optional()}).strict()]),Te=t({steps:c(no).max(30).optional(),image:ze.optional(),imageAlt:r().max(500).optional(),requirements:c(ao).max(10).optional()}).strict(),Sn=Te.extend({quiz:Ti.optional(),instructions:r().max(4e3).optional(),video:t({url:ze,poster:ze.optional(),captions:t({url:ze,language:r().min(2).max(20),label:r().min(1).max(80)}).strict().optional()}).strict().optional()}).strict(),io=t({visible:m()}).strict(),oo=2,so=s(oo),xn=t({quest:a,evaluatorProtocol:so,title:r().min(1).max(120),presentation:Sn.default({}),integrations:c(xi).max(10).default([]),fields:Ui,values:Y,rewards:_t,humanReview:m(),trigger:kn,performance:Ga.optional(),requires:c(Wi).max(30).default([]),campaign:Ee.optional(),availability:$t.optional(),completion:Ae(ni,Ot),visibility:u(["visible","hidden"]).default("visible"),profile:io.default({visible:!1}),budgets:c(Si).max(20).default([]),retryCooldownMs:qr.optional(),completionCooldownMs:qr.optional()}).strict(),co=t({code:r().min(1).max(1e6)}).strict(),lo=co.extend({runtime:It.optional(),settings:Y,provider:eo,expectedRelease:a.nullable().optional(),settingRenames:y(r(),r()).optional()}).strict(),yl=t({releases:c(lo).min(1).max(vi.quests)}).strict(),kl=t({quest:a,expectedRelease:a,set:Y,reset:c(r()),presentation:Te.nullable().optional()}).strict(),mo=xn.extend({completion:Ot}),uo=j(mo.extend({key:a.optional(),code:r(),runtime:It.optional(),provider:to,id:a,createdAt:o(),origin:t({typeVersion:a}).strict().optional(),lifecycle:u(["active","paused","archived"]).default("active"),configuration:t({defaults:Y,overrides:Y,preserved:c(r()),presentation:Te.optional(),presentationDefaults:Te.optional()}).strict().optional()})),jl=t({code:r(),definition:xn}),zo=y(a,a).refine(e=>Object.keys(e).length>0&&Object.keys(e).length<=50,"Provide between 1 and 50 answers").transform(e=>Object.fromEntries(Object.entries(e).sort(([n],[i])=>n.localeCompare(i)))),bo=t({kind:s("quiz"),release:a.optional(),answers:zo}).strict(),De=f([bo,sn,cn]),Sl=t({actionId:a,quest:a,member:a,evidence:a.optional(),input:De.optional(),release:a.optional(),faultAfterReview:m().optional()}).strict(),xl={Queued:"queued",Evaluating:"evaluating",Deferred:"deferred",Accepted:"accepted",Progressed:"progressed",Rejected:"rejected",NeedsReview:"needs-review",Failed:"failed"},po=r(),Le=t({id:a,release:a,quest:a,member:a,evidence:a.nullable(),input:De.optional(),status:po,reason:r().nullable(),retries:o(),generation:o(),completion:r().nullable(),reviewRewards:_t.nullable().default(null),evaluationRun:o().int().nonnegative().default(0),deferCount:o().int().nonnegative().default(0),deferUntil:o().int().safe().nullable().default(null),nextEvaluationAt:o().int().safe().nullable().default(null),code:r().nullable().default(null),progress:Ut.nullable().default(null),requestedReview:m().default(!1),createdAt:o()}),wl={Open:"open",Submitted:"submitted",Discarded:"discarded",Expired:"expired"},fo=r(),go=j(t({id:a,quest:a,member:a,release:a.nullable(),input:De.nullable(),evidence:a.nullable(),reviewRequired:m(),status:fo,attempt:a.nullable(),createdAt:o(),updatedAt:o(),expiresAt:o()})),Al=t({release:a.nullable().optional(),input:De.nullable().optional(),evidence:a.nullable().optional()}).strict(),Il=j(t({submission:go,attempt:Le,replayed:m()})),ho=t({id:o(),attempt:r().nullable(),kind:r(),detail:r(),actor:r().nullable().default(null),at:o()}),vo=t({item:a,revision:o().int().nonnegative()}).strict(),be=t({item:a,label:r().min(1).max(80)}).strict(),yo=g("kind",[t({kind:s("untracked")}).strict(),t({kind:s("at-pickup"),tiers:c(t({tier:a,variants:c(be).min(1).max(100)}).strict()).min(1).max(100)}).strict()]),Ol=t({reward:Tt,revision:o().int().nonnegative(),policy:yo}),ql=g("kind",[t({kind:s("untracked")}).strict(),t({kind:s("at-pickup"),revision:o().int().nonnegative(),variants:c(be.extend({available:o().int().nonnegative()}))}).strict()]),Rl=t({reward:a,revision:o().int().nonnegative(),actionId:a,policy:g("kind",[t({kind:s("untracked")}).strict(),t({kind:s("at-pickup"),tiers:c(t({tier:a,variants:c(be.extend({item:a.optional()})).min(1).max(100)}).strict()).min(1).max(100)}).strict()])}).strict(),wn=t({completion:a,reason:r(),flaggedAt:o(),remainingTier:a.nullable()}),Ce={id:a,member:a,reward:Tt,earnedTier:a,tier:a,revision:o().int().positive()},Pl=g("status",[t({...Ce,status:s("available")}).strict(),t({...Ce,status:s("handing-over"),handover:a,startedAt:o(),allocation:be.optional()}).strict(),t({...Ce,status:s("collected"),handover:a,startedAt:o(),allocation:be.optional(),collectedAt:o(),recovery:wn.optional()}).strict(),t({...Ce,status:s("void"),voidedAt:o()}).strict()]),ko=t({id:a,title:r(),tiers:c(t({id:a,title:r()}).loose()),inventory:t({kind:r()}).loose(),fulfillment:t({kind:r()}).loose()}).loose(),de={id:a,member:a,reward:ko,earnedTier:a,tier:a,revision:o().int()},Rr=t({item:a,label:r()}).loose(),An=f([g("status",[t({...de,status:s("available")}).loose(),t({...de,status:s("handing-over"),handover:a,startedAt:o(),allocation:Rr.optional()}).loose(),t({...de,status:s("collected"),handover:a,startedAt:o(),allocation:Rr.optional(),collectedAt:o(),recovery:wn.optional()}).loose(),t({...de,status:s("void"),voidedAt:o()}).loose()]),t({...de,status:r()}).loose().transform(({status:e,...n})=>({...n,status:"unsupported",reportedStatus:e}))]),Cl=t({actionId:a,revision:o().int().positive(),selection:vo.optional()}).strict(),$l=t({actionId:a,handover:a}).strict(),El=t({actionId:a,revision:o().int().positive(),reason:r().trim().min(1).max(500)}).strict(),Tl={Quest:"quest",Leaderboard:"leaderboard"},jo=r().min(1).max(64),So=t({kind:jo,id:a}),xo=t({key:r().default("once"),id:a,quest:a,member:a,source:So.optional()}),wo=g("kind",[t({kind:s("available"),input:u(["photo","quiz","none","text","url"])}).strict(),t({kind:s("completed")}).strict(),t({kind:s("locked"),missing:c(Et).min(1)}).strict(),t({kind:s("blocked"),reason:u(["budget-exhausted","connection-required","wallet-required","paused","outside-window","enrollment-required"]),window:u(["tracker","quest"]).optional(),resetsAt:o().int().safe().optional()}).strict(),t({kind:s("staff-required")}).strict(),t({kind:s("automatic")}).strict(),t({kind:s("checking"),attempt:a}).strict(),t({kind:s("needs-review"),attempt:a}).strict(),t({kind:s("retryable"),attempt:a}).strict()]),Ao=f(wo.options.map(e=>e.strip())),Io=t({id:a,scope:u(["member","project"]),period:u(["day","week","month","lifetime"]),remaining:o().int().safe().nonnegative(),resetsAt:o().int().safe().nullable()}),Ml=j(t({member:a,quests:c(t({quest:a,key:a.optional(),release:a.optional(),title:r(),presentation:Sn.default({}),connections:c(xt).default([]),trigger:Yi,availability:Ao,completed:m(),completion:Ot.default({kind:"once"}),streak:ii.nullable().optional(),counter:ei.nullable().optional(),progress:Ut.nullable().default(null),completionCount:o().int().nonnegative().default(0),visibility:u(["visible","hidden"]).default("visible"),missing:c(Et),campaign:Ni.nullable().default(null),window:$t.nullable().default(null),budgets:c(Io).default([]),retryAt:o().int().safe().optional(),nextAvailableAt:o().int().safe().optional(),attempt:Le.nullable()})),entitlements:c(An)})),Ul=j(t({releases:c(uo),completions:c(xo),entitlements:c(An),attempts:c(Le),balances:c(t({member:r(),balance:r(),earned:o(),held:o(),available:o()})),events:c(ho)})),_l=t({id:a,member:a,type:u(["image/jpeg","image/png"]),size:o()}),Dl=t({error:r(),code:r().optional(),window:u(["tracker","quest"]).optional(),missing:c(Et).optional(),retryAt:o().int().safe().optional()}),Ll=t({actionId:a,generation:o().int().nonnegative(),decision:u(["accept","reject"]),reason:r().trim().min(1).max(2e3)}).strict(),Zl=t({item:a,quantity:o().int().min(0).max(1e4)}).strict(),Nl=t({actionId:a,member:a,item:a,balance:a,price:o().int().positive().max(1e4)}).strict(),In={limit:o().int().min(1).max(100).default(25),cursor:r().min(1).max(4096).optional()},Ql=t({...In,member:a.optional(),quest:a.optional()}).strict(),Bl=t({...In,prefix:a.optional()}).strict(),Oo=t({attempt:Le,title:r(),checks:c(t({criteria:r(),result:jn}))}),Hl=t({items:c(Oo).max(100),nextCursor:r().nullable()}),Kl=t({items:c(t({member:a})).max(100),nextCursor:r().nullable()}),Vl=t({actionId:a,name:r().trim().min(1).max(80)}).strict(),Fl=t({id:a,name:r()}),Wl=b({contentAttempt:a,observation:a,observedAt:o().int().safe().nonnegative(),metrics:Q,rewards:_t}),Gl=Wa.extend({content:r().min(1).max(256)}),Jl=b({current:b({state:u(["content-pending","content-unqualified","waiting","pending","qualified","unqualified","needs-review","failed","superseded"]),reason:r().nullable(),contentAttempt:a,attempt:a.nullable(),reward:Yr.shape.reward}),items:c(b({attempt:a,contentAttempt:a,observation:a,observedAt:o(),metrics:Q,state:u(["pending","qualified","unqualified","needs-review","failed","superseded"]),reason:r().nullable()})),nextCursor:S.nullable()});function U(e){let n;return()=>n??=e()}function je(e){let n={};for(let[i,l]of Object.entries(e))Object.defineProperty(n,i,{get:U(l),enumerable:!0,configurable:!0});return n}var Se=["7d","30d","90d","all"],q=U(()=>o().int().safe()),Ze=U(()=>c(q())),F=U(()=>W.datetime({offset:!0})),qo=U(()=>t({key:r(),start:F(),end:F()})),Pn=U(()=>t({key:u(Se),from:F(),to:F(),bucket:u(["day","week"]),timeZone:r(),buckets:c(qo())})),Cn=U(()=>t({from:F(),to:F()}).optional()),nd=b(je({range:()=>u(Se),ledger:()=>a.optional()})),M=U(()=>t({total:q(),previousTotal:q().optional(),series:Ze()})),On=U(()=>M().optional()),Ro=U(()=>t({quest:a,title:r(),attempts:q(),completions:q(),decided:q(),rejected:q(),needsReview:q(),rejectionRate:o().min(0).max(1).nullable(),topReasons:c(t({reason:r(),code:r().nullable(),count:q()})),rejectionsBySource:t({evaluator:q(),staff:q(),budget:q(),expired:q()}),series:t({attempts:Ze(),completions:Ze()})})),ad=t(je({range:Pn,previous:Cn,members:()=>t({signUps:M(),active:M()}),quests:()=>t({attempts:M(),completions:M(),rejections:M(),needsReview:M(),byQuest:c(Ro())}),points:()=>t({ledgers:c(t({key:a,name:r(),archived:m()})),ledger:a.nullable(),hasSpending:m(),awarded:M(),spent:On(),net:On(),membersEarning:M()}),offers:()=>t({redemptions:M(),byOffer:c(t({offer:a,title:r(),redemptions:q(),series:Ze()}))}).optional(),referrals:()=>t({accepted:M(),qualified:M(),acceptedQualified:t({total:q(),previousTotal:q().optional()})}).optional(),testEnvironment:()=>t({lastResetAt:F().nullable(),shiftedClockMembers:q()}).optional()}));var Po=["number","line","bar","table"],R=["number","line","bar","table"],qn=["number","line","table"],Co=["number","bar","table"],ye=["quest","group","tracker"],Nt={"members.signUps":{definition:"Members who joined the project, by when they joined.",kind:"count",breakdowns:[],filters:["group"],charts:R,ledger:!1},"members.active":{definition:"Distinct members with an attempt, by when it was created; the total counts each member once.",kind:"distinct",breakdowns:[],filters:["group"],charts:R,ledger:!1},"quests.attempts":{definition:"Attempts, by when they were created.",kind:"count",breakdowns:["quest"],filters:ye,charts:R,ledger:!1},"quests.completions":{definition:"Quest completions never revoked, by when they completed.",kind:"count",breakdowns:["quest"],filters:ye,charts:R,ledger:!1},"quests.needsReview":{definition:"Attempts the evaluator sent to staff review, by when they were created, whatever staff decided later.",kind:"count",breakdowns:["quest"],filters:ye,charts:R,ledger:!1},"quests.rejections":{definition:"Rejected attempts, by when they were decided.",kind:"count",breakdowns:["quest","source","reason"],filters:ye,charts:R,ledger:!1},"quests.rejectionRate":{definition:"Rejected attempts divided by decided attempts (accepted, progressed or rejected), by when they were decided; empty below 10 decided.",kind:"rate",breakdowns:["quest"],filters:ye,charts:qn,ledger:!1,minimumDenominator:10},"points.awarded":{definition:"Points in the ledger's award entries, by effective date.",kind:"count",breakdowns:[],filters:["group"],charts:R,ledger:!0},"points.spent":{definition:"Points in the ledger's spend entries, as a positive number, by effective date.",kind:"count",breakdowns:[],filters:["group"],charts:R,ledger:!0},"points.net":{definition:"Every entry's signed amount in the ledger, by effective date; a reversal takes its original entry's date.",kind:"count",breakdowns:[],filters:["group"],charts:R,ledger:!0},"points.membersEarning":{definition:"Distinct members awarded more than 0 points in the ledger, by effective date; the total counts each member once.",kind:"distinct",breakdowns:[],filters:["group"],charts:R,ledger:!0},"offers.redemptions":{definition:"Fulfilled offer redemptions, by when they were redeemed.",kind:"count",breakdowns:["offer"],filters:["offer","group"],charts:R,ledger:!1},"referrals.accepted":{definition:"Accepted referrals, by when they were accepted. A referral belongs to no program, so it takes no program breakdown or filter.",kind:"count",breakdowns:[],filters:[],charts:R,ledger:!1},"referrals.qualified":{definition:"Active referral qualifications, one per program and friend, by when they first qualified; suspended referrals count.",kind:"count",breakdowns:["program"],filters:["program"],charts:R,ledger:!1},"referrals.qualificationRate":{definition:"Of the referrals accepted in a bucket, the share whose friend has an active qualification now (in the program, for a program row or filter), by acceptance; empty below 10 accepted.",kind:"rate",breakdowns:["program"],filters:["program"],charts:qn,ledger:!1,minimumDenominator:10},"groups.joins":{definition:"Members added to a group, by when they were added. A change that left membership as it was, and a membership recorded without a date, don't count. The group filter keeps changes in those groups.",kind:"count",breakdowns:["group"],filters:["group"],charts:R,ledger:!1},"groups.leaves":{definition:"Members removed from a group, by when they were removed. A change that left membership as it was, and a membership recorded without a date, don't count. The group filter keeps changes in those groups.",kind:"count",breakdowns:["group"],filters:["group"],charts:R,ledger:!1},"trackers.records":{definition:"Tracker trigger outcomes, one per quest and record observation, by when the record was observed, counted by their current outcome (admitted or skipped). A retry overwrites an outcome, so a bucket shows today's outcome of its records, not the outcome they had then.",kind:"count",breakdowns:["outcome","tracker"],filters:["tracker"],charts:R,ledger:!1},"leaderboards.settledParticipants":{definition:"Participants in leaderboard settlements, one per member and settlement, by the settlement's cutoff. Pending and approved settlements count; a rejected settlement leaves its bucket.",kind:"count",breakdowns:["leaderboard"],filters:["leaderboard"],charts:Co,ledger:!1}},id=Object.keys(Nt),od=t(je({metrics:()=>c(t({id:r(),definition:r(),kind:u(["count","distinct","rate"]),breakdowns:c(r()),filters:c(r()),charts:c(r()),ledger:m(),minimumDenominator:q().optional()}))}));var sd=b(je({metric:()=>r().min(1).max(100),range:()=>u(Se),breakdown:()=>r().min(1).max(100).optional(),filter:()=>y(r().min(1).max(100),f([a,c(a).min(1).max(100)])).optional(),ledger:()=>a.optional(),limit:()=>o().int().optional()})),Dt=U(()=>o().nullable()),Lt=U(()=>({total:Dt(),previousTotal:Dt().optional(),series:c(Dt())})),cd=t(je({metric:()=>r(),kind:()=>u(["count","distinct","rate"]),range:Pn,previous:Cn,ledger:()=>a.optional(),value:()=>t(Lt()),breakdown:()=>t({dimension:r(),rows:c(t({key:r(),title:r(),archived:m(),...Lt()})),other:t({rows:q(),...Lt()}).optional()}).optional()})),Rn={panels:24,dashboards:20},$o={number:1,line:2,bar:2,table:4},ke=r().trim().min(1).max(120),Qt=r().trim().min(1).max(500),Eo=f([a,c(a).min(1).max(100)]),To=y(r().min(1).max(100),Eo),$n={key:a,title:ke,description:Qt.optional(),metric:r().min(1).max(100),breakdown:r().min(1).max(100).optional(),filter:To.optional(),ledger:a.optional(),chart:u(Po)},Mo=b({...$n,width:o().int().min(1).max(4).optional()}),Bt=b({key:a,title:ke,description:Qt.optional(),defaultRange:u(Se).optional(),position:o().int().min(0).max(1e3).optional(),sections:c(b({title:ke.optional(),panels:c(Mo).min(1).max(100)})).min(1).max(100)}),En=b({key:a,title:ke,description:Qt.optional(),defaultRange:u(Se),position:o().int().min(0).max(1e3).optional(),sections:c(b({title:ke.optional(),panels:c(b({...$n,width:o().int().min(1).max(4)}))}))}),ld=f([Bt,t({code:r().min(1).max(2e6)}).strict()]);function dd(e){let n=Bt.parse(e);return En.parse({key:n.key,title:n.title,...n.description===void 0?{}:{description:n.description},defaultRange:n.defaultRange??"30d",...n.position===void 0?{}:{position:n.position},sections:n.sections.map(i=>({...i.title===void 0?{}:{title:i.title},panels:i.panels.map(l=>({...l,width:l.width??$o[l.chart]}))}))})}function md(e){return e.sections.flatMap(n=>[...n.panels])}function ud(e){let n=e.sections.flatMap(d=>[...d.panels]),i=`dashboard "${e.key}"`;if(n.length>Rn.panels)return{code:"too-many-panels",message:`The ${i} has ${n.length} panels; a dashboard holds at most ${Rn.panels}.`};let l=new Set;for(let d of n){let z=`Panel "${d.key}" of ${i}`;if(l.has(d.key))return{code:"duplicate-key",panel:d.key,message:`The ${i} has two panels with the key "${d.key}".`};if(l.add(d.key),!Object.hasOwn(Nt,d.metric))return{code:"unknown-metric",panel:d.key,message:`${z} names the unknown metric "${d.metric}". Run domino analytics metrics for the catalog.`};let p=Nt[d.metric];if(d.breakdown!==void 0&&!p.breakdowns.includes(d.breakdown))return{code:"breakdown-not-accepted",panel:d.key,message:`${z}: ${d.metric} has no "${d.breakdown}" breakdown; it takes ${p.breakdowns.join(", ")||"none"}.`};for(let v of Object.keys(d.filter??{}))if(!p.filters.includes(v))return{code:"filter-not-accepted",panel:d.key,message:`${z}: ${d.metric} takes no "${v}" filter; it takes ${p.filters.join(", ")||"none"}.`};if(!p.charts.includes(d.chart))return{code:"chart-not-accepted",panel:d.key,message:`${z}: ${d.metric} can't be drawn as "${d.chart}"; it takes ${p.charts.join(", ")}.`};if(d.chart==="number"&&d.breakdown!==void 0)return{code:"breakdown-not-accepted",panel:d.key,message:`${z}: a number panel shows one value and takes no breakdown.`};if(d.chart==="table"&&d.breakdown===void 0)return{code:"breakdown-required",panel:d.key,message:`${z}: a table panel needs a breakdown; ${d.metric} takes ${p.breakdowns.join(", ")||"none"}.`};if(p.ledger&&d.ledger===void 0)return{code:"ledger-required",panel:d.key,message:`${z}: ${d.metric} needs a point ledger; set ledger to its key.`};if(!p.ledger&&d.ledger!==void 0)return{code:"ledger-not-accepted",panel:d.key,message:`${z}: ${d.metric} reads no point ledger; remove ledger.`}}return null}var zd=j(t({key:a,title:r(),change:u(["created","updated","unchanged"]),definition:En})),Zt=e=>typeof e=="string"?e:e.key;function bd(e){let n=Bt.parse({...e,sections:e.sections.map(i=>({...i,panels:i.panels.map(l=>({...l,...l.ledger===void 0?{}:{ledger:Zt(l.ledger)},...l.filter===void 0?{}:{filter:Object.fromEntries(Object.entries(l.filter).map(([d,z])=>[d,Array.isArray(z)?z.map(Zt):Zt(z)]))}}))}))});return ge("dashboard",n)}var Uo=["not-linked","provider-unavailable","author-error"],_o=e=>Uo.includes(e),fd=se({code:r().min(1),message:r().min(1),retryable:m()}),Tn=Symbol.for("@domino-sdk/relay/CapabilityError"),gd=class Mn extends Error{code;retryable;constructor(n,i,l={}){super(i),this.name="CapabilityError",this.code=n,this.retryable=l.retryable??n==="provider-unavailable",Object.defineProperty(this,Tn,{value:!0})}static[Symbol.hasInstance](n){return typeof n=="object"&&n!==null&&n[Tn]===!0}static from(n){return new Mn(n.code,n.message,{retryable:_o(n.code)&&n.retryable})}};var Kt=t({name:r().trim().min(1).max(120),description:r().trim().max(1e3).default("")}).strict(),yd=Kt.extend({actionId:a,key:a.optional()}).strict(),Do=Kt.extend({id:a}),kd=Do.extend({archivedAt:o().int().nonnegative().nullable()}),Lo=Kt.extend({key:a}).strict(),jd=f([Lo,t({code:r().min(1).max(2e6)}).strict()]),Zo=t({id:a,key:a.nullable(),name:r()}),Ne=o().int().safe(),No=t({ledger:Zo,balance:Ne,available:Ne}),Sd=t({items:c(No)}),xd={Award:"award",Spend:"spend",Adjust:"adjust",Reverse:"reverse"},Qo=r().min(1).max(64),Vt=t({id:a,amount:Ne,kind:Qo,at:Ne.nonnegative(),quest:a.nullable(),reverses:a.nullable(),imported:m().optional()}),wd=b({ledger:a,cursor:S.optional()}),Ad=t({items:c(Vt),nextCursor:S.nullable()}),Id=t({login:m(),miniApp:m()}),Od=$r.extend({provider:s("telegram")}),Bo=r().min(1,"Pass the Mini App's Telegram.WebApp.initData").max(8192),qd=t({initData:Bo,mode:u(["sign-in","connect"])}).strict(),Ho=r().regex(/^-?[1-9][0-9]{0,19}$/,"Use the chat's numeric ID, such as -1001234567890"),Ko=t({id:Ho,type:r(),title:r(),username:r().nullable(),status:r(),issue:r().nullable(),connectedAt:o()}),Rd=t({configured:m(),bot:t({username:r()}).nullable(),chats:c(Ko)}),Pd=t({url:r(),expiresAt:o()}),Cd=t({chat:r().regex(/^(-?[1-9][0-9]{0,19}|@[A-Za-z][A-Za-z0-9_]{3,31})$/,"Name a chat the project connected, by its numeric ID or @username")}).strict(),$d=t({userId:r(),username:r().nullable(),status:ce(e=>typeof e=="string"),isMember:m(),isAdmin:m(),untilDate:o().nullable()}),Ed="telegram-reactions",Td=t({chatId:r(),chatType:r(),messageId:o(),reactionType:r(),emoji:r().nullable(),customEmojiId:r().nullable(),reactorStatus:r(),reactorIsAdmin:m()}),_=o().int().nonnegative().safe(),_n=u(["private","participants","public"]),Qe=u(["x","discord","google"]),Un=u(["x","discord"]),Vo=c(Un).max(Un.options.length).refine(e=>new Set(e).size===e.length,"List each provider once"),Ht=r().min(1).max(100),Fo=g("source",[t({source:s("upload"),url:r().url(),seed:Ht}),t({source:s("account"),provider:Qe,url:r().url(),seed:Ht}),t({source:s("generated"),seed:Ht})]),Ft=t({id:a,name:r(),avatar:Fo}),Wo=/[\p{Cc}----]/u,Go=r().max(200).transform(e=>e.normalize("NFC").replace(/\s+/g," ").trim()).pipe(r().min(1,"Enter a name").max(40,"Use at most 40 characters").refine(e=>!Wo.test(e),"Use visible characters only")),Md=t({displayName:Go.nullable().optional(),avatar:g("source",[t({source:s("account"),provider:Qe}).strict(),t({source:s("generated")}).strict()]).nullable().optional(),hidden:m().optional()}).strict().refine(e=>Object.values(e).some(n=>n!==void 0),"Change at least one field"),Jo=Ft.extend({displayName:r().nullable(),avatarChoice:u(["default","upload","account","generated"]),avatarProvider:Qe.nullable(),hidden:m(),locked:m(),visibility:_n,options:c(t({provider:Qe,name:r().nullable(),givenName:r().nullable().default(null),imageUrl:r().url().nullable()}))}),Dn=r().min(1).max(512),Ud=t({limit:I.number().int().min(1).max(100).default(20),cursor:Dn.optional()}).strict(),Xo=t({quest:a,key:a.optional(),title:r(),completions:_.positive(),lastCompletedAt:_.nullable()}),_d=t({items:c(Xo),nextCursor:Dn.nullable()}),Dd=t({program:a,key:a.optional(),title:r(),invited:_,qualified:_,milestones:c(t({id:a,count:_,reached:m()}))}),Yo=t({visibility:_n,defaults:Vo,revision:_,actor:r().nullable(),updatedAt:_.nullable()}),Ld=Yo.omit({revision:!0,actor:!0,updatedAt:!0}).extend({actionId:a,expectedRevision:_,reason:r().trim().min(1).max(500)}).strict(),Zd=t({actionId:a,resetName:m().default(!1),removeAvatar:m().default(!1),lock:m().optional(),reason:r().trim().min(1).max(1e3)}).strict().refine(e=>e.resetName||e.removeAvatar||e.lock!==void 0,"Choose an action"),Nd=Jo.omit({options:!0}).extend({member:a,lockedAt:_.nullable(),lockedBy:r().nullable(),lockedReason:r().nullable(),updatedAt:_}),Qd=5*1024*1024,Bd=["image/jpeg","image/png","image/webp"];var Nn=t({name:r().trim().min(1).max(120),description:r().trim().max(1e3).default(""),image:r().url().max(2048)}).strict(),Qn=Nn.extend({key:a}).strict(),Bn=Nn.extend({id:a,key:a.nullable()}).strip(),Fd=Bn.extend({archivedAt:o().int().nonnegative().nullable()}),Wd=Qn.extend({actionId:a}).strict(),Gd=f([Qn,t({code:r().min(1).max(2e6)}).strict()]),es=t({badge:Bn,awardedAt:o().int().nonnegative()}),Jd=t({items:c(es)}),Xd=t({actionId:a,reason:r().trim().min(1).max(1e3)}).strict(),Yd=t({badge:a,member:a,awarded:m(),changed:m()}),w=o().int().safe().nonnegative(),Hn=b({scope:u(["member","project"]),period:te,limit:w}),Xt=b({key:a,qualifiedBy:a,balance:a,metrics:c(Ue).min(1).max(10).refine(e=>new Set(e).size===e.length,"Metrics must be unique"),baseline:s("historical"),maxAgeMs:o().int().positive().max(864e5).default(36e5),budgets:c(Hn).max(8).default([]).refine(e=>new Set(e.map(n=>n.scope+":"+n.period)).size===e.length,"Give each scope and period one budget")}),em=b({metrics:Q,baseline:Q}),tm=b({target:w,baseline:w}),Kn=b({actionId:a,code:r().min(1).max(1e6)}),xe=b({version:a,definition:Xt,publishedAt:w}),rm=b({rule:a,content:r().min(1).max(256),member:a.optional(),cursor:S.optional()}),Vn=b({id:a,day:r(),observation:a,qualification:a,earned:w,growth:w,paid:w,excluded:w,entry:a.nullable(),createdAt:w}),nm=b({rule:xe,account:b({member:a,earned:w,accounted:w,paid:w,excluded:w,pending:w,counters:Q,baseline:Q,observation:a.nullable(),nextSettlementAt:w.nullable(),reason:r().nullable()}).nullable(),items:c(Vn),nextCursor:S.nullable()}),am=b({code:r().min(1).max(1e6)}),im=Kn.extend({expectedVersion:a,previewHash:a}),Be=r().regex(/^(0|[1-9][0-9]*)$/),ts=b({rule:a,fromVersion:a,toVersion:a,previewHash:a,definition:Xt,boundary:s("available-eligible-observation"),settlement:s("deferred"),summary:b({knownAdmissions:w,accounts:w,uninitialized:w,pendingTransitions:w,earned:Be,paid:Be,excluded:Be,pending:Be})}),rs=xe.extend({previousVersion:a.nullable()}),om=t({items:c(t({version:a,definition:t({...Xt.shape,budgets:c(t(Hn.shape)).max(8).default([])}),publishedAt:w,previousVersion:a.nullable()})),nextCursor:S.nullable()}),sm=b({items:c(rs),next:w.nullable()}),cm=b({rule:a,before:I.number().int().positive().safe().optional()}),lm=b({current:xe.nullable(),requested:xe,items:c(b({from:a,to:a,baseline:Q,observedAt:w,settlement:Vn})),nextCursor:S.nullable()}),ns=Kn.omit({actionId:!0}),Wt=ns.extend({rule:xe}),dm=g("kind",[Wt.extend({kind:s("create")}),Wt.extend({kind:s("unchanged")}),Wt.extend({kind:s("change"),change:ts})]),k=o().int().safe(),A=k.nonnegative().max(864e13),Fn=g("kind",[t({kind:s("all-time")}).strict(),t({kind:s("fixed"),start:A,end:A}).strict().refine(e=>e.end>e.start,"Window end must follow its start"),t({kind:s("rolling"),days:k.min(1).max(3660)}).strict(),t({kind:s("calendar"),period:te.exclude(["lifetime"])})]),as={window:Fn.default({kind:"all-time"}),quests:c(a).min(1).max(100).optional()},Wn=g("kind",[t({kind:s("balance")}).strict(),t({kind:s("earned"),...as}).strict(),t({kind:s("net"),window:Fn.default({kind:"all-time"})}).strict()]).default({kind:"balance"}),is=f([ve,B]),Gn=t({ranks:lr([k.positive(),k.positive()]).refine(([e,n])=>n>=e,{message:"Prize rank range must end at or after it starts"}),rewards:c(is).min(1).max(20)}).strict(),Ke=r().regex(/^(0|[1-9]\d{0,77})$/,'Use a whole number of base units, such as "1000000"'),os=f([s("points"),t({code:r().trim().min(1).max(32),decimals:k.min(0).max(36)}).strict()]),Jn={amount:Ke.refine(e=>e!=="0",{message:"A pool must hold a positive amount"}),unit:os,ledger:a.optional(),minScore:k.optional()},ss=(e,n)=>{e.unit==="points"?(e.ledger||n.addIssue({code:"custom",message:"A points pool names the point ledger it pays into",path:["ledger"]}),/^\d+$/.test(e.amount)&&BigInt(e.amount)>he&&n.addIssue({code:"custom",message:`A points pool holds at most ${he} points`,path:["amount"]})):e.ledger!==void 0&&n.addIssue({code:"custom",message:"Only a points pool pays into a point ledger",path:["ledger"]})},cs=t(Jn).strict().superRefine(ss),ls=t({at:s("window-end"),ties:u(["shared","earliest"]),prizes:c(Gn).max(50),pool:cs.optional()}).strict().superRefine((e,n)=>{!e.prizes.length&&!e.pool&&n.addIssue({code:"custom",message:"A settlement awards rank prizes, a pool, or both",path:["prizes"]});for(let[i,l]of e.prizes.entries()){let d=l.rewards.map(Mt);new Set(d).size!==d.length&&n.addIssue({code:"custom",message:"A prize may grant each point ledger or tiered reward only once",path:["prizes",i,"rewards"]})}for(let i=1;i<e.prizes.length;i++){let l=e.prizes[i-1];e.prizes[i].ranks[0]<=l.ranks[1]&&n.addIssue({code:"custom",message:"Prize rank ranges must be ordered and must not overlap",path:["prizes",i,"ranks"]})}}),Xn=t({id:a,key:a.optional(),title:r().trim().min(1).max(120),balance:a,score:Wn,access:u(["participants","public"]).default("participants"),group:a.optional(),includeUnscored:m().optional(),settle:ls.optional()}).strict(),Yn=(e,n)=>{e.settle&&(e.score.kind==="balance"||!["fixed","calendar"].includes(e.score.window.kind))&&n.addIssue({code:"custom",message:"Leaderboard prizes require an earned or net score with a fixed or calendar window",path:["settle"]})},ds=Xn.superRefine(Yn),ms=j(ds),us=Xn.omit({id:!0}).extend({...re,score:Ae(nn,Wn),group:a.optional()}).strict().superRefine(Yn),mm=f([us,t({code:r().min(1).max(2e6)}).strict()]),zs=t({archivedAt:o().int().nonnegative().nullable().optional(),version:a,definition:ms,publishedAt:A,actor:r().nullable()}),um=t({limit:I.number().int().min(1).max(100).default(25),cursor:r().max(4096).optional()}).strict(),Gt=t({participant:a,member:a.optional(),name:r(),score:k,rank:k.positive(),profile:Ft.nullable()}),Ln=t({leaderboard:a,title:r(),version:a,calculation:u(["balance","earned","net"]),period:t({start:A.nullable(),end:A.nullable()}),calculatedAt:A,lastEntryAt:A.nullable(),total:k.nonnegative(),items:c(Gt),me:Gt.nullable(),nearby:c(Gt),nextCursor:r().nullable()}),zm=t({leaderboard:a,key:a.optional(),title:r(),profile:a,rank:k.positive().nullable(),score:k.nullable(),total:k.nonnegative()}),bm=b({board:a,cursor:S.optional()}),pm=t({leaderboard:a,period:t({start:A.nullable(),end:A.nullable()}),items:c(Vt),nextCursor:S.nullable()}),fm=t({published:zs,before:Ln.nullable(),after:Ln}),ea={actionId:a,member:a,balance:a,reason:r().trim().min(1).max(1e3)},He={...ea,effectiveAt:A.optional()},gm=g("kind",[t({...He,kind:s("award"),referralEligible:m().optional(),amount:k.positive()}).strict(),t({...He,kind:s("spend"),amount:k.positive()}).strict(),t({...He,kind:s("adjust"),amount:k.refine(e=>e!==0)}).strict(),t({...He,kind:s("set"),total:k.nonnegative(),expectedTotal:k.nonnegative(),classification:u(["earned","spend"])}).strict(),t({...ea,kind:s("reverse"),entry:a,amount:k.positive()}).strict()]),ta=t({id:a,completion:r().nullable(),member:a,balance:a,amount:k,kind:u(["award","spend","adjust","reverse"]),effectiveAt:A,receivedAt:A,quest:a.nullable(),original:a.nullable(),reason:r(),actor:r().nullable(),import:a.nullable().optional()}),hm=t({items:c(ta),nextCursor:S.nullable(),next:o().nullable()}),vm=t({entry:ta,total:k.nonnegative()}),ym=t({member:a,balance:a,total:k.nonnegative(),held:k.nonnegative()}),km=t({actionId:a,member:a,excluded:m(),reason:r().trim().min(1).max(1e3)}).strict(),jm=t({leaderboard:a,group:a,generated:m(),boundAt:A.nullable()}),Sm=t({actionId:a,group:a,reason:r().trim().min(1).max(1e3)}).strict(),xm=t({actionId:a,member:a,included:m(),reason:r().trim().min(1).max(1e3)}).strict(),bs=u(["pending","approved"]),ps=t({id:a,leaderboard:a,version:a,title:r(),period:t({start:A,end:A}),ties:u(["shared","earliest"]),status:bs,total:k.nonnegative(),winners:k.nonnegative(),createdAt:A,approvedAt:A.nullable(),approvedBy:r().nullable(),approvalReason:r().nullable()}),fs=t({member:a,score:k,rank:k.positive(),position:k.positive(),scoredAt:A,prizes:c(k.nonnegative()),completion:a.nullable(),revokedAt:A.nullable(),share:Ke.optional()}),gs=t({...Jn,allocated:Ke,unallocated:Ke}),hs=t({content:r(),member:a,observedAt:A.nullable()}),wm=ps.extend({prizes:c(Gn),excluded:c(a),unmeasured:c(hs).optional(),pool:gs.nullable().optional(),rows:c(fs)}),Am=t({actionId:a,reason:r().trim().min(1).max(500)}).strict(),Jt=f([ve,B]),P=o().int().safe().nonnegative(),ne=r().trim().min(1).max(1e3),Yt=t({id:a,key:a.optional(),title:r().trim().min(1).max(120),enabled:m().default(!0),qualification:g("kind",[t({kind:s("signup")}).strict(),t({kind:s("quest"),quest:a}).strict(),t({kind:s("external")}).strict()]),inviterGroup:a.optional(),rewards:t({inviter:c(Jt).max(10).default([]),invitee:c(Jt).max(10).default([])}).strict().default({inviter:[],invitee:[]}),milestones:c(t({id:a,count:P.min(1),rewards:c(Jt).min(1).max(10)}).strict()).max(30).default([]),bonuses:c(t({id:a,balance:a,basisPoints:P.min(1).max(1e4),quests:c(a).min(1).max(100).optional(),external:m().default(!1),durationDays:P.min(1).max(36500).optional(),maxPoints:P.min(1).optional()}).strict()).max(20).default([])}).strict().superRefine((e,n)=>{for(let i of[e.milestones,e.bonuses])new Set(i.map(l=>l.id)).size!==i.length&&n.addIssue({code:"custom",message:"Rule IDs must be unique"})}),vs=t(Yt.shape).omit({id:!0}).extend({...re,inviterGroup:a.optional()}).strict().superRefine((e,n)=>{for(let i of[e.milestones,e.bonuses])new Set(i.map(l=>l.id)).size!==i.length&&n.addIssue({code:"custom",message:"Rule keys must be unique"})}),Im=f([vs,t({code:r().min(1).max(2e6)}).strict()]),Om=t({archivedAt:o().int().nonnegative().nullable().optional(),version:a,definition:Yt,publishedAt:P,actor:r().nullable()}),qm=t({actionId:a,code:a}).strict(),Rm=t({actionId:a,suspended:m(),reason:ne}).strict(),Pm=t({actionId:a,qualified:m(),reason:ne}).strict(),Cm=t({actionId:a,reason:ne}).strict(),$m=g("kind",[t({kind:s("suspend"),actionId:a,member:a,suspended:m(),reason:ne}).strict(),t({kind:s("qualify"),actionId:a,member:a,program:a,qualified:m(),reason:ne}).strict(),t({kind:s("resolve-reward"),actionId:a,entitlement:a,reason:ne}).strict()]),ys=t({member:a,inviter:a,acceptedAt:P,suspended:m()}),ra=t({id:a,program:a,kind:u(["bonus","fixed","milestone"]),balance:a,earned:P,settled:P,outstanding:P}),Em=t({code:a,attributed:P,programs:c(t({definition:Yt,qualified:P,milestones:c(t({id:a,count:P,reached:m()}))})),accounts:c(ra)}),Tm=t({items:c(t({id:P,program:a,balance:a,amount:o().int().safe(),at:P,reason:r()})),nextCursor:S.nullable()}),Mm=t({relationships:c(ys),qualifications:c(t({member:a,program:a,qualified:m(),qualifiedAt:P})),accounts:c(ra.extend({member:a,invitee:r()})),reviews:c(t({entitlement:a,member:a,program:a,reason:r()})),nextCursor:S.nullable().default(null),next:P.nullable()}),Ve=o().int().safe().nonnegative(),na=ve.extend({amount:o().int().positive().max(he)}),ks=t({perMember:o().int().positive().max(1e4)}).strict(),aa=t({id:a,key:a.optional(),title:r().trim().min(1).max(120),price:na,reward:B,stock:Ve.max(1e6),limit:ks.default({perMember:1}),enabled:m().default(!0)}).strict(),ia=aa.omit({id:!0,title:!0,enabled:!0}).extend({...re,title:r().trim().min(1).max(120).optional()}).strict().transform(e=>({...e,title:e.title??e.reward.reward.title,enabled:!0})),Um=f([ia,t({code:r().min(1).max(2e6)}).strict()]),js=j(g("kind",[t({kind:s("available"),remaining:Ve}).strict(),t({kind:s("out-of-stock")}).strict(),t({kind:s("limit-reached")}).strict(),t({kind:s("paused")}).strict()])),_m=j(aa.extend({revision:o().int().positive(),available:Ve,redeemed:Ve,availability:js})),Dm=t({actionId:a}).strict(),Zn={id:a,offer:a,member:a,reservation:a,price:na,reward:B,entitlement:a,revision:o().int().positive(),redeemedAt:o().int().safe().nonnegative()},Ss=j(g("status",[t({...Zn,status:s("fulfilled")}).strict(),t({...Zn,status:s("canceled"),canceledAt:o().int().safe().nonnegative(),reason:r().min(1).max(500)}).strict()])),Lm=b({member:a.optional(),cursor:S.optional(),limit:I.number().int().min(1).max(100).optional()}),Zm=t({items:c(Ss),nextCursor:S.nullable()}),Nm=t({actionId:a,revision:o().int().positive(),enabled:m(),reason:r().trim().min(1).max(500)}).strict(),Qm=t({actionId:a,revision:o().int().positive(),reason:r().trim().min(1).max(500)}).strict();function Bm(e){return ge("offer",ia.parse(e))}export{a,Pr as b,xs as c,j as d,za as e,ba as f,ws as g,S as h,As as i,Is as j,Os as k,xt as l,$r as m,qs as n,Rs as o,Ps as p,Cs as q,Er as r,Tr as s,pa as t,$s as u,Es as v,fa as w,ga as x,ya as y,le as z,Ur as A,Ts as B,Ra as C,Ms as D,Us as E,$a as F,Ea as G,Ta as H,_s as I,Qr as J,Ds as K,Ma as L,Br as M,wt as N,Ls as O,pe as P,Zs as Q,fe as R,Ns as S,Hr as T,Ua as U,_a as V,Me as W,Kr as X,Da as Y,La as Z,Qs as _,Bs as $,V as aa,Hs as ba,Za as ca,Na as da,Qa as ea,Ba as fa,Fr as ga,Wr as ha,Ks as ia,Vs as ja,Fs as ka,Ha as la,Ka as ma,Gr as na,Va as oa,Ws as pa,Gs as qa,Js as ra,Jr as sa,Xs as ta,Ys as ua,ec as va,tc as wa,rc as xa,nc as ya,ac as za,ic as Aa,Fa as Ba,oc as Ca,sc as Da,cc as Ea,Wa as Fa,Yr as Ga,lc as Ha,Ue as Ia,Q as Ja,Ga as Ka,Ja as La,Xa as Ma,Ya as Na,en as Oa,ei as Pa,ti as Qa,dc as Ra,mc as Sa,uc as Ta,zc as Ua,ri as Va,tn as Wa,ue as Xa,ni as Ya,nn as Za,te as _a,bc as $a,pc as ab,fc as bb,ai as cb,ii as db,oi as eb,gc as fb,Re as gb,kr as hb,si as ib,ci as jb,hc as kb,li as lb,di as mb,mi as nb,ui as ob,vc as pb,yc as qb,kc as rb,zi as sb,bi as tb,pi as ub,jc as vb,Sr as wb,gi as xb,vi as yb,Pe as zb,ki as Ab,It as Bb,ji as Cb,Sc as Db,xc as Eb,Ot as Fb,vt as Gb,Si as Hb,wc as Ib,Ac as Jb,xi as Kb,wi as Lb,Ai as Mb,Ic as Nb,Ii as Ob,_e as Pb,qt as Qb,Oc as Rb,qc as Sb,on as Tb,Oi as Ub,qi as Vb,Rc as Wb,Pc as Xb,Cc as Yb,$c as Zb,Ec as _b,Tc as $b,Mc as ac,yt as bc,Ri as cc,Uc as dc,_c as ec,Dc as fc,Rt as gc,Lc as hc,Zc as ic,Pi as jc,$i as kc,sn as lc,cn as mc,Nc as nc,Qc as oc,Bc as pc,Ei as qc,dn as rc,Ti as sc,Ct as tc,mn as uc,Hc as vc,Kc as wc,un as xc,kt as yc,Mi as zc,Ui as Ac,Y as Bc,_i as Cc,Di as Dc,Vc as Ec,Li as Fc,Fc as Gc,Wc as Hc,Gc as Ic,re as Jc,Jc as Kc,$t as Lc,Ee as Mc,Xc as Nc,Ni as Oc,zn as Pc,Yc as Qc,Qi as Rc,el as Sc,tl as Tc,ge as Uc,rl as Vc,Bi as Wc,Ar as Xc,nl as Yc,Ki as Zc,al as _c,il as $c,ol as ad,sl as bd,cl as cd,Vi as dd,ll as ed,Fi as fd,dl as gd,hn as hd,vn as id,yn as jd,Wi as kd,Et as ld,ml as md,ul as nd,zl as od,ve as pd,Tt as qd,bl as rd,B as sd,Gi as td,pl as ud,Ji as vd,fl as wd,Xi as xd,St as yd,Mt as zd,kn as Ad,jn as Bd,gl as Cd,hl as Dd,Ir as Ed,Or as Fd,qr as Gd,Ut as Hd,vl as Id,eo as Jd,to as Kd,_t as Ld,ze as Md,ro as Nd,no as Od,ao as Pd,Te as Qd,Sn as Rd,io as Sd,oo as Td,so as Ud,xn as Vd,co as Wd,lo as Xd,yl as Yd,kl as Zd,mo as _d,uo as $d,jl as ae,zo as be,bo as ce,De as de,Sl as ee,xl as fe,Le as ge,wl as he,go as ie,Al as je,Il as ke,ho as le,vo as me,be as ne,yo as oe,Ol as pe,ql as qe,Rl as re,wn as se,Pl as te,An as ue,Cl as ve,$l as we,El as xe,Tl as ye,So as ze,xo as Ae,wo as Be,Io as Ce,Ml as De,Ul as Ee,_l as Fe,Dl as Ge,Ll as He,Zl as Ie,Nl as Je,Ql as Ke,Bl as Le,Oo as Me,Hl as Ne,Kl as Oe,Vl as Pe,Fl as Qe,Wl as Re,Gl as Se,Jl as Te,Rn as Ue,$o as Ve,Mo as We,Bt as Xe,En as Ye,ld as Ze,dd as _e,md as $e,ud as af,zd as bf,bd as cf,Uo as df,fd as ef,gd as ff,Kt as gf,yd as hf,Do as if,kd as jf,Lo as kf,jd as lf,Zo as mf,No as nf,Sd as of,xd as pf,Vt as qf,wd as rf,Ad as sf,Id as tf,Od as uf,Bo as vf,qd as wf,Ho as xf,Ko as yf,Rd as zf,Pd as Af,Cd as Bf,$d as Cf,Ed as Df,Td as Ef,_n as Ff,Qe as Gf,Un as Hf,Vo as If,Ht as Jf,Fo as Kf,Ft as Lf,Go as Mf,Md as Nf,Jo as Of,Ud as Pf,Xo as Qf,_d as Rf,Dd as Sf,Yo as Tf,Ld as Uf,Zd as Vf,Nd as Wf,Qd as Xf,Bd as Yf,Nn as Zf,Qn as _f,Bn as $f,Fd as ag,Wd as bg,Gd as cg,es as dg,Jd as eg,Xd as fg,Yd as gg,Hn as hg,Xt as ig,em as jg,tm as kg,Kn as lg,xe as mg,rm as ng,Vn as og,nm as pg,am as qg,im as rg,ts as sg,om as tg,sm as ug,cm as vg,lm as wg,ns as xg,dm as yg,Fn as zg,is as Ag,Gn as Bg,Ke as Cg,os as Dg,cs as Eg,ls as Fg,ds as Gg,ms as Hg,us as Ig,mm as Jg,zs as Kg,um as Lg,Gt as Mg,Ln as Ng,zm as Og,bm as Pg,pm as Qg,fm as Rg,gm as Sg,ta as Tg,hm as Ug,vm as Vg,ym as Wg,km as Xg,jm as Yg,Sm as Zg,xm as _g,bs as $g,ps as ah,fs as bh,gs as ch,hs as dh,wm as eh,Am as fh,Yt as gh,vs as hh,Im as ih,Om as jh,qm as kh,Rm as lh,Pm as mh,Cm as nh,$m as oh,ys as ph,ra as qh,Em as rh,Tm as sh,Mm as th,na as uh,ks as vh,aa as wh,ia as xh,Um as yh,js as zh,_m as Ah,Dm as Bh,Ss as Ch,Lm as Dh,Zm as Eh,Nm as Fh,Qm as Gh,Bm as Hh};
|