@secondlayer/shared 6.1.0 → 6.3.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.
@@ -104,6 +104,8 @@ interface ApiKeysTable {
104
104
  rate_limit: Generated<number>;
105
105
  ip_address: string;
106
106
  account_id: string;
107
+ product: Generated<"account" | "streams" | "index">;
108
+ tier: "free" | "build" | "scale" | "enterprise" | null;
107
109
  last_used_at: Date | null;
108
110
  revoked_at: Date | null;
109
111
  created_at: Generated<Date>;
@@ -314,6 +316,208 @@ interface ChainReorgsTable {
314
316
  new_canonical_event_index: number;
315
317
  created_at: Generated<Date>;
316
318
  }
319
+ type Pox4FunctionName = "stack-stx" | "delegate-stx" | "stack-extend" | "stack-increase" | "revoke-delegate-stx" | "delegate-stack-stx" | "delegate-stack-extend" | "delegate-stack-increase" | "stack-aggregation-commit" | "stack-aggregation-commit-indexed" | "stack-aggregation-increase" | "set-signer-key-authorization";
320
+ interface Pox4CallsTable {
321
+ cursor: string;
322
+ block_height: number;
323
+ block_time: Date;
324
+ burn_block_height: number;
325
+ tx_id: string;
326
+ tx_index: number;
327
+ function_name: Pox4FunctionName;
328
+ caller: string;
329
+ stacker: string | null;
330
+ delegate_to: string | null;
331
+ amount_ustx: string | null;
332
+ lock_period: number | null;
333
+ pox_addr_version: number | null;
334
+ pox_addr_hashbytes: string | null;
335
+ pox_addr_btc: string | null;
336
+ start_cycle: number | null;
337
+ end_cycle: number | null;
338
+ signer_key: string | null;
339
+ signer_signature: string | null;
340
+ auth_id: string | null;
341
+ max_amount: string | null;
342
+ reward_cycle: number | null;
343
+ aggregated_amount_ustx: string | null;
344
+ aggregated_signer_index: number | null;
345
+ auth_period: number | null;
346
+ auth_topic: string | null;
347
+ auth_allowed: boolean | null;
348
+ result_ok: boolean;
349
+ result_raw: string;
350
+ canonical: Generated<boolean>;
351
+ source_cursor: string;
352
+ created_at: Generated<Date>;
353
+ }
354
+ interface Pox4CyclesDailyTable {
355
+ date: string;
356
+ reward_cycle: number;
357
+ total_stacked_ustx: Generated<string>;
358
+ solo_stackers: Generated<number>;
359
+ delegated_principals: Generated<number>;
360
+ unique_pools: Generated<number>;
361
+ unique_signers: Generated<number>;
362
+ calls_today: Generated<number>;
363
+ updated_at: Generated<Date>;
364
+ }
365
+ interface Pox4SignersDailyTable {
366
+ date: string;
367
+ reward_cycle: number;
368
+ signer_key: string;
369
+ weight_ustx: Generated<string>;
370
+ stacker_count: Generated<number>;
371
+ aggregation_calls: Generated<number>;
372
+ updated_at: Generated<Date>;
373
+ }
374
+ type SbtcEventTopic = "completed-deposit" | "withdrawal-create" | "withdrawal-accept" | "withdrawal-reject" | "key-rotation" | "update-protocol-contract";
375
+ interface SbtcEventsTable {
376
+ cursor: string;
377
+ block_height: number;
378
+ block_time: Date;
379
+ tx_id: string;
380
+ tx_index: number;
381
+ event_index: number;
382
+ topic: SbtcEventTopic;
383
+ request_id: number | null;
384
+ amount: string | null;
385
+ sender: string | null;
386
+ recipient_btc_version: number | null;
387
+ recipient_btc_hashbytes: string | null;
388
+ bitcoin_txid: string | null;
389
+ output_index: number | null;
390
+ sweep_txid: string | null;
391
+ burn_hash: string | null;
392
+ burn_height: number | null;
393
+ signer_bitmap: string | null;
394
+ max_fee: string | null;
395
+ fee: string | null;
396
+ block_height_at_request: number | null;
397
+ governance_contract_type: number | null;
398
+ governance_new_contract: string | null;
399
+ signer_aggregate_pubkey: string | null;
400
+ signer_threshold: number | null;
401
+ signer_address: string | null;
402
+ signer_keys_count: number | null;
403
+ canonical: Generated<boolean>;
404
+ source_cursor: string;
405
+ created_at: Generated<Date>;
406
+ }
407
+ type SbtcTokenEventType = "transfer" | "mint" | "burn";
408
+ interface SbtcTokenEventsTable {
409
+ cursor: string;
410
+ block_height: number;
411
+ block_time: Date;
412
+ tx_id: string;
413
+ tx_index: number;
414
+ event_index: number;
415
+ event_type: SbtcTokenEventType;
416
+ sender: string | null;
417
+ recipient: string | null;
418
+ amount: string;
419
+ memo: string | null;
420
+ canonical: Generated<boolean>;
421
+ source_cursor: string;
422
+ created_at: Generated<Date>;
423
+ }
424
+ interface SbtcSupplySnapshotsTable {
425
+ date: string;
426
+ total_supply: Generated<string>;
427
+ mints_today: Generated<string>;
428
+ burns_today: Generated<string>;
429
+ deposit_count: Generated<number>;
430
+ withdrawal_create_count: Generated<number>;
431
+ withdrawal_accept_count: Generated<number>;
432
+ withdrawal_reject_count: Generated<number>;
433
+ updated_at: Generated<Date>;
434
+ }
435
+ type BnsNameEventTopic = "new-name" | "transfer-name" | "renew-name" | "burn-name" | "new-airdrop";
436
+ interface BnsNameEventsTable {
437
+ cursor: string;
438
+ block_height: number;
439
+ block_time: Date;
440
+ tx_id: string;
441
+ tx_index: number;
442
+ event_index: number;
443
+ topic: BnsNameEventTopic;
444
+ namespace: string;
445
+ name: string;
446
+ fqn: string;
447
+ owner: string | null;
448
+ bns_id: string;
449
+ registered_at: number | null;
450
+ imported_at: number | null;
451
+ renewal_height: number | null;
452
+ stx_burn: string | null;
453
+ preordered_by: string | null;
454
+ hashed_salted_fqn_preorder: string | null;
455
+ canonical: Generated<boolean>;
456
+ source_cursor: string;
457
+ created_at: Generated<Date>;
458
+ }
459
+ type BnsNamespaceEventStatus = "launch" | "transfer-manager" | "freeze-manager" | "update-price-manager" | "freeze-price-manager" | "turn-off-manager-transfers";
460
+ interface BnsNamespaceEventsTable {
461
+ cursor: string;
462
+ block_height: number;
463
+ block_time: Date;
464
+ tx_id: string;
465
+ tx_index: number;
466
+ event_index: number;
467
+ status: BnsNamespaceEventStatus;
468
+ namespace: string;
469
+ manager: string | null;
470
+ manager_frozen: boolean | null;
471
+ manager_transfers_disabled: boolean | null;
472
+ price_function: string | null;
473
+ price_frozen: boolean | null;
474
+ lifetime: number | null;
475
+ revealed_at: number | null;
476
+ launched_at: number | null;
477
+ canonical: Generated<boolean>;
478
+ source_cursor: string;
479
+ created_at: Generated<Date>;
480
+ }
481
+ type BnsMarketplaceAction = "list-in-ustx" | "unlist-in-ustx" | "buy-in-ustx";
482
+ interface BnsMarketplaceEventsTable {
483
+ cursor: string;
484
+ block_height: number;
485
+ block_time: Date;
486
+ tx_id: string;
487
+ tx_index: number;
488
+ event_index: number;
489
+ action: BnsMarketplaceAction;
490
+ bns_id: string;
491
+ price_ustx: string | null;
492
+ commission: string | null;
493
+ canonical: Generated<boolean>;
494
+ source_cursor: string;
495
+ created_at: Generated<Date>;
496
+ }
497
+ interface BnsNamesTable {
498
+ fqn: string;
499
+ namespace: string;
500
+ name: string;
501
+ owner: string;
502
+ bns_id: string;
503
+ registered_at: number | null;
504
+ renewal_height: number | null;
505
+ last_event_cursor: string;
506
+ last_event_at: Date;
507
+ updated_at: Generated<Date>;
508
+ }
509
+ interface BnsNamespacesTable {
510
+ namespace: string;
511
+ manager: string | null;
512
+ manager_frozen: Generated<boolean>;
513
+ price_frozen: Generated<boolean>;
514
+ lifetime: number | null;
515
+ launched_at: number | null;
516
+ last_event_cursor: string;
517
+ last_event_at: Date;
518
+ name_count: Generated<number>;
519
+ updated_at: Generated<Date>;
520
+ }
317
521
  interface Database {
318
522
  blocks: BlocksTable;
319
523
  transactions: TransactionsTable;
@@ -352,6 +556,17 @@ interface Database {
352
556
  decoded_events: DecodedEventsTable;
353
557
  l2_decoder_checkpoints: L2DecoderCheckpointsTable;
354
558
  chain_reorgs: ChainReorgsTable;
559
+ pox4_calls: Pox4CallsTable;
560
+ pox4_cycles_daily: Pox4CyclesDailyTable;
561
+ pox4_signers_daily: Pox4SignersDailyTable;
562
+ sbtc_events: SbtcEventsTable;
563
+ sbtc_token_events: SbtcTokenEventsTable;
564
+ sbtc_supply_snapshots: SbtcSupplySnapshotsTable;
565
+ bns_name_events: BnsNameEventsTable;
566
+ bns_namespace_events: BnsNamespaceEventsTable;
567
+ bns_marketplace_events: BnsMarketplaceEventsTable;
568
+ bns_names: BnsNamesTable;
569
+ bns_namespaces: BnsNamespacesTable;
355
570
  }
356
571
  type TenantStatus = "provisioning" | "active" | "limit_warning" | "paused_limit" | "suspended" | "error" | "deleted";
357
572
  interface TenantsTable {
@@ -501,9 +716,17 @@ interface UsageSummary {
501
716
  }
502
717
  /** Get current usage for an account. */
503
718
  declare function getUsage(db: Kysely<Database>, accountId: string): Promise<UsageSummary>;
719
+ interface ProductUsageBreakdown {
720
+ streamsEventsToday: number;
721
+ streamsEventsThisMonth: number;
722
+ indexDecodedEventsToday: number;
723
+ indexDecodedEventsThisMonth: number;
724
+ }
725
+ /** Get per-product event counts (today + this month) for an account. */
726
+ declare function getProductUsage(db: Kysely<Database>, accountId: string): Promise<ProductUsageBreakdown>;
504
727
  /**
505
728
  * Measure storage for all accounts by querying pg_total_relation_size
506
729
  * for each tenant's subgraph schemas.
507
730
  */
508
731
  declare function measureStorage(db: Kysely<Database>): Promise<void>;
509
- export { measureStorage, incrementStreamsEventsReturned, incrementIndexDecodedEventsReturned, incrementApiRequests, getUsage, UsageSummary };
732
+ export { measureStorage, incrementStreamsEventsReturned, incrementIndexDecodedEventsReturned, incrementApiRequests, getUsage, getProductUsage, UsageSummary, ProductUsageBreakdown };
@@ -54,6 +54,21 @@ async function getUsage(db, accountId) {
54
54
  storageBytes: Number(storageRow?.storage_bytes ?? 0)
55
55
  };
56
56
  }
57
+ async function getProductUsage(db, accountId) {
58
+ const today = new Date().toISOString().slice(0, 10);
59
+ const monthStart = `${today.slice(0, 7)}-01`;
60
+ const dailyRow = await db.selectFrom("usage_daily").select(["streams_events_returned", "index_decoded_events_returned"]).where("account_id", "=", accountId).where("date", "=", today).executeTakeFirst();
61
+ const monthlyRow = await db.selectFrom("usage_daily").select([
62
+ sql`COALESCE(SUM(streams_events_returned), 0)`.as("streams_total"),
63
+ sql`COALESCE(SUM(index_decoded_events_returned), 0)`.as("index_total")
64
+ ]).where("account_id", "=", accountId).where("date", ">=", monthStart).executeTakeFirst();
65
+ return {
66
+ streamsEventsToday: Number(dailyRow?.streams_events_returned ?? 0),
67
+ streamsEventsThisMonth: Number(monthlyRow?.streams_total ?? 0),
68
+ indexDecodedEventsToday: Number(dailyRow?.index_decoded_events_returned ?? 0),
69
+ indexDecodedEventsThisMonth: Number(monthlyRow?.index_total ?? 0)
70
+ };
71
+ }
57
72
  async function measureStorage(db) {
58
73
  const accountSubgraphs = await db.selectFrom("subgraphs").select(["account_id", "schema_name"]).where("schema_name", "is not", null).execute();
59
74
  const byAccount = new Map;
@@ -86,8 +101,9 @@ export {
86
101
  incrementStreamsEventsReturned,
87
102
  incrementIndexDecodedEventsReturned,
88
103
  incrementApiRequests,
89
- getUsage
104
+ getUsage,
105
+ getProductUsage
90
106
  };
91
107
 
92
- //# debugId=0A5108029A948ED964756E2164756E21
108
+ //# debugId=4876492CE8C84D6164756E2164756E21
93
109
  //# sourceMappingURL=usage.js.map
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/db/queries/usage.ts"],
4
4
  "sourcesContent": [
5
- "import { type Kysely, sql } from \"kysely\";\nimport type { Database } from \"../types.ts\";\n\n/** Increment API request counter for today. Fire-and-forget safe. */\nexport async function incrementApiRequests(\n\tdb: Kysely<Database>,\n\taccountId: string,\n): Promise<void> {\n\tconst today = new Date().toISOString().slice(0, 10);\n\tawait sql`\n\t\tINSERT INTO usage_daily (account_id, tenant_id, date, api_requests, deliveries)\n\t\tVALUES (${accountId}, NULL, ${today}, 1, 0)\n\t\tON CONFLICT (account_id, date) WHERE tenant_id IS NULL\n\t\tDO UPDATE SET api_requests = usage_daily.api_requests + 1\n\t`.execute(db);\n}\n\nasync function incrementAccountDailyCounter(\n\tdb: Kysely<Database>,\n\taccountId: string,\n\tcolumn: \"streams_events_returned\" | \"index_decoded_events_returned\",\n\tquantity: number,\n): Promise<void> {\n\tif (quantity <= 0) return;\n\tconst today = new Date().toISOString().slice(0, 10);\n\tawait sql`\n\t\tINSERT INTO usage_daily (account_id, tenant_id, date, api_requests, deliveries, ${sql.raw(column)})\n\t\tVALUES (${accountId}, NULL, ${today}, 0, 0, ${quantity})\n\t\tON CONFLICT (account_id, date) WHERE tenant_id IS NULL\n\t\tDO UPDATE SET ${sql.raw(column)} = usage_daily.${sql.raw(column)} + ${quantity}\n\t`.execute(db);\n}\n\nexport async function incrementStreamsEventsReturned(\n\tdb: Kysely<Database>,\n\taccountId: string,\n\tquantity: number,\n): Promise<void> {\n\tawait incrementAccountDailyCounter(\n\t\tdb,\n\t\taccountId,\n\t\t\"streams_events_returned\",\n\t\tquantity,\n\t);\n}\n\nexport async function incrementIndexDecodedEventsReturned(\n\tdb: Kysely<Database>,\n\taccountId: string,\n\tquantity: number,\n): Promise<void> {\n\tawait incrementAccountDailyCounter(\n\t\tdb,\n\t\taccountId,\n\t\t\"index_decoded_events_returned\",\n\t\tquantity,\n\t);\n}\n\nexport interface UsageSummary {\n\tapiRequestsToday: number;\n\tdeliveriesThisMonth: number;\n\tstorageBytes: number;\n}\n\n/** Get current usage for an account. */\nexport async function getUsage(\n\tdb: Kysely<Database>,\n\taccountId: string,\n): Promise<UsageSummary> {\n\tconst today = new Date().toISOString().slice(0, 10);\n\tconst monthStart = `${today.slice(0, 7)}-01`; // YYYY-MM-01\n\n\t// Today's API requests\n\tconst dailyRow = await db\n\t\t.selectFrom(\"usage_daily\")\n\t\t.select(\"api_requests\")\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.where(\"date\", \"=\", today)\n\t\t.executeTakeFirst();\n\n\t// This month's deliveries\n\tconst monthlyRow = await db\n\t\t.selectFrom(\"usage_daily\")\n\t\t.select(sql<number>`COALESCE(SUM(deliveries), 0)`.as(\"total\"))\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.where(\"date\", \">=\", monthStart)\n\t\t.executeTakeFirst();\n\n\t// Latest storage snapshot\n\tconst storageRow = await db\n\t\t.selectFrom(\"usage_snapshots\")\n\t\t.select(\"storage_bytes\")\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.orderBy(\"measured_at\", \"desc\")\n\t\t.limit(1)\n\t\t.executeTakeFirst();\n\n\treturn {\n\t\tapiRequestsToday: dailyRow?.api_requests ?? 0,\n\t\tdeliveriesThisMonth: Number(monthlyRow?.total ?? 0),\n\t\tstorageBytes: Number(storageRow?.storage_bytes ?? 0),\n\t};\n}\n\n/**\n * Measure storage for all accounts by querying pg_total_relation_size\n * for each tenant's subgraph schemas.\n */\nexport async function measureStorage(db: Kysely<Database>): Promise<void> {\n\t// Get all accounts with subgraphs\n\tconst accountSubgraphs = await db\n\t\t.selectFrom(\"subgraphs\")\n\t\t.select([\"account_id\", \"schema_name\"])\n\t\t.where(\"schema_name\", \"is not\", null)\n\t\t.execute();\n\n\t// Group schemas by account\n\tconst byAccount = new Map<string, string[]>();\n\tfor (const row of accountSubgraphs) {\n\t\tconst schemas = byAccount.get(row.account_id) ?? [];\n\t\tif (row.schema_name) schemas.push(row.schema_name);\n\t\tbyAccount.set(row.account_id, schemas);\n\t}\n\n\tfor (const [accountId, schemas] of byAccount) {\n\t\tlet totalBytes = 0;\n\t\tfor (const schema of schemas) {\n\t\t\ttry {\n\t\t\t\tconst result = await sql<{ size: string }>`\n SELECT COALESCE(SUM(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename))), 0)::text as size\n FROM pg_tables WHERE schemaname = ${schema}\n `.execute(db);\n\t\t\t\tconst row = result.rows[0] as { size?: string } | undefined;\n\t\t\t\ttotalBytes += Number(row?.size ?? 0);\n\t\t\t} catch {\n\t\t\t\t// Schema may not exist\n\t\t\t}\n\t\t}\n\n\t\tawait db\n\t\t\t.insertInto(\"usage_snapshots\")\n\t\t\t.values({\n\t\t\t\taccount_id: accountId,\n\t\t\t\tstorage_bytes: totalBytes,\n\t\t\t})\n\t\t\t.execute();\n\t}\n}\n"
5
+ "import { type Kysely, sql } from \"kysely\";\nimport type { Database } from \"../types.ts\";\n\n/** Increment API request counter for today. Fire-and-forget safe. */\nexport async function incrementApiRequests(\n\tdb: Kysely<Database>,\n\taccountId: string,\n): Promise<void> {\n\tconst today = new Date().toISOString().slice(0, 10);\n\tawait sql`\n\t\tINSERT INTO usage_daily (account_id, tenant_id, date, api_requests, deliveries)\n\t\tVALUES (${accountId}, NULL, ${today}, 1, 0)\n\t\tON CONFLICT (account_id, date) WHERE tenant_id IS NULL\n\t\tDO UPDATE SET api_requests = usage_daily.api_requests + 1\n\t`.execute(db);\n}\n\nasync function incrementAccountDailyCounter(\n\tdb: Kysely<Database>,\n\taccountId: string,\n\tcolumn: \"streams_events_returned\" | \"index_decoded_events_returned\",\n\tquantity: number,\n): Promise<void> {\n\tif (quantity <= 0) return;\n\tconst today = new Date().toISOString().slice(0, 10);\n\tawait sql`\n\t\tINSERT INTO usage_daily (account_id, tenant_id, date, api_requests, deliveries, ${sql.raw(column)})\n\t\tVALUES (${accountId}, NULL, ${today}, 0, 0, ${quantity})\n\t\tON CONFLICT (account_id, date) WHERE tenant_id IS NULL\n\t\tDO UPDATE SET ${sql.raw(column)} = usage_daily.${sql.raw(column)} + ${quantity}\n\t`.execute(db);\n}\n\nexport async function incrementStreamsEventsReturned(\n\tdb: Kysely<Database>,\n\taccountId: string,\n\tquantity: number,\n): Promise<void> {\n\tawait incrementAccountDailyCounter(\n\t\tdb,\n\t\taccountId,\n\t\t\"streams_events_returned\",\n\t\tquantity,\n\t);\n}\n\nexport async function incrementIndexDecodedEventsReturned(\n\tdb: Kysely<Database>,\n\taccountId: string,\n\tquantity: number,\n): Promise<void> {\n\tawait incrementAccountDailyCounter(\n\t\tdb,\n\t\taccountId,\n\t\t\"index_decoded_events_returned\",\n\t\tquantity,\n\t);\n}\n\nexport interface UsageSummary {\n\tapiRequestsToday: number;\n\tdeliveriesThisMonth: number;\n\tstorageBytes: number;\n}\n\n/** Get current usage for an account. */\nexport async function getUsage(\n\tdb: Kysely<Database>,\n\taccountId: string,\n): Promise<UsageSummary> {\n\tconst today = new Date().toISOString().slice(0, 10);\n\tconst monthStart = `${today.slice(0, 7)}-01`; // YYYY-MM-01\n\n\t// Today's API requests\n\tconst dailyRow = await db\n\t\t.selectFrom(\"usage_daily\")\n\t\t.select(\"api_requests\")\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.where(\"date\", \"=\", today)\n\t\t.executeTakeFirst();\n\n\t// This month's deliveries\n\tconst monthlyRow = await db\n\t\t.selectFrom(\"usage_daily\")\n\t\t.select(sql<number>`COALESCE(SUM(deliveries), 0)`.as(\"total\"))\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.where(\"date\", \">=\", monthStart)\n\t\t.executeTakeFirst();\n\n\t// Latest storage snapshot\n\tconst storageRow = await db\n\t\t.selectFrom(\"usage_snapshots\")\n\t\t.select(\"storage_bytes\")\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.orderBy(\"measured_at\", \"desc\")\n\t\t.limit(1)\n\t\t.executeTakeFirst();\n\n\treturn {\n\t\tapiRequestsToday: dailyRow?.api_requests ?? 0,\n\t\tdeliveriesThisMonth: Number(monthlyRow?.total ?? 0),\n\t\tstorageBytes: Number(storageRow?.storage_bytes ?? 0),\n\t};\n}\n\nexport interface ProductUsageBreakdown {\n\tstreamsEventsToday: number;\n\tstreamsEventsThisMonth: number;\n\tindexDecodedEventsToday: number;\n\tindexDecodedEventsThisMonth: number;\n}\n\n/** Get per-product event counts (today + this month) for an account. */\nexport async function getProductUsage(\n\tdb: Kysely<Database>,\n\taccountId: string,\n): Promise<ProductUsageBreakdown> {\n\tconst today = new Date().toISOString().slice(0, 10);\n\tconst monthStart = `${today.slice(0, 7)}-01`;\n\n\tconst dailyRow = await db\n\t\t.selectFrom(\"usage_daily\")\n\t\t.select([\"streams_events_returned\", \"index_decoded_events_returned\"])\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.where(\"date\", \"=\", today)\n\t\t.executeTakeFirst();\n\n\tconst monthlyRow = await db\n\t\t.selectFrom(\"usage_daily\")\n\t\t.select([\n\t\t\tsql<number>`COALESCE(SUM(streams_events_returned), 0)`.as(\n\t\t\t\t\"streams_total\",\n\t\t\t),\n\t\t\tsql<number>`COALESCE(SUM(index_decoded_events_returned), 0)`.as(\n\t\t\t\t\"index_total\",\n\t\t\t),\n\t\t])\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.where(\"date\", \">=\", monthStart)\n\t\t.executeTakeFirst();\n\n\treturn {\n\t\tstreamsEventsToday: Number(dailyRow?.streams_events_returned ?? 0),\n\t\tstreamsEventsThisMonth: Number(monthlyRow?.streams_total ?? 0),\n\t\tindexDecodedEventsToday: Number(\n\t\t\tdailyRow?.index_decoded_events_returned ?? 0,\n\t\t),\n\t\tindexDecodedEventsThisMonth: Number(monthlyRow?.index_total ?? 0),\n\t};\n}\n\n/**\n * Measure storage for all accounts by querying pg_total_relation_size\n * for each tenant's subgraph schemas.\n */\nexport async function measureStorage(db: Kysely<Database>): Promise<void> {\n\t// Get all accounts with subgraphs\n\tconst accountSubgraphs = await db\n\t\t.selectFrom(\"subgraphs\")\n\t\t.select([\"account_id\", \"schema_name\"])\n\t\t.where(\"schema_name\", \"is not\", null)\n\t\t.execute();\n\n\t// Group schemas by account\n\tconst byAccount = new Map<string, string[]>();\n\tfor (const row of accountSubgraphs) {\n\t\tconst schemas = byAccount.get(row.account_id) ?? [];\n\t\tif (row.schema_name) schemas.push(row.schema_name);\n\t\tbyAccount.set(row.account_id, schemas);\n\t}\n\n\tfor (const [accountId, schemas] of byAccount) {\n\t\tlet totalBytes = 0;\n\t\tfor (const schema of schemas) {\n\t\t\ttry {\n\t\t\t\tconst result = await sql<{ size: string }>`\n SELECT COALESCE(SUM(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename))), 0)::text as size\n FROM pg_tables WHERE schemaname = ${schema}\n `.execute(db);\n\t\t\t\tconst row = result.rows[0] as { size?: string } | undefined;\n\t\t\t\ttotalBytes += Number(row?.size ?? 0);\n\t\t\t} catch {\n\t\t\t\t// Schema may not exist\n\t\t\t}\n\t\t}\n\n\t\tawait db\n\t\t\t.insertInto(\"usage_snapshots\")\n\t\t\t.values({\n\t\t\t\taccount_id: accountId,\n\t\t\t\tstorage_bytes: totalBytes,\n\t\t\t})\n\t\t\t.execute();\n\t}\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "0A5108029A948ED964756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "4876492CE8C84D6164756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -103,6 +103,8 @@ interface ApiKeysTable {
103
103
  rate_limit: Generated<number>;
104
104
  ip_address: string;
105
105
  account_id: string;
106
+ product: Generated<"account" | "streams" | "index">;
107
+ tier: "free" | "build" | "scale" | "enterprise" | null;
106
108
  last_used_at: Date | null;
107
109
  revoked_at: Date | null;
108
110
  created_at: Generated<Date>;
@@ -313,6 +315,208 @@ interface ChainReorgsTable {
313
315
  new_canonical_event_index: number;
314
316
  created_at: Generated<Date>;
315
317
  }
318
+ type Pox4FunctionName = "stack-stx" | "delegate-stx" | "stack-extend" | "stack-increase" | "revoke-delegate-stx" | "delegate-stack-stx" | "delegate-stack-extend" | "delegate-stack-increase" | "stack-aggregation-commit" | "stack-aggregation-commit-indexed" | "stack-aggregation-increase" | "set-signer-key-authorization";
319
+ interface Pox4CallsTable {
320
+ cursor: string;
321
+ block_height: number;
322
+ block_time: Date;
323
+ burn_block_height: number;
324
+ tx_id: string;
325
+ tx_index: number;
326
+ function_name: Pox4FunctionName;
327
+ caller: string;
328
+ stacker: string | null;
329
+ delegate_to: string | null;
330
+ amount_ustx: string | null;
331
+ lock_period: number | null;
332
+ pox_addr_version: number | null;
333
+ pox_addr_hashbytes: string | null;
334
+ pox_addr_btc: string | null;
335
+ start_cycle: number | null;
336
+ end_cycle: number | null;
337
+ signer_key: string | null;
338
+ signer_signature: string | null;
339
+ auth_id: string | null;
340
+ max_amount: string | null;
341
+ reward_cycle: number | null;
342
+ aggregated_amount_ustx: string | null;
343
+ aggregated_signer_index: number | null;
344
+ auth_period: number | null;
345
+ auth_topic: string | null;
346
+ auth_allowed: boolean | null;
347
+ result_ok: boolean;
348
+ result_raw: string;
349
+ canonical: Generated<boolean>;
350
+ source_cursor: string;
351
+ created_at: Generated<Date>;
352
+ }
353
+ interface Pox4CyclesDailyTable {
354
+ date: string;
355
+ reward_cycle: number;
356
+ total_stacked_ustx: Generated<string>;
357
+ solo_stackers: Generated<number>;
358
+ delegated_principals: Generated<number>;
359
+ unique_pools: Generated<number>;
360
+ unique_signers: Generated<number>;
361
+ calls_today: Generated<number>;
362
+ updated_at: Generated<Date>;
363
+ }
364
+ interface Pox4SignersDailyTable {
365
+ date: string;
366
+ reward_cycle: number;
367
+ signer_key: string;
368
+ weight_ustx: Generated<string>;
369
+ stacker_count: Generated<number>;
370
+ aggregation_calls: Generated<number>;
371
+ updated_at: Generated<Date>;
372
+ }
373
+ type SbtcEventTopic = "completed-deposit" | "withdrawal-create" | "withdrawal-accept" | "withdrawal-reject" | "key-rotation" | "update-protocol-contract";
374
+ interface SbtcEventsTable {
375
+ cursor: string;
376
+ block_height: number;
377
+ block_time: Date;
378
+ tx_id: string;
379
+ tx_index: number;
380
+ event_index: number;
381
+ topic: SbtcEventTopic;
382
+ request_id: number | null;
383
+ amount: string | null;
384
+ sender: string | null;
385
+ recipient_btc_version: number | null;
386
+ recipient_btc_hashbytes: string | null;
387
+ bitcoin_txid: string | null;
388
+ output_index: number | null;
389
+ sweep_txid: string | null;
390
+ burn_hash: string | null;
391
+ burn_height: number | null;
392
+ signer_bitmap: string | null;
393
+ max_fee: string | null;
394
+ fee: string | null;
395
+ block_height_at_request: number | null;
396
+ governance_contract_type: number | null;
397
+ governance_new_contract: string | null;
398
+ signer_aggregate_pubkey: string | null;
399
+ signer_threshold: number | null;
400
+ signer_address: string | null;
401
+ signer_keys_count: number | null;
402
+ canonical: Generated<boolean>;
403
+ source_cursor: string;
404
+ created_at: Generated<Date>;
405
+ }
406
+ type SbtcTokenEventType = "transfer" | "mint" | "burn";
407
+ interface SbtcTokenEventsTable {
408
+ cursor: string;
409
+ block_height: number;
410
+ block_time: Date;
411
+ tx_id: string;
412
+ tx_index: number;
413
+ event_index: number;
414
+ event_type: SbtcTokenEventType;
415
+ sender: string | null;
416
+ recipient: string | null;
417
+ amount: string;
418
+ memo: string | null;
419
+ canonical: Generated<boolean>;
420
+ source_cursor: string;
421
+ created_at: Generated<Date>;
422
+ }
423
+ interface SbtcSupplySnapshotsTable {
424
+ date: string;
425
+ total_supply: Generated<string>;
426
+ mints_today: Generated<string>;
427
+ burns_today: Generated<string>;
428
+ deposit_count: Generated<number>;
429
+ withdrawal_create_count: Generated<number>;
430
+ withdrawal_accept_count: Generated<number>;
431
+ withdrawal_reject_count: Generated<number>;
432
+ updated_at: Generated<Date>;
433
+ }
434
+ type BnsNameEventTopic = "new-name" | "transfer-name" | "renew-name" | "burn-name" | "new-airdrop";
435
+ interface BnsNameEventsTable {
436
+ cursor: string;
437
+ block_height: number;
438
+ block_time: Date;
439
+ tx_id: string;
440
+ tx_index: number;
441
+ event_index: number;
442
+ topic: BnsNameEventTopic;
443
+ namespace: string;
444
+ name: string;
445
+ fqn: string;
446
+ owner: string | null;
447
+ bns_id: string;
448
+ registered_at: number | null;
449
+ imported_at: number | null;
450
+ renewal_height: number | null;
451
+ stx_burn: string | null;
452
+ preordered_by: string | null;
453
+ hashed_salted_fqn_preorder: string | null;
454
+ canonical: Generated<boolean>;
455
+ source_cursor: string;
456
+ created_at: Generated<Date>;
457
+ }
458
+ type BnsNamespaceEventStatus = "launch" | "transfer-manager" | "freeze-manager" | "update-price-manager" | "freeze-price-manager" | "turn-off-manager-transfers";
459
+ interface BnsNamespaceEventsTable {
460
+ cursor: string;
461
+ block_height: number;
462
+ block_time: Date;
463
+ tx_id: string;
464
+ tx_index: number;
465
+ event_index: number;
466
+ status: BnsNamespaceEventStatus;
467
+ namespace: string;
468
+ manager: string | null;
469
+ manager_frozen: boolean | null;
470
+ manager_transfers_disabled: boolean | null;
471
+ price_function: string | null;
472
+ price_frozen: boolean | null;
473
+ lifetime: number | null;
474
+ revealed_at: number | null;
475
+ launched_at: number | null;
476
+ canonical: Generated<boolean>;
477
+ source_cursor: string;
478
+ created_at: Generated<Date>;
479
+ }
480
+ type BnsMarketplaceAction = "list-in-ustx" | "unlist-in-ustx" | "buy-in-ustx";
481
+ interface BnsMarketplaceEventsTable {
482
+ cursor: string;
483
+ block_height: number;
484
+ block_time: Date;
485
+ tx_id: string;
486
+ tx_index: number;
487
+ event_index: number;
488
+ action: BnsMarketplaceAction;
489
+ bns_id: string;
490
+ price_ustx: string | null;
491
+ commission: string | null;
492
+ canonical: Generated<boolean>;
493
+ source_cursor: string;
494
+ created_at: Generated<Date>;
495
+ }
496
+ interface BnsNamesTable {
497
+ fqn: string;
498
+ namespace: string;
499
+ name: string;
500
+ owner: string;
501
+ bns_id: string;
502
+ registered_at: number | null;
503
+ renewal_height: number | null;
504
+ last_event_cursor: string;
505
+ last_event_at: Date;
506
+ updated_at: Generated<Date>;
507
+ }
508
+ interface BnsNamespacesTable {
509
+ namespace: string;
510
+ manager: string | null;
511
+ manager_frozen: Generated<boolean>;
512
+ price_frozen: Generated<boolean>;
513
+ lifetime: number | null;
514
+ launched_at: number | null;
515
+ last_event_cursor: string;
516
+ last_event_at: Date;
517
+ name_count: Generated<number>;
518
+ updated_at: Generated<Date>;
519
+ }
316
520
  interface Database {
317
521
  blocks: BlocksTable;
318
522
  transactions: TransactionsTable;
@@ -351,6 +555,17 @@ interface Database {
351
555
  decoded_events: DecodedEventsTable;
352
556
  l2_decoder_checkpoints: L2DecoderCheckpointsTable;
353
557
  chain_reorgs: ChainReorgsTable;
558
+ pox4_calls: Pox4CallsTable;
559
+ pox4_cycles_daily: Pox4CyclesDailyTable;
560
+ pox4_signers_daily: Pox4SignersDailyTable;
561
+ sbtc_events: SbtcEventsTable;
562
+ sbtc_token_events: SbtcTokenEventsTable;
563
+ sbtc_supply_snapshots: SbtcSupplySnapshotsTable;
564
+ bns_name_events: BnsNameEventsTable;
565
+ bns_namespace_events: BnsNamespaceEventsTable;
566
+ bns_marketplace_events: BnsMarketplaceEventsTable;
567
+ bns_names: BnsNamesTable;
568
+ bns_namespaces: BnsNamespacesTable;
354
569
  }
355
570
  type TenantStatus = "provisioning" | "active" | "limit_warning" | "paused_limit" | "suspended" | "error" | "deleted";
356
571
  interface TenantsTable {
@@ -562,4 +777,4 @@ interface SubscriptionDeliveriesTable {
562
777
  }
563
778
  type SubscriptionDelivery = Selectable<SubscriptionDeliveriesTable>;
564
779
  type InsertSubscriptionDelivery = Insertable<SubscriptionDeliveriesTable>;
565
- export { WaitlistTable, UsageSnapshotsTable, UsageSnapshot, UsageDailyTable, UsageDaily, UpdateTransaction, UpdateTenantUsageMonthly, UpdateTenantComputeAddon, UpdateTenant, UpdateSubscriptionOutbox, UpdateSubscription, UpdateSubgraphOperation, UpdateSubgraph, UpdateProject, UpdateIndexProgress, UpdateEvent, UpdateChatSession, UpdateBlock, UpdateApiKey, UpdateAccountSpendCap, TransactionsTable, Transaction, TenantsTable, TenantUsageMonthlyTable, TenantUsageMonthly, TenantStatus, TenantComputeAddonsTable, TenantComputeAddon, Tenant, TeamMembersTable, TeamMember, TeamInvitationsTable, TeamInvitation, SubscriptionsTable, SubscriptionStatus, SubscriptionRuntime, SubscriptionOutboxTable, SubscriptionOutbox, SubscriptionFormat, SubscriptionDelivery, SubscriptionDeliveriesTable, Subscription, SubgraphsTable, SubgraphUsageDailyTable, SubgraphUsageDaily, SubgraphTableSnapshotsTable, SubgraphProcessingStatsTable, SubgraphOperationsTable, SubgraphOperationStatus, SubgraphOperationKind, SubgraphOperation, SubgraphHealthSnapshotsTable, SubgraphHealthSnapshot, SubgraphGapsTable, SubgraphGap, Subgraph, SessionsTable, Session, ProvisioningAuditStatus, ProvisioningAuditLogTable, ProvisioningAuditLog, ProvisioningAuditEvent, ProjectsTable, Project, ProcessedStripeEventsTable, OutboxStatus, MagicLinksTable, MagicLink, L2DecoderCheckpointsTable, InsertTransaction, InsertTenantUsageMonthly, InsertTenantComputeAddon, InsertTenant, InsertTeamMember, InsertTeamInvitation, InsertSubscriptionOutbox, InsertSubscriptionDelivery, InsertSubscription, InsertSubgraphUsageDaily, InsertSubgraphOperation, InsertSubgraphHealthSnapshot, InsertSubgraphGap, InsertSubgraph, InsertSession, InsertProvisioningAuditLog, InsertProject, InsertMagicLink, InsertIndexProgress, InsertEvent, InsertChatSession, InsertChatMessage, InsertBlock, InsertApiKey, InsertAccountSpendCap, InsertAccountInsight, InsertAccountAgentRun, InsertAccount, IndexProgressTable, IndexProgress, EventsTable, Event, DecodedEventsTable, Database, ChatSessionsTable, ChatSession, ChatMessagesTable, ChatMessage, ChainReorgsTable, BlocksTable, Block, ApiKeysTable, ApiKey, AccountsTable, AccountSpendCapsTable, AccountSpendCap, AccountInsightsTable, AccountInsight, AccountAgentRunsTable, AccountAgentRun, Account };
780
+ export { WaitlistTable, UsageSnapshotsTable, UsageSnapshot, UsageDailyTable, UsageDaily, UpdateTransaction, UpdateTenantUsageMonthly, UpdateTenantComputeAddon, UpdateTenant, UpdateSubscriptionOutbox, UpdateSubscription, UpdateSubgraphOperation, UpdateSubgraph, UpdateProject, UpdateIndexProgress, UpdateEvent, UpdateChatSession, UpdateBlock, UpdateApiKey, UpdateAccountSpendCap, TransactionsTable, Transaction, TenantsTable, TenantUsageMonthlyTable, TenantUsageMonthly, TenantStatus, TenantComputeAddonsTable, TenantComputeAddon, Tenant, TeamMembersTable, TeamMember, TeamInvitationsTable, TeamInvitation, SubscriptionsTable, SubscriptionStatus, SubscriptionRuntime, SubscriptionOutboxTable, SubscriptionOutbox, SubscriptionFormat, SubscriptionDelivery, SubscriptionDeliveriesTable, Subscription, SubgraphsTable, SubgraphUsageDailyTable, SubgraphUsageDaily, SubgraphTableSnapshotsTable, SubgraphProcessingStatsTable, SubgraphOperationsTable, SubgraphOperationStatus, SubgraphOperationKind, SubgraphOperation, SubgraphHealthSnapshotsTable, SubgraphHealthSnapshot, SubgraphGapsTable, SubgraphGap, Subgraph, SessionsTable, Session, SbtcTokenEventsTable, SbtcTokenEventType, SbtcSupplySnapshotsTable, SbtcEventsTable, SbtcEventTopic, ProvisioningAuditStatus, ProvisioningAuditLogTable, ProvisioningAuditLog, ProvisioningAuditEvent, ProjectsTable, Project, ProcessedStripeEventsTable, Pox4SignersDailyTable, Pox4FunctionName, Pox4CyclesDailyTable, Pox4CallsTable, OutboxStatus, MagicLinksTable, MagicLink, L2DecoderCheckpointsTable, InsertTransaction, InsertTenantUsageMonthly, InsertTenantComputeAddon, InsertTenant, InsertTeamMember, InsertTeamInvitation, InsertSubscriptionOutbox, InsertSubscriptionDelivery, InsertSubscription, InsertSubgraphUsageDaily, InsertSubgraphOperation, InsertSubgraphHealthSnapshot, InsertSubgraphGap, InsertSubgraph, InsertSession, InsertProvisioningAuditLog, InsertProject, InsertMagicLink, InsertIndexProgress, InsertEvent, InsertChatSession, InsertChatMessage, InsertBlock, InsertApiKey, InsertAccountSpendCap, InsertAccountInsight, InsertAccountAgentRun, InsertAccount, IndexProgressTable, IndexProgress, EventsTable, Event, DecodedEventsTable, Database, ChatSessionsTable, ChatSession, ChatMessagesTable, ChatMessage, ChainReorgsTable, BnsNamespacesTable, BnsNamespaceEventsTable, BnsNamespaceEventStatus, BnsNamesTable, BnsNameEventsTable, BnsNameEventTopic, BnsMarketplaceEventsTable, BnsMarketplaceAction, BlocksTable, Block, ApiKeysTable, ApiKey, AccountsTable, AccountSpendCapsTable, AccountSpendCap, AccountInsightsTable, AccountInsight, AccountAgentRunsTable, AccountAgentRun, Account };