@secondlayer/shared 11.15.2 → 11.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,10 +9,10 @@
9
9
  "import type { Database } from \"./types.ts\";\n\n// The physical source-table columns the public read API (packages/api) actually\n// reads via getSourceDb(). This is the read contract between the indexer (which\n// owns the write schema) and the API (which reads it raw). A column rename or\n// removal on the producer side that isn't reflected here is caught by the\n// snapshot drift test; the `satisfies` clause guarantees every entry is a real\n// table + column today.\n//\n// Computed/aliased read expressions are intentionally excluded — they are not\n// part of the producer contract: `cursor`/`block_time` where derived in SQL\n// rather than stored, window ranks (stream_event_index), and JSONB extractions\n// from `events.data`. Generated bookkeeping columns (created_at/updated_at) are\n// excluded unless a read path selects them.\nexport const SOURCE_READ_COLUMNS = {\n\tblocks: [\n\t\t\"burn_block_hash\",\n\t\t\"burn_block_height\",\n\t\t\"canonical\",\n\t\t\"hash\",\n\t\t\"height\",\n\t\t\"parent_hash\",\n\t\t\"timestamp\",\n\t],\n\tdecoded_events: [\n\t\t\"amount\",\n\t\t\"asset_identifier\",\n\t\t\"block_height\",\n\t\t\"canonical\",\n\t\t\"contract_id\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"event_type\",\n\t\t\"memo\",\n\t\t\"payload\",\n\t\t\"recipient\",\n\t\t\"sender\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t\t\"value\",\n\t],\n\ttransactions: [\n\t\t\"block_height\",\n\t\t\"contract_id\",\n\t\t\"function_args\",\n\t\t\"function_name\",\n\t\t\"raw_result\",\n\t\t\"raw_tx\",\n\t\t\"sender\",\n\t\t\"status\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t\t\"type\",\n\t],\n\tmempool_transactions: [\n\t\t\"contract_id\",\n\t\t\"function_args\",\n\t\t\"function_name\",\n\t\t\"raw_tx\",\n\t\t\"received_at\",\n\t\t\"sender\",\n\t\t\"seq\",\n\t\t\"tx_id\",\n\t\t\"type\",\n\t],\n\tpox4_calls: [\n\t\t\"aggregated_amount_ustx\",\n\t\t\"aggregated_signer_index\",\n\t\t\"amount_ustx\",\n\t\t\"auth_allowed\",\n\t\t\"auth_id\",\n\t\t\"auth_period\",\n\t\t\"auth_topic\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"burn_block_height\",\n\t\t\"caller\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"delegate_to\",\n\t\t\"end_cycle\",\n\t\t\"function_name\",\n\t\t\"lock_period\",\n\t\t\"max_amount\",\n\t\t\"pox_addr_btc\",\n\t\t\"pox_addr_hashbytes\",\n\t\t\"pox_addr_version\",\n\t\t\"result_ok\",\n\t\t\"reward_cycle\",\n\t\t\"signer_key\",\n\t\t\"signer_signature\",\n\t\t\"source_cursor\",\n\t\t\"stacker\",\n\t\t\"start_cycle\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tpox5_events: [\n\t\t\"amount_sats\",\n\t\t\"amount_ustx\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"bond_index\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"data\",\n\t\t\"event_index\",\n\t\t\"first_reward_cycle\",\n\t\t\"is_l1_lock\",\n\t\t\"reward_cycle\",\n\t\t\"signer\",\n\t\t\"signer_key\",\n\t\t\"signer_manager\",\n\t\t\"staker\",\n\t\t\"topic\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t\t\"unlock_burn_height\",\n\t\t\"unlock_cycle\",\n\t],\n\tsbtc_events: [\n\t\t\"amount\",\n\t\t\"bitcoin_txid\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"burn_hash\",\n\t\t\"burn_height\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"fee\",\n\t\t\"governance_contract_type\",\n\t\t\"governance_new_contract\",\n\t\t\"max_fee\",\n\t\t\"output_index\",\n\t\t\"recipient_btc_hashbytes\",\n\t\t\"recipient_btc_version\",\n\t\t\"request_id\",\n\t\t\"sender\",\n\t\t\"signer_address\",\n\t\t\"signer_aggregate_pubkey\",\n\t\t\"signer_bitmap\",\n\t\t\"signer_keys_count\",\n\t\t\"signer_threshold\",\n\t\t\"sweep_txid\",\n\t\t\"topic\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tsbtc_token_events: [\n\t\t\"amount\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"event_type\",\n\t\t\"memo\",\n\t\t\"recipient\",\n\t\t\"sender\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tbns_name_events: [\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"bns_id\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"fqn\",\n\t\t\"hashed_salted_fqn_preorder\",\n\t\t\"imported_at\",\n\t\t\"name\",\n\t\t\"namespace\",\n\t\t\"owner\",\n\t\t\"preordered_by\",\n\t\t\"registered_at\",\n\t\t\"renewal_height\",\n\t\t\"stx_burn\",\n\t\t\"topic\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tbns_namespace_events: [\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"launched_at\",\n\t\t\"lifetime\",\n\t\t\"manager\",\n\t\t\"manager_frozen\",\n\t\t\"manager_transfers_disabled\",\n\t\t\"namespace\",\n\t\t\"price_frozen\",\n\t\t\"price_function\",\n\t\t\"revealed_at\",\n\t\t\"status\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tbns_marketplace_events: [\n\t\t\"action\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"bns_id\",\n\t\t\"canonical\",\n\t\t\"commission\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"price_ustx\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tbns_names: [\n\t\t\"bns_id\",\n\t\t\"fqn\",\n\t\t\"last_event_at\",\n\t\t\"last_event_cursor\",\n\t\t\"name\",\n\t\t\"namespace\",\n\t\t\"owner\",\n\t\t\"registered_at\",\n\t\t\"renewal_height\",\n\t],\n\tbns_namespaces: [\n\t\t\"last_event_at\",\n\t\t\"last_event_cursor\",\n\t\t\"launched_at\",\n\t\t\"lifetime\",\n\t\t\"manager\",\n\t\t\"manager_frozen\",\n\t\t\"name_count\",\n\t\t\"namespace\",\n\t\t\"price_frozen\",\n\t],\n\tburn_block_rewards: [\n\t\t\"amount_sats\",\n\t\t\"burn_amount\",\n\t\t\"burn_block_hash\",\n\t\t\"burn_block_height\",\n\t\t\"cursor\",\n\t\t\"recipient_btc\",\n\t\t\"reward_index\",\n\t],\n\tburn_block_reward_slots: [\n\t\t\"burn_block_hash\",\n\t\t\"burn_block_height\",\n\t\t\"cursor\",\n\t\t\"holder_btc\",\n\t\t\"slot_index\",\n\t],\n\tevents: [\"block_height\", \"data\", \"event_index\", \"tx_id\", \"type\"],\n\tchain_reorgs: [\"detected_at\"],\n} as const satisfies {\n\treadonly [T in keyof Database]?: readonly (keyof Database[T])[];\n};\n\n/** Portable column type for the Index read domain (a lean, ORM-agnostic vocab). */\nexport type IndexColumnType =\n\t| \"text\"\n\t| \"int\"\n\t| \"boolean\"\n\t| \"timestamp\"\n\t| \"jsonb\";\n\nexport interface IndexColumn {\n\ttype: IndexColumnType;\n\t/** SELECT type includes `| null`. Omitted = NOT NULL. */\n\tnullable?: boolean;\n}\n\n// The portable TS/SQL type for every column in SOURCE_READ_COLUMNS, single-sourced\n// from the `Database` interface (the producer's typed schema). This is what lets\n// `sl codegen index` emit a typed ORM/JSON-Schema for the public Index domain so a\n// read mirror is fully typed and can't drift from the API. The drift test\n// (source-read-columns.test.ts) asserts this covers exactly SOURCE_READ_COLUMNS;\n// the `satisfies` clause guarantees a type entry for every read table.\n//\n// `string` amount/value columns (e.g. amount_ustx, fee, price_ustx) are NUMERIC in\n// Postgres surfaced as strings — `text` here is lossless for a read mirror. `number`\n// columns map to `int`. Enum string-unions (topic, status, …) map to `text`.\nexport const SOURCE_READ_TYPES = {\n\tblocks: {\n\t\tburn_block_hash: { type: \"text\", nullable: true },\n\t\tburn_block_height: { type: \"int\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\thash: { type: \"text\" },\n\t\theight: { type: \"int\" },\n\t\tparent_hash: { type: \"text\" },\n\t\ttimestamp: { type: \"int\" },\n\t},\n\tdecoded_events: {\n\t\tamount: { type: \"text\", nullable: true },\n\t\tasset_identifier: { type: \"text\", nullable: true },\n\t\tblock_height: { type: \"int\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcontract_id: { type: \"text\", nullable: true },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tevent_type: { type: \"text\" },\n\t\tmemo: { type: \"text\", nullable: true },\n\t\tpayload: { type: \"jsonb\", nullable: true },\n\t\trecipient: { type: \"text\", nullable: true },\n\t\tsender: { type: \"text\", nullable: true },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t\tvalue: { type: \"text\", nullable: true },\n\t},\n\ttransactions: {\n\t\tblock_height: { type: \"int\" },\n\t\tcontract_id: { type: \"text\", nullable: true },\n\t\tfunction_args: { type: \"jsonb\", nullable: true },\n\t\tfunction_name: { type: \"text\", nullable: true },\n\t\traw_result: { type: \"text\", nullable: true },\n\t\traw_tx: { type: \"text\" },\n\t\tsender: { type: \"text\" },\n\t\tstatus: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t\ttype: { type: \"text\" },\n\t},\n\tmempool_transactions: {\n\t\tcontract_id: { type: \"text\", nullable: true },\n\t\tfunction_args: { type: \"jsonb\", nullable: true },\n\t\tfunction_name: { type: \"text\", nullable: true },\n\t\traw_tx: { type: \"text\" },\n\t\treceived_at: { type: \"timestamp\" },\n\t\tsender: { type: \"text\" },\n\t\tseq: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttype: { type: \"text\" },\n\t},\n\tpox4_calls: {\n\t\taggregated_amount_ustx: { type: \"text\", nullable: true },\n\t\taggregated_signer_index: { type: \"int\", nullable: true },\n\t\tamount_ustx: { type: \"text\", nullable: true },\n\t\tauth_allowed: { type: \"boolean\", nullable: true },\n\t\tauth_id: { type: \"text\", nullable: true },\n\t\tauth_period: { type: \"int\", nullable: true },\n\t\tauth_topic: { type: \"text\", nullable: true },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tburn_block_height: { type: \"int\" },\n\t\tcaller: { type: \"text\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tdelegate_to: { type: \"text\", nullable: true },\n\t\tend_cycle: { type: \"int\", nullable: true },\n\t\tfunction_name: { type: \"text\" },\n\t\tlock_period: { type: \"int\", nullable: true },\n\t\tmax_amount: { type: \"text\", nullable: true },\n\t\tpox_addr_btc: { type: \"text\", nullable: true },\n\t\tpox_addr_hashbytes: { type: \"text\", nullable: true },\n\t\tpox_addr_version: { type: \"int\", nullable: true },\n\t\tresult_ok: { type: \"boolean\" },\n\t\treward_cycle: { type: \"int\", nullable: true },\n\t\tsigner_key: { type: \"text\", nullable: true },\n\t\tsigner_signature: { type: \"text\", nullable: true },\n\t\tsource_cursor: { type: \"text\" },\n\t\tstacker: { type: \"text\", nullable: true },\n\t\tstart_cycle: { type: \"int\", nullable: true },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tpox5_events: {\n\t\tamount_sats: { type: \"text\", nullable: true },\n\t\tamount_ustx: { type: \"text\", nullable: true },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tbond_index: { type: \"int\", nullable: true },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tdata: { type: \"jsonb\", nullable: true },\n\t\tevent_index: { type: \"int\" },\n\t\tfirst_reward_cycle: { type: \"int\", nullable: true },\n\t\tis_l1_lock: { type: \"boolean\", nullable: true },\n\t\treward_cycle: { type: \"int\", nullable: true },\n\t\tsigner: { type: \"text\", nullable: true },\n\t\tsigner_key: { type: \"text\", nullable: true },\n\t\tsigner_manager: { type: \"text\", nullable: true },\n\t\tstaker: { type: \"text\", nullable: true },\n\t\ttopic: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t\tunlock_burn_height: { type: \"int\", nullable: true },\n\t\tunlock_cycle: { type: \"int\", nullable: true },\n\t},\n\tsbtc_events: {\n\t\tamount: { type: \"text\", nullable: true },\n\t\tbitcoin_txid: { type: \"text\", nullable: true },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tburn_hash: { type: \"text\", nullable: true },\n\t\tburn_height: { type: \"int\", nullable: true },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tfee: { type: \"text\", nullable: true },\n\t\tgovernance_contract_type: { type: \"int\", nullable: true },\n\t\tgovernance_new_contract: { type: \"text\", nullable: true },\n\t\tmax_fee: { type: \"text\", nullable: true },\n\t\toutput_index: { type: \"int\", nullable: true },\n\t\trecipient_btc_hashbytes: { type: \"text\", nullable: true },\n\t\trecipient_btc_version: { type: \"int\", nullable: true },\n\t\trequest_id: { type: \"int\", nullable: true },\n\t\tsender: { type: \"text\", nullable: true },\n\t\tsigner_address: { type: \"text\", nullable: true },\n\t\tsigner_aggregate_pubkey: { type: \"text\", nullable: true },\n\t\tsigner_bitmap: { type: \"text\", nullable: true },\n\t\tsigner_keys_count: { type: \"int\", nullable: true },\n\t\tsigner_threshold: { type: \"int\", nullable: true },\n\t\tsweep_txid: { type: \"text\", nullable: true },\n\t\ttopic: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tsbtc_token_events: {\n\t\tamount: { type: \"text\" },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tevent_type: { type: \"text\" },\n\t\tmemo: { type: \"text\", nullable: true },\n\t\trecipient: { type: \"text\", nullable: true },\n\t\tsender: { type: \"text\", nullable: true },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tbns_name_events: {\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tbns_id: { type: \"text\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tfqn: { type: \"text\" },\n\t\thashed_salted_fqn_preorder: { type: \"text\", nullable: true },\n\t\timported_at: { type: \"int\", nullable: true },\n\t\tname: { type: \"text\" },\n\t\tnamespace: { type: \"text\" },\n\t\towner: { type: \"text\", nullable: true },\n\t\tpreordered_by: { type: \"text\", nullable: true },\n\t\tregistered_at: { type: \"int\", nullable: true },\n\t\trenewal_height: { type: \"int\", nullable: true },\n\t\tstx_burn: { type: \"text\", nullable: true },\n\t\ttopic: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tbns_namespace_events: {\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tlaunched_at: { type: \"int\", nullable: true },\n\t\tlifetime: { type: \"int\", nullable: true },\n\t\tmanager: { type: \"text\", nullable: true },\n\t\tmanager_frozen: { type: \"boolean\", nullable: true },\n\t\tmanager_transfers_disabled: { type: \"boolean\", nullable: true },\n\t\tnamespace: { type: \"text\" },\n\t\tprice_frozen: { type: \"boolean\", nullable: true },\n\t\tprice_function: { type: \"text\", nullable: true },\n\t\trevealed_at: { type: \"int\", nullable: true },\n\t\tstatus: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tbns_marketplace_events: {\n\t\taction: { type: \"text\" },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tbns_id: { type: \"text\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcommission: { type: \"text\", nullable: true },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tprice_ustx: { type: \"text\", nullable: true },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tbns_names: {\n\t\tbns_id: { type: \"text\" },\n\t\tfqn: { type: \"text\" },\n\t\tlast_event_at: { type: \"timestamp\" },\n\t\tlast_event_cursor: { type: \"text\" },\n\t\tname: { type: \"text\" },\n\t\tnamespace: { type: \"text\" },\n\t\towner: { type: \"text\" },\n\t\tregistered_at: { type: \"int\", nullable: true },\n\t\trenewal_height: { type: \"int\", nullable: true },\n\t},\n\tbns_namespaces: {\n\t\tlast_event_at: { type: \"timestamp\" },\n\t\tlast_event_cursor: { type: \"text\" },\n\t\tlaunched_at: { type: \"int\", nullable: true },\n\t\tlifetime: { type: \"int\", nullable: true },\n\t\tmanager: { type: \"text\", nullable: true },\n\t\tmanager_frozen: { type: \"boolean\" },\n\t\tname_count: { type: \"int\" },\n\t\tnamespace: { type: \"text\" },\n\t\tprice_frozen: { type: \"boolean\" },\n\t},\n\tburn_block_rewards: {\n\t\tamount_sats: { type: \"text\" },\n\t\tburn_amount: { type: \"text\" },\n\t\tburn_block_hash: { type: \"text\" },\n\t\tburn_block_height: { type: \"int\" },\n\t\tcursor: { type: \"text\" },\n\t\trecipient_btc: { type: \"text\" },\n\t\treward_index: { type: \"int\" },\n\t},\n\tburn_block_reward_slots: {\n\t\tburn_block_hash: { type: \"text\" },\n\t\tburn_block_height: { type: \"int\" },\n\t\tcursor: { type: \"text\" },\n\t\tholder_btc: { type: \"text\" },\n\t\tslot_index: { type: \"int\" },\n\t},\n\tevents: {\n\t\tblock_height: { type: \"int\" },\n\t\tdata: { type: \"jsonb\" },\n\t\tevent_index: { type: \"int\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttype: { type: \"text\" },\n\t},\n\tchain_reorgs: {\n\t\tdetected_at: { type: \"timestamp\" },\n\t},\n} as const satisfies Record<\n\tkeyof typeof SOURCE_READ_COLUMNS,\n\tRecord<string, IndexColumn>\n>;\n\nexport type IndexPrimaryKey = readonly string[] | null;\n\n// Primary key per read table, for codegen targets that require a model identity\n// (Prisma). Every listed column must be a read column (drift-tested). `null` = no\n// usable read-column key — the physical PK is a synthetic id excluded from the\n// read contract (chain_reorgs) — so Prisma omits the table. `events` uses its\n// natural unique (tx_id, event_index); its physical PK is a synthetic uuid not\n// surfaced in the read set.\nexport const SOURCE_READ_PKS = {\n\tblocks: [\"height\"],\n\tdecoded_events: [\"cursor\"],\n\ttransactions: [\"tx_id\"],\n\tmempool_transactions: [\"seq\"],\n\tpox4_calls: [\"cursor\"],\n\tpox5_events: [\"cursor\"],\n\tsbtc_events: [\"cursor\"],\n\tsbtc_token_events: [\"cursor\"],\n\tbns_name_events: [\"cursor\"],\n\tbns_namespace_events: [\"cursor\"],\n\tbns_marketplace_events: [\"cursor\"],\n\tbns_names: [\"fqn\"],\n\tbns_namespaces: [\"namespace\"],\n\tburn_block_rewards: [\"cursor\"],\n\tburn_block_reward_slots: [\"cursor\"],\n\tevents: [\"tx_id\", \"event_index\"],\n\tchain_reorgs: null,\n} as const satisfies Record<keyof typeof SOURCE_READ_COLUMNS, IndexPrimaryKey>;\n",
10
10
  "import { type RawBuilder, sql } from \"kysely\";\n\n/**\n * Safely encode a JS value as a JSONB literal for Kysely inserts/updates.\n * Kysely + postgres.js double-encodes JSON when using parameterized queries\n * with ::jsonb casts. This uses sql.raw to inline a properly escaped literal.\n *\n * Generic parameter lets callers set the RawBuilder's output type so they\n * don't need to cast at the insert site. Default is `unknown` — widen at\n * the call site when the column type is narrower, e.g. `jsonb<MyShape>(...)`.\n */\nexport function jsonb<T = unknown>(value: T): RawBuilder<T> {\n\tconst escaped = JSON.stringify(value, (_k, v) =>\n\t\ttypeof v === \"bigint\" ? v.toString() : v,\n\t).replace(/'/g, \"''\");\n\treturn sql`${sql.raw(`'${escaped}'::jsonb`)}`;\n}\n\n/**\n * Safely parse a JSONB value from the database.\n * Handles double-encoded strings where postgres.js returns a JSON string\n * instead of a parsed object.\n */\nexport function parseJsonb<T = unknown>(value: unknown): T {\n\tif (typeof value === \"string\") {\n\t\ttry {\n\t\t\treturn JSON.parse(value) as T;\n\t\t} catch {\n\t\t\treturn value as T;\n\t\t}\n\t}\n\treturn (value ?? {}) as T;\n}\n",
11
11
  "/**\n * Per-migration DB-plane gating for the source/target split.\n *\n * Under the split, SOURCE (chain DB) holds only chain+decoded tables — the\n * control-plane tables were dropped to reclaim space — while TARGET (platform\n * DB) holds the control plane. `migrate.ts` still runs EVERY migration on EVERY\n * database (kysely integrity: the provider set must never be filtered per-DB, or\n * kysely throws \"previously executed migration is missing\" because each DB's\n * `kysely_migration` already records all of them). Instead, `migrate.ts` sets a\n * role before each pass and a migration gates its DDL with the helpers below: a\n * control migration's `up()` is a no-op on SOURCE but is still recorded applied,\n * so there is no missing-migration error and no re-run.\n *\n * `'both'` is single-DB / collapsed-split mode (dev / OSS / CI): every helper\n * runs, identical to pre-split behavior.\n *\n * Authoring a new migration under the split:\n * export async function up(db: Kysely<unknown>): Promise<void> {\n * await onControlPlane(() => sql`ALTER TABLE accounts ADD COLUMN …`.execute(db));\n * await onChainPlane(() => sql`ALTER TABLE blocks ADD COLUMN …`.execute(db));\n * // schema-wide / mixed statements: leave unwrapped (run on both).\n * }\n */\n\nexport type MigrationRole = \"source\" | \"target\" | \"both\";\n\n// Module-level singleton: migrate runs sequentially in one process, one target\n// at a time, so there is no concurrency to guard.\nlet currentRole: MigrationRole = \"both\";\n\nexport function setMigrationRole(role: MigrationRole): void {\n\tcurrentRole = role;\n}\n\nexport function getMigrationRole(): MigrationRole {\n\treturn currentRole;\n}\n\n/** Run control-plane (TARGET) DDL only when this pass targets the control plane. */\nexport async function onControlPlane(fn: () => Promise<void>): Promise<void> {\n\tif (currentRole === \"target\" || currentRole === \"both\") await fn();\n}\n\n/** Run chain/decoded (SOURCE) DDL only when this pass targets the chain plane. */\nexport async function onChainPlane(fn: () => Promise<void>): Promise<void> {\n\tif (currentRole === \"source\" || currentRole === \"both\") await fn();\n}\n",
12
- "import type { Database } from \"./types.ts\";\n\nexport type DbPlane = \"source\" | \"target\" | \"both\";\n\n/**\n * Canonical table → DB-plane mapping for the source/target split.\n *\n * SOURCE = chain + decoded (the `postgres` instance); TARGET = control plane\n * (the `postgres-platform` instance). `both` = present/used on both planes\n * (`service_heartbeats`: the indexer writes its row on SOURCE, the\n * subgraph-processor writes its row on TARGET).\n *\n * `satisfies Record<keyof Database, DbPlane>` makes adding a table to `Database`\n * without classifying it here a COMPILE error. This is the single source of\n * truth for the split — `docker/SCHEMA_SPLIT.md` and the cutover script's\n * `CONTROL_TABLES` mirror the `target` set (guarded by `table-plane.test.ts`).\n * Use it to decide which migration helper a table's DDL belongs in\n * (`onControlPlane` for `target`, `onChainPlane` for `source`).\n *\n * Note: `kysely_migration` / `kysely_migration_lock` are kysely-managed (not in\n * `Database`) and exist on both — they are intentionally not listed here.\n */\nexport const TABLE_TO_DB = {\n\t// ── SOURCE: raw chain ──\n\tblocks: \"source\",\n\ttransactions: \"source\",\n\tevents: \"source\",\n\tvm_events: \"source\",\n\ttransactions_archive: \"source\",\n\tevents_archive: \"source\",\n\tvm_events_archive: \"source\",\n\tdead_letter_events: \"source\",\n\tmempool_transactions: \"source\",\n\tindex_progress: \"source\",\n\tcontracts: \"source\",\n\tchain_reorgs: \"source\",\n\t// Chain-derived read memo — keyed on index_block_hash, lives with the\n\t// blocks it pins to.\n\tchain_read_cache: \"source\",\n\t// Staged fork contenders — raw chain data, resolved during ingest.\n\tpending_fork_blocks: \"source\",\n\t// Exact observer callback receipts — the replay authority sits with chain data.\n\tobserver_journal: \"source\",\n\t// Declared scope — belongs with the chain whose start it declares.\n\tsync_scopes: \"source\",\n\t// Coverage kernel — attests the chain it sits next to.\n\tstage_registry: \"source\",\n\tstage_runs: \"source\",\n\tstage_block_receipts: \"source\",\n\tcoverage_segments: \"source\",\n\tstage_failures: \"source\",\n\t// ── SOURCE: decoded ──\n\tdecoded_events: \"source\",\n\tdecoder_checkpoints: \"source\",\n\tpox4_calls: \"source\",\n\tpox5_events: \"source\",\n\tpox5_cycles: \"source\",\n\tpox5_cycle_signers: \"source\",\n\tburn_block_rewards: \"source\",\n\tburn_block_reward_slots: \"source\",\n\tsbtc_events: \"source\",\n\tsbtc_token_events: \"source\",\n\tsbtc_settlements: \"source\",\n\tbns_name_events: \"source\",\n\tbns_namespace_events: \"source\",\n\tbns_marketplace_events: \"source\",\n\tbns_names: \"source\",\n\tbns_namespaces: \"source\",\n\t// ── TARGET: accounts / auth / billing ──\n\tinstances: \"target\",\n\taccounts: \"target\",\n\tapi_keys: \"target\",\n\tsessions: \"target\",\n\tmagic_links: \"target\",\n\taccount_spend_caps: \"target\",\n\tprocessed_stripe_events: \"target\",\n\t// ── TARGET: webhooks ──\n\twebhooks: \"target\",\n\twebhook_outbox: \"target\",\n\twebhook_deliveries: \"target\",\n\ttrigger_evaluator_state: \"target\",\n\t// ── TARGET: subgraphs + metadata ──\n\tsubgraphs: \"target\",\n\tsubgraph_operations: \"target\",\n\tsubgraph_health_snapshots: \"target\",\n\tsubgraph_gaps: \"target\",\n\tsubgraph_violations: \"target\",\n\tsubgraph_processing_stats: \"target\",\n\taccount_credits: \"target\",\n\t// ── TARGET: archive fetch gate charge log ──\n\tarchive_fetches: \"target\",\n\t// ── TARGET: metered ledger (one append-only row per billable event) ──\n\tusage_ledger: \"target\",\n\t// ── TARGET: public waitlist pages ──\n\twaitlists: \"target\",\n\twaitlist_signups: \"target\",\n\t// ── BOTH ──\n\tservice_heartbeats: \"both\",\n} satisfies Record<keyof Database, DbPlane>;\n",
12
+ "import type { Database } from \"./types.ts\";\n\nexport type DbPlane = \"source\" | \"target\" | \"both\";\n\n/**\n * Canonical table → DB-plane mapping for the source/target split.\n *\n * SOURCE = chain + decoded (the `postgres` instance); TARGET = control plane\n * (the `postgres-platform` instance). `both` = present/used on both planes\n * (`service_heartbeats`: the indexer writes its row on SOURCE, the\n * subgraph-processor writes its row on TARGET).\n *\n * `satisfies Record<keyof Database, DbPlane>` makes adding a table to `Database`\n * without classifying it here a COMPILE error. This is the single source of\n * truth for the split — `docker/SCHEMA_SPLIT.md` and the cutover script's\n * `CONTROL_TABLES` mirror the `target` set (guarded by `table-plane.test.ts`).\n * Use it to decide which migration helper a table's DDL belongs in\n * (`onControlPlane` for `target`, `onChainPlane` for `source`).\n *\n * Note: `kysely_migration` / `kysely_migration_lock` are kysely-managed (not in\n * `Database`) and exist on both — they are intentionally not listed here.\n */\nexport const TABLE_TO_DB = {\n\t// ── SOURCE: raw chain ──\n\tblocks: \"source\",\n\ttransactions: \"source\",\n\tevents: \"source\",\n\tvm_events: \"source\",\n\ttransactions_archive: \"source\",\n\tevents_archive: \"source\",\n\tvm_events_archive: \"source\",\n\tdead_letter_events: \"source\",\n\tmempool_transactions: \"source\",\n\tindex_progress: \"source\",\n\tcontracts: \"source\",\n\tchain_reorgs: \"source\",\n\t// Chain-derived read memo — keyed on index_block_hash, lives with the\n\t// blocks it pins to.\n\tchain_read_cache: \"source\",\n\t// Staged fork contenders — raw chain data, resolved during ingest.\n\tpending_fork_blocks: \"source\",\n\t// Exact observer callback receipts — the replay authority sits with chain data.\n\tobserver_journal: \"source\",\n\t// Declared scope — belongs with the chain whose start it declares.\n\tsync_scopes: \"source\",\n\t// Coverage kernel — attests the chain it sits next to.\n\tstage_registry: \"source\",\n\tstage_runs: \"source\",\n\tstage_block_receipts: \"source\",\n\tcoverage_segments: \"source\",\n\tstage_failures: \"source\",\n\t// ── SOURCE: decoded ──\n\tdecoded_events: \"source\",\n\tdecoder_checkpoints: \"source\",\n\tpox4_calls: \"source\",\n\tpox5_events: \"source\",\n\tpox5_cycles: \"source\",\n\tpox5_cycle_signers: \"source\",\n\tburn_block_rewards: \"source\",\n\tburn_block_reward_slots: \"source\",\n\tsbtc_events: \"source\",\n\tsbtc_token_events: \"source\",\n\tsbtc_settlements: \"source\",\n\tbns_name_events: \"source\",\n\tbns_namespace_events: \"source\",\n\tbns_marketplace_events: \"source\",\n\tbns_names: \"source\",\n\tbns_namespaces: \"source\",\n\t// ── TARGET: accounts / auth / billing ──\n\tinstances: \"target\",\n\taccounts: \"target\",\n\tapi_keys: \"target\",\n\tsessions: \"target\",\n\tmagic_links: \"target\",\n\taccount_spend_caps: \"target\",\n\tprocessed_stripe_events: \"target\",\n\t// ── TARGET: webhooks ──\n\twebhooks: \"target\",\n\twebhook_outbox: \"target\",\n\twebhook_deliveries: \"target\",\n\ttrigger_evaluator_state: \"target\",\n\t// ── TARGET: subgraphs + metadata ──\n\tsubgraphs: \"target\",\n\tsubgraph_operations: \"target\",\n\tsubgraph_health_snapshots: \"target\",\n\tsubgraph_gaps: \"target\",\n\tsubgraph_violations: \"target\",\n\tsubgraph_processing_stats: \"target\",\n\taccount_credits: \"target\",\n\t// ── TARGET: archive fetch gate charge log ──\n\tarchive_fetches: \"target\",\n\t// ── TARGET: metered ledger (one append-only row per billable event) ──\n\tusage_ledger: \"target\",\n\taccount_balance_alerts: \"target\",\n\t// ── TARGET: public waitlist pages ──\n\twaitlists: \"target\",\n\twaitlist_signups: \"target\",\n\t// ── BOTH ──\n\tservice_heartbeats: \"both\",\n} satisfies Record<keyof Database, DbPlane>;\n",
13
13
  "import type { Kysely, Transaction } from \"kysely\";\nimport { getSourceDb, sql } from \"../index.ts\";\nimport type { Database } from \"../types.ts\";\n\nexport type ChainReorgCursor = {\n\tblock_height: number;\n\tevent_index: number;\n};\n\n/**\n * Wall-clock resume cursor for `readChainReorgsSince`. `detected_at` is kept as\n * a raw string all the way to SQL (cast to timestamptz there) because Postgres\n * stores microseconds and a JS Date round-trip truncates to milliseconds —\n * truncation makes `detected_at > cursor` re-match the row the cursor came\n * from, re-delivering the same reorg forever. `id` breaks ties between rows\n * sharing a detected_at.\n */\nexport type ChainReorgTimeCursor = {\n\tdetected_at: string;\n\tid: string | null;\n};\n\nexport type ChainReorgRecord = {\n\tid: string;\n\tdetected_at: string;\n\tfork_point_height: number;\n\told_index_block_hash: string | null;\n\tnew_index_block_hash: string | null;\n\torphaned_range: { from: string; to: string };\n\tnew_canonical_tip: string;\n};\n\nexport type InsertChainReorgParams = {\n\tforkPointHeight: number;\n\toldIndexBlockHash?: string | null;\n\tnewIndexBlockHash?: string | null;\n\torphanedFrom: ChainReorgCursor;\n\torphanedTo: ChainReorgCursor;\n\tnewCanonicalTip: ChainReorgCursor;\n\tdb?: Kysely<Database> | Transaction<Database>;\n};\n\nexport type ReadChainReorgsSinceParams = {\n\tsince: Date | ChainReorgTimeCursor | ChainReorgCursor;\n\tlimit: number;\n\tdb?: Kysely<Database>;\n};\n\nexport type ReadChainReorgsForRangeParams = {\n\tfrom: ChainReorgCursor;\n\tto: ChainReorgCursor;\n\tdb?: Kysely<Database>;\n};\n\nexport type ReadChainReorgsForHeightRangeParams = {\n\tfromHeight: number;\n\ttoHeight: number;\n\tdb?: Kysely<Database>;\n};\n\ntype ChainReorgRow = {\n\tid: string;\n\tdetected_at: Date | string;\n\t/** Microsecond-precision ISO text, selected alongside `detected_at` where\n\t * the value feeds a resume cursor (pg's Date parsing drops microseconds). */\n\tdetected_at_us?: string;\n\tfork_point_height: string | number;\n\told_index_block_hash: string | null;\n\tnew_index_block_hash: string | null;\n\torphaned_from_height: string | number;\n\torphaned_from_event_index: string | number;\n\torphaned_to_height: string | number;\n\torphaned_to_event_index: string | number;\n\tnew_canonical_height: string | number;\n\tnew_canonical_event_index: string | number;\n};\n\nexport function encodeChainReorgCursor(cursor: ChainReorgCursor): string {\n\treturn `${cursor.block_height}:${cursor.event_index}`;\n}\n\nfunction normalizeRow(row: ChainReorgRow): ChainReorgRecord {\n\tconst detectedAt =\n\t\trow.detected_at_us ??\n\t\t(row.detected_at instanceof Date\n\t\t\t? row.detected_at.toISOString()\n\t\t\t: new Date(row.detected_at).toISOString());\n\n\treturn {\n\t\tid: row.id,\n\t\tdetected_at: detectedAt,\n\t\tfork_point_height: Number(row.fork_point_height),\n\t\told_index_block_hash: row.old_index_block_hash,\n\t\tnew_index_block_hash: row.new_index_block_hash,\n\t\torphaned_range: {\n\t\t\tfrom: encodeChainReorgCursor({\n\t\t\t\tblock_height: Number(row.orphaned_from_height),\n\t\t\t\tevent_index: Number(row.orphaned_from_event_index),\n\t\t\t}),\n\t\t\tto: encodeChainReorgCursor({\n\t\t\t\tblock_height: Number(row.orphaned_to_height),\n\t\t\t\tevent_index: Number(row.orphaned_to_event_index),\n\t\t\t}),\n\t\t},\n\t\tnew_canonical_tip: encodeChainReorgCursor({\n\t\t\tblock_height: Number(row.new_canonical_height),\n\t\t\tevent_index: Number(row.new_canonical_event_index),\n\t\t}),\n\t};\n}\n\nexport async function insertChainReorg(\n\tparams: InsertChainReorgParams,\n): Promise<ChainReorgRecord> {\n\tconst db = params.db ?? getSourceDb();\n\tconst row = await db\n\t\t.insertInto(\"chain_reorgs\")\n\t\t.values({\n\t\t\tfork_point_height: params.forkPointHeight,\n\t\t\told_index_block_hash: params.oldIndexBlockHash ?? null,\n\t\t\tnew_index_block_hash: params.newIndexBlockHash ?? null,\n\t\t\torphaned_from_height: params.orphanedFrom.block_height,\n\t\t\torphaned_from_event_index: params.orphanedFrom.event_index,\n\t\t\torphaned_to_height: params.orphanedTo.block_height,\n\t\t\torphaned_to_event_index: params.orphanedTo.event_index,\n\t\t\tnew_canonical_height: params.newCanonicalTip.block_height,\n\t\t\tnew_canonical_event_index: params.newCanonicalTip.event_index,\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\treturn normalizeRow(row);\n}\n\n/** Microsecond-precision ISO text for `detected_at`. Selected wherever the\n * value can feed a resume cursor: pg parses timestamptz into a JS Date, which\n * drops microseconds, and a truncated cursor re-matches the row it came from. */\nconst detectedAtUs = sql<string>`to_char(detected_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.US\"Z\"')`;\n\nexport async function readChainReorgsSince(\n\tparams: ReadChainReorgsSinceParams,\n): Promise<ChainReorgRecord[]> {\n\tconst db = params.db ?? getSourceDb();\n\tconst limit = Math.min(1000, Math.max(1, params.limit));\n\tconst { since } = params;\n\n\tif (since instanceof Date || \"detected_at\" in since) {\n\t\tconst cursor: ChainReorgTimeCursor =\n\t\t\tsince instanceof Date\n\t\t\t\t? { detected_at: since.toISOString(), id: null }\n\t\t\t\t: since;\n\t\t// The (…::text)::timestamptz double cast is load-bearing: a bare\n\t\t// ::timestamptz makes the driver infer the param as a timestamp and\n\t\t// convert the string client-side at millisecond precision, silently\n\t\t// discarding microseconds — the exact truncation this cursor exists to\n\t\t// avoid. ::text forces the raw string through so Postgres does the cast.\n\t\tconst result = cursor.id\n\t\t\t? await sql<ChainReorgRow>`\n\t\t\t\t\tSELECT *, ${detectedAtUs} AS detected_at_us\n\t\t\t\t\tFROM chain_reorgs\n\t\t\t\t\tWHERE (detected_at, id) > ((${cursor.detected_at}::text)::timestamptz, ${cursor.id}::uuid)\n\t\t\t\t\tORDER BY detected_at ASC, id ASC\n\t\t\t\t\tLIMIT ${limit}\n\t\t\t\t`.execute(db)\n\t\t\t: await sql<ChainReorgRow>`\n\t\t\t\t\tSELECT *, ${detectedAtUs} AS detected_at_us\n\t\t\t\t\tFROM chain_reorgs\n\t\t\t\t\tWHERE detected_at > (${cursor.detected_at}::text)::timestamptz\n\t\t\t\t\tORDER BY detected_at ASC, id ASC\n\t\t\t\t\tLIMIT ${limit}\n\t\t\t\t`.execute(db);\n\t\treturn result.rows.map(normalizeRow);\n\t}\n\n\tconst result = await sql<ChainReorgRow>`\n\t\tSELECT *, ${detectedAtUs} AS detected_at_us\n\t\tFROM chain_reorgs\n\t\tWHERE\n\t\t\torphaned_to_height > ${since.block_height}\n\t\t\tOR (\n\t\t\t\torphaned_to_height = ${since.block_height}\n\t\t\t\tAND orphaned_to_event_index >= ${since.event_index}\n\t\t\t)\n\t\tORDER BY detected_at ASC, id ASC\n\t\tLIMIT ${limit}\n\t`.execute(db);\n\n\treturn result.rows.map(normalizeRow);\n}\n\n/**\n * Reorgs overlapping the block-height window [fromHeight, toHeight], ignoring\n * event_index. For cursor keyspaces that are NOT event-indexed (the\n * transactions / contract-calls endpoints key on block_height:tx_index): a\n * height-granular overlap. Over-inclusive — a partially-orphaned height in range\n * surfaces even if the page's specific rows survived — but never under-reports.\n */\nexport async function readChainReorgsForHeightRange(\n\tparams: ReadChainReorgsForHeightRangeParams,\n): Promise<ChainReorgRecord[]> {\n\treturn readChainReorgsForRange({\n\t\tfrom: { block_height: params.fromHeight, event_index: 0 },\n\t\t// int4 max — event_index is a Postgres `integer`, so a larger sentinel\n\t\t// (e.g. Number.MAX_SAFE_INTEGER) overflows when bound for comparison.\n\t\tto: { block_height: params.toHeight, event_index: 2_147_483_647 },\n\t\tdb: params.db,\n\t});\n}\n\nexport async function readChainReorgsForRange(\n\tparams: ReadChainReorgsForRangeParams,\n): Promise<ChainReorgRecord[]> {\n\tconst db = params.db ?? getSourceDb();\n\tconst { from, to } = params;\n\tconst { rows } = await sql<ChainReorgRow>`\n\t\tSELECT *, ${detectedAtUs} AS detected_at_us\n\t\tFROM chain_reorgs\n\t\tWHERE\n\t\t\t(\n\t\t\t\torphaned_from_height < ${to.block_height}\n\t\t\t\tOR (\n\t\t\t\t\torphaned_from_height = ${to.block_height}\n\t\t\t\t\tAND orphaned_from_event_index <= ${to.event_index}\n\t\t\t\t)\n\t\t\t)\n\t\t\tAND (\n\t\t\t\torphaned_to_height > ${from.block_height}\n\t\t\t\tOR (\n\t\t\t\t\torphaned_to_height = ${from.block_height}\n\t\t\t\t\tAND orphaned_to_event_index >= ${from.event_index}\n\t\t\t\t)\n\t\t\t)\n\t\tORDER BY detected_at ASC, id ASC\n\t`.execute(db);\n\n\treturn rows.map(normalizeRow);\n}\n"
14
14
  ],
