📄 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