@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,86 @@
1
+ "use strict";
2
+ /**
3
+ * Typed namespace tree for the SRSLY event listener.
4
+ *
5
+ * Built once from a const manifest mapping each event's IDL name to a
6
+ * `{ group, verb }` pair. The TypeScript type derives the entire dotted
7
+ * namespace shape from that manifest, so consumers get autocomplete on
8
+ * every event without us hand-rolling an interface — and adding a new
9
+ * event in the future only requires:
10
+ *
11
+ * 1. Append a row to `EVENT_MANIFEST`.
12
+ * 2. Add a decoder in `events.ts`.
13
+ * 3. Extend the `AuditEvent` union in `types.ts`.
14
+ *
15
+ * The runtime tree is generated alongside the type so they can never drift.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.events = void 0;
19
+ const listener_1 = require("./listener");
20
+ // Single source of truth — tuple form keeps the type literal so we can
21
+ // derive the namespace shape at the type level. Order: [IDL name, group,
22
+ // verb]. New events extend by appending here.
23
+ const EVENT_MANIFEST = [
24
+ ['RentalAccepted', 'rental', 'accepted'],
25
+ ['RentalSettled', 'rental', 'settled'],
26
+ ['RentalCancelled', 'rental', 'cancelled'],
27
+ ['RentalClosed', 'rental', 'closed'],
28
+ ['OwnerPaid', 'owner', 'paid'],
29
+ ['FeesPaid', 'fees', 'paid'],
30
+ ];
31
+ function nameChannel(name) {
32
+ return {
33
+ on: handler => (0, listener_1.onSrslyEvent)(name, handler),
34
+ };
35
+ }
36
+ function allChannel() {
37
+ return {
38
+ on: handler => (0, listener_1.onSrslyEvent)('*', handler),
39
+ };
40
+ }
41
+ function groupChannel(group) {
42
+ // Group-level "all" filters the global stream by manifest membership so a
43
+ // handler registered on `events.rental.all` only sees rental events even
44
+ // if a new top-level event ships later.
45
+ const memberNames = new Set(EVENT_MANIFEST.filter(([, g]) => g === group).map(([n]) => n));
46
+ return {
47
+ on: handler => {
48
+ return (0, listener_1.onSrslyEvent)('*', evt => {
49
+ if (memberNames.has(evt.type))
50
+ handler(evt);
51
+ });
52
+ },
53
+ };
54
+ }
55
+ function buildTree() {
56
+ // Object literal — typed loosely while building, asserted to the derived
57
+ // tree shape at the end. Shape is guaranteed by the manifest iteration.
58
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
+ const tree = { all: allChannel() };
60
+ for (const [name, group, verb] of EVENT_MANIFEST) {
61
+ if (!tree[group])
62
+ tree[group] = { all: groupChannel(group) };
63
+ tree[group][verb] = nameChannel(name);
64
+ }
65
+ return tree;
66
+ }
67
+ /**
68
+ * Typed event tree. Use the deepest path you need — the handler arg is
69
+ * narrowed accordingly:
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * import { events } from '@sly-rentals/core';
74
+ *
75
+ * // Single event
76
+ * events.rental.accepted.on(evt => evt.escrow);
77
+ *
78
+ * // Group-scoped catch-all
79
+ * events.rental.all.on(evt => evt.type); // 'RentalAccepted' | 'RentalSettled' | …
80
+ *
81
+ * // Global catch-all
82
+ * events.all.on(evt => evt.signature);
83
+ * ```
84
+ */
85
+ exports.events = buildTree();
86
+ //# sourceMappingURL=events-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-registry.js","sourceRoot":"","sources":["../../../src/audit/events-registry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,yCAA0C;AAI1C,uEAAuE;AACvE,yEAAyE;AACzE,8CAA8C;AAC9C,MAAM,cAAc,GAAG;IACrB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,CAAC;IACxC,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAC;IACtC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,CAAC;IAC1C,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACpC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;IAC9B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;CACpB,CAAC;AAsCX,SAAS,WAAW,CAAC,IAAoB;IACvC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,IAAA,uBAAY,EAAC,IAAa,EAAE,OAAgB,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,IAAA,uBAAY,EAAC,GAAG,EAAE,OAAO,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAiB;IACrC,0EAA0E;IAC1E,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,WAAW,GAAgB,IAAI,GAAG,CACtC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAC9D,CAAC;IACF,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACZ,OAAO,IAAA,uBAAY,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE;gBAC7B,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,yEAAyE;IACzE,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,IAAI,GAAwB,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAsB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAkB,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACU,QAAA,MAAM,GAAe,SAAS,EAAE,CAAC"}
@@ -1,8 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseAnchorEvents = exports.fetchContractAudit = void 0;
3
+ exports.events = exports.onSrslyEvent = exports.getEventsFromTx = exports.createSrslyEventListener = exports.closeSrslyEventListener = exports.parseAnchorEvents = exports.fetchContractAudit = void 0;
4
4
  var audit_1 = require("./audit");