15
- "mappings": ";AAAA;AACA;AACA;;;ACFA;AAGA,IAAM,iBAAiB,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ;AAAA,EACpD,MAAM,WAAW,IACf,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AAAA,EAChB,MAAM,QAAQ,CAAC,WAAW,SAAS;AAAA,EACnC,WAAW,KAAK,UAAU;AAAA,IACzB,IAAI,CAAC,MAAM,SAAS,CAAC,GAAG;AAAA,MACvB,MAAM,IAAI,MACT,oBAAoB,sBAAsB,MAAM,KAAK,IAAI,GAC1D;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA,CACP;AAsBD,IAAM,YAAwC,EAAE,OAAO;AAAA,EACtD,cAAc,EAAE,WACf,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,qBAAqB,EAAE,WACtB,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,qBAAqB,EAAE,WACtB,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,SAAS,EAAE,KAAK,CAAC,WAAW,SAAS,CAAC,EAAE,SAAS;AAAA,EACjD,UAAU,eAAe,SAAS;AAAA,EAClC,WAAW,EAAE,KAAK,CAAC,SAAS,QAAQ,QAAQ,OAAO,CAAC,EAAE,QAAQ,MAAM;AAAA,EACpE,UAAU,EACR,KAAK,CAAC,eAAe,cAAc,MAAM,CAAC,EAC1C,QAAQ,aAAa;AACxB,CAAC;AAMD,IAAI,YAAwB;AAErB,SAAS,MAAM,GAAQ;AAAA,EAC7B,IAAI,WAAW;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,UAAU,UAAU,QAAQ,GAAG;AAAA,EAE9C,IAAI,CAAC,OAAO,SAAS;AAAA,IACpB,QAAQ,MAAM,sCAAsC;AAAA,IACpD,QAAQ,MAAM,EAAE,aAAa,OAAO,KAAK,CAAC;AAAA,IAC1C,MAAM,IAAI,MAAM,mCAAmC;AAAA,EACpD;AAAA,EAGA,IAAI;AAAA,EACJ,IAAI,OAAO,KAAK,YAAY,OAAO,KAAK,SAAS,SAAS,GAAG;AAAA,IAC5D,kBAAkB,OAAO,KAAK;AAAA,EAC/B,EAAO,SAAI,OAAO,KAAK,SAAS;AAAA,IAC/B,kBAAkB,CAAC,OAAO,KAAK,OAAO;AAAA,EACvC,EAAO;AAAA,IACN,kBAAkB,CAAC,SAAS;AAAA;AAAA,EAG7B,YAAY,KAAK,OAAO,MAAM,gBAAgB;AAAA,EAC9C,OAAO;AAAA;AAeD,SAAS,eAAe,GAAY;AAAA,EAE1C,OAAO,QAAQ,IAAI,gBAAgB;AAAA;AAU7B,SAAS,oBAAoB,CAAC,MAAc,QAAQ,KAAc;AAAA,EACxE,OAAO,IAAI,yBAAyB;AAAA;AAS9B,SAAS,oBAAoB,CAAC,MAAc,QAAQ,KAAc;AAAA,EACxE,OAAO,IAAI,yBAAyB;AAAA;AAI9B,SAAS,oBAAoB,CAAC,MAAc,QAAQ,KAAc;AAAA,EACxE,OAAO,IAAI,yBAAyB;AAAA;AAI9B,SAAS,mBAAmB,CAAC,MAAc,QAAQ,KAAc;AAAA,EACvE,OAAO,IAAI,wBAAwB;AAAA;;ACtIpC,IAAM,aAAuC;AAAA,EAC5C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACR;AAAA;AAEA,MAAM,OAAO;AAAA,EACJ;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EAEf,IAAI,GAAG;AAAA,IACd,IAAI,KAAK;AAAA,MAAc;AAAA,IACvB,KAAK,eAAe;AAAA,IACpB,IAAI;AAAA,MACH,MAAM,MAAM,OAAO;AAAA,MACnB,KAAK,SAAS,IAAI;AAAA,MAClB,KAAK,gBAAgB,IAAI,aAAa;AAAA,MACrC,MAAM;AAAA,MAEP,KAAK,SAAS;AAAA,MACd,KAAK,gBAAgB;AAAA;AAAA;AAAA,MAIX,KAAK,GAAa;AAAA,IAC7B,KAAK,KAAK;AAAA,IAEV,OAAO,KAAK;AAAA;AAAA,MAGD,YAAY,GAAY;AAAA,IACnC,KAAK,KAAK;AAAA,IAEV,OAAO,KAAK;AAAA;AAAA,EAGL,SAAS,CAAC,OAA0B;AAAA,IAC3C,OAAO,WAAW,UAAU,WAAW,KAAK;AAAA;AAAA,EAGrC,aAAa,CACpB,OACA,SAEA,MACC;AAAA,IACD,MAAM,YAAY,IAAI,KAAK,EAAE,YAAY;AAAA,IAEzC,IAAI,KAAK,cAAc;AAAA,MAEtB,OAAO,KAAK,UAAU;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,WACG;AAAA,MACJ,CAAC;AAAA,IACF;AAAA,IAGA,MAAM,UAAU,OAAO,IAAI,KAAK,UAAU,IAAI,MAAM;AAAA,IACpD,OAAO,IAAI,cAAc,MAAM,YAAY,MAAM,UAAU;AAAA;AAAA,EAI5D,KAAK,CAAC,SAAiB,MAAkC;AAAA,IACxD,IAAI,KAAK,UAAU,OAAO,GAAG;AAAA,MAC5B,QAAQ,MAAM,KAAK,cAAc,SAAS,SAAS,IAAI,CAAC;AAAA,IACzD;AAAA;AAAA,EAID,IAAI,CAAC,SAAiB,MAAkC;AAAA,IACvD,IAAI,KAAK,UAAU,MAAM,GAAG;AAAA,MAC3B,QAAQ,KAAK,KAAK,cAAc,QAAQ,SAAS,IAAI,CAAC;AAAA,IACvD;AAAA;AAAA,EAID,IAAI,CAAC,SAAiB,MAAkC;AAAA,IACvD,IAAI,KAAK,UAAU,MAAM,GAAG;AAAA,MAC3B,QAAQ,KAAK,KAAK,cAAc,QAAQ,SAAS,IAAI,CAAC;AAAA,IACvD;AAAA;AAAA,EAID,KAAK,CAAC,SAAiB,MAAkC;AAAA,IACxD,IAAI,KAAK,UAAU,OAAO,GAAG;AAAA,MAC5B,QAAQ,MAAM,KAAK,cAAc,SAAS,SAAS,IAAI,CAAC;AAAA,IACzD;AAAA;AAEF;AAGO,IAAM,SAAiB,IAAI;;;AChFlC,IAAM,cAA+C;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AACD;AAEA,SAAS,YAAY,GAAyB;AAAA,EAC7C,MAAM,MAAM,QAAQ,IAAI,eAAe,KAAK,EAAE,YAAY;AAAA,EAC1D,IAAI,OAAQ,YAAkC,SAAS,GAAG,GAAG;AAAA,IAC5D,OAAO;AAAA,EACR;AAAA,EACA,OAAO;AAAA;AAUD,SAAS,eAAe,GAAiB;AAAA,EAC/C,MAAM,WAAW,aAAa;AAAA,EAC9B,OAAO,aAAa,YAAY,aAAa;AAAA;AAIvC,SAAS,uBAAuB,GAAyB;AAAA,EAC/D,OAAO,aAAa;AAAA;AASd,SAAS,cAAc,GAAY;AAAA,EACzC,MAAM,WAAW,QAAQ,IAAI,eAAe,KAAK,EAAE,YAAY;AAAA,EAC/D,IAAI,aAAa;AAAA,IAAQ,OAAO;AAAA,EAChC,IAAI,aAAa;AAAA,IAAS,OAAO;AAAA,EACjC,OAAO,gBAAgB,MAAM;AAAA;AAIvB,SAAS,cAAc,GAAY;AAAA,EACzC,OAAO,gBAAgB,MAAM;AAAA;AAIvB,SAAS,SAAS,GAAY;AAAA,EACpC,OAAO,gBAAgB,MAAM;AAAA;;;AH+T9B,gBAAS;;;AIvXF,IAAM,sBAAsB;AAAA,EAClC,QAAQ;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,cAAc;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,sBAAsB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,YAAY;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,mBAAmB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,iBAAiB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,sBAAsB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,wBAAwB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA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",
16
- "debugId": "969D1D37A547A51F64756E2164756E21",
15
+ "mappings": "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AAA,IACA;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,mBAAmB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,iBAAiB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,sBAAsB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,wBAAwB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA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",
16
+ "debugId": "DE05ABF8E9AC38AD64756E2164756E21",
17
17
  "names": []
