@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.
- package/README.md +76 -163
- package/dist/api.json +7636 -3857
- package/dist/cjs/audit/events-registry.js +86 -0
- package/dist/cjs/audit/events-registry.js.map +1 -0
- package/dist/cjs/audit/index.js +8 -1
- package/dist/cjs/audit/index.js.map +1 -1
- package/dist/cjs/audit/listener.js +219 -0
- package/dist/cjs/audit/listener.js.map +1 -0
- package/dist/cjs/kit/index.js +10 -1
- package/dist/cjs/kit/index.js.map +1 -1
- package/dist/cjs/legacy/index.js +7 -1
- package/dist/cjs/legacy/index.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/utils/config.js +16 -0
- package/dist/cjs/utils/config.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/audit/events-registry.js +83 -0
- package/dist/esm/audit/events-registry.js.map +1 -0
- package/dist/esm/audit/index.js +2 -0
- package/dist/esm/audit/index.js.map +1 -1
- package/dist/esm/audit/listener.js +213 -0
- package/dist/esm/audit/listener.js.map +1 -0
- package/dist/esm/kit/index.js +5 -0
- package/dist/esm/kit/index.js.map +1 -1
- package/dist/esm/legacy/index.js +2 -0
- package/dist/esm/legacy/index.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/utils/config.js +14 -0
- package/dist/esm/utils/config.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/audit/events-registry.d.ts +71 -0
- package/dist/types/audit/events-registry.d.ts.map +1 -0
- package/dist/types/audit/index.d.ts +4 -0
- package/dist/types/audit/index.d.ts.map +1 -1
- package/dist/types/audit/listener.d.ts +127 -0
- package/dist/types/audit/listener.d.ts.map +1 -0
- package/dist/types/kit/index.d.ts +2 -0
- package/dist/types/kit/index.d.ts.map +1 -1
- package/dist/types/legacy/index.d.ts +3 -0
- package/dist/types/legacy/index.d.ts.map +1 -1
- package/dist/types/utils/config.d.ts +29 -0
- package/dist/types/utils/config.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- 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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"}
|
package/dist/esm/kit/index.js
CHANGED
|
@@ -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"}
|
package/dist/esm/legacy/index.js
CHANGED
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,YAAY,EAAkD,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE5D,oDAAoD;AACpD,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/legacy/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/package.json
CHANGED
package/dist/esm/utils/config.js
CHANGED
|
@@ -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":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,GAKf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,GAKf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAiH1E;;GAEG;AACH,MAAM,gBAAgB,GAA2B;IAC/C,CAAC,eAAe,CAAC,EAAE,qCAAqC;IACxD,CAAC,cAAc,CAAC,EAAE,+BAA+B;IACjD,sEAAsE;CACvE,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAA2B;IAC7C,QAAQ,EAAE,+BAA+B;IACzC,OAAO,EAAE,+BAA+B;IACxC,OAAO,EAAE,qCAAqC;IAC9C,QAAQ,EAAE,uBAAuB;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD;;GAEG;AACH,IAAI,YAAY,GAAc;IAC5B,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAE9C,4CAA4C;IAC5C,oBAAoB,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,YAAY,GAAG;QACb,QAAQ,EAAE,UAAU;KACrB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,SAA8B;IACxD,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,MAA2B;IACnD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,WAAW,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC;IAClD,2DAA2D;IAC3D,OAAO,CACL,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC;QACtC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC;QACpC,gBAAgB,CAAC,cAAc,CAAC,CACjC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA2B;IAClD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAA2B;IACjE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC7C,OAAO,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEnE,uDAAuD;IACvD,OAAO;QACL,GAAG,gBAAgB;QACnB,KAAK,EAAE,WAAW,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK;KACvD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc;IACnD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/esm/version.js
CHANGED
|
@@ -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"}
|