@domino-sdk/relay 1.66.0 → 1.67.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.
Files changed (62) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{accounts-_lNsiR2k.d.ts → accounts-C2O8mpB8.d.ts} +2 -2
  3. package/dist/{attempt-captures-BqPggxTU.d.ts → attempt-captures-ClHAoo_n.d.ts} +1 -1
  4. package/dist/authoring.d.ts +24 -23
  5. package/dist/authoring.js +17 -15
  6. package/dist/{automatic-outcomes-BzAvfcpd.d.ts → automatic-outcomes-BEnPn4Uh.d.ts} +2 -2
  7. package/dist/avatar.d.ts +1 -1
  8. package/dist/browser.d.ts +9 -9
  9. package/dist/browser.js +9 -8
  10. package/dist/{catalog-ByZMRS7I.d.ts → catalog-CbiftcxQ.d.ts} +2 -2
  11. package/dist/{chunk-5LD5DKOM.js → chunk-5DZNMLDM.js} +1 -1
  12. package/dist/{chunk-TCYDFNV4.js → chunk-5SBA6X5X.js} +1 -1
  13. package/dist/{chunk-PNVQ4RBG.js → chunk-BMJHFWVT.js} +5 -29
  14. package/dist/{chunk-7MQCQYEE.js → chunk-DSJ46QLB.js} +1 -1
  15. package/dist/{chunk-KHXCURXB.js → chunk-JK3XV2CR.js} +92 -3
  16. package/dist/{chunk-M66Y5OMJ.js → chunk-KUNPCDN6.js} +6 -6
  17. package/dist/{chunk-5DYS2OIP.js → chunk-MVQQDPQX.js} +1 -1
  18. package/dist/{chunk-CGUL4MRE.js → chunk-NRMQVK2W.js} +1 -1
  19. package/dist/{chunk-XCEGNKGH.js → chunk-P33ZAJMS.js} +56 -24
  20. package/dist/{chunk-CJDB6W6I.js → chunk-Q5QVAF7R.js} +41 -14
  21. package/dist/{chunk-5BMZZDGY.js → chunk-Q6KTTVOI.js} +1 -1
  22. package/dist/{chunk-QYHEHMCG.js → chunk-QYC3CZVD.js} +1 -1
  23. package/dist/{chunk-OWDIR7ZU.js → chunk-RDUSFUXX.js} +1 -1
  24. package/dist/{chunk-FU3W4IQN.js → chunk-RWR2LOPA.js} +2 -2
  25. package/dist/chunk-UWUS4OOV.js +59 -0
  26. package/dist/{chunk-ANVAUOJP.js → chunk-X3FMVRMM.js} +1 -1
  27. package/dist/{chunk-QZNLSK4U.js → chunk-Z2Z5DBNW.js} +6 -6
  28. package/dist/{client-Cze4lfwA.d.ts → client-CZPewB9h.d.ts} +10 -7
  29. package/dist/{dashboards-pVfclkyh.d.ts → dashboards-jGPM3AxF.d.ts} +3 -3
  30. package/dist/{deployments-Cr1tfqrr.d.ts → deployments-BVFd7ddA.d.ts} +3 -3
  31. package/dist/{identity-integration-Ci2vGKtX.d.ts → identity-integration-W1Vo3Ql9.d.ts} +10 -2
  32. package/dist/index.d.ts +10 -10
  33. package/dist/index.js +7 -7
  34. package/dist/internal.d.ts +32 -14
  35. package/dist/internal.js +29 -20
  36. package/dist/{limits-pE04y9O2.d.ts → limits-C4RzrOV4.d.ts} +1 -1
  37. package/dist/{offers-Hw2P6tcK.d.ts → offers-BpYenB9i.d.ts} +2 -2
  38. package/dist/portal-proxy.d.ts +5 -5
  39. package/dist/portal-proxy.js +11 -13
  40. package/dist/react/index.d.ts +14 -13
  41. package/dist/react/index.js +9 -8
  42. package/dist/{reward-deliveries-BCV8hznc.d.ts → reward-deliveries-BOWpMytr.d.ts} +1 -1
  43. package/dist/runtime/authoring.js +1 -1
  44. package/dist/runtime/chunks/C2MGLQXC.js +1 -0
  45. package/dist/runtime/manifest.json +3 -3
  46. package/dist/runtime/schema.js +1 -1
  47. package/dist/schema.d.ts +20 -17
  48. package/dist/schema.js +11 -7
  49. package/dist/server/index.d.ts +12 -12
  50. package/dist/server/index.js +277 -22
  51. package/dist/{sign-in-providers-BAkGjSXo.d.ts → sign-in-providers-BRYVOSlG.d.ts} +2 -2
  52. package/dist/{submission-input-ChL1aYNH.d.ts → submission-input-C152xIdn.d.ts} +2 -2
  53. package/dist/{telegram-browser-BFs4u7lC.d.ts → telegram-browser-657QqiQl.d.ts} +4 -4
  54. package/dist/telegram.d.ts +8 -8
  55. package/dist/testing.d.ts +12 -11
  56. package/dist/testing.js +14 -7
  57. package/dist/{tracker-data-Bl-qPIvZ.d.ts → tracker-data-BqY-9Vu-.d.ts} +2 -2
  58. package/dist/{transport-WE49Ta3A.d.ts → transport-CthYgZXK.d.ts} +618 -20
  59. package/dist/{wallet-B7e06v4m.d.ts → wallet-Btng186v.d.ts} +57 -26
  60. package/package.json +3 -1
  61. package/dist/chunk-UZ765UGH.js +0 -18
  62. package/dist/runtime/chunks/C5V267I7.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @domino-sdk/relay
2
2
 