5
5
  Object.defineProperty(exports, "fetchContractAudit", { enumerable: true, get: function () { return audit_1.fetchContractAudit; } });
6
6
  var events_1 = require("./events");
7
7
  Object.defineProperty(exports, "parseAnchorEvents", { enumerable: true, get: function () { return events_1.parseAnchorEvents; } });
8
+ var listener_1 = require("./listener");
9
+ Object.defineProperty(exports, "closeSrslyEventListener", { enumerable: true, get: function () { return listener_1.closeSrslyEventListener; } });
10
+ Object.defineProperty(exports, "createSrslyEventListener", { enumerable: true, get: function () { return listener_1.createSrslyEventListener; } });
11
+ Object.defineProperty(exports, "getEventsFromTx", { enumerable: true, get: function () { return listener_1.getEventsFromTx; } });
12
+ Object.defineProperty(exports, "onSrslyEvent", { enumerable: true, get: function () { return listener_1.onSrslyEvent; } });
13
+ var events_registry_1 = require("./events-registry");
14
+ Object.defineProperty(exports, "events", { enumerable: true, get: function () { return events_registry_1.events; } });
8
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA;AAC3B,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA;AAC3B,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,uCAKoB;AAJlB,mHAAA,uBAAuB,OAAA;AACvB,oHAAA,wBAAwB,OAAA;AACxB,2GAAA,eAAe,OAAA;AACf,wGAAA,YAAY,OAAA;AAEd,qDAA2C;AAAlC,yGAAA,MAAM,OAAA"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ /**
3
+ * SRSLY event listener — plug-and-play wrapper over `parseAnchorEvents` that
4
+ * lets a developer subscribe to the program's emitted events without ever
5
+ * importing Anchor or the IDL.
6
+ *
7
+ * Two ingest paths share one dispatch table:
8
+ *
9
+ * - Live stream: register a handler with `onSrslyEvent(name, cb)`. The SDK
10
+ * opens (and lazily caches) a singleton `logsNotifications` subscription
11
+ * using the `wsUrl` from `setSdkConfig`. No listener instance to manage —
12
+ * drop your handlers and go.
13
+ * - Per-signature: pass a tx signature to `getEventsFromTx(sig)` to fetch
14
+ * the confirmed transaction, parse its logs, and get back the typed
15
+ * event array. Same handlers fire as for the live stream.
16
+ *
17
+ * Kit-only by design: events are SRSLY's, so there's no value in shipping a
18
+ * web3.js variant. Consumers that already have `@solana/kit` (everyone using
19
+ * this package) get the listener for free.
20
+ *
21
+ * For advanced cases — multiple isolated listeners, custom program IDs,
22
+ * test fixtures — `createSrslyEventListener()` is exported as the
23
+ * underlying primitive.
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.createSrslyEventListener = createSrslyEventListener;
27
+ exports.onSrslyEvent = onSrslyEvent;
28
+ exports.getEventsFromTx = getEventsFromTx;
29
+ exports.closeSrslyEventListener = closeSrslyEventListener;
30
+ const kit_1 = require("@solana/kit");
31
+ const events_1 = require("./events");
32
+ const srsly_1 = require("../generated/codama/programs/srsly");
33
+ const config_1 = require("../utils/config");
34
+ /**
35
+ * Underlying listener primitive. Most consumers should reach for
36
+ * `onSrslyEvent` / `getEventsFromTx` instead — those bind to `setSdkConfig`
37
+ * automatically. Use this when you need multiple isolated listeners, a
38
+ * non-default program ID, or test injection.
39
+ */
40
+ function createSrslyEventListener(opts = {}) {
41
+ const programId = String(opts.programId ?? srsly_1.SRSLY_PROGRAM_ADDRESS);
42
+ const handlers = new Map();
43
+ let abort = null;
44
+ let drain = null;
45
+ function dispatch(events) {
46
+ for (const evt of events) {
47
+ handlers.get(evt.type)?.forEach(cb => {
48
+ try {
49
+ cb(evt);
50
+ }
51
+ catch (err) {
52
+ // eslint-disable-next-line no-console
53
+ console.error('[srsly:listener] handler threw for', evt.type, err);
54
+ }
55
+ });
56
+ handlers.get('*')?.forEach(cb => {
57
+ try {
58
+ cb(evt);
59
+ }
60
+ catch (err) {
61
+ // eslint-disable-next-line no-console
62
+ console.error('[srsly:listener] * handler threw', err);
63
+ }
64
+ });
65
+ }
66
+ }
67
+ function on(name, handler) {
68
+ let set = handlers.get(name);
69
+ if (!set) {
70
+ set = new Set();
71
+ handlers.set(name, set);
72
+ }
73
+ set.add(handler);
74
+ return () => set.delete(handler);
75
+ }
76
+ async function start(o) {
77
+ if (abort)
78
+ return;
79
+ abort = new AbortController();
80
+ const commitment = o.commitment ?? 'confirmed';
81
+ let stream;
82
+ try {
83
+ stream = (await o.rpcSubscriptions
84
+ .logsNotifications({ mentions: [programId] }, { commitment })
85
+ .subscribe({ abortSignal: abort.signal }));
86
+ }
87
+ catch (err) {
88
+ // WS connect failure (RPC doesn't support logsSubscribe, network down,
89
+ // CORS, etc.). Stay inert so HTTP-only callers of `getEventsFromTx`
90
+ // still work. Reset abort so a later `start` can retry.
91
+ abort = null;
92
+ // eslint-disable-next-line no-console
93
+ console.warn('[srsly] event listener disabled — WS connect failed:', err);
94
+ return;
95
+ }
96
+ drain = (async () => {
97
+ try {
98
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
+ for await (const msg of stream) {
100
+ const value = msg?.value;
101
+ const slot = msg?.context?.slot;
102
+ if (!value || slot === undefined)
103
+ continue;
104
+ if (value.err)
105
+ continue;
106
+ const events = (0, events_1.parseAnchorEvents)(value.logs, programId, BigInt(slot), String(value.signature));
107
+ dispatch(events);
108
+ }
109
+ }
110
+ catch {
111
+ // AbortError on close, or socket-level disconnects.
112
+ }
113
+ })();
114
+ }
115
+ async function process(signature, o) {
116
+ const tx = await o.rpc
117
+ .getTransaction(signature, {
118
+ encoding: 'json',
119
+ maxSupportedTransactionVersion: 0,
120
+ commitment: o.commitment ?? 'confirmed',
121
+ })
122
+ .send();
123
+ if (!tx?.meta?.logMessages)
124
+ return [];
125
+ const events = (0, events_1.parseAnchorEvents)(tx.meta.logMessages, programId, BigInt(tx.slot), signature);
126
+ dispatch(events);
127
+ return events;
128
+ }
129
+ async function close() {
130
+ abort?.abort();
131
+ abort = null;
132
+ if (drain)
133
+ await drain;
134
+ drain = null;
135
+ handlers.clear();
136
+ }
137
+ return { on: on, start, process, close };
138
+ }
139
+ // ─────────────────────────────────────────────────────────────────────────
140
+ // Config-bound singleton — what most consumers should reach for
141
+ // ─────────────────────────────────────────────────────────────────────────
142
+ let singleton = null;
143
+ let singletonStarted = null;
144
+ function getSingleton() {
145
+ if (!singleton)
146
+ singleton = createSrslyEventListener();
147
+ return singleton;
148
+ }
149
+ /**
150
+ * Lazily open the live stream when `setSdkConfig({ eventsListener: true })`
151
+ * is set. Idempotent — the second call returns the same start promise.
152
+ * No-op when the listener is disabled, so on-demand `getEventsFromTx` calls
153
+ * still work against the HTTP RPC alone.
154
+ *
155
+ * Throws if `eventsListener` is on but no `wsUrl` is configured — the failure
156
+ * is louder this way than a silently-no-op listener.
157
+ */
158
+ async function ensureLiveStream() {
159
+ if (!(0, config_1.isEventsListenerEnabled)())
160
+ return false;
161
+ const wsUrl = (0, config_1.getWsUrl)();
162
+ if (!wsUrl) {
163
+ throw new Error('setSdkConfig({ eventsListener: true }) requires a wsUrl. ' +
164
+ 'Set both fields together, or leave eventsListener unset for HTTP-only mode.');
165
+ }
166
+ if (singletonStarted) {
167
+ await singletonStarted;
168
+ return true;
169
+ }
170
+ const listener = getSingleton();
171
+ singletonStarted = listener.start({
172
+ rpcSubscriptions: (0, kit_1.createSolanaRpcSubscriptions)(wsUrl),
173
+ });
174
+ await singletonStarted;
175
+ return true;
176
+ }
177
+ function onSrslyEvent(name,
178
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
179
+ handler) {
180
+ const off = getSingleton().on(name, handler);
181
+ // Fire-and-forget: kick off the WS subscription if configured. We don't
182
+ // block the caller on the connect — events that arrive before the socket
183
+ // is ready are simply not seen, which matches existing kit semantics.
184
+ void ensureLiveStream();
185
+ return off;
186
+ }
187
+ /**
188
+ * Pull and parse SRSLY events from a single confirmed transaction signature.
189
+ * Uses the `rpcUrl` from `setSdkConfig` unless an override is passed.
190
+ *
191
+ * Dispatches into the same singleton handler registry that `onSrslyEvent`
192
+ * subscribes to — so a handler registered once will fire for both live
193
+ * events and per-signature lookups.
194
+ *
195
+ * @example Right after submitting an instruction
196
+ * ```ts
197
+ * const ixs = await acceptRental(params);
198
+ * const sig = await wallet.sendAndConfirm(ixs);
199
+ * const events = await getEventsFromTx(sig);
200
+ * const accepted = events.find(e => e.type === 'RentalAccepted');
201
+ * ```
202
+ */
203
+ async function getEventsFromTx(signature, opts = {}) {
204
+ const rpc = (0, kit_1.createSolanaRpc)(opts.rpcUrl ?? (0, config_1.getRpcUrl)());
205
+ return getSingleton().process(signature, { rpc, commitment: opts.commitment });
206
+ }
207
+ /**
208
+ * Tear down the singleton listener, close the WS subscription if open, and
209
+ * clear all handlers. Call this in test teardown or app shutdown — most apps
210
+ * never need to.
211
+ */
212
+ async function closeSrslyEventListener() {
213
+ if (!singleton)
214
+ return;
215
+ await singleton.close();
216
+ singleton = null;
217
+ singletonStarted = null;
218
+ }
219
+ //# sourceMappingURL=listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/audit/listener.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;AAqEH,4DA+GC;AAuED,oCAWC;AAkBD,0CAMC;AAOD,0DAKC;AAvSD,qCAA4E;AAC5E,qCAA6C;AAE7C,8DAA2E;AAC3E,4CAA+E;AAwD/E;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,OAAqC,EAAE;IAEvC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,6BAAqB,CAAC,CAAC;IAGlE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC1D,IAAI,KAAK,GAA2B,IAAI,CAAC;IACzC,IAAI,KAAK,GAAyB,IAAI,CAAC;IAEvC,SAAS,QAAQ,CAAC,MAAoB;QACpC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;gBACnC,IAAI,CAAC;oBACH,EAAE,CAAC,GAAG,CAAC,CAAC;gBACV,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,sCAAsC;oBACtC,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;gBAC9B,IAAI,CAAC;oBACH,EAAE,CAAC,GAAG,CAAC,CAAC;gBACV,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,sCAAsC;oBACtC,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS,EAAE,CAAC,IAA0B,EAAE,OAAW;QACjD,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO,GAAG,EAAE,CAAC,GAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,CAAiB;QACpC,IAAI,KAAK;YAAE,OAAO;QAClB,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,WAAW,CAAC;QAE/C,IAAI,MAA8B,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,gBAAgB;iBAC/B,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;iBAC5D,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAA2B,CAAC;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uEAAuE;YACvE,oEAAoE;YACpE,wDAAwD;YACxD,KAAK,GAAG,IAAI,CAAC;YACb,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,GAAG,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,8DAA8D;gBAC9D,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAA4B,EAAE,CAAC;oBACrD,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC;oBACzB,MAAM,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;oBAChC,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,SAAS;wBAAE,SAAS;oBAC3C,IAAI,KAAK,CAAC,GAAG;wBAAE,SAAS;oBACxB,MAAM,MAAM,GAAG,IAAA,0BAAiB,EAC9B,KAAK,CAAC,IAAyB,EAC/B,SAAS,EACT,MAAM,CAAC,IAAI,CAAC,EACZ,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CACxB,CAAC;oBACF,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oDAAoD;YACtD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,SAAiB,EAAE,CAAmB;QAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG;aACnB,cAAc,CAAC,SAAS,EAAE;YACzB,QAAQ,EAAE,MAAM;YAChB,8BAA8B,EAAE,CAAC;YACjC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,WAAW;SACxC,CAAC;aACD,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAA,0BAAiB,EAC9B,EAAE,CAAC,IAAI,CAAC,WAAgC,EACxC,SAAS,EACT,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EACf,SAAS,CACV,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,UAAU,KAAK;QAClB,KAAK,EAAE,KAAK,EAAE,CAAC;QACf,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;QACvB,KAAK,GAAG,IAAI,CAAC;QACb,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,EAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvE,CAAC;AAED,4EAA4E;AAC5E,gEAAgE;AAChE,4EAA4E;AAE5E,IAAI,SAAS,GAA8B,IAAI,CAAC;AAChD,IAAI,gBAAgB,GAAyB,IAAI,CAAC;AAElD,SAAS,YAAY;IACnB,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,wBAAwB,EAAE,CAAC;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC,IAAA,gCAAuB,GAAE;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;IACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,2DAA2D;YACzD,6EAA6E,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,gBAAgB,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC;QAChC,gBAAgB,EAAE,IAAA,kCAA4B,EAAC,KAA0B,CAAC;KAC3E,CAAC,CAAC;IACH,MAAM,gBAAgB,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AA6BD,SAAgB,YAAY,CAC1B,IAA0B;AAC1B,8DAA8D;AAC9D,OAAY;IAEZ,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC,IAAsB,EAAE,OAAO,CAAC,CAAC;IAC/D,wEAAwE;IACxE,yEAAyE;IACzE,sEAAsE;IACtE,KAAK,gBAAgB,EAAE,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,OAA6D,EAAE;IAE/D,MAAM,GAAG,GAAG,IAAA,qBAAe,EAAC,IAAI,CAAC,MAAM,IAAI,IAAA,kBAAS,GAAE,CAAC,CAAC;IACxD,OAAO,YAAY,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,uBAAuB;IAC3C,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,SAAS,GAAG,IAAI,CAAC;IACjB,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC"}
@@ -52,7 +52,7 @@ var __importStar = (this && this.__importStar) || (function () {
52
52
  };
53
53
  })();
