@secondlayer/subgraphs 8.1.0 → 8.1.1

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.
@@ -13,9 +13,9 @@
13
13
  "import { committedHeight } from \"@secondlayer/shared\";\nimport { type Database, getSourceDb } from \"@secondlayer/shared/db\";\nimport type { Kysely } from \"kysely\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport {\n\tVM_INDEX_EVENT_TYPES,\n\tisStreamsIndexEligible,\n\treferencedIndexEventTypes,\n} from \"./block-source.ts\";\n\n/**\n * Decoder-progress bound for consumers that read decoded Index rows.\n *\n * Each decoded event type is produced by an independent decoder\n * (`decode.<event_type>.v1`). Index `getTip` tracks\n * `decode.ft_transfer.v1` (or ingestion, on the Postgres tap). A forward-only\n * cursor that processes a height before the decoder feeding a referenced type\n * has committed it misses the match and never revisits.\n *\n * Bound the tip by the MIN committed height over ONLY the decoders the\n * consumer actually reads. A stalled unreferenced decoder (idle pox4) must\n * never gate progress. A referenced decoder with no usable checkpoint stalls\n * the consumer rather than falling through to the raw tip.\n */\n\n/** ADR checkpoint name. Subgraphs does not depend on `@secondlayer/indexer`. */\nexport function decoderNameForEventType(indexEventType: string): string {\n\treturn `decode.${indexEventType}.v1`;\n}\n\nexport function decoderNamesForIndexEventTypes(eventTypes: string[]): string[] {\n\treturn eventTypes\n\t\t.filter((t) => !VM_INDEX_EVENT_TYPES.has(t))\n\t\t.map(decoderNameForEventType);\n}\n\nexport function decoderNamesForSubgraph(\n\tsubgraph: SubgraphDefinition,\n): string[] {\n\treturn decoderNamesForIndexEventTypes(referencedIndexEventTypes(subgraph));\n}\n\n/**\n * True when catch-up/reindex will load decoded Index rows (the race).\n * Postgres tap reads raw `events` at ingest and must not wait on decode.\n * Mirrors `resolveBlockSource`'s streams-index branch.\n */\nexport function usesDecodedIndexPlane(subgraph: SubgraphDefinition): boolean {\n\treturn (\n\t\tprocess.env.SUBGRAPH_SOURCE === \"streams-index\" &&\n\t\tisStreamsIndexEligible(subgraph)\n\t);\n}\n\n// `committedHeight` moved to `@secondlayer/shared` (streams-cursor.ts) so the\n// Index `/public/status` route and this module share one implementation of\n// the committed-height rule. Re-exported here so existing importers of\n// `./decoder-bound.ts` are unaffected.\nexport { committedHeight };\n\nexport type DecoderBound =\n\t| { kind: \"unbounded\" }\n\t| { kind: \"stall\"; missing: string[] }\n\t| { kind: \"height\"; height: number };\n\n/**\n * True when this process reads Index over HTTP with no guarantee a local\n * decoder ever runs in the same Postgres (a hosted tenant's `webhook-service`,\n * or any instance pointed at `SUBGRAPH_INDEX_API_URL`). `decoderBoundTip` then\n * must not read local `decoder_checkpoints` — that table is empty there and\n * the evaluator stalls forever (otherwise chain webhooks never fire).\n */\nfunction usesRemoteDecoderStatus(): boolean {\n\treturn (\n\t\tprocess.env.SUBGRAPH_SOURCE === \"streams-index\" &&\n\t\tBoolean(process.env.SUBGRAPH_INDEX_API_URL)\n\t);\n}\n\n/** Inverse of `decoderNameForEventType` — decoder names in this codebase are\n * always exactly `decode.<type>.v1`, so stripping the fixed prefix/suffix is\n * a lossless round trip. Needed because the wire's `decoded_heights` map\n * (packages/api/src/index/tip.ts) is keyed by event_type (the Index API's\n * own public vocabulary), not by decoder name. */\nfunction eventTypeForDecoderName(decoderName: string): string {\n\treturn decoderName.replace(/^decode\\./, \"\").replace(/\\.v1$/, \"\");\n}\n\n/**\n * Remote-mode variant of the floor below, scoped to `decoderNames` — same\n * missing/floor semantics as local mode, sourced from `decodedHeights` (the\n * SAME tip envelope `source.getTip()` already fetched; see\n * `IndexHttpClient.getDecodedHeights()`) instead of a local DB read. No\n * network call of its own — this is pure/synchronous.\n *\n * `decodedHeights` absent entirely (an older server that doesn't send the\n * field, or called before any `getTip()`) falls back to `unbounded`: the raw\n * tip IS already the conservative cross-decoder floor (`IndexTip.block_height`\n * — see packages/api/src/index/tip.ts), so trusting it outright is the same\n * as bounding by it explicitly, just without the redundant `Math.min`.\n *\n * A referenced decoder missing from the map, or present with `null` (no\n * checkpoint yet), stalls — same fail-closed rule local mode already applies.\n * An unreferenced decoder stalling (e.g. an idle `print`) never appears in\n * `decoderNames` and so can never gate this.\n */\nfunction remoteDecoderBoundTip(\n\tdecoderNames: string[],\n\tdecodedHeights: Record<string, number | null> | undefined,\n): DecoderBound {\n\tif (!decodedHeights) return { kind: \"unbounded\" };\n\tconst missing: string[] = [];\n\tconst heights: number[] = [];\n\tfor (const decoderName of decoderNames) {\n\t\tconst height = decodedHeights[eventTypeForDecoderName(decoderName)];\n\t\tif (height === undefined || height === null) missing.push(decoderName);\n\t\telse heights.push(height);\n\t}\n\tif (missing.length > 0) return { kind: \"stall\", missing };\n\treturn { kind: \"height\", height: Math.min(...heights) };\n}\n\n/**\n * Data-availability floor for `decoderNames`. On an instance that reads Index\n * over HTTP (`SUBGRAPH_SOURCE=streams-index` + `SUBGRAPH_INDEX_API_URL`),\n * bounds by the referenced decoders' OWN committed heights from\n * `opts.remoteDecodedHeights` (the tip envelope the block source's `getTip()`\n * already fetched — no second request). A stalled UNREFERENCED decoder (e.g.\n * an idle `print`) must never gate progress — this only ever looks at\n * `decoderNames`, so it can't. Falls back to `unbounded` (trust the raw tip,\n * itself the conservative cross-decoder floor) when the caller has no\n * decoded-heights map to hand (an older server, or before any `getTip()`).\n *\n * Otherwise (local mode) reads SOURCE-plane `decoder_checkpoints` directly\n * (same rationale as trait resolution: the consumer handle is often the\n * TARGET, where those rows are empty).\n */\nexport async function decoderBoundTip(\n\tdecoderNames: string[],\n\topts?: {\n\t\tsourceDb?: Kysely<Database>;\n\t\t/** Remote mode only — see `remoteDecoderBoundTip`. */\n\t\tremoteDecodedHeights?: Record<string, number | null>;\n\t},\n): Promise<DecoderBound> {\n\tif (decoderNames.length === 0) return { kind: \"unbounded\" };\n\tif (usesRemoteDecoderStatus()) {\n\t\treturn remoteDecoderBoundTip(decoderNames, opts?.remoteDecodedHeights);\n\t}\n\tconst sourceDb = opts?.sourceDb ?? getSourceDb();\n\tconst rows = await sourceDb\n\t\t.selectFrom(\"decoder_checkpoints\")\n\t\t.select([\"decoder_name\", \"last_cursor\"])\n\t\t.where(\"decoder_name\", \"in\", decoderNames)\n\t\t.execute();\n\tconst byName = new Map(rows.map((r) => [r.decoder_name, r.last_cursor]));\n\tconst missing: string[] = [];\n\tconst heights: number[] = [];\n\tfor (const name of decoderNames) {\n\t\tconst height = committedHeight(byName.get(name));\n\t\tif (height === null) missing.push(name);\n\t\telse heights.push(height);\n\t}\n\tif (missing.length > 0) return { kind: \"stall\", missing };\n\treturn { kind: \"height\", height: Math.min(...heights) };\n}\n\nexport type BoundSourceTip =\n\t| { ok: true; tip: number; floor: number | null }\n\t| { ok: false; missing: string[] };\n\n/** Combine a raw block-source tip with the decoder floor. */\nexport async function boundSourceTip(\n\trawTip: number,\n\tdecoderNames: string[],\n\topts?: {\n\t\tsourceDb?: Kysely<Database>;\n\t\tremoteDecodedHeights?: Record<string, number | null>;\n\t},\n): Promise<BoundSourceTip> {\n\tconst bound = await decoderBoundTip(decoderNames, opts);\n\tif (bound.kind === \"stall\") return { ok: false, missing: bound.missing };\n\tif (bound.kind === \"unbounded\") {\n\t\treturn { ok: true, tip: rawTip, floor: null };\n\t}\n\treturn {\n\t\tok: true,\n\t\ttip: Math.min(rawTip, bound.height),\n\t\tfloor: bound.height,\n\t};\n}\n",
14
14
  "import { cvToValue, deserializeCV } from \"@secondlayer/stacks/clarity\";\n\n/**\n * Decode a hex-encoded Clarity value to a JS object.\n * Returns original value on failure.\n */\nexport function decodeClarityValue(hex: string): unknown {\n\ttry {\n\t\tconst cleanHex = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n\t\tconst cv = deserializeCV(cleanHex);\n\t\treturn cvToValue(cv);\n\t} catch {\n\t\treturn hex;\n\t}\n}\n\n/**\n * Recursively decode all hex-encoded Clarity values in an object.\n * Any string starting with \"0x\" and longer than 10 chars is attempted.\n */\nexport function decodeEventData(data: unknown): unknown {\n\tif (typeof data === \"string\" && data.startsWith(\"0x\") && data.length > 10) {\n\t\treturn decodeClarityValue(data);\n\t}\n\n\tif (Array.isArray(data)) {\n\t\treturn data.map(decodeEventData);\n\t}\n\n\tif (typeof data === \"object\" && data !== null) {\n\t\tconst decoded: Record<string, unknown> = {};\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tdecoded[key] = decodeEventData(value);\n\t\t}\n\t\treturn decoded;\n\t}\n\n\treturn data;\n}\n\n/**\n * Decode function args array (hex-encoded Clarity values).\n */\nexport function decodeFunctionArgs(args: string[]): unknown[] {\n\treturn args.map(decodeClarityValue);\n}\n",
