@sly-rentals/core 0.1.0 → 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.
Files changed (44) hide show
  1. package/README.md +76 -163
  2. package/dist/api.json +7636 -3857
  3. package/dist/cjs/audit/events-registry.js +86 -0
  4. package/dist/cjs/audit/events-registry.js.map +1 -0
  5. package/dist/cjs/audit/index.js +8 -1
  6. package/dist/cjs/audit/index.js.map +1 -1
  7. package/dist/cjs/audit/listener.js +219 -0
  8. package/dist/cjs/audit/listener.js.map +1 -0
  9. package/dist/cjs/kit/index.js +10 -1
  10. package/dist/cjs/kit/index.js.map +1 -1
  11. package/dist/cjs/legacy/index.js +7 -1
  12. package/dist/cjs/legacy/index.js.map +1 -1
  13. package/dist/cjs/package.json +1 -1
  14. package/dist/cjs/utils/config.js +16 -0
  15. package/dist/cjs/utils/config.js.map +1 -1
  16. package/dist/cjs/version.js +1 -1
  17. package/dist/esm/audit/events-registry.js +83 -0
  18. package/dist/esm/audit/events-registry.js.map +1 -0
  19. package/dist/esm/audit/index.js +2 -0
  20. package/dist/esm/audit/index.js.map +1 -1
  21. package/dist/esm/audit/listener.js +213 -0
  22. package/dist/esm/audit/listener.js.map +1 -0
  23. package/dist/esm/kit/index.js +5 -0
  24. package/dist/esm/kit/index.js.map +1 -1
  25. package/dist/esm/legacy/index.js +2 -0
  26. package/dist/esm/legacy/index.js.map +1 -1
  27. package/dist/esm/package.json +1 -1
  28. package/dist/esm/utils/config.js +14 -0
  29. package/dist/esm/utils/config.js.map +1 -1
  30. package/dist/esm/version.js +1 -1
  31. package/dist/types/audit/events-registry.d.ts +71 -0
  32. package/dist/types/audit/events-registry.d.ts.map +1 -0
  33. package/dist/types/audit/index.d.ts +4 -0
  34. package/dist/types/audit/index.d.ts.map +1 -1
  35. package/dist/types/audit/listener.d.ts +127 -0
  36. package/dist/types/audit/listener.d.ts.map +1 -0
  37. package/dist/types/kit/index.d.ts +2 -0
  38. package/dist/types/kit/index.d.ts.map +1 -1
  39. package/dist/types/legacy/index.d.ts +3 -0
  40. package/dist/types/legacy/index.d.ts.map +1 -1
  41. package/dist/types/utils/config.d.ts +29 -0
  42. package/dist/types/utils/config.d.ts.map +1 -1
  43. package/dist/types/version.d.ts +1 -1
  44. package/package.json +2 -2