54
54
  Object.defineProperty(exports, "__esModule", { value: true });
55
- exports.audit = exports.codama = exports.claim = exports.VERSION = void 0;
55
+ exports.onSrslyEvent = exports.getEventsFromTx = exports.events = exports.closeSrslyEventListener = exports.audit = exports.codama = exports.claim = exports.VERSION = void 0;
56
56
  var version_1 = require("../version");
57
57
  Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
58
58
  __exportStar(require("../utils"), exports);
@@ -66,4 +66,13 @@ var vault_1 = require("@sly-rentals/vault");
66
66
  Object.defineProperty(exports, "claim", { enumerable: true, get: function () { return vault_1.claim; } });
67
67
  exports.codama = __importStar(require("../generated/codama"));
68
68
  exports.audit = __importStar(require("../audit"));
69
+ // Event listener helpers — bubbled up from `audit` so consumers can write
70
+ // `import { events, onSrslyEvent, getEventsFromTx } from '@sly-rentals/core'`
71
+ // without the audit namespace prefix. The full audit module is still
72
+ // accessible via `audit.*` for the parser primitives + report builder.
73
+ var audit_1 = require("../audit");
74
+ Object.defineProperty(exports, "closeSrslyEventListener", { enumerable: true, get: function () { return audit_1.closeSrslyEventListener; } });
75
+ Object.defineProperty(exports, "events", { enumerable: true, get: function () { return audit_1.events; } });
76
+ Object.defineProperty(exports, "getEventsFromTx", { enumerable: true, get: function () { return audit_1.getEventsFromTx; } });
77
+ Object.defineProperty(exports, "onSrslyEvent", { enumerable: true, get: function () { return audit_1.onSrslyEvent; } });
69
78
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kit/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sCAAqC;AAA5B,kGAAA,OAAO,OAAA;AAChB,2CAAyB;AACzB,kDAAgC;AAChC,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,0CAAwB;AAExB,sBAAsB;AACtB,4CAA6D;AAApD,8FAAA,KAAK,OAAA;AAEd,8DAA8C;AAC9C,kDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kit/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sCAAqC;AAA5B,kGAAA,OAAO,OAAA;AAChB,2CAAyB;AACzB,kDAAgC;AAChC,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,0CAAwB;AAExB,sBAAsB;AACtB,4CAA6D;AAApD,8FAAA,KAAK,OAAA;AAEd,8DAA8C;AAC9C,kDAAkC;AAElC,0EAA0E;AAC1E,8EAA8E;AAC9E,qEAAqE;AACrE,uEAAuE;AACvE,kCAA0F;AAAjF,gHAAA,uBAAuB,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,wGAAA,eAAe,OAAA;AAAE,qGAAA,YAAY,OAAA"}
@@ -59,7 +59,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
59
59
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
60
60
  };