18
18
  }
@@ -821,6 +821,7 @@ interface Database {
821
821
  stage_failures: StageFailuresTable;
822
822
  archive_fetches: ArchiveFetchesTable;
823
823
  usage_ledger: UsageLedgerTable;
824
+ account_balance_alerts: AccountBalanceAlertsTable;
824
825
  waitlists: WaitlistsTable;
825
826
  waitlist_signups: WaitlistSignupsTable;
826
827
  }
@@ -879,6 +880,10 @@ interface UsageLedgerTable {
879
880
  account_id: string;
880
881
  unit: string;
881
882
  quantity: string | number | bigint;
883
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
884
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
885
+ * floor to observe past. */
886
+ observed_quantity: string | number | null;
882
887
  usd_micros: string | number | bigint;
883
888
  debited: Generated<boolean>;
884
889
  source: string;
@@ -886,6 +891,16 @@ interface UsageLedgerTable {
886
891
  occurred_at: Generated<Date>;
887
892
  recorded_at: Generated<Date>;
888
893
  }
894
+ /** Preferences + debounce state for the balance-runway email alerts. One
895
+ * row per account; a missing row means both alerts are on (defaults). */
896
+ interface AccountBalanceAlertsTable {
897
+ account_id: string;
898
+ notify_7d: Generated<boolean>;
899
+ notify_2d: Generated<boolean>;
900
+ sent_7d_at: Date | null;
901
+ sent_2d_at: Date | null;
902
+ sent_stopped_at: Date | null;
903
+ }
889
904
  type Contract = Selectable<ContractsTable>;
890
905
  type WebhookStatus = "active" | "paused" | "error";
891
906
  /** Polymorphic webhook mode: `subgraph` reacts to processed table rows;
@@ -821,6 +821,7 @@ interface Database {
821
821
  stage_failures: StageFailuresTable;
822
822
  archive_fetches: ArchiveFetchesTable;
823
823
  usage_ledger: UsageLedgerTable;
824
+ account_balance_alerts: AccountBalanceAlertsTable;
824
825
  waitlists: WaitlistsTable;
825
826
  waitlist_signups: WaitlistSignupsTable;
826
827
  }
@@ -879,6 +880,10 @@ interface UsageLedgerTable {
879
880
  account_id: string;
880
881
  unit: string;
881
882
  quantity: string | number | bigint;
883
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
884
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
885
+ * floor to observe past. */
886
+ observed_quantity: string | number | null;
882
887
  usd_micros: string | number | bigint;
883
888
  debited: Generated<boolean>;
884
889
  source: string;
@@ -886,6 +891,16 @@ interface UsageLedgerTable {
886
891
  occurred_at: Generated<Date>;
887
892
  recorded_at: Generated<Date>;
888
893
  }
894
+ /** Preferences + debounce state for the balance-runway email alerts. One
895
+ * row per account; a missing row means both alerts are on (defaults). */
896
+ interface AccountBalanceAlertsTable {
897
+ account_id: string;
898
+ notify_7d: Generated<boolean>;
899
+ notify_2d: Generated<boolean>;
900
+ sent_7d_at: Date | null;
901
+ sent_2d_at: Date | null;
902
+ sent_stopped_at: Date | null;
903
+ }
889
904
  type WebhookStatus = "active" | "paused" | "error";
890
905
  /** Polymorphic webhook mode: `subgraph` reacts to processed table rows;
891
906
  * `chain` reacts to raw chain events matched directly off the Index/Streams
@@ -821,6 +821,7 @@ interface Database {
821
821
  stage_failures: StageFailuresTable;
822
822
  archive_fetches: ArchiveFetchesTable;
823
823
  usage_ledger: UsageLedgerTable;
824
+ account_balance_alerts: AccountBalanceAlertsTable;
824
825
  waitlists: WaitlistsTable;
825
826
  waitlist_signups: WaitlistSignupsTable;
826
827
  }
@@ -879,6 +880,10 @@ interface UsageLedgerTable {
879
880
  account_id: string;
880
881
  unit: string;
881
882
  quantity: string | number | bigint;
883
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
884
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
885
+ * floor to observe past. */
886
+ observed_quantity: string | number | null;
882
887
  usd_micros: string | number | bigint;
883
888
  debited: Generated<boolean>;
884
889
  source: string;
@@ -886,6 +891,16 @@ interface UsageLedgerTable {
886
891
  occurred_at: Generated<Date>;
887
892
  recorded_at: Generated<Date>;
888
893
  }
894
+ /** Preferences + debounce state for the balance-runway email alerts. One
895
+ * row per account; a missing row means both alerts are on (defaults). */
896
+ interface AccountBalanceAlertsTable {
897
+ account_id: string;
898
+ notify_7d: Generated<boolean>;
899
+ notify_2d: Generated<boolean>;
900
+ sent_7d_at: Date | null;
901
+ sent_2d_at: Date | null;
902
+ sent_stopped_at: Date | null;
903
+ }
889
904
  type WebhookStatus = "active" | "paused" | "error";
890
905
  /** Polymorphic webhook mode: `subgraph` reacts to processed table rows;
891
906
  * `chain` reacts to raw chain events matched directly off the Index/Streams
@@ -821,6 +821,7 @@ interface Database {
821
821
  stage_failures: StageFailuresTable;
822
822
  archive_fetches: ArchiveFetchesTable;
823
823
  usage_ledger: UsageLedgerTable;
824
+ account_balance_alerts: AccountBalanceAlertsTable;
824
825
  waitlists: WaitlistsTable;
825
826
  waitlist_signups: WaitlistSignupsTable;
826
827
  }
@@ -879,6 +880,10 @@ interface UsageLedgerTable {
879
880
  account_id: string;
880
881
  unit: string;
881
882
  quantity: string | number | bigint;
883
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
884
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
885
+ * floor to observe past. */
886
+ observed_quantity: string | number | null;
882
887
  usd_micros: string | number | bigint;
883
888
  debited: Generated<boolean>;
884
889
  source: string;
@@ -886,6 +891,16 @@ interface UsageLedgerTable {
886
891
  occurred_at: Generated<Date>;
887
892
  recorded_at: Generated<Date>;
888
893
  }
894
+ /** Preferences + debounce state for the balance-runway email alerts. One
895
+ * row per account; a missing row means both alerts are on (defaults). */
896
+ interface AccountBalanceAlertsTable {
897
+ account_id: string;
898
+ notify_7d: Generated<boolean>;
899
+ notify_2d: Generated<boolean>;
900
+ sent_7d_at: Date | null;
901
+ sent_2d_at: Date | null;
902
+ sent_stopped_at: Date | null;
903
+ }
889
904
  type WebhookStatus = "active" | "paused" | "error";
890
905
  /** Polymorphic webhook mode: `subgraph` reacts to processed table rows;
891
906
  * `chain` reacts to raw chain events matched directly off the Index/Streams
@@ -821,6 +821,7 @@ interface Database {
821
821
  stage_failures: StageFailuresTable;
822
822
  archive_fetches: ArchiveFetchesTable;
823
823
  usage_ledger: UsageLedgerTable;
824
+ account_balance_alerts: AccountBalanceAlertsTable;
824
825
  waitlists: WaitlistsTable;
825
826
  waitlist_signups: WaitlistSignupsTable;
826
827
  }
@@ -879,6 +880,10 @@ interface UsageLedgerTable {
879
880
  account_id: string;
880
881
  unit: string;
881
882
  quantity: string | number | bigint;
883
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
884
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
885
+ * floor to observe past. */
886
+ observed_quantity: string | number | null;
882
887
  usd_micros: string | number | bigint;
883
888
  debited: Generated<boolean>;
884
889
  source: string;
@@ -886,6 +891,16 @@ interface UsageLedgerTable {
886
891
  occurred_at: Generated<Date>;
887
892
  recorded_at: Generated<Date>;
888
893
  }
894
+ /** Preferences + debounce state for the balance-runway email alerts. One
895
+ * row per account; a missing row means both alerts are on (defaults). */
896
+ interface AccountBalanceAlertsTable {
897
+ account_id: string;
898
+ notify_7d: Generated<boolean>;
899
+ notify_2d: Generated<boolean>;
900
+ sent_7d_at: Date | null;
901
+ sent_2d_at: Date | null;
902
+ sent_stopped_at: Date | null;
903
+ }
889
904
  type SubgraphOperation = Selectable<SubgraphOperationsTable>;
890
905
  type WebhookStatus = "active" | "paused" | "error";
891
906
  /** Polymorphic webhook mode: `subgraph` reacts to processed table rows;
@@ -821,6 +821,7 @@ interface Database {
821
821
  stage_failures: StageFailuresTable;
822
822
  archive_fetches: ArchiveFetchesTable;
823
823
  usage_ledger: UsageLedgerTable;
824
+ account_balance_alerts: AccountBalanceAlertsTable;
824
825
  waitlists: WaitlistsTable;
825
826
  waitlist_signups: WaitlistSignupsTable;
826
827
  }
@@ -879,6 +880,10 @@ interface UsageLedgerTable {
879
880
  account_id: string;
880
881
  unit: string;
881
882
  quantity: string | number | bigint;
883
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
884
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
885
+ * floor to observe past. */
886
+ observed_quantity: string | number | null;
882
887
  usd_micros: string | number | bigint;
883
888
  debited: Generated<boolean>;
884
889
  source: string;
@@ -886,6 +891,16 @@ interface UsageLedgerTable {
886
891
  occurred_at: Generated<Date>;
887
892
  recorded_at: Generated<Date>;
888
893
  }
894
+ /** Preferences + debounce state for the balance-runway email alerts. One
895
+ * row per account; a missing row means both alerts are on (defaults). */
896
+ interface AccountBalanceAlertsTable {
897
+ account_id: string;
898
+ notify_7d: Generated<boolean>;
899
+ notify_2d: Generated<boolean>;
900
+ sent_7d_at: Date | null;
901
+ sent_2d_at: Date | null;
902
+ sent_stopped_at: Date | null;
903
+ }
889
904
  type Subgraph = Selectable<SubgraphsTable>;
890
905
  type WebhookStatus = "active" | "paused" | "error";
891
906
  /** Polymorphic webhook mode: `subgraph` reacts to processed table rows;
@@ -831,6 +831,7 @@ interface Database {
831
831
  stage_failures: StageFailuresTable;
832
832
  archive_fetches: ArchiveFetchesTable;
833
833
  usage_ledger: UsageLedgerTable;
834
+ account_balance_alerts: AccountBalanceAlertsTable;
834
835
  waitlists: WaitlistsTable;
835
836
  waitlist_signups: WaitlistSignupsTable;
836
837
  }
@@ -889,6 +890,10 @@ interface UsageLedgerTable {
889
890
  account_id: string;
890
891
  unit: string;
891
892
  quantity: string | number | bigint;
893
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
894
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
895
+ * floor to observe past. */
896
+ observed_quantity: string | number | null;
892
897
  usd_micros: string | number | bigint;
893
898
  debited: Generated<boolean>;
894
899
  source: string;
@@ -896,6 +901,16 @@ interface UsageLedgerTable {
896
901
  occurred_at: Generated<Date>;
897
902
  recorded_at: Generated<Date>;
898
903
  }
904
+ /** Preferences + debounce state for the balance-runway email alerts. One
905
+ * row per account; a missing row means both alerts are on (defaults). */
906
+ interface AccountBalanceAlertsTable {
907
+ account_id: string;
908
+ notify_7d: Generated<boolean>;
909
+ notify_2d: Generated<boolean>;
910
+ sent_7d_at: Date | null;
911
+ sent_2d_at: Date | null;
912
+ sent_stopped_at: Date | null;
913
+ }
899
914
  type WebhookStatus = "active" | "paused" | "error";
900
915
  /** Polymorphic webhook mode: `subgraph` reacts to processed table rows;
901
916
  * `chain` reacts to raw chain events matched directly off the Index/Streams
@@ -821,6 +821,7 @@ interface Database {
821
821
  stage_failures: StageFailuresTable;
822
822
  archive_fetches: ArchiveFetchesTable;
823
823
  usage_ledger: UsageLedgerTable;
824
+ account_balance_alerts: AccountBalanceAlertsTable;
824
825
  waitlists: WaitlistsTable;
825
826
  waitlist_signups: WaitlistSignupsTable;
826
827
  }
@@ -879,6 +880,10 @@ interface UsageLedgerTable {
879
880
  account_id: string;
880
881
  unit: string;
881
882
  quantity: string | number | bigint;
883
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
884
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
885
+ * floor to observe past. */
886
+ observed_quantity: string | number | null;
882
887
  usd_micros: string | number | bigint;
883
888
  debited: Generated<boolean>;
884
889
  source: string;
@@ -886,6 +891,16 @@ interface UsageLedgerTable {
886
891
  occurred_at: Generated<Date>;
887
892
  recorded_at: Generated<Date>;
888
893
  }
894
+ /** Preferences + debounce state for the balance-runway email alerts. One
895
+ * row per account; a missing row means both alerts are on (defaults). */
896
+ interface AccountBalanceAlertsTable {
897
+ account_id: string;
898
+ notify_7d: Generated<boolean>;
899
+ notify_2d: Generated<boolean>;
900
+ sent_7d_at: Date | null;
901
+ sent_2d_at: Date | null;
902
+ sent_stopped_at: Date | null;
903
+ }
889
904
  type WebhookStatus = "active" | "paused" | "error";
890
905
  /** Polymorphic webhook mode: `subgraph` reacts to processed table rows;
891
906
  * `chain` reacts to raw chain events matched directly off the Index/Streams
@@ -820,6 +820,7 @@ interface Database {
820
820
  stage_failures: StageFailuresTable;
821
821
  archive_fetches: ArchiveFetchesTable;
822
822
  usage_ledger: UsageLedgerTable;
823
+ account_balance_alerts: AccountBalanceAlertsTable;
823
824
  waitlists: WaitlistsTable;
824
825
  waitlist_signups: WaitlistSignupsTable;
825
826
  }
@@ -887,6 +888,10 @@ interface UsageLedgerTable {
887
888
  account_id: string;
888
889
  unit: string;
889
890
  quantity: string | number | bigint;
891
+ /** Raw sampled quantity before any floor (e.g. `memory.gb_hour`'s actual
892
+ * RAM, before the 0.5 GB minimum). NULL for every unit that has no
893
+ * floor to observe past. */
894
+ observed_quantity: string | number | null;
890
895
  usd_micros: string | number | bigint;
891
896
  debited: Generated<boolean>;
892
897
  source: string;
@@ -897,6 +902,19 @@ interface UsageLedgerTable {
897
902
  type UsageLedgerRow = Selectable<UsageLedgerTable>;
898
903
  type InsertUsageLedgerRow = Insertable<UsageLedgerTable>;
899
904
  type UpdateUsageLedgerRow = Updateable<UsageLedgerTable>;
905
+ /** Preferences + debounce state for the balance-runway email alerts. One
906
+ * row per account; a missing row means both alerts are on (defaults). */
907
+ interface AccountBalanceAlertsTable {
908
+ account_id: string;
909
+ notify_7d: Generated<boolean>;
910
+ notify_2d: Generated<boolean>;
911
+ sent_7d_at: Date | null;
912
+ sent_2d_at: Date | null;
913
+ sent_stopped_at: Date | null;
914
+ }
915
+ type AccountBalanceAlerts = Selectable<AccountBalanceAlertsTable>;
916
+ type InsertAccountBalanceAlerts = Insertable<AccountBalanceAlertsTable>;
917
+ type UpdateAccountBalanceAlerts = Updateable<AccountBalanceAlertsTable>;
900
918
  type Block = Selectable<BlocksTable>;
901
919
  type InsertBlock = Insertable<BlocksTable>;
902
920
  type UpdateBlock = Updateable<BlocksTable>;
@@ -1071,4 +1089,4 @@ interface WaitlistSignupsTable {
1071
1089
  type Waitlist = Selectable<WaitlistsTable>;
1072
1090
  type WaitlistSignup = Selectable<WaitlistSignupsTable>;
1073
1091
  type InsertWaitlistSignup = Insertable<WaitlistSignupsTable>;
1074
- export { Account, AccountCredits, AccountCreditsTable, AccountSpendCap, AccountSpendCapsTable, AccountsTable, ApiKey, ApiKeysTable, ArchiveFetch, ArchiveFetchesTable, Block, BlocksTable, BnsMarketplaceAction, BnsMarketplaceEventsTable, BnsNameEventTopic, BnsNameEventsTable, BnsNamesTable, BnsNamespaceEventStatus, BnsNamespaceEventsTable, BnsNamespacesTable, BurnBlockRewardSlotsTable, BurnBlockRewardsTable, ChainReadCacheTable, ChainReorgsTable, Contract, ContractsTable, CoverageSegmentsTable, Database, DeadLetterEventsTable, DecodedEventsTable, DecoderCheckpointsTable, Event, EventsArchiveTable, EventsTable, FailureClass, FailureUnit, IndexProgress, IndexProgressTable, InsertAccount, InsertAccountCredits, InsertAccountSpendCap, InsertApiKey, InsertArchiveFetch, InsertBlock, InsertContract, InsertEvent, InsertIndexProgress, InsertMagicLink, InsertMempoolTransaction, InsertSession, InsertSubgraph, InsertSubgraphGap, InsertSubgraphHealthSnapshot, InsertSubgraphOperation, InsertTransaction, InsertUsageLedgerRow, InsertVmEvent, InsertWaitlistSignup, InsertWebhook, InsertWebhookDelivery, InsertWebhookOutbox, InstancesTable, MagicLink, MagicLinksTable, MempoolTransaction, MempoolTransactionsTable, NativeClock, ObserverJournalStatus, ObserverJournalTable, OutboxStatus, PendingForkBlocksTable, Pox4CallsTable, Pox4FunctionName, Pox5CycleSignersTable, Pox5CyclesTable, Pox5EventTopic, Pox5EventsTable, ProcessedStripeEventsTable, RepairMode, RetryState, RunStatus, SbtcEventTopic, SbtcEventsTable, SbtcSettlementsTable, SbtcTokenEventType, SbtcTokenEventsTable, ServiceHeartbeatsTable, Session, SessionsTable, StageBlockReceiptsTable, StageFailuresTable, StageKind, StageRegistryTable, StageRunsTable, Subgraph, SubgraphGap, SubgraphGapsTable, SubgraphHealthSnapshot, SubgraphHealthSnapshotsTable, SubgraphOperation, SubgraphOperationKind, SubgraphOperationStatus, SubgraphOperationsTable, SubgraphProcessingStatsTable, SubgraphViolationsTable, SubgraphsTable, SyncScopesTable, Transaction, TransactionsArchiveTable, TransactionsTable, TriggerEvaluatorState, TriggerEvaluatorStateTable, UpdateAccountCredits, UpdateAccountSpendCap, UpdateApiKey, UpdateArchiveFetch, UpdateBlock, UpdateContract, UpdateEvent, UpdateIndexProgress, UpdateSubgraph, UpdateSubgraphOperation, UpdateTransaction, UpdateUsageLedgerRow, UpdateVmEvent, UpdateWebhook, UpdateWebhookOutbox, UsageLedgerRow, UsageLedgerTable, VmEvent, VmEventsArchiveTable, VmEventsTable, Waitlist, WaitlistSignup, WaitlistSignupsTable, WaitlistsTable, Webhook, WebhookDeliveriesTable, WebhookDelivery, WebhookFormat, WebhookKind, WebhookOutbox, WebhookOutboxTable, WebhookRuntime, WebhookStatus, WebhooksTable };
1092
+ export { Account, AccountBalanceAlerts, AccountBalanceAlertsTable, AccountCredits, AccountCreditsTable, AccountSpendCap, AccountSpendCapsTable, AccountsTable, ApiKey, ApiKeysTable, ArchiveFetch, ArchiveFetchesTable, Block, BlocksTable, BnsMarketplaceAction, BnsMarketplaceEventsTable, BnsNameEventTopic, BnsNameEventsTable, BnsNamesTable, BnsNamespaceEventStatus, BnsNamespaceEventsTable, BnsNamespacesTable, BurnBlockRewardSlotsTable, BurnBlockRewardsTable, ChainReadCacheTable, ChainReorgsTable, Contract, ContractsTable, CoverageSegmentsTable, Database, DeadLetterEventsTable, DecodedEventsTable, DecoderCheckpointsTable, Event, EventsArchiveTable, EventsTable, FailureClass, FailureUnit, IndexProgress, IndexProgressTable, InsertAccount, InsertAccountBalanceAlerts, InsertAccountCredits, InsertAccountSpendCap, InsertApiKey, InsertArchiveFetch, InsertBlock, InsertContract, InsertEvent, InsertIndexProgress, InsertMagicLink, InsertMempoolTransaction, InsertSession, InsertSubgraph, InsertSubgraphGap, InsertSubgraphHealthSnapshot, InsertSubgraphOperation, InsertTransaction, InsertUsageLedgerRow, InsertVmEvent, InsertWaitlistSignup, InsertWebhook, InsertWebhookDelivery, InsertWebhookOutbox, InstancesTable, MagicLink, MagicLinksTable, MempoolTransaction, MempoolTransactionsTable, NativeClock, ObserverJournalStatus, ObserverJournalTable, OutboxStatus, PendingForkBlocksTable, Pox4CallsTable, Pox4FunctionName, Pox5CycleSignersTable, Pox5CyclesTable, Pox5EventTopic, Pox5EventsTable, ProcessedStripeEventsTable, RepairMode, RetryState, RunStatus, SbtcEventTopic, SbtcEventsTable, SbtcSettlementsTable, SbtcTokenEventType, SbtcTokenEventsTable, ServiceHeartbeatsTable, Session, SessionsTable, StageBlockReceiptsTable, StageFailuresTable, StageKind, StageRegistryTable, StageRunsTable, Subgraph, SubgraphGap, SubgraphGapsTable, SubgraphHealthSnapshot, SubgraphHealthSnapshotsTable, SubgraphOperation, SubgraphOperationKind, SubgraphOperationStatus, SubgraphOperationsTable, SubgraphProcessingStatsTable, SubgraphViolationsTable, SubgraphsTable, SyncScopesTable, Transaction, TransactionsArchiveTable, TransactionsTable, TriggerEvaluatorState, TriggerEvaluatorStateTable, UpdateAccountBalanceAlerts, UpdateAccountCredits, UpdateAccountSpendCap, UpdateApiKey, UpdateArchiveFetch, UpdateBlock, UpdateContract, UpdateEvent, UpdateIndexProgress, UpdateSubgraph, UpdateSubgraphOperation, UpdateTransaction, UpdateUsageLedgerRow, UpdateVmEvent, UpdateWebhook, UpdateWebhookOutbox, UsageLedgerRow, UsageLedgerTable, VmEvent, VmEventsArchiveTable, VmEventsTable, Waitlist, WaitlistSignup, WaitlistSignupsTable, WaitlistsTable, Webhook, WebhookDeliveriesTable, WebhookDelivery, WebhookFormat, WebhookKind, WebhookOutbox, WebhookOutboxTable, WebhookRuntime, WebhookStatus, WebhooksTable };
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The one HTML/text layout every customer email renders through. Table-based
3
+ * HTML, inline styles only (email clients strip <style>), 560px max width,
4
+ * white background, #111 text, one black button — same look as the login
5
+ * email this was lifted from. Text is the same content, plainer.
6
+ */
7
+ interface FactRow {
8
+ label: string;
9
+ value: string;
10
+ }
11
+ interface EmailCta {
12
+ label: string;
13
+ url: string;
14
+ }
15
+ interface RenderEmailInput {
16
+ heading: string;
17
+ paragraphs: string[];
18
+ /** A code shown in a large, letter-spaced box (login codes). */
19
+ code?: string;
20
+ facts?: FactRow[];
21
+ cta?: EmailCta;
22
+ footnote?: string;
23
+ }
24
+ interface RenderedEmail {
25
+ html: string;
26
+ text: string;
27
+ }
28
+ declare function renderEmail(input: RenderEmailInput): RenderedEmail;
29
+ /**
30
+ * The one Resend call every customer email goes through. Never throws when
31
+ * `RESEND_API_KEY` is unset — that's a dev/CI/self-host state, not a send
32
+ * failure — it logs a warning and reports `{ skipped: true }` so a caller
33
+ * can still record its own "notification sent" bookkeeping accurately.
34
+ */
35
+ interface SendEmailInput {
36
+ to: string;
37
+ subject: string;
38
+ html: string;
39
+ text: string;
40
+ }
41
+ type SendEmailResult = {
42
+ skipped: true
43
+ } | {
44
+ skipped: false
45
+ };
46
+ declare function sendEmail(input: SendEmailInput): Promise<SendEmailResult>;
47
+ export { EmailCta, FactRow, RenderEmailInput, RenderedEmail, SendEmailInput, SendEmailResult, renderEmail, sendEmail };