@@ -0,0 +1,213 @@
1
+ /**
2
+ * SRSLY event listener — plug-and-play wrapper over `parseAnchorEvents` that
3
+ * lets a developer subscribe to the program's emitted events without ever
4
+ * importing Anchor or the IDL.
5
+ *
6
+ * Two ingest paths share one dispatch table:
7
+ *
8
+ * - Live stream: register a handler with `onSrslyEvent(name, cb)`. The SDK
9
+ * opens (and lazily caches) a singleton `logsNotifications` subscription
10
+ * using the `wsUrl` from `setSdkConfig`. No listener instance to manage —
11
+ * drop your handlers and go.
12
+ * - Per-signature: pass a tx signature to `getEventsFromTx(sig)` to fetch
13
+ * the confirmed transaction, parse its logs, and get back the typed
14
+ * event array. Same handlers fire as for the live stream.
15
+ *
16
+ * Kit-only by design: events are SRSLY's, so there's no value in shipping a
17
+ * web3.js variant. Consumers that already have `@solana/kit` (everyone using
18
+ * this package) get the listener for free.
19
+ *
20
+ * For advanced cases — multiple isolated listeners, custom program IDs,
21
+ * test fixtures — `createSrslyEventListener()` is exported as the
22
+ * underlying primitive.
23
+ */
24
+ import { createSolanaRpc, createSolanaRpcSubscriptions } from '@solana/kit';
25
+ import { parseAnchorEvents } from './events';
26
+ import { SRSLY_PROGRAM_ADDRESS } from '../generated/codama/programs/srsly';
27
+ import { getRpcUrl, getWsUrl, isEventsListenerEnabled } from '../utils/config';
28
+ /**
29
+ * Underlying listener primitive. Most consumers should reach for
30
+ * `onSrslyEvent` / `getEventsFromTx` instead — those bind to `setSdkConfig`
31
+ * automatically. Use this when you need multiple isolated listeners, a
32
+ * non-default program ID, or test injection.
33
+ */
34
+ export function createSrslyEventListener(opts = {}) {
35
+ const programId = String(opts.programId ?? SRSLY_PROGRAM_ADDRESS);
36
+ const handlers = new Map();
37
+ let abort = null;
38
+ let drain = null;
39
+ function dispatch(events) {
40
+ for (const evt of events) {
41
+ handlers.get(evt.type)?.forEach(cb => {
42
+ try {
43
+ cb(evt);
44
+ }
45
+ catch (err) {
46
+ // eslint-disable-next-line no-console
47
+ console.error('[srsly:listener] handler threw for', evt.type, err);
48
+ }
49
+ });
50
+ handlers.get('*')?.forEach(cb => {
51
+ try {
52
+ cb(evt);
53
+ }
54
+ catch (err) {
55
+ // eslint-disable-next-line no-console
56
+ console.error('[srsly:listener] * handler threw', err);
57
+ }
58
+ });
59
+ }
60
+ }
61
+ function on(name, handler) {
62
+ let set = handlers.get(name);
63
+ if (!set) {
64
+ set = new Set();
65
+ handlers.set(name, set);
66
+ }
67
+ set.add(handler);
68
+ return () => set.delete(handler);
69
+ }
70
+ async function start(o) {
71
+ if (abort)
72
+ return;
73
+ abort = new AbortController();
74
+ const commitment = o.commitment ?? 'confirmed';
75
+ let stream;
76
+ try {
77
+ stream = (await o.rpcSubscriptions
78
+ .logsNotifications({ mentions: [programId] }, { commitment })
79
+ .subscribe({ abortSignal: abort.signal }));
80
+ }
81
+ catch (err) {
82
+ // WS connect failure (RPC doesn't support logsSubscribe, network down,
83
+ // CORS, etc.). Stay inert so HTTP-only callers of `getEventsFromTx`
84
+ // still work. Reset abort so a later `start` can retry.
85
+ abort = null;
86
+ // eslint-disable-next-line no-console
87
+ console.warn('[srsly] event listener disabled — WS connect failed:', err);
88
+ return;
89
+ }
90
+ drain = (async () => {
91
+ try {
92
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
93
+ for await (const msg of stream) {
94
+ const value = msg?.value;
95
+ const slot = msg?.context?.slot;
96
+ if (!value || slot === undefined)
97
+ continue;
98
+ if (value.err)
99
+ continue;
100
+ const events = parseAnchorEvents(value.logs, programId, BigInt(slot), String(value.signature));
101
+ dispatch(events);
102
+ }
103
+ }
104
+ catch {
105
+ // AbortError on close, or socket-level disconnects.
106
+ }
107
+ })();
108
+ }
109
+ async function process(signature, o) {
110
+ const tx = await o.rpc
111
+ .getTransaction(signature, {
112
+ encoding: 'json',
113
+ maxSupportedTransactionVersion: 0,
114
+ commitment: o.commitment ?? 'confirmed',
115
+ })
116
+ .send();
117
+ if (!tx?.meta?.logMessages)
118
+ return [];
119
+ const events = parseAnchorEvents(tx.meta.logMessages, programId, BigInt(tx.slot), signature);
120
+ dispatch(events);
121
+ return events;
122
+ }
123
+ async function close() {
124
+ abort?.abort();
125
+ abort = null;
126
+ if (drain)
127
+ await drain;
128
+ drain = null;
129
+ handlers.clear();
130
+ }
131
+ return { on: on, start, process, close };
132
+ }
133
+ // ─────────────────────────────────────────────────────────────────────────
134
+ // Config-bound singleton — what most consumers should reach for
135
+ // ─────────────────────────────────────────────────────────────────────────
136
+ let singleton = null;
137
+ let singletonStarted = null;
138
+ function getSingleton() {
139
+ if (!singleton)
140
+ singleton = createSrslyEventListener();
141
+ return singleton;
142
+ }
143
+ /**
144
+ * Lazily open the live stream when `setSdkConfig({ eventsListener: true })`
145
+ * is set. Idempotent — the second call returns the same start promise.
146
+ * No-op when the listener is disabled, so on-demand `getEventsFromTx` calls
147
+ * still work against the HTTP RPC alone.
148
+ *
149
+ * Throws if `eventsListener` is on but no `wsUrl` is configured — the failure
150
+ * is louder this way than a silently-no-op listener.
151
+ */
152
+ async function ensureLiveStream() {
153
+ if (!isEventsListenerEnabled())
154
+ return false;
155
+ const wsUrl = getWsUrl();
156
+ if (!wsUrl) {
157
+ throw new Error('setSdkConfig({ eventsListener: true }) requires a wsUrl. ' +
158
+ 'Set both fields together, or leave eventsListener unset for HTTP-only mode.');
159
+ }
160
+ if (singletonStarted) {
161
+ await singletonStarted;
162
+ return true;
163
+ }
164
+ const listener = getSingleton();
165
+ singletonStarted = listener.start({
166
+ rpcSubscriptions: createSolanaRpcSubscriptions(wsUrl),
167
+ });
168
+ await singletonStarted;
169
+ return true;
170
+ }
171
+ export function onSrslyEvent(name,
172
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
173
+ handler) {
174
+ const off = getSingleton().on(name, handler);
175
+ // Fire-and-forget: kick off the WS subscription if configured. We don't
176
+ // block the caller on the connect — events that arrive before the socket
177
+ // is ready are simply not seen, which matches existing kit semantics.
178
+ void ensureLiveStream();
179
+ return off;
180
+ }
181
+ /**
182
+ * Pull and parse SRSLY events from a single confirmed transaction signature.
183
+ * Uses the `rpcUrl` from `setSdkConfig` unless an override is passed.
184
+ *
185
+ * Dispatches into the same singleton handler registry that `onSrslyEvent`
186
+ * subscribes to — so a handler registered once will fire for both live
187
+ * events and per-signature lookups.
188
+ *
189
+ * @example Right after submitting an instruction
190
+ * ```ts
191
+ * const ixs = await acceptRental(params);
192
+ * const sig = await wallet.sendAndConfirm(ixs);
193
+ * const events = await getEventsFromTx(sig);
194
+ * const accepted = events.find(e => e.type === 'RentalAccepted');
195
+ * ```
196
+ */
197
+ export async function getEventsFromTx(signature, opts = {}) {
198
+ const rpc = createSolanaRpc(opts.rpcUrl ?? getRpcUrl());
199
+ return getSingleton().process(signature, { rpc, commitment: opts.commitment });
200
+ }
201
+ /**
202
+ * Tear down the singleton listener, close the WS subscription if open, and
203
+ * clear all handlers. Call this in test teardown or app shutdown — most apps
204
+ * never need to.
205
+ */
206
+ export async function closeSrslyEventListener() {
207
+ if (!singleton)
208
+ return;
209
+ await singleton.close();
210
+ singleton = null;
211
+ singletonStarted = null;
212
+ }
213
+ //# sourceMappingURL=listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/audit/listener.ts"],"names":[],"mappings":"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"}
@@ -25,4 +25,9 @@ export * from '../cost';
25
25
  export { claim } from '@sly-rentals/vault';
