@secondlayer/shared 0.12.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -7
- package/dist/src/constants.d.ts +1 -1
- package/dist/src/constants.js.map +2 -2
- package/dist/src/crypto/secrets.d.ts +5 -0
- package/dist/src/crypto/secrets.js +69 -0
- package/dist/src/crypto/secrets.js.map +10 -0
- package/dist/src/db/index.d.ts +37 -64
- package/dist/src/db/index.js +2 -2
- package/dist/src/db/index.js.map +2 -2
- package/dist/src/db/queries/accounts.d.ts +30 -51
- package/dist/src/db/queries/integrity.d.ts +30 -51
- package/dist/src/db/queries/marketplace.d.ts +30 -51
- package/dist/src/db/queries/projects.d.ts +30 -51
- package/dist/src/db/queries/subgraph-gaps.d.ts +30 -51
- package/dist/src/db/queries/subgraphs.d.ts +31 -51
- package/dist/src/db/queries/subgraphs.js +3 -1
- package/dist/src/db/queries/subgraphs.js.map +3 -3
- package/dist/src/db/queries/usage.d.ts +31 -56
- package/dist/src/db/queries/usage.js +1 -19
- package/dist/src/db/queries/usage.js.map +4 -4
- package/dist/src/db/queries/workflows.d.ts +35 -53
- package/dist/src/db/queries/workflows.js +130 -13
- package/dist/src/db/queries/workflows.js.map +5 -4
- package/dist/src/db/schema.d.ts +37 -64
- package/dist/src/errors.d.ts +19 -50
- package/dist/src/errors.js +28 -45
- package/dist/src/errors.js.map +3 -3
- package/dist/src/index.d.ts +59 -256
- package/dist/src/index.js +32 -234
- package/dist/src/index.js.map +7 -9
- package/dist/src/lib/plans.d.ts +0 -1
- package/dist/src/lib/plans.js +1 -2
- package/dist/src/lib/plans.js.map +3 -3
- package/dist/src/node/local-client.d.ts +30 -51
- package/dist/src/pricing.d.ts +28 -0
- package/dist/src/pricing.js +47 -0
- package/dist/src/pricing.js.map +10 -0
- package/dist/src/queue/listener.d.ts +1 -18
- package/dist/src/queue/listener.js +2 -12
- package/dist/src/queue/listener.js.map +3 -3
- package/dist/src/schemas/filters.d.ts +3 -3
- package/dist/src/schemas/filters.js +3 -3
- package/dist/src/schemas/filters.js.map +3 -3
- package/dist/src/schemas/index.d.ts +5 -100
- package/dist/src/schemas/index.js +4 -88
- package/dist/src/schemas/index.js.map +5 -6
- package/dist/src/schemas/subgraphs.d.ts +2 -0
- package/dist/src/schemas/subgraphs.js +2 -1
- package/dist/src/schemas/subgraphs.js.map +3 -3
- package/dist/src/schemas/workflows.d.ts +4 -0
- package/dist/src/schemas/workflows.js +5 -1
- package/dist/src/schemas/workflows.js.map +3 -3
- package/dist/src/types.d.ts +1 -53
- package/migrations/0030_workflow_source_code.ts +21 -0
- package/migrations/0031_subgraph_source_code.ts +18 -0
- package/migrations/0032_drop_streams_tables.ts +43 -0
- package/migrations/0033_workflow_steps_memo_key.ts +54 -0
- package/migrations/0034_workflow_signer_secrets.ts +42 -0
- package/migrations/0035_workflow_budgets.ts +53 -0
- package/migrations/0036_tx_confirmed_notify.ts +36 -0
- package/package.json +11 -15
- package/dist/src/db/queries/metrics.d.ts +0 -419
- package/dist/src/db/queries/metrics.js +0 -55
- package/dist/src/db/queries/metrics.js.map +0 -10
- package/dist/src/queue/index.d.ts +0 -50
- package/dist/src/queue/index.js +0 -184
- package/dist/src/queue/index.js.map +0 -12
- package/dist/src/queue/recovery.d.ts +0 -14
- package/dist/src/queue/recovery.js +0 -108
- package/dist/src/queue/recovery.js.map +0 -12
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/lib/plans.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"export interface PlanLimits {\n\
|
|
5
|
+
"export interface PlanLimits {\n\tsubgraphs: number;\n\tapiRequestsPerDay: number;\n\tdeliveriesPerMonth: number;\n\tstorageBytes: number;\n}\n\nexport const FREE_PLAN: PlanLimits = {\n\tsubgraphs: 2,\n\tapiRequestsPerDay: 1_000,\n\tdeliveriesPerMonth: 5_000,\n\tstorageBytes: 100 * 1024 * 1024,\n};\n\nexport function getPlanLimits(plan: string): PlanLimits {\n\tswitch (plan) {\n\t\tcase \"free\":\n\t\tdefault:\n\t\t\treturn FREE_PLAN;\n\t}\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAOO,IAAM,YAAwB;AAAA,EACpC,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,cAAc,MAAM,OAAO;AAC5B;AAEO,SAAS,aAAa,CAAC,MAA0B;AAAA,EACvD,QAAQ;AAAA,SACF;AAAA;AAAA,MAEJ,OAAO;AAAA;AAAA;",
|
|
8
|
+
"debugId": "073DFD0969A0C8D364756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -32,40 +32,6 @@ interface EventsTable {
|
|
|
32
32
|
data: unknown;
|
|
33
33
|
created_at: Generated<Date>;
|
|
34
34
|
}
|
|
35
|
-
interface StreamsTable {
|
|
36
|
-
id: Generated<string>;
|
|
37
|
-
name: string;
|
|
38
|
-
status: Generated<string>;
|
|
39
|
-
filters: unknown;
|
|
40
|
-
options: Generated<unknown>;
|
|
41
|
-
endpoint_url: string;
|
|
42
|
-
signing_secret: string | null;
|
|
43
|
-
api_key_id: string;
|
|
44
|
-
project_id: string | null;
|
|
45
|
-
created_at: Generated<Date>;
|
|
46
|
-
updated_at: Generated<Date>;
|
|
47
|
-
}
|
|
48
|
-
interface StreamMetricsTable {
|
|
49
|
-
stream_id: string;
|
|
50
|
-
last_triggered_at: Date | null;
|
|
51
|
-
last_triggered_block: number | null;
|
|
52
|
-
total_deliveries: Generated<number>;
|
|
53
|
-
failed_deliveries: Generated<number>;
|
|
54
|
-
error_message: string | null;
|
|
55
|
-
}
|
|
56
|
-
interface JobsTable {
|
|
57
|
-
id: Generated<string>;
|
|
58
|
-
stream_id: string;
|
|
59
|
-
block_height: number;
|
|
60
|
-
status: Generated<string>;
|
|
61
|
-
attempts: Generated<number>;
|
|
62
|
-
locked_at: Date | null;
|
|
63
|
-
locked_by: string | null;
|
|
64
|
-
error: string | null;
|
|
65
|
-
backfill: Generated<boolean>;
|
|
66
|
-
created_at: Generated<Date>;
|
|
67
|
-
completed_at: Date | null;
|
|
68
|
-
}
|
|
69
35
|
interface IndexProgressTable {
|
|
70
36
|
network: string;
|
|
71
37
|
last_indexed_block: Generated<number>;
|
|
@@ -73,19 +39,6 @@ interface IndexProgressTable {
|
|
|
73
39
|
highest_seen_block: Generated<number>;
|
|
74
40
|
updated_at: Generated<Date>;
|
|
75
41
|
}
|
|
76
|
-
interface DeliveriesTable {
|
|
77
|
-
id: Generated<string>;
|
|
78
|
-
stream_id: string;
|
|
79
|
-
job_id: string | null;
|
|
80
|
-
block_height: number;
|
|
81
|
-
status: string;
|
|
82
|
-
status_code: number | null;
|
|
83
|
-
response_time_ms: number | null;
|
|
84
|
-
attempts: Generated<number>;
|
|
85
|
-
error: string | null;
|
|
86
|
-
payload: unknown;
|
|
87
|
-
created_at: Generated<Date>;
|
|
88
|
-
}
|
|
89
42
|
interface SubgraphsTable {
|
|
90
43
|
id: Generated<string>;
|
|
91
44
|
name: string;
|
|
@@ -106,6 +59,7 @@ interface SubgraphsTable {
|
|
|
106
59
|
api_key_id: string | null;
|
|
107
60
|
account_id: string;
|
|
108
61
|
handler_code: string | null;
|
|
62
|
+
source_code: string | null;
|
|
109
63
|
project_id: string | null;
|
|
110
64
|
is_public: Generated<boolean>;
|
|
111
65
|
tags: Generated<string[]>;
|
|
@@ -304,6 +258,7 @@ interface WorkflowDefinitionsTable {
|
|
|
304
258
|
trigger_type: string;
|
|
305
259
|
trigger_config: unknown;
|
|
306
260
|
handler_path: string;
|
|
261
|
+
source_code: string | null;
|
|
307
262
|
retries_config: unknown | null;
|
|
308
263
|
timeout_ms: number | null;
|
|
309
264
|
api_key_id: string;
|
|
@@ -340,6 +295,8 @@ interface WorkflowStepsTable {
|
|
|
340
295
|
started_at: Date | null;
|
|
341
296
|
completed_at: Date | null;
|
|
342
297
|
duration_ms: number | null;
|
|
298
|
+
memo_key: string | null;
|
|
299
|
+
parent_step_id: string | null;
|
|
343
300
|
created_at: Generated<Date>;
|
|
344
301
|
}
|
|
345
302
|
interface WorkflowQueueTable {
|
|
@@ -374,11 +331,7 @@ interface Database {
|
|
|
374
331
|
blocks: BlocksTable;
|
|
375
332
|
transactions: TransactionsTable;
|
|
376
333
|
events: EventsTable;
|
|
377
|
-
streams: StreamsTable;
|
|
378
|
-
stream_metrics: StreamMetricsTable;
|
|
379
|
-
jobs: JobsTable;
|
|
380
334
|
index_progress: IndexProgressTable;
|
|
381
|
-
deliveries: DeliveriesTable;
|
|
382
335
|
subgraphs: SubgraphsTable;
|
|
383
336
|
api_keys: ApiKeysTable;
|
|
384
337
|
accounts: AccountsTable;
|
|
@@ -405,6 +358,32 @@ interface Database {
|
|
|
405
358
|
workflow_queue: WorkflowQueueTable;
|
|
406
359
|
workflow_schedules: WorkflowSchedulesTable;
|
|
407
360
|
workflow_cursors: WorkflowCursorsTable;
|
|
361
|
+
workflow_signer_secrets: WorkflowSignerSecretsTable;
|
|
362
|
+
workflow_budgets: WorkflowBudgetsTable;
|
|
363
|
+
}
|
|
364
|
+
interface WorkflowBudgetsTable {
|
|
365
|
+
id: Generated<string>;
|
|
366
|
+
workflow_definition_id: string;
|
|
367
|
+
/** Period key: "daily:YYYY-MM-DD" | "weekly:YYYY-Www" | "per-run:<uuid>". */
|
|
368
|
+
period: string;
|
|
369
|
+
ai_usd_used: Generated<string>;
|
|
370
|
+
ai_tokens_used: Generated<string>;
|
|
371
|
+
chain_microstx_used: Generated<string>;
|
|
372
|
+
chain_tx_count: Generated<number>;
|
|
373
|
+
run_count: Generated<number>;
|
|
374
|
+
step_count: Generated<number>;
|
|
375
|
+
reset_at: Date;
|
|
376
|
+
created_at: Generated<Date>;
|
|
377
|
+
updated_at: Generated<Date>;
|
|
378
|
+
}
|
|
379
|
+
interface WorkflowSignerSecretsTable {
|
|
380
|
+
id: Generated<string>;
|
|
381
|
+
account_id: string;
|
|
382
|
+
name: string;
|
|
383
|
+
/** AES-GCM ciphertext bytes produced by the runner's KMS on write. */
|
|
384
|
+
encrypted_value: Buffer;
|
|
385
|
+
created_at: Generated<Date>;
|
|
386
|
+
updated_at: Generated<Date>;
|
|
408
387
|
}
|
|
409
388
|
/** Matches the NewBlockPayload shape expected by the indexer's /new_block endpoint */
|
|
410
389
|
interface ReplayBlockPayload {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token → USD pricing constants for internal observability.
|
|
3
|
+
*
|
|
4
|
+
* **Not customer billing.** Tier pricing covers compute; these constants
|
|
5
|
+
* let the dashboard display "~$X spent in AI today" and let us track
|
|
6
|
+
* gross-margin internally. Update manually when providers change prices
|
|
7
|
+
* (roughly twice per year).
|
|
8
|
+
*
|
|
9
|
+
* Source: public provider pricing pages as of 2026-04-17.
|
|
10
|
+
*/
|
|
11
|
+
interface ModelPricing {
|
|
12
|
+
/** USD per 1M input tokens */
|
|
13
|
+
inputPerMTokens: number;
|
|
14
|
+
/** USD per 1M output tokens */
|
|
15
|
+
outputPerMTokens: number;
|
|
16
|
+
}
|
|
17
|
+
declare const MODEL_PRICING: Record<string, Record<string, ModelPricing>>;
|
|
18
|
+
interface TokenUsage {
|
|
19
|
+
inputTokens: number;
|
|
20
|
+
outputTokens: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Compute approximate USD cost for an AI step. Returns `null` if the
|
|
24
|
+
* (provider, model) pair isn't in the pricing table — the caller should
|
|
25
|
+
* display "-" rather than "$0".
|
|
26
|
+
*/
|
|
27
|
+
declare function computeUsdCost(provider: string, modelId: string, usage: TokenUsage): number | null;
|
|
28
|
+
export { computeUsdCost, TokenUsage, ModelPricing, MODEL_PRICING };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __returnValue = (v) => v;
|
|
4
|
+
function __exportSetter(name, newValue) {
|
|
5
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
+
}
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
set: __exportSetter.bind(all, name)
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// src/pricing.ts
|
|
18
|
+
var MODEL_PRICING = {
|
|
19
|
+
anthropic: {
|
|
20
|
+
"claude-haiku-4-5": { inputPerMTokens: 1, outputPerMTokens: 5 },
|
|
21
|
+
"claude-haiku-4-5-20251001": { inputPerMTokens: 1, outputPerMTokens: 5 },
|
|
22
|
+
"claude-sonnet-4-6": { inputPerMTokens: 3, outputPerMTokens: 15 },
|
|
23
|
+
"claude-opus-4-7": { inputPerMTokens: 15, outputPerMTokens: 75 }
|
|
24
|
+
},
|
|
25
|
+
openai: {
|
|
26
|
+
"gpt-4.1": { inputPerMTokens: 2.5, outputPerMTokens: 10 },
|
|
27
|
+
"gpt-4o": { inputPerMTokens: 2.5, outputPerMTokens: 10 },
|
|
28
|
+
"gpt-4o-mini": { inputPerMTokens: 0.15, outputPerMTokens: 0.6 }
|
|
29
|
+
},
|
|
30
|
+
google: {
|
|
31
|
+
"gemini-2.5-pro": { inputPerMTokens: 1.25, outputPerMTokens: 10 },
|
|
32
|
+
"gemini-2.5-flash": { inputPerMTokens: 0.3, outputPerMTokens: 2.5 }
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
function computeUsdCost(provider, modelId, usage) {
|
|
36
|
+
const p = MODEL_PRICING[provider]?.[modelId];
|
|
37
|
+
if (!p)
|
|
38
|
+
return null;
|
|
39
|
+
return usage.inputTokens * p.inputPerMTokens / 1e6 + usage.outputTokens * p.outputPerMTokens / 1e6;
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
computeUsdCost,
|
|
43
|
+
MODEL_PRICING
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
//# debugId=4DD95AFC388E4B9664756E2164756E21
|
|
47
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/pricing.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Token → USD pricing constants for internal observability.\n *\n * **Not customer billing.** Tier pricing covers compute; these constants\n * let the dashboard display \"~$X spent in AI today\" and let us track\n * gross-margin internally. Update manually when providers change prices\n * (roughly twice per year).\n *\n * Source: public provider pricing pages as of 2026-04-17.\n */\n\nexport interface ModelPricing {\n\t/** USD per 1M input tokens */\n\tinputPerMTokens: number;\n\t/** USD per 1M output tokens */\n\toutputPerMTokens: number;\n}\n\nexport const MODEL_PRICING: Record<string, Record<string, ModelPricing>> = {\n\tanthropic: {\n\t\t\"claude-haiku-4-5\": { inputPerMTokens: 1, outputPerMTokens: 5 },\n\t\t\"claude-haiku-4-5-20251001\": { inputPerMTokens: 1, outputPerMTokens: 5 },\n\t\t\"claude-sonnet-4-6\": { inputPerMTokens: 3, outputPerMTokens: 15 },\n\t\t\"claude-opus-4-7\": { inputPerMTokens: 15, outputPerMTokens: 75 },\n\t},\n\topenai: {\n\t\t\"gpt-4.1\": { inputPerMTokens: 2.5, outputPerMTokens: 10 },\n\t\t\"gpt-4o\": { inputPerMTokens: 2.5, outputPerMTokens: 10 },\n\t\t\"gpt-4o-mini\": { inputPerMTokens: 0.15, outputPerMTokens: 0.6 },\n\t},\n\tgoogle: {\n\t\t\"gemini-2.5-pro\": { inputPerMTokens: 1.25, outputPerMTokens: 10 },\n\t\t\"gemini-2.5-flash\": { inputPerMTokens: 0.3, outputPerMTokens: 2.5 },\n\t},\n};\n\nexport interface TokenUsage {\n\tinputTokens: number;\n\toutputTokens: number;\n}\n\n/**\n * Compute approximate USD cost for an AI step. Returns `null` if the\n * (provider, model) pair isn't in the pricing table — the caller should\n * display \"-\" rather than \"$0\".\n */\nexport function computeUsdCost(\n\tprovider: string,\n\tmodelId: string,\n\tusage: TokenUsage,\n): number | null {\n\tconst p = MODEL_PRICING[provider]?.[modelId];\n\tif (!p) return null;\n\treturn (\n\t\t(usage.inputTokens * p.inputPerMTokens) / 1_000_000 +\n\t\t(usage.outputTokens * p.outputPerMTokens) / 1_000_000\n\t);\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAkBO,IAAM,gBAA8D;AAAA,EAC1E,WAAW;AAAA,IACV,oBAAoB,EAAE,iBAAiB,GAAG,kBAAkB,EAAE;AAAA,IAC9D,6BAA6B,EAAE,iBAAiB,GAAG,kBAAkB,EAAE;AAAA,IACvE,qBAAqB,EAAE,iBAAiB,GAAG,kBAAkB,GAAG;AAAA,IAChE,mBAAmB,EAAE,iBAAiB,IAAI,kBAAkB,GAAG;AAAA,EAChE;AAAA,EACA,QAAQ;AAAA,IACP,WAAW,EAAE,iBAAiB,KAAK,kBAAkB,GAAG;AAAA,IACxD,UAAU,EAAE,iBAAiB,KAAK,kBAAkB,GAAG;AAAA,IACvD,eAAe,EAAE,iBAAiB,MAAM,kBAAkB,IAAI;AAAA,EAC/D;AAAA,EACA,QAAQ;AAAA,IACP,kBAAkB,EAAE,iBAAiB,MAAM,kBAAkB,GAAG;AAAA,IAChE,oBAAoB,EAAE,iBAAiB,KAAK,kBAAkB,IAAI;AAAA,EACnE;AACD;AAYO,SAAS,cAAc,CAC7B,UACA,SACA,OACgB;AAAA,EAChB,MAAM,IAAI,cAAc,YAAY;AAAA,EACpC,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,OACE,MAAM,cAAc,EAAE,kBAAmB,MACzC,MAAM,eAAe,EAAE,mBAAoB;AAAA;",
|
|
8
|
+
"debugId": "4DD95AFC388E4B9664756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
declare const CHANNEL_NEW_JOB = "streams:new_job";
|
|
2
|
-
/**
|
|
3
|
-
* Listen for notifications on a channel
|
|
4
|
-
* Uses a dedicated connection for LISTEN
|
|
5
|
-
*/
|
|
6
1
|
declare function listen(channel: string, callback: (payload?: string) => void): Promise<() => Promise<void>>;
|
|
7
|
-
/**
|
|
8
|
-
* Send a notification on a channel
|
|
9
|
-
*/
|
|
10
2
|
declare function notify(channel: string, payload?: string): Promise<void>;
|
|
11
|
-
|
|
12
|
-
* Listen for new job notifications
|
|
13
|
-
* Convenience wrapper for the common use case
|
|
14
|
-
*/
|
|
15
|
-
declare function listenForJobs(callback: (payload?: string) => void): Promise<() => Promise<void>>;
|
|
16
|
-
/**
|
|
17
|
-
* Notify workers about new jobs
|
|
18
|
-
*/
|
|
19
|
-
declare function notifyNewJob(streamId?: string): Promise<void>;
|
|
20
|
-
export { notifyNewJob, notify, listenForJobs, listen, CHANNEL_NEW_JOB };
|
|
3
|
+
export { notify, listen };
|
|
@@ -16,7 +16,6 @@ var __export = (target, all) => {
|
|
|
16
16
|
|
|
17
17
|
// src/queue/listener.ts
|
|
18
18
|
import postgres from "postgres";
|
|
19
|
-
var CHANNEL_NEW_JOB = "streams:new_job";
|
|
20
19
|
async function listen(channel, callback) {
|
|
21
20
|
const connectionString = process.env.DATABASE_URL;
|
|
22
21
|
if (!connectionString) {
|
|
@@ -49,19 +48,10 @@ async function notify(channel, payload) {
|
|
|
49
48
|
await client.end();
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
|
-
async function listenForJobs(callback) {
|
|
53
|
-
return listen(CHANNEL_NEW_JOB, callback);
|
|
54
|
-
}
|
|
55
|
-
async function notifyNewJob(streamId) {
|
|
56
|
-
return notify(CHANNEL_NEW_JOB, streamId);
|
|
57
|
-
}
|
|
58
51
|
export {
|
|
59
|
-
notifyNewJob,
|
|
60
52
|
notify,
|
|
61
|
-
|
|
62
|
-
listen,
|
|
63
|
-
CHANNEL_NEW_JOB
|
|
53
|
+
listen
|
|
64
54
|
};
|
|
65
55
|
|
|
66
|
-
//# debugId=
|
|
56
|
+
//# debugId=BC1D53C4E8438D5E64756E2164756E21
|
|
67
57
|
//# sourceMappingURL=listener.js.map
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/queue/listener.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import postgres from \"postgres\";\n\
|
|
5
|
+
"import postgres from \"postgres\";\n\nexport async function listen(\n\tchannel: string,\n\tcallback: (payload?: string) => void,\n): Promise<() => Promise<void>> {\n\tconst connectionString = process.env.DATABASE_URL;\n\tif (!connectionString) {\n\t\tthrow new Error(\"DATABASE_URL is required\");\n\t}\n\n\tconst client = postgres(connectionString, {\n\t\tmax: 1,\n\t\tonnotice: () => {},\n\t});\n\n\tawait client.listen(channel, (payload) => {\n\t\tcallback(payload);\n\t});\n\n\treturn async () => {\n\t\tawait client.end();\n\t};\n}\n\nexport async function notify(channel: string, payload?: string): Promise<void> {\n\tconst connectionString = process.env.DATABASE_URL;\n\tif (!connectionString) {\n\t\tthrow new Error(\"DATABASE_URL is required\");\n\t}\n\n\tconst client = postgres(connectionString, { max: 1 });\n\n\ttry {\n\t\tif (payload) {\n\t\t\tawait client`SELECT pg_notify(${channel}, ${payload})`;\n\t\t} else {\n\t\t\tawait client`SELECT pg_notify(${channel}, '')`;\n\t\t}\n\t} finally {\n\t\tawait client.end();\n\t}\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAEA,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAEA,eAAsB,MAAM,CAC3B,SACA,UAC+B;AAAA,EAC/B,MAAM,mBAAmB,QAAQ,IAAI;AAAA,EACrC,IAAI,CAAC,kBAAkB;AAAA,IACtB,MAAM,IAAI,MAAM,0BAA0B;AAAA,EAC3C;AAAA,EAEA,MAAM,SAAS,SAAS,kBAAkB;AAAA,IACzC,KAAK;AAAA,IACL,UAAU,MAAM;AAAA,EACjB,CAAC;AAAA,EAED,MAAM,OAAO,OAAO,SAAS,CAAC,YAAY;AAAA,IACzC,SAAS,OAAO;AAAA,GAChB;AAAA,EAED,OAAO,YAAY;AAAA,IAClB,MAAM,OAAO,IAAI;AAAA;AAAA;AAInB,eAAsB,MAAM,CAAC,SAAiB,SAAiC;AAAA,EAC9E,MAAM,mBAAmB,QAAQ,IAAI;AAAA,EACrC,IAAI,CAAC,kBAAkB;AAAA,IACtB,MAAM,IAAI,MAAM,0BAA0B;AAAA,EAC3C;AAAA,EAEA,MAAM,SAAS,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC;AAAA,EAEpD,IAAI;AAAA,IACH,IAAI,SAAS;AAAA,MACZ,MAAM,0BAA0B,YAAY;AAAA,IAC7C,EAAO;AAAA,MACN,MAAM,0BAA0B;AAAA;AAAA,YAEhC;AAAA,IACD,MAAM,OAAO,IAAI;AAAA;AAAA;",
|
|
8
|
+
"debugId": "BC1D53C4E8438D5E64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -76,7 +76,7 @@ interface PrintEventFilter {
|
|
|
76
76
|
topic?: string;
|
|
77
77
|
contains?: string;
|
|
78
78
|
}
|
|
79
|
-
type
|
|
79
|
+
type EventFilter = StxTransferFilter | StxMintFilter | StxBurnFilter | StxLockFilter | FtTransferFilter | FtMintFilter | FtBurnFilter | NftTransferFilter | NftMintFilter | NftBurnFilter | ContractCallFilter | ContractDeployFilter | PrintEventFilter;
|
|
80
80
|
declare const StxTransferFilterSchema: z.ZodType<StxTransferFilter>;
|
|
81
81
|
declare const StxMintFilterSchema: z.ZodType<StxMintFilter>;
|
|
82
82
|
declare const StxBurnFilterSchema: z.ZodType<StxBurnFilter>;
|
|
@@ -90,5 +90,5 @@ declare const NftBurnFilterSchema: z.ZodType<NftBurnFilter>;
|
|
|
90
90
|
declare const ContractCallFilterSchema: z.ZodType<ContractCallFilter>;
|
|
91
91
|
declare const ContractDeployFilterSchema: z.ZodType<ContractDeployFilter>;
|
|
92
92
|
declare const PrintEventFilterSchema: z.ZodType<PrintEventFilter>;
|
|
93
|
-
declare const
|
|
94
|
-
export { StxTransferFilterSchema, StxTransferFilter, StxMintFilterSchema, StxMintFilter, StxLockFilterSchema, StxLockFilter, StxBurnFilterSchema, StxBurnFilter,
|
|
93
|
+
declare const EventFilterSchema: z.ZodType<EventFilter>;
|
|
94
|
+
export { StxTransferFilterSchema, StxTransferFilter, StxMintFilterSchema, StxMintFilter, StxLockFilterSchema, StxLockFilter, StxBurnFilterSchema, StxBurnFilter, PrintEventFilterSchema, PrintEventFilter, NftTransferFilterSchema, NftTransferFilter, NftMintFilterSchema, NftMintFilter, NftBurnFilterSchema, NftBurnFilter, FtTransferFilterSchema, FtTransferFilter, FtMintFilterSchema, FtMintFilter, FtBurnFilterSchema, FtBurnFilter, EventFilterSchema, EventFilter, ContractDeployFilterSchema, ContractDeployFilter, ContractCallFilterSchema, ContractCallFilter };
|
|
@@ -102,7 +102,7 @@ var PrintEventFilterSchema = z.object({
|
|
|
102
102
|
topic: z.string().optional(),
|
|
103
103
|
contains: z.string().optional()
|
|
104
104
|
});
|
|
105
|
-
var
|
|
105
|
+
var EventFilterSchema = z.discriminatedUnion("type", [
|
|
106
106
|
StxTransferFilterSchema,
|
|
107
107
|
StxMintFilterSchema,
|
|
108
108
|
StxBurnFilterSchema,
|
|
@@ -122,7 +122,6 @@ export {
|
|
|
122
122
|
StxMintFilterSchema,
|
|
123
123
|
StxLockFilterSchema,
|
|
124
124
|
StxBurnFilterSchema,
|
|
125
|
-
StreamFilterSchema,
|
|
126
125
|
PrintEventFilterSchema,
|
|
127
126
|
NftTransferFilterSchema,
|
|
128
127
|
NftMintFilterSchema,
|
|
@@ -130,9 +129,10 @@ export {
|
|
|
130
129
|
FtTransferFilterSchema,
|
|
131
130
|
FtMintFilterSchema,
|
|
132
131
|
FtBurnFilterSchema,
|
|
132
|
+
EventFilterSchema,
|
|
133
133
|
ContractDeployFilterSchema,
|
|
134
134
|
ContractCallFilterSchema
|
|
135
135
|
};
|
|
136
136
|
|
|
137
|
-
//# debugId=
|
|
137
|
+
//# debugId=DB823597308735A664756E2164756E21
|
|
138
138
|
//# sourceMappingURL=filters.js.map
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/schemas/filters.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { isValidAddress as _isValidAddress } from \"@secondlayer/stacks\";\nimport { z } from \"zod/v4\";\n\nconst isValidAddress = _isValidAddress as (addr: string) => boolean;\n\n/** Validate a Stacks principal (standard or contract, e.g. SP2J...ABC or SP2J...ABC.contract-name) */\nconst stacksPrincipal = z.string().refine((val) => {\n\tconst parts = val.split(\".\");\n\tif (parts.length > 2) return false;\n\treturn isValidAddress(parts[0]!);\n}, \"Invalid Stacks principal address\");\n\n// Base filter with common fields\nconst baseFilter = {\n\t// Optional: filter by sender\n\tsender: stacksPrincipal.optional(),\n\t// Optional: filter by recipient\n\trecipient: stacksPrincipal.optional(),\n};\n\n// Type exports — defined first so they can annotate schemas\nexport interface StxTransferFilter {\n\ttype: \"stx_transfer\";\n\tsender?: string;\n\trecipient?: string;\n\tminAmount?: number;\n\tmaxAmount?: number;\n}\n\nexport interface StxMintFilter {\n\ttype: \"stx_mint\";\n\trecipient?: string;\n\tminAmount?: number;\n}\n\nexport interface StxBurnFilter {\n\ttype: \"stx_burn\";\n\tsender?: string;\n\tminAmount?: number;\n}\n\nexport interface StxLockFilter {\n\ttype: \"stx_lock\";\n\tlockedAddress?: string;\n\tminAmount?: number;\n}\n\nexport interface FtTransferFilter {\n\ttype: \"ft_transfer\";\n\tsender?: string;\n\trecipient?: string;\n\tassetIdentifier?: string;\n\tminAmount?: number;\n}\n\nexport interface FtMintFilter {\n\ttype: \"ft_mint\";\n\trecipient?: string;\n\tassetIdentifier?: string;\n\tminAmount?: number;\n}\n\nexport interface FtBurnFilter {\n\ttype: \"ft_burn\";\n\tsender?: string;\n\tassetIdentifier?: string;\n\tminAmount?: number;\n}\n\nexport interface NftTransferFilter {\n\ttype: \"nft_transfer\";\n\tsender?: string;\n\trecipient?: string;\n\tassetIdentifier?: string;\n\ttokenId?: string;\n}\n\nexport interface NftMintFilter {\n\ttype: \"nft_mint\";\n\trecipient?: string;\n\tassetIdentifier?: string;\n\ttokenId?: string;\n}\n\nexport interface NftBurnFilter {\n\ttype: \"nft_burn\";\n\tsender?: string;\n\tassetIdentifier?: string;\n\ttokenId?: string;\n}\n\nexport interface ContractCallFilter {\n\ttype: \"contract_call\";\n\tcontractId?: string;\n\tfunctionName?: string;\n\tcaller?: string;\n}\n\nexport interface ContractDeployFilter {\n\ttype: \"contract_deploy\";\n\tdeployer?: string;\n\tcontractName?: string;\n}\n\nexport interface PrintEventFilter {\n\ttype: \"print_event\";\n\tcontractId?: string;\n\ttopic?: string;\n\tcontains?: string;\n}\n\nexport type
|
|
5
|
+
"import { isValidAddress as _isValidAddress } from \"@secondlayer/stacks\";\nimport { z } from \"zod/v4\";\n\nconst isValidAddress = _isValidAddress as (addr: string) => boolean;\n\n/** Validate a Stacks principal (standard or contract, e.g. SP2J...ABC or SP2J...ABC.contract-name) */\nconst stacksPrincipal = z.string().refine((val) => {\n\tconst parts = val.split(\".\");\n\tif (parts.length > 2) return false;\n\treturn isValidAddress(parts[0]!);\n}, \"Invalid Stacks principal address\");\n\n// Base filter with common fields\nconst baseFilter = {\n\t// Optional: filter by sender\n\tsender: stacksPrincipal.optional(),\n\t// Optional: filter by recipient\n\trecipient: stacksPrincipal.optional(),\n};\n\n// Type exports — defined first so they can annotate schemas\nexport interface StxTransferFilter {\n\ttype: \"stx_transfer\";\n\tsender?: string;\n\trecipient?: string;\n\tminAmount?: number;\n\tmaxAmount?: number;\n}\n\nexport interface StxMintFilter {\n\ttype: \"stx_mint\";\n\trecipient?: string;\n\tminAmount?: number;\n}\n\nexport interface StxBurnFilter {\n\ttype: \"stx_burn\";\n\tsender?: string;\n\tminAmount?: number;\n}\n\nexport interface StxLockFilter {\n\ttype: \"stx_lock\";\n\tlockedAddress?: string;\n\tminAmount?: number;\n}\n\nexport interface FtTransferFilter {\n\ttype: \"ft_transfer\";\n\tsender?: string;\n\trecipient?: string;\n\tassetIdentifier?: string;\n\tminAmount?: number;\n}\n\nexport interface FtMintFilter {\n\ttype: \"ft_mint\";\n\trecipient?: string;\n\tassetIdentifier?: string;\n\tminAmount?: number;\n}\n\nexport interface FtBurnFilter {\n\ttype: \"ft_burn\";\n\tsender?: string;\n\tassetIdentifier?: string;\n\tminAmount?: number;\n}\n\nexport interface NftTransferFilter {\n\ttype: \"nft_transfer\";\n\tsender?: string;\n\trecipient?: string;\n\tassetIdentifier?: string;\n\ttokenId?: string;\n}\n\nexport interface NftMintFilter {\n\ttype: \"nft_mint\";\n\trecipient?: string;\n\tassetIdentifier?: string;\n\ttokenId?: string;\n}\n\nexport interface NftBurnFilter {\n\ttype: \"nft_burn\";\n\tsender?: string;\n\tassetIdentifier?: string;\n\ttokenId?: string;\n}\n\nexport interface ContractCallFilter {\n\ttype: \"contract_call\";\n\tcontractId?: string;\n\tfunctionName?: string;\n\tcaller?: string;\n}\n\nexport interface ContractDeployFilter {\n\ttype: \"contract_deploy\";\n\tdeployer?: string;\n\tcontractName?: string;\n}\n\nexport interface PrintEventFilter {\n\ttype: \"print_event\";\n\tcontractId?: string;\n\ttopic?: string;\n\tcontains?: string;\n}\n\nexport type EventFilter =\n\t| StxTransferFilter\n\t| StxMintFilter\n\t| StxBurnFilter\n\t| StxLockFilter\n\t| FtTransferFilter\n\t| FtMintFilter\n\t| FtBurnFilter\n\t| NftTransferFilter\n\t| NftMintFilter\n\t| NftBurnFilter\n\t| ContractCallFilter\n\t| ContractDeployFilter\n\t| PrintEventFilter;\n\n// STX Transfer Filter\nexport const StxTransferFilterSchema: z.ZodType<StxTransferFilter> = z.object({\n\ttype: z.literal(\"stx_transfer\"),\n\t...baseFilter,\n\t// Optional: minimum amount in microSTX\n\tminAmount: z.coerce.number().int().positive().optional(),\n\t// Optional: maximum amount in microSTX\n\tmaxAmount: z.coerce.number().int().positive().optional(),\n});\n\n// STX Mint Filter\nexport const StxMintFilterSchema: z.ZodType<StxMintFilter> = z.object({\n\ttype: z.literal(\"stx_mint\"),\n\trecipient: stacksPrincipal.optional(),\n\tminAmount: z.coerce.number().int().positive().optional(),\n});\n\n// STX Burn Filter\nexport const StxBurnFilterSchema: z.ZodType<StxBurnFilter> = z.object({\n\ttype: z.literal(\"stx_burn\"),\n\tsender: stacksPrincipal.optional(),\n\tminAmount: z.coerce.number().int().positive().optional(),\n});\n\n// STX Lock Filter\nexport const StxLockFilterSchema: z.ZodType<StxLockFilter> = z.object({\n\ttype: z.literal(\"stx_lock\"),\n\tlockedAddress: stacksPrincipal.optional(),\n\tminAmount: z.coerce.number().int().positive().optional(),\n});\n\n// FT Transfer Filter\nexport const FtTransferFilterSchema: z.ZodType<FtTransferFilter> = z.object({\n\ttype: z.literal(\"ft_transfer\"),\n\t...baseFilter,\n\t// Contract that defines the token (e.g., SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx)\n\tassetIdentifier: z.string().optional(),\n\tminAmount: z.coerce.number().int().positive().optional(),\n});\n\n// FT Mint Filter\nexport const FtMintFilterSchema: z.ZodType<FtMintFilter> = z.object({\n\ttype: z.literal(\"ft_mint\"),\n\trecipient: stacksPrincipal.optional(),\n\tassetIdentifier: z.string().optional(),\n\tminAmount: z.coerce.number().int().positive().optional(),\n});\n\n// FT Burn Filter\nexport const FtBurnFilterSchema: z.ZodType<FtBurnFilter> = z.object({\n\ttype: z.literal(\"ft_burn\"),\n\tsender: stacksPrincipal.optional(),\n\tassetIdentifier: z.string().optional(),\n\tminAmount: z.coerce.number().int().positive().optional(),\n});\n\n// NFT Transfer Filter\nexport const NftTransferFilterSchema: z.ZodType<NftTransferFilter> = z.object({\n\ttype: z.literal(\"nft_transfer\"),\n\t...baseFilter,\n\tassetIdentifier: z.string().optional(),\n\t// Optional: filter by specific token ID (Clarity value as hex)\n\ttokenId: z.string().optional(),\n});\n\n// NFT Mint Filter\nexport const NftMintFilterSchema: z.ZodType<NftMintFilter> = z.object({\n\ttype: z.literal(\"nft_mint\"),\n\trecipient: stacksPrincipal.optional(),\n\tassetIdentifier: z.string().optional(),\n\ttokenId: z.string().optional(),\n});\n\n// NFT Burn Filter\nexport const NftBurnFilterSchema: z.ZodType<NftBurnFilter> = z.object({\n\ttype: z.literal(\"nft_burn\"),\n\tsender: stacksPrincipal.optional(),\n\tassetIdentifier: z.string().optional(),\n\ttokenId: z.string().optional(),\n});\n\n// Contract Call Filter\nexport const ContractCallFilterSchema: z.ZodType<ContractCallFilter> = z.object(\n\t{\n\t\ttype: z.literal(\"contract_call\"),\n\t\t// Contract being called\n\t\tcontractId: stacksPrincipal.optional(),\n\t\t// Function name (supports wildcards with *)\n\t\tfunctionName: z.string().optional(),\n\t\t// Caller address\n\t\tcaller: stacksPrincipal.optional(),\n\t},\n);\n\n// Contract Deploy Filter\nexport const ContractDeployFilterSchema: z.ZodType<ContractDeployFilter> =\n\tz.object({\n\t\ttype: z.literal(\"contract_deploy\"),\n\t\t// Deployer address\n\t\tdeployer: stacksPrincipal.optional(),\n\t\t// Contract name pattern (supports wildcards)\n\t\tcontractName: z.string().optional(),\n\t});\n\n// Print Event Filter (smart contract events)\nexport const PrintEventFilterSchema: z.ZodType<PrintEventFilter> = z.object({\n\ttype: z.literal(\"print_event\"),\n\t// Contract emitting the event\n\tcontractId: stacksPrincipal.optional(),\n\t// Topic/name of the event\n\ttopic: z.string().optional(),\n\t// Search for substring in event data\n\tcontains: z.string().optional(),\n});\n\n// Union of all filter types\nexport const EventFilterSchema: z.ZodType<EventFilter> = z.discriminatedUnion(\n\t\"type\",\n\t[\n\t\tStxTransferFilterSchema as any,\n\t\tStxMintFilterSchema as any,\n\t\tStxBurnFilterSchema as any,\n\t\tStxLockFilterSchema as any,\n\t\tFtTransferFilterSchema as any,\n\t\tFtMintFilterSchema as any,\n\t\tFtBurnFilterSchema as any,\n\t\tNftTransferFilterSchema as any,\n\t\tNftMintFilterSchema as any,\n\t\tNftBurnFilterSchema as any,\n\t\tContractCallFilterSchema as any,\n\t\tContractDeployFilterSchema as any,\n\t\tPrintEventFilterSchema as any,\n\t],\n);\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "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
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "DB823597308735A664756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -76,7 +76,7 @@ interface PrintEventFilter {
|
|
|
76
76
|
topic?: string;
|
|
77
77
|
contains?: string;
|
|
78
78
|
}
|
|
79
|
-
type
|
|
79
|
+
type EventFilter = StxTransferFilter | StxMintFilter | StxBurnFilter | StxLockFilter | FtTransferFilter | FtMintFilter | FtBurnFilter | NftTransferFilter | NftMintFilter | NftBurnFilter | ContractCallFilter | ContractDeployFilter | PrintEventFilter;
|
|
80
80
|
declare const StxTransferFilterSchema: z.ZodType<StxTransferFilter>;
|
|
81
81
|
declare const StxMintFilterSchema: z.ZodType<StxMintFilter>;
|
|
82
82
|
declare const StxBurnFilterSchema: z.ZodType<StxBurnFilter>;
|
|
@@ -90,7 +90,7 @@ declare const NftBurnFilterSchema: z.ZodType<NftBurnFilter>;
|
|
|
90
90
|
declare const ContractCallFilterSchema: z.ZodType<ContractCallFilter>;
|
|
91
91
|
declare const ContractDeployFilterSchema: z.ZodType<ContractDeployFilter>;
|
|
92
92
|
declare const PrintEventFilterSchema: z.ZodType<PrintEventFilter>;
|
|
93
|
-
declare const
|
|
93
|
+
declare const EventFilterSchema: z.ZodType<EventFilter>;
|
|
94
94
|
import { z as z2 } from "zod/v4";
|
|
95
95
|
interface PublishSubgraphRequest {
|
|
96
96
|
tags?: string[];
|
|
@@ -161,6 +161,8 @@ interface DeploySubgraphRequest {
|
|
|
161
161
|
sources: Record<string, Record<string, unknown>>;
|
|
162
162
|
schema: Record<string, unknown>;
|
|
163
163
|
handlerCode: string;
|
|
164
|
+
/** Original TypeScript source, persisted so chat can read/diff/edit later. */
|
|
165
|
+
sourceCode?: string;
|
|
164
166
|
/** @deprecated Use server auto-reindex on breaking changes instead */
|
|
165
167
|
reindex?: boolean;
|
|
166
168
|
}
|
|
@@ -266,101 +268,4 @@ interface SubgraphQueryParams {
|
|
|
266
268
|
fields?: string;
|
|
267
269
|
filters?: Record<string, string>;
|
|
268
270
|
}
|
|
269
|
-
|
|
270
|
-
interface StreamOptions {
|
|
271
|
-
decodeClarityValues: boolean;
|
|
272
|
-
includeRawTx: boolean;
|
|
273
|
-
includeBlockMetadata: boolean;
|
|
274
|
-
rateLimit: number;
|
|
275
|
-
timeoutMs: number;
|
|
276
|
-
maxRetries: number;
|
|
277
|
-
}
|
|
278
|
-
interface CreateStream {
|
|
279
|
-
name: string;
|
|
280
|
-
endpointUrl: string;
|
|
281
|
-
filters: StreamFilter[];
|
|
282
|
-
options?: StreamOptions;
|
|
283
|
-
startBlock?: number;
|
|
284
|
-
endBlock?: number;
|
|
285
|
-
}
|
|
286
|
-
interface UpdateStream {
|
|
287
|
-
name?: string;
|
|
288
|
-
endpointUrl?: string;
|
|
289
|
-
filters?: StreamFilter[];
|
|
290
|
-
options?: Partial<StreamOptions>;
|
|
291
|
-
}
|
|
292
|
-
interface DeliveryPayload {
|
|
293
|
-
streamId: string;
|
|
294
|
-
streamName: string;
|
|
295
|
-
block: {
|
|
296
|
-
height: number
|
|
297
|
-
hash: string
|
|
298
|
-
parentHash: string
|
|
299
|
-
burnBlockHeight: number
|
|
300
|
-
timestamp: number
|
|
301
|
-
};
|
|
302
|
-
matches: {
|
|
303
|
-
transactions: Array<{
|
|
304
|
-
txId: string
|
|
305
|
-
type: string
|
|
306
|
-
sender: string
|
|
307
|
-
status: string
|
|
308
|
-
contractId: string | null
|
|
309
|
-
functionName: string | null
|
|
310
|
-
rawTx?: string
|
|
311
|
-
}>
|
|
312
|
-
events: Array<{
|
|
313
|
-
txId: string
|
|
314
|
-
eventIndex: number
|
|
315
|
-
type: string
|
|
316
|
-
data?: any
|
|
317
|
-
}>
|
|
318
|
-
};
|
|
319
|
-
isBackfill: boolean;
|
|
320
|
-
deliveredAt: string;
|
|
321
|
-
}
|
|
322
|
-
interface StreamMetricsResponse {
|
|
323
|
-
totalDeliveries: number;
|
|
324
|
-
failedDeliveries: number;
|
|
325
|
-
lastTriggeredAt: string | null;
|
|
326
|
-
lastTriggeredBlock: number | null;
|
|
327
|
-
errorMessage: string | null;
|
|
328
|
-
}
|
|
329
|
-
interface StreamResponse {
|
|
330
|
-
id: string;
|
|
331
|
-
name: string;
|
|
332
|
-
status: "inactive" | "active" | "paused" | "failed";
|
|
333
|
-
endpointUrl: string;
|
|
334
|
-
filters: StreamFilter[];
|
|
335
|
-
options: StreamOptions;
|
|
336
|
-
totalDeliveries: number;
|
|
337
|
-
failedDeliveries: number;
|
|
338
|
-
lastTriggeredAt?: string | null;
|
|
339
|
-
lastTriggeredBlock?: number | null;
|
|
340
|
-
errorMessage?: string | null;
|
|
341
|
-
createdAt: string;
|
|
342
|
-
updatedAt: string;
|
|
343
|
-
}
|
|
344
|
-
declare const StreamOptionsSchema: z4.ZodType<StreamOptions>;
|
|
345
|
-
declare const CreateStreamSchema: z4.ZodType<CreateStream>;
|
|
346
|
-
declare const UpdateStreamSchema: z4.ZodType<UpdateStream>;
|
|
347
|
-
declare const DeliveryPayloadSchema: z4.ZodType<DeliveryPayload>;
|
|
348
|
-
declare const StreamMetricsSchema: z4.ZodType<StreamMetricsResponse>;
|
|
349
|
-
declare const StreamResponseSchema: z4.ZodType<StreamResponse>;
|
|
350
|
-
interface CreateStreamResponse {
|
|
351
|
-
stream: StreamResponse;
|
|
352
|
-
signingSecret: string;
|
|
353
|
-
}
|
|
354
|
-
interface ListStreamsResponse {
|
|
355
|
-
streams: StreamResponse[];
|
|
356
|
-
total: number;
|
|
357
|
-
}
|
|
358
|
-
interface BulkPauseResponse {
|
|
359
|
-
paused: number;
|
|
360
|
-
streams: StreamResponse[];
|
|
361
|
-
}
|
|
362
|
-
interface BulkResumeResponse {
|
|
363
|
-
resumed: number;
|
|
364
|
-
streams: StreamResponse[];
|
|
365
|
-
}
|
|
366
|
-
export { UpdateStreamSchema, UpdateStream, UpdateProfileRequestSchema, UpdateProfileRequest, SubgraphSyncInfo, SubgraphSummary, SubgraphQueryParams, SubgraphGapsResponse, SubgraphGapRange, SubgraphGapEntry, SubgraphDetail, StxTransferFilterSchema, StxTransferFilter, StxMintFilterSchema, StxMintFilter, StxLockFilterSchema, StxLockFilter, StxBurnFilterSchema, StxBurnFilter, StreamResponseSchema, StreamResponse, StreamOptionsSchema, StreamOptions, StreamMetricsSchema, StreamMetricsResponse, StreamFilterSchema, StreamFilter, ReindexResponse, PublishSubgraphRequestSchema, PublishSubgraphRequest, PrintEventFilterSchema, PrintEventFilter, NftTransferFilterSchema, NftTransferFilter, NftMintFilterSchema, NftMintFilter, NftBurnFilterSchema, NftBurnFilter, MarketplaceSubgraphSummary, MarketplaceSubgraphDetail, MarketplaceCreator, ListStreamsResponse, FtTransferFilterSchema, FtTransferFilter, FtMintFilterSchema, FtMintFilter, FtBurnFilterSchema, FtBurnFilter, ForkSubgraphRequestSchema, ForkSubgraphRequest, DeploySubgraphResponse, DeploySubgraphRequestSchema, DeploySubgraphRequest, DeliveryPayloadSchema, DeliveryPayload, CreatorProfile, CreateStreamSchema, CreateStreamResponse, CreateStream, ContractDeployFilterSchema, ContractDeployFilter, ContractCallFilterSchema, ContractCallFilter, BulkResumeResponse, BulkPauseResponse };
|
|
271
|
+
export { UpdateProfileRequestSchema, UpdateProfileRequest, SubgraphSyncInfo, SubgraphSummary, SubgraphQueryParams, SubgraphGapsResponse, SubgraphGapRange, SubgraphGapEntry, SubgraphDetail, StxTransferFilterSchema, StxTransferFilter, StxMintFilterSchema, StxMintFilter, StxLockFilterSchema, StxLockFilter, StxBurnFilterSchema, StxBurnFilter, ReindexResponse, PublishSubgraphRequestSchema, PublishSubgraphRequest, PrintEventFilterSchema, PrintEventFilter, NftTransferFilterSchema, NftTransferFilter, NftMintFilterSchema, NftMintFilter, NftBurnFilterSchema, NftBurnFilter, MarketplaceSubgraphSummary, MarketplaceSubgraphDetail, MarketplaceCreator, FtTransferFilterSchema, FtTransferFilter, FtMintFilterSchema, FtMintFilter, FtBurnFilterSchema, FtBurnFilter, ForkSubgraphRequestSchema, ForkSubgraphRequest, EventFilterSchema, EventFilter, DeploySubgraphResponse, DeploySubgraphRequestSchema, DeploySubgraphRequest, CreatorProfile, ContractDeployFilterSchema, ContractDeployFilter, ContractCallFilterSchema, ContractCallFilter };
|