3
+ ## 1.67.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8c070ca: **Automation keys for only the projects they create.** `management.automationKeys.create` accepts `projects: []` when `createProjects` is true: the key starts with no project and reaches only the projects it creates, so an agent that starts its own throwaway projects no longer needs a key for every project. An empty list without `createProjects` is still refused, and omitting `projects` still means every project. Console's **Chosen projects** allows no project picked once **Create projects** is checked.
8
+ - 844caae: **Yearly Checkout takes promotion codes (experimental).** `management.billing.checkout()` with `interval: "year"` opens a Checkout page with a promotion code field; monthly Checkout has none. The subscription read (`management.billing.read()`, and `subscription` in the project's plan read) gains `discount`: while a code discounts the current period, what the period costs (`amount`) instead of its list price (`listAmount`), in US cents with tax included, and when that period ends (`until`); null otherwise. A first-year code ends with the first renewal, which bills the list price. `domino billing show` prints the discount and its end.
9
+ - e73e721: **`management.quests.listWithoutCode()` lists quests without their code.** It answers what `management.quests.list()` does, each quest's current release with archived quests included and the most recently published first, without each release's evaluator `code` (`GET /management/v1/quests/list-without-code`). Code is most of a release's size, up to a megabyte per quest, so a project's full list can reach tens of megabytes. Use the new read whenever you show or match quests rather than run them. `quests.list()` is unchanged.
10
+ - 8b195a4: **Self-hosted wallet apps: loopback origins on Test app login keys, and `verifyWalletSignIn`.**
11
+
12
+ - **Loopback origins.** An app login key in **Test** now accepts `http://localhost:<port>`, `http://127.0.0.1:<port>` and `http://[::1]:<port>` as well as HTTPS, so `next dev` signs members in against real Domino. `identityIntegrationInputSchema` accepts them, with the message "Use an HTTPS origin, or a loopback origin such as http://localhost:3000 for a Test key." for any other `http:` origin. Relay refuses a loopback origin on a **Live** key with 400 `invalid-request`, "Live app login keys need an HTTPS origin. Loopback origins such as http://localhost:3000 work only on Test keys."
13
+ - **`verifyWalletSignIn`** (`@experimental`) from `@domino-sdk/relay/server` verifies a Sign-In with Ethereum (EIP-4361) or Sign-In with Solana message and its signature in your server, without calling any network: domain and URI against your origin, the nonce you issued, issue time, expiry and `Not Before`, and the chains you accept. It answers the wallet as `authenticate()` vouches for it, with its CAIP-10 `accountId`, and throws `WalletSignInError` (`isWalletSignInError`) with a `code` when it refuses. Smart-contract wallets (ERC-1271) are refused with `invalid-signature`.
14
+
15
+ The SDK now depends on `@noble/curves` and `@noble/hashes` for EVM signature checks. See [Wallet sign-in in your own Next.js app](https://console.domino.run/docs/build/self-hosted-wallet-sign-in).
16
+
17
+ - 19bbb9c: Smart-contract wallets can link and sign in: Base Account, Privy and Dynamic smart wallets, and any EVM wallet that signs with ERC-1271, or ERC-6492 before it is deployed. Relay checks such a signature on the chain in the message's Chain ID line (the signer's `chainId()`), one of the EVM chains `GET /management/v1/wallet-balance-chains` lists; an EOA's signature is still checked without a network call. `walletSignatureSchema` accepts signatures up to 16,384 characters, so update the SDK before linking smart wallets: earlier releases refuse their signatures before sending them. A linked smart wallet's `LinkedWallet` has `provedOn`, the CAIP-2 network whose contract checked its latest proof, and it is an account on that chain only: quest balance, NFT, event and contract-call reads, `wallet.balances()` samples and tracker attribution use it there, the testing kit does the same, payout lists name it as `<provedOn>:<address>`, and `caip10(wallet)` names that chain and throws for another. A chain that does not answer is refused with code `unavailable` and leaves the challenge usable; smart-wallet checks are limited to 10 per member (sign-in: per client IP) and 600 per project environment in 10 minutes.
18
+ - 1e2edc6: **Solana devnet in quests and trackers, and Anchor 1.0 IDLs.** Quest checks and trackers can read Solana devnet the way they read an EVM testnet: pass `chain: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"` (exported as `solanaDevnet`) to `ctx.wallet.balance()`, `ctx.wallet.transactions()` or `wallet.balances()`, or name a devnet collection `solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/nft:<collection mint>` in `settings.nft()`. Reads run in test and live, against the same linked Solana wallets as mainnet. `settings.chain()` accepts the devnet ID, `management.walletBalanceChains()` lists Solana Devnet (`testnet: true`) after Solana, and `domino trackers create --chain` takes it. `ctx.wallet.transactions()` without `chain` reads mainnet and sends the request it always did. New exports: `solanaDevnet`, `isSolanaNetwork()` and the `SolanaNetwork` type.
19
+
20
+ A `settings.solanaProgram()` program is now accepted when it is an executable program on mainnet or, when mainnet has none, on devnet, so a devnet-only program can be published. Saving the setting also finds the IDL Anchor 1.0 and later publish to the Program Metadata Program, besides the legacy IDL account.
21
+
22
+ **Behaviour change: a pasted IDL now takes precedence over the program's on-chain IDL.** Before, a save replaced a pasted IDL once the program published one on chain. Now a pasted IDL stays until an operator removes it (Console's **Remove pasted IDL**, or `solanaIdls: { [key]: null }` in `quests.updateSettings()`), and Console offers **Replace IDL** for a program that publishes one.
23
+
24
+ **Breaking types.** This minor widens released types that named Solana mainnet alone, as a deliberate break (docs/releases.md#deliberate-breaks). Code that never names devnet keeps compiling and running. Code that handles every value of one of these types now meets devnet and may need a case for it: `BalanceChain`, `NftCollection`, `NftCollectionParts` (from `parseNftCollection()`), `WalletBalanceQuery`, `WalletNftsQuery`, `WalletBalanceChains`, the testing kit's `CapabilityRequest` and the CLI's tracker results (a `wallet.balances()` source's `chain`). A hand-written `WalletReader` or `EvaluationContext` that takes mainnet alone no longer fits; build fakes with `@domino-sdk/relay/testing`.
25
+
26
+ **Upgrade before adding a devnet tracker.** Earlier SDK and CLI releases cannot read a project's trackers once it has a devnet `wallet.balances()` tracker, and cannot replay an attempt that read devnet. Relay keeps devnet out of `GET /wallet-balance-chains` for clients before this release, so their `management.walletBalanceChains()` keeps working.
27
+
28
+ ## 1.66.1
29
+
30
+ No changes in this release.
31
+
3
32
  ## 1.66.0
4
33
 
5
34
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  import * as z from 'zod';
2
- import { R as ResourceHandle, G as GroupHandle } from './tracker-data-Bl-qPIvZ.js';
3
- import { S as SolanaIdlSource } from './wallet-B7e06v4m.js';
2
+ import { R as ResourceHandle, G as GroupHandle } from './tracker-data-BqY-9Vu-.js';
3
+ import { S as SolanaIdlSource } from './wallet-Btng186v.js';
4
4
 
5
5
  /**
6
6
  * The modules this SDK knows a quest can declare to enable provider readers. Project connections
@@ -1,4 +1,4 @@
1
- import { O as OpenIdentityKind } from './tracker-data-Bl-qPIvZ.js';
1
+ import { O as OpenIdentityKind } from './tracker-data-BqY-9Vu-.js';
2
2
  import * as z from 'zod';
3
3
 
4
4
  /** One capability call of the captured evaluation run, as Relay stored it. */
@@ -1,21 +1,21 @@
1
- import { _ as EngagementBudget, $ as leaderboardDefinitionSchema, Z as AuthoringIdentity, a0 as pointLedgerDeclarationSchema, a1 as referralAuthoringSchema, a2 as discordMessagesSourceSchema, a3 as DiscordMessageData, a4 as DiscordMessageTextData, a5 as discordReactionsSourceSchema, a6 as DiscordReactionData, a7 as KnownIntegrationModule, P as PointBalance, C as CampaignDefinition, a8 as TextReviewInput, a9 as TextResult, aa as PhotoResult, ab as DiscordReader, ac as Decision, ad as rewardSchema, ae as triggerSchema, af as IntegrationModule, D as QuestPresentation, d as AvailabilityWindow, F as QuestProfile, G as QuizEvidence, W as IntegrationModuleProvider, ag as TieredRewardDefinition } from './accounts-_lNsiR2k.js';
2
- export { ah as KnownIntegrationModuleProvider, ai as defineCampaign, aj as defineGroup } from './accounts-_lNsiR2k.js';
3
- import { x as xContentBodySchema, I as IdentityKind, j as customSourceSchema, W as WithRecordData, k as WithContent, l as WithAccountRoles, R as ResourceHandle, Q as QuestHandle, L as LedgerReference, G as GroupHandle, m as TrackerSource, n as trackerDefinitionSchema, o as Tracker, p as TrackerData, q as SourceRoles, r as LedgerHandle, i as TrackerDataSchema, u as xSearchSourceSchema, X as XTweet, v as XContentMetric, y as TrackerTriggerPolicy, z as Where, M as MemberIdentity, A as ReferralHandle, B as TrackerTriggerContext, C as TrackerReader, D as TrackerTriggerMode, E as RoleOf, F as WhereSetting, H as ContentBody, J as BadgeHandle, N as ContentMetricName } from './tracker-data-Bl-qPIvZ.js';
4
- export { P as LedgerSetting, U as TrackerPage, V as TrackerReadQuery, Y as trackerDataSchema, Z as trackerTriggerContextSchema } from './tracker-data-Bl-qPIvZ.js';
1
+ import { _ as EngagementBudget, $ as leaderboardDefinitionSchema, Z as AuthoringIdentity, a0 as pointLedgerDeclarationSchema, a1 as referralAuthoringSchema, a2 as discordMessagesSourceSchema, a3 as DiscordMessageData, a4 as DiscordMessageTextData, a5 as discordReactionsSourceSchema, a6 as DiscordReactionData, a7 as KnownIntegrationModule, P as PointBalance, C as CampaignDefinition, a8 as TextReviewInput, a9 as TextResult, aa as PhotoResult, ab as DiscordReader, ac as Decision, ad as rewardSchema, ae as triggerSchema, af as IntegrationModule, D as QuestPresentation, d as AvailabilityWindow, F as QuestProfile, G as QuizEvidence, W as IntegrationModuleProvider, ag as TieredRewardDefinition } from './accounts-C2O8mpB8.js';
2
+ export { ah as KnownIntegrationModuleProvider, ai as defineCampaign, aj as defineGroup } from './accounts-C2O8mpB8.js';
3
+ import { x as xContentBodySchema, I as IdentityKind, j as customSourceSchema, W as WithRecordData, k as WithContent, l as WithAccountRoles, R as ResourceHandle, Q as QuestHandle, L as LedgerReference, G as GroupHandle, m as TrackerSource, n as trackerDefinitionSchema, o as Tracker, p as TrackerData, q as SourceRoles, r as LedgerHandle, i as TrackerDataSchema, u as xSearchSourceSchema, X as XTweet, v as XContentMetric, y as TrackerTriggerPolicy, z as Where, M as MemberIdentity, A as ReferralHandle, B as TrackerTriggerContext, C as TrackerReader, D as TrackerTriggerMode, E as RoleOf, F as WhereSetting, H as ContentBody, J as BadgeHandle, N as ContentMetricName } from './tracker-data-BqY-9Vu-.js';
4
+ export { P as LedgerSetting, U as TrackerPage, V as TrackerReadQuery, Y as trackerDataSchema, Z as trackerTriggerContextSchema } from './tracker-data-BqY-9Vu-.js';
5
5
  import { R as ResourceSource, M as MemberCompletion, B as Budget, A as AuthorBudget, a as Announcement } from './capability-error-CuI_F7yM.js';
6
6
  export { C as CapabilityError, b as CapabilityErrorCode, T as TikTokVideoBody, c as TikTokVideoMetric, Y as YouTubeShortBody, d as YouTubeShortMetric, e as capabilityErrorCodes } from './capability-error-CuI_F7yM.js';
7
- import { N as NftCollection, p as ContractCall, q as ContractEvent, r as SolanaProgram, s as WalletBalanceSourceQuery, t as WalletTransaction, u as WalletInstruction, e as ProfileReferral, v as WalletReader } from './wallet-B7e06v4m.js';
8
- export { w as ContractCallParts, x as ContractCallReturnType, y as ContractEventInput, z as ContractEventParts, B as ContractFunction, D as CosmosDenom, a as CosmosNetwork, E as EvmChainId, F as NftCollectionParts, G as NftStandard, H as WalletBalance, I as WalletBalanceChange, o as WalletBalanceQuery, J as WalletBalanceSample, K as WalletCall, M as WalletCallArgument, Q as WalletCallQuery, R as WalletDelegations, T as WalletDelegationsQuery, U as WalletEventCondition, V as WalletEventValue, X as WalletEvents, Y as WalletEventsQuery, Z as WalletNfts, _ as WalletNftsQuery, $ as WalletTransactions, a0 as WalletTransactionsQuery, a1 as cosmosDenomSchema, a2 as cosmosNetworkSchema, a3 as isContractCall, a4 as isContractEvent, a5 as isEvmChainId, a6 as isNftCollection, a7 as isSolanaProgram, a8 as maxWalletEventLogs, a9 as maxWalletEventLookback, aa as maxWalletTransactionLookback, ab as maxWalletTransactions, ac as parseContractCall, ad as parseContractEvent, ae as parseContractFunction, af as parseNftCollection } from './wallet-B7e06v4m.js';
7
+ import { N as NftCollection, q as ContractCall, r as ContractEvent, s as SolanaProgram, t as WalletBalanceSourceQuery, u as WalletTransaction, v as WalletInstruction, e as ProfileReferral, w as WalletReader } from './wallet-Btng186v.js';
8
+ export { x as ContractCallParts, y as ContractCallReturnType, z as ContractEventInput, B as ContractEventParts, D as ContractFunction, E as CosmosDenom, a as CosmosNetwork, F as EvmChainId, G as NftCollectionParts, H as NftStandard, I as WalletBalance, J as WalletBalanceChange, o as WalletBalanceQuery, K as WalletBalanceSample, M as WalletCall, Q as WalletCallArgument, R as WalletCallQuery, T as WalletDelegations, U as WalletDelegationsQuery, V as WalletEventCondition, X as WalletEventValue, Y as WalletEvents, Z as WalletEventsQuery, _ as WalletNfts, $ as WalletNftsQuery, a0 as WalletTransactions, a1 as WalletTransactionsQuery, a2 as cosmosDenomSchema, a3 as cosmosNetworkSchema, a4 as isContractCall, a5 as isContractEvent, a6 as isEvmChainId, a7 as isNftCollection, a8 as isSolanaProgram, a9 as maxWalletEventLogs, aa as maxWalletEventLookback, ab as maxWalletTransactionLookback, ac as maxWalletTransactions, ad as parseContractCall, ae as parseContractEvent, af as parseContractFunction, ag as parseNftCollection } from './wallet-Btng186v.js';
9
9
  import * as z from 'zod';
10
10
  export { z } from 'zod';
11
- import { g as badgeDeclarationSchema, h as OfferAuthoring, B as Badge } from './offers-Hw2P6tcK.js';
11
+ import { g as badgeDeclarationSchema, h as OfferAuthoring, B as Badge } from './offers-BpYenB9i.js';
12
12
  import { a as StreakPolicy, Q as QuizContent } from './streaks-0YuipsUQ.js';
13
- import { S as Setting, A as AmountSetting, B as BalanceChain, a as BoundSettings } from './dashboards-pVfclkyh.js';
14
- export { D as DashboardInput, b as DashboardPanelInput, e as defineDashboard } from './dashboards-pVfclkyh.js';
15
- import { e as TelegramReader, P as Prerequisite, b as TextEvidence, U as UrlEvidence, c as TextOptions, d as UrlOptions } from './submission-input-ChL1aYNH.js';
16
- export { f as TelegramChatMember, g as TelegramChatMemberStatus, h as TelegramConnection, i as TelegramMessageData, j as TelegramReactionData, k as balanceAtLeast, l as completed, m as inGroup } from './submission-input-ChL1aYNH.js';
17
- import { I as ImageReader, X as XReader } from './limits-pE04y9O2.js';
18
- export { L as Limits, l as limits } from './limits-pE04y9O2.js';
13
+ import { S as Setting, A as AmountSetting, B as BalanceChain, a as BoundSettings } from './dashboards-jGPM3AxF.js';
14
+ export { D as DashboardInput, b as DashboardPanelInput, e as defineDashboard } from './dashboards-jGPM3AxF.js';
15
+ import { e as TelegramReader, P as Prerequisite, b as TextEvidence, U as UrlEvidence, c as TextOptions, d as UrlOptions } from './submission-input-C152xIdn.js';
16
+ export { f as TelegramChatMember, g as TelegramChatMemberStatus, h as TelegramConnection, i as TelegramMessageData, j as TelegramReactionData, k as balanceAtLeast, l as completed, m as inGroup } from './submission-input-C152xIdn.js';
17
+ import { I as ImageReader, X as XReader } from './limits-C4RzrOV4.js';
18
+ export { L as Limits, l as limits } from './limits-C4RzrOV4.js';
19
19
  export { f as formatUnits, p as parseUnits } from './units-CwgsPB_r.js';
20
20
 
21
21
  declare function defineBadge(input: z.input<typeof badgeDeclarationSchema>): {
@@ -823,26 +823,27 @@ declare const settings: {
823
823
  decimals?: number;
824
824
  }): AmountSetting<z.ZodDefault<z.ZodString>>;
825
825
  /**
826
- * A chain `ctx.wallet.balance()` reads: `"solana"` (or Solana mainnet's CAIP-2 ID), or an EVM
827
- * chain's CAIP-2 ID such as `"eip155:8453"`. Typed as the query's chain, so it passes to
826
+ * A chain `ctx.wallet.balance()` reads: `"solana"` (or Solana mainnet's CAIP-2 ID), Solana
827
+ * devnet's CAIP-2 ID, or an EVM chain's CAIP-2 ID such as `"eip155:8453"`. Typed as the query's chain, so it passes to
828
828
  * `ctx.wallet.balance({ chain })` as it is.
829
829
  */
830
830
  chain(options: Label & {
831
831
  default: BalanceChain;
832
- }): Setting<"text", z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<"solana" | "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp" | `eip155:${number}`, string>>>>;
832
+ }): Setting<"text", z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<"solana" | "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp" | "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1" | `eip155:${number}`, string>>>>;
833
833
  /**
834
834
  * An NFT collection `ctx.wallet.nfts()` reads, as a CAIP-19 asset type: an EVM chain, the
835
835
  * standard and the contract, such as `"eip155:1/erc721:0x…"`, or `"eip155:8453/erc1155:0x…/1"` for
836
- * one ERC-1155 token ID; or a Metaplex collection NFT's mint on Solana mainnet,
837
- * `"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/nft:<mint>"`. Relay checks it when the collection is
836
+ * one ERC-1155 token ID; or a Solana cluster and a Metaplex collection NFT's mint there,
837
+ * `"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/nft:<mint>"` on mainnet or
838
+ * `"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/nft:<mint>"` on devnet. Relay checks it when the collection is
838
839
  * published or edited: an EVM chain must be one `ctx.wallet.balance()` reads and the contract
839
840
  * must report the standard through ERC-165 `supportsInterface`; a Solana mint must be a Metaplex
840
- * collection NFT. Typed as the query's collection, so it passes to
841
+ * collection NFT on its cluster. Typed as the query's collection, so it passes to
841
842
  * `ctx.wallet.nfts({ collection })` as it is.
842
843
  */
