@secondlayer/sdk 5.9.0 → 6.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 +62 -6
- package/dist/index.d.ts +165 -36
- package/dist/index.js +285 -302
- package/dist/index.js.map +15 -14
- package/dist/streams/index.d.ts +162 -35
- package/dist/streams/index.js +343 -226
- package/dist/streams/index.js.map +12 -9
- package/dist/subgraphs/index.d.ts +135 -14
- package/dist/subgraphs/index.js +204 -141
- package/dist/subgraphs/index.js.map +10 -9
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -19,9 +19,12 @@ const sl = new SecondLayer({
|
|
|
19
19
|
});
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
`sl.index` and `sl.subgraphs` reads are anonymous — no key needed. **`sl.streams`
|
|
23
|
+
reads require a bearer token** (`apiKey`) and resolve a per-tier tenant; a
|
|
24
|
+
publicly-known free-tier token exists but a bearer is always required. Writes
|
|
25
|
+
require an `sk-sl_` API key, created in the platform console at
|
|
26
|
+
https://secondlayer.tools/platform/api-keys. (Public Streams bulk dumps —
|
|
27
|
+
`client.dumps`, `events.replay` — need no key.)
|
|
25
28
|
|
|
26
29
|
## Mental model
|
|
27
30
|
|
|
@@ -31,16 +34,20 @@ https://secondlayer.tools/platform/api-keys.
|
|
|
31
34
|
|
|
32
35
|
## Stacks Streams
|
|
33
36
|
|
|
34
|
-
Typed L1 HTTP client. Reads
|
|
37
|
+
Typed L1 HTTP client. Reads require a bearer token (`apiKey`).
|
|
35
38
|
|
|
36
39
|
```typescript
|
|
37
40
|
const tip = await sl.streams.tip();
|
|
41
|
+
// tip.finalized_height — highest immutable (past Bitcoin-anchored finality) block
|
|
38
42
|
const page = await sl.streams.events.list({
|
|
39
43
|
types: ["ft_transfer"],
|
|
40
44
|
contractId: "SP...sbtc-token",
|
|
45
|
+
sender: "SP...", // exact payload sender (events that have one)
|
|
46
|
+
recipient: "SP...", // exact payload recipient
|
|
47
|
+
assetIdentifier: "SP...token::asset", // exact FT/NFT asset id
|
|
41
48
|
limit: 10,
|
|
42
49
|
});
|
|
43
|
-
|
|
50
|
+
// each event carries `finalized: boolean`
|
|
44
51
|
console.log({ tip, firstCursor: page.events[0]?.cursor });
|
|
45
52
|
```
|
|
46
53
|
|
|
@@ -50,10 +57,19 @@ console.log({ tip, firstCursor: page.events[0]?.cursor });
|
|
|
50
57
|
import { createStreamsClient } from "@secondlayer/sdk";
|
|
51
58
|
|
|
52
59
|
const streams = createStreamsClient({
|
|
53
|
-
apiKey: process.env.SL_API_KEY!, // sk-sl_...
|
|
60
|
+
apiKey: process.env.SL_API_KEY!, // sk-sl_... — required for reads
|
|
61
|
+
// verify: true, // verify ed25519 X-Signature on every read
|
|
62
|
+
// // (auto-fetches the public key; { publicKey } pins a PEM)
|
|
63
|
+
// dumpsBaseUrl: process.env.SL_STREAMS_DUMPS_URL, // required to use client.dumps
|
|
54
64
|
});
|
|
55
65
|
```
|
|
56
66
|
|
|
67
|
+
Verified responses: every Streams read is signed (ed25519 `X-Signature` +
|
|
68
|
+
`X-Signature-KeyId`). Pass `verify: true` to check it on every read (or
|
|
69
|
+
`{ publicKey }` to pin a PEM); a missing/bad signature throws
|
|
70
|
+
`StreamsSignatureError`. The public key is at
|
|
71
|
+
`GET /public/streams/signing-key`.
|
|
72
|
+
|
|
57
73
|
Convenience reads:
|
|
58
74
|
|
|
59
75
|
```typescript
|
|
@@ -102,6 +118,46 @@ for await (const event of streams.events.stream({
|
|
|
102
118
|
}
|
|
103
119
|
```
|
|
104
120
|
|
|
121
|
+
Bulk parquet dumps.
|
|
122
|
+
|
|
123
|
+
Finalized history is published as public parquet files. Set `dumpsBaseUrl`
|
|
124
|
+
(or `SL_STREAMS_DUMPS_URL`) — no API key needed for dumps. The SDK does **not**
|
|
125
|
+
decode parquet; `download` hands you sha256-verified bytes to process with your
|
|
126
|
+
own tooling.
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
const streams = createStreamsClient({
|
|
130
|
+
apiKey: process.env.SL_API_KEY!,
|
|
131
|
+
dumpsBaseUrl: process.env.SL_STREAMS_DUMPS_URL!,
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
const manifest = await streams.dumps.list(); // parse the manifest
|
|
135
|
+
for (const file of manifest.files) {
|
|
136
|
+
const bytes = await streams.dumps.download(file); // fetch + verify sha256
|
|
137
|
+
await myParquetReader(bytes);
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Backfill then tail (`events.replay`).
|
|
142
|
+
|
|
143
|
+
Backfills from bulk dumps, then tails live from the manifest's
|
|
144
|
+
`latest_finalized_cursor` — no gap or dupe at the seam. `onDumpFile` hands you
|
|
145
|
+
each finalized file; `onBatch` receives live events after the seam.
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
await streams.events.replay({
|
|
149
|
+
from: lastCheckpoint,
|
|
150
|
+
async onDumpFile(file) {
|
|
151
|
+
const bytes = await streams.dumps.download(file);
|
|
152
|
+
await ingestParquet(bytes); // your tooling
|
|
153
|
+
},
|
|
154
|
+
async onBatch(events, envelope) {
|
|
155
|
+
for (const event of events) await handle(event);
|
|
156
|
+
return envelope.next_cursor;
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
105
161
|
Decoder helper.
|
|
106
162
|
|
|
107
163
|
```typescript
|
package/dist/index.d.ts
CHANGED
|
@@ -346,8 +346,82 @@ declare class Index extends BaseClient {
|
|
|
346
346
|
}
|
|
347
347
|
declare const STREAMS_EVENT_TYPES: readonly ["stx_transfer", "stx_mint", "stx_burn", "stx_lock", "ft_transfer", "ft_mint", "ft_burn", "nft_transfer", "nft_mint", "nft_burn", "print"];
|
|
348
348
|
type StreamsEventType = (typeof STREAMS_EVENT_TYPES)[number];
|
|
349
|
-
|
|
350
|
-
|
|
349
|
+
/** A Clarity value as Streams serves it: the canonical hex string, a typed
|
|
350
|
+
* object carrying that hex (`{ hex }`), or a decoded Clarity-JSON object.
|
|
351
|
+
* Decode helpers (`decodeNftTransfer`, etc.) resolve it to a concrete value. */
|
|
352
|
+
type StreamsClarityValue = string | {
|
|
353
|
+
hex: string
|
|
354
|
+
} | Record<string, unknown>;
|
|
355
|
+
type StxTransferPayload = {
|
|
356
|
+
sender: string
|
|
357
|
+
recipient: string
|
|
358
|
+
amount: string
|
|
359
|
+
memo?: string
|
|
360
|
+
};
|
|
361
|
+
type StxMintPayload = {
|
|
362
|
+
recipient: string
|
|
363
|
+
amount: string
|
|
364
|
+
};
|
|
365
|
+
type StxBurnPayload = {
|
|
366
|
+
sender: string
|
|
367
|
+
amount: string
|
|
368
|
+
};
|
|
369
|
+
type StxLockPayload = {
|
|
370
|
+
locked_address: string
|
|
371
|
+
locked_amount: string
|
|
372
|
+
unlock_height: string
|
|
373
|
+
};
|
|
374
|
+
type FtTransferPayload = {
|
|
375
|
+
asset_identifier: string
|
|
376
|
+
sender: string
|
|
377
|
+
recipient: string
|
|
378
|
+
amount: string
|
|
379
|
+
};
|
|
380
|
+
type FtMintPayload = {
|
|
381
|
+
asset_identifier: string
|
|
382
|
+
recipient: string
|
|
383
|
+
amount: string
|
|
384
|
+
};
|
|
385
|
+
type FtBurnPayload = {
|
|
386
|
+
asset_identifier: string
|
|
387
|
+
sender: string
|
|
388
|
+
amount: string
|
|
389
|
+
};
|
|
390
|
+
type NftTransferPayload = {
|
|
391
|
+
asset_identifier: string
|
|
392
|
+
sender: string
|
|
393
|
+
recipient: string
|
|
394
|
+
value: StreamsClarityValue
|
|
395
|
+
/** Canonical serialized hex of `value`, when the stream carries it. */
|
|
396
|
+
raw_value?: string
|
|
397
|
+
};
|
|
398
|
+
type NftMintPayload = {
|
|
399
|
+
asset_identifier: string
|
|
400
|
+
recipient: string
|
|
401
|
+
value: StreamsClarityValue
|
|
402
|
+
raw_value?: string
|
|
403
|
+
};
|
|
404
|
+
type NftBurnPayload = {
|
|
405
|
+
asset_identifier: string
|
|
406
|
+
sender: string
|
|
407
|
+
value: StreamsClarityValue
|
|
408
|
+
raw_value?: string
|
|
409
|
+
};
|
|
410
|
+
type PrintPayload = {
|
|
411
|
+
contract_id?: string | null
|
|
412
|
+
topic?: string
|
|
413
|
+
value?: unknown
|
|
414
|
+
raw_value?: string
|
|
415
|
+
};
|
|
416
|
+
/** Union of every Streams payload shape, discriminated by `event_type` on the
|
|
417
|
+
* parent `StreamsEvent`. */
|
|
418
|
+
type StreamsEventPayload = StxTransferPayload | StxMintPayload | StxBurnPayload | StxLockPayload | FtTransferPayload | FtMintPayload | FtBurnPayload | NftTransferPayload | NftMintPayload | NftBurnPayload | PrintPayload;
|
|
419
|
+
type StreamsEventBase = {
|
|
420
|
+
/**
|
|
421
|
+
* Globally unique, monotonic position of this event (`<block>:<index>`). Use
|
|
422
|
+
* it as the primary key of your projection rows — replaying a batch then
|
|
423
|
+
* upserts cleanly. Don't synthesize your own id from `tx_id`/`event_index`.
|
|
424
|
+
*/
|
|
351
425
|
cursor: string
|
|
352
426
|
block_height: number
|
|
353
427
|
block_hash: string
|
|
@@ -355,9 +429,7 @@ type StreamsEvent = {
|
|
|
355
429
|
tx_id: string
|
|
356
430
|
tx_index: number
|
|
357
431
|
event_index: number
|
|
358
|
-
event_type: StreamsEventType
|
|
359
432
|
contract_id: string | null
|
|
360
|
-
payload: StreamsEventPayload
|
|
361
433
|
ts: string
|
|
362
434
|
/**
|
|
363
435
|
* True when this event's block is past the finality boundary (immutable).
|
|
@@ -365,6 +437,16 @@ type StreamsEvent = {
|
|
|
365
437
|
*/
|
|
366
438
|
finalized?: boolean
|
|
367
439
|
};
|
|
440
|
+
type StreamsEventOf<
|
|
441
|
+
T extends StreamsEventType,
|
|
442
|
+
P
|
|
443
|
+
> = StreamsEventBase & {
|
|
444
|
+
event_type: T
|
|
445
|
+
payload: P
|
|
446
|
+
};
|
|
447
|
+
/** A raw Streams event. Discriminated on `event_type`, so `event.payload`
|
|
448
|
+
* narrows to the matching payload shape once the type is checked. */
|
|
449
|
+
type StreamsEvent = StreamsEventOf<"stx_transfer", StxTransferPayload> | StreamsEventOf<"stx_mint", StxMintPayload> | StreamsEventOf<"stx_burn", StxBurnPayload> | StreamsEventOf<"stx_lock", StxLockPayload> | StreamsEventOf<"ft_transfer", FtTransferPayload> | StreamsEventOf<"ft_mint", FtMintPayload> | StreamsEventOf<"ft_burn", FtBurnPayload> | StreamsEventOf<"nft_transfer", NftTransferPayload> | StreamsEventOf<"nft_mint", NftMintPayload> | StreamsEventOf<"nft_burn", NftBurnPayload> | StreamsEventOf<"print", PrintPayload>;
|
|
368
450
|
type StreamsTip = {
|
|
369
451
|
block_height: number
|
|
370
452
|
block_hash: string
|
|
@@ -407,23 +489,28 @@ type StreamsReorgsListEnvelope = {
|
|
|
407
489
|
reorgs: StreamsReorg[]
|
|
408
490
|
next_since: string | null
|
|
409
491
|
};
|
|
492
|
+
/** A filter that matches a single value or any value in a list. */
|
|
493
|
+
type StreamsFilterValue = string | readonly string[];
|
|
410
494
|
type StreamsEventsListParams = {
|
|
411
495
|
cursor?: string | null
|
|
412
496
|
fromHeight?: number
|
|
413
497
|
toHeight?: number
|
|
414
498
|
types?: readonly StreamsEventType[]
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
499
|
+
/** Event types to exclude (applied after `types`). */
|
|
500
|
+
notTypes?: readonly StreamsEventType[]
|
|
501
|
+
contractId?: StreamsFilterValue
|
|
502
|
+
sender?: StreamsFilterValue
|
|
503
|
+
recipient?: StreamsFilterValue
|
|
418
504
|
assetIdentifier?: string
|
|
419
505
|
limit?: number
|
|
420
506
|
};
|
|
421
507
|
type StreamsEventsStreamParams = {
|
|
422
508
|
fromCursor?: string | null
|
|
423
509
|
types?: readonly StreamsEventType[]
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
510
|
+
notTypes?: readonly StreamsEventType[]
|
|
511
|
+
contractId?: StreamsFilterValue
|
|
512
|
+
sender?: StreamsFilterValue
|
|
513
|
+
recipient?: StreamsFilterValue
|
|
427
514
|
assetIdentifier?: string
|
|
428
515
|
batchSize?: number
|
|
429
516
|
emptyBackoffMs?: number
|
|
@@ -431,16 +518,53 @@ type StreamsEventsStreamParams = {
|
|
|
431
518
|
maxEmptyPolls?: number
|
|
432
519
|
signal?: AbortSignal
|
|
433
520
|
};
|
|
521
|
+
/**
|
|
522
|
+
* The checkpoint the SDK computes for a batch. Persist `cursor` inside the same
|
|
523
|
+
* transaction as your projection writes, then resume from it via `fromCursor`.
|
|
524
|
+
* It is the position to advance to: `next_cursor` normally, or the last
|
|
525
|
+
* finalized event when `finalizedOnly` is set.
|
|
526
|
+
*/
|
|
527
|
+
type StreamsBatchContext = {
|
|
528
|
+
cursor: string | null
|
|
529
|
+
};
|
|
530
|
+
/**
|
|
531
|
+
* The checkpoint for a reorg rollback. Persist `cursor` (the rewind position)
|
|
532
|
+
* inside the same transaction as your rollback so the two commit atomically.
|
|
533
|
+
*/
|
|
534
|
+
type StreamsReorgContext = {
|
|
535
|
+
cursor: string
|
|
536
|
+
};
|
|
434
537
|
type StreamsEventsConsumeParams = {
|
|
435
538
|
fromCursor?: string | null
|
|
436
539
|
mode?: "tail" | "bounded"
|
|
540
|
+
/**
|
|
541
|
+
* Emit only finalized (immutable) events and never surface reorgs. The SDK
|
|
542
|
+
* checkpoints at the last finalized event and re-reads the unfinalized tail
|
|
543
|
+
* until it settles. Trades finality lag for zero reorg handling; `onReorg` is
|
|
544
|
+
* ignored.
|
|
545
|
+
*/
|
|
546
|
+
finalizedOnly?: boolean
|
|
437
547
|
types?: readonly StreamsEventType[]
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
548
|
+
notTypes?: readonly StreamsEventType[]
|
|
549
|
+
contractId?: StreamsFilterValue
|
|
550
|
+
sender?: StreamsFilterValue
|
|
551
|
+
recipient?: StreamsFilterValue
|
|
441
552
|
assetIdentifier?: string
|
|
442
553
|
batchSize?: number
|
|
443
|
-
|
|
554
|
+
/**
|
|
555
|
+
* Apply a page of canonical events. Persist `ctx.cursor` in the same
|
|
556
|
+
* transaction as your writes. Returning a cursor overrides `ctx.cursor` as
|
|
557
|
+
* the resume point (advanced manual control); returning nothing uses it.
|
|
558
|
+
*/
|
|
559
|
+
onBatch: (events: StreamsEvent[], envelope: StreamsEventsEnvelope, ctx: StreamsBatchContext) => void | string | null | undefined | Promise<void> | Promise<string | null | undefined>
|
|
560
|
+
/**
|
|
561
|
+
* Roll your projection back to `reorg.fork_point_height`, persisting
|
|
562
|
+
* `ctx.cursor` in the same transaction. Called once per *new* reorg
|
|
563
|
+
* (deduped in-memory, fork-ascending) before the SDK rewinds and re-reads the
|
|
564
|
+
* now-canonical events. Omit it to ignore reorgs (events stay canonical, but
|
|
565
|
+
* stale rows from an orphaned fork are left in place).
|
|
566
|
+
*/
|
|
567
|
+
onReorg?: (reorg: StreamsReorg, ctx: StreamsReorgContext) => Promise<void> | void
|
|
444
568
|
emptyBackoffMs?: number
|
|
445
569
|
maxPages?: number
|
|
446
570
|
maxEmptyPolls?: number
|
|
@@ -647,16 +771,9 @@ declare class StreamsServerError extends Error {
|
|
|
647
771
|
declare class StreamsSignatureError extends Error {
|
|
648
772
|
constructor(message?: string);
|
|
649
773
|
}
|
|
650
|
-
type
|
|
651
|
-
asset_identifier: string
|
|
652
|
-
sender: string
|
|
653
|
-
recipient: string
|
|
654
|
-
amount: string
|
|
655
|
-
};
|
|
656
|
-
type FtTransferEvent = StreamsEvent & {
|
|
774
|
+
type FtTransferEvent = Extract<StreamsEvent, {
|
|
657
775
|
event_type: "ft_transfer"
|
|
658
|
-
|
|
659
|
-
};
|
|
776
|
+
}>;
|
|
660
777
|
type DecodedFtTransferPayload = {
|
|
661
778
|
asset_identifier: string
|
|
662
779
|
contract_id: string
|
|
@@ -677,18 +794,9 @@ type DecodedFtTransfer = {
|
|
|
677
794
|
};
|
|
678
795
|
declare function isFtTransfer(event: StreamsEvent): event is FtTransferEvent;
|
|
679
796
|
declare function decodeFtTransfer(event: StreamsEvent): DecodedFtTransfer;
|
|
680
|
-
type
|
|
681
|
-
asset_identifier: string
|
|
682
|
-
sender: string
|
|
683
|
-
recipient: string
|
|
684
|
-
value: string | {
|
|
685
|
-
hex: string
|
|
686
|
-
}
|
|
687
|
-
};
|
|
688
|
-
type NftTransferEvent = StreamsEvent & {
|
|
797
|
+
type NftTransferEvent = Extract<StreamsEvent, {
|
|
689
798
|
event_type: "nft_transfer"
|
|
690
|
-
|
|
691
|
-
};
|
|
799
|
+
}>;
|
|
692
800
|
type DecodedNftTransferPayload = {
|
|
693
801
|
asset_identifier: string
|
|
694
802
|
contract_id: string
|
|
@@ -912,6 +1020,25 @@ type DecodedEventColumns = {
|
|
|
912
1020
|
/** JSONB overflow for non-flat types (e.g. print's decoded value). */
|
|
913
1021
|
payload?: unknown
|
|
914
1022
|
};
|
|
1023
|
+
/**
|
|
1024
|
+
* Helpers for Streams cursors. A cursor is the opaque `<block>:<index>` string
|
|
1025
|
+
* that marks a position in the event stream; treat the format as an
|
|
1026
|
+
* implementation detail and go through these helpers instead of string-building
|
|
1027
|
+
* it at call sites.
|
|
1028
|
+
*/
|
|
1029
|
+
declare const Cursor: {
|
|
1030
|
+
/**
|
|
1031
|
+
* Cursor at the foot of `height`. Resuming from it re-reads every event
|
|
1032
|
+
* strictly above block `height` (cursors are exclusive), so this is the
|
|
1033
|
+
* position to rewind to after a reorg whose fork point is `height`.
|
|
1034
|
+
*/
|
|
1035
|
+
atHeight(height: number): string
|
|
1036
|
+
/** Parse a `<block>:<index>` cursor. Throws `ValidationError` if malformed. */
|
|
1037
|
+
parse(cursor: string): {
|
|
1038
|
+
blockHeight: number
|
|
1039
|
+
eventIndex: number
|
|
1040
|
+
}
|
|
1041
|
+
};
|
|
915
1042
|
type DecodedEventRow = DecodedFtTransfer | DecodedNftTransfer | DecodedStxTransfer | DecodedStxMint | DecodedStxBurn | DecodedStxLock | DecodedFtMint | DecodedFtBurn | DecodedNftMint | DecodedNftBurn | DecodedPrint;
|
|
916
1043
|
/**
|
|
917
1044
|
* Typed client for the Foundation Datasets REST API (`/v1/datasets/*`).
|
|
@@ -1036,7 +1163,9 @@ declare class Datasets extends BaseClient {
|
|
|
1036
1163
|
summary: DatasetRow
|
|
1037
1164
|
}>;
|
|
1038
1165
|
private get;
|
|
1039
|
-
|
|
1166
|
+
/** Map camelCase filter fields to snake_case query keys (dropping pagination
|
|
1167
|
+
* controls) and build the canonical query suffix. */
|
|
1168
|
+
private paramsToQuery;
|
|
1040
1169
|
private cursorDataset;
|
|
1041
1170
|
}
|
|
1042
1171
|
import { SubgraphAgentSchema as SubgraphAgentSchema3, SubgraphSpecFormat as SubgraphSpecFormat2, SubgraphSpecOptions as SubgraphSpecOptions3 } from "@secondlayer/shared/subgraphs/spec";
|
|
@@ -1157,4 +1286,4 @@ declare function toJsonSafe(value: unknown): unknown;
|
|
|
1157
1286
|
/** Decode a hex-encoded Clarity value to JSON-safe JS (uints as strings,
|
|
1158
1287
|
* buffers as `0x…` hex, tuples as objects). Returns the input hex on failure. */
|
|
1159
1288
|
declare function decodeClarityValue(hex: string): unknown;
|
|
1160
|
-
export { verifyWebhookSignature, toJsonSafe, isStxTransfer, isStxMint, isStxLock, isStxBurn, isPrint, isNftTransfer, isNftMint, isNftBurn, isFtTransfer, isFtMint, isFtBurn, getSubgraph, decodeStxTransfer, decodeStxMint, decodeStxLock, decodeStxBurn, decodePrint, decodeNftTransfer, decodeNftMint, decodeNftBurn, decodeFtTransfer, decodeFtMint, decodeFtBurn, decodeClarityValue, createStreamsClient, VersionConflictError, ValidationError, UpdateSubscriptionRequest2 as UpdateSubscriptionRequest, Subscriptions, SubscriptionSummary2 as SubscriptionSummary, SubscriptionStatus, SubscriptionRuntime, SubscriptionFormat, SubscriptionDetail2 as SubscriptionDetail, Subgraphs, SubgraphSpecOptions3 as SubgraphSpecOptions, SubgraphSpecFormat2 as SubgraphSpecFormat, SubgraphAgentSchema3 as SubgraphAgentSchema, StreamsTip, StreamsSignatureError, StreamsServerError, StreamsReorgsListParams, StreamsReorgsListEnvelope, StreamsReorg, StreamsEventsStreamParams, StreamsEventsListParams, StreamsEventsListEnvelope, StreamsEventsEnvelope, StreamsEventsConsumeResult, StreamsEventsConsumeParams, StreamsEventType, StreamsEventPayload, StreamsEvent, StreamsDumpsManifest, StreamsDumps, StreamsDumpFile, StreamsClient, StreamsCanonicalBlock, SecondLayerOptions, SecondLayer, RotateSecretResponse2 as RotateSecretResponse, ReplayResult2 as ReplayResult, RateLimitError, Pox4CallsParams, NftTransfersWalkParams, NftTransfersListParams, NftTransfersEnvelope, NftTransferPayload, NftTransferEvent, NftTransfer, IndexTip, IndexEventType, IndexEvent, IndexContractCall, Index, FtTransfersWalkParams, FtTransfersListParams, FtTransfersEnvelope, FtTransferPayload, FtTransferEvent, FtTransfer, FetchLike2 as FetchLike, EventsWalkParams, EventsListParams, EventsEnvelope, DeliveryRow2 as DeliveryRow, DecodedStxTransferPayload, DecodedStxTransfer, DecodedStxMintPayload, DecodedStxMint, DecodedStxLockPayload, DecodedStxLock, DecodedStxBurnPayload, DecodedStxBurn, DecodedPrintValue, DecodedPrintPayload, DecodedPrint, DecodedNftTransferPayload, DecodedNftTransfer, DecodedNftMintPayload, DecodedNftMint, DecodedNftBurnPayload, DecodedNftBurn, DecodedFtTransferPayload, DecodedFtTransfer, DecodedFtMintPayload, DecodedFtMint, DecodedFtBurnPayload, DecodedFtBurn, DecodedEventRow, DecodedEventColumns, DeadRow2 as DeadRow, Datasets, DatasetRow, CursorListParams, CursorEnvelope, CreateSubscriptionResponse2 as CreateSubscriptionResponse, CreateSubscriptionRequest2 as CreateSubscriptionRequest, ContractCallsWalkParams, ContractCallsListParams, ContractCallsEnvelope, CURSOR_SLUGS, AuthError, ApiError };
|
|
1289
|
+
export { verifyWebhookSignature, toJsonSafe, isStxTransfer, isStxMint, isStxLock, isStxBurn, isPrint, isNftTransfer, isNftMint, isNftBurn, isFtTransfer, isFtMint, isFtBurn, getSubgraph, decodeStxTransfer, decodeStxMint, decodeStxLock, decodeStxBurn, decodePrint, decodeNftTransfer, decodeNftMint, decodeNftBurn, decodeFtTransfer, decodeFtMint, decodeFtBurn, decodeClarityValue, createStreamsClient, VersionConflictError, ValidationError, UpdateSubscriptionRequest2 as UpdateSubscriptionRequest, Subscriptions, SubscriptionSummary2 as SubscriptionSummary, SubscriptionStatus, SubscriptionRuntime, SubscriptionFormat, SubscriptionDetail2 as SubscriptionDetail, Subgraphs, SubgraphSpecOptions3 as SubgraphSpecOptions, SubgraphSpecFormat2 as SubgraphSpecFormat, SubgraphAgentSchema3 as SubgraphAgentSchema, StreamsTip, StreamsSignatureError, StreamsServerError, StreamsReorgsListParams, StreamsReorgsListEnvelope, StreamsReorgContext, StreamsReorg, StreamsEventsStreamParams, StreamsEventsListParams, StreamsEventsListEnvelope, StreamsEventsEnvelope, StreamsEventsConsumeResult, StreamsEventsConsumeParams, StreamsEventType, StreamsEventPayload, StreamsEvent, StreamsDumpsManifest, StreamsDumps, StreamsDumpFile, StreamsClient, StreamsCanonicalBlock, StreamsBatchContext, SecondLayerOptions, SecondLayer, RotateSecretResponse2 as RotateSecretResponse, ReplayResult2 as ReplayResult, RateLimitError, Pox4CallsParams, NftTransfersWalkParams, NftTransfersListParams, NftTransfersEnvelope, NftTransferPayload, NftTransferEvent, NftTransfer, IndexTip, IndexEventType, IndexEvent, IndexContractCall, Index, FtTransfersWalkParams, FtTransfersListParams, FtTransfersEnvelope, FtTransferPayload, FtTransferEvent, FtTransfer, FetchLike2 as FetchLike, EventsWalkParams, EventsListParams, EventsEnvelope, DeliveryRow2 as DeliveryRow, DecodedStxTransferPayload, DecodedStxTransfer, DecodedStxMintPayload, DecodedStxMint, DecodedStxLockPayload, DecodedStxLock, DecodedStxBurnPayload, DecodedStxBurn, DecodedPrintValue, DecodedPrintPayload, DecodedPrint, DecodedNftTransferPayload, DecodedNftTransfer, DecodedNftMintPayload, DecodedNftMint, DecodedNftBurnPayload, DecodedNftBurn, DecodedFtTransferPayload, DecodedFtTransfer, DecodedFtMintPayload, DecodedFtMint, DecodedFtBurnPayload, DecodedFtBurn, DecodedEventRow, DecodedEventColumns, DeadRow2 as DeadRow, Datasets, DatasetRow, CursorListParams, CursorEnvelope, Cursor, CreateSubscriptionResponse2 as CreateSubscriptionResponse, CreateSubscriptionRequest2 as CreateSubscriptionRequest, ContractCallsWalkParams, ContractCallsListParams, ContractCallsEnvelope, CURSOR_SLUGS, AuthError, ApiError };
|