61
61
  Object.defineProperty(exports, "__esModule", { value: true });
62
- exports.claim = exports.updateAffiliate = exports.removeAffiliate = exports.approveAffiliate = exports.createAffiliate = exports.deleteConfig = exports.updateConfig = exports.createConfig = exports.updateContractThread = exports.closeContractThread = exports.createContractThread = exports.claimContract = exports.deleteBorrower = exports.createBorrower = exports.closeBorrower = exports.claimBorrower = exports.deleteRental = exports.reserveRental = exports.invalidateRental = exports.releaseRental = exports.closeRental = exports.cancelRental = exports.acceptRental = exports.setDelegate = exports.deleteContract = exports.closeContract = exports.updateContract = exports.createContract = exports.codama = exports.VERSION = void 0;
62
+ exports.claim = exports.updateAffiliate = exports.removeAffiliate = exports.approveAffiliate = exports.createAffiliate = exports.deleteConfig = exports.updateConfig = exports.createConfig = exports.updateContractThread = exports.closeContractThread = exports.createContractThread = exports.claimContract = exports.deleteBorrower = exports.createBorrower = exports.closeBorrower = exports.claimBorrower = exports.deleteRental = exports.reserveRental = exports.invalidateRental = exports.releaseRental = exports.closeRental = exports.cancelRental = exports.acceptRental = exports.setDelegate = exports.deleteContract = exports.closeContract = exports.updateContract = exports.createContract = exports.onSrslyEvent = exports.getEventsFromTx = exports.events = exports.closeSrslyEventListener = exports.audit = exports.codama = exports.VERSION = void 0;
63
63
  const utils_1 = require("../utils");