15
15
  "import type { SubgraphFilter } from \"../types.ts\";\nimport { decodeClarityValue } from \"./clarity.ts\";\n\nexport interface MatchedTx {\n\ttx: TxRecord;\n\tevents: EventRecord[];\n\t/** Source object key — used for handler dispatch */\n\tsourceName: string;\n}\n\n/** A transaction as a subgraph source matcher reads it. */\nexport type TxRecord = {\n\ttx_id: string;\n\ttype: string;\n\tsender: string;\n\tstatus: string;\n\t/** Position within the block — the runner sorts dispatch into chain order. */\n\ttx_index?: number;\n\tcontract_id?: string | null;\n\tfunction_name?: string | null;\n\tfunction_args?: unknown | null;\n\traw_result?: string | null;\n};\n\n/** An event as a subgraph source matcher reads it. */\nexport type EventRecord = {\n\tid: string;\n\ttx_id: string;\n\ttype: string;\n\t/** Classic `event_index`, or `ordinal` when `clock === \"vm\"`. */\n\tevent_index: number;\n\tdata: unknown;\n\t/** Set on opt-in `vm_events` rows. Two clocks never sort or dedupe together. */\n\tclock?: \"vm\";\n};\n\n// ── Wildcard matching (shared with v1) ──────────────────────────────\n\nconst patternCache = new Map<string, RegExp>();\n\n/** Match a value against one pattern, or ANY pattern in a set. */\nfunction matchAny(value: string, pattern: string | readonly string[]): boolean {\n\treturn Array.isArray(pattern)\n\t\t? pattern.some((p) => matchPattern(value, p))\n\t\t: matchPattern(value, pattern as string);\n}\n\nfunction matchPattern(value: string, pattern: string): boolean {\n\tif (!pattern.includes(\"*\")) return value === pattern;\n\tlet re = patternCache.get(pattern);\n\tif (!re) {\n\t\tconst regex = pattern\n\t\t\t.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\")\n\t\t\t.replace(/\\*/g, \".*\");\n\t\tre = new RegExp(`^${regex}$`);\n\t\tpatternCache.set(pattern, re);\n\t}\n\treturn re.test(value);\n}\n\n// Trait → set of conforming contract IDs, resolved per block by the caller\n// (block-processor) from the contract registry. Kept as injected data so this\n// module stays pure/sync/DB-less.\nexport type TraitContracts = Map<string, ReadonlySet<string>>;\nconst EMPTY_SET: ReadonlySet<string> = new Set();\n\n/**\n * True when a filter's optional `trait` admits this contract: no trait → always\n * allowed; trait set → the contract must be in the resolved conforming set.\n */\n/** Addresses discovered per source name (factory sets), resolved by the\n * caller as-of the block being processed. */\nexport type FactoryContracts = ReadonlyMap<string, ReadonlySet<string>>;\n\n/**\n * A factory-scoped source matches only contracts its factory has revealed.\n * Same shape as {@link traitAllows}: the set is injected, so this module\n * stays pure and sync.\n */\nfunction factoryAllows(\n\tfilter: { factory?: { from: string; field: string } },\n\tcontractId: string | undefined | null,\n\tfactoryContracts: FactoryContracts,\n): boolean {\n\tif (!filter.factory) return true;\n\tif (!contractId) return false;\n\treturn (factoryContracts.get(filter.factory.from) ?? EMPTY_SET).has(\n\t\tcontractId,\n\t);\n}\n\n/** Read a dotted path off a decoded payload (`\"data.pool\"`). */\nexport function readPath(payload: unknown, path: string): unknown {\n\tlet cur: unknown = payload;\n\tfor (const key of path.split(\".\")) {\n\t\tif (cur === null || typeof cur !== \"object\") return undefined;\n\t\tcur = (cur as Record<string, unknown>)[key];\n\t}\n\treturn cur;\n}\n\nfunction traitAllows(\n\tfilter: SubgraphFilter,\n\tcontractId: string | undefined | null,\n\ttraitContracts: TraitContracts,\n): boolean {\n\tconst trait = (filter as { trait?: string }).trait;\n\tif (!trait) return true;\n\tif (!contractId) return false;\n\treturn (traitContracts.get(trait) ?? EMPTY_SET).has(contractId);\n}\n\n/** Extract the contract id from an asset identifier (`<contract>::<token>`). */\nfunction assetContract(assetId: string | undefined): string | undefined {\n\treturn assetId?.split(\"::\")[0];\n}\n\n/**\n * Contract on a print payload. Legacy `smart_contract_event` rows use\n * `contract_identifier`; current `contract_event` rows use `contract_id`.\n * Matcher and runner must share this — a print that matches on `contract_id`\n * otherwise reaches the handler with `event.contractId === \"\"`.\n */\nexport function printContractId(\n\tdata: Record<string, unknown> | null | undefined,\n): string | undefined {\n\tif (!data) return undefined;\n\tconst id =\n\t\t(typeof data.contract_identifier === \"string\"\n\t\t\t? data.contract_identifier\n\t\t\t: undefined) ??\n\t\t(typeof data.contract_id === \"string\" ? data.contract_id : undefined);\n\treturn id || undefined;\n}\n\n// Decoded print tuple per event row. Every source and trigger in a block\n// reads the same row objects, so a print decodes at most once per block.\nconst decodedPrints = new WeakMap<\n\tEventRecord,\n\tRecord<string, unknown> | null\n>();\n\n/**\n * The print's decoded top-level tuple, from the canonical `raw_value` hex\n * (source-independent: the node and Index reconstruct both carry it). `null`\n * when the hex is missing, undecodable, or not a tuple.\n */\nfunction decodedPrintTuple(\n\tevent: EventRecord,\n\tdata: Record<string, unknown>,\n): Record<string, unknown> | null {\n\tif (decodedPrints.has(event)) return decodedPrints.get(event) ?? null;\n\tconst raw = data.raw_value;\n\tconst value =\n\t\ttypeof raw === \"string\" && raw.startsWith(\"0x\")\n\t\t\t? decodeClarityValue(raw)\n\t\t\t: null;\n\tconst tuple =\n\t\tvalue && typeof value === \"object\" && !Array.isArray(value)\n\t\t\t? (value as Record<string, unknown>)\n\t\t\t: null;\n\tdecodedPrints.set(event, tuple);\n\treturn tuple;\n}\n\n/**\n * Whether a decoded print field equals `expected` (or any of a set). The field\n * compares in its delivered JSON form: principals as `SP…`, (u)ints as decimal\n * strings, bools as `\"true\"`/`\"false\"`, buffers as `0x…`, `(some x)` as `x`.\n * Nested tuples, lists and `none` never match.\n */\nexport function printFieldEquals(\n\tdecoded: Record<string, unknown>,\n\tkey: string,\n\texpected: string | readonly string[],\n): boolean {\n\tconst value = decoded[key];\n\tlet actual: string;\n\tif (typeof value === \"string\") actual = value;\n\telse if (typeof value === \"bigint\" || typeof value === \"boolean\")\n\t\tactual = String(value);\n\telse return false;\n\treturn typeof expected === \"string\"\n\t\t? actual === expected\n\t\t: expected.includes(actual);\n}\n\n/** `topic` and `where` on a print source, matched against the decoded tuple. */\nfunction printFieldsAllow(\n\tfilter: {\n\t\ttopic?: string;\n\t\twhere?: Record<string, string | readonly string[]>;\n\t},\n\tevent: EventRecord,\n\tdata: Record<string, unknown>,\n): boolean {\n\tif (!filter.topic && !filter.where) return true;\n\tconst decoded = decodedPrintTuple(event, data);\n\tif (!decoded) return false;\n\tif (filter.topic && !printFieldEquals(decoded, \"topic\", filter.topic))\n\t\treturn false;\n\tfor (const [key, expected] of Object.entries(filter.where ?? {})) {\n\t\tif (!printFieldEquals(decoded, key, expected)) return false;\n\t}\n\treturn true;\n}\n\n// ── Per-filter-type matchers ────────────────────────────────────────\n\nfunction matchFilter(\n\tfilter: SubgraphFilter,\n\ttransactions: TxRecord[],\n\teventsByTx: Map<string, EventRecord[]>,\n\ttraitContracts: TraitContracts,\n\tfactoryContracts: FactoryContracts = new Map(),\n\tvmEventsByTx: Map<string, EventRecord[]> = new Map(),\n): { tx: TxRecord; events: EventRecord[] }[] {\n\tconst results: { tx: TxRecord; events: EventRecord[] }[] = [];\n\n\tswitch (filter.type) {\n\t\t// ── STX events ──\n\t\tcase \"stx_transfer\":\n\t\tcase \"stx_mint\":\n\t\tcase \"stx_burn\":\n\t\tcase \"stx_lock\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => e.type === eventType);\n\t\t\t\tif (matched.length === 0) continue;\n\n\t\t\t\t// Apply address filters\n\t\t\t\tconst filtered = matched.filter((e) => {\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"lockedAddress\" in filter && filter.lockedAddress) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!matchPattern(data.locked_address as string, filter.lockedAddress)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Amount filters\n\t\t\t\t\tif (\"minAmount\" in filter && filter.minAmount !== undefined) {\n\t\t\t\t\t\tconst amount = BigInt(\n\t\t\t\t\t\t\t(data.amount ?? data.locked_amount ?? \"0\") as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (amount < filter.minAmount) return false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t\"maxAmount\" in filter &&\n\t\t\t\t\t\t(filter as { maxAmount?: bigint }).maxAmount !== undefined\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst amount = BigInt((data.amount ?? \"0\") as string);\n\t\t\t\t\t\tif (amount > (filter as { maxAmount: bigint }).maxAmount)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (filtered.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: filtered });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── FT events ──\n\t\tcase \"ft_transfer\":\n\t\tcase \"ft_mint\":\n\t\tcase \"ft_burn\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== eventType) return false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\n\t\t\t\t\t// Asset identifier filter\n\t\t\t\t\tif (filter.assetIdentifier) {\n\t\t\t\t\t\tconst assetId = data.asset_identifier as string | undefined;\n\t\t\t\t\t\tif (!assetId || !matchPattern(assetId, filter.assetIdentifier))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Trait scope — the asset's contract must conform.\n\t\t\t\t\tif (\n\t\t\t\t\t\t!traitAllows(\n\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\tassetContract(data.asset_identifier as string | undefined),\n\t\t\t\t\t\t\ttraitContracts,\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t// Address filters\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Amount filter\n\t\t\t\t\tif (filter.minAmount !== undefined) {\n\t\t\t\t\t\tconst amount = BigInt((data.amount ?? \"0\") as string);\n\t\t\t\t\t\tif (amount < filter.minAmount) return false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── NFT events ──\n\t\tcase \"nft_transfer\":\n\t\tcase \"nft_mint\":\n\t\tcase \"nft_burn\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== eventType) return false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\n\t\t\t\t\tif (filter.assetIdentifier) {\n\t\t\t\t\t\tconst assetId = data.asset_identifier as string | undefined;\n\t\t\t\t\t\tif (!assetId || !matchPattern(assetId, filter.assetIdentifier))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t!traitAllows(\n\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\tassetContract(data.asset_identifier as string | undefined),\n\t\t\t\t\t\t\ttraitContracts,\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Contract call ──\n\t\tcase \"contract_call\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tif (tx.type !== \"contract_call\") continue;\n\n\t\t\t\t// Contract filter\n\t\t\t\tif (filter.contractId) {\n\t\t\t\t\tif (!tx.contract_id || !matchAny(tx.contract_id, filter.contractId))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Factory scope: only contracts this source's factory revealed.\n\t\t\t\tif (!factoryAllows(filter, tx.contract_id, factoryContracts)) continue;\n\t\t\t\t// Function filter\n\t\t\t\tif (filter.functionName) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!tx.function_name ||\n\t\t\t\t\t\t!matchPattern(tx.function_name, filter.functionName)\n\t\t\t\t\t)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Caller filter\n\t\t\t\tif (filter.caller) {\n\t\t\t\t\tif (!matchPattern(tx.sender, filter.caller)) continue;\n\t\t\t\t}\n\t\t\t\t// Trait scope — the called contract must conform.\n\t\t\t\tif (!traitAllows(filter, tx.contract_id, traitContracts)) continue;\n\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tresults.push({ tx, events: txEvents });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Contract deploy ──\n\t\tcase \"contract_deploy\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tif (tx.type !== \"smart_contract\") continue;\n\n\t\t\t\tif (filter.deployer) {\n\t\t\t\t\tif (!matchPattern(tx.sender, filter.deployer)) continue;\n\t\t\t\t}\n\t\t\t\tif (filter.contractName) {\n\t\t\t\t\tconst name = tx.contract_id?.split(\".\")[1] ?? \"\";\n\t\t\t\t\tif (!matchPattern(name, filter.contractName)) continue;\n\t\t\t\t}\n\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tresults.push({ tx, events: txEvents });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"nested_contract_call\":\n\t\tcase \"var_set\":\n\t\tcase \"map_set\":\n\t\tcase \"map_insert\":\n\t\tcase \"map_delete\": {\n\t\t\t// vm sources read the vm clock only. A classic tx-level source never\n\t\t\t// sees these rows, and a vm source never sees `events[]`.\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = vmEventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== filter.type) return false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\t\t\t\t\tconst contractId = printContractId(data);\n\t\t\t\t\tif (\"contractId\" in filter && filter.contractId) {\n\t\t\t\t\t\tif (!contractId || !matchAny(contractId, filter.contractId))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (!traitAllows(filter, contractId, traitContracts)) return false;\n\t\t\t\t\tif (!factoryAllows(filter, contractId, factoryContracts))\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tif (filter.type === \"nested_contract_call\") {\n\t\t\t\t\t\tif (filter.functionName) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttypeof data.function_name !== \"string\" ||\n\t\t\t\t\t\t\t\t!matchPattern(data.function_name, filter.functionName)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (filter.caller) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttypeof data.caller !== \"string\" ||\n\t\t\t\t\t\t\t\t!matchPattern(data.caller, filter.caller)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (filter.sender) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttypeof data.sender !== \"string\" ||\n\t\t\t\t\t\t\t\t!matchPattern(data.sender, filter.sender)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (filter.type === \"var_set\" && filter.varName) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof data.var_name !== \"string\" ||\n\t\t\t\t\t\t\t!matchPattern(data.var_name, filter.varName)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t(filter.type === \"map_set\" ||\n\t\t\t\t\t\t\tfilter.type === \"map_insert\" ||\n\t\t\t\t\t\t\tfilter.type === \"map_delete\") &&\n\t\t\t\t\t\tfilter.map\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof data.map_name !== \"string\" ||\n\t\t\t\t\t\t\t!matchPattern(data.map_name, filter.map)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\tif (matched.length > 0) results.push({ tx, events: matched });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Print event ──\n\t\tcase \"print_event\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== \"smart_contract_event\" && e.type !== \"contract_event\")\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\t\t\t\t\tif (data.topic !== \"print\") return false;\n\n\t\t\t\t\tconst contractId = printContractId(data);\n\t\t\t\t\tif (filter.contractId) {\n\t\t\t\t\t\tif (!contractId || !matchAny(contractId, filter.contractId))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (!traitAllows(filter, contractId, traitContracts)) return false;\n\t\t\t\t\tif (!factoryAllows(filter, contractId, factoryContracts))\n\t\t\t\t\t\treturn false;\n\t\t\t\t\treturn printFieldsAllow(filter, e, data);\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn results;\n}\n\n/**\n * Match named filters against a block's transactions and events.\n * Returns matches with sourceName = the object key from sources.\n */\nexport function matchSources(\n\tsources: Record<string, SubgraphFilter>,\n\ttransactions: TxRecord[],\n\tevents: EventRecord[],\n\ttraitContracts: TraitContracts = new Map(),\n\tfactoryContracts: FactoryContracts = new Map(),\n\t/** Opt-in `vm_events` rows (second clock). Only vm-typed sources read them. */\n\tvmEvents: EventRecord[] = [],\n): MatchedTx[] {\n\t// Index events by txId — one map per clock.\n\tconst eventsByTx = new Map<string, EventRecord[]>();\n\tfor (const event of events) {\n\t\tconst list = eventsByTx.get(event.tx_id) ?? [];\n\t\tlist.push(event);\n\t\teventsByTx.set(event.tx_id, list);\n\t}\n\tconst vmEventsByTx = new Map<string, EventRecord[]>();\n\tfor (const event of vmEvents) {\n\t\tconst list = vmEventsByTx.get(event.tx_id) ?? [];\n\t\tlist.push(event);\n\t\tvmEventsByTx.set(event.tx_id, list);\n\t}\n\n\tconst seen = new Set<string>();\n\tconst results: MatchedTx[] = [];\n\n\tfor (const [sourceName, filter] of Object.entries(sources)) {\n\t\tconst matches = matchFilter(\n\t\t\tfilter,\n\t\t\ttransactions,\n\t\t\teventsByTx,\n\t\t\ttraitContracts,\n\t\t\tfactoryContracts,\n\t\t\tvmEventsByTx,\n\t\t);\n\t\tfor (const match of matches) {\n\t\t\tconst dedupeKey = `${match.tx.tx_id}:${sourceName}`;\n\t\t\tif (!seen.has(dedupeKey)) {\n\t\t\t\tseen.add(dedupeKey);\n\t\t\t\tresults.push({ ...match, sourceName });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n}\n",