26
26
  export * as codama from '../generated/codama';
27
27
  export * as audit from '../audit';
28
+ // Event listener helpers — bubbled up from `audit` so consumers can write
29
+ // `import { events, onSrslyEvent, getEventsFromTx } from '@sly-rentals/core'`
30
+ // without the audit namespace prefix. The full audit module is still
31
+ // accessible via `audit.*` for the parser primitives + report builder.
32
+ export { closeSrslyEventListener, events, getEventsFromTx, onSrslyEvent } from '../audit';
28
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,sBAAsB;AACtB,OAAO,EAAE,KAAK,EAAoB,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,sBAAsB;AACtB,OAAO,EAAE,KAAK,EAAoB,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAElC,0EAA0E;AAC1E,8EAA8E;AAC9E,qEAAqE;AACrE,uEAAuE;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
@@ -31,6 +31,8 @@ export * from '../params';
31
31
  export * from '../pda';
32
32
  export { VERSION } from '../version';
33
33
  export * as codama from '../generated/codama';
34
+ export * as audit from '../audit';
35
+ export { closeSrslyEventListener, events, getEventsFromTx, onSrslyEvent } from '../audit';
34
36
  /**
35
37
  * Wrapper that checks for PublicKey and provides helpful error
36
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/legacy/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/legacy/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sly-rentals/core",
3
- "version": "0.1.0",
3
+ "version": "1.1.0",
4
4
  "description": "TypeScript SDK for SRSLY",
5
5
  "sideEffects": false,
6
6
  "publishConfig": {
@@ -116,6 +116,20 @@ export function getRpcUrl(config) {
116
116
  ALIAS_RPC_URLS[finalConfig.programs] ||
117
117
  DEFAULT_RPC_URLS[DEVNET_GENESIS]);
118
118
  }
119
+ /**
120
+ * Get the effective WebSocket URL, if any. Returns `undefined` when neither
121
+ * the global config nor the override sets one.
122
+ */
123
+ export function getWsUrl(config) {
124
+ return mergeConfig(config).wsUrl;
125
+ }
126
+ /**
127
+ * Returns whether the singleton SRSLY event listener should auto-start.
128
+ * Defaults to `false` if unset.
129
+ */
130
+ export function isEventsListenerEnabled(config) {
131
+ return mergeConfig(config).eventsListener === true;
132
+ }
119
133
  /**
120
134
  * Get the effective program ID for a configuration
121
135
  *
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // Auto-generated from package.json - DO NOT EDIT
2
2
  // Run "pnpm run generate:version" to update
3
- export const VERSION = '0.1.0';
3
+ export const VERSION = '1.1.0';
4
4
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Typed namespace tree for the SRSLY event listener.
3
+ *
4
+ * Built once from a const manifest mapping each event's IDL name to a
5
+ * `{ group, verb }` pair. The TypeScript type derives the entire dotted
6
+ * namespace shape from that manifest, so consumers get autocomplete on
7
+ * every event without us hand-rolling an interface — and adding a new
8
+ * event in the future only requires:
9
+ *
10
+ * 1. Append a row to `EVENT_MANIFEST`.
11
+ * 2. Add a decoder in `events.ts`.
12
+ * 3. Extend the `AuditEvent` union in `types.ts`.
13
+ *
14
+ * The runtime tree is generated alongside the type so they can never drift.
15
+ */
16
+ import type { AuditEvent } from './types';
17
+ declare const EVENT_MANIFEST: readonly [readonly ["RentalAccepted", "rental", "accepted"], readonly ["RentalSettled", "rental", "settled"], readonly ["RentalCancelled", "rental", "cancelled"], readonly ["RentalClosed", "rental", "closed"], readonly ["OwnerPaid", "owner", "paid"], readonly ["FeesPaid", "fees", "paid"]];
18
+ type Manifest = typeof EVENT_MANIFEST;
19
+ type ManifestRow = Manifest[number];
20
+ type EventGroup = ManifestRow[1];
21
+ type RowsForGroup<G extends EventGroup> = Extract<ManifestRow, readonly [string, G, string]>;
22
+ /** Subscribable channel — `on(handler)` returns an unsubscribe function. */
23
+ export interface EventChannel<T extends AuditEvent> {
24
+ on: (handler: (evt: T) => void | Promise<void>) => () => void;
25
+ }
26
+ /**
27
+ * Derived type for a per-group sub-namespace. Every group exposes:
28
+ * - `all` — fires for any event in that group
29
+ * - one channel per verb under it (e.g. `rental.accepted`)
30
+ */
31
+ export type GroupNamespace<G extends EventGroup> = {
32
+ /** Fires for every event in this group. */
33
+ all: EventChannel<Extract<AuditEvent, {
34
+ type: RowsForGroup<G>[0];
35
+ }>>;
36
+ } & {
37
+ [V in RowsForGroup<G>[2]]: EventChannel<Extract<AuditEvent, {
38
+ type: Extract<RowsForGroup<G>, readonly [string, G, V]>[0];
39
+ }>>;
40
+ };
41
+ /**
42
+ * Top-level typed event tree. Auto-derives from `EVENT_MANIFEST` so adding
43
+ * a row above lights up new completion paths here without any further edits.
44
+ */
45
+ export type EventsTree = {
46
+ /** Fires for every dispatched SRSLY event regardless of group. */
47
+ all: EventChannel<AuditEvent>;
48
+ } & {
49
+ [G in EventGroup]: GroupNamespace<G>;
50
+ };
51
+ /**
52
+ * Typed event tree. Use the deepest path you need — the handler arg is
53
+ * narrowed accordingly:
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * import { events } from '@sly-rentals/core';
58
+ *
59
+ * // Single event
60
+ * events.rental.accepted.on(evt => evt.escrow);
61
+ *
62
+ * // Group-scoped catch-all
63
+ * events.rental.all.on(evt => evt.type); // 'RentalAccepted' | 'RentalSettled' | …
64
+ *
65
+ * // Global catch-all
66
+ * events.all.on(evt => evt.signature);
67
+ * ```
68
+ */
69
+ export declare const events: EventsTree;
70
+ export {};
71
+ //# sourceMappingURL=events-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-registry.d.ts","sourceRoot":"","sources":["../../../src/audit/events-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAM1C,QAAA,MAAM,cAAc,mSAOV,CAAC;AAEX,KAAK,QAAQ,GAAG,OAAO,cAAc,CAAC;AACtC,KAAK,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpC,KAAK,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACjC,KAAK,YAAY,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7F,4EAA4E;AAC5E,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,UAAU;IAChD,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC;CAC/D;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,IAAI;IACjD,2CAA2C;IAC3C,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;CACtE,GAAG;KACD,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAErC,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CACpF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,kEAAkE;IAClE,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;CAC/B,GAAG;KACD,CAAC,IAAI,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC;CACrC,CAAC;AA0CF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM,EAAE,UAAwB,CAAC"}
@@ -1,4 +1,8 @@
1
1
  export { fetchContractAudit } from './audit';