843
844
  nft(options: Label & {
844
845
  default: NftCollection;
845
- }): Setting<"text", z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<`eip155:${number}/erc721:0x${string}` | `eip155:${number}/erc1155:0x${string}/${string}` | `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/nft:${string}`, string>>>>;
846
+ }): Setting<"text", z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<`eip155:${number}/erc721:0x${string}` | `eip155:${number}/erc1155:0x${string}/${string}` | `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/nft:${string}` | `solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/nft:${string}`, string>>>>;
846
847
  /**
847
848
  * A contract function `ctx.wallet.call()` reads: the contract's CAIP-10 account ID on an EVM
848
849
  * chain, a space, and the function's human-readable signature, such as
@@ -867,9 +868,9 @@ declare const settings: {
867
868
  default: ContractEvent;
868
869
  }): Setting<"text", z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<`eip155:${number}:0x${string} ${string}`, string>>>>;
869
870
  /**
870
- * A Solana mainnet program `ctx.wallet.transactions()` reads: its base58 address, such as
871
- * Jupiter's `"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"`. Relay checks it when it is published
872
- * or edited: the account must exist and be an executable program.
871
+ * A Solana program `ctx.wallet.transactions()` reads: its base58 address, such as Jupiter's
872
+ * `"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"`. Relay checks it when it is published or
873
+ * edited: the account must be an executable program on Solana mainnet or devnet.
873
874
  */