16
- "import type {\n\tChainApplyEnvelope,\n\tSbtcDepositEvent,\n\tSbtcWithdrawalEvent,\n\tSbtcWithdrawalSweptConfirmedEvent,\n} from \"@secondlayer/shared\";\nimport type {\n\tDatabase,\n\tInsertWebhookOutbox,\n\tSbtcEventTopic,\n\tWebhook,\n} from \"@secondlayer/shared/db\";\nimport type { ChainTrigger } from \"@secondlayer/shared/schemas/webhooks\";\nimport type { Kysely } from \"kysely\";\nimport type { SubgraphFilter } from \"../types.ts\";\nimport type { BlockData } from \"./batch-loader.ts\";\nimport { indexEventTypesForFilterTypes } from \"./block-source.ts\";\nimport {\n\ttype ChainDataReader,\n\ttype SbtcEventRow,\n\ttype SettlementScanRow,\n\tchainDataReader,\n\tdatabaseChainDataReader,\n} from \"./chain-data-reader.ts\";\nimport { decoderNamesForIndexEventTypes } from \"./decoder-bound.ts\";\nimport {\n\ttype MatchedTx,\n\ttype TraitContracts,\n\tmatchSources,\n} from \"./source-matcher.ts\";\n\n/** Trigger types that match a whole transaction (not an individual event). */\nconst TX_LEVEL_TRIGGER_TYPES = new Set([\"contract_call\", \"contract_deploy\"]);\n\n/**\n * `BlockData.block.timestamp` → the `webhook_outbox.block_time` the emitters\n * below stamp on a row. Unix seconds on every real block source\n * (`PostgresBlockSource` reads it off `blocks`; `PublicApiBlockSource`\n * reconstructs it from the Index API's `block_time`). Undefined/NaN/non-\n * positive (a test's minimal block fixture, or the 0-timestamp bulk-import\n * artifact `decode/health.ts` also guards against) means \"unknown\" — leave\n * `block_time` null rather than writing an Invalid Date or a 1970 sentinel.\n */\nexport function blockTimeOf(block: { timestamp: number }): Date | undefined {\n\treturn Number.isFinite(block.timestamp) && block.timestamp > 0\n\t\t? new Date(block.timestamp * 1000)\n\t\t: undefined;\n}\n\n/** Fired on a Bitcoin confirmation, async to Stacks blocks — handled by the\n * scan-based `emitSbtcSettlementOutbox`, NOT the per-block path. Listed in\n * SBTC_TRIGGER_TYPES so the per-block matcher skips it, but deliberately absent\n * from SBTC_TRIGGER_TO_TOPIC (it has no `sbtc_events` topic). */\nconst SETTLEMENT_TRIGGER_TYPE = \"sbtc_withdrawal_swept_confirmed\";\n\n/**\n * sBTC trigger types — matched via the `sbtc_events` table, NOT via\n * `decoded_events`. Excluded from the chain-event sources map so the\n * `matchSources` engine never sees them; `emitSbtcOutbox` handles them\n * with a dedicated query + match loop.\n */\nconst SBTC_TRIGGER_TYPES = new Set([\n\t\"sbtc_deposit\",\n\t\"sbtc_withdrawal_create\",\n\t\"sbtc_withdrawal_accept\",\n\t\"sbtc_withdrawal_reject\",\n\tSETTLEMENT_TRIGGER_TYPE,\n]);\n\nfunction isSbtcTriggerType(type: string): boolean {\n\treturn SBTC_TRIGGER_TYPES.has(type);\n}\n\nconst SBTC_TRIGGER_TO_TOPIC: Record<string, SbtcEventTopic> = {\n\tsbtc_deposit: \"completed-deposit\",\n\tsbtc_withdrawal_create: \"withdrawal-create\",\n\tsbtc_withdrawal_accept: \"withdrawal-accept\",\n\tsbtc_withdrawal_reject: \"withdrawal-reject\",\n};\n\n/**\n * Pure matching core for direct chain-level webhooks. A single evaluator\n * loop serves ALL chain webhooks: it reads canonical blocks off the public\n * Index/Streams clock (via `PublicApiBlockSource`), runs the same\n * `matchSources` engine the subgraph runtime uses, and routes matches back to\n * the originating webhook. Everything here is pure/sync (DB only for trait\n * resolution) so it's trivially testable.\n *\n * Source keys are `\"{webhookId}#{triggerIndex}\"` — `matchSources` echoes\n * the key as `MatchedTx.sourceName`, letting the emitter recover which\n * webhook (and which trigger) matched. `keyMeta` carries the readable\n * trigger type for the outbox `event_type` / payload.\n */\n\nexport interface TriggerKeyMeta {\n\twebhookId: string;\n\ttriggerIndex: number;\n\ttriggerType: ChainTrigger[\"type\"];\n}\n\nexport interface ChainSourcesMap {\n\tsources: Record<string, SubgraphFilter>;\n\tkeyMeta: Map<string, TriggerKeyMeta>;\n}\n\nfunction sourceKey(webhookId: string, triggerIndex: number): string {\n\treturn `${webhookId}#${triggerIndex}`;\n}\n\nfunction toAmount(v: string | number | undefined): bigint | undefined {\n\treturn v === undefined ? undefined : BigInt(v);\n}\n\n/**\n * Convert a stored `ChainTrigger` (JSON; amounts as string/number) to the\n * runtime `SubgraphFilter` the matcher expects (amounts as bigint). Field names\n * are identical across the two shapes, so this is a copy plus amount coercion.\n */\nexport function chainTriggerToFilter(trigger: ChainTrigger): SubgraphFilter {\n\tconst t = trigger as ChainTrigger & {\n\t\tminAmount?: string | number;\n\t\tmaxAmount?: string | number;\n\t};\n\t// Spread copies all set keys; amounts (string|number) are then overwritten\n\t// with bigint where present. An absent optional amount isn't in the spread,\n\t// so there's nothing to strip.\n\tconst filter = { ...trigger } as Record<string, unknown>;\n\tconst minAmount = toAmount(t.minAmount);\n\tconst maxAmount = toAmount(t.maxAmount);\n\tif (minAmount !== undefined) filter.minAmount = minAmount;\n\tif (maxAmount !== undefined) filter.maxAmount = maxAmount;\n\treturn filter as unknown as SubgraphFilter;\n}\n\nfunction triggersOf(sub: Webhook): ChainTrigger[] {\n\treturn (sub.triggers ?? []) as ChainTrigger[];\n}\n\n/** Build the `matchSources` input from every active chain webhook. */\nexport function buildSourcesMap(chainSubs: Webhook[]): ChainSourcesMap {\n\tconst sources: Record<string, SubgraphFilter> = {};\n\tconst keyMeta = new Map<string, TriggerKeyMeta>();\n\tfor (const sub of chainSubs) {\n\t\ttriggersOf(sub).forEach((trigger, triggerIndex) => {\n\t\t\t// sBTC triggers are handled by emitSbtcOutbox — skip them here so\n\t\t\t// matchSources never tries to find sbtc_events in decoded_events.\n\t\t\tif (isSbtcTriggerType(trigger.type)) return;\n\t\t\tconst key = sourceKey(sub.id, triggerIndex);\n\t\t\tsources[key] = chainTriggerToFilter(trigger);\n\t\t\tkeyMeta.set(key, {\n\t\t\t\twebhookId: sub.id,\n\t\t\t\ttriggerIndex,\n\t\t\t\ttriggerType: trigger.type,\n\t\t\t});\n\t\t});\n\t}\n\treturn { sources, keyMeta };\n}\n\n/** The Index event types the loader must fetch to satisfy all chain triggers. */\nexport function referencedEventTypes(chainSubs: Webhook[]): string[] {\n\tconst filterTypes = new Set<string>();\n\tfor (const sub of chainSubs) {\n\t\tfor (const trigger of triggersOf(sub)) {\n\t\t\t// sBTC events live in sbtc_events, not in the Index event stream.\n\t\t\tif (!isSbtcTriggerType(trigger.type)) filterTypes.add(trigger.type);\n\t\t}\n\t}\n\treturn indexEventTypesForFilterTypes([...filterTypes]);\n}\n\n/** Decoder checkpoint names feeding the event types these chain subs read. */\nexport function referencedDecoderNames(chainSubs: Webhook[]): string[] {\n\treturn decoderNamesForIndexEventTypes(referencedEventTypes(chainSubs));\n}\n\n/**\n * True when some active chain webhook has a tx-level trigger\n * (contract_call/contract_deploy) — the only trigger types whose match needs\n * a REAL transaction (`function_args`, `raw_result`, etc., read in\n * `emitChainOutbox`'s TX_LEVEL branch below). Every other trigger type matches\n * off decoded events, which the block source can synthesize a minimal tx for\n * from joined event context instead of fetching every transaction in the\n * range. Mirrors `needsTransactionData` in block-source.ts for subgraphs —\n * same rule, chain-webhook triggers instead of subgraph source filters.\n */\nexport function chainSubsNeedTransactions(chainSubs: Webhook[]): boolean {\n\treturn chainSubs.some((sub) =>\n\t\ttriggersOf(sub).some((trigger) => TX_LEVEL_TRIGGER_TYPES.has(trigger.type)),\n\t);\n}\n\n/** Distinct traits referenced across all chain triggers. */\nexport function referencedTraits(chainSubs: Webhook[]): string[] {\n\tconst traits = new Set<string>();\n\tfor (const sub of chainSubs) {\n\t\tfor (const trigger of triggersOf(sub)) {\n\t\t\tconst trait = (trigger as { trait?: string }).trait;\n\t\t\tif (trait) traits.add(trait);\n\t\t}\n\t}\n\treturn [...traits];\n}\n\n/**\n * `opts.reader` wins; an explicit `opts.sourceDb` (test seam) reads those\n * tables; otherwise the stack's own reader (`chainDataReader`): the source\n * plane, or the hosted Index API on a tenant with no local chain.\n */\nfunction readerFor(opts?: {\n\tsourceDb?: Kysely<Database>;\n\treader?: ChainDataReader;\n}): ChainDataReader {\n\tif (opts?.reader) return opts.reader;\n\tif (opts?.sourceDb) return databaseChainDataReader(opts.sourceDb);\n\treturn chainDataReader();\n}\n\n/**\n * Resolve each referenced trait to its conforming contract-id set as of\n * `asOfBlock`, from the contract registry (`CONTRACT_REGISTRY_ENABLED` populates\n * it). Empty map when no trigger is trait-scoped → no reads. Membership only\n * grows, so the evaluator resolves this once per batch, not per block.\n *\n * `contracts` is a SOURCE-plane table; the evaluator/replay run on the TARGET\n * handle (an empty same-named copy exists there post-split), so this never\n * reads `db` — see `ChainDataReader`.\n */\nexport async function buildTraitContracts(\n\tchainSubs: Webhook[],\n\tasOfBlock: number,\n\topts?: { sourceDb?: Kysely<Database>; reader?: ChainDataReader },\n): Promise<TraitContracts> {\n\tconst traits = referencedTraits(chainSubs);\n\tif (traits.length === 0) return new Map();\n\tconst reader = readerFor(opts);\n\tconst resolved: TraitContracts = new Map();\n\tfor (const trait of traits) {\n\t\tconst ids = await reader.traitContractIds(trait, asOfBlock);\n\t\tresolved.set(trait, new Set(ids));\n\t}\n\treturn resolved;\n}\n\n/** Run the matcher for one block. Thin wrapper for symmetry/testability. */\nexport function evaluateBlock(\n\tblock: BlockData,\n\tsources: Record<string, SubgraphFilter>,\n\ttraitContracts: TraitContracts,\n): MatchedTx[] {\n\treturn matchSources(\n\t\tsources,\n\t\tblock.txs,\n\t\tblock.events,\n\t\ttraitContracts,\n\t\tnew Map(),\n\t\tblock.vmEvents ?? [],\n\t);\n}\n\n// ── Outbox emission ─────────────────────────────────────────────────────────\n\n// Apply-envelope shape is single-sourced as `ChainApplyEnvelope` in\n// `@secondlayer/shared` (shared with the SDK consumer); reorg emits a matching\n// `ChainReorgRollbackEnvelope`, see `handleChainReorg`.\n\n/**\n * Stable dedup identity for a chain delivery — (webhook, tx, event,\n * block_hash). A tx-level match (contract_call/deploy) has no event, so\n * `eventIndex = -1`. `block_hash` is included so a tx that survives a reorg\n * (same tx_id, NEW canonical block) re-delivers an `apply` after its rollback,\n * instead of being suppressed forever; re-processing the SAME canonical block is\n * still idempotent (same hash → same key).\n */\nfunction chainDedupKey(\n\twebhookId: string,\n\ttxId: string,\n\teventIndex: number,\n\tblockHash: string,\n\treplayId?: string,\n\tclock: DeliveryClock = \"classic\",\n): string {\n\t// vm rows are keyed by ordinal — a second clock. Namespace them so\n\t// a print at event_index N and a map_set at ordinal N in the same\n\t// tx are two deliveries, not one suppressed by the dedup constraint.\n\t// Classic keys are byte-identical to before (existing rows stay idempotent).\n\tconst ordinal = clock === \"vm\" ? `vm:${eventIndex}` : `${eventIndex}`;\n\tconst base = `chain:${webhookId}:${txId}:${ordinal}:${blockHash}`;\n\t// Replay keys are namespaced so a re-delivery doesn't collide with the\n\t// already-emitted live apply row (whose outbox entry may be long gone), while\n\t// re-running the SAME replay range stays idempotent (same replayId → same key).\n\treturn replayId ? `replay:${replayId}:${base}` : base;\n}\n\n/** Which ordinal `event_index` carries: classic `events.event_index` or the\n * opt-in `vm_events.ordinal`. Never mixed. */\ntype DeliveryClock = \"classic\" | \"vm\";\n\nconst VM_TRIGGER_TYPES = new Set<string>([\n\t\"nested_contract_call\",\n\t\"var_set\",\n\t\"map_set\",\n\t\"map_insert\",\n\t\"map_delete\",\n]);\n\nfunction clockFor(triggerType: string): DeliveryClock {\n\treturn VM_TRIGGER_TYPES.has(triggerType) ? \"vm\" : \"classic\";\n}\n\nfunction applyRow(\n\tmeta: TriggerKeyMeta,\n\tblockHeight: number,\n\tblockHash: string,\n\ttxId: string,\n\teventIndex: number,\n\tevent: Record<string, unknown>,\n\treplayId?: string,\n\tblockTime?: Date,\n): InsertWebhookOutbox {\n\tconst clock = clockFor(meta.triggerType);\n\tconst payload: ChainApplyEnvelope = {\n\t\taction: \"apply\",\n\t\tblock_hash: blockHash,\n\t\tblock_height: blockHeight,\n\t\tblock_time: blockTime ? blockTime.toISOString() : null,\n\t\ttx_id: txId,\n\t\tcanonical: true,\n\t\ttrigger: meta.triggerType,\n\t\tevent,\n\t};\n\treturn {\n\t\twebhook_id: meta.webhookId,\n\t\tkind: \"chain\",\n\t\tblock_height: blockHeight,\n\t\ttx_id: txId,\n\t\trow_pk:\n\t\t\tclock === \"vm\"\n\t\t\t\t? { tx_id: txId, event_index: eventIndex, clock }\n\t\t\t\t: { tx_id: txId, event_index: eventIndex },\n\t\tevent_type: `chain.${meta.triggerType}.apply`,\n\t\tpayload,\n\t\tdedup_key: chainDedupKey(\n\t\t\tmeta.webhookId,\n\t\t\ttxId,\n\t\t\teventIndex,\n\t\t\tblockHash,\n\t\t\treplayId,\n\t\t\tclock,\n\t\t),\n\t\t...(replayId ? { is_replay: true, replay_id: replayId } : {}),\n\t\t...(blockTime ? { block_time: blockTime } : {}),\n\t};\n}\n\n/**\n * Turn one block's matches into `webhook_outbox` rows (apply envelope). For\n * tx-level triggers (contract_call/deploy) we emit ONE row per matched tx\n * (`event_index = -1`); for event-level triggers, one row per matched event.\n * The `(webhook_id, dedup_key)` unique constraint makes re-processing a\n * block idempotent, so the emitter never double-delivers. Returns rows written.\n */\nexport async function emitChainOutbox(\n\tdb: Kysely<Database>,\n\tmatches: MatchedTx[],\n\tkeyMeta: Map<string, TriggerKeyMeta>,\n\tblockHeight: number,\n\tblockHash: string,\n\tblockTime?: Date,\n\topts?: { replayId?: string },\n): Promise<number> {\n\tconst replayId = opts?.replayId;\n\tconst rows: InsertWebhookOutbox[] = [];\n\tfor (const match of matches) {\n\t\tconst meta = keyMeta.get(match.sourceName);\n\t\tif (!meta) continue;\n\t\tconst txId = match.tx.tx_id;\n\t\tif (TX_LEVEL_TRIGGER_TYPES.has(meta.triggerType)) {\n\t\t\trows.push(\n\t\t\t\tapplyRow(\n\t\t\t\t\tmeta,\n\t\t\t\t\tblockHeight,\n\t\t\t\t\tblockHash,\n\t\t\t\t\ttxId,\n\t\t\t\t\t-1,\n\t\t\t\t\t{\n\t\t\t\t\t\ttx_id: txId,\n\t\t\t\t\t\ttype: match.tx.type,\n\t\t\t\t\t\tsender: match.tx.sender,\n\t\t\t\t\t\tstatus: match.tx.status,\n\t\t\t\t\t\tcontract_id: match.tx.contract_id ?? null,\n\t\t\t\t\t\tfunction_name: match.tx.function_name ?? null,\n\t\t\t\t\t\tfunction_args: match.tx.function_args ?? null,\n\t\t\t\t\t\tresult_hex: match.tx.raw_result ?? null,\n\t\t\t\t\t},\n\t\t\t\t\treplayId,\n\t\t\t\t\tblockTime,\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tfor (const event of match.events) {\n\t\t\t\trows.push(\n\t\t\t\t\tapplyRow(\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\tblockHash,\n\t\t\t\t\t\ttxId,\n\t\t\t\t\t\tevent.event_index,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttx_id: txId,\n\t\t\t\t\t\t\ttype: event.type,\n\t\t\t\t\t\t\tevent_index: event.event_index,\n\t\t\t\t\t\t\tdata: event.data,\n\t\t\t\t\t\t},\n\t\t\t\t\t\treplayId,\n\t\t\t\t\t\tblockTime,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\tif (rows.length === 0) return 0;\n\t// Net-inserted (not built) so callers count genuinely new deliveries — a\n\t// re-processed block or a re-run replay returns 0.\n\tconst result = await db\n\t\t.insertInto(\"webhook_outbox\")\n\t\t.values(rows)\n\t\t.onConflict((oc) => oc.columns([\"webhook_id\", \"dedup_key\"]).doNothing())\n\t\t.executeTakeFirst();\n\treturn Number(result.numInsertedOrUpdatedRows ?? 0);\n}\n\n// ── sBTC event matching ──────────────────────────────────────────────────────\n\nfunction sbtcSubsOf(chainSubs: Webhook[]): Webhook[] {\n\treturn chainSubs.filter((sub) =>\n\t\ttriggersOf(sub).some((t) => isSbtcTriggerType(t.type)),\n\t);\n}\n\nfunction sbtcTopicsOf(sbtcSubs: Webhook[]): SbtcEventTopic[] {\n\tconst topics = new Set<SbtcEventTopic>();\n\tfor (const sub of sbtcSubs) {\n\t\tfor (const trigger of triggersOf(sub)) {\n\t\t\tconst topic = SBTC_TRIGGER_TO_TOPIC[trigger.type];\n\t\t\tif (topic) topics.add(topic);\n\t\t}\n\t}\n\treturn [...topics];\n}\n\n/**\n * The sBTC rows every active sBTC trigger could match over [from, to], grouped\n * by height: one read per batch, not per block. Empty (no read) when no\n * webhook has an sBTC block trigger. Throws on a read failure so the caller\n * stops with its cursor before the batch instead of skipping deliveries.\n */\nexport async function loadSbtcEventsForRange(\n\tchainSubs: Webhook[],\n\tfromHeight: number,\n\ttoHeight: number,\n\topts?: { sourceDb?: Kysely<Database>; reader?: ChainDataReader },\n): Promise<Map<number, SbtcEventRow[]>> {\n\tconst byHeight = new Map<number, SbtcEventRow[]>();\n\tconst topics = sbtcTopicsOf(sbtcSubsOf(chainSubs));\n\tif (topics.length === 0) return byHeight;\n\tconst rows = await readerFor(opts).sbtcEvents(fromHeight, toHeight, topics);\n\tfor (const row of rows) {\n\t\tconst height = Number(row.block_height);\n\t\tconst list = byHeight.get(height);\n\t\tif (list) list.push(row);\n\t\telse byHeight.set(height, [row]);\n\t}\n\treturn byHeight;\n}\n\nfunction toAmountBigInt(v: string | number | undefined): bigint | undefined {\n\treturn v === undefined ? undefined : BigInt(v);\n}\n\nfunction matchSbtcTrigger(trigger: ChainTrigger, row: SbtcEventRow): boolean {\n\tconst expectedTopic = SBTC_TRIGGER_TO_TOPIC[trigger.type];\n\tif (!expectedTopic || row.topic !== expectedTopic) return false;\n\n\tif (trigger.type === \"sbtc_deposit\") {\n\t\tif (trigger.sender && row.sender !== trigger.sender) return false;\n\t\tif (trigger.bitcoinTxid && row.bitcoin_txid !== trigger.bitcoinTxid)\n\t\t\treturn false;\n\t\tif (trigger.requestId !== undefined && row.request_id !== trigger.requestId)\n\t\t\treturn false;\n\t\tconst min = toAmountBigInt(trigger.minAmount);\n\t\tconst max = toAmountBigInt(trigger.maxAmount);\n\t\tif (min !== undefined || max !== undefined) {\n\t\t\tif (row.amount === null) return false;\n\t\t\tconst amt = BigInt(row.amount);\n\t\t\tif (min !== undefined && amt < min) return false;\n\t\t\tif (max !== undefined && amt > max) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (trigger.type === \"sbtc_withdrawal_create\") {\n\t\tif (trigger.sender && row.sender !== trigger.sender) return false;\n\t\tif (trigger.requestId !== undefined && row.request_id !== trigger.requestId)\n\t\t\treturn false;\n\t\tconst min = toAmountBigInt(trigger.minAmount);\n\t\tconst max = toAmountBigInt(trigger.maxAmount);\n\t\tif (min !== undefined || max !== undefined) {\n\t\t\tif (row.amount === null) return false;\n\t\t\tconst amt = BigInt(row.amount);\n\t\t\tif (min !== undefined && amt < min) return false;\n\t\t\tif (max !== undefined && amt > max) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (trigger.type === \"sbtc_withdrawal_accept\") {\n\t\tif (trigger.requestId !== undefined && row.request_id !== trigger.requestId)\n\t\t\treturn false;\n\t\tif (trigger.sweepTxid && row.sweep_txid !== trigger.sweepTxid) return false;\n\t\treturn true;\n\t}\n\n\tif (trigger.type === \"sbtc_withdrawal_reject\") {\n\t\tif (trigger.requestId !== undefined && row.request_id !== trigger.requestId)\n\t\t\treturn false;\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction buildSbtcEventPayload(\n\ttriggerType: ChainTrigger[\"type\"],\n\trow: SbtcEventRow,\n): SbtcDepositEvent | SbtcWithdrawalEvent {\n\tif (triggerType === \"sbtc_deposit\") {\n\t\treturn {\n\t\t\ttopic: \"completed-deposit\",\n\t\t\trequest_id: row.request_id ?? 0,\n\t\t\tsender: row.sender,\n\t\t\tamount: row.amount ?? \"0\",\n\t\t\tbitcoin_txid: row.bitcoin_txid,\n\t\t\tblock_height: row.block_height,\n\t\t\ttx_id: row.tx_id,\n\t\t} satisfies SbtcDepositEvent;\n\t}\n\treturn {\n\t\ttopic: row.topic as\n\t\t\t| \"withdrawal-create\"\n\t\t\t| \"withdrawal-accept\"\n\t\t\t| \"withdrawal-reject\",\n\t\trequest_id: row.request_id ?? 0,\n\t\tsender: row.sender,\n\t\tamount: row.amount,\n\t\tsweep_txid: row.sweep_txid,\n\t\tsettlement_confirmed: false,\n\t\tblock_height: row.block_height,\n\t\ttx_id: row.tx_id,\n\t} satisfies SbtcWithdrawalEvent;\n}\n\n/**\n * Match active sBTC chain webhooks against `sbtc_events` for one block\n * and write apply-envelope rows to `webhook_outbox`. Runs alongside\n * `emitChainOutbox` (which handles decoded_events). Same dedup-key scheme —\n * re-processing the same block is idempotent.\n *\n * `opts.rows` is this block's slice of `loadSbtcEventsForRange` (the batched\n * read); without it the block is read on its own. `sbtc_events` is a\n * SOURCE-plane table and `db` is the TARGET handle (an empty same-named table\n * exists there post-split), so rows never come from `db`.\n */\nexport async function emitSbtcOutbox(\n\tdb: Kysely<Database>,\n\tchainSubs: Webhook[],\n\tblockHeight: number,\n\tblockHash: string,\n\tblockTime?: Date,\n\topts?: {\n\t\treplayId?: string;\n\t\tsourceDb?: Kysely<Database>;\n\t\treader?: ChainDataReader;\n\t\trows?: SbtcEventRow[];\n\t},\n): Promise<number> {\n\tconst sbtcSubs = sbtcSubsOf(chainSubs);\n\tif (sbtcSubs.length === 0) return 0;\n\n\tconst sbtcRows =\n\t\topts?.rows ??\n\t\t(\n\t\t\tawait loadSbtcEventsForRange(sbtcSubs, blockHeight, blockHeight, opts)\n\t\t).get(blockHeight) ??\n\t\t[];\n\tif (sbtcRows.length === 0) return 0;\n\n\tconst replayId = opts?.replayId;\n\tconst outboxRows: InsertWebhookOutbox[] = [];\n\n\tfor (const sub of sbtcSubs) {\n\t\ttriggersOf(sub).forEach((trigger, triggerIndex) => {\n\t\t\tif (!isSbtcTriggerType(trigger.type)) return;\n\t\t\tconst meta: TriggerKeyMeta = {\n\t\t\t\twebhookId: sub.id,\n\t\t\t\ttriggerIndex,\n\t\t\t\ttriggerType: trigger.type,\n\t\t\t};\n\t\t\tfor (const row of sbtcRows) {\n\t\t\t\tif (!matchSbtcTrigger(trigger, row)) continue;\n\t\t\t\tconst event = buildSbtcEventPayload(trigger.type, row);\n\t\t\t\toutboxRows.push(\n\t\t\t\t\tapplyRow(\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\tblockHash,\n\t\t\t\t\t\trow.tx_id,\n\t\t\t\t\t\trow.event_index,\n\t\t\t\t\t\tevent as unknown as Record<string, unknown>,\n\t\t\t\t\t\treplayId,\n\t\t\t\t\t\tblockTime,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (outboxRows.length === 0) return 0;\n\tconst result = await db\n\t\t.insertInto(\"webhook_outbox\")\n\t\t.values(outboxRows)\n\t\t.onConflict((oc) => oc.columns([\"webhook_id\", \"dedup_key\"]).doNothing())\n\t\t.executeTakeFirst();\n\treturn Number(result.numInsertedOrUpdatedRows ?? 0);\n}\n\n/**\n * Emit the `sbtc_withdrawal_swept_confirmed` webhook. Unlike the per-block sBTC\n * path, this fires on a BITCOIN confirmation (async to Stacks blocks), so it\n * scans `sbtc_settlements` on its own cadence rather than per Stacks block.\n *\n * - Resumes from `last_settlement_scan_seq` on `db` (the target/control plane):\n * `sbtc_settlements.seq` is stamped when a sweep becomes confirmed, so it\n * follows commit order, which `confirmed_at` (a JS clock on insert, SQL\n * `now()` on update) does not. Until the first row has been scanned there is\n * no seq, and `last_settlement_scan_at` is the forward-only floor: null →\n * set it to `now` and emit nothing (no historical backfill, mirroring the\n * block cursor); set → scan `confirmed_at > floor`.\n * - Scans confirmed settlements past that point from the SOURCE plane\n * (`sbtc_settlements` is source), joined to the Stacks accept event + block\n * for the envelope anchor.\n * - Outbox rows and the watermark commit in one transaction. With\n * `opts.generation`, a reorg since it was read rejects the commit (the\n * rows anchor to Stacks blocks a reorg can orphan).\n * - Per-sub forward-only (`confirmed_at > sub.created_at`) + optional\n * requestId/sweepTxid filters; dedup on `(webhook_id, sweep_txid)` so a\n * reorg→un-confirm→re-confirm never double-fires.\n */\nexport async function emitSbtcSettlementOutbox(\n\tdb: Kysely<Database>,\n\tchainSubs: Webhook[],\n\topts?: {\n\t\tsourceDb?: Kysely<Database>;\n\t\treader?: ChainDataReader;\n\t\tnow?: Date;\n\t\t/** `reorg_generation` read before the scan; see `commitBatch`. */\n\t\tgeneration?: number;\n\t},\n): Promise<number> {\n\tconst settlementSubs = chainSubs.filter((sub) =>\n\t\ttriggersOf(sub).some((t) => t.type === SETTLEMENT_TRIGGER_TYPE),\n\t);\n\tif (settlementSubs.length === 0) return 0;\n\n\tconst now = opts?.now ?? new Date();\n\tconst state = await db\n\t\t.selectFrom(\"trigger_evaluator_state\")\n\t\t.select([\"last_settlement_scan_at\", \"last_settlement_scan_seq\"])\n\t\t.where(\"id\", \"=\", true)\n\t\t.executeTakeFirst();\n\n\tconst seqCursor =\n\t\tstate?.last_settlement_scan_seq == null\n\t\t\t? null\n\t\t\t: Number(state.last_settlement_scan_seq);\n\tconst floor = state?.last_settlement_scan_at ?? null;\n\t// Uninitialized → fast-forward, emit nothing (forward-only).\n\tif (seqCursor === null && floor === null) {\n\t\tawait db\n\t\t\t.updateTable(\"trigger_evaluator_state\")\n\t\t\t.set({ last_settlement_scan_at: now })\n\t\t\t.where(\"id\", \"=\", true)\n\t\t\t.execute();\n\t\treturn 0;\n\t}\n\n\tconst rows = await readerFor(opts).settlementsSince(\n\t\tseqCursor !== null\n\t\t\t? { afterSeq: seqCursor }\n\t\t\t: { confirmedAfter: floor as Date },\n\t);\n\tif (rows.length === 0) return 0;\n\n\tconst outboxRows: InsertWebhookOutbox[] = [];\n\tlet maxSeq = seqCursor ?? 0;\n\tfor (const row of rows) {\n\t\tif (row.seq > maxSeq) maxSeq = row.seq;\n\t\tconst confirmedAt = row.confirmed_at;\n\t\tif (!confirmedAt) continue;\n\t\tfor (const sub of settlementSubs) {\n\t\t\t// Forward-only: a sub only receives settlements confirmed after it existed.\n\t\t\tif (confirmedAt <= sub.created_at) continue;\n\t\t\tconst trigger = triggersOf(sub).find(\n\t\t\t\t(t) => t.type === SETTLEMENT_TRIGGER_TYPE,\n\t\t\t);\n\t\t\tif (!trigger || trigger.type !== SETTLEMENT_TRIGGER_TYPE) continue;\n\t\t\tif (\n\t\t\t\ttrigger.requestId !== undefined &&\n\t\t\t\ttrigger.requestId !== Number(row.request_id)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttrigger.sweepTxid !== undefined &&\n\t\t\t\ttrigger.sweepTxid !== row.sweep_txid\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\toutboxRows.push(settlementApplyRow(sub.id, row));\n\t\t}\n\t}\n\n\t// Advance the watermark past every settlement scanned this pass (even ones\n\t// filtered out per-sub — they're in the past for any future subscriber).\n\treturn db.transaction().execute(async (trx) => {\n\t\tconst cur = await trx\n\t\t\t.selectFrom(\"trigger_evaluator_state\")\n\t\t\t.select(\"reorg_generation\")\n\t\t\t.where(\"id\", \"=\", true)\n\t\t\t.forUpdate()\n\t\t\t.executeTakeFirst();\n\t\tif (\n\t\t\topts?.generation !== undefined &&\n\t\t\tNumber(cur?.reorg_generation ?? 0) !== opts.generation\n\t\t) {\n\t\t\t// A reorg landed mid-tick: leave the watermark so the next tick rescans.\n\t\t\treturn 0;\n\t\t}\n\t\tlet inserted = 0;\n\t\tif (outboxRows.length > 0) {\n\t\t\tawait trx\n\t\t\t\t.insertInto(\"webhook_outbox\")\n\t\t\t\t.values(outboxRows)\n\t\t\t\t.onConflict((oc) => oc.columns([\"webhook_id\", \"dedup_key\"]).doNothing())\n\t\t\t\t.execute();\n\t\t\tinserted = outboxRows.length;\n\t\t}\n\t\tawait trx\n\t\t\t.updateTable(\"trigger_evaluator_state\")\n\t\t\t.set({ last_settlement_scan_seq: maxSeq })\n\t\t\t.where(\"id\", \"=\", true)\n\t\t\t.execute();\n\t\treturn inserted;\n\t});\n}\n\nfunction settlementApplyRow(\n\twebhookId: string,\n\trow: SettlementScanRow,\n): InsertWebhookOutbox {\n\tconst blockTime = blockTimeOf({ timestamp: Number(row.block_timestamp) });\n\tconst event: SbtcWithdrawalSweptConfirmedEvent = {\n\t\ttopic: \"withdrawal-swept-confirmed\",\n\t\trequest_id: Number(row.request_id),\n\t\tsweep_txid: row.sweep_txid,\n\t\tbtc_confirmations: row.btc_confirmations,\n\t\tbtc_block_height: row.btc_block_height,\n\t\tconfirmed_at: row.confirmed_at ? row.confirmed_at.toISOString() : null,\n\t\tamount: row.amount,\n\t\tsender: row.sender,\n\t};\n\tconst payload: ChainApplyEnvelope = {\n\t\taction: \"apply\",\n\t\tblock_hash: row.block_hash,\n\t\tblock_height: Number(row.stacks_block_height),\n\t\tblock_time: blockTime ? blockTime.toISOString() : null,\n\t\ttx_id: row.tx_id,\n\t\tcanonical: true,\n\t\ttrigger: SETTLEMENT_TRIGGER_TYPE,\n\t\tevent,\n\t};\n\treturn {\n\t\twebhook_id: webhookId,\n\t\tkind: \"chain\",\n\t\tblock_height: Number(row.stacks_block_height),\n\t\ttx_id: row.tx_id,\n\t\trow_pk: { sweep_txid: row.sweep_txid },\n\t\tevent_type: `chain.${SETTLEMENT_TRIGGER_TYPE}.apply`,\n\t\tpayload,\n\t\t// Settlement fires on a Bitcoin confirmation, not a Stacks block — dedup on\n\t\t// the sweep so a reorg→un-confirm→re-confirm cycle never re-delivers.\n\t\tdedup_key: `settlement:${webhookId}:${row.sweep_txid}`,\n\t\t...(blockTime ? { block_time: blockTime } : {}),\n\t};\n}\n"
16
+ "import type {\n\tChainApplyEnvelope,\n\tSbtcDepositEvent,\n\tSbtcWithdrawalEvent,\n\tSbtcWithdrawalSweptConfirmedEvent,\n} from \"@secondlayer/shared\";\nimport type {\n\tDatabase,\n\tInsertWebhookOutbox,\n\tSbtcEventTopic,\n\tWebhook,\n} from \"@secondlayer/shared/db\";\nimport type { ChainTrigger } from \"@secondlayer/shared/schemas/webhooks\";\nimport type { Kysely } from \"kysely\";\nimport type { SubgraphFilter } from \"../types.ts\";\nimport type { BlockData } from \"./batch-loader.ts\";\nimport { indexEventTypesForFilterTypes } from \"./block-source.ts\";\nimport {\n\ttype ChainDataReader,\n\ttype SbtcEventRow,\n\ttype SettlementScanRow,\n\tchainDataReader,\n\tdatabaseChainDataReader,\n} from \"./chain-data-reader.ts\";\nimport { decoderNamesForIndexEventTypes } from \"./decoder-bound.ts\";\nimport {\n\ttype MatchedTx,\n\ttype TraitContracts,\n\tmatchSources,\n} from \"./source-matcher.ts\";\n\n/** Trigger types that match a whole transaction (not an individual event). */\nconst TX_LEVEL_TRIGGER_TYPES = new Set([\"contract_call\", \"contract_deploy\"]);\n\n/**\n * `BlockData.block.timestamp` → the `webhook_outbox.block_time` the emitters\n * below stamp on a row. Unix seconds on every real block source\n * (`PostgresBlockSource` reads it off `blocks`; `PublicApiBlockSource`\n * reconstructs it from the Index API's `block_time`). Undefined/NaN/non-\n * positive (a test's minimal block fixture, or the 0-timestamp bulk-import\n * artifact `decode/health.ts` also guards against) means \"unknown\" — leave\n * `block_time` null rather than writing an Invalid Date or a 1970 sentinel.\n */\nexport function blockTimeOf(block: { timestamp: number }): Date | undefined {\n\treturn Number.isFinite(block.timestamp) && block.timestamp > 0\n\t\t? new Date(block.timestamp * 1000)\n\t\t: undefined;\n}\n\n/** Fired on a Bitcoin confirmation, async to Stacks blocks — handled by the\n * scan-based `emitSbtcSettlementOutbox`, NOT the per-block path. Listed in\n * SBTC_TRIGGER_TYPES so the per-block matcher skips it, but deliberately absent\n * from SBTC_TRIGGER_TO_TOPIC (it has no `sbtc_events` topic). */\nconst SETTLEMENT_TRIGGER_TYPE = \"sbtc_withdrawal_swept_confirmed\";\n\n/**\n * sBTC trigger types — matched via the `sbtc_events` table, NOT via\n * `decoded_events`. Excluded from the chain-event sources map so the\n * `matchSources` engine never sees them; `emitSbtcOutbox` handles them\n * with a dedicated query + match loop.\n */\nconst SBTC_TRIGGER_TYPES = new Set([\n\t\"sbtc_deposit\",\n\t\"sbtc_withdrawal_create\",\n\t\"sbtc_withdrawal_accept\",\n\t\"sbtc_withdrawal_reject\",\n\tSETTLEMENT_TRIGGER_TYPE,\n]);\n\nfunction isSbtcTriggerType(type: string): boolean {\n\treturn SBTC_TRIGGER_TYPES.has(type);\n}\n\nconst SBTC_TRIGGER_TO_TOPIC: Record<string, SbtcEventTopic> = {\n\tsbtc_deposit: \"completed-deposit\",\n\tsbtc_withdrawal_create: \"withdrawal-create\",\n\tsbtc_withdrawal_accept: \"withdrawal-accept\",\n\tsbtc_withdrawal_reject: \"withdrawal-reject\",\n};\n\n/**\n * Pure matching core for direct chain-level webhooks. A single evaluator\n * loop serves ALL chain webhooks: it reads canonical blocks off the public\n * Index/Streams clock (via `PublicApiBlockSource`), runs the same\n * `matchSources` engine the subgraph runtime uses, and routes matches back to\n * the originating webhook. Everything here is pure/sync (DB only for trait\n * resolution) so it's trivially testable.\n *\n * Source keys are `\"{webhookId}#{triggerIndex}\"` — `matchSources` echoes\n * the key as `MatchedTx.sourceName`, letting the emitter recover which\n * webhook (and which trigger) matched. `keyMeta` carries the readable\n * trigger type for the outbox `event_type` / payload.\n */\n\nexport interface TriggerKeyMeta {\n\twebhookId: string;\n\ttriggerIndex: number;\n\ttriggerType: ChainTrigger[\"type\"];\n}\n\nexport interface ChainSourcesMap {\n\tsources: Record<string, SubgraphFilter>;\n\tkeyMeta: Map<string, TriggerKeyMeta>;\n}\n\nfunction sourceKey(webhookId: string, triggerIndex: number): string {\n\treturn `${webhookId}#${triggerIndex}`;\n}\n\nfunction toAmount(v: string | number | undefined): bigint | undefined {\n\treturn v === undefined ? undefined : BigInt(v);\n}\n\n/**\n * Convert a stored `ChainTrigger` (JSON; amounts as string/number) to the\n * runtime `SubgraphFilter` the matcher expects (amounts as bigint). Field names\n * are identical across the two shapes, so this is a copy plus amount coercion.\n */\nexport function chainTriggerToFilter(trigger: ChainTrigger): SubgraphFilter {\n\tconst t = trigger as ChainTrigger & {\n\t\tminAmount?: string | number;\n\t\tmaxAmount?: string | number;\n\t};\n\t// Spread copies all set keys; amounts (string|number) are then overwritten\n\t// with bigint where present. An absent optional amount isn't in the spread,\n\t// so there's nothing to strip.\n\tconst filter = { ...trigger } as Record<string, unknown>;\n\tconst minAmount = toAmount(t.minAmount);\n\tconst maxAmount = toAmount(t.maxAmount);\n\tif (minAmount !== undefined) filter.minAmount = minAmount;\n\tif (maxAmount !== undefined) filter.maxAmount = maxAmount;\n\treturn filter as unknown as SubgraphFilter;\n}\n\nfunction triggersOf(sub: Webhook): ChainTrigger[] {\n\treturn (sub.triggers ?? []) as ChainTrigger[];\n}\n\n/** Build the `matchSources` input from every active chain webhook. */\nexport function buildSourcesMap(chainSubs: Webhook[]): ChainSourcesMap {\n\tconst sources: Record<string, SubgraphFilter> = {};\n\tconst keyMeta = new Map<string, TriggerKeyMeta>();\n\tfor (const sub of chainSubs) {\n\t\ttriggersOf(sub).forEach((trigger, triggerIndex) => {\n\t\t\t// sBTC triggers are handled by emitSbtcOutbox — skip them here so\n\t\t\t// matchSources never tries to find sbtc_events in decoded_events.\n\t\t\tif (isSbtcTriggerType(trigger.type)) return;\n\t\t\tconst key = sourceKey(sub.id, triggerIndex);\n\t\t\tsources[key] = chainTriggerToFilter(trigger);\n\t\t\tkeyMeta.set(key, {\n\t\t\t\twebhookId: sub.id,\n\t\t\t\ttriggerIndex,\n\t\t\t\ttriggerType: trigger.type,\n\t\t\t});\n\t\t});\n\t}\n\treturn { sources, keyMeta };\n}\n\n/** The Index event types the loader must fetch to satisfy all chain triggers. */\nexport function referencedEventTypes(chainSubs: Webhook[]): string[] {\n\tconst filterTypes = new Set<string>();\n\tfor (const sub of chainSubs) {\n\t\tfor (const trigger of triggersOf(sub)) {\n\t\t\t// sBTC events live in sbtc_events, not in the Index event stream.\n\t\t\tif (!isSbtcTriggerType(trigger.type)) filterTypes.add(trigger.type);\n\t\t}\n\t}\n\treturn indexEventTypesForFilterTypes([...filterTypes]);\n}\n\n/** Decoder checkpoint names feeding the event types these chain subs read. */\nexport function referencedDecoderNames(chainSubs: Webhook[]): string[] {\n\treturn decoderNamesForIndexEventTypes(referencedEventTypes(chainSubs));\n}\n\n/**\n * True when some active chain webhook has a tx-level trigger\n * (contract_call/contract_deploy) — the only trigger types whose match needs\n * a REAL transaction (`function_args`, `raw_result`, etc., read in\n * `emitChainOutbox`'s TX_LEVEL branch below). Every other trigger type matches\n * off decoded events, which the block source can synthesize a minimal tx for\n * from joined event context instead of fetching every transaction in the\n * range. Mirrors `needsTransactionData` in block-source.ts for subgraphs —\n * same rule, chain-webhook triggers instead of subgraph source filters.\n */\nexport function chainSubsNeedTransactions(chainSubs: Webhook[]): boolean {\n\treturn chainSubs.some((sub) =>\n\t\ttriggersOf(sub).some((trigger) => TX_LEVEL_TRIGGER_TYPES.has(trigger.type)),\n\t);\n}\n\n/** Distinct traits referenced across all chain triggers. */\nexport function referencedTraits(chainSubs: Webhook[]): string[] {\n\tconst traits = new Set<string>();\n\tfor (const sub of chainSubs) {\n\t\tfor (const trigger of triggersOf(sub)) {\n\t\t\tconst trait = (trigger as { trait?: string }).trait;\n\t\t\tif (trait) traits.add(trait);\n\t\t}\n\t}\n\treturn [...traits];\n}\n\n/**\n * `opts.reader` wins; an explicit `opts.sourceDb` (test seam) reads those\n * tables; otherwise the stack's own reader (`chainDataReader`): the source\n * plane, or the hosted Index API on a tenant with no local chain.\n */\nfunction readerFor(opts?: {\n\tsourceDb?: Kysely<Database>;\n\treader?: ChainDataReader;\n}): ChainDataReader {\n\tif (opts?.reader) return opts.reader;\n\tif (opts?.sourceDb) return databaseChainDataReader(opts.sourceDb);\n\treturn chainDataReader();\n}\n\n/**\n * Resolve each referenced trait to its conforming contract-id set as of\n * `asOfBlock`, from the contract registry (`CONTRACT_REGISTRY_ENABLED` populates\n * it). Empty map when no trigger is trait-scoped → no reads. Membership only\n * grows, so the evaluator resolves this once per batch, not per block.\n *\n * `contracts` is a SOURCE-plane table; the evaluator/replay run on the TARGET\n * handle (an empty same-named copy exists there post-split), so this never\n * reads `db` — see `ChainDataReader`.\n */\nexport async function buildTraitContracts(\n\tchainSubs: Webhook[],\n\tasOfBlock: number,\n\topts?: { sourceDb?: Kysely<Database>; reader?: ChainDataReader },\n): Promise<TraitContracts> {\n\tconst traits = referencedTraits(chainSubs);\n\tif (traits.length === 0) return new Map();\n\tconst reader = readerFor(opts);\n\tconst resolved: TraitContracts = new Map();\n\tfor (const trait of traits) {\n\t\tconst ids = await reader.traitContractIds(trait, asOfBlock);\n\t\tresolved.set(trait, new Set(ids));\n\t}\n\treturn resolved;\n}\n\n/** Run the matcher for one block. Thin wrapper for symmetry/testability. */\nexport function evaluateBlock(\n\tblock: BlockData,\n\tsources: Record<string, SubgraphFilter>,\n\ttraitContracts: TraitContracts,\n): MatchedTx[] {\n\treturn matchSources(\n\t\tsources,\n\t\tblock.txs,\n\t\tblock.events,\n\t\ttraitContracts,\n\t\tnew Map(),\n\t\tblock.vmEvents ?? [],\n\t);\n}\n\n// ── Outbox emission ─────────────────────────────────────────────────────────\n\n// Apply-envelope shape is single-sourced as `ChainApplyEnvelope` in\n// `@secondlayer/shared` (shared with the SDK consumer); reorg emits a matching\n// `ChainReorgRollbackEnvelope`, see `handleChainReorg`.\n\n/**\n * Stable dedup identity for a chain delivery — (webhook, tx, event,\n * block_hash). A tx-level match (contract_call/deploy) has no event, so\n * `eventIndex = -1`. `block_hash` is included so a tx that survives a reorg\n * (same tx_id, NEW canonical block) re-delivers an `apply` after its rollback,\n * instead of being suppressed forever; re-processing the SAME canonical block is\n * still idempotent (same hash → same key).\n */\nfunction chainDedupKey(\n\twebhookId: string,\n\ttxId: string,\n\teventIndex: number,\n\tblockHash: string,\n\treplayId?: string,\n\tclock: DeliveryClock = \"classic\",\n): string {\n\t// vm rows are keyed by ordinal — a second clock. Namespace them so\n\t// a print at event_index N and a map_set at ordinal N in the same\n\t// tx are two deliveries, not one suppressed by the dedup constraint.\n\t// Classic keys are byte-identical to before (existing rows stay idempotent).\n\tconst ordinal = clock === \"vm\" ? `vm:${eventIndex}` : `${eventIndex}`;\n\tconst base = `chain:${webhookId}:${txId}:${ordinal}:${blockHash}`;\n\t// Replay keys are namespaced so a re-delivery doesn't collide with the\n\t// already-emitted live apply row (whose outbox entry may be long gone), while\n\t// re-running the SAME replay range stays idempotent (same replayId → same key).\n\treturn replayId ? `replay:${replayId}:${base}` : base;\n}\n\n/** Which ordinal `event_index` carries: classic `events.event_index` or the\n * opt-in `vm_events.ordinal`. Never mixed. */\ntype DeliveryClock = \"classic\" | \"vm\";\n\nconst VM_TRIGGER_TYPES = new Set<string>([\n\t\"nested_contract_call\",\n\t\"var_set\",\n\t\"map_set\",\n\t\"map_insert\",\n\t\"map_delete\",\n]);\n\nfunction clockFor(triggerType: string): DeliveryClock {\n\treturn VM_TRIGGER_TYPES.has(triggerType) ? \"vm\" : \"classic\";\n}\n\nfunction applyRow(\n\tmeta: TriggerKeyMeta,\n\tblockHeight: number,\n\tblockHash: string,\n\ttxId: string,\n\teventIndex: number,\n\tevent: Record<string, unknown>,\n\treplayId?: string,\n\tblockTime?: Date,\n): InsertWebhookOutbox {\n\tconst clock = clockFor(meta.triggerType);\n\tconst payload: ChainApplyEnvelope = {\n\t\taction: \"apply\",\n\t\tblock_hash: blockHash,\n\t\tblock_height: blockHeight,\n\t\tblock_time: blockTime ? blockTime.toISOString() : null,\n\t\ttx_id: txId,\n\t\tcanonical: true,\n\t\ttrigger: meta.triggerType,\n\t\tevent,\n\t};\n\treturn {\n\t\twebhook_id: meta.webhookId,\n\t\tkind: \"chain\",\n\t\tblock_height: blockHeight,\n\t\tblock_hash: blockHash,\n\t\ttx_id: txId,\n\t\trow_pk:\n\t\t\tclock === \"vm\"\n\t\t\t\t? { tx_id: txId, event_index: eventIndex, clock }\n\t\t\t\t: { tx_id: txId, event_index: eventIndex },\n\t\tevent_type: `chain.${meta.triggerType}.apply`,\n\t\tpayload,\n\t\tdedup_key: chainDedupKey(\n\t\t\tmeta.webhookId,\n\t\t\ttxId,\n\t\t\teventIndex,\n\t\t\tblockHash,\n\t\t\treplayId,\n\t\t\tclock,\n\t\t),\n\t\t...(replayId ? { is_replay: true, replay_id: replayId } : {}),\n\t\t...(blockTime ? { block_time: blockTime } : {}),\n\t};\n}\n\n/**\n * Turn one block's matches into `webhook_outbox` rows (apply envelope). For\n * tx-level triggers (contract_call/deploy) we emit ONE row per matched tx\n * (`event_index = -1`); for event-level triggers, one row per matched event.\n * The `(webhook_id, dedup_key)` unique constraint makes re-processing a\n * block idempotent, so the emitter never double-delivers. Returns rows written.\n */\nexport async function emitChainOutbox(\n\tdb: Kysely<Database>,\n\tmatches: MatchedTx[],\n\tkeyMeta: Map<string, TriggerKeyMeta>,\n\tblockHeight: number,\n\tblockHash: string,\n\tblockTime?: Date,\n\topts?: { replayId?: string },\n): Promise<number> {\n\tconst replayId = opts?.replayId;\n\tconst rows: InsertWebhookOutbox[] = [];\n\tfor (const match of matches) {\n\t\tconst meta = keyMeta.get(match.sourceName);\n\t\tif (!meta) continue;\n\t\tconst txId = match.tx.tx_id;\n\t\tif (TX_LEVEL_TRIGGER_TYPES.has(meta.triggerType)) {\n\t\t\trows.push(\n\t\t\t\tapplyRow(\n\t\t\t\t\tmeta,\n\t\t\t\t\tblockHeight,\n\t\t\t\t\tblockHash,\n\t\t\t\t\ttxId,\n\t\t\t\t\t-1,\n\t\t\t\t\t{\n\t\t\t\t\t\ttx_id: txId,\n\t\t\t\t\t\ttype: match.tx.type,\n\t\t\t\t\t\tsender: match.tx.sender,\n\t\t\t\t\t\tstatus: match.tx.status,\n\t\t\t\t\t\tcontract_id: match.tx.contract_id ?? null,\n\t\t\t\t\t\tfunction_name: match.tx.function_name ?? null,\n\t\t\t\t\t\tfunction_args: match.tx.function_args ?? null,\n\t\t\t\t\t\tresult_hex: match.tx.raw_result ?? null,\n\t\t\t\t\t},\n\t\t\t\t\treplayId,\n\t\t\t\t\tblockTime,\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tfor (const event of match.events) {\n\t\t\t\trows.push(\n\t\t\t\t\tapplyRow(\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\tblockHash,\n\t\t\t\t\t\ttxId,\n\t\t\t\t\t\tevent.event_index,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttx_id: txId,\n\t\t\t\t\t\t\ttype: event.type,\n\t\t\t\t\t\t\tevent_index: event.event_index,\n\t\t\t\t\t\t\tdata: event.data,\n\t\t\t\t\t\t},\n\t\t\t\t\t\treplayId,\n\t\t\t\t\t\tblockTime,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\tif (rows.length === 0) return 0;\n\t// Net-inserted (not built) so callers count genuinely new deliveries — a\n\t// re-processed block or a re-run replay returns 0.\n\tconst result = await db\n\t\t.insertInto(\"webhook_outbox\")\n\t\t.values(rows)\n\t\t.onConflict((oc) => oc.columns([\"webhook_id\", \"dedup_key\"]).doNothing())\n\t\t.executeTakeFirst();\n\treturn Number(result.numInsertedOrUpdatedRows ?? 0);\n}\n\n// ── sBTC event matching ──────────────────────────────────────────────────────\n\nfunction sbtcSubsOf(chainSubs: Webhook[]): Webhook[] {\n\treturn chainSubs.filter((sub) =>\n\t\ttriggersOf(sub).some((t) => isSbtcTriggerType(t.type)),\n\t);\n}\n\nfunction sbtcTopicsOf(sbtcSubs: Webhook[]): SbtcEventTopic[] {\n\tconst topics = new Set<SbtcEventTopic>();\n\tfor (const sub of sbtcSubs) {\n\t\tfor (const trigger of triggersOf(sub)) {\n\t\t\tconst topic = SBTC_TRIGGER_TO_TOPIC[trigger.type];\n\t\t\tif (topic) topics.add(topic);\n\t\t}\n\t}\n\treturn [...topics];\n}\n\n/**\n * The sBTC rows every active sBTC trigger could match over [from, to], grouped\n * by height: one read per batch, not per block. Empty (no read) when no\n * webhook has an sBTC block trigger. Throws on a read failure so the caller\n * stops with its cursor before the batch instead of skipping deliveries.\n */\nexport async function loadSbtcEventsForRange(\n\tchainSubs: Webhook[],\n\tfromHeight: number,\n\ttoHeight: number,\n\topts?: { sourceDb?: Kysely<Database>; reader?: ChainDataReader },\n): Promise<Map<number, SbtcEventRow[]>> {\n\tconst byHeight = new Map<number, SbtcEventRow[]>();\n\tconst topics = sbtcTopicsOf(sbtcSubsOf(chainSubs));\n\tif (topics.length === 0) return byHeight;\n\tconst rows = await readerFor(opts).sbtcEvents(fromHeight, toHeight, topics);\n\tfor (const row of rows) {\n\t\tconst height = Number(row.block_height);\n\t\tconst list = byHeight.get(height);\n\t\tif (list) list.push(row);\n\t\telse byHeight.set(height, [row]);\n\t}\n\treturn byHeight;\n}\n\nfunction toAmountBigInt(v: string | number | undefined): bigint | undefined {\n\treturn v === undefined ? undefined : BigInt(v);\n}\n\nfunction matchSbtcTrigger(trigger: ChainTrigger, row: SbtcEventRow): boolean {\n\tconst expectedTopic = SBTC_TRIGGER_TO_TOPIC[trigger.type];\n\tif (!expectedTopic || row.topic !== expectedTopic) return false;\n\n\tif (trigger.type === \"sbtc_deposit\") {\n\t\tif (trigger.sender && row.sender !== trigger.sender) return false;\n\t\tif (trigger.bitcoinTxid && row.bitcoin_txid !== trigger.bitcoinTxid)\n\t\t\treturn false;\n\t\tif (trigger.requestId !== undefined && row.request_id !== trigger.requestId)\n\t\t\treturn false;\n\t\tconst min = toAmountBigInt(trigger.minAmount);\n\t\tconst max = toAmountBigInt(trigger.maxAmount);\n\t\tif (min !== undefined || max !== undefined) {\n\t\t\tif (row.amount === null) return false;\n\t\t\tconst amt = BigInt(row.amount);\n\t\t\tif (min !== undefined && amt < min) return false;\n\t\t\tif (max !== undefined && amt > max) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (trigger.type === \"sbtc_withdrawal_create\") {\n\t\tif (trigger.sender && row.sender !== trigger.sender) return false;\n\t\tif (trigger.requestId !== undefined && row.request_id !== trigger.requestId)\n\t\t\treturn false;\n\t\tconst min = toAmountBigInt(trigger.minAmount);\n\t\tconst max = toAmountBigInt(trigger.maxAmount);\n\t\tif (min !== undefined || max !== undefined) {\n\t\t\tif (row.amount === null) return false;\n\t\t\tconst amt = BigInt(row.amount);\n\t\t\tif (min !== undefined && amt < min) return false;\n\t\t\tif (max !== undefined && amt > max) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (trigger.type === \"sbtc_withdrawal_accept\") {\n\t\tif (trigger.requestId !== undefined && row.request_id !== trigger.requestId)\n\t\t\treturn false;\n\t\tif (trigger.sweepTxid && row.sweep_txid !== trigger.sweepTxid) return false;\n\t\treturn true;\n\t}\n\n\tif (trigger.type === \"sbtc_withdrawal_reject\") {\n\t\tif (trigger.requestId !== undefined && row.request_id !== trigger.requestId)\n\t\t\treturn false;\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction buildSbtcEventPayload(\n\ttriggerType: ChainTrigger[\"type\"],\n\trow: SbtcEventRow,\n): SbtcDepositEvent | SbtcWithdrawalEvent {\n\tif (triggerType === \"sbtc_deposit\") {\n\t\treturn {\n\t\t\ttopic: \"completed-deposit\",\n\t\t\trequest_id: row.request_id ?? 0,\n\t\t\tsender: row.sender,\n\t\t\tamount: row.amount ?? \"0\",\n\t\t\tbitcoin_txid: row.bitcoin_txid,\n\t\t\tblock_height: row.block_height,\n\t\t\ttx_id: row.tx_id,\n\t\t} satisfies SbtcDepositEvent;\n\t}\n\treturn {\n\t\ttopic: row.topic as\n\t\t\t| \"withdrawal-create\"\n\t\t\t| \"withdrawal-accept\"\n\t\t\t| \"withdrawal-reject\",\n\t\trequest_id: row.request_id ?? 0,\n\t\tsender: row.sender,\n\t\tamount: row.amount,\n\t\tsweep_txid: row.sweep_txid,\n\t\tsettlement_confirmed: false,\n\t\tblock_height: row.block_height,\n\t\ttx_id: row.tx_id,\n\t} satisfies SbtcWithdrawalEvent;\n}\n\n/**\n * Match active sBTC chain webhooks against `sbtc_events` for one block\n * and write apply-envelope rows to `webhook_outbox`. Runs alongside\n * `emitChainOutbox` (which handles decoded_events). Same dedup-key scheme —\n * re-processing the same block is idempotent.\n *\n * `opts.rows` is this block's slice of `loadSbtcEventsForRange` (the batched\n * read); without it the block is read on its own. `sbtc_events` is a\n * SOURCE-plane table and `db` is the TARGET handle (an empty same-named table\n * exists there post-split), so rows never come from `db`.\n */\nexport async function emitSbtcOutbox(\n\tdb: Kysely<Database>,\n\tchainSubs: Webhook[],\n\tblockHeight: number,\n\tblockHash: string,\n\tblockTime?: Date,\n\topts?: {\n\t\treplayId?: string;\n\t\tsourceDb?: Kysely<Database>;\n\t\treader?: ChainDataReader;\n\t\trows?: SbtcEventRow[];\n\t},\n): Promise<number> {\n\tconst sbtcSubs = sbtcSubsOf(chainSubs);\n\tif (sbtcSubs.length === 0) return 0;\n\n\tconst sbtcRows =\n\t\topts?.rows ??\n\t\t(\n\t\t\tawait loadSbtcEventsForRange(sbtcSubs, blockHeight, blockHeight, opts)\n\t\t).get(blockHeight) ??\n\t\t[];\n\tif (sbtcRows.length === 0) return 0;\n\n\tconst replayId = opts?.replayId;\n\tconst outboxRows: InsertWebhookOutbox[] = [];\n\n\tfor (const sub of sbtcSubs) {\n\t\ttriggersOf(sub).forEach((trigger, triggerIndex) => {\n\t\t\tif (!isSbtcTriggerType(trigger.type)) return;\n\t\t\tconst meta: TriggerKeyMeta = {\n\t\t\t\twebhookId: sub.id,\n\t\t\t\ttriggerIndex,\n\t\t\t\ttriggerType: trigger.type,\n\t\t\t};\n\t\t\tfor (const row of sbtcRows) {\n\t\t\t\tif (!matchSbtcTrigger(trigger, row)) continue;\n\t\t\t\tconst event = buildSbtcEventPayload(trigger.type, row);\n\t\t\t\toutboxRows.push(\n\t\t\t\t\tapplyRow(\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\tblockHash,\n\t\t\t\t\t\trow.tx_id,\n\t\t\t\t\t\trow.event_index,\n\t\t\t\t\t\tevent as unknown as Record<string, unknown>,\n\t\t\t\t\t\treplayId,\n\t\t\t\t\t\tblockTime,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (outboxRows.length === 0) return 0;\n\tconst result = await db\n\t\t.insertInto(\"webhook_outbox\")\n\t\t.values(outboxRows)\n\t\t.onConflict((oc) => oc.columns([\"webhook_id\", \"dedup_key\"]).doNothing())\n\t\t.executeTakeFirst();\n\treturn Number(result.numInsertedOrUpdatedRows ?? 0);\n}\n\n/**\n * Emit the `sbtc_withdrawal_swept_confirmed` webhook. Unlike the per-block sBTC\n * path, this fires on a BITCOIN confirmation (async to Stacks blocks), so it\n * scans `sbtc_settlements` on its own cadence rather than per Stacks block.\n *\n * - Resumes from `last_settlement_scan_seq` on `db` (the target/control plane):\n * `sbtc_settlements.seq` is stamped when a sweep becomes confirmed, so it\n * follows commit order, which `confirmed_at` (a JS clock on insert, SQL\n * `now()` on update) does not. Until the first row has been scanned there is\n * no seq, and `last_settlement_scan_at` is the forward-only floor: null →\n * set it to `now` and emit nothing (no historical backfill, mirroring the\n * block cursor); set → scan `confirmed_at > floor`.\n * - Scans confirmed settlements past that point from the SOURCE plane\n * (`sbtc_settlements` is source), joined to the Stacks accept event + block\n * for the envelope anchor.\n * - Outbox rows and the watermark commit in one transaction. With\n * `opts.generation`, a reorg since it was read rejects the commit (the\n * rows anchor to Stacks blocks a reorg can orphan).\n * - Per-sub forward-only (`confirmed_at > sub.created_at`) + optional\n * requestId/sweepTxid filters; dedup on `(webhook_id, sweep_txid)` so a\n * reorg→un-confirm→re-confirm never double-fires.\n */\nexport async function emitSbtcSettlementOutbox(\n\tdb: Kysely<Database>,\n\tchainSubs: Webhook[],\n\topts?: {\n\t\tsourceDb?: Kysely<Database>;\n\t\treader?: ChainDataReader;\n\t\tnow?: Date;\n\t\t/** `reorg_generation` read before the scan; see `commitBatch`. */\n\t\tgeneration?: number;\n\t},\n): Promise<number> {\n\tconst settlementSubs = chainSubs.filter((sub) =>\n\t\ttriggersOf(sub).some((t) => t.type === SETTLEMENT_TRIGGER_TYPE),\n\t);\n\tif (settlementSubs.length === 0) return 0;\n\n\tconst now = opts?.now ?? new Date();\n\tconst state = await db\n\t\t.selectFrom(\"trigger_evaluator_state\")\n\t\t.select([\"last_settlement_scan_at\", \"last_settlement_scan_seq\"])\n\t\t.where(\"id\", \"=\", true)\n\t\t.executeTakeFirst();\n\n\tconst seqCursor =\n\t\tstate?.last_settlement_scan_seq == null\n\t\t\t? null\n\t\t\t: Number(state.last_settlement_scan_seq);\n\tconst floor = state?.last_settlement_scan_at ?? null;\n\t// Uninitialized → fast-forward, emit nothing (forward-only).\n\tif (seqCursor === null && floor === null) {\n\t\tawait db\n\t\t\t.updateTable(\"trigger_evaluator_state\")\n\t\t\t.set({ last_settlement_scan_at: now })\n\t\t\t.where(\"id\", \"=\", true)\n\t\t\t.execute();\n\t\treturn 0;\n\t}\n\n\tconst rows = await readerFor(opts).settlementsSince(\n\t\tseqCursor !== null\n\t\t\t? { afterSeq: seqCursor }\n\t\t\t: { confirmedAfter: floor as Date },\n\t);\n\tif (rows.length === 0) return 0;\n\n\tconst outboxRows: InsertWebhookOutbox[] = [];\n\tlet maxSeq = seqCursor ?? 0;\n\tfor (const row of rows) {\n\t\tif (row.seq > maxSeq) maxSeq = row.seq;\n\t\tconst confirmedAt = row.confirmed_at;\n\t\tif (!confirmedAt) continue;\n\t\tfor (const sub of settlementSubs) {\n\t\t\t// Forward-only: a sub only receives settlements confirmed after it existed.\n\t\t\tif (confirmedAt <= sub.created_at) continue;\n\t\t\tconst trigger = triggersOf(sub).find(\n\t\t\t\t(t) => t.type === SETTLEMENT_TRIGGER_TYPE,\n\t\t\t);\n\t\t\tif (!trigger || trigger.type !== SETTLEMENT_TRIGGER_TYPE) continue;\n\t\t\tif (\n\t\t\t\ttrigger.requestId !== undefined &&\n\t\t\t\ttrigger.requestId !== Number(row.request_id)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttrigger.sweepTxid !== undefined &&\n\t\t\t\ttrigger.sweepTxid !== row.sweep_txid\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\toutboxRows.push(settlementApplyRow(sub.id, row));\n\t\t}\n\t}\n\n\t// Advance the watermark past every settlement scanned this pass (even ones\n\t// filtered out per-sub — they're in the past for any future subscriber).\n\treturn db.transaction().execute(async (trx) => {\n\t\tconst cur = await trx\n\t\t\t.selectFrom(\"trigger_evaluator_state\")\n\t\t\t.select(\"reorg_generation\")\n\t\t\t.where(\"id\", \"=\", true)\n\t\t\t.forUpdate()\n\t\t\t.executeTakeFirst();\n\t\tif (\n\t\t\topts?.generation !== undefined &&\n\t\t\tNumber(cur?.reorg_generation ?? 0) !== opts.generation\n\t\t) {\n\t\t\t// A reorg landed mid-tick: leave the watermark so the next tick rescans.\n\t\t\treturn 0;\n\t\t}\n\t\tlet inserted = 0;\n\t\tif (outboxRows.length > 0) {\n\t\t\tawait trx\n\t\t\t\t.insertInto(\"webhook_outbox\")\n\t\t\t\t.values(outboxRows)\n\t\t\t\t.onConflict((oc) => oc.columns([\"webhook_id\", \"dedup_key\"]).doNothing())\n\t\t\t\t.execute();\n\t\t\tinserted = outboxRows.length;\n\t\t}\n\t\tawait trx\n\t\t\t.updateTable(\"trigger_evaluator_state\")\n\t\t\t.set({ last_settlement_scan_seq: maxSeq })\n\t\t\t.where(\"id\", \"=\", true)\n\t\t\t.execute();\n\t\treturn inserted;\n\t});\n}\n\nfunction settlementApplyRow(\n\twebhookId: string,\n\trow: SettlementScanRow,\n): InsertWebhookOutbox {\n\tconst blockTime = blockTimeOf({ timestamp: Number(row.block_timestamp) });\n\tconst event: SbtcWithdrawalSweptConfirmedEvent = {\n\t\ttopic: \"withdrawal-swept-confirmed\",\n\t\trequest_id: Number(row.request_id),\n\t\tsweep_txid: row.sweep_txid,\n\t\tbtc_confirmations: row.btc_confirmations,\n\t\tbtc_block_height: row.btc_block_height,\n\t\tconfirmed_at: row.confirmed_at ? row.confirmed_at.toISOString() : null,\n\t\tamount: row.amount,\n\t\tsender: row.sender,\n\t};\n\tconst payload: ChainApplyEnvelope = {\n\t\taction: \"apply\",\n\t\tblock_hash: row.block_hash,\n\t\tblock_height: Number(row.stacks_block_height),\n\t\tblock_time: blockTime ? blockTime.toISOString() : null,\n\t\ttx_id: row.tx_id,\n\t\tcanonical: true,\n\t\ttrigger: SETTLEMENT_TRIGGER_TYPE,\n\t\tevent,\n\t};\n\treturn {\n\t\twebhook_id: webhookId,\n\t\tkind: \"chain\",\n\t\tblock_height: Number(row.stacks_block_height),\n\t\tblock_hash: row.block_hash,\n\t\ttx_id: row.tx_id,\n\t\trow_pk: { sweep_txid: row.sweep_txid },\n\t\tevent_type: `chain.${SETTLEMENT_TRIGGER_TYPE}.apply`,\n\t\tpayload,\n\t\t// Settlement fires on a Bitcoin confirmation, not a Stacks block — dedup on\n\t\t// the sweep so a reorg→un-confirm→re-confirm cycle never re-delivers.\n\t\tdedup_key: `settlement:${webhookId}:${row.sweep_txid}`,\n\t\t...(blockTime ? { block_time: blockTime } : {}),\n\t};\n}\n"
17
17
  ],