64
64
  const kit = __importStar(require("../instructions"));
65
65
  const vault_1 = require("@sly-rentals/vault");
@@ -71,6 +71,12 @@ __exportStar(require("../pda"), exports);
71
71
  var version_1 = require("../version");
72
72
  Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
73
73
  exports.codama = __importStar(require("../generated/codama"));
74
+ exports.audit = __importStar(require("../audit"));
75
+ var audit_1 = require("../audit");
76
+ Object.defineProperty(exports, "closeSrslyEventListener", { enumerable: true, get: function () { return audit_1.closeSrslyEventListener; } });
77
+ Object.defineProperty(exports, "events", { enumerable: true, get: function () { return audit_1.events; } });
78
+ Object.defineProperty(exports, "getEventsFromTx", { enumerable: true, get: function () { return audit_1.getEventsFromTx; } });
79
+ Object.defineProperty(exports, "onSrslyEvent", { enumerable: true, get: function () { return audit_1.onSrslyEvent; } });
74
80
  /**
75
81
  * Wrapper that checks for PublicKey and provides helpful error
76
82
  */
@@ -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": {
@@ -11,6 +11,8 @@ exports.getSdkConfig = getSdkConfig;
11
11
  exports.clearSdkConfig = clearSdkConfig;
12
12
  exports.mergeConfig = mergeConfig;
