@inodra/sui 0.1.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/LICENSE +202 -0
- package/README.md +237 -0
- package/bin/inodra-sui.mjs +2 -0
- package/dist/chunk-3CBLVI6J.js +426 -0
- package/dist/chunk-3CBLVI6J.js.map +1 -0
- package/dist/chunk-4HKKW5QN.js +80 -0
- package/dist/chunk-4HKKW5QN.js.map +1 -0
- package/dist/chunk-74XGJJJI.js +33 -0
- package/dist/chunk-74XGJJJI.js.map +1 -0
- package/dist/chunk-D6FZYWG7.js +99 -0
- package/dist/chunk-D6FZYWG7.js.map +1 -0
- package/dist/chunk-LZZMTSLH.js +31 -0
- package/dist/chunk-LZZMTSLH.js.map +1 -0
- package/dist/chunk-M3M2L6BW.js +29 -0
- package/dist/chunk-M3M2L6BW.js.map +1 -0
- package/dist/chunk-NSXRC5XW.js +298 -0
- package/dist/chunk-NSXRC5XW.js.map +1 -0
- package/dist/chunk-OGMBYWTG.js +537 -0
- package/dist/chunk-OGMBYWTG.js.map +1 -0
- package/dist/chunk-U6D5LGNF.js +111 -0
- package/dist/chunk-U6D5LGNF.js.map +1 -0
- package/dist/chunk-ZSW3EWGF.js +539 -0
- package/dist/chunk-ZSW3EWGF.js.map +1 -0
- package/dist/cli.js +665 -0
- package/dist/cli.js.map +1 -0
- package/dist/events.cjs +3273 -0
- package/dist/events.cjs.map +1 -0
- package/dist/events.d.cts +47 -0
- package/dist/events.d.ts +47 -0
- package/dist/events.js +2578 -0
- package/dist/events.js.map +1 -0
- package/dist/graphql.cjs +129 -0
- package/dist/graphql.cjs.map +1 -0
- package/dist/graphql.d.cts +36 -0
- package/dist/graphql.d.ts +36 -0
- package/dist/graphql.js +10 -0
- package/dist/graphql.js.map +1 -0
- package/dist/grpc-web.cjs +129 -0
- package/dist/grpc-web.cjs.map +1 -0
- package/dist/grpc-web.d.cts +31 -0
- package/dist/grpc-web.d.ts +31 -0
- package/dist/grpc-web.js +10 -0
- package/dist/grpc-web.js.map +1 -0
- package/dist/grpc.cjs +131 -0
- package/dist/grpc.cjs.map +1 -0
- package/dist/grpc.d.cts +34 -0
- package/dist/grpc.d.ts +34 -0
- package/dist/grpc.js +10 -0
- package/dist/grpc.js.map +1 -0
- package/dist/index-CGBN_EI5.d.ts +4800 -0
- package/dist/index-CVO2Kj8a.d.cts +4800 -0
- package/dist/index.cjs +4723 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +504 -0
- package/dist/index.d.ts +504 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/manage.cjs +376 -0
- package/dist/manage.cjs.map +1 -0
- package/dist/manage.d.cts +2 -0
- package/dist/manage.d.ts +2 -0
- package/dist/manage.js +8 -0
- package/dist/manage.js.map +1 -0
- package/dist/network-CEg2MJY3.d.cts +60 -0
- package/dist/network-CEg2MJY3.d.ts +60 -0
- package/dist/node.cjs +4759 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.d.cts +28 -0
- package/dist/node.d.ts +28 -0
- package/dist/node.js +73 -0
- package/dist/node.js.map +1 -0
- package/dist/reflection-Bx44-Fs1.d.ts +4639 -0
- package/dist/reflection-Cf7WFH6H.d.cts +4639 -0
- package/dist/reflection-FEGYA7DU.js +9 -0
- package/dist/reflection-FEGYA7DU.js.map +1 -0
- package/dist/runtime-OWKF3LZ7.js +37 -0
- package/dist/runtime-OWKF3LZ7.js.map +1 -0
- package/dist/warp.cjs +633 -0
- package/dist/warp.cjs.map +1 -0
- package/dist/warp.d.cts +195 -0
- package/dist/warp.d.ts +195 -0
- package/dist/warp.js +12 -0
- package/dist/warp.js.map +1 -0
- package/dist/webhooks.cjs +104 -0
- package/dist/webhooks.cjs.map +1 -0
- package/dist/webhooks.d.cts +35 -0
- package/dist/webhooks.d.ts +35 -0
- package/dist/webhooks.js +7 -0
- package/dist/webhooks.js.map +1 -0
- package/llms.txt +189 -0
- package/package.json +119 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/auth.ts","../src/core/network.ts","../src/core/version.ts","../src/events/runtime.ts","../src/events/move-types.ts","../src/events/reflection.ts","../src/generated/events.ts","../src/events/index.ts","../src/index.ts","../src/client.ts","../src/core/http.ts","../src/core/errors.ts","../src/graphql/index.ts","../src/grpc-web/index.ts","../src/namespaces/account.ts","../src/namespaces/catalog.ts","../src/core/openapi.ts","../src/namespaces/data.ts","../src/namespaces/events.ts","../src/warp/iterate.ts","../src/warp/sse.ts","../src/warp/emitter.ts","../src/warp/sse-parser.ts","../src/warp/types.ts","../src/warp/ws.ts","../src/namespaces/warp.ts","../src/webhooks/index.ts","../src/namespaces/webhooks.ts","../src/manage/index.ts"],"sourcesContent":["/**\n * Pluggable authentication for every Inodra transport.\n *\n * Most users pass an API key. The provider shape exists so future credential\n * types (x402 wallet session tokens, refreshing vault-issued keys) slot in\n * without changing any client constructor.\n */\n\nexport interface AuthCredentials {\n\t/** Sent as HTTP headers (REST, SSE, GraphQL) and gRPC metadata. */\n\theaders: Record<string, string>;\n\t/**\n\t * Sent as URL query parameters on transports that cannot carry headers\n\t * (WebSocket upgrades in browsers). Omit to disallow such transports.\n\t */\n\tqueryParams?: Record<string, string>;\n}\n\nexport type InodraAuth =\n\t| string\n\t| { apiKey: string }\n\t| { sessionToken: string }\n\t| {\n\t\t\tgetCredentials: () => AuthCredentials | Promise<AuthCredentials>;\n\t };\n\n/** Normalized auth handle used internally by every transport. */\nexport interface ResolvedAuth {\n\t/** Resolve credentials. Called per request on REST/SSE, per connect on WS. */\n\tcredentials(): Promise<AuthCredentials>;\n\t/**\n\t * Resolve credentials synchronously, or undefined for dynamic providers.\n\t * Used by clients whose underlying transport takes static headers\n\t * (gRPC, GraphQL).\n\t */\n\tstaticCredentials(): AuthCredentials | undefined;\n}\n\nexport function resolveAuth(auth: InodraAuth): ResolvedAuth {\n\tif (typeof auth === \"string\") {\n\t\treturn staticAuth(apiKeyCredentials(auth));\n\t}\n\tif (\"apiKey\" in auth) {\n\t\treturn staticAuth(apiKeyCredentials(auth.apiKey));\n\t}\n\tif (\"sessionToken\" in auth) {\n\t\treturn staticAuth({\n\t\t\theaders: { authorization: `Bearer ${auth.sessionToken}` },\n\t\t});\n\t}\n\treturn {\n\t\tcredentials: async () => auth.getCredentials(),\n\t\tstaticCredentials: () => undefined,\n\t};\n}\n\n/**\n * Resolve auth from an options bag that accepts both the modern `auth` field\n * and the original `apiKey` shorthand.\n */\nexport function authFromOptions(\n\toptions: { auth?: InodraAuth; apiKey?: string },\n\tcontext: string,\n): ResolvedAuth {\n\tif (options.auth !== undefined) {\n\t\treturn resolveAuth(options.auth);\n\t}\n\tif (options.apiKey) {\n\t\treturn resolveAuth(options.apiKey);\n\t}\n\tthrow new Error(`${context} requires auth (or the apiKey shorthand)`);\n}\n\n/**\n * Headers for clients whose transports take static headers (gRPC, GraphQL).\n * Dynamic providers are rejected: the underlying Mysten clients cannot\n * re-resolve credentials per call, so a snapshot would silently go stale.\n */\nexport function staticAuthHeaders(\n\toptions: { auth?: InodraAuth; apiKey?: string },\n\tcontext: string,\n): Record<string, string> {\n\tconst credentials = authFromOptions(options, context).staticCredentials();\n\tif (!credentials) {\n\t\tthrow new Error(\n\t\t\t`${context} does not support dynamic credential providers — pass an apiKey or sessionToken`,\n\t\t);\n\t}\n\treturn credentials.headers;\n}\n\nfunction apiKeyCredentials(apiKey: string): AuthCredentials {\n\tif (!apiKey) {\n\t\tthrow new Error(\"Inodra auth: apiKey must be a non-empty string\");\n\t}\n\treturn {\n\t\theaders: { \"x-api-key\": apiKey },\n\t\tqueryParams: { api_key: apiKey },\n\t};\n}\n\nfunction staticAuth(credentials: AuthCredentials): ResolvedAuth {\n\treturn {\n\t\tcredentials: async () => credentials,\n\t\tstaticCredentials: () => credentials,\n\t};\n}\n","export type InodraNetwork = \"mainnet\" | \"testnet\";\n\n/**\n * Canonical Inodra endpoints per network and protocol.\n */\nexport const INODRA_ENDPOINTS = {\n\tmainnet: {\n\t\trest: \"https://mainnet-api.inodra.com/v1\",\n\t\tgraphql: \"https://mainnet-api.inodra.com/v1/graphql\",\n\t\t/** host:port for native gRPC transports */\n\t\tgrpc: \"mainnet-grpc.inodra.com:443\",\n\t\t/** base URL for gRPC-Web transports */\n\t\tgrpcWeb: \"https://mainnet-grpc.inodra.com\",\n\t\twarpWs: \"wss://mainnet-api.inodra.com/v1\",\n\t},\n\ttestnet: {\n\t\trest: \"https://testnet-api.inodra.com/v1\",\n\t\tgraphql: \"https://testnet-api.inodra.com/v1/graphql\",\n\t\tgrpc: \"testnet-grpc.inodra.com:443\",\n\t\tgrpcWeb: \"https://testnet-grpc.inodra.com\",\n\t\twarpWs: \"wss://testnet-api.inodra.com/v1\",\n\t},\n} as const satisfies Record<\n\tInodraNetwork,\n\t{ rest: string; graphql: string; grpc: string; grpcWeb: string; warpWs: string }\n>;\n\nexport function restBaseUrl(network: InodraNetwork): string {\n\treturn INODRA_ENDPOINTS[network].rest;\n}\n\nexport function graphqlUrl(network: InodraNetwork): string {\n\treturn INODRA_ENDPOINTS[network].graphql;\n}\n\n/** Base URL for gRPC-Web / Connect transports. */\nexport function grpcBaseUrl(network: InodraNetwork): string {\n\treturn INODRA_ENDPOINTS[network].grpcWeb;\n}\n\n/** host:port for native gRPC transports. */\nexport function grpcHost(network: InodraNetwork): string {\n\treturn INODRA_ENDPOINTS[network].grpc;\n}\n\nexport function warpStreamUrl(\n\tnetwork: InodraNetwork,\n\tsubscriptionId: string,\n): string {\n\treturn `${INODRA_ENDPOINTS[network].rest}/warp/${subscriptionId}/stream`;\n}\n\nexport function warpWebSocketUrl(\n\tnetwork: InodraNetwork,\n\tsubscriptionId: string,\n): string {\n\treturn `${INODRA_ENDPOINTS[network].warpWs}/warp/${subscriptionId}/ws`;\n}\n","export const SDK_VERSION = \"0.1.0\";\n\n/**\n * Identifies the SDK to Inodra on every request, alongside the API key.\n * Sent on REST, GraphQL, SSE (headers) and gRPC (metadata). Browsers cannot\n * attach headers to WebSocket upgrades, so the Warp WS client omits it.\n */\nexport const SDK_HEADER_NAME = \"x-inodra-sdk\";\nexport const SDK_HEADER_VALUE = `inodra-sdk-ts/${SDK_VERSION}`;\n","/**\n * Runtime pieces shared by the generated event schemas (`src/generated/events.ts`)\n * and the typed-event helpers: Move-primitive zod schemas and the Warp/webhook\n * delivery envelopes.\n *\n * Encoding notes — decoded Move event JSON as delivered by Inodra:\n * - u8/u16/u32 arrive as JSON numbers; u64/u128/u256 as strings (precision).\n * Some decode paths emit small u64s as numbers, so unsigned ints accept both\n * and normalize to string.\n * - `Option<T>` flattens to `T | null`.\n * - `TypeName` may arrive as `{ name: string }` or a bare string; normalized\n * to string.\n * - `Balance<T>` may arrive as `{ value: string }` or a bare string;\n * normalized to its value string.\n * - `vector<u8>` may arrive as a byte array or a base64/hex string.\n * All object schemas are loose: protocols add fields in package upgrades and\n * unknown keys must never make a consumer pipeline throw.\n */\nimport { z } from \"zod\";\n\n// ---------------------------------------------------------------------------\n// Move primitive schemas\n// ---------------------------------------------------------------------------\n\n/** u8 / u16 / u32 — safe as JSON numbers. */\nexport const moveSmallUint = z.number();\n\n/** u64 / u128 / u256 — normalized to decimal string. */\nexport const moveUint = z\n\t.union([z.string(), z.number()])\n\t.transform((value) => String(value));\n\nexport const moveBool = z.boolean();\n\n/** address / 0x2::object::ID — 0x-prefixed hex string. */\nexport const moveAddress = z.string();\n\n/** 0x1::string::String / 0x1::ascii::String */\nexport const moveString = z.string();\n\n/** 0x1::type_name::TypeName — normalized to the type string. */\nexport const moveTypeName = z\n\t.union([z.string(), z.looseObject({ name: z.string() })])\n\t.transform((value) => (typeof value === \"string\" ? value : value.name));\n\n/** 0x2::balance::Balance<T> — normalized to its u64 value string. */\nexport const moveBalance = z\n\t.union([\n\t\tz.string(),\n\t\tz.number(),\n\t\tz.looseObject({ value: z.union([z.string(), z.number()]) }),\n\t])\n\t.transform((value) =>\n\t\ttypeof value === \"object\" ? String(value.value) : String(value),\n\t);\n\n/** vector<u8> — byte array or base64/hex string, left as received. */\nexport const moveBytes = z.union([z.string(), z.array(z.number())]);\n\n// ---------------------------------------------------------------------------\n// Delivery envelopes (Warp SSE/WS + webhooks)\n// ---------------------------------------------------------------------------\n\n/** Move package event as delivered on Warp streams (`type: \"event\"`). */\nexport const warpEventPayloadSchema = z.looseObject({\n\tactivityType: z.literal(\"package_event\"),\n\ttxDigest: z.string(),\n\teventSequence: z.number(),\n\tcheckpoint: z.number(),\n\ttimestamp: z.number(),\n\t/** Full concrete Move event type. */\n\ttype: z.string(),\n\tsender: z.string(),\n\t/** Decoded Move event payload — type with the generated catalog schemas. */\n\tdata: z.unknown(),\n});\nexport type WarpEventPayload = z.infer<typeof warpEventPayloadSchema>;\n\n/** Address activity as delivered on Warp streams (`type: \"address\"`). */\nexport const warpAddressPayloadSchema = z.looseObject({\n\taddress: z.string(),\n\tactivityType: z.string(),\n\ttxDigest: z.string(),\n\tcheckpoint: z.number(),\n\ttimestamp: z.number(),\n\tobjectId: z.string().optional(),\n\tobjectType: z.string().optional(),\n});\nexport type WarpAddressPayload = z.infer<typeof warpAddressPayloadSchema>;\n\n/** Coin/balance change as delivered on Warp streams (`type: \"coin\"`). */\nexport const warpCoinPayloadSchema = z.looseObject({\n\tactivityType: z.literal(\"balance_change\"),\n\taddress: z.string(),\n\tcoin_type: z.string(),\n\t/** Signed amount, string for precision. */\n\tamount: z.string(),\n\ttxDigest: z.string(),\n\tcheckpoint: z.number(),\n\ttimestamp: z.number(),\n});\nexport type WarpCoinPayload = z.infer<typeof warpCoinPayloadSchema>;\n\n/** Object change as delivered on Warp streams (`type: \"object\"`). */\nexport const warpObjectPayloadSchema = z.looseObject({\n\tactivityType: z.literal(\"object_change\"),\n\tobject_id: z.string(),\n\ttransactionDirection: z.string(),\n\twriteKind: z.string(),\n\towner: z.string().optional(),\n\tpreviousOwner: z.string().optional(),\n\ttxDigest: z.string(),\n\tcheckpoint: z.number(),\n\ttimestamp: z.number(),\n});\nexport type WarpObjectPayload = z.infer<typeof warpObjectPayloadSchema>;\n\n/**\n * Webhook delivery body for event webhooks:\n * `{ payloadVersion: 1, payload: { webhookId, ...warp event payload } }`.\n */\nexport const webhookEventBodySchema = z.looseObject({\n\tpayloadVersion: z.number(),\n\tpayload: warpEventPayloadSchema.extend({ webhookId: z.string() }),\n});\nexport type WebhookEventBody = z.infer<typeof webhookEventBodySchema>;\n\n// ---------------------------------------------------------------------------\n// Event-type matching (mirrors the server's catalog matching)\n// ---------------------------------------------------------------------------\n\n/** Strip generic parameters: `a::b::C<...>` → `a::b::C`. */\nexport function baseEventType(eventType: string): string {\n\tconst idx = eventType.indexOf(\"<\");\n\treturn idx === -1 ? eventType : eventType.slice(0, idx);\n}\n\n/** Extract the inner type of a wrapped event: `Outer<Inner>` → `Inner`. */\nexport function innerEventType(eventType: string): string | undefined {\n\tconst start = eventType.indexOf(\"<\");\n\tif (start === -1 || !eventType.endsWith(\">\")) {\n\t\treturn undefined;\n\t}\n\treturn eventType.slice(start + 1, -1);\n}\n\n/** A concrete on-chain deployment of a catalog event. */\nexport interface CatalogDeployment {\n\tnetwork: string;\n\t/** Canonical event type (base form for generic events). */\n\teventType: string;\n\tprimary?: boolean;\n}\n\n/**\n * Whether a raw on-chain event type string matches a deployment.\n * Generic events are cataloged in base form and matched by base type;\n * everything else (including wrapped `Outer<Inner>` events) matches exactly.\n */\nexport function eventTypeMatches(\n\trawEventType: string,\n\tdeployment: CatalogDeployment,\n\tgeneric: boolean,\n): boolean {\n\tif (generic) {\n\t\treturn baseEventType(rawEventType) === deployment.eventType;\n\t}\n\treturn rawEventType === deployment.eventType;\n}\n","/**\n * Move type-string parsing and the shared Move→schema mapping used by both\n * runtime reflection (build zod schemas for arbitrary events on the fly) and\n * the codegen CLI (emit source for them).\n *\n * Encoding rules match the generated catalog schemas — see runtime.ts.\n */\nimport { z } from \"zod\";\nimport {\n\tmoveAddress,\n\tmoveBalance,\n\tmoveBool,\n\tmoveBytes,\n\tmoveSmallUint,\n\tmoveString,\n\tmoveTypeName,\n\tmoveUint,\n} from \"./runtime.js\";\n\n// ---------------------------------------------------------------------------\n// Parsing\n// ---------------------------------------------------------------------------\n\nexport type MoveTypeNode =\n\t| { kind: \"prim\"; prim: string }\n\t| { kind: \"vector\"; inner: MoveTypeNode }\n\t| {\n\t\t\tkind: \"struct\";\n\t\t\taddress: string;\n\t\t\tmodule: string;\n\t\t\tname: string;\n\t\t\targs: MoveTypeNode[];\n\t }\n\t/** `$0`-style placeholder in a struct definition (GraphQL OpenMoveType). */\n\t| { kind: \"param\"; index: number }\n\t/** Anything unparseable (bare `T` in hand-written data, malformed input). */\n\t| { kind: \"opaque\"; raw: string };\n\nconst PRIMITIVES = new Set([\n\t\"u8\",\n\t\"u16\",\n\t\"u32\",\n\t\"u64\",\n\t\"u128\",\n\t\"u256\",\n\t\"bool\",\n\t\"address\",\n\t\"signer\",\n]);\n\n/** Split `a, b<c, d>, e` at top-level commas. */\nfunction splitArgs(inner: string): string[] {\n\tconst parts: string[] = [];\n\tlet depth = 0;\n\tlet current = \"\";\n\tfor (const char of inner) {\n\t\tif (char === \"<\") depth++;\n\t\tif (char === \">\") depth--;\n\t\tif (char === \",\" && depth === 0) {\n\t\t\tparts.push(current.trim());\n\t\t\tcurrent = \"\";\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += char;\n\t}\n\tif (current.trim()) parts.push(current.trim());\n\treturn parts;\n}\n\nexport function parseMoveType(input: string): MoveTypeNode {\n\tconst type = input.trim();\n\tif (PRIMITIVES.has(type)) {\n\t\treturn { kind: \"prim\", prim: type };\n\t}\n\tif (type.startsWith(\"vector<\") && type.endsWith(\">\")) {\n\t\treturn { kind: \"vector\", inner: parseMoveType(type.slice(7, -1)) };\n\t}\n\tconst param = /^\\$(\\d+)$/.exec(type);\n\tif (param) {\n\t\treturn { kind: \"param\", index: Number(param[1]) };\n\t}\n\tconst generic = type.indexOf(\"<\");\n\tconst base = generic === -1 ? type : type.slice(0, generic);\n\tconst args =\n\t\tgeneric === -1 || !type.endsWith(\">\")\n\t\t\t? []\n\t\t\t: splitArgs(type.slice(generic + 1, -1)).map(parseMoveType);\n\tconst [address, module, name, ...rest] = base.split(\"::\");\n\tif (address?.startsWith(\"0x\") && module && name && rest.length === 0) {\n\t\treturn {\n\t\t\tkind: \"struct\",\n\t\t\taddress: normalizeAddress(address),\n\t\t\tmodule,\n\t\t\tname,\n\t\t\targs,\n\t\t};\n\t}\n\treturn { kind: \"opaque\", raw: type };\n}\n\n/** 0x000…002 → 0x2 */\nexport function normalizeAddress(address: string): string {\n\treturn address.replace(/^0x0+(?=[0-9a-fA-F])/, \"0x\");\n}\n\nexport function formatMoveType(node: MoveTypeNode): string {\n\tswitch (node.kind) {\n\t\tcase \"prim\":\n\t\t\treturn node.prim;\n\t\tcase \"vector\":\n\t\t\treturn `vector<${formatMoveType(node.inner)}>`;\n\t\tcase \"param\":\n\t\t\treturn `$${node.index}`;\n\t\tcase \"opaque\":\n\t\t\treturn node.raw;\n\t\tcase \"struct\": {\n\t\t\tconst base = `${node.address}::${node.module}::${node.name}`;\n\t\t\treturn node.args.length === 0\n\t\t\t\t? base\n\t\t\t\t: `${base}<${node.args.map(formatMoveType).join(\", \")}>`;\n\t\t}\n\t}\n}\n\n/** Replace `$n` placeholders with the instantiation's concrete type args. */\nexport function substituteTypeParams(\n\tnode: MoveTypeNode,\n\targs: MoveTypeNode[],\n): MoveTypeNode {\n\tswitch (node.kind) {\n\t\tcase \"param\":\n\t\t\treturn args[node.index] ?? node;\n\t\tcase \"vector\":\n\t\t\treturn { kind: \"vector\", inner: substituteTypeParams(node.inner, args) };\n\t\tcase \"struct\":\n\t\t\treturn {\n\t\t\t\t...node,\n\t\t\t\targs: node.args.map((a) => substituteTypeParams(a, args)),\n\t\t\t};\n\t\tdefault:\n\t\t\treturn node;\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Schema shapes — the resolved, encoding-aware intermediate form\n// ---------------------------------------------------------------------------\n\nexport type SchemaShape =\n\t| { kind: \"smallUint\" }\n\t| { kind: \"uint\" }\n\t| { kind: \"bool\" }\n\t| { kind: \"address\" }\n\t| { kind: \"string\" }\n\t| { kind: \"typeName\" }\n\t| { kind: \"balance\" }\n\t| { kind: \"bytes\" }\n\t| { kind: \"option\"; inner: SchemaShape }\n\t| { kind: \"vector\"; inner: SchemaShape }\n\t| { kind: \"object\"; fields: { name: string; value: SchemaShape }[] }\n\t| { kind: \"unknown\" };\n\nexport interface StructField {\n\tname: string;\n\t/** Field type as written in the struct definition (may contain `$n`). */\n\ttype: MoveTypeNode;\n}\n\n/** Fetches the field layout of a struct definition (no type args applied). */\nexport type StructResolver = (struct: {\n\taddress: string;\n\tmodule: string;\n\tname: string;\n}) => Promise<StructField[] | undefined>;\n\nconst MAX_DEPTH = 6;\n\n/**\n * Resolve a concrete Move type into a SchemaShape, recursing into nested\n * user structs via `resolveStruct`. Depth-capped and cycle-guarded — anything\n * beyond becomes `unknown` (schemas are loose, so this stays safe).\n */\nexport async function resolveShape(\n\tnode: MoveTypeNode,\n\tresolveStruct: StructResolver,\n\tdepth = 0,\n\tstack: string[] = [],\n): Promise<SchemaShape> {\n\tswitch (node.kind) {\n\t\tcase \"prim\":\n\t\t\tswitch (node.prim) {\n\t\t\t\tcase \"u8\":\n\t\t\t\tcase \"u16\":\n\t\t\t\tcase \"u32\":\n\t\t\t\t\treturn { kind: \"smallUint\" };\n\t\t\t\tcase \"u64\":\n\t\t\t\tcase \"u128\":\n\t\t\t\tcase \"u256\":\n\t\t\t\t\treturn { kind: \"uint\" };\n\t\t\t\tcase \"bool\":\n\t\t\t\t\treturn { kind: \"bool\" };\n\t\t\t\tcase \"address\":\n\t\t\t\tcase \"signer\":\n\t\t\t\t\treturn { kind: \"address\" };\n\t\t\t\tdefault:\n\t\t\t\t\treturn { kind: \"unknown\" };\n\t\t\t}\n\t\tcase \"vector\":\n\t\t\tif (node.inner.kind === \"prim\" && node.inner.prim === \"u8\") {\n\t\t\t\treturn { kind: \"bytes\" };\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tkind: \"vector\",\n\t\t\t\tinner: await resolveShape(node.inner, resolveStruct, depth, stack),\n\t\t\t};\n\t\tcase \"param\":\n\t\tcase \"opaque\":\n\t\t\treturn { kind: \"unknown\" };\n\t\tcase \"struct\": {\n\t\t\tconst base = `${node.address}::${node.module}::${node.name}`;\n\t\t\tswitch (base) {\n\t\t\t\tcase \"0x1::string::String\":\n\t\t\t\tcase \"0x1::ascii::String\":\n\t\t\t\tcase \"0x2::url::Url\":\n\t\t\t\t\treturn { kind: \"string\" };\n\t\t\t\tcase \"0x1::type_name::TypeName\":\n\t\t\t\t\treturn { kind: \"typeName\" };\n\t\t\t\tcase \"0x2::object::ID\":\n\t\t\t\t\treturn { kind: \"address\" };\n\t\t\t\tcase \"0x2::balance::Balance\":\n\t\t\t\t\treturn { kind: \"balance\" };\n\t\t\t\tcase \"0x1::option::Option\": {\n\t\t\t\t\tconst inner = node.args[0];\n\t\t\t\t\tif (node.args.length === 1 && inner) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tkind: \"option\",\n\t\t\t\t\t\t\tinner: await resolveShape(inner, resolveStruct, depth, stack),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn { kind: \"unknown\" };\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst key = formatMoveType(node);\n\t\t\tif (depth >= MAX_DEPTH || stack.includes(key)) {\n\t\t\t\treturn { kind: \"unknown\" };\n\t\t\t}\n\t\t\tconst definition = await resolveStruct(node);\n\t\t\tif (!definition) {\n\t\t\t\treturn { kind: \"unknown\" };\n\t\t\t}\n\t\t\tconst fields = await Promise.all(\n\t\t\t\tdefinition.map(async (field) => ({\n\t\t\t\t\tname: field.name,\n\t\t\t\t\tvalue: await resolveShape(\n\t\t\t\t\t\tsubstituteTypeParams(field.type, node.args),\n\t\t\t\t\t\tresolveStruct,\n\t\t\t\t\t\tdepth + 1,\n\t\t\t\t\t\t[...stack, key],\n\t\t\t\t\t),\n\t\t\t\t})),\n\t\t\t);\n\t\t\treturn { kind: \"object\", fields };\n\t\t}\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Consumers: runtime zod builder + codegen expression emitter\n// ---------------------------------------------------------------------------\n\nexport function shapeToZod(shape: SchemaShape): z.ZodTypeAny {\n\tswitch (shape.kind) {\n\t\tcase \"smallUint\":\n\t\t\treturn moveSmallUint;\n\t\tcase \"uint\":\n\t\t\treturn moveUint;\n\t\tcase \"bool\":\n\t\t\treturn moveBool;\n\t\tcase \"address\":\n\t\t\treturn moveAddress;\n\t\tcase \"string\":\n\t\t\treturn moveString;\n\t\tcase \"typeName\":\n\t\t\treturn moveTypeName;\n\t\tcase \"balance\":\n\t\t\treturn moveBalance;\n\t\tcase \"bytes\":\n\t\t\treturn moveBytes;\n\t\tcase \"option\":\n\t\t\treturn shapeToZod(shape.inner).nullable();\n\t\tcase \"vector\":\n\t\t\treturn z.array(shapeToZod(shape.inner));\n\t\tcase \"object\":\n\t\t\treturn z.looseObject(\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tshape.fields.map((f) => [f.name, shapeToZod(f.value)]),\n\t\t\t\t),\n\t\t\t);\n\t\tcase \"unknown\":\n\t\t\treturn z.unknown();\n\t}\n}\n\nconst PRIMITIVE_EXPRS: Record<string, string> = {\n\tsmallUint: \"moveSmallUint\",\n\tuint: \"moveUint\",\n\tbool: \"moveBool\",\n\taddress: \"moveAddress\",\n\tstring: \"moveString\",\n\ttypeName: \"moveTypeName\",\n\tbalance: \"moveBalance\",\n\tbytes: \"moveBytes\",\n};\n\n/**\n * Emit a zod source expression for a shape (codegen CLI). `used` collects\n * the runtime primitive names the emitted code imports.\n */\nexport function shapeToExpr(\n\tshape: SchemaShape,\n\tused: Set<string>,\n\tindent = \"\",\n): string {\n\tconst primitive = PRIMITIVE_EXPRS[shape.kind];\n\tif (primitive) {\n\t\tused.add(primitive);\n\t\treturn primitive;\n\t}\n\tswitch (shape.kind) {\n\t\tcase \"option\":\n\t\t\treturn `${shapeToExpr(shape.inner, used, indent)}.nullable()`;\n\t\tcase \"vector\":\n\t\t\treturn `z.array(${shapeToExpr(shape.inner, used, indent)})`;\n\t\tcase \"object\": {\n\t\t\tconst lines = [\"z.looseObject({\"];\n\t\t\tfor (const field of shape.fields) {\n\t\t\t\tlines.push(\n\t\t\t\t\t`${indent}\\t${JSON.stringify(field.name)}: ${shapeToExpr(field.value, used, `${indent}\\t`)},`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tlines.push(`${indent}})`);\n\t\t\treturn lines.join(\"\\n\");\n\t\t}\n\t\tdefault:\n\t\t\treturn \"z.unknown()\";\n\t}\n}\n","/**\n * Runtime schema reflection for ARBITRARY Move event types — not just the\n * curated catalog. Fetches struct layouts from Sui GraphQL (Inodra's gateway\n * with your API key, or any Sui GraphQL endpoint), substitutes concrete\n * generics, and builds the same loose, normalizing zod schemas the generated\n * catalog uses.\n *\n * ```ts\n * import { EventSchemaReflector } from \"@inodra/sui/events\";\n *\n * const reflector = new EventSchemaReflector({ apiKey, network: \"mainnet\" });\n * const schema = await reflector.schemaFor(\"0xpkg::vault::Deposit<0x2::sui::SUI>\");\n * const payload = schema.parse(event.data);\n * ```\n */\nimport type { z } from \"zod\";\nimport { authFromOptions, type InodraAuth } from \"../core/auth.js\";\nimport { graphqlUrl, type InodraNetwork } from \"../core/network.js\";\nimport { SDK_HEADER_NAME, SDK_HEADER_VALUE } from \"../core/version.js\";\nimport {\n\tformatMoveType,\n\ttype MoveTypeNode,\n\tparseMoveType,\n\tresolveShape,\n\ttype SchemaShape,\n\tshapeToZod,\n\ttype StructField,\n} from \"./move-types.js\";\nimport { baseEventType } from \"./runtime.js\";\n\nexport interface EventSchemaReflectorOptions {\n\t/** Credentials for Inodra's GraphQL gateway. Omit when using a public url. */\n\tauth?: InodraAuth;\n\t/** Shorthand for `auth: { apiKey }`. */\n\tapiKey?: string;\n\t/** Defaults to \"mainnet\". Ignored when url is set. */\n\tnetwork?: InodraNetwork;\n\t/** GraphQL endpoint override (e.g. a public Sui GraphQL for keyless use). */\n\turl?: string;\n\t/** Custom fetch implementation. */\n\tfetch?: typeof globalThis.fetch;\n}\n\nconst STRUCT_QUERY = `query($pkg: SuiAddress!, $module: String!, $struct: String!) {\n\tpackage(address: $pkg) {\n\t\tmodule(name: $module) { struct(name: $struct) { fields { name type { repr } } } }\n\t}\n}`;\n\ninterface StructQueryResult {\n\tpackage: {\n\t\tmodule: {\n\t\t\tstruct: { fields: { name: string; type: { repr: string } }[] } | null;\n\t\t} | null;\n\t} | null;\n}\n\nexport class EventSchemaReflector {\n\tprivate readonly url: string;\n\tprivate readonly headers: Record<string, string>;\n\tprivate readonly fetchImpl: typeof globalThis.fetch;\n\t/** Struct-definition cache, keyed by `address::module::name`. */\n\tprivate readonly structs = new Map<\n\t\tstring,\n\t\tPromise<StructField[] | undefined>\n\t>();\n\t/** Resolved shape cache, keyed by the canonical concrete type string. */\n\tprivate readonly shapes = new Map<string, Promise<SchemaShape>>();\n\tprivate readonly schemas = new Map<string, Promise<z.ZodTypeAny>>();\n\n\tconstructor(options: EventSchemaReflectorOptions = {}) {\n\t\tthis.url = options.url ?? graphqlUrl(options.network ?? \"mainnet\");\n\t\tthis.fetchImpl = options.fetch ?? globalThis.fetch;\n\t\tconst headers: Record<string, string> = {\n\t\t\t\"content-type\": \"application/json\",\n\t\t\t[SDK_HEADER_NAME]: SDK_HEADER_VALUE,\n\t\t};\n\t\tif (options.auth !== undefined || options.apiKey) {\n\t\t\tconst credentials = authFromOptions(\n\t\t\t\toptions,\n\t\t\t\t\"EventSchemaReflector\",\n\t\t\t).staticCredentials();\n\t\t\tif (!credentials) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"EventSchemaReflector does not support dynamic credential providers\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tObject.assign(headers, credentials.headers);\n\t\t}\n\t\tthis.headers = headers;\n\t}\n\n\t/**\n\t * Resolved schema shape for a concrete Move type (cached). Useful for\n\t * codegen and introspection; most callers want {@link schemaFor}.\n\t */\n\tshapeFor(type: string): Promise<SchemaShape> {\n\t\tconst node = parseMoveType(type);\n\t\tconst key = formatMoveType(node);\n\t\tlet pending = this.shapes.get(key);\n\t\tif (!pending) {\n\t\t\tpending = resolveShape(node, (struct) => this.structFields(struct));\n\t\t\tthis.shapes.set(key, pending);\n\t\t\tpending.catch(() => this.shapes.delete(key));\n\t\t}\n\t\treturn pending;\n\t}\n\n\t/**\n\t * Build (and cache) a loose, normalizing zod schema for any concrete Move\n\t * event type. Same encoding rules as the generated catalog schemas.\n\t */\n\tschemaFor(type: string): Promise<z.ZodTypeAny> {\n\t\tconst key = formatMoveType(parseMoveType(type));\n\t\tlet pending = this.schemas.get(key);\n\t\tif (!pending) {\n\t\t\tpending = this.shapeFor(type).then((shape) => {\n\t\t\t\tif (shape.kind !== \"object\") {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${type} did not resolve to a struct — is it a Move event type on this network?`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn shapeToZod(shape);\n\t\t\t});\n\t\t\tthis.schemas.set(key, pending);\n\t\t\tpending.catch(() => this.schemas.delete(key));\n\t\t}\n\t\treturn pending;\n\t}\n\n\t/**\n\t * Validate + normalize an event payload against the reflected schema.\n\t * Accepts a Warp stream message, a bare `{type, data}` event payload, or\n\t * a webhook body. Returns undefined when the message carries a different\n\t * event type; throws when the payload doesn't fit the reflected schema.\n\t *\n\t * Matching: exact when `type` is fully instantiated; base-type when\n\t * `type` has no generics (all instantiations match).\n\t */\n\tasync parseEvent(\n\t\tmessage: unknown,\n\t\ttype: string,\n\t): Promise<Record<string, unknown> | undefined> {\n\t\tconst payload = extractEventPayload(message);\n\t\tif (!payload) {\n\t\t\treturn undefined;\n\t\t}\n\t\t// Canonicalize both sides — on-chain type strings use full-width\n\t\t// addresses (0x000…2::…), user input is usually short-form (0x2::…).\n\t\tconst canonical = (t: string) => formatMoveType(parseMoveType(t));\n\t\tconst requested = canonical(type);\n\t\tconst matches = type.includes(\"<\")\n\t\t\t? canonical(payload.type) === requested\n\t\t\t: canonical(baseEventType(payload.type)) === requested;\n\t\tif (!matches) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst schema = await this.schemaFor(\n\t\t\ttype.includes(\"<\") ? type : payload.type,\n\t\t);\n\t\treturn schema.parse(payload.data) as Record<string, unknown>;\n\t}\n\n\tprivate structFields(struct: {\n\t\taddress: string;\n\t\tmodule: string;\n\t\tname: string;\n\t}): Promise<StructField[] | undefined> {\n\t\tconst key = `${struct.address}::${struct.module}::${struct.name}`;\n\t\tlet pending = this.structs.get(key);\n\t\tif (!pending) {\n\t\t\tpending = this.fetchStruct(struct);\n\t\t\tthis.structs.set(key, pending);\n\t\t\tpending.catch(() => this.structs.delete(key));\n\t\t}\n\t\treturn pending;\n\t}\n\n\tprivate async fetchStruct(struct: {\n\t\taddress: string;\n\t\tmodule: string;\n\t\tname: string;\n\t}): Promise<StructField[] | undefined> {\n\t\tlet lastError: unknown;\n\t\tfor (let attempt = 0; attempt < 3; attempt++) {\n\t\t\ttry {\n\t\t\t\tconst response = await this.fetchImpl(this.url, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: this.headers,\n\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\tquery: STRUCT_QUERY,\n\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\tpkg: struct.address,\n\t\t\t\t\t\t\tmodule: struct.module,\n\t\t\t\t\t\t\tstruct: struct.name,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new Error(`GraphQL reflection failed: HTTP ${response.status}`);\n\t\t\t\t}\n\t\t\t\tconst body = (await response.json()) as {\n\t\t\t\t\tdata?: StructQueryResult;\n\t\t\t\t\terrors?: unknown;\n\t\t\t\t};\n\t\t\t\tif (body.errors) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`GraphQL reflection errors: ${JSON.stringify(body.errors)}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst fields = body.data?.package?.module?.struct?.fields;\n\t\t\t\tif (!fields) {\n\t\t\t\t\treturn undefined; // unknown struct — caller maps to z.unknown()\n\t\t\t\t}\n\t\t\t\treturn fields.map((field) => ({\n\t\t\t\t\tname: field.name,\n\t\t\t\t\ttype: parseMoveType(field.type.repr) as MoveTypeNode,\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error;\n\t\t\t\tawait new Promise((r) => setTimeout(r, 300 * 2 ** attempt));\n\t\t\t}\n\t\t}\n\t\tthrow lastError;\n\t}\n}\n\n// Local copy of the delivery-shape extractor (index.ts owns the catalog-typed\n// variant; this one is untyped by design).\nfunction extractEventPayload(\n\tinput: unknown,\n\tdepth = 0,\n): { type: string; data: unknown } | undefined {\n\tif (depth > 3 || typeof input !== \"object\" || input === null) {\n\t\treturn undefined;\n\t}\n\tconst record = input as Record<string, unknown>;\n\tif (\n\t\ttypeof record.type === \"string\" &&\n\t\trecord.type.includes(\"::\") &&\n\t\t\"data\" in record\n\t) {\n\t\treturn { type: record.type, data: record.data };\n\t}\n\treturn (\n\t\textractEventPayload(record.payload, depth + 1) ??\n\t\textractEventPayload(record.data, depth + 1)\n\t);\n}\n","// Code generated by scripts/generate-events.ts. DO NOT EDIT.\n// Regenerate: bun scripts/generate-events.ts (see file header for sources).\n// 121 catalog events.\nimport { z } from \"zod\";\nimport {\n\tmoveAddress,\n\tmoveBool,\n\tmoveSmallUint,\n\tmoveString,\n\tmoveTypeName,\n\tmoveUint,\n} from \"../events/runtime.js\";\n\n/**\n * 7K — Swap confirmed — 7k (swap)\n * A completed 7K aggregator trade (per-trade settlement summary).\n */\nexport const _7kConfirmSwapSchema = z.looseObject({\n\t\"quote_id\": moveString,\n\t\"from\": moveTypeName,\n\t\"target\": moveTypeName,\n\t\"amount_in\": moveUint,\n\t\"amount_out\": moveUint,\n\t\"fee_amount\": moveUint,\n\t\"fee_rate\": moveSmallUint,\n\t\"fee_recipient\": moveAddress,\n\t\"expect_amount_out\": moveUint,\n\t\"amount_out_limit\": moveUint,\n});\nexport type _7kConfirmSwapEvent = z.infer<typeof _7kConfirmSwapSchema>;\n\n/**\n * 7K — Swap (route leg) — 7k (swap)\n * A single routing-leg swap on the 7K aggregator (per pool/DEX).\n */\nexport const _7kSwapSchema = z.looseObject({\n\t\"quote_id\": moveString,\n\t\"pool_id\": moveAddress,\n\t\"dex\": moveString,\n\t\"from\": moveTypeName,\n\t\"target\": moveTypeName,\n\t\"amount_in\": moveUint,\n\t\"amount_out\": moveUint,\n\t\"amount_in_remaining\": moveUint,\n});\nexport type _7kSwapEvent = z.infer<typeof _7kSwapSchema>;\n\n/**\n * Aftermath — Add liquidity — aftermath (liquidity)\n * Liquidity was deposited into an Aftermath AMM pool.\n */\nexport const AftermathDepositSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"issuer\": moveAddress,\n\t\"referrer\": moveAddress.nullable(),\n\t\"types\": z.array(moveString),\n\t\"deposits\": z.array(moveUint),\n\t\"reserves\": z.array(moveUint),\n\t\"lp_coins_minted\": moveUint,\n});\nexport type AftermathDepositEvent = z.infer<typeof AftermathDepositSchema>;\n\n/**\n * Aftermath — Funding settled (Perps) — aftermath (funding)\n * Funding was settled for an Aftermath perpetuals account.\n */\nexport const AftermathPerpFundingSchema = z.looseObject({\n\t\"ch_id\": moveAddress,\n\t\"account_id\": moveUint,\n\t\"collateral_change_usd\": moveUint,\n\t\"collateral_after\": moveUint,\n});\nexport type AftermathPerpFundingEvent = z.infer<typeof AftermathPerpFundingSchema>;\n\n/**\n * Aftermath — Position liquidated (Perps) — aftermath (liquidation)\n * A perpetuals position was liquidated on Aftermath.\n */\nexport const AftermathPerpLiquidatedSchema = z.looseObject({\n\t\"ch_id\": moveAddress,\n\t\"liqee_account_id\": moveUint,\n\t\"liqor_account_id\": moveUint,\n\t\"is_liqee_long\": moveBool,\n\t\"base_liquidated\": moveUint,\n\t\"quote_liquidated\": moveUint,\n\t\"bad_debt\": moveUint,\n});\nexport type AftermathPerpLiquidatedEvent = z.infer<typeof AftermathPerpLiquidatedSchema>;\n\n/**\n * Aftermath — Swap — aftermath (swap)\n * A swap was executed on an Aftermath AMM pool.\n */\nexport const AftermathSwapSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"issuer\": moveAddress,\n\t\"referrer\": moveAddress.nullable(),\n\t\"types_in\": z.array(moveString),\n\t\"amounts_in\": z.array(moveUint),\n\t\"types_out\": z.array(moveString),\n\t\"amounts_out\": z.array(moveUint),\n\t\"reserves\": z.array(moveUint),\n});\nexport type AftermathSwapEvent = z.infer<typeof AftermathSwapSchema>;\n\n/**\n * AlphaFi — Vault deposit/withdraw — alphafi (vault)\n * A deposit or withdrawal on an AlphaFi vault (event_type: 1 = deposit, 0 = withdraw).\n */\nexport const AlphafiLiquidityChangeSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"event_type\": moveSmallUint,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n\t\"total_amount_a\": moveUint,\n\t\"total_amount_b\": moveUint,\n\t\"fee_collected_a\": moveUint,\n\t\"fee_collected_b\": moveUint,\n\t\"tokens_invested\": moveUint,\n\t\"sender\": moveAddress,\n});\nexport type AlphafiLiquidityChangeEvent = z.infer<typeof AlphafiLiquidityChangeSchema>;\n\n/**\n * AlphaFi — Reward harvest — alphafi (reward)\n * An AlphaFi vault auto-compounded its rewards.\n */\nexport const AlphafiRewardSchema = z.looseObject({\n\t\"coin_type\": moveTypeName,\n\t\"amount\": moveUint,\n\t\"investor_id\": moveAddress,\n\t\"fee_collected\": moveUint,\n\t\"total_amount_a\": moveUint,\n\t\"total_amount_b\": moveUint,\n\t\"sender\": moveAddress,\n});\nexport type AlphafiRewardEvent = z.infer<typeof AlphafiRewardSchema>;\n\n/**\n * Bluefin — Fee collected — bluefin (fee)\n * Trading fees were collected from a Bluefin position.\n */\nexport const BluefinFeeCollectedSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n\t\"coin_a_amount\": moveUint,\n\t\"coin_b_amount\": moveUint,\n});\nexport type BluefinFeeCollectedEvent = z.infer<typeof BluefinFeeCollectedSchema>;\n\n/**\n * Bluefin — Liquidity provided — bluefin (liquidity)\n * Liquidity was provided to a Bluefin position.\n */\nexport const BluefinLiquidityProvidedSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n\t\"coin_a_amount\": moveUint,\n\t\"coin_b_amount\": moveUint,\n\t\"liquidity\": moveUint,\n});\nexport type BluefinLiquidityProvidedEvent = z.infer<typeof BluefinLiquidityProvidedSchema>;\n\n/**\n * Bluefin — Liquidity removed — bluefin (liquidity)\n * Liquidity was removed from a Bluefin position.\n */\nexport const BluefinLiquidityRemovedSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n\t\"coin_a_amount\": moveUint,\n\t\"coin_b_amount\": moveUint,\n\t\"liquidity\": moveUint,\n});\nexport type BluefinLiquidityRemovedEvent = z.infer<typeof BluefinLiquidityRemovedSchema>;\n\n/**\n * Bluefin — Pool created — bluefin (pool)\n * A new Bluefin spot pool was created.\n */\nexport const BluefinPoolCreatedSchema = z.looseObject({\n\t\"id\": moveAddress,\n\t\"coin_a\": moveString,\n\t\"coin_b\": moveString,\n\t\"fee_rate\": moveUint,\n\t\"tick_spacing\": moveSmallUint,\n});\nexport type BluefinPoolCreatedEvent = z.infer<typeof BluefinPoolCreatedSchema>;\n\n/**\n * Bluefin — Position closed — bluefin (position)\n * A Bluefin liquidity position was closed.\n */\nexport const BluefinPositionClosedSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n});\nexport type BluefinPositionClosedEvent = z.infer<typeof BluefinPositionClosedSchema>;\n\n/**\n * Bluefin — Position opened — bluefin (position)\n * A new Bluefin liquidity position was opened.\n */\nexport const BluefinPositionOpenedSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n});\nexport type BluefinPositionOpenedEvent = z.infer<typeof BluefinPositionOpenedSchema>;\n\n/**\n * Bluefin — Reward collected — bluefin (reward)\n * Incentive rewards were collected from a Bluefin position.\n */\nexport const BluefinRewardCollectedSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n\t\"reward_type\": moveString,\n\t\"reward_symbol\": moveString,\n\t\"reward_amount\": moveUint,\n});\nexport type BluefinRewardCollectedEvent = z.infer<typeof BluefinRewardCollectedSchema>;\n\n/**\n * Bluefin — Swap — bluefin (swap)\n * An asset swap was executed on a Bluefin spot pool.\n */\nexport const BluefinSwapSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"a2b\": moveBool,\n\t\"amount_in\": moveUint,\n\t\"amount_out\": moveUint,\n\t\"fee\": moveUint,\n\t\"after_sqrt_price\": moveUint,\n\t\"sequence_number\": moveUint,\n});\nexport type BluefinSwapEvent = z.infer<typeof BluefinSwapSchema>;\n\n/**\n * Bucket — Borrow (mint BUCK) — bucket (borrow)\n * BUCK was minted against collateral in a Bucket CDP.\n */\nexport const BucketBorrowSchema = z.looseObject({\n\t\"collateral_type\": moveString,\n\t\"buck_amount\": moveUint,\n});\nexport type BucketBorrowEvent = z.infer<typeof BucketBorrowSchema>;\n\n/**\n * Bucket — Deposit collateral — bucket (supply)\n * Collateral was added to a Bucket CDP.\n */\nexport const BucketDepositCollateralSchema = z.looseObject({\n\t\"collateral_type\": moveString,\n\t\"collateral_amount\": moveUint,\n});\nexport type BucketDepositCollateralEvent = z.infer<typeof BucketDepositCollateralSchema>;\n\n/**\n * Bucket — Position updated — bucket (position)\n * A Bucket CDP position (bottle) changed state.\n */\nexport const BucketPositionUpdatedSchema = z.looseObject({\n\t\"collateral_type\": moveString,\n\t\"debtor\": moveAddress,\n\t\"bottle_id\": moveAddress,\n\t\"collateral_amount\": moveUint,\n\t\"buck_amount\": moveUint,\n});\nexport type BucketPositionUpdatedEvent = z.infer<typeof BucketPositionUpdatedSchema>;\n\n/**\n * Bucket — Redeem — bucket (liquidation)\n * BUCK was redeemed for collateral on a Bucket CDP.\n */\nexport const BucketRedeemSchema = z.looseObject({\n\t\"collateral_type\": moveString,\n\t\"input_buck_amount\": moveUint,\n\t\"output_collateral_amount\": moveUint,\n});\nexport type BucketRedeemEvent = z.infer<typeof BucketRedeemSchema>;\n\n/**\n * Bucket — Repay (burn BUCK) — bucket (repay)\n * BUCK was burned to repay debt in a Bucket CDP.\n */\nexport const BucketRepaySchema = z.looseObject({\n\t\"collateral_type\": moveString,\n\t\"buck_amount\": moveUint,\n});\nexport type BucketRepayEvent = z.infer<typeof BucketRepaySchema>;\n\n/**\n * Bucket — sBUCK deposit — bucket (supply)\n * BUCK was deposited into the sBUCK savings vault.\n */\nexport const BucketSbuckDepositSchema = z.looseObject({\n\t\"buck_amount\": moveUint,\n\t\"sbuck_share\": moveUint,\n});\nexport type BucketSbuckDepositEvent = z.infer<typeof BucketSbuckDepositSchema>;\n\n/**\n * Bucket — sBUCK rewards collected — bucket (reward)\n * Rewards were collected from the sBUCK savings vault.\n */\nexport const BucketSbuckRewardsSchema = z.looseObject({\n\t\"buck_amount\": moveUint,\n});\nexport type BucketSbuckRewardsEvent = z.infer<typeof BucketSbuckRewardsSchema>;\n\n/**\n * Bucket — Withdraw collateral — bucket (withdraw)\n * Collateral was removed from a Bucket CDP.\n */\nexport const BucketWithdrawCollateralSchema = z.looseObject({\n\t\"collateral_type\": moveString,\n\t\"collateral_amount\": moveUint,\n});\nexport type BucketWithdrawCollateralEvent = z.infer<typeof BucketWithdrawCollateralSchema>;\n\n/**\n * Cetus — Add liquidity — cetus (liquidity)\n * Liquidity was added to a Cetus position.\n */\nexport const CetusAddLiquiditySchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"position\": moveAddress,\n\t\"liquidity\": moveUint,\n\t\"after_liquidity\": moveUint,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n});\nexport type CetusAddLiquidityEvent = z.infer<typeof CetusAddLiquiditySchema>;\n\n/**\n * Cetus — Close position — cetus (position)\n * A Cetus liquidity position was closed.\n */\nexport const CetusClosePositionSchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"position\": moveAddress,\n});\nexport type CetusClosePositionEvent = z.infer<typeof CetusClosePositionSchema>;\n\n/**\n * Cetus — Collect fee — cetus (fee)\n * Accrued swap fees were collected from a Cetus position.\n */\nexport const CetusCollectFeeSchema = z.looseObject({\n\t\"position\": moveAddress,\n\t\"pool\": moveAddress,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n});\nexport type CetusCollectFeeEvent = z.infer<typeof CetusCollectFeeSchema>;\n\n/**\n * Cetus — Create pool — cetus (pool)\n * A new Cetus CLMM pool was created via the factory.\n */\nexport const CetusCreatePoolSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"coin_type_a\": moveString,\n\t\"coin_type_b\": moveString,\n\t\"tick_spacing\": moveSmallUint,\n});\nexport type CetusCreatePoolEvent = z.infer<typeof CetusCreatePoolSchema>;\n\n/**\n * Cetus — Open position — cetus (position)\n * A new Cetus liquidity position was opened.\n */\nexport const CetusOpenPositionSchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"position\": moveAddress,\n});\nexport type CetusOpenPositionEvent = z.infer<typeof CetusOpenPositionSchema>;\n\n/**\n * Cetus — Remove liquidity — cetus (liquidity)\n * Liquidity was removed from a Cetus position.\n */\nexport const CetusRemoveLiquiditySchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"position\": moveAddress,\n\t\"liquidity\": moveUint,\n\t\"after_liquidity\": moveUint,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n});\nexport type CetusRemoveLiquidityEvent = z.infer<typeof CetusRemoveLiquiditySchema>;\n\n/**\n * Cetus — Swap — cetus (swap)\n * A token swap was executed on a Cetus CLMM pool.\n */\nexport const CetusSwapSchema = z.looseObject({\n\t\"atob\": moveBool,\n\t\"pool\": moveAddress,\n\t\"partner\": moveAddress,\n\t\"amount_in\": moveUint,\n\t\"amount_out\": moveUint,\n\t\"fee_amount\": moveUint,\n\t\"before_sqrt_price\": moveUint,\n\t\"after_sqrt_price\": moveUint,\n\t\"steps\": moveUint,\n});\nexport type CetusSwapEvent = z.infer<typeof CetusSwapSchema>;\n\n/**\n * Current — Borrow — current (borrow)\n * Assets were borrowed from a Current lending market.\n */\nexport const CurrentBorrowSchema = z.looseObject({\n\t\"borrower\": moveAddress,\n\t\"market\": moveTypeName,\n\t\"obligation\": moveAddress,\n\t\"asset\": moveTypeName,\n\t\"amount\": moveUint,\n\t\"time\": moveUint,\n});\nexport type CurrentBorrowEvent = z.infer<typeof CurrentBorrowSchema>;\n\n/**\n * Current — Deposit — current (supply)\n * Assets were deposited (supplied) to a Current lending market.\n */\nexport const CurrentDepositSchema = z.looseObject({\n\t\"minter\": moveAddress,\n\t\"market\": moveTypeName,\n\t\"obligation\": moveAddress,\n\t\"deposit_asset\": moveTypeName,\n\t\"deposit_amount\": moveUint,\n\t\"ctoken_amount\": moveUint,\n\t\"time\": moveUint,\n});\nexport type CurrentDepositEvent = z.infer<typeof CurrentDepositSchema>;\n\n/**\n * Current — Liquidation — current (liquidation)\n * A Current obligation was liquidated.\n */\nexport const CurrentLiquidateSchema = z.looseObject({\n\t\"liquidator\": moveAddress,\n\t\"market\": moveTypeName,\n\t\"obligation\": moveAddress,\n\t\"collateral_type\": moveTypeName,\n\t\"debt_type\": moveTypeName,\n\t\"seized_collateral_amount\": moveUint,\n\t\"repay_amount\": moveUint,\n\t\"refund_amount\": moveUint,\n\t\"timestamp\": moveUint,\n});\nexport type CurrentLiquidateEvent = z.infer<typeof CurrentLiquidateSchema>;\n\n/**\n * Current — Repay — current (repay)\n * A Current loan was repaid.\n */\nexport const CurrentRepaySchema = z.looseObject({\n\t\"repayer\": moveAddress,\n\t\"market\": moveTypeName,\n\t\"obligation\": moveAddress,\n\t\"asset\": moveTypeName,\n\t\"amount\": moveUint,\n\t\"refund\": moveUint,\n\t\"time\": moveUint,\n});\nexport type CurrentRepayEvent = z.infer<typeof CurrentRepaySchema>;\n\n/**\n * Current — Withdraw — current (withdraw)\n * Assets were withdrawn from a Current lending market.\n */\nexport const CurrentWithdrawSchema = z.looseObject({\n\t\"redeemer\": moveAddress,\n\t\"market\": moveTypeName,\n\t\"obligation\": moveAddress,\n\t\"withdraw_asset\": moveTypeName,\n\t\"withdraw_amount\": moveUint,\n\t\"time\": moveUint,\n});\nexport type CurrentWithdrawEvent = z.infer<typeof CurrentWithdrawSchema>;\n\n/**\n * DeepBook — Balance change — deepbook (fee)\n * A deposit or withdrawal on a DeepBook balance manager.\n */\nexport const DeepbookBalanceSchema = z.looseObject({\n\t\"balance_manager_id\": moveAddress,\n\t\"asset\": moveTypeName,\n\t\"amount\": moveUint,\n\t\"deposit\": moveBool,\n});\nexport type DeepbookBalanceEvent = z.infer<typeof DeepbookBalanceSchema>;\n\n/**\n * DeepBook — Flash loan borrowed — deepbook (fee)\n * A flash loan was borrowed from a DeepBook pool.\n */\nexport const DeepbookFlashLoanSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"borrow_quantity\": moveUint,\n\t\"type_name\": moveTypeName,\n});\nexport type DeepbookFlashLoanEvent = z.infer<typeof DeepbookFlashLoanSchema>;\n\n/**\n * DeepBook — Order canceled — deepbook (order)\n * A DeepBook maker order was canceled.\n */\nexport const DeepbookOrderCanceledSchema = z.looseObject({\n\t\"balance_manager_id\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"order_id\": moveUint,\n\t\"trader\": moveAddress,\n\t\"price\": moveUint,\n\t\"is_bid\": moveBool,\n\t\"original_quantity\": moveUint,\n\t\"base_asset_quantity_canceled\": moveUint,\n\t\"timestamp\": moveUint,\n});\nexport type DeepbookOrderCanceledEvent = z.infer<typeof DeepbookOrderCanceledSchema>;\n\n/**\n * DeepBook — Order filled — deepbook (order)\n * A DeepBook order was filled (partially or fully).\n */\nexport const DeepbookOrderFilledSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"maker_order_id\": moveUint,\n\t\"taker_order_id\": moveUint,\n\t\"price\": moveUint,\n\t\"taker_is_bid\": moveBool,\n\t\"base_quantity\": moveUint,\n\t\"quote_quantity\": moveUint,\n\t\"taker_fee\": moveUint,\n\t\"maker_fee\": moveUint,\n\t\"timestamp\": moveUint,\n});\nexport type DeepbookOrderFilledEvent = z.infer<typeof DeepbookOrderFilledSchema>;\n\n/**\n * DeepBook — Order update — deepbook (order)\n * An order's lifecycle update on a DeepBook pool (placed/filled/status).\n */\nexport const DeepbookOrderInfoSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"order_id\": moveUint,\n\t\"balance_manager_id\": moveAddress,\n\t\"client_order_id\": moveUint,\n\t\"trader\": moveAddress,\n\t\"order_type\": moveSmallUint,\n\t\"price\": moveUint,\n\t\"is_bid\": moveBool,\n\t\"original_quantity\": moveUint,\n\t\"executed_quantity\": moveUint,\n\t\"status\": moveSmallUint,\n\t\"timestamp\": moveUint,\n});\nexport type DeepbookOrderInfoEvent = z.infer<typeof DeepbookOrderInfoSchema>;\n\n/**\n * DeepBook — Order placed — deepbook (order)\n * A maker limit order was placed on a DeepBook pool.\n */\nexport const DeepbookOrderPlacedSchema = z.looseObject({\n\t\"balance_manager_id\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"order_id\": moveUint,\n\t\"client_order_id\": moveUint,\n\t\"trader\": moveAddress,\n\t\"price\": moveUint,\n\t\"is_bid\": moveBool,\n\t\"placed_quantity\": moveUint,\n\t\"expire_timestamp\": moveUint,\n\t\"timestamp\": moveUint,\n});\nexport type DeepbookOrderPlacedEvent = z.infer<typeof DeepbookOrderPlacedSchema>;\n\n/**\n * Ember — Vault deposit — ember (vault)\n * A deposit into an Ember vault (matches all deposit coin types).\n */\nexport const EmberDepositSchema = z.looseObject({\n\t\"vault_id\": moveAddress,\n\t\"owner\": moveAddress,\n\t\"total_amount\": moveUint,\n\t\"shares_minted\": moveUint,\n\t\"current_balance\": moveUint,\n\t\"total_shares\": moveUint,\n\t\"sequence_number\": moveUint,\n});\nexport type EmberDepositEvent = z.infer<typeof EmberDepositSchema>;\n\n/**\n * Ember — Vault rate updated — ember (reward)\n * An Ember vault's share rate (price) was updated.\n */\nexport const EmberRateUpdatedSchema = z.looseObject({\n\t\"vault_id\": moveAddress,\n\t\"previous_rate\": moveUint,\n\t\"new_rate\": moveUint,\n\t\"sequence_number\": moveUint,\n});\nexport type EmberRateUpdatedEvent = z.infer<typeof EmberRateUpdatedSchema>;\n\n/**\n * Ember — Redeem processed — ember (withdraw)\n * A queued Ember redeem request was processed.\n */\nexport const EmberRedeemProcessedSchema = z.looseObject({\n\t\"vault_id\": moveAddress,\n\t\"owner\": moveAddress,\n\t\"receiver\": moveAddress,\n\t\"shares\": moveUint,\n\t\"withdraw_amount\": moveUint,\n\t\"skipped\": moveBool,\n\t\"cancelled\": moveBool,\n\t\"sequence_number\": moveUint,\n});\nexport type EmberRedeemProcessedEvent = z.infer<typeof EmberRedeemProcessedSchema>;\n\n/**\n * Ember — Redeem requested — ember (withdraw)\n * A redeem (withdrawal) was requested from an Ember vault.\n */\nexport const EmberRedeemRequestSchema = z.looseObject({\n\t\"vault_id\": moveAddress,\n\t\"owner\": moveAddress,\n\t\"receiver\": moveAddress,\n\t\"shares\": moveUint,\n\t\"total_shares\": moveUint,\n\t\"sequence_number\": moveUint,\n});\nexport type EmberRedeemRequestEvent = z.infer<typeof EmberRedeemRequestSchema>;\n\n/**\n * FlowX — Pair created (AMM) — flowx (pool)\n * A new FlowX AMM trading pair was created.\n */\nexport const FlowxAmmPairCreatedSchema = z.looseObject({\n\t\"user\": moveAddress,\n\t\"coin_x\": moveString,\n\t\"coin_y\": moveString,\n});\nexport type FlowxAmmPairCreatedEvent = z.infer<typeof FlowxAmmPairCreatedSchema>;\n\n/**\n * FlowX — Swap (AMM) — flowx (swap)\n * A swap was executed on a FlowX AMM pair.\n */\nexport const FlowxAmmSwapSchema = z.looseObject({\n\t\"user\": moveAddress,\n\t\"coin_x\": moveString,\n\t\"coin_y\": moveString,\n\t\"amount_x_in\": moveUint,\n\t\"amount_y_in\": moveUint,\n\t\"amount_x_out\": moveUint,\n\t\"amount_y_out\": moveUint,\n});\nexport type FlowxAmmSwapEvent = z.infer<typeof FlowxAmmSwapSchema>;\n\n/**\n * FlowX — Pool created (CLMM) — flowx (pool)\n * A new FlowX CLMM pool was created.\n */\nexport const FlowxClmmPoolCreatedSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"coin_type_x\": moveTypeName,\n\t\"coin_type_y\": moveTypeName,\n\t\"fee_rate\": moveUint,\n\t\"tick_spacing\": moveSmallUint,\n});\nexport type FlowxClmmPoolCreatedEvent = z.infer<typeof FlowxClmmPoolCreatedSchema>;\n\n/**\n * FlowX — Swap (CLMM) — flowx (swap)\n * A swap was executed on a FlowX CLMM pool.\n */\nexport const FlowxClmmSwapSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"x_for_y\": moveBool,\n\t\"amount_x\": moveUint,\n\t\"amount_y\": moveUint,\n\t\"liquidity\": moveUint,\n\t\"fee_amount\": moveUint,\n});\nexport type FlowxClmmSwapEvent = z.infer<typeof FlowxClmmSwapSchema>;\n\n/**\n * Haedal — Instant unstaked — haedal (unstake)\n * An instant unstake was performed on Haedal.\n */\nexport const HaedalInstantUnstakedSchema = z.looseObject({\n\t\"owner\": moveAddress,\n\t\"sui_amount\": moveUint,\n\t\"st_amount\": moveUint,\n});\nexport type HaedalInstantUnstakedEvent = z.infer<typeof HaedalInstantUnstakedSchema>;\n\n/**\n * Haedal — Staked — haedal (stake)\n * SUI was staked with Haedal in exchange for haSUI.\n */\nexport const HaedalStakedSchema = z.looseObject({\n\t\"owner\": moveAddress,\n\t\"sui_amount\": moveUint,\n\t\"st_amount\": moveUint,\n\t\"validator\": moveAddress,\n});\nexport type HaedalStakedEvent = z.infer<typeof HaedalStakedSchema>;\n\n/**\n * Haedal — Unstaked — haedal (unstake)\n * A delayed unstake was initiated on Haedal.\n */\nexport const HaedalUnstakedSchema = z.looseObject({\n\t\"owner\": moveAddress,\n\t\"epoch\": moveUint,\n\t\"sui_amount\": moveUint,\n\t\"st_amount\": moveUint,\n});\nexport type HaedalUnstakedEvent = z.infer<typeof HaedalUnstakedSchema>;\n\n/**\n * Kai — Increase position — kai (liquidity)\n * Liquidity was added to a Kai leveraged position.\n */\nexport const KaiAddLiquiditySchema = z.looseObject({\n\t\"position_id\": moveAddress,\n\t\"sqrt_pool_price_x64\": moveUint,\n\t\"delta_l\": moveUint,\n\t\"delta_x\": moveUint,\n\t\"delta_y\": moveUint,\n});\nexport type KaiAddLiquidityEvent = z.infer<typeof KaiAddLiquiditySchema>;\n\n/**\n * Kai — Deleverage — kai (repay)\n * A Kai leveraged position was deleveraged (debt repaid).\n */\nexport const KaiDeleverageSchema = z.looseObject({\n\t\"position_id\": moveAddress,\n\t\"delta_l\": moveUint,\n\t\"delta_x\": moveUint,\n\t\"delta_y\": moveUint,\n\t\"x_repaid\": moveUint,\n\t\"y_repaid\": moveUint,\n});\nexport type KaiDeleverageEvent = z.infer<typeof KaiDeleverageSchema>;\n\n/**\n * Kai — Liquidation — kai (liquidation)\n * A Kai leveraged position was liquidated.\n */\nexport const KaiLiquidationSchema = z.looseObject({\n\t\"position_id\": moveAddress,\n\t\"x_repaid\": moveUint,\n\t\"y_repaid\": moveUint,\n\t\"liquidator_reward_x\": moveUint,\n\t\"liquidator_reward_y\": moveUint,\n\t\"liquidation_fee_x\": moveUint,\n\t\"liquidation_fee_y\": moveUint,\n});\nexport type KaiLiquidationEvent = z.infer<typeof KaiLiquidationSchema>;\n\n/**\n * Kai — Open leveraged position — kai (borrow)\n * A new Kai leveraged CLMM position was opened.\n */\nexport const KaiPositionOpenSchema = z.looseObject({\n\t\"position_id\": moveAddress,\n\t\"config_id\": moveAddress,\n\t\"x0\": moveUint,\n\t\"y0\": moveUint,\n\t\"cx\": moveUint,\n\t\"cy\": moveUint,\n\t\"dx\": moveUint,\n\t\"dy\": moveUint,\n\t\"l\": moveUint,\n\t\"creation_fee_amt_sui\": moveUint,\n});\nexport type KaiPositionOpenEvent = z.infer<typeof KaiPositionOpenSchema>;\n\n/**\n * Kai — Reduce position — kai (withdraw)\n * A Kai leveraged position was reduced / partially withdrawn.\n */\nexport const KaiReduceSchema = z.looseObject({\n\t\"position_id\": moveAddress,\n\t\"delta_l\": moveUint,\n\t\"delta_x\": moveUint,\n\t\"delta_y\": moveUint,\n\t\"withdrawn_x\": moveUint,\n\t\"withdrawn_y\": moveUint,\n\t\"x_repaid\": moveUint,\n\t\"y_repaid\": moveUint,\n});\nexport type KaiReduceEvent = z.infer<typeof KaiReduceSchema>;\n\n/**\n * Kai — Supply to pool — kai (lend)\n * Liquidity was supplied to a Kai lending pool.\n */\nexport const KaiSupplySchema = z.looseObject({\n\t\"supply_pool_id\": moveAddress,\n\t\"deposited\": moveUint,\n\t\"share_balance\": moveUint,\n});\nexport type KaiSupplyEvent = z.infer<typeof KaiSupplySchema>;\n\n/**\n * Kai — Withdraw from pool — kai (withdraw)\n * Supplied liquidity was withdrawn from a Kai lending pool.\n */\nexport const KaiSupplyWithdrawSchema = z.looseObject({\n\t\"supply_pool_id\": moveAddress,\n\t\"share_balance\": moveUint,\n\t\"withdrawn\": moveUint,\n});\nexport type KaiSupplyWithdrawEvent = z.infer<typeof KaiSupplyWithdrawSchema>;\n\n/**\n * Kriya — Add liquidity — kriya (liquidity)\n * Liquidity was provided to a Kriya pool.\n */\nexport const KriyaAddLiquiditySchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"liquidity_provider\": moveAddress,\n\t\"amount_x\": moveUint,\n\t\"amount_y\": moveUint,\n\t\"lsp_minted\": moveUint,\n});\nexport type KriyaAddLiquidityEvent = z.infer<typeof KriyaAddLiquiditySchema>;\n\n/**\n * Kriya — Swap — kriya (swap)\n * A token swap was executed on a Kriya spot pool (matches all token types).\n */\nexport const KriyaSwapSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"user\": moveAddress,\n\t\"reserve_x\": moveUint,\n\t\"reserve_y\": moveUint,\n\t\"amount_in\": moveUint,\n\t\"amount_out\": moveUint,\n});\nexport type KriyaSwapEvent = z.infer<typeof KriyaSwapSchema>;\n\n/**\n * Magma — Add liquidity — magma (liquidity)\n * Liquidity was added to a Magma CLMM pool.\n */\nexport const MagmaAddLiquiditySchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"position\": moveAddress,\n\t\"liquidity\": moveUint,\n\t\"after_liquidity\": moveUint,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n});\nexport type MagmaAddLiquidityEvent = z.infer<typeof MagmaAddLiquiditySchema>;\n\n/**\n * Magma — Collect fee — magma (fee)\n * Trading fees were collected from a Magma position.\n */\nexport const MagmaCollectFeeSchema = z.looseObject({\n\t\"position\": moveAddress,\n\t\"pool\": moveAddress,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n});\nexport type MagmaCollectFeeEvent = z.infer<typeof MagmaCollectFeeSchema>;\n\n/**\n * Magma — Collect reward — magma (reward)\n * Incentive rewards were collected from a Magma position.\n */\nexport const MagmaCollectRewardSchema = z.looseObject({\n\t\"position\": moveAddress,\n\t\"pool\": moveAddress,\n\t\"amount\": moveUint,\n});\nexport type MagmaCollectRewardEvent = z.infer<typeof MagmaCollectRewardSchema>;\n\n/**\n * Magma — Create pool — magma (pool)\n * A new Magma CLMM pool was created.\n */\nexport const MagmaCreatePoolSchema = z.looseObject({\n\t\"pool_id\": moveAddress,\n\t\"coin_type_a\": moveString,\n\t\"coin_type_b\": moveString,\n\t\"tick_spacing\": moveSmallUint,\n});\nexport type MagmaCreatePoolEvent = z.infer<typeof MagmaCreatePoolSchema>;\n\n/**\n * Magma — Remove liquidity — magma (liquidity)\n * Liquidity was removed from a Magma CLMM pool.\n */\nexport const MagmaRemoveLiquiditySchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"position\": moveAddress,\n\t\"liquidity\": moveUint,\n\t\"after_liquidity\": moveUint,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n});\nexport type MagmaRemoveLiquidityEvent = z.infer<typeof MagmaRemoveLiquiditySchema>;\n\n/**\n * Magma — Swap — magma (swap)\n * A token swap was executed on a Magma CLMM pool.\n */\nexport const MagmaSwapSchema = z.looseObject({\n\t\"atob\": moveBool,\n\t\"pool\": moveAddress,\n\t\"partner\": moveAddress,\n\t\"amount_in\": moveUint,\n\t\"amount_out\": moveUint,\n\t\"fee_amount\": moveUint,\n\t\"before_sqrt_price\": moveUint,\n\t\"after_sqrt_price\": moveUint,\n\t\"steps\": moveUint,\n});\nexport type MagmaSwapEvent = z.infer<typeof MagmaSwapSchema>;\n\n/**\n * Mole — Add debt (leverage) — mole (borrow)\n * Debt was added to a Mole leveraged-farm position.\n */\nexport const MoleAddDebtSchema = z.looseObject({\n\t\"id\": moveUint,\n\t\"debt_share\": moveUint,\n});\nexport type MoleAddDebtEvent = z.infer<typeof MoleAddDebtSchema>;\n\n/**\n * Mole — Vault deposit — mole (vault)\n * A deposit into a Mole savings vault (matches all coin types).\n */\nexport const MoleDepositSchema = z.looseObject({\n\t\"account\": moveAddress,\n\t\"amount\": moveUint,\n\t\"share\": moveUint,\n});\nexport type MoleDepositEvent = z.infer<typeof MoleDepositSchema>;\n\n/**\n * Mole — Harvest rewards — mole (reward)\n * Rewards were harvested from a Mole vault/farm.\n */\nexport const MoleHarvestSchema = z.looseObject({\n\t\"user\": moveAddress,\n\t\"pid\": moveUint,\n\t\"amount\": moveUint,\n\t\"action_type\": moveUint,\n});\nexport type MoleHarvestEvent = z.infer<typeof MoleHarvestSchema>;\n\n/**\n * Mole — Position liquidation (kill) — mole (liquidation)\n * A Mole leveraged-farm position was liquidated.\n */\nexport const MoleKillSchema = z.looseObject({\n\t\"id\": moveUint,\n\t\"killer\": moveAddress,\n\t\"owner\": moveAddress,\n\t\"posVal\": moveUint,\n\t\"debt\": moveUint,\n\t\"prize\": moveUint,\n\t\"left\": moveUint,\n});\nexport type MoleKillEvent = z.infer<typeof MoleKillSchema>;\n\n/**\n * Mole — Vault withdraw — mole (withdraw)\n * A withdrawal from a Mole savings vault (matches all coin types).\n */\nexport const MoleWithdrawSchema = z.looseObject({\n\t\"account\": moveAddress,\n\t\"share\": moveUint,\n\t\"amount\": moveUint,\n});\nexport type MoleWithdrawEvent = z.infer<typeof MoleWithdrawSchema>;\n\n/**\n * Mole — Open/adjust farm position — mole (liquidity)\n * A Mole leveraged-farm position was opened or adjusted.\n */\nexport const MoleWorkSchema = z.looseObject({\n\t\"id\": moveUint,\n\t\"loan\": moveUint,\n});\nexport type MoleWorkEvent = z.infer<typeof MoleWorkSchema>;\n\n/**\n * Momentum — Add liquidity — momentum (liquidity)\n * Liquidity was added to a Momentum position.\n */\nexport const MomentumAddLiquiditySchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n\t\"liquidity\": moveUint,\n\t\"amount_x\": moveUint,\n\t\"amount_y\": moveUint,\n});\nexport type MomentumAddLiquidityEvent = z.infer<typeof MomentumAddLiquiditySchema>;\n\n/**\n * Momentum — Collect fee — momentum (fee)\n * Trading fees were collected from a Momentum position.\n */\nexport const MomentumCollectFeeSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n\t\"amount_x\": moveUint,\n\t\"amount_y\": moveUint,\n});\nexport type MomentumCollectFeeEvent = z.infer<typeof MomentumCollectFeeSchema>;\n\n/**\n * Momentum — Collect reward — momentum (reward)\n * Incentive rewards were collected from a Momentum position.\n */\nexport const MomentumCollectRewardSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n\t\"reward_coin_type\": moveTypeName,\n\t\"amount\": moveUint,\n});\nexport type MomentumCollectRewardEvent = z.infer<typeof MomentumCollectRewardSchema>;\n\n/**\n * Momentum — Pool created — momentum (pool)\n * A new Momentum pool was created.\n */\nexport const MomentumPoolCreatedSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"type_x\": moveTypeName,\n\t\"type_y\": moveTypeName,\n\t\"fee_rate\": moveUint,\n\t\"tick_spacing\": moveSmallUint,\n});\nexport type MomentumPoolCreatedEvent = z.infer<typeof MomentumPoolCreatedSchema>;\n\n/**\n * Momentum — Remove liquidity — momentum (liquidity)\n * Liquidity was removed from a Momentum position.\n */\nexport const MomentumRemoveLiquiditySchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"position_id\": moveAddress,\n\t\"liquidity\": moveUint,\n\t\"amount_x\": moveUint,\n\t\"amount_y\": moveUint,\n});\nexport type MomentumRemoveLiquidityEvent = z.infer<typeof MomentumRemoveLiquiditySchema>;\n\n/**\n * Momentum — Repay flash swap — momentum (fee)\n * A Momentum flash swap was repaid.\n */\nexport const MomentumRepayFlashSwapSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"amount_x_debt\": moveUint,\n\t\"amount_y_debt\": moveUint,\n\t\"paid_x\": moveUint,\n\t\"paid_y\": moveUint,\n\t\"reserve_x\": moveUint,\n\t\"reserve_y\": moveUint,\n});\nexport type MomentumRepayFlashSwapEvent = z.infer<typeof MomentumRepayFlashSwapSchema>;\n\n/**\n * Momentum — Swap — momentum (swap)\n * A swap was executed on a Momentum CLMM pool.\n */\nexport const MomentumSwapSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"pool_id\": moveAddress,\n\t\"x_for_y\": moveBool,\n\t\"amount_x\": moveUint,\n\t\"amount_y\": moveUint,\n\t\"fee_amount\": moveUint,\n\t\"liquidity\": moveUint,\n});\nexport type MomentumSwapEvent = z.infer<typeof MomentumSwapSchema>;\n\n/**\n * NAVI — Borrow — navi (borrow)\n * Assets were borrowed from a NAVI pool.\n */\nexport const NaviBorrowSchema = z.looseObject({\n\t\"reserve\": moveSmallUint,\n\t\"sender\": moveAddress,\n\t\"amount\": moveUint,\n\t\"market_id\": moveUint,\n});\nexport type NaviBorrowEvent = z.infer<typeof NaviBorrowSchema>;\n\n/**\n * NAVI — Deposit — navi (supply)\n * Assets were supplied to a NAVI lending pool.\n */\nexport const NaviDepositSchema = z.looseObject({\n\t\"reserve\": moveSmallUint,\n\t\"sender\": moveAddress,\n\t\"amount\": moveUint,\n\t\"market_id\": moveUint,\n});\nexport type NaviDepositEvent = z.infer<typeof NaviDepositSchema>;\n\n/**\n * NAVI — Liquidation — navi (liquidation)\n * An undercollateralized NAVI position was liquidated.\n */\nexport const NaviLiquidationSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"user\": moveAddress,\n\t\"collateral_asset\": moveSmallUint,\n\t\"collateral_amount\": moveUint,\n\t\"debt_asset\": moveSmallUint,\n\t\"debt_amount\": moveUint,\n\t\"market_id\": moveUint,\n});\nexport type NaviLiquidationEvent = z.infer<typeof NaviLiquidationSchema>;\n\n/**\n * NAVI — Repay — navi (repay)\n * Borrowed assets were repaid to a NAVI pool.\n */\nexport const NaviRepaySchema = z.looseObject({\n\t\"reserve\": moveSmallUint,\n\t\"sender\": moveAddress,\n\t\"amount\": moveUint,\n\t\"market_id\": moveUint,\n});\nexport type NaviRepayEvent = z.infer<typeof NaviRepaySchema>;\n\n/**\n * NAVI — Withdraw — navi (withdraw)\n * Supplied assets were withdrawn from a NAVI pool.\n */\nexport const NaviWithdrawSchema = z.looseObject({\n\t\"reserve\": moveSmallUint,\n\t\"sender\": moveAddress,\n\t\"to\": moveAddress,\n\t\"amount\": moveUint,\n\t\"market_id\": moveUint,\n});\nexport type NaviWithdrawEvent = z.infer<typeof NaviWithdrawSchema>;\n\n/**\n * Pyth — Price feed update — pyth (oracle)\n * A Pyth price feed was updated with new price data.\n */\nexport const PythPriceFeedUpdateSchema = z.looseObject({\n\t\"price_feed\": z.unknown(),\n\t\"timestamp\": moveUint,\n});\nexport type PythPriceFeedUpdateEvent = z.infer<typeof PythPriceFeedUpdateSchema>;\n\n/**\n * Scallop — Borrow — scallop (borrow)\n * Assets were borrowed from a Scallop lending market.\n */\nexport const ScallopBorrowSchema = z.looseObject({\n\t\"borrower\": moveAddress,\n\t\"obligation\": moveAddress,\n\t\"asset\": moveTypeName,\n\t\"amount\": moveUint,\n\t\"borrow_fee\": moveUint,\n\t\"time\": moveUint,\n});\nexport type ScallopBorrowEvent = z.infer<typeof ScallopBorrowSchema>;\n\n/**\n * Scallop — Deposit collateral — scallop (supply)\n * Collateral was deposited into a Scallop obligation.\n */\nexport const ScallopCollateralDepositSchema = z.looseObject({\n\t\"provider\": moveAddress,\n\t\"obligation\": moveAddress,\n\t\"deposit_asset\": moveTypeName,\n\t\"deposit_amount\": moveUint,\n});\nexport type ScallopCollateralDepositEvent = z.infer<typeof ScallopCollateralDepositSchema>;\n\n/**\n * Scallop — Withdraw collateral — scallop (withdraw)\n * Collateral was withdrawn from a Scallop obligation.\n */\nexport const ScallopCollateralWithdrawSchema = z.looseObject({\n\t\"taker\": moveAddress,\n\t\"obligation\": moveAddress,\n\t\"withdraw_asset\": moveTypeName,\n\t\"withdraw_amount\": moveUint,\n});\nexport type ScallopCollateralWithdrawEvent = z.infer<typeof ScallopCollateralWithdrawSchema>;\n\n/**\n * Scallop — Liquidation — scallop (liquidation)\n * A Scallop obligation was liquidated.\n */\nexport const ScallopLiquidationSchema = z.looseObject({\n\t\"liquidator\": moveAddress,\n\t\"obligation\": moveAddress,\n\t\"debt_type\": moveTypeName,\n\t\"collateral_type\": moveTypeName,\n\t\"repay_on_behalf\": moveUint,\n\t\"liq_amount\": moveUint,\n\t\"timestamp\": moveUint,\n});\nexport type ScallopLiquidationEvent = z.infer<typeof ScallopLiquidationSchema>;\n\n/**\n * Scallop — Repay — scallop (repay)\n * Borrowed assets were repaid to a Scallop market.\n */\nexport const ScallopRepaySchema = z.looseObject({\n\t\"repayer\": moveAddress,\n\t\"obligation\": moveAddress,\n\t\"asset\": moveTypeName,\n\t\"amount\": moveUint,\n\t\"time\": moveUint,\n});\nexport type ScallopRepayEvent = z.infer<typeof ScallopRepaySchema>;\n\n/**\n * SpringSui — Epoch changed (rewards) — springsui (reward)\n * SpringSui accrued staking rewards at an epoch change.\n */\nexport const SpringsuiEpochChangedSchema = z.looseObject({\n\t\"event\": z.looseObject({\n\t\t\"typename\": moveTypeName,\n\t\t\"old_sui_supply\": moveUint,\n\t\t\"new_sui_supply\": moveUint,\n\t\t\"lst_supply\": moveUint,\n\t\t\"spread_fee\": moveUint,\n\t}),\n});\nexport type SpringsuiEpochChangedEvent = z.infer<typeof SpringsuiEpochChangedSchema>;\n\n/**\n * SpringSui — Stake (mint LST) — springsui (stake)\n * SUI was staked to mint a SpringSui liquid-staking token.\n */\nexport const SpringsuiStakeSchema = z.looseObject({\n\t\"event\": z.looseObject({\n\t\t\"typename\": moveTypeName,\n\t\t\"sui_amount_in\": moveUint,\n\t\t\"lst_amount_out\": moveUint,\n\t\t\"fee_amount\": moveUint,\n\t}),\n});\nexport type SpringsuiStakeEvent = z.infer<typeof SpringsuiStakeSchema>;\n\n/**\n * SpringSui — Unstake (redeem LST) — springsui (unstake)\n * A SpringSui liquid-staking token was redeemed for SUI.\n */\nexport const SpringsuiUnstakeSchema = z.looseObject({\n\t\"event\": z.looseObject({\n\t\t\"typename\": moveTypeName,\n\t\t\"lst_amount_in\": moveUint,\n\t\t\"sui_amount_out\": moveUint,\n\t\t\"fee_amount\": moveUint,\n\t}),\n});\nexport type SpringsuiUnstakeEvent = z.infer<typeof SpringsuiUnstakeSchema>;\n\n/**\n * Steamm — Bank deposit (mint bToken) — steamm (supply)\n * Funds were deposited into a Steamm bank, minting bTokens.\n */\nexport const SteammBankDepositSchema = z.looseObject({\n\t\"event\": z.looseObject({\n\t\t\"user\": moveAddress,\n\t\t\"bank_id\": moveAddress,\n\t\t\"lending_market_id\": moveAddress,\n\t\t\"deposited_amount\": moveUint,\n\t\t\"minted_amount\": moveUint,\n\t}),\n});\nexport type SteammBankDepositEvent = z.infer<typeof SteammBankDepositSchema>;\n\n/**\n * Steamm — Bank withdraw (burn bToken) — steamm (withdraw)\n * bTokens were burned to withdraw funds from a Steamm bank.\n */\nexport const SteammBankWithdrawSchema = z.looseObject({\n\t\"event\": z.looseObject({\n\t\t\"user\": moveAddress,\n\t\t\"bank_id\": moveAddress,\n\t\t\"lending_market_id\": moveAddress,\n\t\t\"withdrawn_amount\": moveUint,\n\t\t\"burned_amount\": moveUint,\n\t}),\n});\nexport type SteammBankWithdrawEvent = z.infer<typeof SteammBankWithdrawSchema>;\n\n/**\n * Suilend — Borrow — suilend (borrow)\n * Assets were borrowed from a Suilend market.\n */\nexport const SuilendBorrowSchema = z.looseObject({\n\t\"lending_market_id\": moveAddress,\n\t\"coin_type\": moveTypeName,\n\t\"reserve_id\": moveAddress,\n\t\"obligation_id\": moveAddress,\n\t\"liquidity_amount\": moveUint,\n\t\"origination_fee_amount\": moveUint,\n});\nexport type SuilendBorrowEvent = z.infer<typeof SuilendBorrowSchema>;\n\n/**\n * Suilend — Claim reward — suilend (reward)\n * Rewards were claimed from a Suilend market.\n */\nexport const SuilendClaimRewardSchema = z.looseObject({\n\t\"lending_market_id\": moveAddress,\n\t\"reserve_id\": moveAddress,\n\t\"obligation_id\": moveAddress,\n\t\"is_deposit_reward\": moveBool,\n\t\"coin_type\": moveTypeName,\n\t\"liquidity_amount\": moveUint,\n});\nexport type SuilendClaimRewardEvent = z.infer<typeof SuilendClaimRewardSchema>;\n\n/**\n * Suilend — Deposit — suilend (supply)\n * Assets were deposited into a Suilend reserve.\n */\nexport const SuilendDepositSchema = z.looseObject({\n\t\"lending_market_id\": moveAddress,\n\t\"coin_type\": moveTypeName,\n\t\"reserve_id\": moveAddress,\n\t\"obligation_id\": moveAddress,\n\t\"ctoken_amount\": moveUint,\n});\nexport type SuilendDepositEvent = z.infer<typeof SuilendDepositSchema>;\n\n/**\n * Suilend — Liquidation — suilend (liquidation)\n * A Suilend obligation was liquidated.\n */\nexport const SuilendLiquidateSchema = z.looseObject({\n\t\"lending_market_id\": moveAddress,\n\t\"obligation_id\": moveAddress,\n\t\"repay_amount\": moveUint,\n\t\"withdraw_amount\": moveUint,\n\t\"protocol_fee_amount\": moveUint,\n\t\"liquidator_bonus_amount\": moveUint,\n});\nexport type SuilendLiquidateEvent = z.infer<typeof SuilendLiquidateSchema>;\n\n/**\n * Suilend — Repay — suilend (repay)\n * Borrowed assets were repaid to a Suilend market.\n */\nexport const SuilendRepaySchema = z.looseObject({\n\t\"lending_market_id\": moveAddress,\n\t\"coin_type\": moveTypeName,\n\t\"reserve_id\": moveAddress,\n\t\"obligation_id\": moveAddress,\n\t\"liquidity_amount\": moveUint,\n});\nexport type SuilendRepayEvent = z.infer<typeof SuilendRepaySchema>;\n\n/**\n * Suilend — Withdraw — suilend (withdraw)\n * Assets were withdrawn from a Suilend reserve.\n */\nexport const SuilendWithdrawSchema = z.looseObject({\n\t\"lending_market_id\": moveAddress,\n\t\"coin_type\": moveTypeName,\n\t\"reserve_id\": moveAddress,\n\t\"obligation_id\": moveAddress,\n\t\"ctoken_amount\": moveUint,\n});\nexport type SuilendWithdrawEvent = z.infer<typeof SuilendWithdrawSchema>;\n\n/**\n * Supra — Price update — supra (oracle)\n * A Supra oracle price feed (pair) was updated.\n */\nexport const SupraPriceUpdateSchema = z.looseObject({\n\t\"pair\": moveSmallUint,\n\t\"value\": moveUint,\n\t\"decimal\": moveSmallUint,\n\t\"timestamp\": moveUint,\n\t\"round\": moveUint,\n});\nexport type SupraPriceUpdateEvent = z.infer<typeof SupraPriceUpdateSchema>;\n\n/**\n * Turbos — Add liquidity — turbos (liquidity)\n * Liquidity was minted into a Turbos position.\n */\nexport const TurbosAddLiquiditySchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"owner\": moveAddress,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n\t\"liquidity_delta\": moveUint,\n});\nexport type TurbosAddLiquidityEvent = z.infer<typeof TurbosAddLiquiditySchema>;\n\n/**\n * Turbos — Pool created — turbos (pool)\n * A new Turbos CLMM pool was created.\n */\nexport const TurbosPoolCreatedSchema = z.looseObject({\n\t\"account\": moveAddress,\n\t\"pool\": moveAddress,\n\t\"fee\": moveSmallUint,\n\t\"tick_spacing\": moveSmallUint,\n\t\"sqrt_price\": moveUint,\n});\nexport type TurbosPoolCreatedEvent = z.infer<typeof TurbosPoolCreatedSchema>;\n\n/**\n * Turbos — Remove liquidity — turbos (liquidity)\n * Liquidity was burned from a Turbos position.\n */\nexport const TurbosRemoveLiquiditySchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"owner\": moveAddress,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n\t\"liquidity_delta\": moveUint,\n});\nexport type TurbosRemoveLiquidityEvent = z.infer<typeof TurbosRemoveLiquiditySchema>;\n\n/**\n * Turbos — Swap — turbos (swap)\n * A swap was executed on a Turbos CLMM pool.\n */\nexport const TurbosSwapSchema = z.looseObject({\n\t\"pool\": moveAddress,\n\t\"recipient\": moveAddress,\n\t\"amount_a\": moveUint,\n\t\"amount_b\": moveUint,\n\t\"liquidity\": moveUint,\n\t\"sqrt_price\": moveUint,\n\t\"fee_amount\": moveUint,\n\t\"a_to_b\": moveBool,\n});\nexport type TurbosSwapEvent = z.infer<typeof TurbosSwapSchema>;\n\n/**\n * Typus — DOV auction started — typus (option)\n * A new Typus options-vault (DOV) auction round started.\n */\nexport const TypusDovAuctionSchema = z.looseObject({\n\t\"signer\": moveAddress,\n\t\"index\": moveUint,\n\t\"round\": moveUint,\n\t\"start_ts_ms\": moveUint,\n\t\"end_ts_ms\": moveUint,\n\t\"size\": moveUint,\n});\nexport type TypusDovAuctionEvent = z.infer<typeof TypusDovAuctionSchema>;\n\n/**\n * Typus — DOV bid — typus (option)\n * A bid was placed in a Typus options-vault auction.\n */\nexport const TypusDovBidSchema = z.looseObject({\n\t\"signer\": moveAddress,\n\t\"index\": moveUint,\n\t\"bid_index\": moveUint,\n\t\"price\": moveUint,\n\t\"size\": moveUint,\n\t\"ts_ms\": moveUint,\n});\nexport type TypusDovBidEvent = z.infer<typeof TypusDovBidSchema>;\n\n/**\n * Typus — DOV settled — typus (option)\n * A Typus options-vault round was settled.\n */\nexport const TypusDovSettleSchema = z.looseObject({\n\t\"signer\": moveAddress,\n\t\"index\": moveUint,\n\t\"round\": moveUint,\n\t\"oracle_price\": moveUint,\n\t\"settle_balance\": moveUint,\n\t\"settled_balance\": moveUint,\n});\nexport type TypusDovSettleEvent = z.infer<typeof TypusDovSettleSchema>;\n\n/**\n * Typus — Perp funding update — typus (funding)\n * A Typus perps market funding rate was updated.\n */\nexport const TypusPerpFundingSchema = z.looseObject({\n\t\"base_token\": moveTypeName,\n\t\"new_funding_ts_ms\": moveUint,\n\t\"cumulative_funding_rate_index\": moveUint,\n});\nexport type TypusPerpFundingEvent = z.infer<typeof TypusPerpFundingSchema>;\n\n/**\n * Typus — Perp liquidation — typus (liquidation)\n * A Typus perps position was liquidated.\n */\nexport const TypusPerpLiquidateSchema = z.looseObject({\n\t\"user\": moveAddress,\n\t\"position_id\": moveUint,\n\t\"collateral_price\": moveUint,\n\t\"trading_price\": moveUint,\n\t\"realized_liquidator_fee\": moveUint,\n});\nexport type TypusPerpLiquidateEvent = z.infer<typeof TypusPerpLiquidateSchema>;\n\n/**\n * Typus — TLP burn — typus (liquidity)\n * Liquidity was removed from the Typus perps LP (TLP).\n */\nexport const TypusPerpLpBurnSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"index\": moveUint,\n\t\"burn_lp_amount\": moveUint,\n\t\"withdraw_token_amount\": moveUint,\n});\nexport type TypusPerpLpBurnEvent = z.infer<typeof TypusPerpLpBurnSchema>;\n\n/**\n * Typus — TLP mint — typus (liquidity)\n * Liquidity was added to the Typus perps LP (TLP).\n */\nexport const TypusPerpLpMintSchema = z.looseObject({\n\t\"sender\": moveAddress,\n\t\"index\": moveUint,\n\t\"deposit_amount\": moveUint,\n\t\"minted_lp_amount\": moveUint,\n});\nexport type TypusPerpLpMintEvent = z.infer<typeof TypusPerpLpMintSchema>;\n\n/**\n * Typus — Perp order created — typus (perp)\n * A trading order was created on Typus perps.\n */\nexport const TypusPerpOrderSchema = z.looseObject({\n\t\"user\": moveAddress,\n\t\"market_index\": moveUint,\n\t\"pool_index\": moveUint,\n\t\"order_id\": moveUint,\n\t\"collateral_amount\": moveUint,\n\t\"leverage_mbp\": moveUint,\n\t\"is_long\": moveBool,\n\t\"size\": moveUint,\n\t\"trigger_price\": moveUint,\n});\nexport type TypusPerpOrderEvent = z.infer<typeof TypusPerpOrderSchema>;\n\n/**\n * Volo — Staked — volo (stake)\n * SUI was staked with Volo in exchange for vSUI.\n */\nexport const VoloStakedSchema = z.looseObject({\n\t\"staker\": moveAddress,\n\t\"sui_amount\": moveUint,\n\t\"cert_amount\": moveUint,\n});\nexport type VoloStakedEvent = z.infer<typeof VoloStakedSchema>;\n\n/**\n * Volo — Unstaked — volo (unstake)\n * vSUI was burned to unstake SUI on Volo.\n */\nexport const VoloUnstakedSchema = z.looseObject({\n\t\"staker\": moveAddress,\n\t\"cert_amount\": moveUint,\n\t\"sui_amount\": moveUint,\n});\nexport type VoloUnstakedEvent = z.infer<typeof VoloUnstakedSchema>;\n\n/**\n * Walrus — Blob certified — walrus (storage)\n * A Walrus blob was certified available.\n */\nexport const WalrusBlobCertifiedSchema = z.looseObject({\n\t\"epoch\": moveSmallUint,\n\t\"blob_id\": moveUint,\n\t\"end_epoch\": moveSmallUint,\n\t\"deletable\": moveBool,\n\t\"object_id\": moveAddress,\n});\nexport type WalrusBlobCertifiedEvent = z.infer<typeof WalrusBlobCertifiedSchema>;\n\n/**\n * Walrus — Blob deleted — walrus (storage)\n * A Walrus blob was deleted.\n */\nexport const WalrusBlobDeletedSchema = z.looseObject({\n\t\"epoch\": moveSmallUint,\n\t\"blob_id\": moveUint,\n\t\"end_epoch\": moveSmallUint,\n\t\"object_id\": moveAddress,\n\t\"was_certified\": moveBool,\n});\nexport type WalrusBlobDeletedEvent = z.infer<typeof WalrusBlobDeletedSchema>;\n\n/**\n * Walrus — Blob registered — walrus (storage)\n * A new blob was registered for storage on Walrus.\n */\nexport const WalrusBlobRegisteredSchema = z.looseObject({\n\t\"epoch\": moveSmallUint,\n\t\"blob_id\": moveUint,\n\t\"size\": moveUint,\n\t\"end_epoch\": moveSmallUint,\n\t\"deletable\": moveBool,\n\t\"object_id\": moveAddress,\n});\nexport type WalrusBlobRegisteredEvent = z.infer<typeof WalrusBlobRegisteredSchema>;\n\n/** Every catalog event: metadata, verified deployments, and payload schema. */\nexport const catalogEvents = {\n\t\"7k.confirm-swap\": {\n\t\tid: \"7k.confirm-swap\",\n\t\tprotocolId: \"7k\",\n\t\tlabel: \"7K — Swap confirmed\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A completed 7K aggregator trade (per-trade settlement summary).\",\n\t\tgeneric: false,\n\t\tschema: _7kConfirmSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x33ec64e9bb369bf045ddc198c81adbf2acab424da37465d95296ee02045d2b17::router::ConfirmSwapEvent\", primary: true },\n\t\t],\n\t},\n\t\"7k.swap\": {\n\t\tid: \"7k.swap\",\n\t\tprotocolId: \"7k\",\n\t\tlabel: \"7K — Swap (route leg)\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A single routing-leg swap on the 7K aggregator (per pool/DEX).\",\n\t\tgeneric: false,\n\t\tschema: _7kSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x33ec64e9bb369bf045ddc198c81adbf2acab424da37465d95296ee02045d2b17::router::SwapEvent\", primary: true },\n\t\t],\n\t},\n\t\"aftermath.deposit\": {\n\t\tid: \"aftermath.deposit\",\n\t\tprotocolId: \"aftermath\",\n\t\tlabel: \"Aftermath — Add liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was deposited into an Aftermath AMM pool.\",\n\t\tgeneric: false,\n\t\tschema: AftermathDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xc4049b2d1cc0f6e017fda8260e4377cecd236bd7f56a54fee120816e72e2e0dd::events::DepositEventV2\", primary: true },\n\t\t],\n\t},\n\t\"aftermath.perp-funding\": {\n\t\tid: \"aftermath.perp-funding\",\n\t\tprotocolId: \"aftermath\",\n\t\tlabel: \"Aftermath — Funding settled (Perps)\",\n\t\tcategory: \"funding\",\n\t\tdescription: \"Funding was settled for an Aftermath perpetuals account.\",\n\t\tgeneric: false,\n\t\tschema: AftermathPerpFundingSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x21d001e8b07da2e3facb3e2d636bbaef43ba3c978bd84810368840b7d57c5068::events::SettledFunding\", primary: true },\n\t\t],\n\t},\n\t\"aftermath.perp-liquidated\": {\n\t\tid: \"aftermath.perp-liquidated\",\n\t\tprotocolId: \"aftermath\",\n\t\tlabel: \"Aftermath — Position liquidated (Perps)\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"A perpetuals position was liquidated on Aftermath.\",\n\t\tgeneric: false,\n\t\tschema: AftermathPerpLiquidatedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x21d001e8b07da2e3facb3e2d636bbaef43ba3c978bd84810368840b7d57c5068::events::LiquidatedPosition\", primary: true },\n\t\t],\n\t},\n\t\"aftermath.swap\": {\n\t\tid: \"aftermath.swap\",\n\t\tprotocolId: \"aftermath\",\n\t\tlabel: \"Aftermath — Swap\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A swap was executed on an Aftermath AMM pool.\",\n\t\tgeneric: false,\n\t\tschema: AftermathSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xc4049b2d1cc0f6e017fda8260e4377cecd236bd7f56a54fee120816e72e2e0dd::events::SwapEventV2\", primary: true },\n\t\t],\n\t},\n\t\"alphafi.liquidity-change\": {\n\t\tid: \"alphafi.liquidity-change\",\n\t\tprotocolId: \"alphafi\",\n\t\tlabel: \"AlphaFi — Vault deposit/withdraw\",\n\t\tcategory: \"vault\",\n\t\tdescription: \"A deposit or withdrawal on an AlphaFi vault (event_type: 1 = deposit, 0 = withdraw).\",\n\t\tgeneric: false,\n\t\tschema: AlphafiLiquidityChangeSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x754afbce8c72c8e491e3b9d536aa9d9766fdbc68650224ce01072189b235eee3::alphafi_bluefin_type_1_pool::LiquidityChangeEvent\", primary: true },\n\t\t],\n\t},\n\t\"alphafi.reward\": {\n\t\tid: \"alphafi.reward\",\n\t\tprotocolId: \"alphafi\",\n\t\tlabel: \"AlphaFi — Reward harvest\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"An AlphaFi vault auto-compounded its rewards.\",\n\t\tgeneric: false,\n\t\tschema: AlphafiRewardSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x830ce657bd8547460bdb1a5e5a7607d4641a73593a23165c8630c0d310a3f306::alphafi_bluefin_type_1_pool::RewardEvent\", primary: true },\n\t\t],\n\t},\n\t\"bluefin.fee-collected\": {\n\t\tid: \"bluefin.fee-collected\",\n\t\tprotocolId: \"bluefin\",\n\t\tlabel: \"Bluefin — Fee collected\",\n\t\tcategory: \"fee\",\n\t\tdescription: \"Trading fees were collected from a Bluefin position.\",\n\t\tgeneric: false,\n\t\tschema: BluefinFeeCollectedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::events::UserFeeCollected\", primary: true },\n\t\t],\n\t},\n\t\"bluefin.liquidity-provided\": {\n\t\tid: \"bluefin.liquidity-provided\",\n\t\tprotocolId: \"bluefin\",\n\t\tlabel: \"Bluefin — Liquidity provided\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was provided to a Bluefin position.\",\n\t\tgeneric: false,\n\t\tschema: BluefinLiquidityProvidedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::events::LiquidityProvided\", primary: true },\n\t\t],\n\t},\n\t\"bluefin.liquidity-removed\": {\n\t\tid: \"bluefin.liquidity-removed\",\n\t\tprotocolId: \"bluefin\",\n\t\tlabel: \"Bluefin — Liquidity removed\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was removed from a Bluefin position.\",\n\t\tgeneric: false,\n\t\tschema: BluefinLiquidityRemovedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::events::LiquidityRemoved\", primary: true },\n\t\t],\n\t},\n\t\"bluefin.pool-created\": {\n\t\tid: \"bluefin.pool-created\",\n\t\tprotocolId: \"bluefin\",\n\t\tlabel: \"Bluefin — Pool created\",\n\t\tcategory: \"pool\",\n\t\tdescription: \"A new Bluefin spot pool was created.\",\n\t\tgeneric: false,\n\t\tschema: BluefinPoolCreatedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::events::PoolCreated\", primary: true },\n\t\t],\n\t},\n\t\"bluefin.position-closed\": {\n\t\tid: \"bluefin.position-closed\",\n\t\tprotocolId: \"bluefin\",\n\t\tlabel: \"Bluefin — Position closed\",\n\t\tcategory: \"position\",\n\t\tdescription: \"A Bluefin liquidity position was closed.\",\n\t\tgeneric: false,\n\t\tschema: BluefinPositionClosedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::events::PositionClosed\", primary: true },\n\t\t],\n\t},\n\t\"bluefin.position-opened\": {\n\t\tid: \"bluefin.position-opened\",\n\t\tprotocolId: \"bluefin\",\n\t\tlabel: \"Bluefin — Position opened\",\n\t\tcategory: \"position\",\n\t\tdescription: \"A new Bluefin liquidity position was opened.\",\n\t\tgeneric: false,\n\t\tschema: BluefinPositionOpenedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::events::PositionOpened\", primary: true },\n\t\t],\n\t},\n\t\"bluefin.reward-collected\": {\n\t\tid: \"bluefin.reward-collected\",\n\t\tprotocolId: \"bluefin\",\n\t\tlabel: \"Bluefin — Reward collected\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"Incentive rewards were collected from a Bluefin position.\",\n\t\tgeneric: false,\n\t\tschema: BluefinRewardCollectedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::events::UserRewardCollected\", primary: true },\n\t\t],\n\t},\n\t\"bluefin.swap\": {\n\t\tid: \"bluefin.swap\",\n\t\tprotocolId: \"bluefin\",\n\t\tlabel: \"Bluefin — Swap\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"An asset swap was executed on a Bluefin spot pool.\",\n\t\tgeneric: false,\n\t\tschema: BluefinSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::events::AssetSwap\", primary: true },\n\t\t],\n\t},\n\t\"bucket.borrow\": {\n\t\tid: \"bucket.borrow\",\n\t\tprotocolId: \"bucket\",\n\t\tlabel: \"Bucket — Borrow (mint BUCK)\",\n\t\tcategory: \"borrow\",\n\t\tdescription: \"BUCK was minted against collateral in a Bucket CDP.\",\n\t\tgeneric: false,\n\t\tschema: BucketBorrowSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck_events::BuckMinted\", primary: true },\n\t\t],\n\t},\n\t\"bucket.deposit-collateral\": {\n\t\tid: \"bucket.deposit-collateral\",\n\t\tprotocolId: \"bucket\",\n\t\tlabel: \"Bucket — Deposit collateral\",\n\t\tcategory: \"supply\",\n\t\tdescription: \"Collateral was added to a Bucket CDP.\",\n\t\tgeneric: false,\n\t\tschema: BucketDepositCollateralSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck_events::CollateralIncreased\", primary: true },\n\t\t],\n\t},\n\t\"bucket.position-updated\": {\n\t\tid: \"bucket.position-updated\",\n\t\tprotocolId: \"bucket\",\n\t\tlabel: \"Bucket — Position updated\",\n\t\tcategory: \"position\",\n\t\tdescription: \"A Bucket CDP position (bottle) changed state.\",\n\t\tgeneric: false,\n\t\tschema: BucketPositionUpdatedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::bucket_events::BottleUpdated\", primary: true },\n\t\t],\n\t},\n\t\"bucket.redeem\": {\n\t\tid: \"bucket.redeem\",\n\t\tprotocolId: \"bucket\",\n\t\tlabel: \"Bucket — Redeem\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"BUCK was redeemed for collateral on a Bucket CDP.\",\n\t\tgeneric: false,\n\t\tschema: BucketRedeemSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::bucket_events::Redeem\", primary: true },\n\t\t],\n\t},\n\t\"bucket.repay\": {\n\t\tid: \"bucket.repay\",\n\t\tprotocolId: \"bucket\",\n\t\tlabel: \"Bucket — Repay (burn BUCK)\",\n\t\tcategory: \"repay\",\n\t\tdescription: \"BUCK was burned to repay debt in a Bucket CDP.\",\n\t\tgeneric: false,\n\t\tschema: BucketRepaySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck_events::BuckBurnt\", primary: true },\n\t\t],\n\t},\n\t\"bucket.sbuck-deposit\": {\n\t\tid: \"bucket.sbuck-deposit\",\n\t\tprotocolId: \"bucket\",\n\t\tlabel: \"Bucket — sBUCK deposit\",\n\t\tcategory: \"supply\",\n\t\tdescription: \"BUCK was deposited into the sBUCK savings vault.\",\n\t\tgeneric: false,\n\t\tschema: BucketSbuckDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1798f84ee72176114ddbf5525a6d964c5f8ea1b3738d08d50d0d3de4cf584884::event::Deposit\", primary: true },\n\t\t],\n\t},\n\t\"bucket.sbuck-rewards\": {\n\t\tid: \"bucket.sbuck-rewards\",\n\t\tprotocolId: \"bucket\",\n\t\tlabel: \"Bucket — sBUCK rewards collected\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"Rewards were collected from the sBUCK savings vault.\",\n\t\tgeneric: false,\n\t\tschema: BucketSbuckRewardsSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1798f84ee72176114ddbf5525a6d964c5f8ea1b3738d08d50d0d3de4cf584884::event::CollectRewards\", primary: true },\n\t\t],\n\t},\n\t\"bucket.withdraw-collateral\": {\n\t\tid: \"bucket.withdraw-collateral\",\n\t\tprotocolId: \"bucket\",\n\t\tlabel: \"Bucket — Withdraw collateral\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"Collateral was removed from a Bucket CDP.\",\n\t\tgeneric: false,\n\t\tschema: BucketWithdrawCollateralSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck_events::CollateralDecreased\", primary: true },\n\t\t],\n\t},\n\t\"cetus.add-liquidity\": {\n\t\tid: \"cetus.add-liquidity\",\n\t\tprotocolId: \"cetus\",\n\t\tlabel: \"Cetus — Add liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was added to a Cetus position.\",\n\t\tgeneric: false,\n\t\tschema: CetusAddLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::pool::AddLiquidityEvent\", primary: true },\n\t\t],\n\t},\n\t\"cetus.close-position\": {\n\t\tid: \"cetus.close-position\",\n\t\tprotocolId: \"cetus\",\n\t\tlabel: \"Cetus — Close position\",\n\t\tcategory: \"position\",\n\t\tdescription: \"A Cetus liquidity position was closed.\",\n\t\tgeneric: false,\n\t\tschema: CetusClosePositionSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::pool::ClosePositionEvent\", primary: true },\n\t\t],\n\t},\n\t\"cetus.collect-fee\": {\n\t\tid: \"cetus.collect-fee\",\n\t\tprotocolId: \"cetus\",\n\t\tlabel: \"Cetus — Collect fee\",\n\t\tcategory: \"fee\",\n\t\tdescription: \"Accrued swap fees were collected from a Cetus position.\",\n\t\tgeneric: false,\n\t\tschema: CetusCollectFeeSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::pool::CollectFeeEvent\", primary: true },\n\t\t],\n\t},\n\t\"cetus.create-pool\": {\n\t\tid: \"cetus.create-pool\",\n\t\tprotocolId: \"cetus\",\n\t\tlabel: \"Cetus — Create pool\",\n\t\tcategory: \"pool\",\n\t\tdescription: \"A new Cetus CLMM pool was created via the factory.\",\n\t\tgeneric: false,\n\t\tschema: CetusCreatePoolSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::factory::CreatePoolEvent\", primary: true },\n\t\t],\n\t},\n\t\"cetus.open-position\": {\n\t\tid: \"cetus.open-position\",\n\t\tprotocolId: \"cetus\",\n\t\tlabel: \"Cetus — Open position\",\n\t\tcategory: \"position\",\n\t\tdescription: \"A new Cetus liquidity position was opened.\",\n\t\tgeneric: false,\n\t\tschema: CetusOpenPositionSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::pool::OpenPositionEvent\", primary: true },\n\t\t],\n\t},\n\t\"cetus.remove-liquidity\": {\n\t\tid: \"cetus.remove-liquidity\",\n\t\tprotocolId: \"cetus\",\n\t\tlabel: \"Cetus — Remove liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was removed from a Cetus position.\",\n\t\tgeneric: false,\n\t\tschema: CetusRemoveLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::pool::RemoveLiquidityEvent\", primary: true },\n\t\t],\n\t},\n\t\"cetus.swap\": {\n\t\tid: \"cetus.swap\",\n\t\tprotocolId: \"cetus\",\n\t\tlabel: \"Cetus — Swap\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A token swap was executed on a Cetus CLMM pool.\",\n\t\tgeneric: false,\n\t\tschema: CetusSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::pool::SwapEvent\", primary: true },\n\t\t],\n\t},\n\t\"current.borrow\": {\n\t\tid: \"current.borrow\",\n\t\tprotocolId: \"current\",\n\t\tlabel: \"Current — Borrow\",\n\t\tcategory: \"borrow\",\n\t\tdescription: \"Assets were borrowed from a Current lending market.\",\n\t\tgeneric: false,\n\t\tschema: CurrentBorrowSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xfe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::borrow::BorrowEvent\", primary: true },\n\t\t],\n\t},\n\t\"current.deposit\": {\n\t\tid: \"current.deposit\",\n\t\tprotocolId: \"current\",\n\t\tlabel: \"Current — Deposit\",\n\t\tcategory: \"supply\",\n\t\tdescription: \"Assets were deposited (supplied) to a Current lending market.\",\n\t\tgeneric: false,\n\t\tschema: CurrentDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xfe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::deposit::DepositEvent\", primary: true },\n\t\t],\n\t},\n\t\"current.liquidate\": {\n\t\tid: \"current.liquidate\",\n\t\tprotocolId: \"current\",\n\t\tlabel: \"Current — Liquidation\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"A Current obligation was liquidated.\",\n\t\tgeneric: false,\n\t\tschema: CurrentLiquidateSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xfe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::liquidate::LiquidateEvent\", primary: true },\n\t\t],\n\t},\n\t\"current.repay\": {\n\t\tid: \"current.repay\",\n\t\tprotocolId: \"current\",\n\t\tlabel: \"Current — Repay\",\n\t\tcategory: \"repay\",\n\t\tdescription: \"A Current loan was repaid.\",\n\t\tgeneric: false,\n\t\tschema: CurrentRepaySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xfe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::repay::RepayEvent\", primary: true },\n\t\t],\n\t},\n\t\"current.withdraw\": {\n\t\tid: \"current.withdraw\",\n\t\tprotocolId: \"current\",\n\t\tlabel: \"Current — Withdraw\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"Assets were withdrawn from a Current lending market.\",\n\t\tgeneric: false,\n\t\tschema: CurrentWithdrawSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xfe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::withdraw::WithdrawEvent\", primary: true },\n\t\t],\n\t},\n\t\"deepbook.balance\": {\n\t\tid: \"deepbook.balance\",\n\t\tprotocolId: \"deepbook\",\n\t\tlabel: \"DeepBook — Balance change\",\n\t\tcategory: \"fee\",\n\t\tdescription: \"A deposit or withdrawal on a DeepBook balance manager.\",\n\t\tgeneric: false,\n\t\tschema: DeepbookBalanceSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balance_manager::BalanceEvent\", primary: true },\n\t\t],\n\t},\n\t\"deepbook.flash-loan\": {\n\t\tid: \"deepbook.flash-loan\",\n\t\tprotocolId: \"deepbook\",\n\t\tlabel: \"DeepBook — Flash loan borrowed\",\n\t\tcategory: \"fee\",\n\t\tdescription: \"A flash loan was borrowed from a DeepBook pool.\",\n\t\tgeneric: false,\n\t\tschema: DeepbookFlashLoanSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::vault::FlashLoanBorrowed\", primary: true },\n\t\t],\n\t},\n\t\"deepbook.order-canceled\": {\n\t\tid: \"deepbook.order-canceled\",\n\t\tprotocolId: \"deepbook\",\n\t\tlabel: \"DeepBook — Order canceled\",\n\t\tcategory: \"order\",\n\t\tdescription: \"A DeepBook maker order was canceled.\",\n\t\tgeneric: false,\n\t\tschema: DeepbookOrderCanceledSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order::OrderCanceled\", primary: true },\n\t\t],\n\t},\n\t\"deepbook.order-filled\": {\n\t\tid: \"deepbook.order-filled\",\n\t\tprotocolId: \"deepbook\",\n\t\tlabel: \"DeepBook — Order filled\",\n\t\tcategory: \"order\",\n\t\tdescription: \"A DeepBook order was filled (partially or fully).\",\n\t\tgeneric: false,\n\t\tschema: DeepbookOrderFilledSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order_info::OrderFilled\", primary: true },\n\t\t],\n\t},\n\t\"deepbook.order-info\": {\n\t\tid: \"deepbook.order-info\",\n\t\tprotocolId: \"deepbook\",\n\t\tlabel: \"DeepBook — Order update\",\n\t\tcategory: \"order\",\n\t\tdescription: \"An order's lifecycle update on a DeepBook pool (placed/filled/status).\",\n\t\tgeneric: false,\n\t\tschema: DeepbookOrderInfoSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order_info::OrderInfo\", primary: true },\n\t\t],\n\t},\n\t\"deepbook.order-placed\": {\n\t\tid: \"deepbook.order-placed\",\n\t\tprotocolId: \"deepbook\",\n\t\tlabel: \"DeepBook — Order placed\",\n\t\tcategory: \"order\",\n\t\tdescription: \"A maker limit order was placed on a DeepBook pool.\",\n\t\tgeneric: false,\n\t\tschema: DeepbookOrderPlacedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order_info::OrderPlaced\", primary: true },\n\t\t],\n\t},\n\t\"ember.deposit\": {\n\t\tid: \"ember.deposit\",\n\t\tprotocolId: \"ember\",\n\t\tlabel: \"Ember — Vault deposit\",\n\t\tcategory: \"vault\",\n\t\tdescription: \"A deposit into an Ember vault (matches all deposit coin types).\",\n\t\tgeneric: true,\n\t\tschema: EmberDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xc83d5406fd355f34d3ce87b35ab2c0b099af9d309ba96c17e40309502a49976f::events::VaultDepositEvent\", primary: true },\n\t\t],\n\t},\n\t\"ember.rate-updated\": {\n\t\tid: \"ember.rate-updated\",\n\t\tprotocolId: \"ember\",\n\t\tlabel: \"Ember — Vault rate updated\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"An Ember vault's share rate (price) was updated.\",\n\t\tgeneric: false,\n\t\tschema: EmberRateUpdatedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xc83d5406fd355f34d3ce87b35ab2c0b099af9d309ba96c17e40309502a49976f::events::VaultRateUpdatedEvent\", primary: true },\n\t\t],\n\t},\n\t\"ember.redeem-processed\": {\n\t\tid: \"ember.redeem-processed\",\n\t\tprotocolId: \"ember\",\n\t\tlabel: \"Ember — Redeem processed\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"A queued Ember redeem request was processed.\",\n\t\tgeneric: true,\n\t\tschema: EmberRedeemProcessedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xc83d5406fd355f34d3ce87b35ab2c0b099af9d309ba96c17e40309502a49976f::events::RequestProcessedEvent\", primary: true },\n\t\t],\n\t},\n\t\"ember.redeem-request\": {\n\t\tid: \"ember.redeem-request\",\n\t\tprotocolId: \"ember\",\n\t\tlabel: \"Ember — Redeem requested\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"A redeem (withdrawal) was requested from an Ember vault.\",\n\t\tgeneric: true,\n\t\tschema: EmberRedeemRequestSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xc83d5406fd355f34d3ce87b35ab2c0b099af9d309ba96c17e40309502a49976f::events::RequestRedeemedEvent\", primary: true },\n\t\t],\n\t},\n\t\"flowx.amm-pair-created\": {\n\t\tid: \"flowx.amm-pair-created\",\n\t\tprotocolId: \"flowx\",\n\t\tlabel: \"FlowX — Pair created (AMM)\",\n\t\tcategory: \"pool\",\n\t\tdescription: \"A new FlowX AMM trading pair was created.\",\n\t\tgeneric: false,\n\t\tschema: FlowxAmmPairCreatedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xba153169476e8c3114962261d1edc70de5ad9781b83cc617ecc8c1923191cae0::factory::PairCreated\", primary: true },\n\t\t],\n\t},\n\t\"flowx.amm-swap\": {\n\t\tid: \"flowx.amm-swap\",\n\t\tprotocolId: \"flowx\",\n\t\tlabel: \"FlowX — Swap (AMM)\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A swap was executed on a FlowX AMM pair.\",\n\t\tgeneric: false,\n\t\tschema: FlowxAmmSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xba153169476e8c3114962261d1edc70de5ad9781b83cc617ecc8c1923191cae0::pair::Swapped\", primary: true },\n\t\t],\n\t},\n\t\"flowx.clmm-pool-created\": {\n\t\tid: \"flowx.clmm-pool-created\",\n\t\tprotocolId: \"flowx\",\n\t\tlabel: \"FlowX — Pool created (CLMM)\",\n\t\tcategory: \"pool\",\n\t\tdescription: \"A new FlowX CLMM pool was created.\",\n\t\tgeneric: false,\n\t\tschema: FlowxClmmPoolCreatedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x25929e7f29e0a30eb4e692952ba1b5b65a3a4d65ab5f2a32e1ba3edcb587f26d::pool_manager::PoolCreated\", primary: true },\n\t\t],\n\t},\n\t\"flowx.clmm-swap\": {\n\t\tid: \"flowx.clmm-swap\",\n\t\tprotocolId: \"flowx\",\n\t\tlabel: \"FlowX — Swap (CLMM)\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A swap was executed on a FlowX CLMM pool.\",\n\t\tgeneric: false,\n\t\tschema: FlowxClmmSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x25929e7f29e0a30eb4e692952ba1b5b65a3a4d65ab5f2a32e1ba3edcb587f26d::pool::Swap\", primary: true },\n\t\t],\n\t},\n\t\"haedal.instant-unstaked\": {\n\t\tid: \"haedal.instant-unstaked\",\n\t\tprotocolId: \"haedal\",\n\t\tlabel: \"Haedal — Instant unstaked\",\n\t\tcategory: \"unstake\",\n\t\tdescription: \"An instant unstake was performed on Haedal.\",\n\t\tgeneric: false,\n\t\tschema: HaedalInstantUnstakedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::staking::UserInstantUnstaked\", primary: true },\n\t\t],\n\t},\n\t\"haedal.staked\": {\n\t\tid: \"haedal.staked\",\n\t\tprotocolId: \"haedal\",\n\t\tlabel: \"Haedal — Staked\",\n\t\tcategory: \"stake\",\n\t\tdescription: \"SUI was staked with Haedal in exchange for haSUI.\",\n\t\tgeneric: false,\n\t\tschema: HaedalStakedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::staking::UserStaked\", primary: true },\n\t\t],\n\t},\n\t\"haedal.unstaked\": {\n\t\tid: \"haedal.unstaked\",\n\t\tprotocolId: \"haedal\",\n\t\tlabel: \"Haedal — Unstaked\",\n\t\tcategory: \"unstake\",\n\t\tdescription: \"A delayed unstake was initiated on Haedal.\",\n\t\tgeneric: false,\n\t\tschema: HaedalUnstakedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::staking::UserNormalUnstaked\", primary: true },\n\t\t],\n\t},\n\t\"kai.add-liquidity\": {\n\t\tid: \"kai.add-liquidity\",\n\t\tprotocolId: \"kai\",\n\t\tlabel: \"Kai — Increase position\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was added to a Kai leveraged position.\",\n\t\tgeneric: false,\n\t\tschema: KaiAddLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x51e0ccce48f0763f98f1cb4856847c2e1531adacada99cdd7626ab999db57523::position_core_clmm::AddLiquidityInfo\", primary: true },\n\t\t],\n\t},\n\t\"kai.deleverage\": {\n\t\tid: \"kai.deleverage\",\n\t\tprotocolId: \"kai\",\n\t\tlabel: \"Kai — Deleverage\",\n\t\tcategory: \"repay\",\n\t\tdescription: \"A Kai leveraged position was deleveraged (debt repaid).\",\n\t\tgeneric: false,\n\t\tschema: KaiDeleverageSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x51e0ccce48f0763f98f1cb4856847c2e1531adacada99cdd7626ab999db57523::position_core_clmm::DeleverageInfo\", primary: true },\n\t\t],\n\t},\n\t\"kai.liquidation\": {\n\t\tid: \"kai.liquidation\",\n\t\tprotocolId: \"kai\",\n\t\tlabel: \"Kai — Liquidation\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"A Kai leveraged position was liquidated.\",\n\t\tgeneric: false,\n\t\tschema: KaiLiquidationSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x51e0ccce48f0763f98f1cb4856847c2e1531adacada99cdd7626ab999db57523::position_core_clmm::LiquidationInfo\", primary: true },\n\t\t],\n\t},\n\t\"kai.position-open\": {\n\t\tid: \"kai.position-open\",\n\t\tprotocolId: \"kai\",\n\t\tlabel: \"Kai — Open leveraged position\",\n\t\tcategory: \"borrow\",\n\t\tdescription: \"A new Kai leveraged CLMM position was opened.\",\n\t\tgeneric: false,\n\t\tschema: KaiPositionOpenSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x51e0ccce48f0763f98f1cb4856847c2e1531adacada99cdd7626ab999db57523::position_core_clmm::PositionCreationInfo\", primary: true },\n\t\t],\n\t},\n\t\"kai.reduce\": {\n\t\tid: \"kai.reduce\",\n\t\tprotocolId: \"kai\",\n\t\tlabel: \"Kai — Reduce position\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"A Kai leveraged position was reduced / partially withdrawn.\",\n\t\tgeneric: false,\n\t\tschema: KaiReduceSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x51e0ccce48f0763f98f1cb4856847c2e1531adacada99cdd7626ab999db57523::position_core_clmm::ReductionInfo\", primary: true },\n\t\t],\n\t},\n\t\"kai.supply\": {\n\t\tid: \"kai.supply\",\n\t\tprotocolId: \"kai\",\n\t\tlabel: \"Kai — Supply to pool\",\n\t\tcategory: \"lend\",\n\t\tdescription: \"Liquidity was supplied to a Kai lending pool.\",\n\t\tgeneric: false,\n\t\tschema: KaiSupplySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x51e0ccce48f0763f98f1cb4856847c2e1531adacada99cdd7626ab999db57523::supply_pool::SupplyInfo\", primary: true },\n\t\t],\n\t},\n\t\"kai.supply-withdraw\": {\n\t\tid: \"kai.supply-withdraw\",\n\t\tprotocolId: \"kai\",\n\t\tlabel: \"Kai — Withdraw from pool\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"Supplied liquidity was withdrawn from a Kai lending pool.\",\n\t\tgeneric: false,\n\t\tschema: KaiSupplyWithdrawSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x51e0ccce48f0763f98f1cb4856847c2e1531adacada99cdd7626ab999db57523::supply_pool::WithdrawInfo\", primary: true },\n\t\t],\n\t},\n\t\"kriya.add-liquidity\": {\n\t\tid: \"kriya.add-liquidity\",\n\t\tprotocolId: \"kriya\",\n\t\tlabel: \"Kriya — Add liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was provided to a Kriya pool.\",\n\t\tgeneric: false,\n\t\tschema: KriyaAddLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xa0eba10b173538c8fecca1dff298e488402cc9ff374f8a12ca7758eebe830b66::spot_dex::LiquidityAddedEvent\", primary: true },\n\t\t],\n\t},\n\t\"kriya.swap\": {\n\t\tid: \"kriya.swap\",\n\t\tprotocolId: \"kriya\",\n\t\tlabel: \"Kriya — Swap\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A token swap was executed on a Kriya spot pool (matches all token types).\",\n\t\tgeneric: true,\n\t\tschema: KriyaSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xa0eba10b173538c8fecca1dff298e488402cc9ff374f8a12ca7758eebe830b66::spot_dex::SwapEvent\", primary: true },\n\t\t],\n\t},\n\t\"magma.add-liquidity\": {\n\t\tid: \"magma.add-liquidity\",\n\t\tprotocolId: \"magma\",\n\t\tlabel: \"Magma — Add liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was added to a Magma CLMM pool.\",\n\t\tgeneric: false,\n\t\tschema: MagmaAddLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4a35d3dfef55ed3631b7158544c6322a23bc434fe4fca1234cb680ce0505f82d::pool::AddLiquidityEvent\", primary: true },\n\t\t],\n\t},\n\t\"magma.collect-fee\": {\n\t\tid: \"magma.collect-fee\",\n\t\tprotocolId: \"magma\",\n\t\tlabel: \"Magma — Collect fee\",\n\t\tcategory: \"fee\",\n\t\tdescription: \"Trading fees were collected from a Magma position.\",\n\t\tgeneric: false,\n\t\tschema: MagmaCollectFeeSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4a35d3dfef55ed3631b7158544c6322a23bc434fe4fca1234cb680ce0505f82d::pool::CollectFeeEvent\", primary: true },\n\t\t],\n\t},\n\t\"magma.collect-reward\": {\n\t\tid: \"magma.collect-reward\",\n\t\tprotocolId: \"magma\",\n\t\tlabel: \"Magma — Collect reward\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"Incentive rewards were collected from a Magma position.\",\n\t\tgeneric: false,\n\t\tschema: MagmaCollectRewardSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4a35d3dfef55ed3631b7158544c6322a23bc434fe4fca1234cb680ce0505f82d::pool::CollectRewardEvent\", primary: true },\n\t\t],\n\t},\n\t\"magma.create-pool\": {\n\t\tid: \"magma.create-pool\",\n\t\tprotocolId: \"magma\",\n\t\tlabel: \"Magma — Create pool\",\n\t\tcategory: \"pool\",\n\t\tdescription: \"A new Magma CLMM pool was created.\",\n\t\tgeneric: false,\n\t\tschema: MagmaCreatePoolSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4a35d3dfef55ed3631b7158544c6322a23bc434fe4fca1234cb680ce0505f82d::factory::CreatePoolEvent\", primary: true },\n\t\t],\n\t},\n\t\"magma.remove-liquidity\": {\n\t\tid: \"magma.remove-liquidity\",\n\t\tprotocolId: \"magma\",\n\t\tlabel: \"Magma — Remove liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was removed from a Magma CLMM pool.\",\n\t\tgeneric: false,\n\t\tschema: MagmaRemoveLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4a35d3dfef55ed3631b7158544c6322a23bc434fe4fca1234cb680ce0505f82d::pool::RemoveLiquidityEvent\", primary: true },\n\t\t],\n\t},\n\t\"magma.swap\": {\n\t\tid: \"magma.swap\",\n\t\tprotocolId: \"magma\",\n\t\tlabel: \"Magma — Swap\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A token swap was executed on a Magma CLMM pool.\",\n\t\tgeneric: false,\n\t\tschema: MagmaSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4a35d3dfef55ed3631b7158544c6322a23bc434fe4fca1234cb680ce0505f82d::pool::SwapEvent\", primary: true },\n\t\t],\n\t},\n\t\"mole.add-debt\": {\n\t\tid: \"mole.add-debt\",\n\t\tprotocolId: \"mole\",\n\t\tlabel: \"Mole — Add debt (leverage)\",\n\t\tcategory: \"borrow\",\n\t\tdescription: \"Debt was added to a Mole leveraged-farm position.\",\n\t\tgeneric: true,\n\t\tschema: MoleAddDebtSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x5ffa69ee4ee14d899dcc750df92de12bad4bacf81efa1ae12ee76406804dda7f::vault::AddDebtEvent\", primary: true },\n\t\t],\n\t},\n\t\"mole.deposit\": {\n\t\tid: \"mole.deposit\",\n\t\tprotocolId: \"mole\",\n\t\tlabel: \"Mole — Vault deposit\",\n\t\tcategory: \"vault\",\n\t\tdescription: \"A deposit into a Mole savings vault (matches all coin types).\",\n\t\tgeneric: true,\n\t\tschema: MoleDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x5ffa69ee4ee14d899dcc750df92de12bad4bacf81efa1ae12ee76406804dda7f::vault::DepositEvent\", primary: true },\n\t\t],\n\t},\n\t\"mole.harvest\": {\n\t\tid: \"mole.harvest\",\n\t\tprotocolId: \"mole\",\n\t\tlabel: \"Mole — Harvest rewards\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"Rewards were harvested from a Mole vault/farm.\",\n\t\tgeneric: true,\n\t\tschema: MoleHarvestSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xc4dc6948a7d0a58f32fadd44e45efb201f44383bfab1cb6c48b9c186a92cc762::sui_incentive::HarvestEvent\", primary: true },\n\t\t],\n\t},\n\t\"mole.kill\": {\n\t\tid: \"mole.kill\",\n\t\tprotocolId: \"mole\",\n\t\tlabel: \"Mole — Position liquidation (kill)\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"A Mole leveraged-farm position was liquidated.\",\n\t\tgeneric: true,\n\t\tschema: MoleKillSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x5ffa69ee4ee14d899dcc750df92de12bad4bacf81efa1ae12ee76406804dda7f::vault::KillEvent\", primary: true },\n\t\t],\n\t},\n\t\"mole.withdraw\": {\n\t\tid: \"mole.withdraw\",\n\t\tprotocolId: \"mole\",\n\t\tlabel: \"Mole — Vault withdraw\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"A withdrawal from a Mole savings vault (matches all coin types).\",\n\t\tgeneric: true,\n\t\tschema: MoleWithdrawSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x5ffa69ee4ee14d899dcc750df92de12bad4bacf81efa1ae12ee76406804dda7f::vault::WithdrawEvent\", primary: true },\n\t\t],\n\t},\n\t\"mole.work\": {\n\t\tid: \"mole.work\",\n\t\tprotocolId: \"mole\",\n\t\tlabel: \"Mole — Open/adjust farm position\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"A Mole leveraged-farm position was opened or adjusted.\",\n\t\tgeneric: true,\n\t\tschema: MoleWorkSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x5ffa69ee4ee14d899dcc750df92de12bad4bacf81efa1ae12ee76406804dda7f::vault::WorkEvent\", primary: true },\n\t\t],\n\t},\n\t\"momentum.add-liquidity\": {\n\t\tid: \"momentum.add-liquidity\",\n\t\tprotocolId: \"momentum\",\n\t\tlabel: \"Momentum — Add liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was added to a Momentum position.\",\n\t\tgeneric: false,\n\t\tschema: MomentumAddLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::liquidity::AddLiquidityEvent\", primary: true },\n\t\t],\n\t},\n\t\"momentum.collect-fee\": {\n\t\tid: \"momentum.collect-fee\",\n\t\tprotocolId: \"momentum\",\n\t\tlabel: \"Momentum — Collect fee\",\n\t\tcategory: \"fee\",\n\t\tdescription: \"Trading fees were collected from a Momentum position.\",\n\t\tgeneric: false,\n\t\tschema: MomentumCollectFeeSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::collect::FeeCollectedEvent\", primary: true },\n\t\t],\n\t},\n\t\"momentum.collect-reward\": {\n\t\tid: \"momentum.collect-reward\",\n\t\tprotocolId: \"momentum\",\n\t\tlabel: \"Momentum — Collect reward\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"Incentive rewards were collected from a Momentum position.\",\n\t\tgeneric: false,\n\t\tschema: MomentumCollectRewardSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::collect::CollectPoolRewardEvent\", primary: true },\n\t\t],\n\t},\n\t\"momentum.pool-created\": {\n\t\tid: \"momentum.pool-created\",\n\t\tprotocolId: \"momentum\",\n\t\tlabel: \"Momentum — Pool created\",\n\t\tcategory: \"pool\",\n\t\tdescription: \"A new Momentum pool was created.\",\n\t\tgeneric: false,\n\t\tschema: MomentumPoolCreatedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::create_pool::PoolCreatedEvent\", primary: true },\n\t\t],\n\t},\n\t\"momentum.remove-liquidity\": {\n\t\tid: \"momentum.remove-liquidity\",\n\t\tprotocolId: \"momentum\",\n\t\tlabel: \"Momentum — Remove liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was removed from a Momentum position.\",\n\t\tgeneric: false,\n\t\tschema: MomentumRemoveLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::liquidity::RemoveLiquidityEvent\", primary: true },\n\t\t],\n\t},\n\t\"momentum.repay-flash-swap\": {\n\t\tid: \"momentum.repay-flash-swap\",\n\t\tprotocolId: \"momentum\",\n\t\tlabel: \"Momentum — Repay flash swap\",\n\t\tcategory: \"fee\",\n\t\tdescription: \"A Momentum flash swap was repaid.\",\n\t\tgeneric: false,\n\t\tschema: MomentumRepayFlashSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::trade::RepayFlashSwapEvent\", primary: true },\n\t\t],\n\t},\n\t\"momentum.swap\": {\n\t\tid: \"momentum.swap\",\n\t\tprotocolId: \"momentum\",\n\t\tlabel: \"Momentum — Swap\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A swap was executed on a Momentum CLMM pool.\",\n\t\tgeneric: false,\n\t\tschema: MomentumSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::trade::SwapEvent\", primary: true },\n\t\t],\n\t},\n\t\"navi.borrow\": {\n\t\tid: \"navi.borrow\",\n\t\tprotocolId: \"navi\",\n\t\tlabel: \"NAVI — Borrow\",\n\t\tcategory: \"borrow\",\n\t\tdescription: \"Assets were borrowed from a NAVI pool.\",\n\t\tgeneric: false,\n\t\tschema: NaviBorrowSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1e4a13a0494d5facdbe8473e74127b838c2d446ecec0ce262e2eddafa77259cb::event::BorrowEvent\", primary: true },\n\t\t],\n\t},\n\t\"navi.deposit\": {\n\t\tid: \"navi.deposit\",\n\t\tprotocolId: \"navi\",\n\t\tlabel: \"NAVI — Deposit\",\n\t\tcategory: \"supply\",\n\t\tdescription: \"Assets were supplied to a NAVI lending pool.\",\n\t\tgeneric: false,\n\t\tschema: NaviDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1e4a13a0494d5facdbe8473e74127b838c2d446ecec0ce262e2eddafa77259cb::event::DepositEvent\", primary: true },\n\t\t],\n\t},\n\t\"navi.liquidation\": {\n\t\tid: \"navi.liquidation\",\n\t\tprotocolId: \"navi\",\n\t\tlabel: \"NAVI — Liquidation\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"An undercollateralized NAVI position was liquidated.\",\n\t\tgeneric: false,\n\t\tschema: NaviLiquidationSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1e4a13a0494d5facdbe8473e74127b838c2d446ecec0ce262e2eddafa77259cb::event::LiquidationEvent\", primary: true },\n\t\t],\n\t},\n\t\"navi.repay\": {\n\t\tid: \"navi.repay\",\n\t\tprotocolId: \"navi\",\n\t\tlabel: \"NAVI — Repay\",\n\t\tcategory: \"repay\",\n\t\tdescription: \"Borrowed assets were repaid to a NAVI pool.\",\n\t\tgeneric: false,\n\t\tschema: NaviRepaySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1e4a13a0494d5facdbe8473e74127b838c2d446ecec0ce262e2eddafa77259cb::event::RepayEvent\", primary: true },\n\t\t],\n\t},\n\t\"navi.withdraw\": {\n\t\tid: \"navi.withdraw\",\n\t\tprotocolId: \"navi\",\n\t\tlabel: \"NAVI — Withdraw\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"Supplied assets were withdrawn from a NAVI pool.\",\n\t\tgeneric: false,\n\t\tschema: NaviWithdrawSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x1e4a13a0494d5facdbe8473e74127b838c2d446ecec0ce262e2eddafa77259cb::event::WithdrawEvent\", primary: true },\n\t\t],\n\t},\n\t\"pyth.price-feed-update\": {\n\t\tid: \"pyth.price-feed-update\",\n\t\tprotocolId: \"pyth\",\n\t\tlabel: \"Pyth — Price feed update\",\n\t\tcategory: \"oracle\",\n\t\tdescription: \"A Pyth price feed was updated with new price data.\",\n\t\tgeneric: false,\n\t\tschema: PythPriceFeedUpdateSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e::event::PriceFeedUpdateEvent\", primary: true },\n\t\t\t{ network: \"testnet\", eventType: \"0xabf837e98c26087cba0883c0a7a28326b1fa3c5e1e2c5abdb486f9e8f594c837::event::PriceFeedUpdateEvent\", primary: true },\n\t\t],\n\t},\n\t\"scallop.borrow\": {\n\t\tid: \"scallop.borrow\",\n\t\tprotocolId: \"scallop\",\n\t\tlabel: \"Scallop — Borrow\",\n\t\tcategory: \"borrow\",\n\t\tdescription: \"Assets were borrowed from a Scallop lending market.\",\n\t\tgeneric: false,\n\t\tschema: ScallopBorrowSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::borrow::BorrowEventV3\", primary: true },\n\t\t],\n\t},\n\t\"scallop.collateral-deposit\": {\n\t\tid: \"scallop.collateral-deposit\",\n\t\tprotocolId: \"scallop\",\n\t\tlabel: \"Scallop — Deposit collateral\",\n\t\tcategory: \"supply\",\n\t\tdescription: \"Collateral was deposited into a Scallop obligation.\",\n\t\tgeneric: false,\n\t\tschema: ScallopCollateralDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::deposit_collateral::CollateralDepositEvent\", primary: true },\n\t\t],\n\t},\n\t\"scallop.collateral-withdraw\": {\n\t\tid: \"scallop.collateral-withdraw\",\n\t\tprotocolId: \"scallop\",\n\t\tlabel: \"Scallop — Withdraw collateral\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"Collateral was withdrawn from a Scallop obligation.\",\n\t\tgeneric: false,\n\t\tschema: ScallopCollateralWithdrawSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::withdraw_collateral::CollateralWithdrawEvent\", primary: true },\n\t\t],\n\t},\n\t\"scallop.liquidation\": {\n\t\tid: \"scallop.liquidation\",\n\t\tprotocolId: \"scallop\",\n\t\tlabel: \"Scallop — Liquidation\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"A Scallop obligation was liquidated.\",\n\t\tgeneric: false,\n\t\tschema: ScallopLiquidationSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::liquidate::LiquidateEventV2\", primary: true },\n\t\t],\n\t},\n\t\"scallop.repay\": {\n\t\tid: \"scallop.repay\",\n\t\tprotocolId: \"scallop\",\n\t\tlabel: \"Scallop — Repay\",\n\t\tcategory: \"repay\",\n\t\tdescription: \"Borrowed assets were repaid to a Scallop market.\",\n\t\tgeneric: false,\n\t\tschema: ScallopRepaySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::repay::RepayEvent\", primary: true },\n\t\t],\n\t},\n\t\"springsui.epoch-changed\": {\n\t\tid: \"springsui.epoch-changed\",\n\t\tprotocolId: \"springsui\",\n\t\tlabel: \"SpringSui — Epoch changed (rewards)\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"SpringSui accrued staking rewards at an epoch change.\",\n\t\tgeneric: false,\n\t\tschema: SpringsuiEpochChangedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::events::Event<0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::liquid_staking::EpochChangedEvent>\", primary: true },\n\t\t],\n\t},\n\t\"springsui.stake\": {\n\t\tid: \"springsui.stake\",\n\t\tprotocolId: \"springsui\",\n\t\tlabel: \"SpringSui — Stake (mint LST)\",\n\t\tcategory: \"stake\",\n\t\tdescription: \"SUI was staked to mint a SpringSui liquid-staking token.\",\n\t\tgeneric: false,\n\t\tschema: SpringsuiStakeSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::events::Event<0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::liquid_staking::MintEvent>\", primary: true },\n\t\t],\n\t},\n\t\"springsui.unstake\": {\n\t\tid: \"springsui.unstake\",\n\t\tprotocolId: \"springsui\",\n\t\tlabel: \"SpringSui — Unstake (redeem LST)\",\n\t\tcategory: \"unstake\",\n\t\tdescription: \"A SpringSui liquid-staking token was redeemed for SUI.\",\n\t\tgeneric: false,\n\t\tschema: SpringsuiUnstakeSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::events::Event<0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::liquid_staking::RedeemEvent>\", primary: true },\n\t\t],\n\t},\n\t\"steamm.bank-deposit\": {\n\t\tid: \"steamm.bank-deposit\",\n\t\tprotocolId: \"steamm\",\n\t\tlabel: \"Steamm — Bank deposit (mint bToken)\",\n\t\tcategory: \"supply\",\n\t\tdescription: \"Funds were deposited into a Steamm bank, minting bTokens.\",\n\t\tgeneric: false,\n\t\tschema: SteammBankDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4fb1cf45dffd6230305f1d269dd1816678cc8e3ba0b747a813a556921219f261::events::Event<0x4fb1cf45dffd6230305f1d269dd1816678cc8e3ba0b747a813a556921219f261::bank::MintBTokenEvent>\", primary: true },\n\t\t],\n\t},\n\t\"steamm.bank-withdraw\": {\n\t\tid: \"steamm.bank-withdraw\",\n\t\tprotocolId: \"steamm\",\n\t\tlabel: \"Steamm — Bank withdraw (burn bToken)\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"bTokens were burned to withdraw funds from a Steamm bank.\",\n\t\tgeneric: false,\n\t\tschema: SteammBankWithdrawSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4fb1cf45dffd6230305f1d269dd1816678cc8e3ba0b747a813a556921219f261::events::Event<0x4fb1cf45dffd6230305f1d269dd1816678cc8e3ba0b747a813a556921219f261::bank::BurnBTokenEvent>\", primary: true },\n\t\t],\n\t},\n\t\"suilend.borrow\": {\n\t\tid: \"suilend.borrow\",\n\t\tprotocolId: \"suilend\",\n\t\tlabel: \"Suilend — Borrow\",\n\t\tcategory: \"borrow\",\n\t\tdescription: \"Assets were borrowed from a Suilend market.\",\n\t\tgeneric: false,\n\t\tschema: SuilendBorrowSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::lending_market::BorrowEvent\", primary: true },\n\t\t],\n\t},\n\t\"suilend.claim-reward\": {\n\t\tid: \"suilend.claim-reward\",\n\t\tprotocolId: \"suilend\",\n\t\tlabel: \"Suilend — Claim reward\",\n\t\tcategory: \"reward\",\n\t\tdescription: \"Rewards were claimed from a Suilend market.\",\n\t\tgeneric: false,\n\t\tschema: SuilendClaimRewardSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::lending_market::ClaimRewardEvent\", primary: true },\n\t\t],\n\t},\n\t\"suilend.deposit\": {\n\t\tid: \"suilend.deposit\",\n\t\tprotocolId: \"suilend\",\n\t\tlabel: \"Suilend — Deposit\",\n\t\tcategory: \"supply\",\n\t\tdescription: \"Assets were deposited into a Suilend reserve.\",\n\t\tgeneric: false,\n\t\tschema: SuilendDepositSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::lending_market::DepositEvent\", primary: true },\n\t\t],\n\t},\n\t\"suilend.liquidate\": {\n\t\tid: \"suilend.liquidate\",\n\t\tprotocolId: \"suilend\",\n\t\tlabel: \"Suilend — Liquidation\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"A Suilend obligation was liquidated.\",\n\t\tgeneric: false,\n\t\tschema: SuilendLiquidateSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::lending_market::LiquidateEvent\", primary: true },\n\t\t],\n\t},\n\t\"suilend.repay\": {\n\t\tid: \"suilend.repay\",\n\t\tprotocolId: \"suilend\",\n\t\tlabel: \"Suilend — Repay\",\n\t\tcategory: \"repay\",\n\t\tdescription: \"Borrowed assets were repaid to a Suilend market.\",\n\t\tgeneric: false,\n\t\tschema: SuilendRepaySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::lending_market::RepayEvent\", primary: true },\n\t\t],\n\t},\n\t\"suilend.withdraw\": {\n\t\tid: \"suilend.withdraw\",\n\t\tprotocolId: \"suilend\",\n\t\tlabel: \"Suilend — Withdraw\",\n\t\tcategory: \"withdraw\",\n\t\tdescription: \"Assets were withdrawn from a Suilend reserve.\",\n\t\tgeneric: false,\n\t\tschema: SuilendWithdrawSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::lending_market::WithdrawEvent\", primary: true },\n\t\t],\n\t},\n\t\"supra.price-update\": {\n\t\tid: \"supra.price-update\",\n\t\tprotocolId: \"supra\",\n\t\tlabel: \"Supra — Price update\",\n\t\tcategory: \"oracle\",\n\t\tdescription: \"A Supra oracle price feed (pair) was updated.\",\n\t\tgeneric: false,\n\t\tschema: SupraPriceUpdateSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x4979543452f609ff272d504755966ff5e70122256101c17adbe8bd27d35116c3::SupraSValueFeed::PairDataUpdateEvent\", primary: true },\n\t\t],\n\t},\n\t\"turbos.add-liquidity\": {\n\t\tid: \"turbos.add-liquidity\",\n\t\tprotocolId: \"turbos\",\n\t\tlabel: \"Turbos — Add liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was minted into a Turbos position.\",\n\t\tgeneric: false,\n\t\tschema: TurbosAddLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x91bfbc386a41afcfd9b2533058d7e915a1d3829089cc268ff4333d54d6339ca1::pool::MintEvent\", primary: true },\n\t\t],\n\t},\n\t\"turbos.pool-created\": {\n\t\tid: \"turbos.pool-created\",\n\t\tprotocolId: \"turbos\",\n\t\tlabel: \"Turbos — Pool created\",\n\t\tcategory: \"pool\",\n\t\tdescription: \"A new Turbos CLMM pool was created.\",\n\t\tgeneric: false,\n\t\tschema: TurbosPoolCreatedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x91bfbc386a41afcfd9b2533058d7e915a1d3829089cc268ff4333d54d6339ca1::pool_factory::PoolCreatedEvent\", primary: true },\n\t\t],\n\t},\n\t\"turbos.remove-liquidity\": {\n\t\tid: \"turbos.remove-liquidity\",\n\t\tprotocolId: \"turbos\",\n\t\tlabel: \"Turbos — Remove liquidity\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was burned from a Turbos position.\",\n\t\tgeneric: false,\n\t\tschema: TurbosRemoveLiquiditySchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x91bfbc386a41afcfd9b2533058d7e915a1d3829089cc268ff4333d54d6339ca1::pool::BurnEvent\", primary: true },\n\t\t],\n\t},\n\t\"turbos.swap\": {\n\t\tid: \"turbos.swap\",\n\t\tprotocolId: \"turbos\",\n\t\tlabel: \"Turbos — Swap\",\n\t\tcategory: \"swap\",\n\t\tdescription: \"A swap was executed on a Turbos CLMM pool.\",\n\t\tgeneric: false,\n\t\tschema: TurbosSwapSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x91bfbc386a41afcfd9b2533058d7e915a1d3829089cc268ff4333d54d6339ca1::pool::SwapEvent\", primary: true },\n\t\t],\n\t},\n\t\"typus.dov-auction\": {\n\t\tid: \"typus.dov-auction\",\n\t\tprotocolId: \"typus\",\n\t\tlabel: \"Typus — DOV auction started\",\n\t\tcategory: \"option\",\n\t\tdescription: \"A new Typus options-vault (DOV) auction round started.\",\n\t\tgeneric: false,\n\t\tschema: TypusDovAuctionSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x321848bf1ae327a9e022ccb3701940191e02fa193ab160d9c0e49cd3c003de3a::typus_dov_single::NewAuctionEvent\", primary: true },\n\t\t],\n\t},\n\t\"typus.dov-bid\": {\n\t\tid: \"typus.dov-bid\",\n\t\tprotocolId: \"typus\",\n\t\tlabel: \"Typus — DOV bid\",\n\t\tcategory: \"option\",\n\t\tdescription: \"A bid was placed in a Typus options-vault auction.\",\n\t\tgeneric: false,\n\t\tschema: TypusDovBidSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x321848bf1ae327a9e022ccb3701940191e02fa193ab160d9c0e49cd3c003de3a::typus_dov_single::NewBidEvent\", primary: true },\n\t\t],\n\t},\n\t\"typus.dov-settle\": {\n\t\tid: \"typus.dov-settle\",\n\t\tprotocolId: \"typus\",\n\t\tlabel: \"Typus — DOV settled\",\n\t\tcategory: \"option\",\n\t\tdescription: \"A Typus options-vault round was settled.\",\n\t\tgeneric: false,\n\t\tschema: TypusDovSettleSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x321848bf1ae327a9e022ccb3701940191e02fa193ab160d9c0e49cd3c003de3a::typus_dov_single::SettleEvent\", primary: true },\n\t\t],\n\t},\n\t\"typus.perp-funding\": {\n\t\tid: \"typus.perp-funding\",\n\t\tprotocolId: \"typus\",\n\t\tlabel: \"Typus — Perp funding update\",\n\t\tcategory: \"funding\",\n\t\tdescription: \"A Typus perps market funding rate was updated.\",\n\t\tgeneric: false,\n\t\tschema: TypusPerpFundingSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x9003219180252ae6b81d2893b41d430488669027219537236675c0c2924c94d9::trading::UpdateFundingRateEvent\", primary: true },\n\t\t],\n\t},\n\t\"typus.perp-liquidate\": {\n\t\tid: \"typus.perp-liquidate\",\n\t\tprotocolId: \"typus\",\n\t\tlabel: \"Typus — Perp liquidation\",\n\t\tcategory: \"liquidation\",\n\t\tdescription: \"A Typus perps position was liquidated.\",\n\t\tgeneric: false,\n\t\tschema: TypusPerpLiquidateSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x9003219180252ae6b81d2893b41d430488669027219537236675c0c2924c94d9::trading::LiquidateEvent\", primary: true },\n\t\t],\n\t},\n\t\"typus.perp-lp-burn\": {\n\t\tid: \"typus.perp-lp-burn\",\n\t\tprotocolId: \"typus\",\n\t\tlabel: \"Typus — TLP burn\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was removed from the Typus perps LP (TLP).\",\n\t\tgeneric: false,\n\t\tschema: TypusPerpLpBurnSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x9003219180252ae6b81d2893b41d430488669027219537236675c0c2924c94d9::lp_pool::BurnLpEvent\", primary: true },\n\t\t],\n\t},\n\t\"typus.perp-lp-mint\": {\n\t\tid: \"typus.perp-lp-mint\",\n\t\tprotocolId: \"typus\",\n\t\tlabel: \"Typus — TLP mint\",\n\t\tcategory: \"liquidity\",\n\t\tdescription: \"Liquidity was added to the Typus perps LP (TLP).\",\n\t\tgeneric: false,\n\t\tschema: TypusPerpLpMintSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x9003219180252ae6b81d2893b41d430488669027219537236675c0c2924c94d9::lp_pool::MintLpEvent\", primary: true },\n\t\t],\n\t},\n\t\"typus.perp-order\": {\n\t\tid: \"typus.perp-order\",\n\t\tprotocolId: \"typus\",\n\t\tlabel: \"Typus — Perp order created\",\n\t\tcategory: \"perp\",\n\t\tdescription: \"A trading order was created on Typus perps.\",\n\t\tgeneric: false,\n\t\tschema: TypusPerpOrderSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x9003219180252ae6b81d2893b41d430488669027219537236675c0c2924c94d9::trading::CreateTradingOrderEvent\", primary: true },\n\t\t],\n\t},\n\t\"volo.staked\": {\n\t\tid: \"volo.staked\",\n\t\tprotocolId: \"volo\",\n\t\tlabel: \"Volo — Staked\",\n\t\tcategory: \"stake\",\n\t\tdescription: \"SUI was staked with Volo in exchange for vSUI.\",\n\t\tgeneric: false,\n\t\tschema: VoloStakedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::native_pool::StakedEvent\", primary: true },\n\t\t],\n\t},\n\t\"volo.unstaked\": {\n\t\tid: \"volo.unstaked\",\n\t\tprotocolId: \"volo\",\n\t\tlabel: \"Volo — Unstaked\",\n\t\tcategory: \"unstake\",\n\t\tdescription: \"vSUI was burned to unstake SUI on Volo.\",\n\t\tgeneric: false,\n\t\tschema: VoloUnstakedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::native_pool::UnstakedEvent\", primary: true },\n\t\t],\n\t},\n\t\"walrus.blob-certified\": {\n\t\tid: \"walrus.blob-certified\",\n\t\tprotocolId: \"walrus\",\n\t\tlabel: \"Walrus — Blob certified\",\n\t\tcategory: \"storage\",\n\t\tdescription: \"A Walrus blob was certified available.\",\n\t\tgeneric: false,\n\t\tschema: WalrusBlobCertifiedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xfdc88f7d7cf30afab2f82e8380d11ee8f70efb90e863d1de8616fae1bb09ea77::events::BlobCertified\", primary: true },\n\t\t],\n\t},\n\t\"walrus.blob-deleted\": {\n\t\tid: \"walrus.blob-deleted\",\n\t\tprotocolId: \"walrus\",\n\t\tlabel: \"Walrus — Blob deleted\",\n\t\tcategory: \"storage\",\n\t\tdescription: \"A Walrus blob was deleted.\",\n\t\tgeneric: false,\n\t\tschema: WalrusBlobDeletedSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xfdc88f7d7cf30afab2f82e8380d11ee8f70efb90e863d1de8616fae1bb09ea77::events::BlobDeleted\", primary: true },\n\t\t],\n\t},\n\t\"walrus.blob-registered\": {\n\t\tid: \"walrus.blob-registered\",\n\t\tprotocolId: \"walrus\",\n\t\tlabel: \"Walrus — Blob registered\",\n\t\tcategory: \"storage\",\n\t\tdescription: \"A new blob was registered for storage on Walrus.\",\n\t\tgeneric: false,\n\t\tschema: WalrusBlobRegisteredSchema,\n\t\tdeployments: [\n\t\t\t{ network: \"mainnet\", eventType: \"0xfdc88f7d7cf30afab2f82e8380d11ee8f70efb90e863d1de8616fae1bb09ea77::events::BlobRegistered\", primary: true },\n\t\t],\n\t},\n} as const;\n\nexport type CatalogEventId = keyof typeof catalogEvents;\n\n/** Decoded, validated payload type for a catalog event id. */\nexport type CatalogEventPayload<Id extends CatalogEventId> = z.infer<\n\t(typeof catalogEvents)[Id][\"schema\"]\n>;\n","/**\n * Typed catalog event payloads.\n *\n * ```ts\n * import { matchCatalogEvent, parseCatalogEvent } from \"@inodra/sui/events\";\n *\n * stream.on(\"message\", (msg) => {\n * const swap = parseCatalogEvent(msg, \"cetus.swap\");\n * if (swap) console.log(swap.amount_in); // typed, validated, normalized\n * });\n * ```\n */\nimport type { z } from \"zod\";\nimport {\n\ttype CatalogEventId,\n\ttype CatalogEventPayload,\n\tcatalogEvents,\n} from \"../generated/events.js\";\nimport { eventTypeMatches } from \"./runtime.js\";\n\nexport * from \"./runtime.js\";\nexport * from \"../generated/events.js\";\nexport {\n\tformatMoveType,\n\ttype MoveTypeNode,\n\tnormalizeAddress,\n\tparseMoveType,\n\tresolveShape,\n\ttype SchemaShape,\n\tshapeToExpr,\n\tshapeToZod,\n\ttype StructField,\n\ttype StructResolver,\n\tsubstituteTypeParams,\n} from \"./move-types.js\";\nexport {\n\tEventSchemaReflector,\n\ttype EventSchemaReflectorOptions,\n} from \"./reflection.js\";\n\n/** Payload type BEFORE zod normalization (what's on the wire). */\nexport type CatalogEventInput<Id extends CatalogEventId> = z.input<\n\t(typeof catalogEvents)[Id][\"schema\"]\n>;\n\nexport interface MatchOptions {\n\t/** Only match deployments on this network (default: any). */\n\tnetwork?: string;\n}\n\n/**\n * Resolve which catalog event a raw on-chain event type belongs to, if any.\n * Generic events match by base type; wrapped events match exactly — mirroring\n * the server's subscription matching.\n */\nexport function resolveCatalogEvent(\n\trawEventType: string,\n\toptions: MatchOptions = {},\n): (typeof catalogEvents)[CatalogEventId] | undefined {\n\tfor (const event of Object.values(catalogEvents)) {\n\t\tfor (const deployment of event.deployments) {\n\t\t\tif (options.network && deployment.network !== options.network) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (eventTypeMatches(rawEventType, deployment, event.generic)) {\n\t\t\t\treturn event;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Accepts any delivery shape that (possibly nested) carries a Move event:\n * a Warp stream message, an SSE/WS event payload, or a webhook body — and\n * digs out `{ type, data }`.\n */\nfunction extractEventPayload(\n\tinput: unknown,\n\tdepth = 0,\n): { type: string; data: unknown } | undefined {\n\tif (depth > 3 || typeof input !== \"object\" || input === null) {\n\t\treturn undefined;\n\t}\n\tconst record = input as Record<string, unknown>;\n\tif (\n\t\ttypeof record.type === \"string\" &&\n\t\trecord.type.includes(\"::\") &&\n\t\t\"data\" in record\n\t) {\n\t\treturn { type: record.type, data: record.data };\n\t}\n\treturn (\n\t\textractEventPayload(record.payload, depth + 1) ??\n\t\textractEventPayload(record.data, depth + 1)\n\t);\n}\n\nfunction matches(\n\trawEventType: string,\n\tid: CatalogEventId,\n\toptions: MatchOptions,\n): boolean {\n\tconst event = catalogEvents[id];\n\treturn event.deployments.some(\n\t\t(deployment) =>\n\t\t\t(!options.network || deployment.network === options.network) &&\n\t\t\teventTypeMatches(rawEventType, deployment, event.generic),\n\t);\n}\n\n/**\n * If the message carries the given catalog event, return its payload typed\n * as received on the wire — no validation. Accepts a Warp stream message,\n * an event payload, or a webhook body.\n */\nexport function matchCatalogEvent<Id extends CatalogEventId>(\n\tmessage: unknown,\n\tid: Id,\n\toptions: MatchOptions = {},\n): CatalogEventInput<Id> | undefined {\n\tconst payload = extractEventPayload(message);\n\tif (!payload || !matches(payload.type, id, options)) {\n\t\treturn undefined;\n\t}\n\treturn payload.data as CatalogEventInput<Id>;\n}\n\n/**\n * Like {@link matchCatalogEvent}, but validates and normalizes the payload\n * with the generated zod schema (u64→string, TypeName→string, …).\n *\n * Returns undefined when the message is a different event; THROWS when the\n * event matches but its payload doesn't fit the schema — that means schema\n * drift worth surfacing, not a message to skip silently.\n */\nexport function parseCatalogEvent<Id extends CatalogEventId>(\n\tmessage: unknown,\n\tid: Id,\n\toptions: MatchOptions = {},\n): CatalogEventPayload<Id> | undefined {\n\tconst payload = extractEventPayload(message);\n\tif (!payload || !matches(payload.type, id, options)) {\n\t\treturn undefined;\n\t}\n\treturn catalogEvents[id].schema.parse(\n\t\tpayload.data,\n\t) as CatalogEventPayload<Id>;\n}\n","export {\n\tInodra,\n\ttype InodraEndpointOverrides,\n\ttype InodraOptions,\n} from \"./client.js\";\nexport {\n\ttype AuthCredentials,\n\ttype InodraAuth,\n\tresolveAuth,\n} from \"./core/auth.js\";\nexport {\n\ttype Page,\n\tpaginate,\n} from \"./core/openapi.js\";\nexport { AccountNamespace } from \"./namespaces/account.js\";\nexport { EventsNamespace } from \"./namespaces/events.js\";\nexport { CatalogNamespace } from \"./namespaces/catalog.js\";\nexport { DataNamespace } from \"./namespaces/data.js\";\nexport {\n\ttype CatalogEventMessage,\n\ttype CatalogEventStream,\n\ttype ConnectOptions,\n\ttype ConnectWebSocketOptions,\n\ttype StreamCatalogEventOptions,\n\tWarpNamespace,\n} from \"./namespaces/warp.js\";\nexport { WebhooksNamespace } from \"./namespaces/webhooks.js\";\nexport {\n\tInodraAuthenticationError,\n\tInodraError,\n\tInodraRateLimitError,\n\tInodraTimeoutError,\n\tInodraWebhookSignatureError,\n} from \"./core/errors.js\";\nexport {\n\tInodraHttpClient,\n\ttype InodraHttpClientOptions,\n\ttype InodraResponseMeta,\n\ttype RequestOptions,\n} from \"./core/http.js\";\nexport { INODRA_ENDPOINTS, type InodraNetwork } from \"./core/network.js\";\nexport { SDK_VERSION } from \"./core/version.js\";\nexport * from \"./manage/index.js\";\nexport * from \"./warp/index.js\";\nexport * from \"./webhooks/index.js\";\n","import { authFromOptions, type InodraAuth } from \"./core/auth.js\";\nimport {\n\tInodraHttpClient,\n\ttype InodraResponseMeta,\n} from \"./core/http.js\";\nimport {\n\tINODRA_ENDPOINTS,\n\ttype InodraNetwork,\n} from \"./core/network.js\";\nimport { createInodraGraphQLClient } from \"./graphql/index.js\";\nimport type { SuiGraphQLClient } from \"./graphql/index.js\";\nimport { createInodraGrpcWebClient } from \"./grpc-web/index.js\";\nimport type { SuiGrpcClient } from \"./grpc-web/index.js\";\nimport { AccountNamespace } from \"./namespaces/account.js\";\nimport { CatalogNamespace } from \"./namespaces/catalog.js\";\nimport { DataNamespace } from \"./namespaces/data.js\";\nimport { EventsNamespace } from \"./namespaces/events.js\";\nimport { WarpNamespace } from \"./namespaces/warp.js\";\nimport { WebhooksNamespace } from \"./namespaces/webhooks.js\";\n\n/** Per-protocol endpoint overrides (all optional; defaults come from network). */\nexport interface InodraEndpointOverrides {\n\t/** REST base URL, e.g. http://localhost:3000/v1 */\n\trest?: string;\n\t/** GraphQL endpoint URL. */\n\tgraphql?: string;\n\t/** host:port for native gRPC transports. */\n\tgrpc?: string;\n\t/** Base URL for gRPC-Web transports. */\n\tgrpcWeb?: string;\n\t/** WS base URL for Warp streams, e.g. ws://localhost:3000/v1 */\n\twarpWs?: string;\n}\n\nexport interface InodraOptions {\n\t/** Credentials: an API key string, {apiKey}, {sessionToken}, or a provider. */\n\tauth?: InodraAuth;\n\t/** Shorthand for `auth: { apiKey }`. */\n\tapiKey?: string;\n\t/** Defaults to \"mainnet\". */\n\tnetwork?: InodraNetwork;\n\t/** Endpoint overrides for self-hosted / local development. */\n\tendpoints?: InodraEndpointOverrides;\n\t/** REST retry budget for 429/5xx. Defaults to 2. */\n\tmaxRetries?: number;\n\t/** REST per-request timeout in milliseconds. Defaults to 30000. */\n\ttimeoutMs?: number;\n\t/** Custom fetch implementation. */\n\tfetch?: typeof globalThis.fetch;\n\t/** Called with rate-limit/credit info after every REST response. */\n\tonResponseMeta?: (meta: InodraResponseMeta) => void;\n}\n\n/**\n * The Inodra client — one entry point, one credential, every product surface.\n *\n * ```ts\n * const inodra = new Inodra({ network: \"mainnet\", auth: { apiKey } });\n *\n * const balance = await inodra.grpc.core.getBalance({ owner, coinType });\n * const sub = await inodra.warp.createEventStream({ eventType });\n * const stream = inodra.warp.connect(sub.id);\n * ```\n *\n * Namespaces are created lazily on first access. The `grpc` client uses a\n * fetch-based gRPC-Web transport that works in every runtime; on Node.js,\n * import `Inodra` from `@inodra/sui/node` for native HTTP/2 gRPC instead.\n *\n * Bundle note: this entry statically references `@mysten/sui`. Frontend apps\n * that only need Warp/webhooks and want a Mysten-free bundle should import\n * from the lean subpaths (`@inodra/sui/warp`, `@inodra/sui/manage`, …).\n */\nexport class Inodra {\n\treadonly network: InodraNetwork;\n\t/** The underlying REST transport (shared by all REST namespaces). */\n\treadonly http: InodraHttpClient;\n\n\tprotected readonly options: InodraOptions;\n\tprotected readonly auth: InodraAuth;\n\tprivate memo = new Map<string, unknown>();\n\n\tconstructor(options: InodraOptions) {\n\t\t// Validate credentials eagerly so misconfiguration fails at construction.\n\t\tauthFromOptions(options, \"Inodra\");\n\t\tthis.options = options;\n\t\tthis.auth = options.auth ?? { apiKey: options.apiKey as string };\n\t\tthis.network = options.network ?? \"mainnet\";\n\t\tthis.http = new InodraHttpClient({\n\t\t\tauth: this.auth,\n\t\t\tnetwork: this.network,\n\t\t\tbaseUrl: options.endpoints?.rest,\n\t\t\tmaxRetries: options.maxRetries,\n\t\t\ttimeoutMs: options.timeoutMs,\n\t\t\tfetch: options.fetch,\n\t\t\tonResponseMeta: options.onResponseMeta,\n\t\t});\n\t}\n\n\t/** Rate-limit/credit info from the most recent REST response. */\n\tget lastResponseMeta(): InodraResponseMeta | undefined {\n\t\treturn this.http.lastResponseMeta;\n\t}\n\n\t/**\n\t * Sui gRPC client (@mysten/sui) over Inodra's authenticated gateway.\n\t * Uses a fetch-based gRPC-Web transport — works in browsers, edge\n\t * runtimes, and Node. For native HTTP/2 gRPC on Node, use\n\t * `@inodra/sui/node`.\n\t */\n\tget grpc(): SuiGrpcClient {\n\t\treturn this.lazy(\"grpc\", () => this.createGrpcClient());\n\t}\n\n\t/** Sui GraphQL client (@mysten/sui) over Inodra's authenticated gateway. */\n\tget graphql(): SuiGraphQLClient {\n\t\treturn this.lazy(\"graphql\", () =>\n\t\t\tcreateInodraGraphQLClient({\n\t\t\t\tauth: this.auth,\n\t\t\t\tnetwork: this.network,\n\t\t\t\turl: this.options.endpoints?.graphql,\n\t\t\t}),\n\t\t);\n\t}\n\n\t/** Warp streams: subscription CRUD + live SSE/WebSocket delivery. */\n\tget warp(): WarpNamespace {\n\t\treturn this.lazy(\n\t\t\t\"warp\",\n\t\t\t() =>\n\t\t\t\tnew WarpNamespace({\n\t\t\t\t\thttp: this.http,\n\t\t\t\t\tauth: this.auth,\n\t\t\t\t\tnetwork: this.network,\n\t\t\t\t\trestBaseUrl: this.options.endpoints?.rest,\n\t\t\t\t\twarpWsBaseUrl: this.options.endpoints?.warpWs,\n\t\t\t\t\tfetch: this.options.fetch,\n\t\t\t\t}),\n\t\t);\n\t}\n\n\t/** Webhooks: subscription CRUD + delivery signature verification. */\n\tget webhooks(): WebhooksNamespace {\n\t\treturn this.lazy(\"webhooks\", () => new WebhooksNamespace(this.http));\n\t}\n\n\t/** Indexer-backed data: accounts, coins, packages, validators, SuiNS, …. */\n\tget data(): DataNamespace {\n\t\treturn this.lazy(\"data\", () => new DataNamespace(this.http));\n\t}\n\n\t/** Curated protocol event catalog (live view). */\n\tget catalog(): CatalogNamespace {\n\t\treturn this.lazy(\"catalog\", () => new CatalogNamespace(this.http));\n\t}\n\n\t/** The authenticated principal: key introspection + usage stats. */\n\tget account(): AccountNamespace {\n\t\treturn this.lazy(\"account\", () => new AccountNamespace(this.http));\n\t}\n\n\t/** Reflection-based typed payloads for arbitrary (uncataloged) events. */\n\tget events(): EventsNamespace {\n\t\treturn this.lazy(\n\t\t\t\"events\",\n\t\t\t() =>\n\t\t\t\tnew EventsNamespace({\n\t\t\t\t\tauth: this.auth,\n\t\t\t\t\tnetwork: this.network,\n\t\t\t\t\tgraphqlUrl: this.options.endpoints?.graphql,\n\t\t\t\t\tfetch: this.options.fetch,\n\t\t\t\t}),\n\t\t);\n\t}\n\n\t/** Default endpoints for this client's network. */\n\tget endpoints(): (typeof INODRA_ENDPOINTS)[InodraNetwork] {\n\t\treturn INODRA_ENDPOINTS[this.network];\n\t}\n\n\tprotected createGrpcClient(): SuiGrpcClient {\n\t\treturn createInodraGrpcWebClient({\n\t\t\tauth: this.auth,\n\t\t\tnetwork: this.network,\n\t\t\tbaseUrl: this.options.endpoints?.grpcWeb,\n\t\t});\n\t}\n\n\tprotected lazy<T>(key: string, create: () => T): T {\n\t\tlet value = this.memo.get(key) as T | undefined;\n\t\tif (value === undefined) {\n\t\t\tvalue = create();\n\t\t\tthis.memo.set(key, value);\n\t\t}\n\t\treturn value;\n\t}\n}\n","import {\n\tauthFromOptions,\n\ttype InodraAuth,\n\ttype ResolvedAuth,\n} from \"./auth.js\";\nimport {\n\tInodraAuthenticationError,\n\tInodraError,\n\tInodraRateLimitError,\n\tInodraTimeoutError,\n} from \"./errors.js\";\nimport { type InodraNetwork, restBaseUrl } from \"./network.js\";\nimport { SDK_HEADER_NAME, SDK_HEADER_VALUE } from \"./version.js\";\n\nexport interface InodraHttpClientOptions {\n\t/** Credentials: an API key string, {apiKey}, {sessionToken}, or a provider. */\n\tauth?: InodraAuth;\n\t/** Shorthand for `auth: { apiKey }`. */\n\tapiKey?: string;\n\t/** Defaults to \"mainnet\". Ignored when baseUrl is set. */\n\tnetwork?: InodraNetwork;\n\t/** Overrides the network-derived base URL (e.g. http://localhost:3000/v1). */\n\tbaseUrl?: string;\n\t/** Retries on 429 and 5xx responses. Defaults to 2. */\n\tmaxRetries?: number;\n\t/** Per-request timeout in milliseconds. Defaults to 30000. */\n\ttimeoutMs?: number;\n\t/** Custom fetch implementation (e.g. for testing or proxying). */\n\tfetch?: typeof globalThis.fetch;\n\t/** Called with rate-limit/credit info after every response that carries it. */\n\tonResponseMeta?: (meta: InodraResponseMeta) => void;\n}\n\nexport interface RequestOptions {\n\tquery?: Record<string, string | number | boolean | undefined>;\n\tbody?: unknown;\n\tsignal?: AbortSignal;\n\t/**\n\t * Marks a POST/PATCH as safe to retry on 5xx. Reads (GET) and idempotent\n\t * writes (PUT/DELETE) retry on 429 and 5xx by default; non-idempotent\n\t * writes retry only on 429 (the request was never processed) unless this\n\t * is set — a 5xx may have been applied server-side.\n\t */\n\tidempotent?: boolean;\n}\n\n/** Rate-limit and credit state reported by the API on each response. */\nexport interface InodraResponseMeta {\n\trateLimit?: {\n\t\tlimit: number;\n\t\tremaining: number;\n\t\t/** Unix epoch (ms) when the window resets. */\n\t\treset: number;\n\t\t/** True when CU quota is exceeded and limits are soft-dropped. */\n\t\tthrottled: boolean;\n\t};\n\tcredits?: {\n\t\tremaining: number;\n\t\tlimit: number;\n\t\t/** ISO date when credits replenish. */\n\t\treplenishDate?: string;\n\t\t/** True when credit accounting is degraded (fail-open). */\n\t\tdegraded: boolean;\n\t};\n\trequestId?: string;\n}\n\nexport class InodraHttpClient {\n\treadonly baseUrl: string;\n\t/** Rate-limit/credit info from the most recent response, if any. */\n\tlastResponseMeta: InodraResponseMeta | undefined;\n\n\tprivate readonly auth: ResolvedAuth;\n\tprivate readonly maxRetries: number;\n\tprivate readonly timeoutMs: number;\n\tprivate readonly fetchImpl: typeof globalThis.fetch;\n\tprivate readonly onResponseMeta?: (meta: InodraResponseMeta) => void;\n\n\tconstructor(options: InodraHttpClientOptions) {\n\t\tthis.auth = authFromOptions(options, \"InodraHttpClient\");\n\t\tthis.baseUrl = (\n\t\t\toptions.baseUrl ?? restBaseUrl(options.network ?? \"mainnet\")\n\t\t).replace(/\\/$/, \"\");\n\t\tthis.maxRetries = options.maxRetries ?? 2;\n\t\tthis.timeoutMs = options.timeoutMs ?? 30_000;\n\t\tthis.fetchImpl = options.fetch ?? globalThis.fetch;\n\t\tthis.onResponseMeta = options.onResponseMeta;\n\t}\n\n\tasync request<T>(\n\t\tmethod: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n\t\tpath: string,\n\t\toptions: RequestOptions = {},\n\t): Promise<T> {\n\t\tconst url = new URL(this.baseUrl + path);\n\t\tfor (const [key, value] of Object.entries(options.query ?? {})) {\n\t\t\tif (value !== undefined) {\n\t\t\t\turl.searchParams.set(key, String(value));\n\t\t\t}\n\t\t}\n\n\t\tconst retryOn5xx =\n\t\t\toptions.idempotent ?? !(method === \"POST\" || method === \"PATCH\");\n\n\t\tlet attempt = 0;\n\t\tfor (;;) {\n\t\t\tconst response = await this.send(url, method, options);\n\t\t\tthis.captureMeta(response);\n\n\t\t\tif (response.ok) {\n\t\t\t\tif (response.status === 204) {\n\t\t\t\t\treturn undefined as T;\n\t\t\t\t}\n\t\t\t\treturn (await response.json()) as T;\n\t\t\t}\n\n\t\t\tconst retryable =\n\t\t\t\tresponse.status === 429 || (retryOn5xx && response.status >= 500);\n\t\t\tif (retryable && attempt < this.maxRetries) {\n\t\t\t\tattempt += 1;\n\t\t\t\tawait sleep(retryDelayMs(response, attempt));\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthrow await toError(response);\n\t\t}\n\t}\n\n\tprivate async send(\n\t\turl: URL,\n\t\tmethod: string,\n\t\toptions: RequestOptions,\n\t): Promise<Response> {\n\t\tconst timeoutSignal = AbortSignal.timeout(this.timeoutMs);\n\t\tconst signal = options.signal\n\t\t\t? AbortSignal.any([options.signal, timeoutSignal])\n\t\t\t: timeoutSignal;\n\n\t\tconst { headers: authHeaders } = await this.auth.credentials();\n\n\t\ttry {\n\t\t\treturn await this.fetchImpl(url, {\n\t\t\t\tmethod,\n\t\t\t\theaders: {\n\t\t\t\t\t...authHeaders,\n\t\t\t\t\t[SDK_HEADER_NAME]: SDK_HEADER_VALUE,\n\t\t\t\t\t\"content-type\": \"application/json\",\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t},\n\t\t\t\tbody: options.body === undefined ? undefined : JSON.stringify(options.body),\n\t\t\t\tsignal,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (timeoutSignal.aborted && !options.signal?.aborted) {\n\t\t\t\tthrow new InodraTimeoutError(this.timeoutMs);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate captureMeta(response: Response): void {\n\t\tconst meta = parseResponseMeta(response);\n\t\tif (meta) {\n\t\t\tthis.lastResponseMeta = meta;\n\t\t\tthis.onResponseMeta?.(meta);\n\t\t}\n\t}\n}\n\nexport function parseResponseMeta(\n\tresponse: Response,\n): InodraResponseMeta | undefined {\n\tconst meta: InodraResponseMeta = {};\n\n\tconst limit = header(response, \"x-ratelimit-limit\");\n\tconst remaining = header(response, \"x-ratelimit-remaining\");\n\tconst reset = header(response, \"x-ratelimit-reset\");\n\tif (limit !== undefined && remaining !== undefined) {\n\t\tmeta.rateLimit = {\n\t\t\tlimit,\n\t\t\tremaining,\n\t\t\treset: reset ?? 0,\n\t\t\tthrottled: response.headers.get(\"x-ratelimit-throttle\") !== null,\n\t\t};\n\t}\n\n\tconst creditRemaining = header(response, \"x-inodra-credit-remaining\");\n\tconst creditLimit = header(response, \"x-inodra-credit-limit\");\n\tif (creditRemaining !== undefined && creditLimit !== undefined) {\n\t\tmeta.credits = {\n\t\t\tremaining: creditRemaining,\n\t\t\tlimit: creditLimit,\n\t\t\treplenishDate:\n\t\t\t\tresponse.headers.get(\"x-inodra-credit-replenish-date\") ?? undefined,\n\t\t\tdegraded: response.headers.get(\"x-inodra-credit-degraded\") === \"true\",\n\t\t};\n\t}\n\n\tconst requestId = response.headers.get(\"x-request-id\");\n\tif (requestId) {\n\t\tmeta.requestId = requestId;\n\t}\n\n\tif (!meta.rateLimit && !meta.credits && !meta.requestId) {\n\t\treturn undefined;\n\t}\n\treturn meta;\n}\n\nfunction header(response: Response, name: string): number | undefined {\n\tconst raw = response.headers.get(name);\n\tif (raw === null) {\n\t\treturn undefined;\n\t}\n\tconst value = Number(raw);\n\treturn Number.isFinite(value) ? value : undefined;\n}\n\nasync function toError(response: Response): Promise<InodraError> {\n\tconst requestId = response.headers.get(\"x-request-id\") ?? undefined;\n\tlet body: unknown;\n\ttry {\n\t\tbody = await response.json();\n\t} catch {\n\t\tbody = undefined;\n\t}\n\n\tconst serverMessage = extractField(body, [\"message\", \"error\"]);\n\tconst code = extractField(body, [\"code\"]);\n\n\tif (response.status === 401 || response.status === 403) {\n\t\treturn new InodraAuthenticationError({\n\t\t\tstatus: response.status,\n\t\t\trequestId,\n\t\t\tbody,\n\t\t\tcode,\n\t\t\tmessage: serverMessage,\n\t\t});\n\t}\n\tif (response.status === 429) {\n\t\tconst retryAfter = response.headers.get(\"retry-after\");\n\t\treturn new InodraRateLimitError({\n\t\t\tstatus: response.status,\n\t\t\trequestId,\n\t\t\tbody,\n\t\t\tcode,\n\t\t\tretryAfterSeconds: retryAfter ? Number(retryAfter) : undefined,\n\t\t\tmessage: serverMessage,\n\t\t});\n\t}\n\n\treturn new InodraError(\n\t\tserverMessage ?? `Request failed with status ${response.status}`,\n\t\t{ status: response.status, requestId, body, code },\n\t);\n}\n\nfunction extractField(body: unknown, keys: string[]): string | undefined {\n\tif (typeof body !== \"object\" || body === null) {\n\t\treturn undefined;\n\t}\n\tfor (const key of keys) {\n\t\tconst value = (body as Record<string, unknown>)[key];\n\t\tif (typeof value === \"string\" && value.length > 0) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction retryDelayMs(response: Response, attempt: number): number {\n\tconst retryAfter = response.headers.get(\"retry-after\");\n\tif (retryAfter) {\n\t\tconst seconds = Number(retryAfter);\n\t\tif (Number.isFinite(seconds)) {\n\t\t\treturn seconds * 1000;\n\t\t}\n\t}\n\treturn 250 * 2 ** (attempt - 1) + Math.random() * 100;\n}\n\nfunction sleep(ms: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n","export class InodraError extends Error {\n\treadonly status: number;\n\treadonly requestId?: string;\n\treadonly body?: unknown;\n\t/** Stable machine-readable error code from the API (e.g. \"QUOTA_EXCEEDED\"). */\n\treadonly code?: string;\n\n\tconstructor(\n\t\tmessage: string,\n\t\toptions: {\n\t\t\tstatus: number;\n\t\t\trequestId?: string;\n\t\t\tbody?: unknown;\n\t\t\tcode?: string;\n\t\t},\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"InodraError\";\n\t\tthis.status = options.status;\n\t\tthis.requestId = options.requestId;\n\t\tthis.body = options.body;\n\t\tthis.code = options.code;\n\t}\n}\n\nexport class InodraAuthenticationError extends InodraError {\n\tconstructor(options: {\n\t\tstatus: number;\n\t\trequestId?: string;\n\t\tbody?: unknown;\n\t\tcode?: string;\n\t\tmessage?: string;\n\t}) {\n\t\tsuper(\n\t\t\toptions.message ??\n\t\t\t\t(options.status === 403\n\t\t\t\t\t? \"Forbidden — the API key is valid but not allowed to do this\"\n\t\t\t\t\t: \"Invalid or missing API key\"),\n\t\t\toptions,\n\t\t);\n\t\tthis.name = \"InodraAuthenticationError\";\n\t}\n}\n\nexport class InodraRateLimitError extends InodraError {\n\treadonly retryAfterSeconds?: number;\n\n\tconstructor(options: {\n\t\tstatus: number;\n\t\trequestId?: string;\n\t\tbody?: unknown;\n\t\tcode?: string;\n\t\tretryAfterSeconds?: number;\n\t\tmessage?: string;\n\t}) {\n\t\tsuper(options.message ?? \"Rate limit exceeded\", options);\n\t\tthis.name = \"InodraRateLimitError\";\n\t\tthis.retryAfterSeconds = options.retryAfterSeconds;\n\t}\n}\n\nexport class InodraTimeoutError extends Error {\n\tconstructor(timeoutMs: number) {\n\t\tsuper(`Request timed out after ${timeoutMs}ms`);\n\t\tthis.name = \"InodraTimeoutError\";\n\t}\n}\n\nexport class InodraWebhookSignatureError extends Error {\n\tconstructor() {\n\t\tsuper(\"Webhook signature verification failed (bad, missing, or expired)\");\n\t\tthis.name = \"InodraWebhookSignatureError\";\n\t}\n}\n","import {\n\ttype GraphQLDocument,\n\tSuiGraphQLClient,\n} from \"@mysten/sui/graphql\";\nimport { type InodraAuth, staticAuthHeaders } from \"../core/auth.js\";\nimport { graphqlUrl, type InodraNetwork } from \"../core/network.js\";\nimport { SDK_HEADER_NAME, SDK_HEADER_VALUE } from \"../core/version.js\";\n\nexport interface InodraGraphQLClientOptions<\n\tQueries extends Record<string, GraphQLDocument>,\n> {\n\t/** Credentials: an API key string, {apiKey}, or {sessionToken}. */\n\tauth?: InodraAuth;\n\t/** Shorthand for `auth: { apiKey }`. */\n\tapiKey?: string;\n\t/** Defaults to \"mainnet\". Ignored when url is set. */\n\tnetwork?: InodraNetwork;\n\t/** Overrides the network-derived GraphQL endpoint. */\n\turl?: string;\n\t/** Extra headers sent with every request. */\n\theaders?: Record<string, string>;\n\t/** Named, typed queries usable via client.execute(name, ...). */\n\tqueries?: Queries;\n}\n\n/**\n * GraphQL client for Inodra's Sui GraphQL endpoint.\n *\n * Returns a fully featured `SuiGraphQLClient` from @mysten/sui,\n * authenticated against Inodra.\n *\n * ```ts\n * import { graphql } from \"@mysten/sui/graphql/schemas/latest\";\n *\n * const client = createInodraGraphQLClient({ apiKey });\n * const result = await client.query({\n * query: graphql(`query { chainIdentifier }`),\n * });\n * ```\n */\nexport function createInodraGraphQLClient<\n\tQueries extends Record<string, GraphQLDocument> = Record<\n\t\tstring,\n\t\tGraphQLDocument\n\t>,\n>(options: InodraGraphQLClientOptions<Queries>): SuiGraphQLClient<Queries> {\n\tconst network = options.network ?? \"mainnet\";\n\treturn new SuiGraphQLClient({\n\t\tnetwork,\n\t\turl: options.url ?? graphqlUrl(network),\n\t\theaders: {\n\t\t\t...staticAuthHeaders(options, \"createInodraGraphQLClient\"),\n\t\t\t[SDK_HEADER_NAME]: SDK_HEADER_VALUE,\n\t\t\t...options.headers,\n\t\t},\n\t\tqueries: options.queries,\n\t});\n}\n\nexport {\n\ttype GraphQLDocument,\n\ttype GraphQLQueryOptions,\n\ttype GraphQLQueryResult,\n\tSuiGraphQLClient,\n} from \"@mysten/sui/graphql\";\n","import { SuiGrpcClient } from \"@mysten/sui/grpc\";\nimport { GrpcWebFetchTransport } from \"@protobuf-ts/grpcweb-transport\";\nimport { type InodraAuth, staticAuthHeaders } from \"../core/auth.js\";\nimport { grpcBaseUrl, type InodraNetwork } from \"../core/network.js\";\nimport { SDK_HEADER_NAME, SDK_HEADER_VALUE } from \"../core/version.js\";\n\nexport interface InodraGrpcWebClientOptions {\n\t/** Credentials: an API key string, {apiKey}, or {sessionToken}. */\n\tauth?: InodraAuth;\n\t/** Shorthand for `auth: { apiKey }`. */\n\tapiKey?: string;\n\t/** Defaults to \"mainnet\". */\n\tnetwork?: InodraNetwork;\n\t/** Overrides the network-derived base URL. */\n\tbaseUrl?: string;\n\t/** Extra metadata sent with every call. */\n\tmetadata?: Record<string, string>;\n}\n\n/**\n * gRPC-Web client for Inodra — works in browsers and any fetch-capable\n * runtime. For Node.js backends, prefer `@inodra/sui/grpc` (native HTTP/2).\n *\n * Returns a fully featured `SuiGrpcClient` from @mysten/sui, authenticated\n * against Inodra's gRPC gateway.\n *\n * ```ts\n * const client = createInodraGrpcWebClient({ apiKey });\n * const checkpoint = await client.core.getCheckpoint({ sequenceNumber });\n * ```\n */\nexport function createInodraGrpcWebClient(\n\toptions: InodraGrpcWebClientOptions,\n): SuiGrpcClient {\n\tconst network = options.network ?? \"mainnet\";\n\t// SuiGrpcClient's built-in gRPC-Web mode drops the `meta` option, so the\n\t// transport (which honors it on every call) is constructed explicitly.\n\tconst transport = new GrpcWebFetchTransport({\n\t\tbaseUrl: options.baseUrl ?? grpcBaseUrl(network),\n\t\tmeta: {\n\t\t\t...staticAuthHeaders(options, \"createInodraGrpcWebClient\"),\n\t\t\t[SDK_HEADER_NAME]: SDK_HEADER_VALUE,\n\t\t\t...options.metadata,\n\t\t},\n\t});\n\treturn new SuiGrpcClient({ network, transport });\n}\n\nexport { SuiGrpcClient } from \"@mysten/sui/grpc\";\n","import type { InodraHttpClient } from \"../core/http.js\";\nimport type { Operation, Success } from \"../core/openapi.js\";\n\ntype MeOp = Operation<\"/auth/me\", \"get\">;\ntype UsageOp = Operation<\"/usage/stats\", \"get\">;\n\n/**\n * The authenticated principal: API key introspection and usage/billing stats.\n *\n * ```ts\n * const me = await inodra.account.me(); // org, project, network, tier\n * const usage = await inodra.account.usage(); // CU consumed/remaining, p95s\n * ```\n */\nexport class AccountNamespace {\n\tprivate readonly http: InodraHttpClient;\n\n\tconstructor(http: InodraHttpClient) {\n\t\tthis.http = http;\n\t}\n\n\t/** Who am I — key, organization, project, network, tier, subscription. */\n\tme(): Promise<Success<MeOp>> {\n\t\treturn this.http.request(\"GET\", \"/auth/me\");\n\t}\n\n\t/** Usage stats for the current billing period (CU, requests, latency). */\n\tusage(): Promise<Success<UsageOp>> {\n\t\treturn this.http.request(\"GET\", \"/usage/stats\");\n\t}\n}\n","import type { InodraHttpClient } from \"../core/http.js\";\nimport type { Operation, Query, Success } from \"../core/openapi.js\";\n\ntype ProtocolsOp = Operation<\"/catalog/protocols\", \"get\">;\ntype EventsOp = Operation<\"/catalog/events\", \"get\">;\n\n/**\n * Curated protocol event catalog — the live counterpart of the generated\n * schemas in `@inodra/sui/events`. Use it to browse protocols/events and\n * pre-fill webhook or Warp subscriptions with canonical event types.\n */\nexport class CatalogNamespace {\n\tprivate readonly http: InodraHttpClient;\n\n\tconstructor(http: InodraHttpClient) {\n\t\tthis.http = http;\n\t}\n\n\tprotocols(query?: Query<ProtocolsOp>): Promise<Success<ProtocolsOp>> {\n\t\treturn this.http.request(\"GET\", \"/catalog/protocols\", { query });\n\t}\n\n\tevents(query?: Query<EventsOp>): Promise<Success<EventsOp>> {\n\t\treturn this.http.request(\"GET\", \"/catalog/events\", { query });\n\t}\n}\n","/**\n * Conditional-type helpers that derive request/response types from the\n * OpenAPI-generated `paths` (src/generated/api.ts) — namespaces never\n * hand-write API shapes.\n */\nimport type { paths } from \"../generated/api.js\";\n\nexport type Operation<\n\tP extends keyof paths,\n\tM extends keyof paths[P],\n> = NonNullable<paths[P][M]>;\n\ntype JsonContent<T> = T extends { content: { \"application/json\": infer C } }\n\t? C\n\t: never;\n\nexport type Success<O> = O extends { responses: infer R }\n\t? JsonContent<R[Extract<keyof R, 200 | 201>]>\n\t: never;\n\nexport type Body<O> = O extends { requestBody?: infer B }\n\t? JsonContent<NonNullable<B>>\n\t: never;\n\nexport type Query<O> = O extends { parameters: { query?: infer Q } }\n\t? NonNullable<Q>\n\t: never;\n\n/** The `{data, pagination}` envelope used by paginated list endpoints. */\nexport interface Page<T = unknown> {\n\tdata: readonly T[];\n\tpagination: { limit: number; cursor?: string; hasNext: boolean };\n}\n\n/**\n * Lazily walk every page of a cursor-paginated endpoint, yielding items.\n * Endpoints whose `data` is a union of array shapes (e.g. raw vs activity\n * transaction format) yield the union of their element types.\n *\n * ```ts\n * for await (const tx of inodra.data.accounts.iterateTransactions(addr)) { … }\n * ```\n */\nexport async function* paginate<\n\tP extends {\n\t\tdata: readonly unknown[];\n\t\tpagination: { cursor?: string; hasNext: boolean };\n\t},\n>(\n\tfetchPage: (cursor: string | undefined) => Promise<P>,\n): AsyncGenerator<P[\"data\"][number], void, undefined> {\n\tlet cursor: string | undefined;\n\tfor (;;) {\n\t\tconst page = await fetchPage(cursor);\n\t\tyield* page.data as readonly P[\"data\"][number][];\n\t\tif (!page.pagination.hasNext || !page.pagination.cursor) {\n\t\t\treturn;\n\t\t}\n\t\tcursor = page.pagination.cursor;\n\t}\n}\n","import type { InodraHttpClient } from \"../core/http.js\";\nimport {\n\ttype Body,\n\ttype Operation,\n\tpaginate,\n\ttype Query,\n\ttype Success,\n} from \"../core/openapi.js\";\n\ntype AccountOp = Operation<\"/accounts/{address}\", \"get\">;\ntype BalanceOp = Operation<\"/accounts/{address}/balance\", \"get\">;\ntype AccountObjectsOp = Operation<\"/accounts/{address}/objects\", \"get\">;\ntype AccountTxsOp = Operation<\"/accounts/{address}/transactions\", \"get\">;\ntype DelegationsOp = Operation<\"/accounts/{address}/delegations\", \"get\">;\ntype CoinOp = Operation<\"/coins/{coinType}\", \"get\">;\ntype CoinMetadataOp = Operation<\"/coins/type/{coinType}\", \"get\">;\ntype ObjectMetadataOp = Operation<\"/objects/metadata\", \"post\">;\ntype ObjectTxsOp = Operation<\"/objects/{objectId}/transactions\", \"get\">;\ntype PackageOp = Operation<\"/packages/{packageId}\", \"get\">;\ntype ChainInfoOp = Operation<\"/chain/info\", \"get\">;\ntype ChainStakingOp = Operation<\"/chain/staking\", \"get\">;\ntype ChainStatsOp = Operation<\"/chain/stats\", \"get\">;\ntype ValidatorsOp = Operation<\"/validators\", \"get\">;\ntype ValidatorsApyOp = Operation<\"/validators/apy\", \"get\">;\ntype ValidatorsCommissionOp = Operation<\"/validators/commission\", \"get\">;\ntype ValidatorOp = Operation<\"/validators/{validatorAddress}\", \"get\">;\ntype SuinsResolveOp = Operation<\"/suins/resolve/{name}\", \"get\">;\ntype SuinsReverseOp = Operation<\"/suins/reverse/{address}\", \"get\">;\ntype SuinsBatchOp = Operation<\"/suins/resolve/batch\", \"post\">;\ntype SuinsAvailabilityOp = Operation<\"/suins/availability/{name}\", \"get\">;\n\n/**\n * Indexer-backed data API: accounts, coins, objects, packages, chain,\n * validators, and SuiNS. Mainnet only (testnet projects get 403 on these).\n *\n * ```ts\n * const balance = await inodra.data.accounts.balance(\"0x...\");\n * for await (const tx of inodra.data.accounts.iterateTransactions(\"0x...\")) { … }\n * ```\n */\nexport class DataNamespace {\n\tprivate readonly http: InodraHttpClient;\n\n\tconstructor(http: InodraHttpClient) {\n\t\tthis.http = http;\n\t}\n\n\treadonly accounts = {\n\t\tget: (address: string): Promise<Success<AccountOp>> =>\n\t\t\tthis.http.request(\"GET\", `/accounts/${encodeURIComponent(address)}`),\n\t\tbalance: (address: string): Promise<Success<BalanceOp>> =>\n\t\t\tthis.http.request(\n\t\t\t\t\"GET\",\n\t\t\t\t`/accounts/${encodeURIComponent(address)}/balance`,\n\t\t\t),\n\t\tobjects: (\n\t\t\taddress: string,\n\t\t\tquery?: Query<AccountObjectsOp>,\n\t\t): Promise<Success<AccountObjectsOp>> =>\n\t\t\tthis.http.request(\n\t\t\t\t\"GET\",\n\t\t\t\t`/accounts/${encodeURIComponent(address)}/objects`,\n\t\t\t\t{ query },\n\t\t\t),\n\t\t/** Every owned object, walking all pages lazily. */\n\t\titerateObjects: (address: string, query?: Query<AccountObjectsOp>) =>\n\t\t\tpaginate((cursor) =>\n\t\t\t\tthis.accounts.objects(address, { ...query, cursor }),\n\t\t\t),\n\t\ttransactions: (\n\t\t\taddress: string,\n\t\t\tquery?: Query<AccountTxsOp>,\n\t\t): Promise<Success<AccountTxsOp>> =>\n\t\t\tthis.http.request(\n\t\t\t\t\"GET\",\n\t\t\t\t`/accounts/${encodeURIComponent(address)}/transactions`,\n\t\t\t\t{ query },\n\t\t\t),\n\t\t/** Every transaction, walking all pages lazily. */\n\t\titerateTransactions: (address: string, query?: Query<AccountTxsOp>) =>\n\t\t\tpaginate((cursor) =>\n\t\t\t\tthis.accounts.transactions(address, { ...query, cursor }),\n\t\t\t),\n\t\tdelegations: (address: string): Promise<Success<DelegationsOp>> =>\n\t\t\tthis.http.request(\n\t\t\t\t\"GET\",\n\t\t\t\t`/accounts/${encodeURIComponent(address)}/delegations`,\n\t\t\t),\n\t};\n\n\treadonly coins = {\n\t\t/** Coin denomination (supply, holders, decimals, …). */\n\t\tget: (coinType: string): Promise<Success<CoinOp>> =>\n\t\t\tthis.http.request(\"GET\", `/coins/${encodeURIComponent(coinType)}`),\n\t\t/** Display metadata: name, symbol, icon, description, links. */\n\t\tmetadata: (coinType: string): Promise<Success<CoinMetadataOp>> =>\n\t\t\tthis.http.request(\"GET\", `/coins/type/${encodeURIComponent(coinType)}`),\n\t};\n\n\treadonly objects = {\n\t\t/** Metadata (type, name, image, project) for one object id. */\n\t\tmetadata: (input: Body<ObjectMetadataOp>): Promise<Success<ObjectMetadataOp>> =>\n\t\t\tthis.http.request(\"POST\", \"/objects/metadata\", {\n\t\t\t\tbody: input,\n\t\t\t\tidempotent: true,\n\t\t\t}),\n\t\ttransactions: (\n\t\t\tobjectId: string,\n\t\t\tquery?: Query<ObjectTxsOp>,\n\t\t): Promise<Success<ObjectTxsOp>> =>\n\t\t\tthis.http.request(\n\t\t\t\t\"GET\",\n\t\t\t\t`/objects/${encodeURIComponent(objectId)}/transactions`,\n\t\t\t\t{ query },\n\t\t\t),\n\t\t/** Every transaction touching the object, walking all pages lazily. */\n\t\titerateTransactions: (objectId: string, query?: Query<ObjectTxsOp>) =>\n\t\t\tpaginate((cursor) =>\n\t\t\t\tthis.objects.transactions(objectId, { ...query, cursor }),\n\t\t\t),\n\t};\n\n\treadonly packages = {\n\t\tget: (packageId: string): Promise<Success<PackageOp>> =>\n\t\t\tthis.http.request(\"GET\", `/packages/${encodeURIComponent(packageId)}`),\n\t};\n\n\treadonly chain = {\n\t\tinfo: (): Promise<Success<ChainInfoOp>> =>\n\t\t\tthis.http.request(\"GET\", \"/chain/info\"),\n\t\tstaking: (): Promise<Success<ChainStakingOp>> =>\n\t\t\tthis.http.request(\"GET\", \"/chain/staking\"),\n\t\tstats: (): Promise<Success<ChainStatsOp>> =>\n\t\t\tthis.http.request(\"GET\", \"/chain/stats\"),\n\t};\n\n\treadonly validators = {\n\t\tlist: (query?: Query<ValidatorsOp>): Promise<Success<ValidatorsOp>> =>\n\t\t\tthis.http.request(\"GET\", \"/validators\", { query }),\n\t\tapy: (): Promise<Success<ValidatorsApyOp>> =>\n\t\t\tthis.http.request(\"GET\", \"/validators/apy\"),\n\t\tcommission: (): Promise<Success<ValidatorsCommissionOp>> =>\n\t\t\tthis.http.request(\"GET\", \"/validators/commission\"),\n\t\tget: (validatorAddress: string): Promise<Success<ValidatorOp>> =>\n\t\t\tthis.http.request(\n\t\t\t\t\"GET\",\n\t\t\t\t`/validators/${encodeURIComponent(validatorAddress)}`,\n\t\t\t),\n\t};\n\n\treadonly suins = {\n\t\t/** SuiNS name → address. */\n\t\tresolve: (name: string): Promise<Success<SuinsResolveOp>> =>\n\t\t\tthis.http.request(\"GET\", `/suins/resolve/${encodeURIComponent(name)}`),\n\t\t/** Address → primary SuiNS name. */\n\t\treverse: (address: string): Promise<Success<SuinsReverseOp>> =>\n\t\t\tthis.http.request(\n\t\t\t\t\"GET\",\n\t\t\t\t`/suins/reverse/${encodeURIComponent(address)}`,\n\t\t\t),\n\t\tresolveBatch: (input: Body<SuinsBatchOp>): Promise<Success<SuinsBatchOp>> =>\n\t\t\tthis.http.request(\"POST\", \"/suins/resolve/batch\", {\n\t\t\t\tbody: input,\n\t\t\t\tidempotent: true,\n\t\t\t}),\n\t\tavailability: (name: string): Promise<Success<SuinsAvailabilityOp>> =>\n\t\t\tthis.http.request(\n\t\t\t\t\"GET\",\n\t\t\t\t`/suins/availability/${encodeURIComponent(name)}`,\n\t\t\t),\n\t};\n}\n","import type { InodraAuth } from \"../core/auth.js\";\nimport type { InodraNetwork } from \"../core/network.js\";\nimport type { EventSchemaReflector } from \"../events/reflection.js\";\n\nexport interface EventsNamespaceContext {\n\tauth: InodraAuth;\n\tnetwork: InodraNetwork;\n\t/** GraphQL endpoint override (custom endpoints). */\n\tgraphqlUrl?: string;\n\tfetch?: typeof globalThis.fetch;\n}\n\n/**\n * Typed payloads for ARBITRARY Move events (beyond the curated catalog) via\n * on-chain struct reflection. Schemas are built once and cached per type.\n *\n * ```ts\n * const schema = await inodra.events.schemaFor(\"0xpkg::vault::Deposit<0x2::sui::SUI>\");\n * stream.on(\"message\", async (msg) => {\n * const payload = await inodra.events.parseEvent(msg, \"0xpkg::vault::Deposit\");\n * if (payload) console.log(payload.amount); // validated + normalized\n * });\n * ```\n *\n * For catalog events prefer the statically-typed helpers in\n * `@inodra/sui/events` (`parseCatalogEvent`) — reflection is for your own\n * or uncataloged protocols. The zod machinery loads on first use.\n */\nexport class EventsNamespace {\n\tprivate readonly ctx: EventsNamespaceContext;\n\tprivate reflectorPromise: Promise<EventSchemaReflector> | undefined;\n\n\tconstructor(ctx: EventsNamespaceContext) {\n\t\tthis.ctx = ctx;\n\t}\n\n\t/** The underlying reflector (shared cache across calls). */\n\treflector(): Promise<EventSchemaReflector> {\n\t\tthis.reflectorPromise ??= import(\"../events/reflection.js\").then(\n\t\t\t(module) =>\n\t\t\t\tnew module.EventSchemaReflector({\n\t\t\t\t\tauth: this.ctx.auth,\n\t\t\t\t\tnetwork: this.ctx.network,\n\t\t\t\t\turl: this.ctx.graphqlUrl,\n\t\t\t\t\tfetch: this.ctx.fetch,\n\t\t\t\t}),\n\t\t);\n\t\treturn this.reflectorPromise;\n\t}\n\n\t/**\n\t * Build (and cache) a loose, normalizing zod schema for any concrete\n\t * Move event type, by reflecting its struct layout on-chain. Generic\n\t * types are typed concretely from their instantiation.\n\t */\n\tasync schemaFor(type: string) {\n\t\treturn (await this.reflector()).schemaFor(type);\n\t}\n\n\t/**\n\t * Validate + normalize an event payload against the reflected schema.\n\t * Accepts a Warp stream message, a bare event payload, or a webhook\n\t * body. Returns undefined for other event types; throws on schema\n\t * mismatch. Pass a base type (no `<…>`) to match every instantiation —\n\t * each is reflected and typed concretely.\n\t */\n\tasync parseEvent(\n\t\tmessage: unknown,\n\t\ttype: string,\n\t): Promise<Record<string, unknown> | undefined> {\n\t\treturn (await this.reflector()).parseEvent(message, type);\n\t}\n}\n","import type { Emitter } from \"./emitter.js\";\nimport type { WarpEvent, WarpStreamEvents } from \"./types.js\";\n\ninterface WarpStreamLike extends Emitter<WarpStreamEvents> {\n\tclose(): void;\n}\n\nexport interface IterateStreamOptions {\n\t/**\n\t * Close the stream when iteration ends (loop break, return, or throw).\n\t * Defaults to true — an abandoned open stream keeps billing connection\n\t * time.\n\t */\n\tcloseOnReturn?: boolean;\n}\n\n/**\n * Consume a Warp stream as an async iterable of data events.\n *\n * Ends normally when the stream is closed by the client; throws when the\n * stream closes for any other reason (quota exceeded, reconnect budget\n * exhausted, terminal server error). Transient transport errors that the\n * stream retries internally do not interrupt iteration.\n *\n * ```ts\n * for await (const event of stream) {\n * console.log(event.type, event.data);\n * }\n * ```\n */\nexport async function* iterateStream(\n\tstream: WarpStreamLike,\n\toptions: IterateStreamOptions = {},\n): AsyncGenerator<WarpEvent, void, undefined> {\n\tconst queue: WarpEvent[] = [];\n\tlet notify: (() => void) | undefined;\n\tlet closed = false;\n\tlet failure: Error | undefined;\n\n\tconst unsubscribes = [\n\t\tstream.on(\"message\", (event) => {\n\t\t\tqueue.push(event);\n\t\t\tnotify?.();\n\t\t}),\n\t\tstream.on(\"close\", ({ reason }) => {\n\t\t\tclosed = true;\n\t\t\tif (reason !== \"client closed\") {\n\t\t\t\tfailure = new Error(`Warp stream closed: ${reason}`);\n\t\t\t}\n\t\t\tnotify?.();\n\t\t}),\n\t];\n\n\ttry {\n\t\tfor (;;) {\n\t\t\twhile (queue.length > 0) {\n\t\t\t\tyield queue.shift() as WarpEvent;\n\t\t\t}\n\t\t\tif (closed) {\n\t\t\t\tif (failure) {\n\t\t\t\t\tthrow failure;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tnotify = resolve;\n\t\t\t});\n\t\t\tnotify = undefined;\n\t\t}\n\t} finally {\n\t\tfor (const unsubscribe of unsubscribes) {\n\t\t\tunsubscribe();\n\t\t}\n\t\tif (options.closeOnReturn ?? true) {\n\t\t\tstream.close();\n\t\t}\n\t}\n}\n","import { authFromOptions, type ResolvedAuth } from \"../core/auth.js\";\nimport { SDK_HEADER_NAME, SDK_HEADER_VALUE } from \"../core/version.js\";\nimport { warpStreamUrl } from \"../core/network.js\";\nimport { Emitter } from \"./emitter.js\";\nimport { iterateStream } from \"./iterate.js\";\nimport { SseParser } from \"./sse-parser.js\";\nimport {\n\tbackoffDelayMs,\n\tCONTROL_EVENTS,\n\ttype WarpConnectedInfo,\n\ttype WarpEvent,\n\ttype WarpStreamEvents,\n\ttype WarpStreamOptions,\n} from \"./types.js\";\n\nexport interface WarpSseStreamOptions extends WarpStreamOptions {\n\t/** Custom fetch implementation. */\n\tfetch?: typeof globalThis.fetch;\n}\n\n/**\n * Server-Sent Events connection to a Warp stream.\n *\n * Delivery is at-least-once. On disconnect the client reconnects with the\n * `Last-Event-ID` header so no events are missed.\n *\n * The first connect is live by default: events flow from connect-time forward\n * and any backlog retained while disconnected is dropped. Pass\n * `mode: \"resume\"` (or `lastEventId`) to replay the retained backlog instead.\n *\n * ```ts\n * const stream = new WarpSseStream({ apiKey, subscriptionId });\n * stream.on(\"message\", (event) => console.log(event.type, event.data));\n * stream.connect();\n * ```\n */\nexport class WarpSseStream extends Emitter<WarpStreamEvents> {\n\tlastEventId: string | undefined;\n\n\tprivate readonly options: WarpSseStreamOptions;\n\tprivate readonly auth: ResolvedAuth;\n\tprivate readonly url: string;\n\tprivate readonly fetchImpl: typeof globalThis.fetch;\n\tprivate abort: AbortController | undefined;\n\tprivate reconnectAttempt = 0;\n\tprivate serverRetryMs: number | undefined;\n\tprivate closed = false;\n\tprivate closeEmitted = false;\n\n\tconstructor(options: WarpSseStreamOptions) {\n\t\tsuper();\n\t\tthis.options = options;\n\t\tthis.auth = authFromOptions(options, \"WarpSseStream\");\n\t\tconst base =\n\t\t\toptions.url ??\n\t\t\twarpStreamUrl(options.network ?? \"mainnet\", options.subscriptionId);\n\t\tif (options.mode !== undefined) {\n\t\t\tconst url = new URL(base);\n\t\t\turl.searchParams.set(\"mode\", options.mode);\n\t\t\tthis.url = url.toString();\n\t\t} else {\n\t\t\tthis.url = base;\n\t\t}\n\t\tthis.fetchImpl = options.fetch ?? globalThis.fetch;\n\t\tthis.lastEventId = options.lastEventId;\n\t}\n\n\tconnect(): void {\n\t\tif (this.abort) {\n\t\t\treturn;\n\t\t}\n\t\tthis.closed = false;\n\t\tthis.closeEmitted = false;\n\t\tthis.abort = new AbortController();\n\t\tvoid this.run(this.abort.signal);\n\t}\n\n\tclose(): void {\n\t\tconst wasActive = this.abort !== undefined;\n\t\tthis.closed = true;\n\t\tthis.abort?.abort();\n\t\tthis.abort = undefined;\n\t\tif (wasActive) {\n\t\t\tthis.emitClose(\"client closed\");\n\t\t}\n\t}\n\n\t/** Emit \"close\" exactly once per connection lifecycle. */\n\tprivate emitClose(reason: string): void {\n\t\tif (this.closeEmitted) {\n\t\t\treturn;\n\t\t}\n\t\tthis.closeEmitted = true;\n\t\tthis.emit(\"close\", { reason });\n\t}\n\n\t/** Iterate data events; ends when the stream closes (throws unless client-initiated). */\n\t[Symbol.asyncIterator](): AsyncGenerator<WarpEvent, void, undefined> {\n\t\treturn iterateStream(this);\n\t}\n\n\tprivate async run(signal: AbortSignal): Promise<void> {\n\t\tfor (;;) {\n\t\t\ttry {\n\t\t\t\tawait this.consume(signal);\n\t\t\t\tif (this.closed || signal.aborted) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Server ended the stream without a terminal event — reconnect.\n\t\t\t} catch (error) {\n\t\t\t\tif (this.closed || signal.aborted) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (error instanceof TerminalStreamError) {\n\t\t\t\t\tthis.emit(\"error\", error);\n\t\t\t\t\tthis.emitClose(error.message);\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.emit(\n\t\t\t\t\t\"error\",\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (!(this.options.reconnect ?? true)) {\n\t\t\t\tthis.emitClose(\"disconnected\");\n\t\t\t\tthis.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.reconnectAttempt += 1;\n\t\t\tif (this.reconnectAttempt > (this.options.maxReconnectAttempts ?? 10)) {\n\t\t\t\tthis.emitClose(\"max reconnect attempts exceeded\");\n\t\t\t\tthis.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delayMs = this.serverRetryMs ?? backoffDelayMs(this.reconnectAttempt);\n\t\t\tthis.emit(\"reconnecting\", { attempt: this.reconnectAttempt, delayMs });\n\t\t\tawait sleep(delayMs);\n\t\t\tif (this.closed || signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async consume(signal: AbortSignal): Promise<void> {\n\t\tconst { headers: authHeaders } = await this.auth.credentials();\n\t\tconst headers: Record<string, string> = {\n\t\t\taccept: \"text/event-stream\",\n\t\t\t...authHeaders,\n\t\t\t[SDK_HEADER_NAME]: SDK_HEADER_VALUE,\n\t\t};\n\t\tif (this.lastEventId !== undefined) {\n\t\t\theaders[\"Last-Event-ID\"] = this.lastEventId;\n\t\t}\n\n\t\tconst response = await this.fetchImpl(this.url, { headers, signal });\n\t\tif (!response.ok || !response.body) {\n\t\t\tconst retryable = response.status >= 500;\n\t\t\tconst message = `SSE connection failed with status ${response.status}`;\n\t\t\tif (retryable) {\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\t\t\tthrow new TerminalStreamError(message);\n\t\t}\n\n\t\tconst parser = new SseParser();\n\t\tconst decoder = new TextDecoder();\n\t\tconst reader = response.body.getReader();\n\n\t\tfor (;;) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const message of parser.feed(decoder.decode(value, { stream: true }))) {\n\t\t\t\tif (message.retryMs !== undefined) {\n\t\t\t\t\tthis.serverRetryMs = message.retryMs;\n\t\t\t\t}\n\t\t\t\tif (message.event === \"\" && message.data === \"\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis.dispatch(message.event, message.id, message.data);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate dispatch(event: string, id: string | undefined, raw: string): void {\n\t\tlet data: unknown = raw;\n\t\ttry {\n\t\t\tdata = JSON.parse(raw);\n\t\t} catch {\n\t\t\t// keep raw string for non-JSON payloads\n\t\t}\n\n\t\tif (id !== undefined) {\n\t\t\tthis.lastEventId = id;\n\t\t}\n\n\t\tswitch (event) {\n\t\t\tcase \"connected\":\n\t\t\t\t// Successful connection: reset backoff\n\t\t\t\tthis.reconnectAttempt = 0;\n\t\t\t\tthis.emit(\"connected\", data as WarpConnectedInfo);\n\t\t\t\treturn;\n\t\t\tcase \"quota_exceeded\":\n\t\t\t\tthis.emit(\"quota_exceeded\", data);\n\t\t\t\tthis.emitClose(\"quota_exceeded\");\n\t\t\t\tthis.close();\n\t\t\t\treturn;\n\t\t\tcase \"error\": {\n\t\t\t\tconst message =\n\t\t\t\t\ttypeof data === \"object\" && data !== null && \"error\" in data\n\t\t\t\t\t\t? String((data as { error: unknown }).error)\n\t\t\t\t\t\t: raw;\n\t\t\t\tthis.emit(\"error\", new Error(message));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tif (!CONTROL_EVENTS.has(event)) {\n\t\t\t\t\tthis.emit(\"message\", { type: event, id, data });\n\t\t\t\t}\n\t\t}\n\t}\n}\n\nclass TerminalStreamError extends Error {}\n\nfunction sleep(ms: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/** Minimal typed event emitter that works in every runtime (no node:events). */\nexport class Emitter<Events extends Record<string, unknown>> {\n\tprivate readonly handlers = new Map<keyof Events, Set<(payload: never) => void>>();\n\n\ton<K extends keyof Events>(\n\t\tevent: K,\n\t\thandler: (payload: Events[K]) => void,\n\t): () => void {\n\t\tlet set = this.handlers.get(event);\n\t\tif (!set) {\n\t\t\tset = new Set();\n\t\t\tthis.handlers.set(event, set);\n\t\t}\n\t\tset.add(handler as (payload: never) => void);\n\t\treturn () => set?.delete(handler as (payload: never) => void);\n\t}\n\n\toff<K extends keyof Events>(\n\t\tevent: K,\n\t\thandler: (payload: Events[K]) => void,\n\t): void {\n\t\tthis.handlers.get(event)?.delete(handler as (payload: never) => void);\n\t}\n\n\t/** Returns false if any handler threw. */\n\temit<K extends keyof Events>(event: K, payload: Events[K]): boolean {\n\t\tlet ok = true;\n\t\tfor (const handler of this.handlers.get(event) ?? []) {\n\t\t\ttry {\n\t\t\t\t(handler as (payload: Events[K]) => void)(payload);\n\t\t\t} catch {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t}\n\t\treturn ok;\n\t}\n}\n","export interface SseMessage {\n\t/** SSE event name; defaults to \"message\" per the SSE spec. */\n\tevent: string;\n\tid?: string;\n\tdata: string;\n\tretryMs?: number;\n}\n\n/**\n * Incremental parser for a text/event-stream byte stream.\n * Feed it decoded chunks in any split; it yields complete messages.\n */\nexport class SseParser {\n\tprivate buffer = \"\";\n\tprivate eventName = \"\";\n\tprivate dataLines: string[] = [];\n\tprivate id: string | undefined;\n\tprivate retryMs: number | undefined;\n\n\tfeed(chunk: string): SseMessage[] {\n\t\tthis.buffer += chunk;\n\t\tconst messages: SseMessage[] = [];\n\n\t\tfor (;;) {\n\t\t\tconst newline = this.buffer.search(/\\r\\n|\\r|\\n/);\n\t\t\tif (newline === -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst line = this.buffer.slice(0, newline);\n\t\t\tconst sep = this.buffer.slice(newline, newline + 2);\n\t\t\tthis.buffer = this.buffer.slice(newline + (sep === \"\\r\\n\" ? 2 : 1));\n\n\t\t\tif (line === \"\") {\n\t\t\t\tconst message = this.flush();\n\t\t\t\tif (message) {\n\t\t\t\t\tmessages.push(message);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.parseLine(line);\n\t\t}\n\n\t\treturn messages;\n\t}\n\n\tprivate parseLine(line: string): void {\n\t\tif (line.startsWith(\":\")) {\n\t\t\treturn; // comment / keep-alive\n\t\t}\n\t\tconst colon = line.indexOf(\":\");\n\t\tconst field = colon === -1 ? line : line.slice(0, colon);\n\t\tlet value = colon === -1 ? \"\" : line.slice(colon + 1);\n\t\tif (value.startsWith(\" \")) {\n\t\t\tvalue = value.slice(1);\n\t\t}\n\n\t\tswitch (field) {\n\t\t\tcase \"event\":\n\t\t\t\tthis.eventName = value;\n\t\t\t\tbreak;\n\t\t\tcase \"data\":\n\t\t\t\tthis.dataLines.push(value);\n\t\t\t\tbreak;\n\t\t\tcase \"id\":\n\t\t\t\t// Per spec, ids containing NUL are ignored\n\t\t\t\tif (!value.includes(\"\\0\")) {\n\t\t\t\t\tthis.id = value;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"retry\": {\n\t\t\t\tconst ms = Number(value);\n\t\t\t\tif (Number.isInteger(ms) && ms >= 0) {\n\t\t\t\t\tthis.retryMs = ms;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tbreak; // unknown fields are ignored per spec\n\t\t}\n\t}\n\n\tprivate flush(): SseMessage | undefined {\n\t\tif (this.dataLines.length === 0 && this.eventName === \"\") {\n\t\t\t// Nothing dispatched, but retry/id still apply\n\t\t\tconst retryOnly = this.retryMs;\n\t\t\tthis.retryMs = undefined;\n\t\t\treturn retryOnly === undefined\n\t\t\t\t? undefined\n\t\t\t\t: { event: \"\", data: \"\", retryMs: retryOnly };\n\t\t}\n\t\tconst message: SseMessage = {\n\t\t\tevent: this.eventName || \"message\",\n\t\t\tdata: this.dataLines.join(\"\\n\"),\n\t\t\tid: this.id,\n\t\t\tretryMs: this.retryMs,\n\t\t};\n\t\tthis.eventName = \"\";\n\t\tthis.dataLines = [];\n\t\tthis.retryMs = undefined;\n\t\treturn message;\n\t}\n}\n","import type { InodraAuth } from \"../core/auth.js\";\nimport type { InodraNetwork } from \"../core/network.js\";\n\n/** A data event delivered on a Warp stream. */\nexport interface WarpEvent {\n\t/** Server-side event type (e.g. \"event\", \"address_activity\"). */\n\ttype: string;\n\t/** Event ID — pass as lastEventId / Last-Event-ID to resume after disconnect. */\n\tid?: string;\n\t/** Parsed JSON payload. */\n\tdata: unknown;\n}\n\n/** Sent by the server when the stream is established. */\nexport interface WarpConnectedInfo {\n\tconnId?: string;\n\tsubscriptionId?: string;\n\tsubscriptionType?: string;\n\tprotocol?: string;\n\t[key: string]: unknown;\n}\n\nexport interface WarpStreamEvents extends Record<string, unknown> {\n\tconnected: WarpConnectedInfo;\n\tmessage: WarpEvent;\n\tquota_exceeded: unknown;\n\terror: Error;\n\treconnecting: { attempt: number; delayMs: number };\n\tclose: { reason: string };\n}\n\nexport interface WarpStreamOptions {\n\t/** Credentials: an API key string, {apiKey}, {sessionToken}, or a provider. */\n\tauth?: InodraAuth;\n\t/** Shorthand for `auth: { apiKey }`. */\n\tapiKey?: string;\n\t/** The Warp stream/subscription ID (from the management API). */\n\tsubscriptionId: string;\n\t/** Defaults to \"mainnet\". Ignored when url is set. */\n\tnetwork?: InodraNetwork;\n\t/** Full connection URL override (e.g. local development). */\n\turl?: string;\n\t/**\n\t * Connect mode. \"live\" (default): events from connect-time forward, any\n\t * buffered backlog is dropped. \"resume\": replay the buffered backlog (up\n\t * to 30 min / 2,000 events). The server treats mode as per-connection,\n\t * but SDK reconnects always pass the last delivered event ID, which\n\t * implies resume — so transient drops never lose events in either mode.\n\t */\n\tmode?: \"live\" | \"resume\";\n\t/** Resume after the given event ID on first connect (implies resume mode). */\n\tlastEventId?: string;\n\t/** Reconnect automatically on transport failures. Defaults to true. */\n\treconnect?: boolean;\n\t/** Defaults to 10. */\n\tmaxReconnectAttempts?: number;\n}\n\n/** Control events the server emits; everything else is a data event. */\nexport const CONTROL_EVENTS = new Set([\"connected\", \"error\", \"quota_exceeded\"]);\n\nexport function backoffDelayMs(attempt: number): number {\n\treturn Math.min(1000 * 2 ** (attempt - 1), 30_000) + Math.random() * 250;\n}\n","import { authFromOptions, type ResolvedAuth } from \"../core/auth.js\";\nimport { warpWebSocketUrl } from \"../core/network.js\";\nimport { Emitter } from \"./emitter.js\";\nimport { iterateStream } from \"./iterate.js\";\nimport {\n\tbackoffDelayMs,\n\ttype WarpConnectedInfo,\n\ttype WarpEvent,\n\ttype WarpStreamEvents,\n\ttype WarpStreamOptions,\n} from \"./types.js\";\n\ntype WebSocketLike = {\n\tsend(data: string): void;\n\tclose(code?: number, reason?: string): void;\n\taddEventListener(type: string, listener: (event: never) => void): void;\n};\n\ntype WebSocketConstructor = new (url: string) => WebSocketLike;\n\nexport interface WarpWebSocketStreamOptions extends WarpStreamOptions {\n\t/**\n\t * Acknowledge each event automatically after all message handlers ran\n\t * without throwing. Defaults to true. Set false and call ack() yourself\n\t * for full control over the exactly-once window.\n\t */\n\tautoAck?: boolean;\n\t/** Custom WebSocket constructor (defaults to globalThis.WebSocket). */\n\twebSocket?: WebSocketConstructor;\n}\n\n/**\n * WebSocket connection to a Warp stream with exactly-once delivery.\n *\n * Each event must be acknowledged; unacknowledged events are redelivered\n * after reconnect. By default the client acks automatically once all\n * \"message\" handlers complete without throwing.\n *\n * The first connect is live by default: events flow from connect-time forward\n * and any backlog retained while disconnected is dropped. Pass\n * `mode: \"resume\"` (or `lastEventId`) to replay the retained backlog instead.\n *\n * ```ts\n * const stream = new WarpWebSocketStream({ apiKey, subscriptionId });\n * stream.on(\"message\", (event) => process(event)); // acked automatically\n * stream.connect();\n * ```\n */\nexport class WarpWebSocketStream extends Emitter<WarpStreamEvents> {\n\tlastEventId: string | undefined;\n\n\tprivate readonly options: WarpWebSocketStreamOptions;\n\tprivate readonly auth: ResolvedAuth;\n\tprivate readonly wsCtor: WebSocketConstructor;\n\tprivate ws: WebSocketLike | undefined;\n\tprivate reconnectAttempt = 0;\n\tprivate closed = false;\n\n\tconstructor(options: WarpWebSocketStreamOptions) {\n\t\tsuper();\n\t\tthis.options = options;\n\t\tthis.auth = authFromOptions(options, \"WarpWebSocketStream\");\n\t\tconst ctor =\n\t\t\toptions.webSocket ??\n\t\t\t(globalThis.WebSocket as unknown as WebSocketConstructor | undefined);\n\t\tif (!ctor) {\n\t\t\tthrow new Error(\n\t\t\t\t\"No WebSocket implementation available — pass one via the webSocket option\",\n\t\t\t);\n\t\t}\n\t\tthis.wsCtor = ctor;\n\t\tthis.lastEventId = options.lastEventId;\n\t}\n\n\tconnect(): void {\n\t\tif (this.ws) {\n\t\t\treturn;\n\t\t}\n\t\tthis.closed = false;\n\t\tthis.open();\n\t}\n\n\tclose(): void {\n\t\tthis.closed = true;\n\t\tthis.ws?.close(1000, \"client closed\");\n\t\tthis.ws = undefined;\n\t}\n\n\t/** Acknowledge an event by ID (only needed with autoAck: false). */\n\tack(id: string): void {\n\t\tthis.ws?.send(JSON.stringify({ type: \"ack\", id }));\n\t}\n\n\t/** Iterate data events; ends when the stream closes (throws unless client-initiated). */\n\t[Symbol.asyncIterator](): AsyncGenerator<WarpEvent, void, undefined> {\n\t\treturn iterateStream(this);\n\t}\n\n\tprivate buildUrl(authParams: Record<string, string>): string {\n\t\tconst base =\n\t\t\tthis.options.url ??\n\t\t\twarpWebSocketUrl(\n\t\t\t\tthis.options.network ?? \"mainnet\",\n\t\t\t\tthis.options.subscriptionId,\n\t\t\t);\n\t\tconst url = new URL(base);\n\t\t// Browsers cannot set headers on WebSocket upgrades, so credentials\n\t\t// travel as query parameters (and the SDK header is omitted).\n\t\tfor (const [key, value] of Object.entries(authParams)) {\n\t\t\turl.searchParams.set(key, value);\n\t\t}\n\t\tif (this.options.mode !== undefined) {\n\t\t\turl.searchParams.set(\"mode\", this.options.mode);\n\t\t}\n\t\tif (this.lastEventId !== undefined) {\n\t\t\turl.searchParams.set(\"lastEventId\", this.lastEventId);\n\t\t}\n\t\treturn url.toString();\n\t}\n\n\tprivate open(): void {\n\t\t// Static credentials (API keys) open synchronously — dynamic providers\n\t\t// resolve first, then open unless the stream was closed meanwhile.\n\t\tconst credentials = this.auth.staticCredentials();\n\t\tif (credentials) {\n\t\t\tthis.openWith(credentials.queryParams);\n\t\t\treturn;\n\t\t}\n\t\tvoid this.auth.credentials().then(\n\t\t\t(resolved) => {\n\t\t\t\tif (!this.closed && !this.ws) {\n\t\t\t\t\tthis.openWith(resolved.queryParams);\n\t\t\t\t}\n\t\t\t},\n\t\t\t(error: unknown) => {\n\t\t\t\tthis.failTerminally(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"credential resolution failed\",\n\t\t\t\t);\n\t\t\t},\n\t\t);\n\t}\n\n\tprivate failTerminally(error: Error, reason: string): void {\n\t\tthis.closed = true;\n\t\tthis.emit(\"error\", error);\n\t\tthis.emit(\"close\", { reason });\n\t}\n\n\tprivate openWith(authParams: Record<string, string> | undefined): void {\n\t\tif (!authParams) {\n\t\t\tthis.failTerminally(\n\t\t\t\tnew Error(\n\t\t\t\t\t\"These credentials cannot authenticate a WebSocket (no header support on upgrades) — use an API key or the SSE stream\",\n\t\t\t\t),\n\t\t\t\t\"unsupported credentials\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconst ws = new this.wsCtor(this.buildUrl(authParams));\n\t\tthis.ws = ws;\n\n\t\tws.addEventListener(\"message\", (event: MessageEvent) => {\n\t\t\tthis.handleMessage(event);\n\t\t});\n\t\tws.addEventListener(\"error\", () => {\n\t\t\tthis.emit(\"error\", new Error(\"WebSocket transport error\"));\n\t\t});\n\t\tws.addEventListener(\"close\", (event: CloseEvent) => {\n\t\t\tif (this.ws !== ws) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.ws = undefined;\n\t\t\tthis.handleClose(event.code, event.reason);\n\t\t});\n\t}\n\n\tprivate handleMessage(event: MessageEvent): void {\n\t\tlet parsed: { event?: unknown; id?: unknown; data?: unknown };\n\t\ttry {\n\t\t\tparsed = JSON.parse(\n\t\t\t\ttypeof event.data === \"string\" ? event.data : String(event.data),\n\t\t\t);\n\t\t} catch {\n\t\t\tthis.emit(\"error\", new Error(\"Received malformed WebSocket message\"));\n\t\t\treturn;\n\t\t}\n\n\t\tconst type = typeof parsed.event === \"string\" ? parsed.event : \"message\";\n\t\tconst id = typeof parsed.id === \"string\" ? parsed.id : undefined;\n\n\t\tswitch (type) {\n\t\t\tcase \"connected\":\n\t\t\t\tthis.reconnectAttempt = 0;\n\t\t\t\tthis.emit(\"connected\", parsed.data as WarpConnectedInfo);\n\t\t\t\treturn;\n\t\t\tcase \"quota_exceeded\":\n\t\t\t\tthis.emit(\"quota_exceeded\", parsed.data);\n\t\t\t\treturn; // server closes with 1008; handleClose makes it terminal\n\t\t\tcase \"error\": {\n\t\t\t\tconst message =\n\t\t\t\t\ttypeof parsed.data === \"object\" &&\n\t\t\t\t\tparsed.data !== null &&\n\t\t\t\t\t\"error\" in parsed.data\n\t\t\t\t\t\t? String((parsed.data as { error: unknown }).error)\n\t\t\t\t\t\t: \"Server error\";\n\t\t\t\tthis.emit(\"error\", new Error(message));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tif (id !== undefined) {\n\t\t\t\t\tthis.lastEventId = id;\n\t\t\t\t}\n\t\t\t\tconst handlersSucceeded = this.emit(\"message\", {\n\t\t\t\t\ttype,\n\t\t\t\t\tid,\n\t\t\t\t\tdata: parsed.data,\n\t\t\t\t});\n\t\t\t\tif ((this.options.autoAck ?? true) && id !== undefined) {\n\t\t\t\t\tif (handlersSucceeded) {\n\t\t\t\t\t\tthis.ack(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.emit(\n\t\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t`Message handler threw; event ${id} not acked and will be redelivered`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleClose(code: number, reason: string): void {\n\t\tif (this.closed) {\n\t\t\tthis.emit(\"close\", { reason: \"client closed\" });\n\t\t\treturn;\n\t\t}\n\t\t// 1008 is a policy close (QUOTA_EXCEEDED, STREAM_ALREADY_CONNECTED) —\n\t\t// reconnecting would fail again immediately.\n\t\tif (code === 1008) {\n\t\t\tthis.emit(\"close\", { reason: reason || \"policy violation\" });\n\t\t\tthis.closed = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (!(this.options.reconnect ?? true)) {\n\t\t\tthis.emit(\"close\", { reason: reason || \"disconnected\" });\n\t\t\tthis.closed = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.reconnectAttempt += 1;\n\t\tif (this.reconnectAttempt > (this.options.maxReconnectAttempts ?? 10)) {\n\t\t\tthis.emit(\"close\", { reason: \"max reconnect attempts exceeded\" });\n\t\t\tthis.closed = true;\n\t\t\treturn;\n\t\t}\n\t\tconst delayMs = backoffDelayMs(this.reconnectAttempt);\n\t\tthis.emit(\"reconnecting\", { attempt: this.reconnectAttempt, delayMs });\n\t\tsetTimeout(() => {\n\t\t\tif (!this.closed && !this.ws) {\n\t\t\t\tthis.open();\n\t\t\t}\n\t\t}, delayMs);\n\t}\n}\n","import type { InodraAuth } from \"../core/auth.js\";\nimport type { InodraHttpClient } from \"../core/http.js\";\nimport type { InodraNetwork } from \"../core/network.js\";\nimport type {\n\tCatalogDeployment,\n\tWarpEventPayload,\n} from \"../events/runtime.js\";\nimport type {\n\tCatalogEventId,\n\tCatalogEventPayload,\n} from \"../generated/events.js\";\nimport { iterateStream } from \"../warp/iterate.js\";\nimport type {\n\tCreateAddressStreamInput,\n\tCreateCoinStreamInput,\n\tCreateEventStreamInput,\n\tCreateObjectStreamInput,\n\tCreateStreamResponse,\n\tDeleteStreamResponse,\n\tListStreamsResponse,\n\tUpdateStreamInput,\n\tUpdateStreamResponse,\n\tWarpStream,\n} from \"../manage/index.js\";\nimport { WarpSseStream, type WarpSseStreamOptions } from \"../warp/sse.js\";\nimport {\n\tWarpWebSocketStream,\n\ttype WarpWebSocketStreamOptions,\n} from \"../warp/ws.js\";\n\nexport interface WarpNamespaceContext {\n\thttp: InodraHttpClient;\n\tauth: InodraAuth;\n\tnetwork: InodraNetwork;\n\t/** REST base URL override (custom endpoints) — used for SSE stream URLs. */\n\trestBaseUrl?: string;\n\t/** WS base URL override (custom endpoints). */\n\twarpWsBaseUrl?: string;\n\t/** Custom fetch implementation, threaded into SSE streams. */\n\tfetch?: typeof globalThis.fetch;\n}\n\nexport type ConnectOptions = Omit<\n\tWarpSseStreamOptions,\n\t\"auth\" | \"apiKey\" | \"subscriptionId\" | \"network\"\n>;\nexport type ConnectWebSocketOptions = Omit<\n\tWarpWebSocketStreamOptions,\n\t\"auth\" | \"apiKey\" | \"subscriptionId\" | \"network\"\n>;\n\nexport interface StreamCatalogEventOptions\n\textends ConnectOptions,\n\t\tConnectWebSocketOptions {\n\t/** Optional sender address filter for the subscription. */\n\tsender?: CreateEventStreamInput[\"sender\"];\n\t/** Optional field-level filters for the subscription (max 10). */\n\teventFieldFilters?: CreateEventStreamInput[\"eventFieldFilters\"];\n\t/** Delivery transport. Defaults to \"sse\". */\n\ttransport?: \"sse\" | \"ws\";\n\t/**\n\t * Delete the subscription when the stream closes or iteration ends.\n\t * Defaults to false — pass true for one-off consumers so they don't\n\t * accumulate subscriptions against the plan limit. Note: if the process\n\t * dies before close(), the subscription survives; give long-lived\n\t * consumers a managed subscription instead.\n\t */\n\tephemeral?: boolean;\n}\n\n/** A typed catalog event with its delivery envelope. */\nexport interface CatalogEventMessage<Id extends CatalogEventId> {\n\t/** Validated, normalized Move event payload. */\n\tpayload: CatalogEventPayload<Id>;\n\t/** Delivery envelope: txDigest, checkpoint, timestamp, sender, raw type. */\n\tenvelope: WarpEventPayload;\n}\n\nexport interface CatalogEventStream<Id extends CatalogEventId>\n\textends AsyncIterable<CatalogEventMessage<Id>> {\n\t/** The created Warp subscription (delete it when done unless ephemeral). */\n\tsubscription: CreateStreamResponse[\"data\"];\n\t/** The underlying transport stream (for on(\"error\"), lastEventId, …). */\n\tstream: WarpSseStream | WarpWebSocketStream;\n\t/** Close the stream; deletes the subscription when ephemeral. */\n\tclose(): Promise<void>;\n}\n\n/**\n * Warp streams: subscription CRUD plus live SSE/WebSocket delivery.\n *\n * ```ts\n * const sub = await inodra.warp.createEventStream({ eventType });\n * const stream = inodra.warp.connect(sub.id);\n * stream.on(\"message\", (event) => console.log(event.data));\n * ```\n */\nexport class WarpNamespace {\n\tprivate readonly ctx: WarpNamespaceContext;\n\n\tconstructor(ctx: WarpNamespaceContext) {\n\t\tthis.ctx = ctx;\n\t}\n\n\tcreateEventStream(input: CreateEventStreamInput): Promise<CreateStreamResponse> {\n\t\treturn this.ctx.http.request(\"POST\", \"/warp/events\", { body: input });\n\t}\n\n\tcreateAddressStream(\n\t\tinput: CreateAddressStreamInput,\n\t): Promise<CreateStreamResponse> {\n\t\treturn this.ctx.http.request(\"POST\", \"/warp/addresses\", { body: input });\n\t}\n\n\tcreateCoinStream(input: CreateCoinStreamInput): Promise<CreateStreamResponse> {\n\t\treturn this.ctx.http.request(\"POST\", \"/warp/coins\", { body: input });\n\t}\n\n\tcreateObjectStream(\n\t\tinput: CreateObjectStreamInput,\n\t): Promise<CreateStreamResponse> {\n\t\treturn this.ctx.http.request(\"POST\", \"/warp/objects\", { body: input });\n\t}\n\n\tlist(): Promise<ListStreamsResponse> {\n\t\treturn this.ctx.http.request(\"GET\", \"/warp\");\n\t}\n\n\tget(id: string): Promise<WarpStream> {\n\t\treturn this.ctx.http.request(\"GET\", `/warp/${encodeURIComponent(id)}`);\n\t}\n\n\tupdate(id: string, input: UpdateStreamInput): Promise<UpdateStreamResponse> {\n\t\treturn this.ctx.http.request(\"PUT\", `/warp/${encodeURIComponent(id)}`, {\n\t\t\tbody: input,\n\t\t});\n\t}\n\n\tdelete(id: string): Promise<DeleteStreamResponse> {\n\t\treturn this.ctx.http.request(\"DELETE\", `/warp/${encodeURIComponent(id)}`);\n\t}\n\n\t/**\n\t * Open an SSE connection to a Warp subscription and start it.\n\t * At-least-once delivery; reconnects resume from the last event ID.\n\t */\n\tconnect(subscriptionId: string, options: ConnectOptions = {}): WarpSseStream {\n\t\tconst stream = new WarpSseStream({\n\t\t\t...options,\n\t\t\tauth: this.ctx.auth,\n\t\t\tsubscriptionId,\n\t\t\tnetwork: this.ctx.network,\n\t\t\turl: options.url ?? this.sseUrl(subscriptionId),\n\t\t\tfetch: options.fetch ?? this.ctx.fetch,\n\t\t});\n\t\tstream.connect();\n\t\treturn stream;\n\t}\n\n\t/**\n\t * Open a WebSocket connection to a Warp subscription and start it.\n\t * Exactly-once delivery via acks (automatic by default).\n\t */\n\tconnectWebSocket(\n\t\tsubscriptionId: string,\n\t\toptions: ConnectWebSocketOptions = {},\n\t): WarpWebSocketStream {\n\t\tconst stream = new WarpWebSocketStream({\n\t\t\t...options,\n\t\t\tauth: this.ctx.auth,\n\t\t\tsubscriptionId,\n\t\t\tnetwork: this.ctx.network,\n\t\t\turl: options.url ?? this.wsUrl(subscriptionId),\n\t\t});\n\t\tstream.connect();\n\t\treturn stream;\n\t}\n\n\t/**\n\t * One call from catalog id to typed live events: resolves the event's\n\t * canonical type for this network, creates the subscription, connects,\n\t * and yields validated payloads.\n\t *\n\t * ```ts\n\t * const swaps = await inodra.warp.streamCatalogEvent(\"cetus.swap\", {\n\t * ephemeral: true,\n\t * });\n\t * for await (const { payload, envelope } of swaps) {\n\t * console.log(envelope.txDigest, payload.amount_in);\n\t * }\n\t * ```\n\t */\n\tasync streamCatalogEvent<Id extends CatalogEventId>(\n\t\tid: Id,\n\t\toptions: StreamCatalogEventOptions = {},\n\t): Promise<CatalogEventStream<Id>> {\n\t\tconst events = await import(\"../events/index.js\");\n\t\tconst event = events.catalogEvents[id];\n\t\tif (!event) {\n\t\t\tthrow new Error(`Unknown catalog event id: ${String(id)}`);\n\t\t}\n\t\tconst deployments: readonly CatalogDeployment[] = event.deployments;\n\t\tconst deployment =\n\t\t\tdeployments.find(\n\t\t\t\t(d) => d.network === this.ctx.network && d.primary,\n\t\t\t) ?? deployments.find((d) => d.network === this.ctx.network);\n\t\tif (!deployment) {\n\t\t\tthrow new Error(\n\t\t\t\t`Catalog event ${String(id)} has no verified deployment on ${this.ctx.network}`,\n\t\t\t);\n\t\t}\n\n\t\tconst { sender, eventFieldFilters, transport, ephemeral, ...connectOptions } =\n\t\t\toptions;\n\t\tconst created = await this.createEventStream({\n\t\t\teventType: deployment.eventType,\n\t\t\tsender,\n\t\t\teventFieldFilters,\n\t\t});\n\t\tconst subscription = created.data;\n\n\t\tlet stream: WarpSseStream | WarpWebSocketStream;\n\t\ttry {\n\t\t\tstream =\n\t\t\t\ttransport === \"ws\"\n\t\t\t\t\t? this.connectWebSocket(subscription.id, connectOptions)\n\t\t\t\t\t: this.connect(subscription.id, connectOptions);\n\t\t} catch (error) {\n\t\t\tif (ephemeral) {\n\t\t\t\tawait this.delete(subscription.id).catch(() => {});\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet cleaned = false;\n\t\tconst close = async (): Promise<void> => {\n\t\t\tstream.close();\n\t\t\tif (ephemeral && !cleaned) {\n\t\t\t\tcleaned = true;\n\t\t\t\tawait this.delete(subscription.id);\n\t\t\t}\n\t\t};\n\n\t\tconst network = this.ctx.network;\n\t\treturn {\n\t\t\tsubscription,\n\t\t\tstream,\n\t\t\tclose,\n\t\t\tasync *[Symbol.asyncIterator]() {\n\t\t\t\ttry {\n\t\t\t\t\tfor await (const raw of iterateStream(stream, {\n\t\t\t\t\t\tcloseOnReturn: false,\n\t\t\t\t\t})) {\n\t\t\t\t\t\tconst payload = events.parseCatalogEvent(raw, id, { network });\n\t\t\t\t\t\tif (payload === undefined) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst envelope = events.warpEventPayloadSchema.parse(raw.data);\n\t\t\t\t\t\tyield { payload, envelope };\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tawait close();\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate sseUrl(subscriptionId: string): string | undefined {\n\t\tif (!this.ctx.restBaseUrl) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn `${this.ctx.restBaseUrl}/warp/${encodeURIComponent(subscriptionId)}/stream`;\n\t}\n\n\tprivate wsUrl(subscriptionId: string): string | undefined {\n\t\tif (!this.ctx.warpWsBaseUrl) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn `${this.ctx.warpWsBaseUrl}/warp/${encodeURIComponent(subscriptionId)}/ws`;\n\t}\n}\n","/**\n * Verification for Inodra webhook signatures.\n *\n * Inodra signs webhook deliveries with HMAC-SHA256 when the webhook has a\n * secret configured. The signature arrives in the `X-Inodra-Signature`\n * header as `t=<unix-seconds>,v1=<hex-hmac>` where the HMAC is computed\n * over `<timestamp>.<raw-body>`.\n */\n\nexport interface VerifyWebhookSignatureOptions {\n\t/** Raw request body, exactly as received (before any JSON parsing). */\n\tpayload: string;\n\t/** Value of the X-Inodra-Signature header. */\n\tsignature: string;\n\t/** The webhook's secret. */\n\tsecret: string;\n\t/** Max allowed age of the signature. Defaults to 300 seconds. */\n\ttoleranceSeconds?: number;\n\t/** Current unix time in seconds (for testing). */\n\tnow?: number;\n}\n\n/**\n * Verify a webhook delivery. Returns false for malformed, mismatched, or\n * expired signatures — never throws on bad input.\n *\n * ```ts\n * const valid = await verifyWebhookSignature({\n * payload: rawBody,\n * signature: req.headers[\"x-inodra-signature\"],\n * secret: process.env.INODRA_WEBHOOK_SECRET,\n * });\n * ```\n */\nexport async function verifyWebhookSignature(\n\toptions: VerifyWebhookSignatureOptions,\n): Promise<boolean> {\n\tconst parsed = parseSignatureHeader(options.signature);\n\tif (!parsed) {\n\t\treturn false;\n\t}\n\n\tconst now = options.now ?? Math.floor(Date.now() / 1000);\n\tconst tolerance = options.toleranceSeconds ?? 300;\n\tif (Math.abs(now - parsed.timestamp) > tolerance) {\n\t\treturn false;\n\t}\n\n\tconst expected = await hmacSha256Hex(\n\t\toptions.secret,\n\t\t`${parsed.timestamp}.${options.payload}`,\n\t);\n\treturn parsed.signatures.some((candidate) =>\n\t\ttimingSafeEqualHex(candidate, expected),\n\t);\n}\n\nfunction parseSignatureHeader(\n\theader: string,\n): { timestamp: number; signatures: string[] } | undefined {\n\tif (typeof header !== \"string\" || header.length === 0) {\n\t\treturn undefined;\n\t}\n\tlet timestamp: number | undefined;\n\tconst signatures: string[] = [];\n\n\tfor (const part of header.split(\",\")) {\n\t\tconst eq = part.indexOf(\"=\");\n\t\tif (eq === -1) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst key = part.slice(0, eq).trim();\n\t\tconst value = part.slice(eq + 1).trim();\n\t\tif (key === \"t\") {\n\t\t\tconst ts = Number(value);\n\t\t\tif (Number.isInteger(ts)) {\n\t\t\t\ttimestamp = ts;\n\t\t\t}\n\t\t} else if (key === \"v1\" && /^[0-9a-f]+$/i.test(value)) {\n\t\t\tsignatures.push(value.toLowerCase());\n\t\t}\n\t}\n\n\tif (timestamp === undefined || signatures.length === 0) {\n\t\treturn undefined;\n\t}\n\treturn { timestamp, signatures };\n}\n\nasync function hmacSha256Hex(secret: string, message: string): Promise<string> {\n\tconst encoder = new TextEncoder();\n\tconst key = await crypto.subtle.importKey(\n\t\t\"raw\",\n\t\tencoder.encode(secret),\n\t\t{ name: \"HMAC\", hash: \"SHA-256\" },\n\t\tfalse,\n\t\t[\"sign\"],\n\t);\n\tconst signature = await crypto.subtle.sign(\n\t\t\"HMAC\",\n\t\tkey,\n\t\tencoder.encode(message),\n\t);\n\treturn Array.from(new Uint8Array(signature), (byte) =>\n\t\tbyte.toString(16).padStart(2, \"0\"),\n\t).join(\"\");\n}\n\nfunction timingSafeEqualHex(a: string, b: string): boolean {\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\tlet diff = 0;\n\tfor (let i = 0; i < a.length; i++) {\n\t\tdiff |= a.charCodeAt(i) ^ b.charCodeAt(i);\n\t}\n\treturn diff === 0;\n}\n","import { InodraWebhookSignatureError } from \"../core/errors.js\";\nimport type { InodraHttpClient } from \"../core/http.js\";\nimport type { WebhookEventBody } from \"../events/runtime.js\";\nimport type {\n\tCreateAddressWebhookInput,\n\tCreateCoinWebhookInput,\n\tCreateEventWebhookInput,\n\tCreateObjectWebhookInput,\n\tCreateWebhookResponse,\n\tDeleteWebhookResponse,\n\tListWebhooksResponse,\n\tUpdateWebhookInput,\n\tUpdateWebhookResponse,\n\tWebhook,\n} from \"../manage/index.js\";\nimport {\n\tverifyWebhookSignature,\n\ttype VerifyWebhookSignatureOptions,\n} from \"../webhooks/index.js\";\n\n/**\n * Webhooks: subscription CRUD plus delivery signature verification.\n *\n * ```ts\n * const hook = await inodra.webhooks.createEvent({ eventType, url });\n * // in your receiver:\n * const valid = await inodra.webhooks.verifySignature({ payload, signature, secret });\n * ```\n */\nexport class WebhooksNamespace {\n\tprivate readonly http: InodraHttpClient;\n\n\tconstructor(http: InodraHttpClient) {\n\t\tthis.http = http;\n\t}\n\n\tcreateEvent(input: CreateEventWebhookInput): Promise<CreateWebhookResponse> {\n\t\treturn this.http.request(\"POST\", \"/webhooks/events\", { body: input });\n\t}\n\n\tcreateAddress(\n\t\tinput: CreateAddressWebhookInput,\n\t): Promise<CreateWebhookResponse> {\n\t\treturn this.http.request(\"POST\", \"/webhooks/addresses\", { body: input });\n\t}\n\n\tcreateCoin(input: CreateCoinWebhookInput): Promise<CreateWebhookResponse> {\n\t\treturn this.http.request(\"POST\", \"/webhooks/coins\", { body: input });\n\t}\n\n\tcreateObject(input: CreateObjectWebhookInput): Promise<CreateWebhookResponse> {\n\t\treturn this.http.request(\"POST\", \"/webhooks/objects\", { body: input });\n\t}\n\n\tlist(): Promise<ListWebhooksResponse> {\n\t\treturn this.http.request(\"GET\", \"/webhooks\");\n\t}\n\n\tget(id: string): Promise<Webhook> {\n\t\treturn this.http.request(\"GET\", `/webhooks/${encodeURIComponent(id)}`);\n\t}\n\n\tupdate(id: string, input: UpdateWebhookInput): Promise<UpdateWebhookResponse> {\n\t\treturn this.http.request(\"PUT\", `/webhooks/${encodeURIComponent(id)}`, {\n\t\t\tbody: input,\n\t\t});\n\t}\n\n\tdelete(id: string): Promise<DeleteWebhookResponse> {\n\t\treturn this.http.request(\"DELETE\", `/webhooks/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Verify an incoming webhook delivery's X-Inodra-Signature header. */\n\tverifySignature(options: VerifyWebhookSignatureOptions): Promise<boolean> {\n\t\treturn verifyWebhookSignature(options);\n\t}\n\n\t/**\n\t * Verify and parse an incoming event-webhook delivery in one step\n\t * (Stripe's constructEvent pattern). Throws InodraWebhookSignatureError\n\t * on a bad or expired signature, and a zod error if the body doesn't\n\t * look like an Inodra delivery.\n\t *\n\t * Pair with `matchCatalogEvent`/`parseCatalogEvent` from\n\t * `@inodra/sui/events` to narrow the payload to a catalog event type.\n\t *\n\t * ```ts\n\t * const body = await inodra.webhooks.constructEvent({\n\t * payload: rawBody, // exact raw string — do not JSON.parse first\n\t * signature: req.headers[\"x-inodra-signature\"],\n\t * secret: process.env.INODRA_WEBHOOK_SECRET,\n\t * });\n\t * const swap = parseCatalogEvent(body, \"cetus.swap\");\n\t * ```\n\t */\n\tasync constructEvent(\n\t\toptions: VerifyWebhookSignatureOptions,\n\t): Promise<WebhookEventBody> {\n\t\tconst valid = await verifyWebhookSignature(options);\n\t\tif (!valid) {\n\t\t\tthrow new InodraWebhookSignatureError();\n\t\t}\n\t\tconst { webhookEventBodySchema } = await import(\"../events/runtime.js\");\n\t\treturn webhookEventBodySchema.parse(JSON.parse(options.payload));\n\t}\n}\n","import {\n\tInodraHttpClient,\n\ttype InodraHttpClientOptions,\n} from \"../core/http.js\";\nimport type { Body, Operation, Success } from \"../core/openapi.js\";\n\n// Webhooks\nexport type CreateEventWebhookInput = Body<Operation<\"/webhooks/events\", \"post\">>;\nexport type CreateAddressWebhookInput = Body<\n\tOperation<\"/webhooks/addresses\", \"post\">\n>;\nexport type CreateCoinWebhookInput = Body<Operation<\"/webhooks/coins\", \"post\">>;\nexport type CreateObjectWebhookInput = Body<\n\tOperation<\"/webhooks/objects\", \"post\">\n>;\nexport type CreateWebhookResponse = Success<Operation<\"/webhooks/events\", \"post\">>;\nexport type ListWebhooksResponse = Success<Operation<\"/webhooks\", \"get\">>;\nexport type Webhook = Success<Operation<\"/webhooks/{id}\", \"get\">>;\nexport type UpdateWebhookInput = Body<Operation<\"/webhooks/{id}\", \"put\">>;\nexport type UpdateWebhookResponse = Success<Operation<\"/webhooks/{id}\", \"put\">>;\nexport type DeleteWebhookResponse = Success<Operation<\"/webhooks/{id}\", \"delete\">>;\n\n// Warp streams\nexport type CreateEventStreamInput = Body<Operation<\"/warp/events\", \"post\">>;\nexport type CreateAddressStreamInput = Body<Operation<\"/warp/addresses\", \"post\">>;\nexport type CreateCoinStreamInput = Body<Operation<\"/warp/coins\", \"post\">>;\nexport type CreateObjectStreamInput = Body<Operation<\"/warp/objects\", \"post\">>;\nexport type CreateStreamResponse = Success<Operation<\"/warp/events\", \"post\">>;\nexport type ListStreamsResponse = Success<Operation<\"/warp\", \"get\">>;\nexport type WarpStream = Success<Operation<\"/warp/{id}\", \"get\">>;\nexport type UpdateStreamInput = Body<Operation<\"/warp/{id}\", \"put\">>;\nexport type UpdateStreamResponse = Success<Operation<\"/warp/{id}\", \"put\">>;\nexport type DeleteStreamResponse = Success<Operation<\"/warp/{id}\", \"delete\">>;\n\nexport type InodraManagementClientOptions = InodraHttpClientOptions;\n\n/**\n * CRUD client for Inodra webhooks and Warp stream subscriptions.\n *\n * ```ts\n * const inodra = new InodraManagementClient({ apiKey });\n * const stream = await inodra.warp.createEventStream({\n * eventType: \"0xpkg::module::Event\",\n * });\n * ```\n */\nexport class InodraManagementClient {\n\treadonly http: InodraHttpClient;\n\n\tconstructor(options: InodraManagementClientOptions) {\n\t\tthis.http = new InodraHttpClient(options);\n\t}\n\n\treadonly webhooks = {\n\t\tcreateEvent: (input: CreateEventWebhookInput) =>\n\t\t\tthis.http.request<CreateWebhookResponse>(\"POST\", \"/webhooks/events\", {\n\t\t\t\tbody: input,\n\t\t\t}),\n\t\tcreateAddress: (input: CreateAddressWebhookInput) =>\n\t\t\tthis.http.request<CreateWebhookResponse>(\"POST\", \"/webhooks/addresses\", {\n\t\t\t\tbody: input,\n\t\t\t}),\n\t\tcreateCoin: (input: CreateCoinWebhookInput) =>\n\t\t\tthis.http.request<CreateWebhookResponse>(\"POST\", \"/webhooks/coins\", {\n\t\t\t\tbody: input,\n\t\t\t}),\n\t\tcreateObject: (input: CreateObjectWebhookInput) =>\n\t\t\tthis.http.request<CreateWebhookResponse>(\"POST\", \"/webhooks/objects\", {\n\t\t\t\tbody: input,\n\t\t\t}),\n\t\tlist: () => this.http.request<ListWebhooksResponse>(\"GET\", \"/webhooks\"),\n\t\tget: (id: string) =>\n\t\t\tthis.http.request<Webhook>(\"GET\", `/webhooks/${encodeURIComponent(id)}`),\n\t\tupdate: (id: string, input: UpdateWebhookInput) =>\n\t\t\tthis.http.request<UpdateWebhookResponse>(\n\t\t\t\t\"PUT\",\n\t\t\t\t`/webhooks/${encodeURIComponent(id)}`,\n\t\t\t\t{ body: input },\n\t\t\t),\n\t\tdelete: (id: string) =>\n\t\t\tthis.http.request<DeleteWebhookResponse>(\n\t\t\t\t\"DELETE\",\n\t\t\t\t`/webhooks/${encodeURIComponent(id)}`,\n\t\t\t),\n\t};\n\n\treadonly warp = {\n\t\tcreateEventStream: (input: CreateEventStreamInput) =>\n\t\t\tthis.http.request<CreateStreamResponse>(\"POST\", \"/warp/events\", {\n\t\t\t\tbody: input,\n\t\t\t}),\n\t\tcreateAddressStream: (input: CreateAddressStreamInput) =>\n\t\t\tthis.http.request<CreateStreamResponse>(\"POST\", \"/warp/addresses\", {\n\t\t\t\tbody: input,\n\t\t\t}),\n\t\tcreateCoinStream: (input: CreateCoinStreamInput) =>\n\t\t\tthis.http.request<CreateStreamResponse>(\"POST\", \"/warp/coins\", {\n\t\t\t\tbody: input,\n\t\t\t}),\n\t\tcreateObjectStream: (input: CreateObjectStreamInput) =>\n\t\t\tthis.http.request<CreateStreamResponse>(\"POST\", \"/warp/objects\", {\n\t\t\t\tbody: input,\n\t\t\t}),\n\t\tlist: () => this.http.request<ListStreamsResponse>(\"GET\", \"/warp\"),\n\t\tget: (id: string) =>\n\t\t\tthis.http.request<WarpStream>(\"GET\", `/warp/${encodeURIComponent(id)}`),\n\t\tupdate: (id: string, input: UpdateStreamInput) =>\n\t\t\tthis.http.request<UpdateStreamResponse>(\n\t\t\t\t\"PUT\",\n\t\t\t\t`/warp/${encodeURIComponent(id)}`,\n\t\t\t\t{ body: input },\n\t\t\t),\n\t\tdelete: (id: string) =>\n\t\t\tthis.http.request<DeleteStreamResponse>(\n\t\t\t\t\"DELETE\",\n\t\t\t\t`/warp/${encodeURIComponent(id)}`,\n\t\t\t),\n\t};\n}\n"],"mappings":"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","names":["module","import_zod","matches","import_zod","extractEventPayload","init_events","import_graphql","import_grpc","module","sleep","header","webhookEventBodySchema"]}
|