{"version":3,"file":"validators.mjs","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,IAAI,EACL,8BAA8B;AAI/B;;;;;GAKG;AACH,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAE3D,MAAM,YAAY,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,aAAa;CACpB,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;IACxB,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC;IAC5B,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,aAAa;CACzB,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,aAAa;IAC7B,UAAU,EAAE,aAAa;IACzB,SAAS,EAAE,aAAa;IACxB,WAAW,EAAE,MAAM,EAAE;IACrB,YAAY,EAAE,aAAa;IAC3B,IAAI,EAAE,MAAM,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,IAAI,CAAC;IACpC,gBAAgB,EAAE,sBAAsB;IACxC,QAAQ,EAAE,wBAAwB;CACnC,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,IAAI,CAAC;IACvC,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,OAAO,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,8BAA8B,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE;IAClB,QAAQ,EAAE,KAAK,CAAC,2BAA2B,CAAC;CAC7C,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,OAAO,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,IAAI,CAAC;IACvC,WAAW,EAAE,4BAA4B;IACzC,GAAG,EAAE,4BAA4B;CAClC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,OAAO,EAAE;IAClB,gBAAgB,EAAE,QAAQ,CAAC,2BAA2B,CAAC;CACxD,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE;IAClB,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACjC,gBAAgB,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,IAAI,CAAC;IACzC,cAAc,EAAE,8BAA8B;IAC9C,SAAS,EAAE,yBAAyB;IACpC,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,wBAAwB;CACnC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAAa;IAEb,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAAa;IAEb,MAAM,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["import {\n  array,\n  assert,\n  boolean,\n  number,\n  optional,\n  pattern,\n  string,\n  type,\n} from '@metamask/superstruct';\n\nimport type { DelegationResponse, NotificationPreferences } from './types';\n\n/**\n * Matches a 0x-prefixed hex string with zero or more hex digits.\n * Unlike `StrictHexStruct` from `@metamask/utils` (which requires at least\n * one digit after the prefix), this also accepts `\"0x\"` — the standard\n * encoding for empty bytes that the delegation API returns.\n */\nconst HexDataStruct = pattern(string(), /^0x[0-9a-f]*$/iu);\n\nconst CaveatSchema = type({\n  enforcer: HexDataStruct,\n  terms: HexDataStruct,\n  args: HexDataStruct,\n});\n\nconst SignedDelegationSchema = type({\n  delegate: HexDataStruct,\n  delegator: HexDataStruct,\n  authority: HexDataStruct,\n  caveats: array(CaveatSchema),\n  salt: HexDataStruct,\n  signature: HexDataStruct,\n});\n\nconst DelegationMetadataSchema = type({\n  delegationHash: HexDataStruct,\n  chainIdHex: HexDataStruct,\n  allowance: HexDataStruct,\n  tokenSymbol: string(),\n  tokenAddress: HexDataStruct,\n  type: string(),\n});\n\nconst DelegationResponseSchema = type({\n  signedDelegation: SignedDelegationSchema,\n  metadata: DelegationMetadataSchema,\n});\n\nconst WalletActivityAccountSchema = type({\n  address: HexDataStruct,\n  enabled: boolean(),\n});\n\nconst WalletActivityPreferenceSchema = type({\n  enabled: boolean(),\n  accounts: array(WalletActivityAccountSchema),\n});\n\nconst MarketingPreferenceSchema = type({\n  enabled: boolean(),\n});\n\nconst PerpsWatchlistExchangeSchema = type({\n  testnet: array(string()),\n  mainnet: array(string()),\n});\n\nconst PerpsWatchlistMarketsSchema = type({\n  hyperliquid: PerpsWatchlistExchangeSchema,\n  myx: PerpsWatchlistExchangeSchema,\n});\n\nconst PerpsPreferenceSchema = type({\n  enabled: boolean(),\n  watchlistMarkets: optional(PerpsWatchlistMarketsSchema),\n});\n\nconst SocialAIPreferenceSchema = type({\n  enabled: boolean(),\n  txAmountLimit: optional(number()),\n  traderProfileIds: array(string()),\n});\n\nconst NotificationPreferencesSchema = type({\n  walletActivity: WalletActivityPreferenceSchema,\n  marketing: MarketingPreferenceSchema,\n  perps: PerpsPreferenceSchema,\n  socialAI: SocialAIPreferenceSchema,\n});\n\n/**\n * Asserts that the given value is a valid `DelegationResponse[]`.\n *\n * @param data - The unknown value to validate.\n * @throws If the value does not match the expected schema.\n */\nexport function assertDelegationResponseArray(\n  data: unknown,\n): asserts data is DelegationResponse[] {\n  assert(data, array(DelegationResponseSchema));\n}\n\n/**\n * Asserts that the given value is a valid `NotificationPreferences`.\n *\n * @param data - The unknown value to validate.\n * @throws If the value does not match the expected schema.\n */\nexport function assertNotificationPreferences(\n  data: unknown,\n): asserts data is NotificationPreferences {\n  assert(data, NotificationPreferencesSchema);\n}\n"]}