@domino-sdk/relay 1.67.0 → 1.69.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 +65 -0
- package/dist/{accounts-C2O8mpB8.d.ts → accounts-DD4gAOCe.d.ts} +232 -3
- package/dist/{action-9Xl0StBg.d.ts → action-BDFKqGlH.d.ts} +3 -2
- package/dist/{attempt-captures-ClHAoo_n.d.ts → attempt-captures-CbuCmthd.d.ts} +11 -2
- package/dist/authoring.d.ts +534 -48
- package/dist/authoring.js +192 -29
- package/dist/{automatic-outcomes-BEnPn4Uh.d.ts → automatic-outcomes-DE3vfi8g.d.ts} +11 -3
- package/dist/avatar.d.ts +2 -1
- package/dist/browser.d.ts +15 -13
- package/dist/browser.js +12 -13
- package/dist/{capability-error-CuI_F7yM.d.ts → capability-error-db7kO8-P.d.ts} +2 -1
- package/dist/{catalog-CbiftcxQ.d.ts → catalog-Cf3fHDNn.d.ts} +69 -3
- package/dist/{chunk-5DZNMLDM.js → chunk-2A3BJ262.js} +2 -2
- package/dist/{chunk-BQXRCJ3N.js → chunk-5RLIPTL7.js} +1 -1
- package/dist/{chunk-MVQQDPQX.js → chunk-AZDZEQFK.js} +14 -2
- package/dist/{chunk-JK3XV2CR.js → chunk-BRROI4CH.js} +50 -8
- package/dist/{chunk-P33ZAJMS.js → chunk-CQVKOD3B.js} +1266 -677
- package/dist/{chunk-QYC3CZVD.js → chunk-CZ23KRVK.js} +2 -2
- package/dist/{chunk-X3FMVRMM.js → chunk-DIXYVGXO.js} +1 -1
- package/dist/{chunk-RDUSFUXX.js → chunk-GEVARKEV.js} +9 -1
- package/dist/{chunk-2HHZV7U3.js → chunk-LDO5GP7G.js} +1 -1
- package/dist/{chunk-Z2Z5DBNW.js → chunk-LGGD7S5T.js} +45 -9
- package/dist/{chunk-U66GUVSG.js → chunk-LZXDYSUH.js} +2 -0
- package/dist/{chunk-NRMQVK2W.js → chunk-ME2KUAVJ.js} +1 -1
- package/dist/{chunk-KUNPCDN6.js → chunk-ODJGTFPY.js} +16 -9
- package/dist/{chunk-DSJ46QLB.js → chunk-PO2ZDY27.js} +1 -1
- package/dist/{chunk-RWR2LOPA.js → chunk-RKTMSTT7.js} +2 -2
- package/dist/{chunk-5SBA6X5X.js → chunk-SWLW4VN3.js} +2 -2
- package/dist/{chunk-BMJHFWVT.js → chunk-TCREFRPK.js} +10 -43
- package/dist/{chunk-Q5QVAF7R.js → chunk-UGM6DUB2.js} +42 -25
- package/dist/chunk-VAGGGB6B.js +87 -0
- package/dist/{chunk-FGXLXENM.js → chunk-VNEJH4NT.js} +47 -3
- package/dist/chunk-WNEQEDMU.js +427 -0
- package/dist/{chunk-Q6KTTVOI.js → chunk-WVK3G2J2.js} +1 -1
- package/dist/{client-CZPewB9h.d.ts → client-6eSYOl8h.d.ts} +159 -11
- package/dist/{dashboards-jGPM3AxF.d.ts → dashboards-DCOAXL54.d.ts} +6 -5
- package/dist/{deployments-BVFd7ddA.d.ts → deployments-BIfdCMd5.d.ts} +911 -309
- package/dist/{host-environment-FN4zg3hw.d.ts → host-environment-DUw5-Cvj.d.ts} +2 -1
- package/dist/{identity-integration-W1Vo3Ql9.d.ts → identity-integration-BlfOn8rc.d.ts} +3 -2
- package/dist/index.d.ts +16 -15
- package/dist/index.js +10 -10
- package/dist/internal.d.ts +155 -17
- package/dist/internal.js +266 -19
- package/dist/{limits-C4RzrOV4.d.ts → limits-Ctaeq23J.d.ts} +8 -2
- package/dist/{offers-BpYenB9i.d.ts → offers-COqHGbHm.d.ts} +4 -3
- package/dist/{participant-activity-DXRq4s6K.d.ts → participant-activity-BznrcePT.d.ts} +2 -1
- package/dist/{participant-rewards-BcWkBRn_.d.ts → participant-rewards-s5Gn23qb.d.ts} +23 -1
- package/dist/portal-proxy.d.ts +7 -4
- package/dist/portal-proxy.js +14 -18
- package/dist/profiles-CLDKZVFx.d.ts +370 -0
- package/dist/react/index.d.ts +71 -30
- package/dist/react/index.js +12 -13
- package/dist/{request-error-D_dUPLwo.d.ts → request-error-C24SY7n9.d.ts} +2 -1
- package/dist/{reward-deliveries-BOWpMytr.d.ts → reward-deliveries-DFhYGJdx.d.ts} +3 -2
- package/dist/runtime/authoring.js +1 -1
- package/dist/runtime/chunks/HKAI5OQA.js +1 -0
- package/dist/runtime/manifest.json +3 -3
- package/dist/runtime/schema.js +1 -1
- package/dist/schema.d.ts +556 -180
- package/dist/schema.js +70 -8
- package/dist/server/index.d.ts +15 -14
- package/dist/server/index.js +2053 -893
- package/dist/{sign-in-providers-BRYVOSlG.d.ts → sign-in-providers-C97mRNbG.d.ts} +4 -3
- package/dist/solana.d.ts +287 -0
- package/dist/solana.js +699 -0
- package/dist/{streaks-0YuipsUQ.d.ts → streaks-MAqKHbHC.d.ts} +2 -1
- package/dist/{submission-input-C152xIdn.d.ts → submission-input-BD7nORuh.d.ts} +4 -3
- package/dist/{telegram-browser-657QqiQl.d.ts → telegram-browser-gRMgGs7B.d.ts} +8 -109
- package/dist/telegram.d.ts +14 -12
- package/dist/telegram.js +2 -2
- package/dist/testing.d.ts +99 -18
- package/dist/testing.js +101 -11
- package/dist/{tracker-data-BqY-9Vu-.d.ts → tracker-data-DQgX3FIc.d.ts} +493 -1
- package/dist/{transport-CthYgZXK.d.ts → transport-BLU8jrhg.d.ts} +7340 -2134
- package/dist/vite.d.ts +2 -1
- package/dist/{wallet-Btng186v.d.ts → wallet-CPAjrW4k.d.ts} +339 -308
- package/dist/wallet-browser-BzPt_Qb5.d.ts +107 -0
- package/package.json +21 -3
- package/dist/chunk-UWUS4OOV.js +0 -59
- package/dist/chunk-UYVJZR33.js +0 -34
- package/dist/runtime/chunks/C2MGLQXC.js +0 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { C as CosmosChain, a as CosmosNetwork, g as WalletSigner, e as WalletSignInNetwork } from './wallet-CPAjrW4k.js';
|
|
2
|
+
|
|
3
|
+
/** An EIP-1193 provider, such as `window.ethereum` or an EIP-6963 announcement's provider. */
|
|
4
|
+
type Eip1193Provider = {
|
|
5
|
+
request(args: {
|
|
6
|
+
method: string;
|
|
7
|
+
params?: unknown[] | object;
|
|
8
|
+
}): Promise<unknown>;
|
|
9
|
+
/** Subscribes to a provider event such as `accountsChanged`; wallets without events leave it out. */
|
|
10
|
+
on?(event: string, listener: (...args: unknown[]) => void): unknown;
|
|
11
|
+
removeListener?(event: string, listener: (...args: unknown[]) => void): unknown;
|
|
12
|
+
};
|
|
13
|
+
/** The legacy injected Solana shape Phantom, Solflare and Backpack expose. */
|
|
14
|
+
type SolanaInjectedProvider = {
|
|
15
|
+
connect(): Promise<unknown>;
|
|
16
|
+
publicKey?: {
|
|
17
|
+
toBase58(): string;
|
|
18
|
+
} | null;
|
|
19
|
+
signMessage(message: Uint8Array, display?: "utf8"): Promise<{
|
|
20
|
+
signature: Uint8Array;
|
|
21
|
+
} | Uint8Array>;
|
|
22
|
+
};
|
|
23
|
+
/** The part of a Wallet Standard account Relay uses. */
|
|
24
|
+
type StandardWalletAccount = {
|
|
25
|
+
readonly address: string;
|
|
26
|
+
readonly chains: readonly string[];
|
|
27
|
+
};
|
|
28
|
+
/** The part of a Wallet Standard wallet Relay uses; any conforming wallet object fits. */
|
|
29
|
+
type StandardWallet = {
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly icon?: string;
|
|
32
|
+
readonly chains: readonly string[];
|
|
33
|
+
readonly accounts: readonly StandardWalletAccount[];
|
|
34
|
+
readonly features: Readonly<Record<string, unknown>>;
|
|
35
|
+
};
|
|
36
|
+
/** Keplr's API, which Leap and Cosmostation also implement. */
|
|
37
|
+
type KeplrLike = {
|
|
38
|
+
enable(chainId: string | string[]): Promise<void>;
|
|
39
|
+
getKey(chainId: string): Promise<{
|
|
40
|
+
bech32Address: string;
|
|
41
|
+
}>;
|
|
42
|
+
signArbitrary(chainId: string, signer: string, data: string): Promise<{
|
|
43
|
+
signature: string;
|
|
44
|
+
pub_key: {
|
|
45
|
+
type: string;
|
|
46
|
+
value: string;
|
|
47
|
+
};
|
|
48
|
+
}>;
|
|
49
|
+
/** Adds a chain the wallet does not know, after the user approves it. */
|
|
50
|
+
experimentalSuggestChain?(chainInfo: CosmosChain["chainInfo"]): Promise<void>;
|
|
51
|
+
};
|
|
52
|
+
/** A wallet found in the page, ready to pass to `relay.wallets.link`. */
|
|
53
|
+
type DiscoveredWallet = {
|
|
54
|
+
id: string;
|
|
55
|
+
name: string;
|
|
56
|
+
icon?: string;
|
|
57
|
+
signer: WalletSigner;
|
|
58
|
+
};
|
|
59
|
+
/** Signs with an EIP-1193 provider through `personal_sign`. */
|
|
60
|
+
declare function evmSigner(provider: Eip1193Provider, info?: {
|
|
61
|
+
name?: string;
|
|
62
|
+
}): WalletSigner;
|
|
63
|
+
/** Signs with a legacy injected Solana provider, such as `window.phantom.solana`. */
|
|
64
|
+
declare function solanaSigner(provider: SolanaInjectedProvider, info?: {
|
|
65
|
+
name?: string;
|
|
66
|
+
}): WalletSigner;
|
|
67
|
+
/** Signs with a Wallet Standard wallet's `solana:signMessage` feature. */
|
|
68
|
+
declare function walletStandardSolanaSigner(wallet: StandardWallet): WalletSigner;
|
|
69
|
+
/**
|
|
70
|
+
* Signs an ADR-36 message with Keplr or a wallet that implements its API, on the app's chain:
|
|
71
|
+
* `{ chainId, chainInfo? }` or `"cosmos:<chain ID>"`. When the wallet does not know the chain and
|
|
72
|
+
* `chainInfo` is given, it suggests the chain to the wallet (`experimentalSuggestChain`) and tries
|
|
73
|
+
* again; without `chainInfo`, or with a wallet that cannot add chains, it throws an error that
|
|
74
|
+
* names the chain. Other failures, such as a rejected request, pass through.
|
|
75
|
+
*/
|
|
76
|
+
declare function cosmosSigner(provider: KeplrLike, chain: CosmosChain | CosmosNetwork, info?: {
|
|
77
|
+
name?: string;
|
|
78
|
+
}): WalletSigner;
|
|
79
|
+
/** EIP-6963 wallets, or `window.ethereum` when none announce themselves within `timeoutMs`. */
|
|
80
|
+
declare function discoverEvmWallets(timeoutMs?: number): Promise<DiscoveredWallet[]>;
|
|
81
|
+
/** Wallet Standard wallets that can sign Solana messages, then legacy injected providers. */
|
|
82
|
+
declare function discoverSolanaWallets(): DiscoveredWallet[];
|
|
83
|
+
/**
|
|
84
|
+
* Keplr, Leap and Cosmostation, each signing on the app's chain (see `cosmosSigner`). IDs end with
|
|
85
|
+
* the chain ID.
|
|
86
|
+
*/
|
|
87
|
+
declare function discoverCosmosWallets(chain: CosmosChain | CosmosNetwork): DiscoveredWallet[];
|
|
88
|
+
/**
|
|
89
|
+
* The Cosmos SDK chains an app offers wallets on: one chain or several, each as
|
|
90
|
+
* `{ chainId, chainInfo? }` or `"cosmos:<chain ID>"`. Relay has no chain list of its own.
|
|
91
|
+
*/
|
|
92
|
+
type CosmosChains = CosmosChain | CosmosNetwork | readonly (CosmosChain | CosmosNetwork)[];
|
|
93
|
+
/** The chains in `CosmosChains`, as a list. */
|
|
94
|
+
declare function cosmosChainList(chains: CosmosChains | undefined): (CosmosChain | CosmosNetwork)[];
|
|
95
|
+
/** An installed wallet that can sign in on one of the project's enabled wallet families. */
|
|
96
|
+
type SignInWallet = DiscoveredWallet & {
|
|
97
|
+
network: WalletSignInNetwork;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* The wallets installed in this browser that can sign in with `families`: EVM wallets first, then
|
|
101
|
+
* Solana wallets, then Cosmos wallets once per chain in `cosmos`. Without `cosmos` there are no
|
|
102
|
+
* Cosmos wallets. Empty during SSR.
|
|
103
|
+
*/
|
|
104
|
+
declare function discoverSignInWallets(families: readonly WalletSignInNetwork[], cosmos?: CosmosChains): Promise<SignInWallet[]>;
|
|
105
|
+
|
|
106
|
+
export { cosmosChainList as d, cosmosSigner as e, discoverCosmosWallets as f, discoverEvmWallets as g, discoverSignInWallets as h, discoverSolanaWallets as i, evmSigner as j, solanaSigner as s, walletStandardSolanaSigner as w };
|
|
107
|
+
export type { CosmosChains as C, DiscoveredWallet as D, Eip1193Provider as E, KeplrLike as K, SignInWallet as S, SolanaInjectedProvider as a, StandardWallet as b, StandardWalletAccount as c };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domino-sdk/relay",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.69.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -54,6 +54,10 @@
|
|
|
54
54
|
"./telegram": {
|
|
55
55
|
"types": "./dist/telegram.d.ts",
|
|
56
56
|
"default": "./dist/telegram.js"
|
|
57
|
+
},
|
|
58
|
+
"./solana": {
|
|
59
|
+
"types": "./dist/solana.d.ts",
|
|
60
|
+
"default": "./dist/solana.js"
|
|
57
61
|
}
|
|
58
62
|
},
|
|
59
63
|
"sideEffects": false,
|
|
@@ -63,13 +67,22 @@
|
|
|
63
67
|
"@noble/curves": "2.4.0",
|
|
64
68
|
"@noble/hashes": "2.4.0",
|
|
65
69
|
"croner": "10.0.1",
|
|
70
|
+
"qr": "0.7.2",
|
|
66
71
|
"zod": "4.6.5"
|
|
67
72
|
},
|
|
68
73
|
"peerDependencies": {
|
|
74
|
+
"@solana-program/token-2022": "^0.20.0",
|
|
75
|
+
"@solana/kit": "^7.0.0 || ^8.0.0",
|
|
69
76
|
"esbuild": ">=0.25.0 <1",
|
|
70
77
|
"react": "^19.0.0"
|
|
71
78
|
},
|
|
72
79
|
"peerDependenciesMeta": {
|
|
80
|
+
"@solana-program/token-2022": {
|
|
81
|
+
"optional": true
|
|
82
|
+
},
|
|
83
|
+
"@solana/kit": {
|
|
84
|
+
"optional": true
|
|
85
|
+
},
|
|
73
86
|
"esbuild": {
|
|
74
87
|
"optional": true
|
|
75
88
|
},
|
|
@@ -78,11 +91,16 @@
|
|
|
78
91
|
}
|
|
79
92
|
},
|
|
80
93
|
"devDependencies": {
|
|
94
|
+
"@solana-program/token-2022": "0.20.0",
|
|
95
|
+
"@solana/kit": "8.6.0",
|
|
81
96
|
"@types/react": "19.3.0",
|
|
82
97
|
"esbuild": "0.25.12",
|
|
83
98
|
"jsdom": "30.0.1",
|
|
84
99
|
"react": "19.3.0",
|
|
85
|
-
"react-dom": "19.3.0"
|
|
100
|
+
"react-dom": "19.3.0",
|
|
101
|
+
"rollup": "4.63.3",
|
|
102
|
+
"rollup-plugin-dts": "6.5.1",
|
|
103
|
+
"typescript": "6.0.2"
|
|
86
104
|
},
|
|
87
105
|
"license": "UNLICENSED",
|
|
88
106
|
"repository": {
|
|
@@ -105,6 +123,6 @@
|
|
|
105
123
|
"description": "SDK for authoring quests and integrating Domino Relay",
|
|
106
124
|
"scripts": {
|
|
107
125
|
"typecheck": "tsc --noEmit",
|
|
108
|
-
"build": "node --max-old-space-size=4096
|
|
126
|
+
"build": "tsup && node --max-old-space-size=4096 scripts/build-declarations.mjs && node scripts/build-runtime.mjs"
|
|
109
127
|
}
|
|
110
128
|
}
|
package/dist/chunk-UWUS4OOV.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// src/base58.ts
|
|
2
|
-
var alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
3
|
-
function base58(bytes) {
|
|
4
|
-
let zeros = 0;
|
|
5
|
-
while (zeros < bytes.length && bytes[zeros] === 0) {
|
|
6
|
-
zeros++;
|
|
7
|
-
}
|
|
8
|
-
const digits = [];
|
|
9
|
-
for (let index = zeros; index < bytes.length; index++) {
|
|
10
|
-
let carry = bytes[index];
|
|
11
|
-
for (let digit = 0; digit < digits.length; digit++) {
|
|
12
|
-
carry += digits[digit] * 256;
|
|
13
|
-
digits[digit] = carry % 58;
|
|
14
|
-
carry = Math.floor(carry / 58);
|
|
15
|
-
}
|
|
16
|
-
while (carry > 0) {
|
|
17
|
-
digits.push(carry % 58);
|
|
18
|
-
carry = Math.floor(carry / 58);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
let result = "1".repeat(zeros);
|
|
22
|
-
for (let digit = digits.length - 1; digit >= 0; digit--) {
|
|
23
|
-
result += alphabet[digits[digit]];
|
|
24
|
-
}
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
function base58Bytes(value, length) {
|
|
28
|
-
if (value.length > Math.ceil(length * Math.log(256) / Math.log(58))) {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
let zeros = 0;
|
|
32
|
-
while (zeros < value.length && value[zeros] === "1") {
|
|
33
|
-
zeros++;
|
|
34
|
-
}
|
|
35
|
-
const bytes = [];
|
|
36
|
-
for (let index = zeros; index < value.length; index++) {
|
|
37
|
-
let carry = alphabet.indexOf(value[index]);
|
|
38
|
-
if (carry < 0) {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
for (let byte = 0; byte < bytes.length; byte++) {
|
|
42
|
-
carry += bytes[byte] * 58;
|
|
43
|
-
bytes[byte] = carry & 255;
|
|
44
|
-
carry >>= 8;
|
|
45
|
-
}
|
|
46
|
-
while (carry > 0) {
|
|
47
|
-
bytes.push(carry & 255);
|
|
48
|
-
carry >>= 8;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const decoded = new Uint8Array(zeros + bytes.length);
|
|
52
|
-
decoded.set(bytes.reverse(), zeros);
|
|
53
|
-
return decoded.length === length && base58(decoded) === value ? decoded : null;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export {
|
|
57
|
-
base58,
|
|
58
|
-
base58Bytes
|
|
59
|
-
};
|
package/dist/chunk-UYVJZR33.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// src/host-environment.ts
|
|
2
|
-
import * as z from "zod";
|
|
3
|
-
var hostEnvironmentPath = "/__domino/environment";
|
|
4
|
-
var hostEnvironmentSchema = /* @__PURE__ */ (() => z.object({
|
|
5
|
-
environment: z.enum(["test", "live"]),
|
|
6
|
-
kind: z.enum(["staging", "preview", "live"])
|
|
7
|
-
}))();
|
|
8
|
-
var pending;
|
|
9
|
-
async function readHostEnvironment() {
|
|
10
|
-
try {
|
|
11
|
-
const response = await fetch(hostEnvironmentPath, {
|
|
12
|
-
headers: { Accept: "application/json" }
|
|
13
|
-
});
|
|
14
|
-
if (response.status !== 200) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
const parsed = hostEnvironmentSchema.safeParse(await response.json());
|
|
18
|
-
return parsed.success ? parsed.data : null;
|
|
19
|
-
} catch {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function getHostEnvironment() {
|
|
24
|
-
if (!globalThis.location) {
|
|
25
|
-
return Promise.resolve(null);
|
|
26
|
-
}
|
|
27
|
-
return pending ??= readHostEnvironment();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export {
|
|
31
|
-
hostEnvironmentPath,
|
|
32
|
-
hostEnvironmentSchema,
|
|
33
|
-
getHostEnvironment
|
|
34
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Bb as er,Cb as o,Dc as He,Dd as M,Ec as z,Ed as xe,Ga as Xt,Gc as Ge,Hc as s,Jd as ir,Kb as m,Od as q,Vb as ae,Zb as ie,_b as tr,b as Gt,ca as Jt,d as K,dd as Je,ec as Qe,fc as l,hc as Se,ia as Yt,ic as r,jc as p,kc as oe,lc as Ke,mc as g,md as nr,nd as Ye,od as ar,qc as v,rc as Ve,sa as ne,tc as We,uc as rr,va as t,vc as Fe,vd as se,wc as y}from"./EWU4OKSY.js";var ha=Symbol.for("@domino-sdk/relay.RequestError");var ya=class extends Error{name="RequestError";[ha]=!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}};function ka(e){return[...new Set(e.map(n=>n.path.length?n.path.map(String).join(".")+": "+n.message:n.message))].join("; ")}function we(e,n,i){let c=n.safeParse(i);if(c.success)return c.data;let d=typeof i=="object"&&i!==null&&"key"in i&&typeof i.key=="string"?` "${i.key}"`:"";throw c.error.message=`${e}${d} is invalid: ${ka(c.error.issues)}`,c.error}var or={NotSignedIn:"not-signed-in",StaleSession:"stale-session",Unauthenticated:"unauthenticated",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",MemberBanned:"member-banned",ProfileLocked:"profile-locked",InvitationNotFound:"invitation-not-found",InvalidCode:"invalid-code",CodeExpired:"code-expired",ChallengeExpired:"challenge-expired",RateLimited:"rate-limited"},ja=Symbol.for("@domino-sdk/relay.RelayError");var Sa=class extends ya{name="RelayError";[ja]=!0;window;missing;retryAt;constructor(e,n){super(e,n),this.window=n.window,this.missing=n.missing??[],this.retryAt=n.retryAt}};function sr(e,n,i={}){return new Sa(e,{...i,kind:"client",code:n})}var Xe="use 1\u2013100 letters, digits, _ or - (no :, . or spaces)",a=t().min(1,Xe).max(100,Xe).regex(/^[a-zA-Z0-9_-]+$/,Xe),Rr=r({name:t().trim().min(1).max(120),description:t().trim().max(1e3).default(""),image:t().url().max(2048)}).strict(),Pr=Rr.extend({key:a}).strict(),St=Rr.extend({id:a,key:a.nullable()}).strip(),zc=St.extend({archivedAt:o().int().nonnegative().nullable()}),bc=Pr.extend({actionId:a}).strict(),pc=g([Pr,r({code:t().min(1).max(2e6)}).strict()]),xa=r({badge:St,awardedAt:o().int().nonnegative()}),gc=r({items:l(xa)}),fc=r({items:l(St)}),vc=r({actionId:a,reason:t().trim().min(1).max(1e3)}).strict(),hc=r({badge:a,member:a,awarded:m(),changed:m()}),wa=Symbol("domino.response.tolerant-v1");function Cr(e){return Object.assign(e,{[wa]:!0})}var et=new WeakMap;function yc(e){let n=i=>{let c={};for(let[d,u]of Object.entries(e)){let b=f=>(Object.defineProperty(c,d,{value:f,writable:!0,enumerable:!0,configurable:!0}),f);Object.defineProperty(c,d,{get:()=>b(i(u())),set:b,enumerable:!0,configurable:!0})}return c};return{known:n($r),tolerant:n(Er)}}function k(e){let n=et.get(e);if(n)return n;let i=Object.create(Object.getPrototypeOf(e._zod.def),Object.getOwnPropertyDescriptors(e._zod.def));if(e instanceof Se){let d;Object.defineProperty(i,"shape",{get:()=>d??=Object.fromEntries(Object.entries(e.shape).map(([u,b])=>[u,k(b)])),configurable:!0,enumerable:!0}),Object.assign(i,{catchall:e._zod.def.catchall instanceof tr||!e._zod.def.catchall?void 0:k(e._zod.def.catchall)})}else e instanceof er?Object.assign(i,{checks:e._zod.def.checks?.filter(d=>{let u=d._zod.def;return u.check!=="less_than"||!("value"in u)||u.value===Number.MAX_SAFE_INTEGER||u.value===864e13})}):e instanceof Qe?Object.assign(i,{element:k(e.element),checks:[]}):e instanceof Ke?Object.assign(i,{options:e.options.map(k)}):e instanceof We?Object.assign(i,{items:e._zod.def.items.map(k),rest:e._zod.def.rest?k(e._zod.def.rest):null}):e instanceof Ve?Object.assign(i,{left:k(e._zod.def.left),right:k(e._zod.def.right)}):e instanceof Ye?Object.assign(i,{getter:()=>k(e._zod.def.getter())}):e instanceof Fe?Object.assign(i,{valueType:k(e.valueType)}):e instanceof Je?Object.assign(i,{in:k(e.in),out:k(e.out)}):"innerType"in i&&i.innerType instanceof ne&&Object.assign(i,{innerType:k(i.innerType)});let c=Gt(e,i);return et.set(e,c),et.set(c,c),c}function $r(e){return k(e)}function Tr(e){if(e instanceof Se)return e.shape;if("innerType"in e._zod.def&&e._zod.def.innerType instanceof ne)return Tr(e._zod.def.innerType)}function lt(e){if(e instanceof Ge)return[...e.values];if(e instanceof He)return e.options;if("innerType"in e._zod.def&&e._zod.def.innerType instanceof ne)return lt(e._zod.def.innerType)}function U(e,n){if(e instanceof Ge)return typeof n=="string"&&[...e.values].every(i=>typeof i=="string")&&!e.values.has(n);if(e instanceof He)return typeof n=="string"&&!e.options.includes(n);if(e instanceof Qe&&Array.isArray(n))return n.some(i=>U(e.element,i));if(e instanceof We&&Array.isArray(n))return n.some((i,c)=>{let d=e._zod.def.items[c]??e._zod.def.rest;return d?U(d,i):!1});if(e instanceof Ve)return U(e._zod.def.left,n)||U(e._zod.def.right,n);if(e instanceof Ye)return U(e._zod.def.getter(),n);if(e instanceof Fe&&n!==null&&typeof n=="object"&&!Array.isArray(n))return Object.entries(n).some(([i,c])=>U(e.keyType,i)||U(e.valueType,c));if(e instanceof Ke){let i=[...e.options];if(typeof n=="string"){let c=i.flatMap(d=>lt(d)??[]);if(c.some(d=>typeof d=="string")&&!c.includes(n))return!0}if(n!==null&&typeof n=="object"&&!Array.isArray(n)){let c=y(t(),ie()).parse(n),d=["kind","status","provider","input","type","mode"];for(let u of d){if(typeof c[u]!="string")continue;let b=i.map(j=>{let P=Tr(j)?.[u];return P?lt(P):void 0});if(b.some(j=>!j))continue;let f=i.filter((j,P)=>b[P]?.includes(c[u]));if(!f.length)return!0;i=f}}return i.every(c=>U(c,n))}if(e instanceof Se&&n!==null&&typeof n=="object"&&!Array.isArray(n)){let i=y(t(),ie()).parse(n);return Object.entries(e.shape).some(([c,d])=>U(d,i[c]))||Object.entries(i).some(([c,d])=>!(c in e.shape)&&!!e._zod.def.catchall&&U(e._zod.def.catchall,d))}if(e instanceof Je){if(U(e.in,n))return!0;let i=Yt(e.in,n);return i.success&&U(e.out,i.data)}return"innerType"in e._zod.def&&e._zod.def.innerType instanceof ne?U(e._zod.def.innerType,n):!1}function Er(e){return Cr(M().transform((n,i)=>{let c=$r(e),d=c.safeParse(n);if(d.success)return{kind:"supported",value:d.data};if(U(c,n))return{kind:"unsupported",raw:n};for(let u of d.error.issues)i.addIssue({...u});return K}))}function kc(e){return Cr(l(Er(e)).transform(n=>({items:n,unsupportedCount:n.filter(i=>i.kind==="unsupported").length})))}var w=t().min(1).max(4096);var jc=p({cursor:w.optional()});async function*Sc(e){let n;do{let i=await e(n);yield*i.items,n=i.nextCursor??void 0}while(n!==void 0)}var xc=p({cursor:w.optional(),limit:q.number().int().min(1).max(100).default(50)}),xt=z(["google","apple","x","discord"]),Aa=r({provider:xt,configured:m(),status:z(["disconnected","connected","reconnect"]),subject:t().nullable(),revision:o().int().nonnegative()}),wc={Google:"google",Apple:"apple",X:"x",Discord:"discord",Telegram:"telegram"},Mr=t(),Ac=t().regex(/^[a-z][a-z0-9-]{0,63}$/,"Name a sign-in provider, such as google"),Ic={Disconnected:"disconnected",Connected:"connected",Reconnect:"reconnect"},Ia=t(),Oc=r({provider:Mr,configured:m()}),qc=r({provider:Mr,configured:m(),status:Ia,subject:t().nullable(),revision:o().int().nonnegative()}),Rc=r({}).strict(),Pc=r({channelId:t().regex(/^[0-9]{1,20}$/),messageId:t().regex(/^[0-9]{1,20}$/)}).strict(),Cc=r({userId:t().regex(/^[0-9]{1,20}$/).nullable().default(null),nickname:t().nullable().default(null),displayName:t().nullable().default(null),boostingSince:t().datetime({offset:!0}).nullable().default(null),roles:l(t().regex(/^[0-9]{1,20}$/)),joinedAt:t().datetime({offset:!0}).nullable(),pending:m()}),Ur="telegram-reactions",Dr="telegram-messages",Oa="youtube-shorts",qa="tiktok-videos",Zr="wallet-balances",$c=r({login:m(),miniApp:m()}),Tc=Aa.extend({provider:s("telegram")}),Ra=t().min(1,"Pass the Mini App's Telegram.WebApp.initData").max(8192),Ec=r({initData:Ra,mode:z(["sign-in","connect"])}).strict(),_r=t().regex(/^-?[1-9][0-9]{0,19}$/,"Use the chat's numeric ID, such as -1001234567890"),Pa=r({id:_r,type:t(),title:t(),username:t().nullable(),status:t(),issue:t().nullable(),canPost:m().optional(),connectedAt:o()}),Mc=r({configured:m(),bot:r({username:t()}).nullable(),chats:l(Pa)}),Uc=r({url:t(),expiresAt:o()}),Dc=r({chat:t().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(),Zc=r({operation:s("connection")}).strict(),_c=r({userId:t()}),Nc=r({userId:t(),username:t().nullable(),status:se(e=>typeof e=="string"),isMember:m(),isAdmin:m(),untilDate:o().nullable()}),Lc=r({chatId:t(),chatType:t(),messageId:o(),reactionType:t(),emoji:t().nullable(),customEmojiId:t().nullable(),reactorStatus:t(),reactorIsAdmin:m()}),Bc=r({chatId:t(),chatType:t(),messageId:o(),replyToMessageId:o().nullable(),threadId:o().nullable()}),I=Object.freeze({quests:1e3,questTypes:200,collections:1e3,sdkRuntime:Object.freeze({modules:200,size:2e6}),memberCompletions:100,dashboardPanels:24,dashboards:20,defer:Object.freeze({minRetryAfterMs:1e3,maxRetryAfterMs:36e5,retryAfterMs:6e4,horizonMs:864e5,maxDefers:100}),retryCooldown:Object.freeze({minMs:1e3,maxMs:6048e5}),analyticsQueryRows:100,apps:Object.freeze({secrets:50,kvStores:5,sqlStores:5,migrations:100,migrationFileBytes:9e4,migrationTotalBytes:1e6,storageRows:50,storagePreviewCharacters:2e3,storageCellCharacters:1e5,storageClearKeys:1e4,storageClearCountKeys:1e5,schedules:10,scheduleMinIntervalMs:3e5,scheduleTimeoutMs:3e4,scheduleResultBytes:16384}),stagedDeployment:Object.freeze({size:64e6,compressedSize:1e7}),capabilityCalls:8,trackerData:Object.freeze({branches:16,entries:256}),trackerPreview:Object.freeze({pages:3,posts:100,days:30}),walletsPerChain:5,walletEventLogs:1e3,walletTransactions:1e3}),wt=t().min(32).max(44).regex(/^[1-9A-HJ-NP-Za-km-z]+$/),De=z(["solana","eip155","cosmos"]),Nr=/^cosmos:[-_a-zA-Z0-9]{1,32}$/,At=se(e=>typeof e=="string"&&Nr.test(e),"Use a Cosmos network: cosmos:<chain ID>"),Qc=t().regex(/^[a-zA-Z][a-zA-Z0-9/:._-]{2,127}$/,"Use a Cosmos bank denomination such as uatom or uosmo");function Kc(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(!Nr.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 Lr="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",Ca="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";function Br(e){return e===Lr||e===Ca}var $a=t().regex(/^0x[0-9a-fA-F]{40}$/),Ta=t().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,})$/),Vc=v("chain",[r({chain:s("solana"),address:wt}).strict(),r({chain:s("eip155"),address:$a,chainId:o().int().positive().safe().optional()}).strict(),r({chain:s("cosmos"),network:At,address:Ta}).strict()]),Wc=r({id:t().min(1).max(200),purpose:z(["link","sign-in"]),chain:De,network:At.nullable(),address:t(),message:t().max(4096),expiresAt:o().int()}),Fc=r({challenge:t().min(1).max(200),signature:t().min(1).max(16384),publicKey:t().max(128).optional()}).strict();function It(e){return/^eip155:[1-9][0-9]{0,15}$/.test(e)}var Ea=se(e=>typeof e=="string"&&It(e),'Use an EVM chain ID such as "eip155:8453"'),Hc=r({chain:De,network:At.nullable(),address:t(),provedOn:Ea.optional(),verifiedAt:o().int().nonnegative(),revision:o().int().positive(),signIn:m()}),Gc=r({chain:De,address:t().min(1).max(100)}).strict();async function Jc(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 sr("Choose the Cosmos chain for this wallet",or.InvalidInput);return{chain:"cosmos",network:e.network,address:n}}}var Yc=5,dt=["solana","eip155","cosmos"],Ma=z(dt),Xc=l(Ma).max(dt.length).refine(e=>new Set(e).size===e.length,{message:"Duplicate wallet family"}).transform(e=>dt.filter(n=>e.includes(n)));function el(e){return e.chain}function tl(e,n){if(e.chain==="eip155"&&e.provedOn){if(n&&n!==e.provedOn)throw new Error(`A smart-contract wallet is an account on ${e.provedOn} only`);return`${e.provedOn}:${e.address}`}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"?Lr:"eip155:1");if(!(e.chain==="solana"?/^solana:[1-9A-HJ-NP-Za-km-z]{32}$/.test(i):It(i)))throw new Error(`Use a ${e.chain} network for this wallet`);return`${i}:${e.address}`}var T=t().regex(/^(0|[1-9][0-9]*)$/),rl=k(r({chain:t(),token:t().nullable(),decimals:o().int().min(0).max(255).nullable(),total:T,wallets:l(r({address:t(),amount:T}).strict()),at:r({kind:z(["slot","block"]),number:T}).strict(),observedAt:o().int().nonnegative()}).strict()),nl=r({amount:t(),decimals:o().int().min(0).max(255).nullable(),block:t()}),Ua=/^(eip155:[1-9][0-9]{0,15})\/(erc721|erc1155):(0x[0-9a-fA-F]{40})(?:\/(0|[1-9][0-9]{0,77}))?$/,Da=/^(solana:[1-9A-HJ-NP-Za-km-z]{32})\/nft:(.*)$/,Za=2n**256n-1n;function _a(e){let n=Da.exec(e);if(n){let[,f,j]=n;return Br(f)&&wt.safeParse(j).success?{chain:f,standard:"metaplex",mint:j}:null}let i=Ua.exec(e);if(!i)return null;let[,c,d,u,b]=i;return d==="erc1155"!=(b!==void 0)||b!==void 0&&BigInt(b)>Za?null:{chain:c,standard:d,contract:u,tokenId:b??null}}function Na(e){return _a(e)!==null}var al=k(r({collection:t(),chain:t(),standard:z(["erc721","erc1155","metaplex"]),total:T,wallets:l(r({address:t(),count:T}).strict()),at:r({kind:z(["slot","block"]),number:T}).strict(),observedAt:o().int().nonnegative()}).strict()),Qr=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,La=/^bytes([1-9]|[12][0-9]|3[0-2])?$/;function Ba(e){let n=Qr.exec(e);return n?`${n[1]}${n[2]??"256"}`:e==="address"||e==="bool"||e==="string"||La.test(e)?e:null}function cr(e){let n=/^([a-z0-9]+)(?:\s+[A-Za-z_$][A-Za-z0-9_$]*)?$/.exec(e.trim());return n?Ba(n[1]):null}function Qa(e){let n=/^function\s+([A-Za-z_$][A-Za-z0-9_$]*)\s*\(([^()]*)\)\s+(?:external\s+)?(view|pure)\s+returns\s*\(([^()]*)\)$/.exec(e.trim());if(!n)return null;let[,i,c,d,u]=n,b=c.trim()?c.split(",").map(cr):[],f=u.includes(",")?null:cr(u);return b.length>16||b.some(j=>j===null)||!f||!(f==="bool"||f==="address"||Qr.test(f))?null:{name:i,inputs:b,returns:f,mutability:d,signature:`function ${i}(${b.join(",")}) ${d} returns (${f})`}}function Ka(e){let n=/^(eip155:[1-9][0-9]{0,15}):(0x[0-9a-fA-F]{40}) (function .+)$/.exec(e),i=n&&e.length<=400?Qa(n[3]):null;return i?{chain:n[1],contract:n[2],function:i}:null}function Va(e){return Ka(e)!==null}var Kr=t().regex(/^(0|-?[1-9][0-9]*)$/),il=k(r({call:t(),chain:t(),contract:t(),returns:t(),total:Kr.nullable(),wallets:l(r({address:t(),value:g([t(),m()])}).strict()),at:r({kind:z(["block"]),number:T}).strict(),observedAt:o().int().nonnegative()}).strict()),ol=k(r({chain:t(),denom:t(),validator:t().nullable(),total:T,wallets:l(r({address:t(),amount:T}).strict()),validators:l(r({validator:t(),amount:T}).strict()),at:r({kind:z(["block"]),number:T}).strict(),observedAt:o().int().nonnegative()}).strict()),Wa=/^(eip155:[1-9][0-9]{0,15}):(0x[0-9a-fA-F]{40})\s+(?:event\s+)?([A-Za-z_$][A-Za-z0-9_$]*)\s*\(([^()]*)\)\s*;?$/,Fa=/^([a-z0-9]+(?:\[[0-9]*\])*)(\s+indexed)?\s+([A-Za-z_$][A-Za-z0-9_$]*)$/;function Ha(e){let n=/^([a-z]+)([0-9]*)((?:\[[0-9]*\])*)$/.exec(e);if(!n)return null;let[,i,c,d]=n,u=c===""?256:Number(c),b=null;return c.startsWith("0")?null:(i==="uint"||i==="int"?b=u>=8&&u<=256&&u%8===0?i+u:null:i==="bytes"?b=c===""||u<=32?i+c:null:(i==="address"||i==="bool"||i==="string")&&c===""&&(b=i),b&&/^(\[([1-9][0-9]*)?\])?$/.test(d)?b+d:null)}function Ga(e){let n=Wa.exec(e.trim());if(!n)return null;let[,i,c,d,u]=n,b=[];for(let j of u.trim()?u.split(","):[]){let P=Fa.exec(j.trim()),re=P&&Ha(P[1]);if(!P||!re||P[3]==="indexed"||b.some(je=>je.name===P[3]))return null;b.push({name:P[3],type:re,indexed:!!P[2]})}let f=b.filter(j=>j.indexed);return f.length>3||!f.some(j=>j.type==="address")?null:{chain:i,contract:c,name:d,inputs:b,signature:`${d}(${b.map(j=>j.type).join(",")})`}}function Ja(e){return Ga(e)!==null}var sl=1e3,cl=720*60*60*1e3,lr=g([t(),m()]),Ya=g([lr,l(lr)]),ll=k(r({event:t(),chain:t(),contract:t(),since:o().int().nonnegative(),at:r({kind:z(["block"]),number:T}).strict(),finality:z(["finalized","safe"]),complete:m().optional(),logs:l(r({wallet:t(),block:T,timestamp:o().int().nonnegative(),tx:t(),logIndex:o().int().nonnegative(),args:y(t(),Ya)}).strict()).max(I.walletEventLogs),observedAt:o().int().nonnegative()}).strict());function Xa(e){return wt.safeParse(e).success}var Vr=y(t(),M()),ei=r({program:t(),source:t(),idl:Vr}).strict(),dl=1e3,ml=720*60*60*1e3,ul=k(r({program:t(),chain:t(),mint:t().nullable(),since:o().int().nonnegative(),at:r({kind:z(["slot"]),number:T}).strict(),complete:m(),transactions:l(r({wallet:t(),signature:t(),slot:T,timestamp:o().int().nonnegative(),signer:m().default(!1),programs:l(t()),balanceChanges:l(r({mint:t(),delta:Kr}).strict()),instructions:l(r({name:t(),args:y(t(),M()),accounts:y(t(),t())}).strict()).optional()}).strict()),observedAt:o().int().nonnegative()}).strict()),zl=r({guildId:t(),channelId:t(),messageId:t(),userId:t(),content:t().nullable(),replyTo:t().nullable(),publishedAt:o()}).strict(),Ot=p({kind:s("discord-messages"),text:m().optional()}),qt=p({kind:s("discord-reactions")}),ti=r({guildId:t(),channelId:t(),parentChannelId:t().nullable().optional(),messageId:t(),replyTo:t().nullable(),publishedAt:o()}),bl=ti.extend({text:t().nullable()}),pl=r({guildId:t(),channelId:t(),parentChannelId:t().nullable().optional(),messageId:t(),emoji:r({id:t().nullable(),name:t()}),reactorRoles:l(t()),messagePublishedAt:o()}),ri=p({kind:s("integration"),provider:s("discord"),action:s("grant-role"),roleId:t().regex(/^[0-9]{1,20}$/)}),ni=g([p({provider:s("discord"),resource:s("channel"),types:l(z(["text","announcement"])).min(1),postable:s(!0).optional()}),p({provider:s("discord"),resource:s("role"),assignable:m().default(!1)})]),ai=16,ii=32768,gl=16,fl=256,dr=g([t(),o().finite(),m(),ae()]),Ae=o().int().safe().nonnegative(),Ie=o().finite(),tt=()=>l(le).min(1).max(I.trackerData.branches),le=ar(()=>p({type:z(["object","array","string","number","integer","boolean","null"]).optional(),properties:y(t(),le).refine(e=>Object.keys(e).length<=I.trackerData.entries,`An object schema lists at most ${I.trackerData.entries} properties`).optional(),required:l(t()).max(I.trackerData.entries).optional(),additionalProperties:g([m(),le]).optional(),propertyNames:p({type:s("string"),enum:l(t()).max(I.trackerData.entries).optional()}).optional(),items:le.optional(),minItems:Ae.optional(),maxItems:Ae.optional(),minLength:Ae.optional(),maxLength:Ae.optional(),minimum:Ie.optional(),maximum:Ie.optional(),exclusiveMinimum:Ie.optional(),exclusiveMaximum:Ie.optional(),enum:l(dr).min(1).max(I.trackerData.entries).optional(),const:dr.optional(),anyOf:tt().optional(),oneOf:tt().optional(),allOf:tt().optional()}));function oi(e){let n=[[e,0]];for(;n.length;){let[i,c]=n.pop();if(!(typeof i!="object"||i===null)){if(c>=ai)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,c+1])}}return new TextEncoder().encode(JSON.stringify(e)).byteLength>ii?"Tracker data schemas are at most 32 KB and 16 levels deep":null}var Wr=e=>[...e.anyOf??[],...e.oneOf??[],...e.allOf??[]],si=e=>e.properties!==void 0||e.items!==void 0||typeof e.additionalProperties=="object"||Wr(e).length>0;function mt(e,n,i){let c=Wr(e);if(i&&c.filter(si).length>1)return n;let d=[...Object.entries(e.properties??{}).map(([u,b])=>[b,`${n}.${u}`])];e.items&&d.push([e.items,n]),typeof e.additionalProperties=="object"&&d.push([e.additionalProperties,n]);for(let[u,b]of d){let f=mt(u,b,i);if(f)return f}for(let u of c){let b=mt(u,n,!0);if(b)return b}return null}var Fr=ie().superRefine((e,n)=>{let i=oi(e);i&&n.addIssue({code:"custom",message:i,abort:!0})}).pipe(le).refine(e=>e.type==="object","A tracker's record data is an object: declare it with z.object({ ... })").superRefine((e,n)=>{let i=mt(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`})}),mr={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"},Hr=new Set(["additionalProperties","items","propertyNames"]),Gr=new Set(["anyOf","oneOf","allOf"]),ci=new Set(["type","properties","required","minItems","maxItems","minLength","maxLength","minimum","maximum","exclusiveMinimum","exclusiveMaximum","enum","const",...Hr,...Gr]),li=new Set(["$schema","$id","$comment","title","description","default","examples","deprecated","readOnly","writeOnly"]);function ut(e){if(Array.isArray(e))return e.map(ut);if(typeof e!="object"||e===null)return e;let n=Object.fromEntries(Object.entries(e).map(([d,u])=>[d,ut(u)]));if(!Array.isArray(n.type))return n;let{type:i,...c}=n;return{anyOf:i.map(d=>d==="null"?{type:d}:{...c,type:d})}}function Ce(e,n){if(typeof e!="object"||e===null||Array.isArray(e))return e;let i={};for(let[c,d]of Object.entries(e)){if(Object.hasOwn(mr,c))throw new Error(`Tracker data schemas cannot use ${c} (${n}): ${mr[c]}`);if(!li.has(c)){if(!ci.has(c))throw new Error(`Tracker data schemas cannot use the keyword ${c} (${n}): keep metadata to title, description, default and examples`);if(c==="properties"&&Object.hasOwn(d,"__proto__")||c==="required"&&d.includes("__proto__"))throw new Error(`Tracker data schemas cannot name a property __proto__ (${n})`);i[c]=c==="properties"?Object.fromEntries(Object.entries(d).map(([u,b])=>[u,Ce(b,`${n}.${u}`)])):Hr.has(c)?Ce(d,n):Gr.has(c)?d.map(u=>Ce(u,n)):d}}return i}function vl(e){let n;try{n=Jt(e,{target:"draft-2020-12",io:"input",unrepresentable:"throw",cycles:"throw",reused:"inline",override:({zodSchema:c,path:d})=>{let u=c._zod.def,b=["data",...d].join(".");if(u.type==="pipe"||u.type==="transform")throw new Error(`Tracker data schemas cannot transform values (${b}): records are stored as sent`);if(u.checks?.some(f=>f._zod.def.check==="custom"))throw new Error(`Tracker data schemas cannot use refinements (${b}): check the value in your evaluator`)}})}catch(c){let d=c instanceof Error?c.message:String(c);throw new Error(d.startsWith("Tracker data schemas")?d:`Tracker data schemas describe JSON: ${d}. Use z.unknown() for any JSON value.`)}let i=Fr.safeParse(Ce(ut(n),"data"));if(!i.success)throw new Error(i.error.issues.map(c=>c.message).join("; "));return i.data}var Jr=25e4,di=6e6,Yr=class extends Error{};function Oe(e,n){if(e.steps-=n,e.steps<0)throw new Yr}var Xr=64,mi=256;function zt(e,n){return e.length>n?e.slice(0,n-1)+"\u2026":e}function ui(e){let n=[];for(let i=e;i;i=i.parent)n.push(zt(String(i.key),Xr));return zt(["data",...n.reverse()].join("."),mi)}var W=e=>e===null?"null":Array.isArray(e)?"an array":typeof e,rt=10;function zi(e){let n=e.slice(0,rt).map(i=>JSON.stringify(i)).join(", ");return e.length>rt?`expected one of ${n}, or ${e.length-rt} more`:`expected one of ${n}`}var ur=new WeakMap,zr=new WeakMap;function br(e,n){let i=ur.get(e);return i||(i=new Set(n),ur.set(e,i)),i}function bi(e){let n=zr.get(e);return n||(n=Object.entries(e.properties??{}).filter(([,i])=>i.const!==void 0),zr.set(e,n)),n}function H(e,n,i,c){Oe(c,1);let d=u=>({at:i,reason:u});if(e.const!==void 0&&n!==e.const)return d(()=>`expected ${JSON.stringify(e.const)}`);if(e.enum&&!br(e,e.enum).has(n)){let u=e.enum;return d(()=>zi(u))}switch(e.type){case"null":if(n!==null)return d(()=>`expected null, got ${W(n)}`);break;case"boolean":case"string":if(typeof n!==e.type){let u=e.type;return d(()=>`expected a ${u}, got ${W(n)}`)}break;case"number":if(typeof n!="number")return d(()=>`expected a number, got ${W(n)}`);break;case"integer":if(!Number.isInteger(n))return d(()=>typeof n=="number"?"expected an integer":`expected an integer, got ${W(n)}`);break;case"array":if(!Array.isArray(n))return d(()=>`expected an array, got ${W(n)}`);break;case"object":if(typeof n!="object"||n===null||Array.isArray(n))return d(()=>`expected an object, got ${W(n)}`);break}if(typeof n=="string"){let{minLength:u,maxLength:b}=e;if(u!==void 0&&n.length<u)return d(()=>`expected at least ${u} characters`);if(b!==void 0&&n.length>b)return d(()=>`expected at most ${b} characters`)}if(typeof n=="number"){let u=[[e.minimum,b=>n>=b,"at least"],[e.exclusiveMinimum,b=>n>b,"more than"],[e.maximum,b=>n<=b,"at most"],[e.exclusiveMaximum,b=>n<b,"less than"]];for(let[b,f,j]of u)if(b!==void 0&&!f(b))return d(()=>`expected ${j} ${b}`)}if(Array.isArray(n)){let{minItems:u,maxItems:b}=e;if(u!==void 0&&n.length<u)return d(()=>`expected at least ${u} items`);if(b!==void 0&&n.length>b)return d(()=>`expected at most ${b} items`);if(e.items)for(let f=0;f<n.length;f++){let j=H(e.items,n[f],{parent:i,key:f},c);if(j)return j}}if(typeof n=="object"&&n!==null&&!Array.isArray(n)){let u=n,b=e.properties??{},f=e.required??[];Oe(c,f.length);for(let E of f)if(!Object.hasOwn(u,E))return d(()=>`missing required key "${zt(E,Xr)}"`);let j=bi(e);Oe(c,j.length);for(let[E,Q]of j)if(Object.hasOwn(u,E)&&u[E]!==Q.const)return{at:{parent:i,key:E},reason:()=>`expected ${JSON.stringify(Q.const)}`};let P=Object.keys(u);Oe(c,P.length);let re=e.propertyNames?.enum,je=re&&br(e.propertyNames,re);for(let E of P){if(je&&!je.has(E))return{at:{parent:i,key:E},reason:()=>"is not an allowed key"};let Q=Object.hasOwn(b,E)?b[E]:e.additionalProperties;if(Q===!1)return{at:{parent:i,key:E},reason:()=>"is not an allowed key"};if(Q&&Q!==!0){let Ht=H(Q,u[E],{parent:i,key:E},c);if(Ht)return Ht}}}for(let u of e.allOf??[]){let b=H(u,n,i,c);if(b)return b}if(e.anyOf&&!e.anyOf.some(u=>!H(u,n,i,c)))return d(()=>"matches none of the allowed shapes");if(e.oneOf){let u=0;for(let b of e.oneOf)if(!H(b,n,i,c)&&++u>1)return d(()=>"matches more than one of the allowed shapes");if(!u)return d(()=>"matches none of the allowed shapes")}return null}function pi(e,n,i={steps:Jr}){try{let c=H(e,n,null,i);return c&&{kind:"mismatch",path:ui(c.at),reason:c.reason()}}catch(c){if(c instanceof Yr)return{kind:"too-complex",path:"data",reason:"is too complex to validate against the tracker's schema"};throw c}}function gi(e,n){let i={steps:di};return n.map(c=>{let d={steps:Math.min(Jr,i.steps)},u=d.steps,b=pi(e,c,d);return i.steps-=u-Math.max(d.steps,0),b})}function bt(e){return e.flatMap(n=>n.anyOf||n.oneOf||n.allOf?bt([...n.anyOf??[],...n.oneOf??[],...n.allOf??[]]):[n])}var pr=e=>e.type===void 0&&e.properties===void 0&&e.const===void 0&&e.enum===void 0;function fi(e,n){let i=new Set(["string","number","boolean","null","object","array"]),c=[e];for(let u of n.split(".")){let b=[];for(let f of bt(c))if(pr(f))b.push({});else{if(f.type!=="object")continue;f.properties&&Object.hasOwn(f.properties,u)?b.push(f.properties[u]):f.additionalProperties===!0?b.push({}):f.additionalProperties&&b.push(f.additionalProperties)}if(!b.length)return null;c=b}let d=new Set;for(let u of bt(c)){if(pr(u))return i;u.type&&d.add(u.type==="integer"?"number":u.type);for(let b of[...u.const!==void 0?[u.const]:[],...u.enum??[]])d.add(b===null?"null":typeof b)}return d}function hl(e){return{content:(n,i)=>e.content(n,i),summary:(n,i)=>e.summary(n,i),records:(async(n,i)=>{let c=await e.records(n,i),d=n.source,u=d?.kind==="custom"?d.data:void 0;if(!u)return c;let b=gi(u,c.items.map(j=>j.data)),f=c.items.filter((j,P)=>!b[P]);return{...c,items:f,excluded:c.items.length-f.length}})}}function yl(e,n){let i=n===void 0?[]:Array.isArray(n)?n:[n];for(let c of i){let d=fi(e,c.path);if(!d)return`The tracker filter reads data.${c.path}, which the tracker's data schema does not declare`;if(!("equals"in c?[typeof c.equals]:["number","string"]).some(b=>d.has(b)))return`The tracker filter compares data.${c.path} with ${"equals"in c?JSON.stringify(c.equals):"a number"}, but the field holds ${[...d].join(" or ")}`}return null}var en=t().trim().min(1).max(500),vi=/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/;function tn(){return ir.datetime({offset:!0,pattern:vi})}var x=o().int().safe().nonnegative().max(864e13),R=o().int().safe().nonnegative(),D=t().min(1).max(256),F=R.nullable().default(null),hi=oe({id:D,userId:D,content:t(),createdAt:tn(),author:oe({id:D,username:t(),name:t(),verified:m().nullable().default(null)}),likeCount:F,replyCount:F,retweetCount:F,quoteCount:F,viewCount:F,bookmarkCount:F,isReply:m(),isRetweet:m(),isQuoteTweet:m()}),yi=p({version:s(1),id:t().min(1),authorId:t().min(1),publishedAt:x,text:t(),isReply:m(),isRetweet:m(),isQuoteTweet:m(),media:l(p({type:t(),url:t()})).nullable(),mentionedAuthorIds:l(t().min(1)).nullable(),videoLengthSeconds:o().nonnegative().nullable(),references:p({replyId:t().nullable(),replyAuthorId:t().nullable(),quoteId:t().nullable(),quoteAuthorId:t().nullable(),repostId:t().nullable(),repostAuthorId:t().nullable()})}),ki=p({id:D,observation:t().regex(/^observation_[a-f0-9]{64}$/)}),kl=ki.extend({member:a}),nt={member:a,capturedAt:x},rn=p({contentRevision:a,observation:a}),jl=p({tracker:a,source:s("x"),evidence:rn,content:yi,observedAt:x,removed:m(),attribution:v("kind",[p({...nt,kind:s("linked"),account:p({provider:s("x"),issuer:t().min(1),subject:D,revision:R,linkedAt:x.nullable()})}),p({...nt,kind:s("unlinked")}),p({...nt,kind:s("different-author")})])}),ji=["wallet","x","discord","member"],nn=nr(["app:",t().regex(/^[a-z0-9][a-z0-9_-]{0,39}$/,"Name an app identity kind like app:game: lowercase letters, digits, _ or -, at most 40")]),Rt=g([z(ji),nn]),Sl=e=>e.startsWith("app:"),be=t().min(1).max(64),xl=r({kind:be,subject:D,revision:R,linkedAt:x.nullable()}),pe=t().regex(/^[a-zA-Z][a-zA-Z0-9_]{0,39}$/,"Name roles like author or recipient: a letter, then letters, digits or underscores"),wl=["author","inReplyTo","quoted","reposted"],pt=e=>new Set(e).size===e.length,an=t().regex(/^[a-z][a-zA-Z0-9]{0,39}$/,"Name metrics like likes or watchTime: a lowercase letter, then letters or digits"),Si=["likes","replies","reposts","quotes","views","bookmarks"],xi=p({metrics:l(an).max(10).refine(pt,"List each metric once")}),on=p({chain:t().regex(/^(?:solana:(?:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp|EtWTRABZaYq6iMfeYKouRu166VU2xqa1)|eip155:[1-9][0-9]{0,15}|cosmos:[-_a-zA-Z0-9]{1,32})$/,'Use "solana", Solana devnet ("solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"), an EVM chain such as "eip155:8453" or a Cosmos network such as "cosmos:cosmoshub-4"'),token:t().min(1).max(128).nullable()}),Y=r({kind:s("x-search"),query:t().trim().min(1).max(2e3)}).strict(),sn=r({kind:s("custom"),namespace:a,identities:l(Rt).min(1).max(8).refine(pt,"List each identity kind once").optional(),accounts:l(pe).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:Fr.optional(),content:xi.optional(),balance:on.optional()}).strict().refine(e=>e.balance===void 0||e.namespace===Zr,"Only wallet.balances() samples a balance").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"),wi=v("kind",[Y,sn,Ot,qt]),Ai=["x-search","custom","discord-messages","discord-reactions"];function Al(e){if(ln(e))switch(e.kind){case"x-search":return["x"];case"discord-messages":case"discord-reactions":return["discord"];case"custom":return e.identities}}function Il(e){switch(e.kind){case"x-search":return{metrics:Si};case"custom":return e.content;case"discord-messages":case"discord-reactions":return}}var Pt=r({start:x,end:x.optional()}).strict().refine(e=>e.end===void 0||e.end>e.start,"End must follow start"),V=r({key:a,title:t().trim().min(1).max(120),source:wi,window:Pt,refreshSeconds:o().int().min(300).max(86400).default(21600),maxPages:o().int().min(1).max(1e3).default(60)}).strict(),Ol=g([V,r({code:t().min(1).max(2e6)}).strict()]),cn=v("kind",[r(Y.shape),r({...sn.shape,identities:l(be).optional()}),r(Ot.shape),r(qt.shape)]),Ii=g([cn,r({kind:t().min(1).refine(e=>!Ai.some(n=>n===e),"Known source kinds must match their schema")}).catchall(M())]);function ln(e){return cn.safeParse(e).success}var Oi=r({...V.shape,source:Ii,window:r(Pt.shape)}),qi=r({id:a,version:a,definition:Oi,publishedAt:x,actor:t().nullable()}),dn=r({archivedAt:o().int().nonnegative().nullable().optional(),published:qi,paused:m(),pauseReason:t().nullable().optional(),resumesAt:x.nullable().optional(),effectiveRefreshSeconds:o().int().positive().optional(),state:z(["idle","syncing","error","complete"]),lastStartedAt:x.nullable(),lastCompletedAt:x.nullable(),nextSyncAt:x.nullable(),coverage:z(["unknown","partial","complete"]),error:t().nullable(),records:R,origin:z(["code","data"]).optional()}),mn=v("kind",[Y,Ot,qt,p({kind:s("telegram-messages")}),p({kind:s("telegram-reactions")}),p({kind:s("youtube-shorts")}),p({kind:s("tiktok-videos")}),p({kind:s("wallet-balances"),...on.shape})]),ql=["x-search","discord-messages","discord-reactions","telegram-messages","telegram-reactions","youtube-shorts","tiktok-videos","wallet-balances"],gr={[Dr]:"telegram-messages",[Ur]:"telegram-reactions",[Oa]:"youtube-shorts",[qa]:"tiktok-videos"};function Rl(e){if(ln(e))switch(e.kind){case"x-search":return{kind:"x-search",query:e.query};case"discord-messages":return{kind:"discord-messages",text:e.text??!1};case"discord-reactions":return{kind:"discord-reactions"};case"custom":return e.namespace===Zr?e.balance?{kind:"wallet-balances",...e.balance}:void 0:Object.hasOwn(gr,e.namespace)?{kind:gr[e.namespace]}:void 0}}var un=r({title:V.shape.title,query:Y.shape.query,window:Pt,refreshSeconds:V.shape.refreshSeconds.unwrap(),maxPages:V.shape.maxPages.unwrap()}).strict(),Ri=un.extend({key:a,refreshSeconds:V.shape.refreshSeconds,maxPages:V.shape.maxPages,actionId:a}).strict(),Pl=Ri.extend({query:Y.shape.query.optional(),source:mn.optional()}).refine(e=>e.query===void 0!=(e.source===void 0),"Name the source with source, or an X search with query, not both"),Cl=un.partial().extend({source:mn.optional(),actionId:a}).strict().refine(({actionId:e,...n})=>Object.values(n).some(i=>i!==void 0),"Change at least one field").refine(e=>e.query===void 0||e.source===void 0,"Change the query with source or query, not both"),$l=r({actionId:a,action:z(["pause","resume","refresh"]),reason:en.optional()}).strict(),Pi=p({kind:Rt.optional(),id:D}),Ci=r({id:D,occurredAt:x,observedAt:x,author:r({id:D,verified:m().nullable().default(null),kind:Rt.optional()}).strict().nullable().default(null),accounts:y(pe,Pi).refine(e=>Object.keys(e).length<=10,"At most 10 accounts").optional(),data:y(t(),M()),removed:m().default(!1)}).strict().refine(e=>new TextEncoder().encode(JSON.stringify(e.data)).byteLength<=131072,"Record exceeds 128 KB"),zn=r({kind:be.optional(),id:t()}),$i=r({id:t(),occurredAt:x,observedAt:x,author:r({id:t(),verified:m().nullable().default(null),kind:be.optional()}).nullable().default(null),accounts:y(t(),zn).optional(),data:y(t(),M()),removed:m().default(!1),source:t(),firstSeenAt:x,synthetic:s(!0).optional(),evidence:rn.nullable().optional()}),Tl=r({actionId:a,records:l(Ci).min(1).max(100)}).strict(),El=r({stored:R,admissions:r({admitted:R,skipped:R,filtered:R.optional()}).optional()}),fr={quest:a,tracker:a,record:D,observedAt:x,release:a,account:t().nullable(),createdAt:x,updatedAt:x,actor:t().nullable()},Ml=["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","member-banned","already-completed","not-enrolled","before-enrollment","historical","prerequisites-incomplete"],Ti=t().optional(),bn=v("state",[r({...fr,state:s("admitted"),code:ae(),reason:ae(),member:a,attempt:a}),r({...fr,state:s("skipped"),code:t().min(1),reason:t(),window:z(["tracker","quest"]).optional(),enrollment:Ti,member:a.nullable(),attempt:a.nullable()})]),pn={quest:a.optional(),record:D.optional(),member:a.optional(),state:z(["admitted","skipped"]).optional(),code:t().min(1).max(100).optional(),limit:q.number().int().min(1).max(100).default(25)},Ul=p({...pn,cursor:w.optional()}),Dl=r({items:l(bn).max(100),nextCursor:w.nullable()}),Zl=p({...pn,before:t().max(512).optional()}),_l=p({items:l(bn).max(100),next:t().nullable()}),Nl=p({actionId:a,quest:a,record:D,observedAt:x}),at=g([m(),z(["true","false"]).transform(e=>e==="true")]),Ll=r({author:D.optional(),member:a.optional(),verified:at.optional(),since:q.number().int().safe().nonnegative().optional(),until:q.number().int().safe().nonnegative().optional(),removed:at.default(!1),minLikes:q.number().int().safe().nonnegative().optional(),minViews:q.number().int().safe().nonnegative().optional(),limit:q.number().int().min(1).max(100).default(25),cursor:t().max(2048).optional(),includeEvidence:at.optional()}).strict().refine(e=>e.since===void 0||e.until===void 0||e.until>e.since,"Until must follow since"),Bl=r({tracker:a,items:l($i),nextCursor:t().nullable(),total:R,status:dn}),Ql=r({records:R,authors:R,metrics:r({likes:R,replies:R,reposts:R,quotes:R,views:R,bookmarks:R}),missingMetrics:R,status:dn}),Kl={pages:3,posts:100,days:30},Vl=r({query:Y.shape.query,since:x}).strict(),Wl=r({query:t(),since:x,fetchedAt:x,pages:R,posts:l(hi).max(I.trackerPreview.posts),more:m()}),Fl=p({kind:z(["accept","reject","review","defer","progress","superseded"]),reason:t().nullable()}),Ei=p({quest:a,member:a.optional(),content:t().min(1).max(256).optional(),cursor:w.optional()}),gn=p({quest:a,content:t(),member:a,release:a,attempt:a,revision:a,observation:a,current:m(),state:z(["pending","qualified","unqualified","needs-review","failed","superseded","stale","blocked","unavailable"]),reason:t().nullable(),reward:p({attempt:a.nullable(),completion:a.nullable(),state:z(["unresolved","awarded","excluded"])})}),Hl=p({items:l(gn),nextCursor:w.nullable()}),Ze=an,L=y(Ze,o().int().safe().nonnegative()),Mi=p({metrics:l(Ze).min(1).max(10).refine(e=>new Set(e).size===e.length,"Metrics must be unique"),maxAgeMs:o().int().positive().max(864e5).default(36e5)}),it=864e5,Ui=r({kind:s("count"),count:o().int().min(1).max(1e4)}).strict(),Di=v("kind",[r({kind:s("lifetime")}).strict(),r({kind:s("calendar"),period:z(["day","week","month"]),latenessMs:o().int().min(0).max(90*it).default(7*it)}).strict(),r({kind:s("rolling"),durationMs:o().int().min(1).max(365*it)}).strict()]),Zi=r({kind:s("progress"),goal:Ui,window:Di,repeat:z(["once","repeat"]).default("once")}).strict(),ot=r({id:a,ordinal:o().int().positive(),achievedAt:o().int(),window:t()}),fn=v("status",[ot.extend({status:s("revoked"),completion:a,revokedAt:o().int()}),ot.extend({status:s("awarded"),completion:a}),ot.extend({status:s("budget-exhausted"),budget:a})]),_i=r({goal:o().int().positive(),current:o().int().nonnegative(),window:r({key:t(),start:o().int().nullable(),end:o().int().nullable()}),repeat:z(["once","repeat"]),settled:o().int().nonnegative(),latest:fn.nullable()}),Ni=r({id:a,distinct:t(),attempt:a,occurredAt:o().int(),recordedAt:o().int(),window:t(),status:z(["counted","late","future","excluded"]),achievement:fn.nullable(),reason:t().nullable()}),Gl=r({items:l(Ni),nextCursor:t().nullable()}),Jl=r({actionId:Xt(),excluded:m(),reason:t().trim().min(1).max(2e3)}).strict(),Yl=r({cursor:t().max(2e3).optional(),limit:q.number().int().min(1).max(100).optional()}).strict(),Xl=r({excluded:m()}),vr=o().int().safe(),gt=/^(?:[+-]|(?:Etc\/)?GMT[+-]\d|(?:EST|MST|HST)$)/i;function Li(e){let n;try{n=new Intl.DateTimeFormat("en",{timeZone:e}).resolvedOptions().timeZone}catch{return null}return n==="UTC"?"UTC":gt.test(e)||gt.test(n)?null:n}var vn=t().min(1).max(100).transform((e,n)=>{let i=Li(e);return i===null?(n.addIssue({code:"custom",message:gt.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}),de=t().min(1).max(100),hn=e=>`${e} no longer take a timeZone: they follow the project calendar. Set calendar.timeZone in relay.json or in Console settings.`,ft=e=>typeof e=="object"&&e!==null;function Bi(e,n){return ft(e)&&e.kind==="streak"&&"timeZone"in e&&n.addIssue({code:"custom",path:["timeZone"],message:hn("Streaks")}),e}function Qi(e,n){let i=ft(e)?e.window:void 0;return ft(i)&&i.kind==="calendar"&&"timeZone"in i&&n.addIssue({code:"custom",path:["window","timeZone"],message:hn("Calendar leaderboard windows")}),e}var X=z(["lifetime","day","week","month"]),ed=r({timeZone:de,today:t(),nextBoundary:vr,pending:r({timeZone:de,effectiveAt:vr}).nullable(),declared:de.nullable(),unsupported:t().nullable().default(null)}),td=r({actionId:a,timeZone:vn,reason:t().trim().min(1).max(500)}).strict(),rd=r({timeZone:vn}).strict(),Ki=r({kind:s("streak"),days:o().int().min(1).max(3650)}),Vi=r({goal:o().int().positive(),current:o().int().nonnegative(),best:o().int().nonnegative(),today:t(),todayQualified:m(),timeZone:de,nextBoundary:o().int(),pendingTimeZone:r({timeZone:de,effectiveAt:o().int()}).nullable(),days:l(r({day:o().int(),date:t(),timeZone:t(),occurredAt:o().int()})),milestone:v("status",[r({status:s("pending")}),r({status:s("awarded"),completion:t(),achievedAt:o().int()}),r({status:s("budget-exhausted"),budget:t(),achievedAt:o().int()})])}),N=o().int().safe().nonnegative().max(864e13),vt=o().int().safe().nonnegative(),Wi=z(["new-record","new-observation","data-changed"]);function nd(e,n){return e==="custom"&&n!==Dr&&n!==Ur?"new-observation":"new-record"}var qe=g([o().finite(),p({setting:t().regex(/^[a-zA-Z][a-zA-Z0-9_]*$/)})]),hr=t().max(200).regex(/^[^.\s]+(\.[^.\s]+)*$/,"Use dot-separated keys, such as metrics.likes"),yr=g([p({path:hr,equals:g([t().max(1e3),o().finite(),m()])}),p({path:hr,gt:qe.optional(),gte:qe.optional(),lt:qe.optional(),lte:qe.optional()}).refine(e=>[e.gt,e.gte,e.lt,e.lte].some(n=>n!==void 0),"Compare with equals, gt, gte, lt or lte")]),Fi=g([yr,l(yr).min(1).max(10)]);function Hi(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function ad(e){return Hi(e).flatMap(n=>"equals"in n?[]:[n.gt,n.gte,n.lt,n.lte].flatMap(i=>typeof i=="object"?[i.setting]:[]))}var Gi=z(["none","required"]),Ji=z(["activation","window","enrollment"]),Yi=z(["staff","claim","automatic"]),Xi=p({tracker:a,source:t().min(1).max(100),on:Wi,where:Fi.optional(),beneficiary:pe,enrollment:Gi.optional(),since:Ji.optional(),historical:Yi.optional(),content:s(!0).optional()}).refine(e=>e.since!=="enrollment"||e.enrollment==="required",'since: "enrollment" needs enrollment: "required"');function id(e){return e.on}function od(e){return{enrollment:e.enrollment??"none",since:e.since??"activation",historical:e.historical??(e.content?"claim":"staff")}}function sd(e){return e.beneficiary}var kr={issuer:t().min(1),subject:t().min(1).max(256),revision:vt,linkedAt:N.nullable()},eo=r({member:a,capturedAt:N,account:g([r({provider:s("wallet"),id:t().min(5).max(256),revision:vt,linkedAt:N.nullable()}),r({provider:s("x"),...kr}),r({provider:s("discord"),...kr}),r({provider:s("member"),id:a}),r({provider:nn,subject:t().min(1).max(256),revision:vt,linkedAt:N.nullable()}),r({provider:t().min(1)})])}),to=r({id:t().min(1).max(256),source:t(),occurredAt:N,observedAt:N,firstSeenAt:N,author:r({id:t().min(1).max(256),verified:m().nullable(),kind:be.optional()}).nullable(),accounts:y(pe,zn).optional(),data:y(t(),M()),removed:m()}),ro=r({revision:a,observation:a,body:y(t(),M())}),cd=r({tracker:a,key:a,beneficiary:pe,record:to,content:ro.optional(),attribution:eo,enrolledAt:N.optional()}),jr=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"]),Sr=64,no=/^[a-z0-9-]+$/;function ao(e){return typeof e!="string"||e.length===0||e.length>Sr||!no.test(e)?`Invalid reject code ${JSON.stringify(e)}: use lowercase letters, digits and hyphens, at most ${Sr} characters, such as "wrong-answers"`:jr.includes(e)?`Invalid reject code ${JSON.stringify(e)}: Relay writes it itself. A reject code cannot be ${jr.join(", ")}`:null}var io=t().superRefine((e,n)=>{let i=ao(e);i&&n.addIssue({code:"custom",message:i})}),ld={quests:1e3,questTypes:200,collections:1e3},dd={modules:200,size:2e6},oo=t().regex(/^[0-9a-f]{64}$/),so=t().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"),Ct=r({digest:oo,sdkVersion:t().min(1).max(64)}).strict(),co=y(so,t().min(1)).refine(e=>{let n=Object.values(e);return n.length>0&&n.length<=I.sdkRuntime.modules&&n.reduce((i,c)=>i+c.length,0)<=I.sdkRuntime.size},`A runtime has 1 to ${I.sdkRuntime.modules} modules and at most ${I.sdkRuntime.size} characters of source`),md=Ct.extend({zodVersion:t().min(1).max(64),modules:co}).strict();async function ud(e){let n=JSON.stringify(Object.entries(e).sort(([c],[d])=>c<d?-1:c>d?1:0)),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n));return[...new Uint8Array(i)].map(c=>c.toString(16).padStart(2,"0")).join("")}var xr=t().regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,199}$/),$t=v("kind",[Ki,Zi,r({kind:s("once")}).strict(),r({kind:s("keyed"),across:s("members").optional()}).strict()]),ht=t().min(1).max(500),yn=r({id:xr,scope:z(["member","project"]),period:X,limit:o().int().positive().max(Number.MAX_SAFE_INTEGER),cost:g([o().int().positive().max(Number.MAX_SAFE_INTEGER),r({balance:xr}).strict()])}).strict(),lo=yn.extend({scope:s("author")}).strict(),zd=r({quest:t().min(1).max(200),key:ht,completedAt:o().int().nonnegative().safe().nullable()}),bd=100,mo=z(["discord","x"]),uo=t().regex(/^[a-z][a-z0-9-]{0,63}$/,"Name an integration module provider, such as discord"),zo=z(["discord"]),kn=r({id:t().regex(/^[0-9]{1,20}$/),name:t().min(1),icon:t().nullable()}),pd=r({provider:zo,configured:m(),status:z(["disconnected","ready","attention"]),revision:o().int().nonnegative(),server:kn.nullable(),issue:t().nullable(),connectedAt:o().default(0)}),gd=r({servers:l(kn)}),jn=["beneficiary","author","quest","points","rewards"],bo=new Set(jn);function po(e){let n=[],i="",c=0;for(;c<e.length;){let d=e[c];if(d==="{"&&e[c+1]==="{"){i+="{",c+=2;continue}if(d==="}"&&e[c+1]==="}"){i+="}",c+=2;continue}if(d==="}")return{error:"Write }} for a literal } in an announcement"};if(d!=="{"){i+=d,c+=1;continue}let u=e.indexOf("}",c),b=u===-1?"":e.slice(c+1,u);if(!bo.has(b))return{error:`Unknown announcement placeholder {${b}}: use ${jn.map(f=>`{${f}}`).join(", ")}, or {{ for a literal {`};i&&(n.push({kind:"text",text:i}),i=""),n.push({kind:"placeholder",name:b}),c=u+1}return i&&n.push({kind:"text",text:i}),{segments:n}}var go=t().trim().min(1).max(1e3).superRefine((e,n)=>{let i=po(e);"error"in i&&n.addIssue({code:"custom",message:i.error})}),Sn={action:s("post-message"),text:go,replyToTriggeringMessage:m().optional()},fo=p({provider:s("telegram"),chat:_r,...Sn}),vo=p({provider:s("discord"),channel:t().regex(/^[0-9]{1,20}$/),...Sn}),ho=v("provider",[fo,vo]),yo=r({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"),ko=t().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"),jo=r({required:m().default(!0),allowedHosts:l(ko).min(1).max(100).optional()}).strict(),xn=r({kind:s("text"),value:t().max(1e4)}).strict(),wn=r({kind:s("url"),value:t().max(2048)}).strict(),fd=v("kind",[xn,wn]);function vd(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 c=An(e.value);return c?n.constraints.allowedHosts&&!n.constraints.allowedHosts.some(d=>d.toLowerCase()===c.hostname.toLowerCase())?`Use a URL hosted on: ${n.constraints.allowedHosts.join(", ")}`:null:"Enter a valid HTTP or HTTPS URL without credentials"}function An(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 hd(e){let n=An(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 Tt=t().regex(/^[a-zA-Z0-9_-]+$/).max(100),So=r({id:Tt,label:t().trim().min(1).max(500)}).strict(),In=r({id:Tt,prompt:t().trim().min(1).max(1e3),choices:l(So).min(2).max(8).refine(e=>new Set(e.map(n=>n.id)).size===e.length,"Choice IDs must be unique")}).strict(),xo=l(In).min(1).max(20).refine(e=>new Set(e.map(n=>n.id)).size===e.length,"Question IDs must be unique"),Et=l(In.extend({correct:Tt}).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"),On=g([p({provider:s("domino"),resource:s("point-ledger")}),ni]),yd=r({source:On,query:t().max(100).optional(),cursor:t().regex(/^\d{1,6}$/).optional(),ids:l(t().min(1).max(100)).max(50).optional()}).strict(),kd=r({revision:o().int(),options:l(r({id:t(),label:t(),description:t().optional(),group:t().optional(),disabledReason:t().optional()})),nextCursor:t().nullable().default(null),cursor:t().nullable()}),qn=tn().transform(e=>new Date(e).toISOString()),yt=g([s(""),t().regex(/^\S{1,200}$/)]),_={label:t().min(1),description:t().optional()},wo=v("kind",[r({..._,kind:s("point-ledger"),default:a.or(s(""))}).strict(),r({..._,kind:s("datetime"),default:qn}).strict(),r({..._,kind:s("resource"),default:yt,source:On}).strict(),r({..._,kind:s("quiz"),default:Et}).strict(),r({..._,kind:s("text"),default:t(),minLength:o().int().nonnegative(),maxLength:o().int().positive(),multiline:m(),picker:t().optional(),decimals:o().int().min(0).max(255).optional(),secret:s(!0).optional()}).strict(),r({..._,kind:s("integer"),default:o().int(),min:o().int(),max:o().int()}).strict(),r({..._,kind:s("boolean"),default:m()}).strict(),r({..._,kind:s("choice"),default:t(),options:l(t().min(1)).min(1)}).strict()]),Ao=y(t().regex(/^[a-zA-Z][a-zA-Z0-9_]*$/),wo),G=y(t(),g([t(),o().finite(),m(),Et]));function Io(e){return e.length<=100&&/^(0|[1-9][0-9]*)$/.test(e)}function Oo(e){return e==="solana"||Br(e)||It(e)}function jd(e){return e?.kind==="integer"||e?.kind==="text"&&e.picker==="amount"}function qo(e){let n=e.secret?t().max(e.maxLength).refine(i=>i===""||i.length>=e.minLength,`Use at least ${e.minLength} characters`):t().min(e.minLength).max(e.maxLength);switch(e.picker){case"amount":return n.refine(Io,"Use a whole number of base units, such as 1000000");case"chain":return n.refine(Oo,'Use "solana", a Solana cluster ID such as "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1" (devnet), or an EVM chain ID such as "eip155:8453"');case"nft":return n.refine(Na,'Use an NFT collection such as "eip155:1/erc721:0x\u2026", "eip155:8453/erc1155:0x\u2026/1" for one ERC-1155 token ID, or "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/nft:<collection mint>" (mainnet; devnet is "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/nft:<collection mint>")');case"contract-call":return n.refine(Va,`Use a contract call: the contract's CAIP-10 ID and a view or pure function returning one uint, int, bool or address, such as "eip155:8453:0x\u2026 function stakedOf(address) view returns (uint256)"`);case"contract-event":return n.refine(Ja,'Use a contract event such as "eip155:8453:0x\u2026 Transfer(address indexed from, address indexed to, uint256 value)": name every argument, and index at least one address argument');case"solana-program":return n.refine(Xa,'Use a Solana program address in base58, such as "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"');default:return n}}function Sd(e,n){let i={};for(let[c,d]of Object.entries(e))switch(d.kind){case"point-ledger":i[c]=yt.default(d.default);break;case"datetime":i[c]=qn.default(d.default);break;case"resource":i[c]=yt.default(d.default);break;case"quiz":i[c]=Et.default(d.default);break;case"text":i[c]=qo(d).default(d.default);break;case"integer":i[c]=o().int().min(d.min).max(d.max).default(d.default);break;case"boolean":i[c]=m().default(d.default);break;case"choice":i[c]=z(d.options).default(d.default);break}return G.parse(r(i).strict().parse(n))}function xd(e,n){return Object.entries(e).filter(([i,c])=>(c.kind==="resource"||c.kind==="point-ledger")&&!n[i]).map(([i])=>i)}function wd(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 ee={key:a};function Ad(e){if("id"in e)throw new Error("Authoring definitions use key, not id");return a.parse(e.key)}var J=o().int().safe().nonnegative(),Mt=r({from:J,until:J}).strict().refine(e=>e.until>e.from,{message:"Window end must follow its start",path:["until"]}),$e=r({key:a,title:t().trim().min(1).max(120),window:Mt.optional(),enrollment:z(["none","required"]).default("none")}).strict(),Ro=$e.omit({key:!0,title:!0}).extend({...ee,title:t().trim().min(1).max(120).optional()}).strict().transform(e=>{let n=e;return $e.parse({...n,title:e.title??n.key})});function Id(e){return Ro.parse(e)}var Po=$e.extend({enrolledAt:J.nullable(),withdrawnAt:J.nullable().default(null),withdrawalReason:t().nullable().default(null)}),Rn=r({actionId:a,campaign:a}).strict(),Od=Rn.extend({member:a}),Co=Rn,qd=Co.extend({member:a,reason:t().trim().min(1).max(500)}),Rd=r({campaign:a,member:a,enrolledAt:J,withdrawnAt:J.nullable().default(null),withdrawalReason:t().nullable().default(null)});function ge(e,n){return n}var Pd=a.or(s("")).brand();function $o(e){return typeof e=="string"?e:e.key}var wr=r({key:a,title:t().trim().min(1).max(120)}).strict(),To=wr.omit({key:!0,title:!0}).extend({...ee,title:t().trim().min(1).max(120).optional()}).strict().transform(e=>wr.parse({...e,title:e.title??e.key}));function Cd(e){return ge("group",To.parse(e))}function Eo(e){return a.parse(e.key)}var Pn=t().trim().min(1).max(120),Cn=t().trim().min(1).max(1e3),kt=o().int().nonnegative().max(864e13),$d=r({actionId:a,key:a,title:Pn}).strict(),Td=r({title:Pn}).strict(),Ed=r({actionId:a,member:a,reason:Cn}).strict(),Md=r({actionId:a,reason:Cn}).strict(),Ud=r({reason:en.optional()}).strict(),Dd=p({cursor:w.optional(),limit:o().int().min(1).max(100).optional()}),Mo=r({key:a,title:t(),members:o().int().nonnegative(),createdAt:kt,archivedAt:kt.nullable()}),Zd=r({items:l(Mo),nextCursor:w.nullable()}),Uo=r({member:a,addedAt:kt.nullable()}),_d=r({items:l(Uo),nextCursor:w.nullable()}),$n=o().int().safe().nonnegative(),Tn=$n.positive(),En=v("scope",[r({kind:s("completion"),quest:a,scope:s("ever")}).strict(),r({kind:s("completion"),quest:a,scope:s("period"),period:X.exclude(["lifetime"])}).strict()]),Mn=r({kind:s("balance"),balance:a,minimum:Tn}).strict(),Un=r({kind:s("group"),group:a,title:t()}).strict(),Ut=v("kind",[En,Mn,Un]),fe=g([r({kind:s("completion"),quest:a,title:t(),scope:s("ever")}),r({kind:s("completion"),quest:a,title:t(),scope:s("period"),period:X.exclude(["lifetime"]),resetsAt:o().int().safe()}),r({kind:s("balance"),balance:a,title:t(),minimum:Tn,current:$n}),r({kind:s("group"),group:a,title:t()})]);function Nd(e,n={}){let i=e.key;return En.parse({kind:"completion",quest:i,scope:n.scope??"ever",..."period"in n?{period:n.period}:{}})}function Ld(e,n){return Mn.parse({kind:"balance",balance:$o(e),minimum:n})}function Bd(e){return Un.parse({kind:"group",group:Eo(e),title:e.title})}var ue=2147483647,ve=r({kind:s("points").default("points"),balance:a,amount:o().int().min(0).max(ue)}).strict(),Dt=r({badge:a.optional(),group:a.optional(),id:a,title:t().min(1).max(120),tiers:l(r({id:a,title:t().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:r({kind:s("untracked")}).strict(),fulfillment:v("kind",[r({kind:s("staff-handover")}).strict(),r({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"),Qd=r({id:a,key:a.nullable()}),B=r({kind:s("tier"),reward:Dt,tier:a}).strict().refine(e=>e.reward.tiers.some(n=>n.id===e.tier),"Unknown reward tier"),Do=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 Kd(e,n){return Do.parse({kind:"tier",tier:"awarded",reward:{id:e,badge:e,title:n,tiers:[{id:"awarded",title:"Awarded"}],inventory:{kind:"untracked"},fulfillment:{kind:"automatic"}}})}var Zo=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 Vd(e,n){return Zo.parse({kind:"tier",tier:"awarded",reward:{id:e,group:e,title:n,tiers:[{id:"awarded",title:"Awarded"}],inventory:{kind:"untracked"},fulfillment:{kind:"automatic"}}})}var _o=ri,jt=g([ve,B,_o]),No=t(),Lo=r({type:No,data:y(t(),M())});function Dn(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 Zn=g([r({kind:s("manual"),input:s("text"),constraints:yo,actor:z(["member","staff"]).optional()}).strict(),r({kind:s("manual"),input:s("url"),constraints:jo,actor:z(["member","staff"]).optional()}).strict(),r({kind:s("manual"),input:z(["photo","quiz","none"]),actor:z(["member","staff"]).optional()}).strict(),r({kind:s("automatic"),tracker:Xi.optional()}).strict()]),Bo=g(Zn.options.map(e=>e.strip())),_n=r({kind:z(["pass","fail","unclear"]),reason:t().min(1).max(2e3)}).strict(),Wd=r({text:t().min(1).max(16e3).refine(e=>e.trim().length>0,"Text must not be blank"),criteria:t().trim().min(1).max(2e3)}).strict(),Fd=_n,Hd={minRetryAfterMs:1e3,maxRetryAfterMs:36e5,retryAfterMs:6e4,horizonMs:864e5,maxDefers:100},Gd={minMs:1e3,maxMs:6048e5},Ar=o().int().min(I.retryCooldown.minMs).max(I.retryCooldown.maxMs),Zt=r({current:o().finite().nonnegative(),target:o().finite().positive(),reason:t().min(1).max(2e3)}).refine(e=>e.current<=e.target,{message:"Progress current must not exceed target"}),Jd=v("kind",[p({kind:s("defer"),reason:t().min(1).max(2e3),retryAfterMs:o().int().min(I.defer.minRetryAfterMs).max(I.defer.maxRetryAfterMs).optional(),until:o().int().safe().nonnegative().optional()}),Zt.safeExtend({kind:s("progress")}).strict(),r({kind:s("accept"),rewards:l(jt).max(10),completionKey:ht.optional()}).strict(),r({kind:s("reject"),reason:t().min(1).max(2e3),code:io.optional(),requestedReview:s(!0).optional()}).strict(),r({kind:s("review"),reason:t().min(1).max(2e3),rewards:l(jt).max(10).optional(),completionKey:ht.optional()}).strict()]),Qo=z(["workers-ai"]),Ko=z(["fixture-pass","fixture-fail","fixture-unclear","fixture-error","workers-ai"]),_t=l(jt).max(10).refine(e=>new Set(e.map(Dn)).size===e.length,"Use one entry per balance or shared reward"),me=t().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 /"),Vo=v("kind",[r({kind:s("link"),url:me.refine(e=>e.startsWith("https://"),"Use an HTTPS URL"),label:t().trim().min(1).max(120)}).strict()]),Wo=r({title:t().trim().min(1).max(120),description:t().max(4e3).optional(),action:Vo.optional()}).strict(),Fo=v("kind",[r({kind:s("account"),provider:xt}).strict(),r({kind:s("wallet"),chain:De.optional()}).strict()]),Te=r({steps:l(Wo).max(30).optional(),image:me.optional(),imageAlt:t().max(500).optional(),requirements:l(Fo).max(10).optional()}).strict(),Nn=Te.extend({quiz:xo.optional(),instructions:t().max(4e3).optional(),video:r({url:me,poster:me.optional(),captions:r({url:me,language:t().min(2).max(20),label:t().min(1).max(80)}).strict().optional()}).strict().optional()}).strict(),Ho=r({visible:m()}).strict(),Go=2,Jo=s(Go),Ln=r({quest:a,evaluatorProtocol:Jo,title:t().min(1).max(120),presentation:Nn.default({}),integrations:l(mo).max(10).default([]),integrationModules:l(uo).max(10).optional(),fields:Ao,values:G,rewards:_t,announcements:l(ho).max(3).optional(),humanReview:m(),trigger:Zn,performance:Mi.optional(),requires:l(Ut).max(30).default([]),campaign:$e.optional(),availability:Mt.optional(),completion:xe(Bi,$t),visibility:z(["visible","hidden"]).default("visible"),profile:Ho.default({visible:!1}),budgets:l(yn).max(20).default([]),authorBudgets:l(lo).max(20).optional(),retryCooldownMs:Ar.optional(),completionCooldownMs:Ar.optional()}).strict(),Yo=r({code:t().min(1).max(1e6)}).strict(),Xo=Yo.extend({runtime:Ct.optional(),settings:G,provider:Qo,expectedRelease:a.nullable().optional(),settingRenames:y(t(),t()).optional()}).strict(),Yd=r({releases:l(Xo).min(1).max(I.quests)}).strict(),Xd=r({quest:a,expectedRelease:a,set:G,reset:l(t()),presentation:Te.nullable().optional(),solanaIdls:y(t(),Vr.nullable()).optional()}).strict(),es=Ln.extend({completion:$t}),ts=k(es.extend({rewardEntries:l(Lo).optional(),key:a.optional(),code:t(),runtime:Ct.optional(),provider:Ko,id:a,createdAt:o(),origin:r({typeVersion:a}).strict().optional(),lifecycle:z(["active","paused","archived"]).default("active"),configuration:r({defaults:G,overrides:G,preserved:l(t()),presentation:Te.optional(),presentationDefaults:Te.optional()}).strict().optional(),solanaIdls:y(t(),ei).optional(),withheldSettings:l(t()).optional()})),em=r({code:t(),definition:Ln}),rs=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)))),ns=r({kind:s("quiz"),release:a.optional(),answers:rs}).strict(),_e=g([ns,xn,wn]),tm=r({actionId:a,quest:a,member:a,evidence:a.optional(),input:_e.optional(),release:a.optional(),faultAfterReview:m().optional()}).strict(),rm={Queued:"queued",Evaluating:"evaluating",Deferred:"deferred",Accepted:"accepted",Progressed:"progressed",Rejected:"rejected",NeedsReview:"needs-review",Failed:"failed"},as=t(),nm={Relay:"relay",Evaluator:"evaluator"},is=t(),Ne=r({id:a,release:a,quest:a,member:a,evidence:a.nullable(),input:_e.optional(),status:as,reason:t().nullable(),retries:o(),generation:o(),completion:t().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:t().nullable().default(null),codeSource:is.nullable().optional(),progress:Zt.nullable().default(null),requestedReview:m().default(!1),createdAt:o()}),am={Open:"open",Submitted:"submitted",Discarded:"discarded",Expired:"expired"},os=t(),ss=k(r({id:a,quest:a,member:a,release:a.nullable(),input:_e.nullable(),evidence:a.nullable(),reviewRequired:m(),status:os,attempt:a.nullable(),createdAt:o(),updatedAt:o(),expiresAt:o()})),im=r({release:a.nullable().optional(),input:_e.nullable().optional(),evidence:a.nullable().optional()}).strict(),om=k(r({submission:ss,attempt:Ne,replayed:m()})),cs=r({id:o(),attempt:t().nullable(),kind:t(),detail:t(),actor:t().nullable().default(null),at:o()}),ls=r({item:a,revision:o().int().nonnegative()}).strict(),ze=r({item:a,label:t().min(1).max(80)}).strict(),ds=v("kind",[r({kind:s("untracked")}).strict(),r({kind:s("at-pickup"),tiers:l(r({tier:a,variants:l(ze).min(1).max(100)}).strict()).min(1).max(100)}).strict()]),sm=r({reward:Dt,revision:o().int().nonnegative(),policy:ds}),cm=v("kind",[r({kind:s("untracked")}).strict(),r({kind:s("at-pickup"),revision:o().int().nonnegative(),variants:l(ze.extend({available:o().int().nonnegative()}))}).strict()]),lm=r({reward:a,revision:o().int().nonnegative(),actionId:a,policy:v("kind",[r({kind:s("untracked")}).strict(),r({kind:s("at-pickup"),tiers:l(r({tier:a,variants:l(ze.extend({item:a.optional()})).min(1).max(100)}).strict()).min(1).max(100)}).strict()])}).strict(),Bn=r({completion:a,reason:t(),flaggedAt:o(),remainingTier:a.nullable()}),Re={id:a,member:a,reward:Dt,earnedTier:a,tier:a,revision:o().int().positive()},dm=v("status",[r({...Re,status:s("available")}).strict(),r({...Re,status:s("handing-over"),handover:a,startedAt:o(),allocation:ze.optional()}).strict(),r({...Re,status:s("collected"),handover:a,startedAt:o(),allocation:ze.optional(),collectedAt:o(),recovery:Bn.optional()}).strict(),r({...Re,status:s("void"),voidedAt:o()}).strict()]),ms=r({id:a,title:t(),tiers:l(r({id:a,title:t()}).loose()),inventory:r({kind:t()}).loose(),fulfillment:r({kind:t()}).loose()}).loose(),ce={id:a,member:a,reward:ms,earnedTier:a,tier:a,revision:o().int()},Ir=r({item:a,label:t()}).loose(),Qn=g([v("status",[r({...ce,status:s("available")}).loose(),r({...ce,status:s("handing-over"),handover:a,startedAt:o(),allocation:Ir.optional()}).loose(),r({...ce,status:s("collected"),handover:a,startedAt:o(),allocation:Ir.optional(),collectedAt:o(),recovery:Bn.optional()}).loose(),r({...ce,status:s("void"),voidedAt:o()}).loose()]),r({...ce,status:t()}).loose().transform(({status:e,...n})=>({...n,status:"unsupported",reportedStatus:e}))]),mm=r({actionId:a,revision:o().int().positive(),selection:ls.optional()}).strict(),um=r({actionId:a,handover:a}).strict(),zm=r({actionId:a,revision:o().int().positive(),reason:t().trim().min(1).max(500)}).strict(),bm={Quest:"quest",Leaderboard:"leaderboard"},us=t().min(1).max(64),zs=r({kind:us,id:a}),bs=r({key:t().default("once"),id:a,quest:a,member:a,source:zs.optional()}),ps=v("kind",[r({kind:s("available"),input:z(["photo","quiz","none","text","url"])}).strict(),r({kind:s("completed")}).strict(),r({kind:s("locked"),missing:l(fe).min(1)}).strict(),r({kind:s("blocked"),reason:z(["budget-exhausted","connection-required","wallet-required","paused","outside-window","enrollment-required"]),window:z(["tracker","quest"]).optional(),resetsAt:o().int().safe().optional()}).strict(),r({kind:s("staff-required")}).strict(),r({kind:s("automatic")}).strict(),r({kind:s("checking"),attempt:a}).strict(),r({kind:s("needs-review"),attempt:a}).strict(),r({kind:s("retryable"),attempt:a}).strict()]),gs=g(ps.options.map(e=>e.strip())),fs=r({id:a,scope:z(["member","project"]),period:z(["day","week","month","lifetime"]),remaining:o().int().safe().nonnegative(),resetsAt:o().int().safe().nullable()}),pm=k(r({member:a,quests:l(r({quest:a,key:a.optional(),release:a.optional(),title:t(),presentation:Nn.default({}),connections:l(xt).default([]),trigger:Bo,availability:gs,completed:m(),completion:$t.default({kind:"once"}),streak:Vi.nullable().optional(),counter:_i.nullable().optional(),progress:Zt.nullable().default(null),completionCount:o().int().nonnegative().default(0),visibility:z(["visible","hidden"]).default("visible"),missing:l(fe),campaign:Po.nullable().default(null),window:Mt.nullable().default(null),budgets:l(fs).default([]),retryAt:o().int().safe().optional(),nextAvailableAt:o().int().safe().optional(),attempt:Ne.nullable()})),entitlements:l(Qn)})),gm=k(r({releases:l(ts),completions:l(bs),entitlements:l(Qn),attempts:l(Ne),balances:l(r({member:t(),balance:t(),earned:o(),held:o(),available:o()})),events:l(cs)})),fm=r({id:a,member:a,type:z(["image/jpeg","image/png"]),size:o()}),vm=r({error:t(),code:t().optional(),window:z(["tracker","quest"]).optional(),missing:l(fe).optional(),retryAt:o().int().safe().optional()}),hm=r({actionId:a,generation:o().int().nonnegative(),decision:z(["accept","reject"]),reason:t().trim().min(1).max(2e3)}).strict(),ym=r({actionId:a,reason:t().trim().min(1).max(2e3)}).strict(),km=r({actionId:a,reason:t().trim().min(1).max(2e3)}).strict(),jm=r({actionId:a,quest:a,decidedBefore:o().int().nonnegative(),reason:t().trim().min(1).max(2e3)}).strict(),vs=g([r({days:o().int().min(1).max(3650)}).strict(),s("keep")]),Sm=r({actionId:a,evidenceRetention:vs}).strict(),xm=r({item:a,quantity:o().int().min(0).max(1e4)}).strict(),wm=r({actionId:a,member:a,item:a,balance:a,price:o().int().positive().max(1e4)}).strict(),Kn={limit:o().int().min(1).max(100).default(25),cursor:t().min(1).max(4096).optional()},Am=r({...Kn,member:a.optional(),quest:a.optional()}).strict(),Im=r({...Kn,prefix:a.optional()}).strict(),hs=r({attempt:Ne,title:t(),checks:l(r({criteria:t(),result:_n}))}),Om=r({items:l(hs).max(100),nextCursor:t().nullable()}),qm=r({items:l(r({member:a})).max(100),nextCursor:t().nullable()}),Rm=r({actionId:a,name:t().trim().min(1).max(80)}).strict(),Pm=r({id:a,name:t()}),Cm=p({contentAttempt:a,observation:a,observedAt:o().int().safe().nonnegative(),metrics:L,rewards:_t}),$m=Ei.extend({content:t().min(1).max(256)}),Tm=p({current:p({state:z(["content-pending","content-unqualified","waiting","pending","qualified","unqualified","needs-review","failed","superseded"]),reason:t().nullable(),contentAttempt:a,attempt:a.nullable(),reward:gn.shape.reward}),items:l(p({attempt:a,contentAttempt:a,observation:a,observedAt:o(),metrics:L,state:z(["pending","qualified","unqualified","needs-review","failed","superseded"]),reason:t().nullable()})),nextCursor:w.nullable()}),Nt=r({name:t().trim().min(1).max(120),description:t().trim().max(1e3).default("")}).strict(),Em=Nt.extend({actionId:a,key:a.optional()}).strict(),ys=Nt.extend({id:a}),Mm=ys.extend({archivedAt:o().int().nonnegative().nullable()}),ks=Nt.extend({key:a}).strict(),Um=g([ks,r({code:t().min(1).max(2e6)}).strict()]),js=r({id:a,key:a.nullable(),name:t()}),Ee=o().int().safe(),Ss=r({ledger:js,balance:Ee,available:Ee}),Dm=r({items:l(Ss)}),Zm={Award:"award",Spend:"spend",Adjust:"adjust",Reverse:"reverse"},xs=t().min(1).max(64),Vn=r({id:a,amount:Ee,kind:xs,at:Ee.nonnegative(),quest:a.nullable(),reverses:a.nullable(),imported:m().optional()}),_m=p({ledger:a,cursor:w.optional()}),Nm=r({items:l(Vn),nextCursor:w.nullable()}),Z=o().int().nonnegative().safe(),Wn=z(["private","participants","public"]),Me=z(["x","discord","google"]),Or=z(["x","discord"]),ws=l(Or).max(Or.options.length).refine(e=>new Set(e).size===e.length,"List each provider once"),st=t().min(1).max(100),As=v("source",[r({source:s("upload"),url:t().url(),seed:st}),r({source:s("account"),provider:Me,url:t().url(),seed:st}),r({source:s("generated"),seed:st})]),Fn=r({id:a,name:t(),avatar:As}),Is=/[\p{Cc}----]/u,Os=t().max(200).transform(e=>e.normalize("NFC").replace(/\s+/g," ").trim()).pipe(t().min(1,"Enter a name").max(40,"Use at most 40 characters").refine(e=>!Is.test(e),"Use visible characters only")),Lm=r({displayName:Os.nullable().optional(),avatar:v("source",[r({source:s("account"),provider:Me}).strict(),r({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"),qs=Fn.extend({displayName:t().nullable(),avatarChoice:z(["default","upload","account","generated"]),avatarProvider:Me.nullable(),hidden:m(),locked:m(),visibility:Wn,options:l(r({provider:Me,name:t().nullable(),givenName:t().nullable().default(null),imageUrl:t().url().nullable()}))}),Hn=t().min(1).max(512),Bm=r({limit:q.number().int().min(1).max(100).default(20),cursor:Hn.optional()}).strict(),Rs=r({quest:a,key:a.optional(),title:t(),completions:Z.positive(),lastCompletedAt:Z.nullable()}),Qm=r({items:l(Rs),nextCursor:Hn.nullable()}),Km=r({program:a,key:a.optional(),title:t(),invited:Z,qualified:Z,milestones:l(r({id:a,count:Z,reached:m()}))}),Ps=r({visibility:Wn,defaults:ws,revision:Z,actor:t().nullable(),updatedAt:Z.nullable()}),Vm=Ps.omit({revision:!0,actor:!0,updatedAt:!0}).extend({actionId:a,expectedRevision:Z,reason:t().trim().min(1).max(500)}).strict(),Wm=r({actionId:a,resetName:m().default(!1),removeAvatar:m().default(!1),lock:m().optional(),reason:t().trim().min(1).max(1e3)}).strict().refine(e=>e.resetName||e.removeAvatar||e.lock!==void 0,"Choose an action"),Fm=qs.omit({options:!0}).extend({member:a,lockedAt:Z.nullable(),lockedBy:t().nullable(),lockedReason:t().nullable(),updatedAt:Z}),Hm=5*1024*1024,Gm=["image/jpeg","image/png","image/webp"],S=o().int().safe(),O=S.nonnegative().max(864e13),Gn=v("kind",[r({kind:s("all-time")}).strict(),r({kind:s("fixed"),start:O,end:O}).strict().refine(e=>e.end>e.start,"Window end must follow its start"),r({kind:s("rolling"),days:S.min(1).max(3660)}).strict(),r({kind:s("calendar"),period:X.exclude(["lifetime"])})]),Cs={window:Gn.default({kind:"all-time"}),quests:l(a).min(1).max(100).optional()},Jn=v("kind",[r({kind:s("balance")}).strict(),r({kind:s("earned"),...Cs}).strict(),r({kind:s("net"),window:Gn.default({kind:"all-time"})}).strict()]).default({kind:"balance"}),$s=g([ve,B]),Yn=r({ranks:rr([S.positive(),S.positive()]).refine(([e,n])=>n>=e,{message:"Prize rank range must end at or after it starts"}),rewards:l($s).min(1).max(20)}).strict(),Ue=t().regex(/^(0|[1-9]\d{0,77})$/,'Use a whole number of base units, such as "1000000"'),Ts=g([s("points"),r({code:t().trim().min(1).max(32),decimals:S.min(0).max(36)}).strict()]),Xn={amount:Ue.refine(e=>e!=="0",{message:"A pool must hold a positive amount"}),unit:Ts,ledger:a.optional(),minScore:S.optional()},Es=(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)>ue&&n.addIssue({code:"custom",message:`A points pool holds at most ${ue} points`,path:["amount"]})):e.ledger!==void 0&&n.addIssue({code:"custom",message:"Only a points pool pays into a point ledger",path:["ledger"]})},Ms=r(Xn).strict().superRefine(Es),Us=r({at:s("window-end"),ties:z(["shared","earliest"]),prizes:l(Yn).max(50),pool:Ms.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,c]of e.prizes.entries()){let d=c.rewards.map(Dn);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 c=e.prizes[i-1];e.prizes[i].ranks[0]<=c.ranks[1]&&n.addIssue({code:"custom",message:"Prize rank ranges must be ordered and must not overlap",path:["prizes",i,"ranks"]})}}),ea=r({id:a,key:a.optional(),title:t().trim().min(1).max(120),balance:a,score:Jn,access:z(["participants","public"]).default("participants"),group:a.optional(),includeUnscored:m().optional(),ties:z(["shared","earliest"]).optional(),settle:Us.optional()}).strict(),ta=(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=ea.superRefine(ta),Zs=k(Ds),_s=ea.omit({id:!0}).extend({...ee,score:xe(Qi,Jn),group:a.optional()}).strict().superRefine(ta),Jm=g([_s,r({code:t().min(1).max(2e6)}).strict()]),Ns=r({archivedAt:o().int().nonnegative().nullable().optional(),version:a,definition:Zs,publishedAt:O,actor:t().nullable()}),Ym=r({limit:q.number().int().min(1).max(100).default(25),cursor:t().max(4096).optional()}).strict(),ct=r({participant:a,member:a.optional(),name:t(),score:S,rank:S.positive(),profile:Fn.nullable()}),qr=r({leaderboard:a,title:t(),version:a,calculation:z(["balance","earned","net"]),period:r({start:O.nullable(),end:O.nullable()}),calculatedAt:O,lastEntryAt:O.nullable(),total:S.nonnegative(),items:l(ct),me:ct.nullable(),nearby:l(ct),nextCursor:t().nullable()}),Xm=r({leaderboard:a,key:a.optional(),title:t(),profile:a,rank:S.positive().nullable(),score:S.nullable(),total:S.nonnegative()}),eu=p({board:a,cursor:w.optional()}),tu=r({leaderboard:a,period:r({start:O.nullable(),end:O.nullable()}),items:l(Vn),nextCursor:w.nullable()}),ru=r({published:Ns,before:qr.nullable(),after:qr}),ra={actionId:a,member:a,balance:a,reason:t().trim().min(1).max(1e3)},Pe={...ra,effectiveAt:O.optional()},nu=v("kind",[r({...Pe,kind:s("award"),referralEligible:m().optional(),amount:S.positive()}).strict(),r({...Pe,kind:s("spend"),amount:S.positive()}).strict(),r({...Pe,kind:s("adjust"),amount:S.refine(e=>e!==0)}).strict(),r({...Pe,kind:s("set"),total:S.nonnegative(),expectedTotal:S.nonnegative(),classification:z(["earned","spend"])}).strict(),r({...ra,kind:s("reverse"),entry:a,amount:S.positive()}).strict()]),na=r({id:a,completion:t().nullable(),member:a,balance:a,amount:S,kind:z(["award","spend","adjust","reverse"]),effectiveAt:O,receivedAt:O,quest:a.nullable(),original:a.nullable(),reason:t(),actor:t().nullable(),import:a.nullable().optional()}),au=r({items:l(na),nextCursor:w.nullable(),next:o().nullable()}),iu=r({entry:na,total:S.nonnegative()}),ou=r({member:a,balance:a,total:S.nonnegative(),held:S.nonnegative()}),su=r({actionId:a,member:a,excluded:m(),reason:t().trim().min(1).max(1e3)}).strict(),cu=r({leaderboard:a,group:a,generated:m(),boundAt:O.nullable()}),lu=r({actionId:a,group:a,reason:t().trim().min(1).max(1e3)}).strict(),du=r({actionId:a,member:a,included:m(),reason:t().trim().min(1).max(1e3)}).strict(),Ls=z(["pending","approved"]),Bs=r({id:a,leaderboard:a,version:a,title:t(),period:r({start:O,end:O}),ties:z(["shared","earliest"]),status:Ls,total:S.nonnegative(),winners:S.nonnegative(),createdAt:O,approvedAt:O.nullable(),approvedBy:t().nullable(),approvalReason:t().nullable()}),Qs=r({member:a,score:S,rank:S.positive(),position:S.positive(),scoredAt:O,prizes:l(S.nonnegative()),completion:a.nullable(),revokedAt:O.nullable(),share:Ue.optional()}),Ks=r({...Xn,allocated:Ue,unallocated:Ue}),Vs=r({content:t(),member:a,observedAt:O.nullable()}),mu=Bs.extend({prizes:l(Yn),excluded:l(a),unmeasured:l(Vs).optional(),pool:Ks.nullable().optional(),rows:l(Qs)}),uu=r({actionId:a,reason:t().trim().min(1).max(500)}).strict();var oa=["7d","30d","90d","all"];var Ws=["number","line","bar","table"],C=["number","line","bar","table"],aa=["number","line","table"],Fs=["number","bar","table"],he=["quest","group","tracker"],ia={"members.signUps":{definition:"Members who joined the project, by when they joined.",kind:"count",breakdowns:[],filters:["group"],charts:C,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:C,ledger:!1},"quests.attempts":{definition:"Attempts, by when they were created.",kind:"count",breakdowns:["quest"],filters:he,charts:C,ledger:!1},"quests.completions":{definition:"Quest completions never revoked, by when they completed.",kind:"count",breakdowns:["quest"],filters:he,charts:C,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:he,charts:C,ledger:!1},"quests.rejections":{definition:"Rejected attempts, by when they were decided.",kind:"count",breakdowns:["quest","source","reason"],filters:he,charts:C,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:he,charts:aa,ledger:!1,minimumDenominator:10},"points.awarded":{definition:"Points in the ledger's award entries, by effective date.",kind:"count",breakdowns:[],filters:["group"],charts:C,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:C,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:C,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:C,ledger:!0},"offers.redemptions":{definition:"Fulfilled offer redemptions, by when they were redeemed.",kind:"count",breakdowns:["offer"],filters:["offer","group"],charts:C,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:C,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:C,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:aa,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:C,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:C,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:C,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:Fs,ledger:!1}};var fu={panels:24,dashboards:20},Hs={number:1,line:2,bar:2,table:4},ye=t().trim().min(1).max(120),Bt=t().trim().min(1).max(500),Gs=g([a,l(a).min(1).max(100)]),Js=y(t().min(1).max(100),Gs),sa={key:a,title:ye,description:Bt.optional(),metric:t().min(1).max(100),breakdown:t().min(1).max(100).optional(),filter:Js.optional(),ledger:a.optional(),chart:z(Ws)},Ys=p({...sa,width:o().int().min(1).max(4).optional()}),Qt=p({key:a,title:ye,description:Bt.optional(),defaultRange:z(oa).optional(),position:o().int().min(0).max(1e3).optional(),sections:l(p({title:ye.optional(),panels:l(Ys).min(1).max(100)})).min(1).max(100)}),ca=p({key:a,title:ye,description:Bt.optional(),defaultRange:z(oa),position:o().int().min(0).max(1e3).optional(),sections:l(p({title:ye.optional(),panels:l(p({...sa,width:o().int().min(1).max(4)}))}))}),vu=g([Qt,r({code:t().min(1).max(2e6)}).strict()]);function hu(e){let n=Qt.parse(e);return ca.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(c=>({...c,width:c.width??Hs[c.chart]}))}))})}function yu(e){return e.sections.flatMap(n=>[...n.panels])}function ku(e){let n=e.sections.flatMap(d=>[...d.panels]),i=`dashboard "${e.key}"`;if(n.length>I.dashboardPanels)return{code:"too-many-panels",message:`The ${i} has ${n.length} panels; a dashboard holds at most ${I.dashboardPanels}.`};let c=new Set;for(let d of n){let u=`Panel "${d.key}" of ${i}`;if(c.has(d.key))return{code:"duplicate-key",panel:d.key,message:`The ${i} has two panels with the key "${d.key}".`};if(c.add(d.key),!Object.hasOwn(ia,d.metric))return{code:"unknown-metric",panel:d.key,message:`${u} names the unknown metric "${d.metric}". Run domino analytics metrics for the catalog.`};let b=ia[d.metric];if(d.breakdown!==void 0&&!b.breakdowns.includes(d.breakdown))return{code:"breakdown-not-accepted",panel:d.key,message:`${u}: ${d.metric} has no "${d.breakdown}" breakdown; it takes ${b.breakdowns.join(", ")||"none"}.`};for(let f of Object.keys(d.filter??{}))if(!b.filters.includes(f))return{code:"filter-not-accepted",panel:d.key,message:`${u}: ${d.metric} takes no "${f}" filter; it takes ${b.filters.join(", ")||"none"}.`};if(!b.charts.includes(d.chart))return{code:"chart-not-accepted",panel:d.key,message:`${u}: ${d.metric} can't be drawn as "${d.chart}"; it takes ${b.charts.join(", ")}.`};if(d.chart==="number"&&d.breakdown!==void 0)return{code:"breakdown-not-accepted",panel:d.key,message:`${u}: 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:`${u}: a table panel needs a breakdown; ${d.metric} takes ${b.breakdowns.join(", ")||"none"}.`};if(b.ledger&&d.ledger===void 0)return{code:"ledger-required",panel:d.key,message:`${u}: ${d.metric} needs a point ledger; set ledger to its key.`};if(!b.ledger&&d.ledger!==void 0)return{code:"ledger-not-accepted",panel:d.key,message:`${u}: ${d.metric} reads no point ledger; remove ledger.`}}return null}var ju=k(r({key:a,title:t(),change:z(["created","updated","unchanged"]),definition:ca})),Lt=e=>typeof e=="string"?e:e.key;function Su(e){let n=we("Dashboard",Qt,{...e,sections:e.sections.map(i=>({...i,panels:i.panels.map(c=>({...c,...c.ledger===void 0?{}:{ledger:Lt(c.ledger)},...c.filter===void 0?{}:{filter:Object.fromEntries(Object.entries(c.filter).map(([d,u])=>[d,Array.isArray(u)?u.map(Lt):Lt(u)]))}}))}))});return ge("dashboard",n)}var xu=r({title:t(),description:t(),tags:l(t()),durationSeconds:o().int().nonnegative(),publishedAt:o().int().nonnegative()}),wu=["views","likes","comments"],Au=r({title:t(),description:t(),durationSeconds:o().int().nonnegative(),width:o().int().nonnegative(),height:o().int().nonnegative(),createdAt:o().int().nonnegative(),shareUrl:t(),isAigc:m()}),Iu=["views","likes","comments","shares"];var Xs=["not-linked","provider-unavailable","author-error"],ec=e=>Xs.includes(e),qu=oe({code:t().min(1),message:t().min(1),retryable:m()}),la=Symbol.for("@domino-sdk/relay/CapabilityError"),Ru=class da extends Error{code;retryable;constructor(n,i,c={}){super(i),this.name="CapabilityError",this.code=n,this.retryable=c.retryable??n==="provider-unavailable",Object.defineProperty(this,la,{value:!0})}static[Symbol.hasInstance](n){return typeof n=="object"&&n!==null&&n[la]===!0}static from(n){return new da(n.code,n.message,{retryable:ec(n.code)&&n.retryable})}};var A=o().int().safe().nonnegative(),ua=p({scope:z(["member","project"]),period:X,limit:A}),Wt=p({key:a,qualifiedBy:a,balance:a,metrics:l(Ze).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:l(ua).max(8).default([]).refine(e=>new Set(e.map(n=>n.scope+":"+n.period)).size===e.length,"Give each scope and period one budget")}),Tu=p({metrics:L,baseline:L}),Eu=p({target:A,baseline:A}),za=p({actionId:a,code:t().min(1).max(1e6)}),ke=p({version:a,definition:Wt,publishedAt:A}),Mu=p({rule:a,content:t().min(1).max(256),member:a.optional(),cursor:w.optional()}),ba=p({id:a,day:t(),observation:a,qualification:a,earned:A,growth:A,paid:A,excluded:A,entry:a.nullable(),createdAt:A}),Uu=p({rule:ke,account:p({member:a,earned:A,accounted:A,paid:A,excluded:A,pending:A,counters:L,baseline:L,observation:a.nullable(),nextSettlementAt:A.nullable(),reason:t().nullable()}).nullable(),items:l(ba),nextCursor:w.nullable()}),Du=p({code:t().min(1).max(1e6)}),Zu=za.extend({expectedVersion:a,previewHash:a}),Le=t().regex(/^(0|[1-9][0-9]*)$/),tc=p({rule:a,fromVersion:a,toVersion:a,previewHash:a,definition:Wt,boundary:s("available-eligible-observation"),settlement:s("deferred"),summary:p({knownAdmissions:A,accounts:A,uninitialized:A,pendingTransitions:A,earned:Le,paid:Le,excluded:Le,pending:Le})}),rc=ke.extend({previousVersion:a.nullable()}),_u=r({items:l(r({version:a,definition:r({...Wt.shape,budgets:l(r(ua.shape)).max(8).default([])}),publishedAt:A,previousVersion:a.nullable()})),nextCursor:w.nullable()}),Nu=p({items:l(rc),next:A.nullable()}),Lu=p({rule:a,before:q.number().int().positive().safe().optional()}),Bu=p({current:ke.nullable(),requested:ke,items:l(p({from:a,to:a,baseline:L,observedAt:A,settlement:ba})),nextCursor:w.nullable()}),nc=za.omit({actionId:!0}),Kt=nc.extend({rule:ke}),Qu=v("kind",[Kt.extend({kind:s("create")}),Kt.extend({kind:s("unchanged")}),Kt.extend({kind:s("change"),change:tc})]),Vt=g([ve,B]),$=o().int().safe().nonnegative(),te=t().trim().min(1).max(1e3),Ft=r({id:a,key:a.optional(),title:t().trim().min(1).max(120),enabled:m().default(!0),qualification:v("kind",[r({kind:s("signup")}).strict(),r({kind:s("quest"),quest:a}).strict(),r({kind:s("external")}).strict()]),inviterGroup:a.optional(),rewards:r({inviter:l(Vt).max(10).default([]),invitee:l(Vt).max(10).default([])}).strict().default({inviter:[],invitee:[]}),milestones:l(r({id:a,count:$.min(1),rewards:l(Vt).min(1).max(10)}).strict()).max(30).default([]),bonuses:l(r({id:a,balance:a,basisPoints:$.min(1).max(1e4),quests:l(a).min(1).max(100).optional(),external:m().default(!1),durationDays:$.min(1).max(36500).optional(),maxPoints:$.min(1).optional()}).strict()).max(20).default([])}).strict().superRefine((e,n)=>{for(let i of[e.milestones,e.bonuses])new Set(i.map(c=>c.id)).size!==i.length&&n.addIssue({code:"custom",message:"Rule IDs must be unique"})}),ac=r(Ft.shape).omit({id:!0}).extend({...ee,inviterGroup:a.optional()}).strict().superRefine((e,n)=>{for(let i of[e.milestones,e.bonuses])new Set(i.map(c=>c.id)).size!==i.length&&n.addIssue({code:"custom",message:"Rule keys must be unique"})}),Ku=g([ac,r({code:t().min(1).max(2e6)}).strict()]),Vu=r({archivedAt:o().int().nonnegative().nullable().optional(),version:a,definition:Ft,publishedAt:$,actor:t().nullable()}),Wu=r({actionId:a,code:a}).strict(),Fu=r({actionId:a,suspended:m(),reason:te}).strict(),Hu=r({actionId:a,qualified:m(),reason:te}).strict(),Gu=r({actionId:a,reason:te}).strict(),Ju=v("kind",[r({kind:s("suspend"),actionId:a,member:a,suspended:m(),reason:te}).strict(),r({kind:s("qualify"),actionId:a,member:a,program:a,qualified:m(),reason:te}).strict(),r({kind:s("resolve-reward"),actionId:a,entitlement:a,reason:te}).strict()]),ic=r({member:a,inviter:a,acceptedAt:$,suspended:m(),import:a.nullable().optional()}),pa=r({id:a,program:a,kind:z(["bonus","fixed","milestone"]),balance:a,earned:$,settled:$,outstanding:$}),Yu=r({code:a,attributed:$,programs:l(r({definition:Ft,qualified:$,milestones:l(r({id:a,count:$,reached:m()}))})),accounts:l(pa)}),Xu=r({items:l(r({id:$,program:a,balance:a,amount:o().int().safe(),at:$,reason:t()})),nextCursor:w.nullable()}),ez=r({relationships:l(ic),qualifications:l(r({member:a,program:a,qualified:m(),qualifiedAt:$,import:a.nullable().optional()})),accounts:l(pa.extend({member:a,invitee:t()})),reviews:l(r({entitlement:a,member:a,program:a,reason:t()})),nextCursor:w.nullable().default(null),next:$.nullable()}),Be=o().int().safe().nonnegative(),ga=ve.extend({amount:o().int().positive().max(ue)}),oc=r({perMember:o().int().positive().max(1e4)}).strict(),fa=r({id:a,key:a.optional(),title:t().trim().min(1).max(120),price:ga,reward:B,stock:Be.max(1e6),limit:oc.default({perMember:1}),requires:l(Ut).max(30).optional(),enabled:m().default(!0)}).strict(),va=fa.omit({id:!0,title:!0,enabled:!0}).extend({...ee,title:t().trim().min(1).max(120).optional(),enabled:s(!0).optional()}).strict().transform(({enabled:e,...n})=>({...n,title:n.title??n.reward.reward.title,enabled:!0})),tz=g([va,r({code:t().min(1).max(2e6)}).strict()]),sc=k(v("kind",[r({kind:s("available"),remaining:Be}).strict(),r({kind:s("out-of-stock")}).strict(),r({kind:s("limit-reached")}).strict(),r({kind:s("paused")}).strict()])),rz=k(fa.extend({revision:o().int().positive(),available:Be,redeemed:Be,availability:sc,archivedAt:o().int().nonnegative().nullable().optional(),missing:l(fe).default([])})),nz=r({actionId:a}).strict(),ma={id:a,offer:a,member:a,reservation:a,price:ga,reward:B,entitlement:a,revision:o().int().positive(),redeemedAt:o().int().safe().nonnegative()},cc=k(v("status",[r({...ma,status:s("fulfilled")}).strict(),r({...ma,status:s("canceled"),canceledAt:o().int().safe().nonnegative(),reason:t().min(1).max(500)}).strict()])),az=p({member:a.optional(),cursor:w.optional(),limit:q.number().int().min(1).max(100).optional()}),iz=r({items:l(cc),nextCursor:w.nullable()}),oz=r({actionId:a,revision:o().int().positive(),enabled:m(),reason:t().trim().min(1).max(500)}).strict(),sz=r({actionId:a,revision:o().int().positive(),reason:t().trim().min(1).max(500)}).strict();function cz(e){return ge("offer",we("Offer",va,e))}export{we as a,a as b,Rr as c,Pr as d,St as e,zc as f,bc as g,pc as h,xa as i,gc as j,fc as k,vc as l,hc as m,Cr as n,yc as o,k as p,Er as q,kc as r,w as s,jc as t,Sc as u,xc as v,xt as w,Aa as x,wc as y,Mr as z,Ac as A,Ic as B,Oc as C,qc as D,Rc as E,Pc as F,Cc as G,Ur as H,Dr as I,Oa as J,qa as K,Zr as L,$c as M,Tc as N,Ra as O,Ec as P,_r as Q,Pa as R,Mc as S,Uc as T,Dc as U,Zc as V,_c as W,Nc as X,Lc as Y,Bc as Z,I as _,wt as $,De as aa,At as ba,Qc as ca,Kc as da,Lr as ea,Ca as fa,Br as ga,$a as ha,Ta as ia,Vc as ja,Wc as ka,Fc as la,It as ma,Ea as na,Hc as oa,Gc as pa,Jc as qa,Yc as ra,dt as sa,Ma as ta,Xc as ua,el as va,tl as wa,rl as xa,nl as ya,_a as za,Na as Aa,al as Ba,Qa as Ca,Ka as Da,Va as Ea,il as Fa,ol as Ga,Ga as Ha,Ja as Ia,sl as Ja,cl as Ka,ll as La,Xa as Ma,Vr as Na,ei as Oa,dl as Pa,ml as Qa,ul as Ra,zl as Sa,Ot as Ta,qt as Ua,ti as Va,bl as Wa,pl as Xa,ri as Ya,ni as Za,gl as _a,fl as $a,Fr as ab,vl as bb,pi as cb,hl as db,yl as eb,hi as fb,yi as gb,ki as hb,kl as ib,rn as jb,jl as kb,ji as lb,nn as mb,Rt as nb,Sl as ob,be as pb,xl as qb,pe as rb,wl as sb,an as tb,Si as ub,xi as vb,on as wb,Y as xb,sn as yb,wi as zb,Ai as Ab,Al as Bb,Il as Cb,V as Db,Ol as Eb,Ii as Fb,ln as Gb,Oi as Hb,qi as Ib,dn as Jb,mn as Kb,ql as Lb,Rl as Mb,un as Nb,Ri as Ob,Pl as Pb,Cl as Qb,$l as Rb,Pi as Sb,Ci as Tb,zn as Ub,$i as Vb,Tl as Wb,El as Xb,Ml as Yb,Ti as Zb,bn as _b,Ul as $b,Dl as ac,Zl as bc,_l as cc,Nl as dc,Ll as ec,Bl as fc,Ql as gc,Kl as hc,Vl as ic,Wl as jc,Fl as kc,Ei as lc,gn as mc,Hl as nc,Ze as oc,L as pc,Mi as qc,Ui as rc,Di as sc,Zi as tc,fn as uc,_i as vc,Ni as wc,Gl as xc,Jl as yc,Yl as zc,Xl as Ac,Li as Bc,vn as Cc,de as Dc,Bi as Ec,Qi as Fc,X as Gc,ed as Hc,td as Ic,rd as Jc,Ki as Kc,Vi as Lc,Wi as Mc,nd as Nc,qe as Oc,yr as Pc,Fi as Qc,Hi as Rc,ad as Sc,Gi as Tc,Ji as Uc,Yi as Vc,Xi as Wc,id as Xc,od as Yc,sd as Zc,eo as _c,to as $c,ro as ad,cd as bd,jr as cd,ao as dd,ld as ed,dd as fd,so as gd,Ct as hd,co as id,md as jd,ud as kd,$t as ld,ht as md,yn as nd,lo as od,zd as pd,bd as qd,mo as rd,uo as sd,zo as td,kn as ud,pd as vd,gd as wd,jn as xd,po as yd,go as zd,fo as Ad,vo as Bd,ho as Cd,yo as Dd,jo as Ed,xn as Fd,wn as Gd,fd as Hd,vd as Id,hd as Jd,So as Kd,In as Ld,xo as Md,Et as Nd,On as Od,yd as Pd,kd as Qd,qn as Rd,yt as Sd,wo as Td,Ao as Ud,G as Vd,Io as Wd,Oo as Xd,jd as Yd,qo as Zd,Sd as _d,xd as $d,wd as ae,ee as be,Ad as ce,Mt as de,$e as ee,Id as fe,Po as ge,Rn as he,Od as ie,Co as je,qd as ke,Rd as le,ge as me,Pd as ne,$o as oe,wr as pe,Cd as qe,Eo as re,$d as se,Td as te,Ed as ue,Md as ve,Ud as we,Dd as xe,Mo as ye,Zd as ze,Uo as Ae,_d as Be,En as Ce,Mn as De,Un as Ee,Ut as Fe,fe as Ge,Nd as He,Ld as Ie,Bd as Je,ve as Ke,Dt as Le,Qd as Me,B as Ne,Do as Oe,Kd as Pe,Zo as Qe,Vd as Re,_o as Se,jt as Te,Lo as Ue,Dn as Ve,Zn as We,_n as Xe,Wd as Ye,Fd as Ze,Hd as _e,Gd as $e,Ar as af,Zt as bf,Jd as cf,Qo as df,Ko as ef,_t as ff,me as gf,Vo as hf,Wo as if,Fo as jf,Te as kf,Nn as lf,Ho as mf,Go as nf,Jo as of,Ln as pf,Yo as qf,Xo as rf,Yd as sf,Xd as tf,es as uf,ts as vf,em as wf,rs as xf,ns as yf,_e as zf,tm as Af,rm as Bf,nm as Cf,Ne as Df,am as Ef,ss as Ff,im as Gf,om as Hf,cs as If,ls as Jf,ze as Kf,ds as Lf,sm as Mf,cm as Nf,lm as Of,Bn as Pf,dm as Qf,Qn as Rf,mm as Sf,um as Tf,zm as Uf,bm as Vf,zs as Wf,bs as Xf,ps as Yf,fs as Zf,pm as _f,gm as $f,fm as ag,vm as bg,hm as cg,ym as dg,km as eg,jm as fg,vs as gg,Sm as hg,xm as ig,wm as jg,Am as kg,Im as lg,hs as mg,Om as ng,qm as og,Rm as pg,Pm as qg,Cm as rg,$m as sg,Tm as tg,Nt as ug,Em as vg,ys as wg,Mm as xg,ks as yg,Um as zg,js as Ag,Ss as Bg,Dm as Cg,Zm as Dg,Vn as Eg,_m as Fg,Nm as Gg,Wn as Hg,Me as Ig,Or as Jg,ws as Kg,st as Lg,As as Mg,Fn as Ng,Os as Og,Lm as Pg,qs as Qg,Bm as Rg,Rs as Sg,Qm as Tg,Km as Ug,Ps as Vg,Vm as Wg,Wm as Xg,Fm as Yg,Hm as Zg,Gm as _g,Gn as $g,$s as ah,Yn as bh,Ue as ch,Ts as dh,Ms as eh,Us as fh,Ds as gh,Zs as hh,_s as ih,Jm as jh,Ns as kh,Ym as lh,ct as mh,qr as nh,Xm as oh,eu as ph,tu as qh,ru as rh,nu as sh,na as th,au as uh,iu as vh,ou as wh,su as xh,cu as yh,lu as zh,du as Ah,Ls as Bh,Bs as Ch,Qs as Dh,Ks as Eh,Vs as Fh,mu as Gh,uu as Hh,fu as Ih,Hs as Jh,Ys as Kh,Qt as Lh,ca as Mh,vu as Nh,hu as Oh,yu as Ph,ku as Qh,ju as Rh,Su as Sh,xu as Th,wu as Uh,Au as Vh,Iu as Wh,Xs as Xh,qu as Yh,Ru as Zh,ua as _h,Wt as $h,Tu as ai,Eu as bi,za as ci,ke as di,Mu as ei,ba as fi,Uu as gi,Du as hi,Zu as ii,tc as ji,_u as ki,Nu as li,Lu as mi,Bu as ni,nc as oi,Qu as pi,Ft as qi,ac as ri,Ku as si,Vu as ti,Wu as ui,Fu as vi,Hu as wi,Gu as xi,Ju as yi,ic as zi,pa as Ai,Yu as Bi,Xu as Ci,ez as Di,ga as Ei,oc as Fi,fa as Gi,va as Hi,tz as Ii,sc as Ji,rz as Ki,nz as Li,cc as Mi,az as Ni,iz as Oi,oz as Pi,sz as Qi,cz as Ri};
|