📄 src/web3/events/wallet_events.ts
D-OPEN SOVEREIGN
1import { type EventListener, getEventBus } from './EventBus';
2import {
3 type WalletChainChangedEvent,
4 type WalletDisconnectedEvent,
5 type WalletErrorEvent,
6 type WalletStateEvent,
7 type WalletSessionEvent,
8 type WalletSessionDeletedEvent,
9 type WalletSaveRestoredEvent,
10 type SubscriptionPatchesSyncedEvent,
11} from './interfaces';
12import { EventName } from './enums';
13
14const createEmitter = <T>(eventName: EventName) => {
15 return (data: T): void => {
16 getEventBus().emit(eventName, data);
17 };
18};
19
20const createListener = <T>(eventName: EventName) => {
21 return (listener: EventListener<T>): (() => void) => {
22 return getEventBus().on(eventName, listener);
23 };
24};
25
26export const WalletEvents = {
27 emitWalletStateEvent: createEmitter<WalletStateEvent>(EventName.WALLET_STATE_CHANGED),
28 onWalletStateEvent: createListener<WalletStateEvent>(EventName.WALLET_STATE_CHANGED),
29
30 emitSessionUpdated: createEmitter<WalletSessionEvent>(EventName.SESSION_UPDATED),
31 onSessionUpdated: createListener<WalletSessionEvent>(EventName.SESSION_UPDATED),
32
33 emitChainChanged: createEmitter<WalletChainChangedEvent>(EventName.WALLET_CHAIN_CHANGED),
34 onChainChanged: createListener<WalletChainChangedEvent>(EventName.WALLET_CHAIN_CHANGED),
35
36 emitDisconnected: createEmitter<WalletDisconnectedEvent>(EventName.WALLET_DISCONNECTED),
37 onDisconnected: createListener<WalletDisconnectedEvent>(EventName.WALLET_DISCONNECTED),
38
39 emitWalletSessionDeleted: createEmitter<WalletSessionDeletedEvent>(EventName.SESSION_DELETED),
40 onWalletSessionDeleted: createListener<WalletSessionDeletedEvent>(EventName.SESSION_DELETED),
41
42 emitWalletError: createEmitter<WalletErrorEvent>(EventName.WALLET_ERROR),
43 onWalletError: createListener<WalletErrorEvent>(EventName.WALLET_ERROR),
44
45 emitSaveRestored: createEmitter<WalletSaveRestoredEvent>(EventName.SAVE_RESTORED),
46 onSaveRestored: createListener<WalletSaveRestoredEvent>(EventName.SAVE_RESTORED),
47
48 emitSubscriptionPatchesSynced: createEmitter<SubscriptionPatchesSyncedEvent>(EventName.SUBSCRIPTION_PATCHES_SYNCED),
49 onSubscriptionPatchesSynced: createListener<SubscriptionPatchesSyncedEvent>(EventName.SUBSCRIPTION_PATCHES_SYNCED),
50};
51