874
875
  solanaProgram(options: Label & {
875
876
  default: SolanaProgram;
package/dist/authoring.js CHANGED
@@ -6,14 +6,14 @@ import {
6
6
  sourceDataSchema,
7
7
  sourceRoles,
8
8
  validateQuestShape
9
- } from "./chunk-5DYS2OIP.js";
9
+ } from "./chunk-MVQQDPQX.js";
10
10
  import {
11
11
  defineDashboard,
12
12
  tiktokVideoBodySchema,
13
13
  tiktokVideoMetrics,
14
14
  youtubeShortBodySchema,
15
15
  youtubeShortMetrics
16
- } from "./chunk-QYHEHMCG.js";
16
+ } from "./chunk-QYC3CZVD.js";
17
17
  import {
18
18
  CapabilityError,
19
19
  capabilityErrorCodes
@@ -24,7 +24,7 @@ import {
24
24
  engagementScoreSchema,
25
25
  offerAuthoringSchema,
26
26
  referralAuthoringSchema
27
- } from "./chunk-5LD5DKOM.js";
27
+ } from "./chunk-5DZNMLDM.js";
28
28
  import {
29
29
  announcementSchema,
30
30
  authorBudgetSchema,
@@ -64,6 +64,7 @@ import {
64
64
  isContractEvent,
65
65
  isEvmChainId,
66
66
  isNftCollection,
67
+ isSolanaNetwork,
67
68
  isSolanaProgram,
68
69
  leaderboardAuthoringSchema,
69
70
  ledgerKey,
@@ -120,7 +121,7 @@ import {
120
121
  whereSettings,
121
122
  xSearchSourceSchema,
122
123
  youtubeShortsNamespace
123
- } from "./chunk-XCEGNKGH.js";
124
+ } from "./chunk-P33ZAJMS.js";
124
125
  import {
125
126
  parseDefinition
126
127
  } from "./chunk-FGXLXENM.js";
@@ -477,13 +478,13 @@ function walletBalanceSource(query) {
477
478
  if (given !== null && typeof given !== "string") {
478
479
  throw new Error("wallet.balances() takes the token as a string");
479
480
  }
480
- if (chain === "solana" || chain === solanaMainnet) {
481
+ if (chain === "solana" || typeof chain === "string" && isSolanaNetwork(chain)) {
481
482
  if (given !== null && !solanaAddressSchema.safeParse(given).success) {
482
483
  throw new Error(
483
484
  "wallet.balances() on Solana takes an SPL or Token-2022 mint address (base58)"
484
485
  );
485
486
  }
486
- return { chain: solanaMainnet, token: given };
487
+ return { chain: chain === "solana" ? solanaMainnet : chain, token: given };
487
488
  }
488
489
  if (typeof chain === "string" && isEvmChainId(chain)) {
489
490
  if (given !== null && !/^0x[0-9a-fA-F]{40}$/.test(given)) {
@@ -629,14 +630,14 @@ var settings = {
629
630
  );
630
631
  },
631
632
  /**
632
- * A chain `ctx.wallet.balance()` reads: `"solana"` (or Solana mainnet's CAIP-2 ID), or an EVM
633
- * chain's CAIP-2 ID such as `"eip155:8453"`. Typed as the query's chain, so it passes to
633
+ * A chain `ctx.wallet.balance()` reads: `"solana"` (or Solana mainnet's CAIP-2 ID), Solana
634
+ * devnet's CAIP-2 ID, or an EVM chain's CAIP-2 ID such as `"eip155:8453"`. Typed as the query's chain, so it passes to
634
635
  * `ctx.wallet.balance({ chain })` as it is.
635
636
  */
636
637
  chain(options) {
637
638
  if (!isBalanceChain(options.default)) {
638
639
  throw new Error(
639
- `settings.chain() takes "solana" or an EVM chain ID such as "eip155:8453" as its default, not "${options.default}"`
640
+ `settings.chain() takes "solana", a Solana cluster ID or an EVM chain ID such as "eip155:8453" as its default, not "${options.default}"`
640
641
  );
641
642
  }
642
643
  const field = {
@@ -655,11 +656,12 @@ var settings = {
655
656
  /**
656
657
  * An NFT collection `ctx.wallet.nfts()` reads, as a CAIP-19 asset type: an EVM chain, the
657
658
  * standard and the contract, such as `"eip155:1/erc721:0x…"`, or `"eip155:8453/erc1155:0x…/1"` for
658
- * one ERC-1155 token ID; or a Metaplex collection NFT's mint on Solana mainnet,
659
- * `"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/nft:<mint>"`. Relay checks it when the collection is
659
+ * one ERC-1155 token ID; or a Solana cluster and a Metaplex collection NFT's mint there,
660
+ * `"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/nft:<mint>"` on mainnet or
661
+ * `"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/nft:<mint>"` on devnet. Relay checks it when the collection is
660
662
  * published or edited: an EVM chain must be one `ctx.wallet.balance()` reads and the contract
661
663
  * must report the standard through ERC-165 `supportsInterface`; a Solana mint must be a Metaplex
662
- * collection NFT. Typed as the query's collection, so it passes to
664
+ * collection NFT on its cluster. Typed as the query's collection, so it passes to
663
665
  * `ctx.wallet.nfts({ collection })` as it is.
664
666
  */
665
667
  nft(options) {
@@ -737,9 +739,9 @@ var settings = {
737
739
  );
738
740
  },
739
741
  /**
740
- * A Solana mainnet program `ctx.wallet.transactions()` reads: its base58 address, such as
741
- * Jupiter's `"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"`. Relay checks it when it is published
742
- * or edited: the account must exist and be an executable program.
742
+ * A Solana program `ctx.wallet.transactions()` reads: its base58 address, such as Jupiter's
743
+ * `"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"`. Relay checks it when it is published or
744
+ * edited: the account must be an executable program on Solana mainnet or devnet.
743
745
  */
744
746
  solanaProgram(options) {
745
747
  if (!isSolanaProgram(options.default)) {
@@ -1,6 +1,6 @@
1
1
  import * as z from 'zod';
2
- import { b as AttemptStatus, X as RewardType } from './accounts-_lNsiR2k.js';
3
- import { S as SkipEnrollment } from './tracker-data-Bl-qPIvZ.js';
2
+ import { b as AttemptStatus, X as RewardType } from './accounts-C2O8mpB8.js';
3
+ import { S as SkipEnrollment } from './tracker-data-BqY-9Vu-.js';
4
4
 
5
5
  declare const collectionCodeSchema: z.ZodString;
6
6
  declare const collectionPassSchema: z.ZodObject<{
package/dist/avatar.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { P as ProfileAvatar, L as LinkedWallet } from './wallet-B7e06v4m.js';
1
+ import { P as ProfileAvatar, L as LinkedWallet } from './wallet-Btng186v.js';
2
2
  import 'zod';
3
3
 
4
4
  /**
package/dist/browser.d.ts CHANGED
@@ -1,17 +1,17 @@
1
- import { o as SubmissionStore, f as RelayClientOptions, R as RelayClient } from './client-Cze4lfwA.js';
2
- export { C as CosmosChains, D as DiscoveredWallet, E as Eip1193Provider, a as EmailSignInOption, K as KeplrLike, O as OAuthSignInOption, P as ProviderSignInOption, S as SignInClient, b as SignInIcon, c as SignInMethods, d as SignInOption, e as SignInOptions, f as SignInUnavailable, g as SignInWallet, h as SolanaInjectedProvider, i as StandardWallet, j as StandardWalletAccount, T as TelegramSignInOption, W as WalletSignInOption, k as cosmosChainList, l as cosmosSigner, m as discoverCosmosWallets, n as discoverEvmWallets, o as discoverSignInWallets, p as discoverSolanaWallets, q as evmSigner, s as signInOptions, r as solanaSigner, t as telegramMiniAppInitData, w as walletStandardSolanaSigner } from './telegram-browser-BFs4u7lC.js';
1
+ import { o as SubmissionStore, f as RelayClientOptions, R as RelayClient } from './client-CZPewB9h.js';
2
+ export { C as CosmosChains, D as DiscoveredWallet, E as Eip1193Provider, a as EmailSignInOption, K as KeplrLike, O as OAuthSignInOption, P as ProviderSignInOption, S as SignInClient, b as SignInIcon, c as SignInMethods, d as SignInOption, e as SignInOptions, f as SignInUnavailable, g as SignInWallet, h as SolanaInjectedProvider, i as StandardWallet, j as StandardWalletAccount, T as TelegramSignInOption, W as WalletSignInOption, k as cosmosChainList, l as cosmosSigner, m as discoverCosmosWallets, n as discoverEvmWallets, o as discoverSignInWallets, p as discoverSolanaWallets, q as evmSigner, s as signInOptions, r as solanaSigner, t as telegramMiniAppInitData, w as walletStandardSolanaSigner } from './telegram-browser-657QqiQl.js';
3
3
  export { H as HostEnvironment, g as getHostEnvironment } from './host-environment-FN4zg3hw.js';
4
4
  import { M as MemberSummary } from './participant-activity-DXRq4s6K.js';
5
- import './accounts-_lNsiR2k.js';
5
+ import './accounts-C2O8mpB8.js';
6
6
  import 'zod';
7
- import './tracker-data-Bl-qPIvZ.js';
8
- import './wallet-B7e06v4m.js';
9
- import './submission-input-ChL1aYNH.js';
7
+ import './tracker-data-BqY-9Vu-.js';
8
+ import './wallet-Btng186v.js';
9
+ import './submission-input-C152xIdn.js';
10
10
  import './request-error-D_dUPLwo.js';
11
- import './reward-deliveries-BCV8hznc.js';
12
- import './catalog-ByZMRS7I.js';
11
+ import './reward-deliveries-BOWpMytr.js';
12
+ import './catalog-CbiftcxQ.js';
13
13
  import './action-9Xl0StBg.js';
14
- import './sign-in-providers-BAkGjSXo.js';
14
+ import './sign-in-providers-BRYVOSlG.js';
15
15
 
16
16
  /**
17
17
  * The member's time at the real instant `at` (default now), in epoch milliseconds: what an app
package/dist/browser.js CHANGED
@@ -12,22 +12,23 @@ import {
12
12
  signInOptions,
13
13
  solanaSigner,
14
14
  walletStandardSolanaSigner
15
- } from "./chunk-PNVQ4RBG.js";
15
+ } from "./chunk-BMJHFWVT.js";
16
16
  import {
17
17
  telegramMiniAppInitData
18
18
  } from "./chunk-FWLQ5XCS.js";
19
- import "./chunk-QZNLSK4U.js";
19
+ import "./chunk-Z2Z5DBNW.js";
20
20
  import "./chunk-BQXRCJ3N.js";
21
21
  import "./chunk-2HHZV7U3.js";
22
22
  import {
23
23
  getHostEnvironment
24
24
  } from "./chunk-UYVJZR33.js";
25
- import "./chunk-5BMZZDGY.js";
26
- import "./chunk-TCYDFNV4.js";
27
- import "./chunk-CGUL4MRE.js";
28
- import "./chunk-7MQCQYEE.js";
29
- import "./chunk-5LD5DKOM.js";
30
- import "./chunk-XCEGNKGH.js";
25
+ import "./chunk-UWUS4OOV.js";
26
+ import "./chunk-Q6KTTVOI.js";
27
+ import "./chunk-5SBA6X5X.js";
28
+ import "./chunk-NRMQVK2W.js";
29
+ import "./chunk-DSJ46QLB.js";
30
+ import "./chunk-5DZNMLDM.js";
31
+ import "./chunk-P33ZAJMS.js";
31
32
  import "./chunk-FGXLXENM.js";
32
33
  export {
33
34
  browserSubmissionStore,
@@ -1,5 +1,5 @@
1
- import { S as SolanaIdlSource } from './wallet-B7e06v4m.js';
2
- import { b as AttemptStatus, V as AttemptCodeSource, W as IntegrationModuleProvider, X as RewardType, Y as questDescriptionSchema } from './accounts-_lNsiR2k.js';
1
+ import { S as SolanaIdlSource } from './wallet-Btng186v.js';
2
+ import { b as AttemptStatus, V as AttemptCodeSource, W as IntegrationModuleProvider, X as RewardType, Y as questDescriptionSchema } from './accounts-C2O8mpB8.js';
3
3
  import * as z from 'zod';
4
4
 
5
5
  /**
@@ -12,7 +12,7 @@ import {
12
12
  resourceHandle,
13
13
  responseShape,
14
14
  tierRewardSchema
15
- } from "./chunk-XCEGNKGH.js";
15
+ } from "./chunk-P33ZAJMS.js";
16
16
  import {
17
17
  parseDefinition
18
18
  } from "./chunk-FGXLXENM.js";
@@ -4,7 +4,7 @@ import {
4
4
 
5
5
  // package.json
6
6
  var name = "@domino-sdk/relay";
7
- var version = "1.66.0";
7
+ var version = "1.67.0";
8
8
 
9
9
  // src/client-identity.ts
10
10
  function clientIdentity() {
@@ -1,42 +1,18 @@
1
1
  import {
2
2
  createRelayClient
3
- } from "./chunk-QZNLSK4U.js";
3
+ } from "./chunk-Z2Z5DBNW.js";
4
+ import {
5
+ base58
6
+ } from "./chunk-UWUS4OOV.js";
4
7
  import {
5
8
  cosmosChain
6
- } from "./chunk-XCEGNKGH.js";
9
+ } from "./chunk-P33ZAJMS.js";
7
10
  import {
8
11
  RelayErrorCode,
9
12
  asRelayError,
10
13
  clientError
11
14
  } from "./chunk-FGXLXENM.js";
12
15
 
13
- // src/base58.ts
14
- var alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
15
- function base58(bytes) {
16
- let zeros = 0;
17
- while (zeros < bytes.length && bytes[zeros] === 0) {
18
- zeros++;
19
- }
20
- const digits = [];
21
- for (let index = zeros; index < bytes.length; index++) {
22
- let carry = bytes[index];
23
- for (let digit = 0; digit < digits.length; digit++) {
24
- carry += digits[digit] * 256;
25
- digits[digit] = carry % 58;
26
- carry = Math.floor(carry / 58);
27
- }
28
- while (carry > 0) {
29
- digits.push(carry % 58);
30
- carry = Math.floor(carry / 58);
31
- }
32
- }
33
- let result = "1".repeat(zeros);
34
- for (let digit = digits.length - 1; digit >= 0; digit--) {
35
- result += alphabet[digits[digit]];
36
- }
37
- return result;
38
- }
39
-
40
16
  // src/wallet-browser.ts
41
17
  function injected() {
42
18
  return typeof window === "undefined" ? void 0 : window;
@@ -19,7 +19,7 @@ import {
19
19
  storedQuestDescriptionSchema,
20
20
  storedReviewModeSchema,
21
21
  tieredRewardReferenceSchema
22
- } from "./chunk-XCEGNKGH.js";
22
+ } from "./chunk-P33ZAJMS.js";
23
23
 
24
24
  // src/participant-activity.ts
25
25
  import * as z from "zod";
@@ -1,16 +1,20 @@
1
+ import {
2
+ base58Bytes
3
+ } from "./chunk-UWUS4OOV.js";
1
4
  import {
2
5
  createHttpExchange,
3
6
  uncertainStatuses
4
- } from "./chunk-5BMZZDGY.js";
7
+ } from "./chunk-Q6KTTVOI.js";
5
8
  import {
6
9
  MANAGEMENT_TIMEOUT,
7
10
  lifetime,
8
11
  retrying,
9
12
  validTimeout
10
- } from "./chunk-TCYDFNV4.js";
13
+ } from "./chunk-5SBA6X5X.js";
11
14
  import {
15
+ evmAddressSchema,
12
16
  knownResponse
13
- } from "./chunk-XCEGNKGH.js";
17
+ } from "./chunk-P33ZAJMS.js";
14
18
  import {
15
19
  RequestError,
16
20
  isRequestError
@@ -30,6 +34,88 @@ function questConfiguration(release) {
30
34
  };
31
35
  }
32
36
 
37
+ // src/wallet-signatures.ts
38
+ import { secp256k1 } from "@noble/curves/secp256k1.js";
39
+ import { keccak_256 } from "@noble/hashes/sha3.js";
40
+ var text = /* @__PURE__ */ (() => new TextEncoder())();
41
+ var hex = (bytes) => Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
42
+ function evmChecksumAddress(address) {
43
+ const lower = address.slice(2).toLowerCase();
44
+ const hash = hex(keccak_256(text.encode(lower)));
45
+ return "0x" + Array.from(
46
+ lower,
47
+ (character, index) => parseInt(hash[index], 16) >= 8 ? character.toUpperCase() : character
48
+ ).join("");
49
+ }
50
+ function canonicalWalletAddress(chain, address) {
51
+ if (chain === "solana") {
52
+ return base58Bytes(address, 32) ? address : null;
53
+ }
54
+ if (!evmAddressSchema.safeParse(address).success) {
55
+ return null;
56
+ }
57
+ const digits = address.slice(2);
58
+ const checksummed = evmChecksumAddress(address);
59
+ const oneCase = digits === digits.toLowerCase() || digits === digits.toUpperCase();
60
+ return oneCase || checksummed === address ? checksummed : null;
61
+ }
62
+ function evmSigner(message, signature) {
63
+ if (!/^0x[0-9a-fA-F]{130}$/.test(signature)) {
64
+ return null;
65
+ }
66
+ const bytes = Uint8Array.from(
67
+ signature.slice(2).match(/../g),
68
+ (pair) => parseInt(pair, 16)
69
+ );
70
+ const v = bytes[64];
71
+ const recovery = v >= 27 ? v - 27 : v;
72
+ if (recovery !== 0 && recovery !== 1) {
73
+ return null;
74
+ }
75
+ const body = text.encode(message);
76
+ const digest = keccak_256(
77
+ new Uint8Array([
78
+ ...text.encode(`Ethereum Signed Message:
79
+ ${body.length}`),
80
+ ...body
81
+ ])
82
+ );
83
+ try {
84
+ const key = secp256k1.Signature.fromBytes(bytes.slice(0, 64), "compact").addRecoveryBit(recovery).recoverPublicKey(digest).toBytes(false);
85
+ return "0x" + hex(keccak_256(key.slice(1)).slice(-20));
86
+ } catch {
87
+ return null;
88
+ }
89
+ }
90
+ async function walletSignatureValid(input) {
91
+ if (input.chain === "eip155") {
92
+ const signer = evmSigner(input.message, input.signature);
93
+ return signer !== null && signer === input.address.toLowerCase();
94
+ }
95
+ const key = base58Bytes(input.address, 32);
96
+ const signature = base58Bytes(input.signature, 64);
97
+ if (!key || !signature) {
98
+ return false;
99
+ }
100
+ try {
101
+ const imported = await crypto.subtle.importKey(
102
+ "raw",
103
+ key,
104
+ "Ed25519",
105
+ false,
106
+ ["verify"]
107
+ );
108
+ return await crypto.subtle.verify(
109
+ "Ed25519",
110
+ imported,
111
+ signature,
112
+ text.encode(input.message)
113
+ );
114
+ } catch {
115
+ return false;
116
+ }
117
+ }
118
+
33
119
  // src/server/errors.ts
34
120
  import * as z from "zod";
35
121
  var ManagementErrorCode = {
@@ -314,6 +400,9 @@ function containsReferralIntegrationReward(value) {
314
400
 
315
401
  export {
316
402
  questConfiguration,
403
+ hex,
404
+ canonicalWalletAddress,
405
+ walletSignatureValid,
317
406
  ManagementErrorCode,
318
407
  managementErrorSchema,
319
408
  isManagementError,
@@ -6,13 +6,13 @@ import {
6
6
  imageSightingsSchema,
7
7
  imageUploadsSchema,
8
8
  publishedImageSchema
9
- } from "./chunk-ANVAUOJP.js";
9
+ } from "./chunk-X3FMVRMM.js";
10
10
  import {
11
11
  dashboardArtifactSchema,
12
12
  dashboardIssue,
13
13
  dashboardPreviewSchema,
14
14
  normalizeDashboard
15
- } from "./chunk-QYHEHMCG.js";
15
+ } from "./chunk-QYC3CZVD.js";
16
16
  import {
17
17
  authProvidersSchema,
18
18
  collectionPassSchema,
@@ -23,7 +23,7 @@ import {
23
23
  questOutcomePageSchema,
24
24
  questOutcomeSchema,
25
25
  rewardDeliveriesSchema
26
- } from "./chunk-CGUL4MRE.js";
26
+ } from "./chunk-NRMQVK2W.js";
27
27
  import {
28
28
  catalogDeploymentSchema,
29
29
  collectionViewSchema,
@@ -37,7 +37,7 @@ import {
37
37
  questExperienceSchema,
38
38
  questTypeVersionSchema,
39
39
  questViewSchema
40
- } from "./chunk-7MQCQYEE.js";
40
+ } from "./chunk-DSJ46QLB.js";
41
41
  import {
42
42
  engagementArtifactSchema,
43
43
  engagementBoundaryPageSchema,
@@ -52,7 +52,7 @@ import {
52
52
  referralDefinitionSchema,
53
53
  referralHistorySchema,
54
54
  referralSummarySchema
55
- } from "./chunk-5LD5DKOM.js";
55
+ } from "./chunk-5DZNMLDM.js";
56
56
  import {
57
57
  accountConnectionSchema,
58
58
  attemptSchema,
@@ -117,7 +117,7 @@ import {
117
117
  walletSignInNetworksSchema,
118
118
  walletTransactionsSchema,
119
119
  whereSettings
120
- } from "./chunk-XCEGNKGH.js";
120
+ } from "./chunk-P33ZAJMS.js";
121
121
 
122
122
  // src/deployments.ts
123
123
  import * as z from "zod";
@@ -5,7 +5,7 @@ import {
5
5
  isKnownTrackerSource,
6
6
  trackerDataSchema,
7
7
  xAccountRoles
8
- } from "./chunk-XCEGNKGH.js";
8
+ } from "./chunk-P33ZAJMS.js";
9
9
 
10
10
  // src/quest-shape.ts
11
11
  function validateQuestShape(description, options = {}) {
@@ -10,7 +10,7 @@ import {
10
10
  skipEnrollmentSchema,
11
11
  telegramSignInMethodsSchema,
12
12
  walletSignInNetworksSchema
13
- } from "./chunk-XCEGNKGH.js";
13
+ } from "./chunk-P33ZAJMS.js";
14
14
 
15
15
  // src/sign-in-providers.ts
16
16
  import * as z from "zod";