13
13
  exports.getRpcUrl = getRpcUrl;
14
+ exports.getWsUrl = getWsUrl;
15
+ exports.isEventsListenerEnabled = isEventsListenerEnabled;
14
16
  exports.getProgramId = getProgramId;
15
17
  exports.getCommitment = getCommitment;
16
18
  exports.getAffiliateConfig = getAffiliateConfig;
@@ -128,6 +130,20 @@ function getRpcUrl(config) {
128
130
  ALIAS_RPC_URLS[finalConfig.programs] ||
129
131
  DEFAULT_RPC_URLS[addresses_1.DEVNET_GENESIS]);
130
132
  }
133
+ /**
134
+ * Get the effective WebSocket URL, if any. Returns `undefined` when neither
135
+ * the global config nor the override sets one.
136
+ */
137
+ function getWsUrl(config) {
138
+ return mergeConfig(config).wsUrl;
139
+ }
140
+ /**
141
+ * Returns whether the singleton SRSLY event listener should auto-start.
142
+ * Defaults to `false` if unset.
143
+ */
144
+ function isEventsListenerEnabled(config) {
145
+ return mergeConfig(config).eventsListener === true;
146
+ }
131
147
  /**
132
148
  * Get the effective program ID for a configuration
133
149
  *
@@ -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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"}
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Auto-generated from package.json - DO NOT EDIT
5
5
  // Run "pnpm run generate:version" to update
6
- exports.VERSION = '0.1.0';
6
+ exports.VERSION = '1.1.0';
7
7
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,83 @@
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 { onSrslyEvent } from './listener';
17
+ // Single source of truth — tuple form keeps the type literal so we can
18
+ // derive the namespace shape at the type level. Order: [IDL name, group,
19
+ // verb]. New events extend by appending here.
20
+ const EVENT_MANIFEST = [
21
+ ['RentalAccepted', 'rental', 'accepted'],
22
+ ['RentalSettled', 'rental', 'settled'],
23
+ ['RentalCancelled', 'rental', 'cancelled'],
24
+ ['RentalClosed', 'rental', 'closed'],
25
+ ['OwnerPaid', 'owner', 'paid'],
26
+ ['FeesPaid', 'fees', 'paid'],
27
+ ];
28
+ function nameChannel(name) {
29
+ return {
30
+ on: handler => onSrslyEvent(name, handler),
31
+ };
32
+ }
33
+ function allChannel() {
34
+ return {
35
+ on: handler => onSrslyEvent('*', handler),
36
+ };
37
+ }
38
+ function groupChannel(group) {
39
+ // Group-level "all" filters the global stream by manifest membership so a
40
+ // handler registered on `events.rental.all` only sees rental events even
41
+ // if a new top-level event ships later.
42
+ const memberNames = new Set(EVENT_MANIFEST.filter(([, g]) => g === group).map(([n]) => n));
43
+ return {
44
+ on: handler => {
45
+ return onSrslyEvent('*', evt => {
46
+ if (memberNames.has(evt.type))
47
+ handler(evt);
48
+ });
49
+ },
50
+ };
51
+ }
52
+ function buildTree() {
53
+ // Object literal — typed loosely while building, asserted to the derived
54
+ // tree shape at the end. Shape is guaranteed by the manifest iteration.
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ const tree = { all: allChannel() };
57
+ for (const [name, group, verb] of EVENT_MANIFEST) {
58
+ if (!tree[group])
59
+ tree[group] = { all: groupChannel(group) };
60
+ tree[group][verb] = nameChannel(name);
61
+ }
62
+ return tree;
63
+ }
64
+ /**
65
+ * Typed event tree. Use the deepest path you need — the handler arg is
66
+ * narrowed accordingly:
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * import { events } from '@sly-rentals/core';
71
+ *
72
+ * // Single event
73
+ * events.rental.accepted.on(evt => evt.escrow);
74
+ *
75
+ * // Group-scoped catch-all
76
+ * events.rental.all.on(evt => evt.type); // 'RentalAccepted' | 'RentalSettled' | …
77
+ *
78
+ * // Global catch-all
79
+ * events.all.on(evt => evt.signature);
80
+ * ```
81
+ */
82
+ export const events = buildTree();
83
+ //# sourceMappingURL=events-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-registry.js","sourceRoot":"","sources":["../../../src/audit/events-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1C,uEAAuE;AACvE,yEAAyE;AACzE,8CAA8C;AAC9C,MAAM,cAAc,GAAG;IACrB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,CAAC;IACxC,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAC;IACtC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,CAAC;IAC1C,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACpC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;IAC9B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;CACpB,CAAC;AAsCX,SAAS,WAAW,CAAC,IAAoB;IACvC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAa,EAAE,OAAgB,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAiB;IACrC,0EAA0E;IAC1E,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,WAAW,GAAgB,IAAI,GAAG,CACtC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAC9D,CAAC;IACF,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACZ,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;gBAC7B,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,yEAAyE;IACzE,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,IAAI,GAAwB,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAsB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAkB,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,MAAM,GAAe,SAAS,EAAE,CAAC"}
@@ -1,3 +1,5 @@
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';
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","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"}