2
2
  export { parseAnchorEvents } from './events';
3
+ export { closeSrslyEventListener, createSrslyEventListener, getEventsFromTx, onSrslyEvent, } from './listener';
4
+ export { events } from './events-registry';
5
+ export type { EventChannel, EventsTree, GroupNamespace } from './events-registry';
6
+ export type { CreateSrslyEventListenerOpts, ListenerCommitment, SrslyAnyEventHandler, SrslyEventHandler, SrslyEventListener, SrslyEventName, SrslyProcessOpts, SrslyStartOpts, } from './listener';
3
7
  export type { AuditEvent, AuditOptions, ContractAuditReport, FeesPaidEvent, OwnerPaidEvent, RentalAcceptedEvent, RentalAudit, RentalCancelledEvent, RentalClosedEvent, RentalReconciliation, RentalSettledEvent, RentalStatus, } from './types';
4
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,GACb,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClF,YAAY,EACV,4BAA4B,EAC5B,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,GACb,MAAM,SAAS,CAAC"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * SRSLY event listener — plug-and-play wrapper over `parseAnchorEvents` that
3
+ * lets a developer subscribe to the program's emitted events without ever
4
+ * importing Anchor or the IDL.
5
+ *
6
+ * Two ingest paths share one dispatch table:
7
+ *
8
+ * - Live stream: register a handler with `onSrslyEvent(name, cb)`. The SDK
9
+ * opens (and lazily caches) a singleton `logsNotifications` subscription
10
+ * using the `wsUrl` from `setSdkConfig`. No listener instance to manage —
11
+ * drop your handlers and go.
12
+ * - Per-signature: pass a tx signature to `getEventsFromTx(sig)` to fetch
13
+ * the confirmed transaction, parse its logs, and get back the typed
14
+ * event array. Same handlers fire as for the live stream.
15
+ *
16
+ * Kit-only by design: events are SRSLY's, so there's no value in shipping a
17
+ * web3.js variant. Consumers that already have `@solana/kit` (everyone using
18
+ * this package) get the listener for free.
19
+ *
20
+ * For advanced cases — multiple isolated listeners, custom program IDs,
21
+ * test fixtures — `createSrslyEventListener()` is exported as the
22
+ * underlying primitive.
23
+ */
24
+ import type { Address } from '@solana/kit';
25
+ import type { AuditEvent } from './types';
26
+ /** Names of the SRSLY events this listener dispatches. */
27
+ export type SrslyEventName = AuditEvent['type'];
28
+ type EventOf<N extends SrslyEventName> = Extract<AuditEvent, {
29
+ type: N;
30
+ }>;
31
+ /**
32
+ * Per-event handler. Generic so `on('RentalAccepted', e => …)` types `e` as
33
+ * `RentalAcceptedEvent` rather than the union.
34
+ */
35
+ export type SrslyEventHandler<N extends SrslyEventName = SrslyEventName> = (evt: EventOf<N>) => void | Promise<void>;
36
+ /** Catch-all handler — receives the discriminated union for any event type. */
37
+ export type SrslyAnyEventHandler = (evt: AuditEvent) => void | Promise<void>;
38
+ /** Commitment levels supported by both the streaming and one-shot paths. */
39
+ export type ListenerCommitment = 'processed' | 'confirmed' | 'finalized';
40
+ /**
41
+ * Opts for `start()` on a manually-constructed listener. `rpcSubscriptions`
42
+ * is whatever `createSolanaRpcSubscriptions(wsUrl)` returns; left untyped so
43
+ * a test double or wrapped client can be passed.
44
+ */
45
+ export interface SrslyStartOpts {
46
+ rpcSubscriptions: any;
47
+ commitment?: ListenerCommitment;
48
+ }
49
+ /** Opts for `process()`. `rpc` is `createSolanaRpc(httpUrl)` or compatible. */
50
+ export interface SrslyProcessOpts {
51
+ rpc: any;
52
+ commitment?: ListenerCommitment;
53
+ }
54
+ export interface SrslyEventListener {
55
+ /** Register a handler. Returns an unsubscribe function. */
56
+ on<N extends SrslyEventName>(name: N, handler: SrslyEventHandler<N>): () => void;
57
+ on(name: '*', handler: SrslyAnyEventHandler): () => void;
58
+ /** Open the live `logsNotifications` subscription. Idempotent. */
59
+ start(opts: SrslyStartOpts): Promise<void>;
60
+ /** Pull events from a single confirmed signature; dispatches to handlers. */
61
+ process(signature: string, opts: SrslyProcessOpts): Promise<AuditEvent[]>;
62
+ /** Tear down the live stream and clear all handlers. */
63
+ close(): Promise<void>;
64
+ }
65
+ export interface CreateSrslyEventListenerOpts {
66
+ /** Program to filter against. Defaults to the bundled SRSLY program ID. */
67
+ programId?: Address;
68
+ }
69
+ /**
70
+ * Underlying listener primitive. Most consumers should reach for
71
+ * `onSrslyEvent` / `getEventsFromTx` instead — those bind to `setSdkConfig`
72
+ * automatically. Use this when you need multiple isolated listeners, a
73
+ * non-default program ID, or test injection.
74
+ */
75
+ export declare function createSrslyEventListener(opts?: CreateSrslyEventListenerOpts): SrslyEventListener;
76
+ /**
77
+ * Subscribe to a SRSLY event using the config-bound singleton listener.
78
+ *
79
+ * When `setSdkConfig({ eventsListener: true, wsUrl })` is set, the live
80
+ * stream opens lazily on the first `onSrslyEvent` call. Without the flag the
81
+ * handler is still registered — it just only fires for events surfaced via
82
+ * `getEventsFromTx`.
83
+ *
84
+ * Returns an unsubscribe function.
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * setSdkConfig({ eventsListener: true, wsUrl: 'wss://your-rpc/' });
89
+ *
90
+ * const off = onSrslyEvent('RentalAccepted', evt => {
91
+ * console.log('new rental', evt.rentalState, 'escrow', evt.escrow);
92
+ * });
93
+ *
94
+ * // later
95
+ * off();
96
+ * ```
97
+ */
98
+ export declare function onSrslyEvent<N extends SrslyEventName>(name: N, handler: SrslyEventHandler<N>): () => void;
99
+ export declare function onSrslyEvent(name: '*', handler: SrslyAnyEventHandler): () => void;
100
+ /**
101
+ * Pull and parse SRSLY events from a single confirmed transaction signature.
102
+ * Uses the `rpcUrl` from `setSdkConfig` unless an override is passed.
103
+ *
104
+ * Dispatches into the same singleton handler registry that `onSrslyEvent`
105
+ * subscribes to — so a handler registered once will fire for both live
106
+ * events and per-signature lookups.
107
+ *
108
+ * @example Right after submitting an instruction
109
+ * ```ts
110
+ * const ixs = await acceptRental(params);
111
+ * const sig = await wallet.sendAndConfirm(ixs);
112
+ * const events = await getEventsFromTx(sig);
113
+ * const accepted = events.find(e => e.type === 'RentalAccepted');
114
+ * ```
115
+ */
116
+ export declare function getEventsFromTx(signature: string, opts?: {
117
+ rpcUrl?: string;
118
+ commitment?: ListenerCommitment;
119
+ }): Promise<AuditEvent[]>;
120
+ /**
121
+ * Tear down the singleton listener, close the WS subscription if open, and
122
+ * clear all handlers. Call this in test teardown or app shutdown — most apps
123
+ * never need to.
124
+ */
125
+ export declare function closeSrslyEventListener(): Promise<void>;
126
+ export {};
127
+ //# sourceMappingURL=listener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/audit/listener.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAEhD,KAAK,OAAO,CAAC,CAAC,SAAS,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CACzE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7E,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAE7B,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAE/B,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,EAAE,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IACjF,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAC;IACzD,kEAAkE;IAClE,KAAK,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,6EAA6E;IAC7E,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1E,wDAAwD;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,GAAE,4BAAiC,GACtC,kBAAkB,CA6GpB;AA4CD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,cAAc,EACnD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,MAAM,IAAI,CAAC;AACd,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAcnF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAAO,GAC9D,OAAO,CAAC,UAAU,EAAE,CAAC,CAGvB;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7D"}
@@ -24,4 +24,6 @@ export * from '../cost';
24
24
  export { claim, type ClaimParams } from '@sly-rentals/vault';