18
- "mappings": "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",
19
- "debugId": "C124846F6D3815F864756E2164756E21",
18
+ "mappings": "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",
19
+ "debugId": "79ADCE67697CFB1864756E2164756E21",
20
20
  "names": []
21
21
  }
@@ -473,7 +473,7 @@ import { createHash as createHash2 } from "node:crypto";
473
473
  // package.json
474
474
  var package_default = {
475
475
  name: "@secondlayer/subgraphs",
476
- version: "8.1.0",
476
+ version: "8.1.1",
477
477
  description: "Describe the Stacks data you want as one TypeScript file; it fills itself and survives reorgs.",
478
478
  license: "MIT",
479
479
  repository: {
@@ -529,7 +529,7 @@ var package_default = {
529
529
  prepublishOnly: "bun run build"
530
530
  },
531
531
  dependencies: {
532
- "@secondlayer/shared": "^15.3.0",
532
+ "@secondlayer/shared": "^15.3.1",
533
533
  "@secondlayer/stacks": "^6.5.4",
534
534
  "@secondlayer/verify": "^0.6.3",
535
535
  esbuild: "^0.28.2",
@@ -1103,5 +1103,5 @@ export {
1103
1103
  generateSubgraphSQL
1104
1104
  };
1105
1105
 
1106
- //# debugId=A81606C384BC016664756E2164756E21
1106
+ //# debugId=707A7F013B1C122F64756E2164756E21
1107
1107
  //# sourceMappingURL=index.js.map
@@ -9,6 +9,6 @@
9
9
  "/**\n * Verifiable subgraphs: the determinism contract, the derived level and the\n * pin. Pure (node:crypto only) so the bundler's deploy scan, the API and the\n * runtime realm all read the same rules.\n *\n * A subgraph is never configured as verifiable. Its level is derived from\n * its sources plus a scan of the bundled handler, and only a subgraph whose\n * every input is provable today (`state`: named state writes) has the contract\n * enforced. Everything else gets the same findings as advice.\n */\nimport { createHash } from \"node:crypto\";\nimport type { SubgraphVerification } from \"@secondlayer/shared/schemas/subgraphs\";\nimport pkg from \"../package.json\" with { type: \"json\" };\nimport type { SubgraphDefinition, SubgraphFilter } from \"./types.ts\";\n\nexport type { SubgraphVerification };\n\n/** Runtime identity baked into every pin: matcher, decode and flush semantics. */\nexport const SUBGRAPHS_RUNTIME: string = `@secondlayer/subgraphs@${pkg.version}`;\n\n// ── Determinism contract ────────────────────────────────────────────────\n\n/**\n * Globals a handler may not touch, with the reason shown to the developer.\n * The deploy scan reports them; the realm replaces each with a getter that\n * throws `NondeterminismError`.\n */\nexport const FORBIDDEN_GLOBALS: Readonly<Record<string, string>> = {\n\tDate: \"wall-clock time differs per run\",\n\tperformance: \"timers differ per run\",\n\tprocess: \"host environment differs per run\",\n\tfetch: \"network reads are not chain inputs\",\n\tcrypto: \"randomness differs per run\",\n\tsetTimeout: \"scheduling order differs per run\",\n\tsetInterval: \"scheduling order differs per run\",\n\tsetImmediate: \"scheduling order differs per run\",\n\tclearTimeout: \"scheduling order differs per run\",\n\tclearInterval: \"scheduling order differs per run\",\n\tqueueMicrotask: \"scheduling order differs per run\",\n\tWeakRef: \"garbage collection timing differs per run\",\n\tFinalizationRegistry: \"garbage collection timing differs per run\",\n\tAtomics: \"shared memory is not single-threaded\",\n\tSharedArrayBuffer: \"shared memory is not single-threaded\",\n\tIntl: \"locale and time zone data differ per host\",\n\tTemporal: \"locale and time zone data differ per host\",\n\teval: \"generated code hides inputs from the scan\",\n\tWebAssembly: \"compiled code hides inputs from the scan\",\n\tShadowRealm: \"a nested realm escapes the allow-list\",\n\trequire: \"imports must be bundled into the handler\",\n};\n\n/**\n * Globals a handler may use: ECMAScript built-ins whose results are fully\n * specified, plus deterministic host encoders. `Math` is narrowed separately\n * ({@link ALLOWED_MATH}).\n */\nexport const ALLOWED_GLOBALS: readonly string[] = [\n\t\"undefined\",\n\t\"NaN\",\n\t\"Infinity\",\n\t\"globalThis\",\n\t\"isNaN\",\n\t\"isFinite\",\n\t\"parseInt\",\n\t\"parseFloat\",\n\t\"decodeURI\",\n\t\"decodeURIComponent\",\n\t\"encodeURI\",\n\t\"encodeURIComponent\",\n\t\"escape\",\n\t\"unescape\",\n\t\"Object\",\n\t\"Function\",\n\t\"Array\",\n\t\"Number\",\n\t\"Boolean\",\n\t\"String\",\n\t\"Symbol\",\n\t\"BigInt\",\n\t\"Math\",\n\t\"JSON\",\n\t\"Reflect\",\n\t\"Proxy\",\n\t\"Promise\",\n\t\"Map\",\n\t\"Set\",\n\t\"WeakMap\",\n\t\"WeakSet\",\n\t\"RegExp\",\n\t\"Iterator\",\n\t\"DisposableStack\",\n\t\"AsyncDisposableStack\",\n\t\"Error\",\n\t\"AggregateError\",\n\t\"SuppressedError\",\n\t\"EvalError\",\n\t\"RangeError\",\n\t\"ReferenceError\",\n\t\"SyntaxError\",\n\t\"TypeError\",\n\t\"URIError\",\n\t\"ArrayBuffer\",\n\t\"DataView\",\n\t\"Int8Array\",\n\t\"Uint8Array\",\n\t\"Uint8ClampedArray\",\n\t\"Int16Array\",\n\t\"Uint16Array\",\n\t\"Int32Array\",\n\t\"Uint32Array\",\n\t\"Float16Array\",\n\t\"Float32Array\",\n\t\"Float64Array\",\n\t\"BigInt64Array\",\n\t\"BigUint64Array\",\n\t\"TextEncoder\",\n\t\"TextDecoder\",\n\t\"atob\",\n\t\"btoa\",\n\t\"console\",\n];\n\n/** `Math` members whose results are exact on every engine. The rest\n * (`sin`, `pow`, `log`, …) are implementation-approximated. */\nexport const ALLOWED_MATH: readonly string[] = [\n\t\"abs\",\n\t\"min\",\n\t\"max\",\n\t\"floor\",\n\t\"ceil\",\n\t\"trunc\",\n\t\"sign\",\n\t\"round\",\n\t\"E\",\n\t\"LN10\",\n\t\"LN2\",\n\t\"LOG10E\",\n\t\"LOG2E\",\n\t\"PI\",\n\t\"SQRT1_2\",\n\t\"SQRT2\",\n];\n\n/** Methods whose output depends on the host's locale data. */\nexport const LOCALE_METHODS: readonly string[] = [\n\t\"toLocaleString\",\n\t\"toLocaleDateString\",\n\t\"toLocaleTimeString\",\n\t\"toLocaleUpperCase\",\n\t\"toLocaleLowerCase\",\n\t\"localeCompare\",\n];\n\n/**\n * One thing the deploy scan found in a bundled handler.\n *\n * - `nondeterministic`: breaks the determinism contract. Fails the deploy of\n * a state subgraph; advice for everything else.\n * - `needs-events`: deterministic, but reads something only re-execution proofs cover\n * (`ctx.client`). Raises the level instead of failing.\n */\nexport interface HandlerFinding {\n\tkind: \"nondeterministic\" | \"needs-events\";\n\t/** What was used, e.g. `Date`, `Math.random`, `import()`, `ctx.client`. */\n\tname: string;\n\treason: string;\n\t/** Original source file when a sourcemap was available, else the bundle. */\n\tfile: string;\n\t/** 1-based. */\n\tline: number;\n\t/** 1-based. */\n\tcolumn: number;\n}\n\n/** Formats a handler finding as `file:line:column name: reason`. */\nexport function formatFinding(f: HandlerFinding): string {\n\treturn `${f.file}:${f.line}:${f.column} ${f.name}: ${f.reason}`;\n}\n\n// ── Derived level ───────────────────────────────────────────────────────\n\n/**\n * Sources whose every field is a named state write: provable per block from\n * the header-backed witness plus `state_writes`. Not `map_insert`: storage\n * holds `(some v)` for an insert and a set alike, so telling them apart takes\n * re-execution (event proofs).\n */\nconst STATE_SOURCE_TYPES: ReadonlySet<string> = new Set([\n\t\"var_set\",\n\t\"map_set\",\n\t\"map_delete\",\n]);\n\nconst LEVEL_RANK = { state: 0, events: 1, none: 2 } as const;\n\n/** Handler findings listed in `reasons`; the rest are counted. */\nconst MAX_LISTED_FINDINGS = 10;\n\n/**\n * Derive how far a subgraph's rows can be checked. Level = the highest any\n * source or handler read needs. `reasons` lists everything standing between\n * the subgraph and checkable rows; a `state` subgraph with any reason is\n * refused at deploy, so every stored `state` row has none. Never configured,\n * never a flag.\n */\nexport function deriveVerification(\n\tdef: Pick<SubgraphDefinition, \"sources\" | \"backfillMode\">,\n\tfindings: readonly HandlerFinding[] = [],\n): SubgraphVerification {\n\tlet level: keyof typeof LEVEL_RANK = \"state\";\n\tconst raise = (to: keyof typeof LEVEL_RANK) => {\n\t\tif (LEVEL_RANK[to] > LEVEL_RANK[level]) level = to;\n\t};\n\tconst reasons: string[] = [];\n\n\tfor (const [name, source] of Object.entries(def.sources ?? {})) {\n\t\tconst filter = source as SubgraphFilter & { trait?: string };\n\t\tif (filter.trait) {\n\t\t\traise(\"none\");\n\t\t\treasons.push(\n\t\t\t\t`source \"${name}\": trait scope needs a proven contract registry`,\n\t\t\t);\n\t\t} else if (filter.type === \"map_insert\") {\n\t\t\traise(\"events\");\n\t\t\treasons.push(\n\t\t\t\t`map_insert source \"${name}\": map_insert vs map_set needs event proofs`,\n\t\t\t);\n\t\t} else if (!STATE_SOURCE_TYPES.has(filter.type)) {\n\t\t\traise(\"events\");\n\t\t\treasons.push(`${filter.type} source \"${name}\" needs event proofs`);\n\t\t}\n\t}\n\tif (def.backfillMode === \"concurrent\") {\n\t\traise(\"none\");\n\t\treasons.push(\"backfillMode concurrent: tip-first order is not chain order\");\n\t}\n\tif (findings.some((f) => f.kind === \"needs-events\")) raise(\"events\");\n\t// A large bundled library can trip dozens of findings; list a few.\n\tfor (const f of findings.slice(0, MAX_LISTED_FINDINGS)) {\n\t\treasons.push(\n\t\t\tf.kind === \"needs-events\"\n\t\t\t\t? `${formatFinding(f)} (needs event proofs)`\n\t\t\t\t: formatFinding(f),\n\t\t);\n\t}\n\tif (findings.length > MAX_LISTED_FINDINGS) {\n\t\treasons.push(\n\t\t\t`…and ${findings.length - MAX_LISTED_FINDINGS} more handler findings`,\n\t\t);\n\t}\n\n\treturn {\n\t\tlevel,\n\t\treasons,\n\t\tunproven:\n\t\t\treasons.length === 0\n\t\t\t\t? [\n\t\t\t\t\t\t\"tx attribution of writes: event.tx, _tx_id (needs event proofs)\",\n\t\t\t\t\t\t\"intermediate writes within a block (needs event proofs)\",\n\t\t\t\t\t]\n\t\t\t\t: [],\n\t};\n}\n\n/**\n * Tells whether a deploy must be refused for breaking determinism.\n *\n * It is refused when the sources are provable (`state`), so the determinism\n * contract is enforced, and the scan broke it.\n */\nexport function isDeterminismViolation(v: SubgraphVerification): boolean {\n\treturn v.level === \"state\" && v.reasons.length > 0;\n}\n\n// ── Pin ─────────────────────────────────────────────────────────────────\n\n/** What a pin is computed from: schema hash, handler code, network. */\nexport interface PinInput {\n\t/** Existing `schema_hash` (name + schema + sources). */\n\tschemaHash: string;\n\t/** Bundled ESM exactly as stored in `subgraphs.handler_code`. */\n\thandlerCode: string;\n\tstartBlock?: number | null;\n\tnetwork: string;\n\t/** Defaults to {@link SUBGRAPHS_RUNTIME}. */\n\truntime?: string;\n}\n\nfunction sha256(input: string): string {\n\treturn createHash(\"sha256\").update(input).digest(\"hex\");\n}\n\n/** What a pin commits to, as stored in `pin_preimage`. */\nexport interface PinFields {\n\t/** sha256 of the bundled handler, hex. */\n\thandlerHash: string;\n\tnetwork: string;\n\truntime: string;\n\tschemaHash: string;\n\tstartBlock: number | null;\n}\n\n/**\n * The canonical JSON a pin is the sha256 of: fixed key order, primitives\n * only. Stored beside the pin so anyone can recompute it from the served\n * handler code.\n */\nexport function pinPreimage(input: PinInput): string {\n\tconst fields: PinFields = {\n\t\thandlerHash: sha256(input.handlerCode),\n\t\tnetwork: input.network,\n\t\truntime: input.runtime ?? SUBGRAPHS_RUNTIME,\n\t\tschemaHash: input.schemaHash,\n\t\tstartBlock: input.startBlock ?? null,\n\t};\n\treturn JSON.stringify(fields);\n}\n\n/**\n * Content hash over everything that shapes a subgraph's rows. Unlike\n * `schema_hash`, it changes with the handler, `startBlock` and runtime, so\n * two deploys with the same pin produce the same rows from the same chain.\n */\nexport function computePin(input: PinInput): string {\n\treturn sha256(pinPreimage(input));\n}\n"
10
10
  ],
11
11
  "mappings": "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",
12
- "debugId": "A81606C384BC016664756E2164756E21",
12
+ "debugId": "707A7F013B1C122F64756E2164756E21",
13
13
  "names": []
14
14
  }