25
25
  export * as codama from '../generated/codama';
26
26
  export * as audit from '../audit';
27
+ export { closeSrslyEventListener, events, getEventsFromTx, onSrslyEvent } from '../audit';
28
+ export type { EventChannel, EventsTree, GroupNamespace, SrslyAnyEventHandler, SrslyEventHandler, SrslyEventListener, SrslyEventName, } from '../audit';
27
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAMlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1F,YAAY,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,UAAU,CAAC"}
@@ -29,6 +29,9 @@ export * from '../params';
29
29
  export * from '../pda';
30
30
  export { VERSION } from '../version';
31
31
  export * as codama from '../generated/codama';
32
+ export * as audit from '../audit';
33
+ export { closeSrslyEventListener, events, getEventsFromTx, onSrslyEvent } from '../audit';
34
+ export type { EventChannel, EventsTree, GroupNamespace, SrslyAnyEventHandler, SrslyEventHandler, SrslyEventListener, SrslyEventName, } from '../audit';
32
35
  export type * from '../instructions';
33
36
  export { type ClaimParams } from '@sly-rentals/vault';
34
37
  export declare const createContract: (params: kit.CreateContractParams, config?: Partial<import("../utils").SdkConfig> | undefined) => Promise<LegacyInstruction[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/legacy/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/legacy/index.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,25 @@ export interface SdkConfig {
47
47
  * @default 'http://localhost:8899' for localnet
48
48
  */
49
49
  rpcUrl?: string;
50
+ /**
51
+ * WebSocket URL for live event subscriptions.
52
+ *
53
+ * Required when `eventsListener` is `true`. Ignored otherwise.
54
+ */
55
+ wsUrl?: string;
56
+ /**
57
+ * Toggle the singleton SRSLY event listener.
58
+ *
59
+ * When `true`, `onSrslyEvent(name, cb)` opens (and lazily caches) a
60
+ * `logsNotifications` subscription to the configured `wsUrl`. When `false`
61
+ * (the default), live streaming is disabled — handlers registered via
62
+ * `onSrslyEvent` only fire for events surfaced through `getEventsFromTx`.
63
+ *
64
+ * Explicit on/off is preferred over inferring from `wsUrl` so consumers
65
+ * who set a WS URL for some other purpose don't accidentally open a
66
+ * subscription.
67
+ */
68
+ eventsListener?: boolean;
50
69
  /**
51
70
  * Custom SRSLY program ID (overrides default)
52
71
  */
@@ -146,6 +165,16 @@ export declare function mergeConfig(overrides?: Partial<SdkConfig>): SdkConfig;
146
165
  * @returns RPC URL to use
147
166
  */
148
167
  export declare function getRpcUrl(config?: Partial<SdkConfig>): string;
168
+ /**
169
+ * Get the effective WebSocket URL, if any. Returns `undefined` when neither
170
+ * the global config nor the override sets one.
171
+ */
172
+ export declare function getWsUrl(config?: Partial<SdkConfig>): string | undefined;
173
+ /**
174
+ * Returns whether the singleton SRSLY event listener should auto-start.
175
+ * Defaults to `false` if unset.
176
+ */
177
+ export declare function isEventsListenerEnabled(config?: Partial<SdkConfig>): boolean;
149
178
  /**
150
179
  * Get the effective program ID for a configuration
151
180
  *
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAML,KAAK,UAAU,IAAI,mBAAmB,EACtC,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU,GAAG,GAAG;IACpD,KAAK,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,iBAAiB,CAAC;IAC1B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAC;IAErB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;OAIG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAiCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAQ7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAS7D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAG3F;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAS9F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAItE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAML,KAAK,UAAU,IAAI,mBAAmB,EACtC,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU,GAAG,GAAG;IACpD,KAAK,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,iBAAiB,CAAC;IAC1B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAC;IAErB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;OAIG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAiCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAQ7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAS7D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAExE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAE5E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAG3F;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAS9F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAItE"}