@tixyel/streamelements 7.5.1 → 7.5.2

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/dist/index.d.ts CHANGED
@@ -7,228 +7,6 @@
7
7
  import { ComfyJSInstance, OnErrorHandler, OnCommandHandler, OnChatHandler, OnWhisperHandler, OnMessageDeletedHandler, OnJoinHandler, OnPartHandler, OnHostedHandler, OnRaidHandler, OnSubHandler, OnResubHandler, OnSubGiftHandler, OnSubMysteryGiftHandler, OnGiftSubContinueHandler, OnCheerHandler, OnChatModeHandler, OnRewardHandler, OnConnectedHandler, OnReconnectHandler } from 'comfy.js';
8
8
  export { ComfyJSInstance } from 'comfy.js';
9
9
 
10
- type Provider$1 = 'twitch' | 'youtube' | 'kick' | 'facebook' | 'streamelements';
11
- type ClientEvents$1 = {
12
- provider: 'streamelements';
13
- data: StreamElements.Event.Provider.StreamElements.Events;
14
- } | {
15
- provider: 'twitch';
16
- data: StreamElements.Event.Provider.Twitch.Events;
17
- } | {
18
- provider: 'youtube';
19
- data: StreamElements.Event.Provider.YouTube.Events;
20
- } | {
21
- provider: 'kick';
22
- data: StreamElements.Event.Provider.Kick.Events;
23
- } | {
24
- provider: 'facebook';
25
- data: StreamElements.Event.Provider.Facebook.Events;
26
- };
27
-
28
- declare namespace StreamElementsEvents {
29
- namespace Tip {
30
- type Data = {
31
- listener: 'tip-latest';
32
- event: Event;
33
- };
34
- type Event = {
35
- amount: number;
36
- avatar: string;
37
- name: string;
38
- displayName: string;
39
- providerId: string;
40
- _id: string;
41
- sessionTop: boolean;
42
- type: 'tip';
43
- originalEventName: 'tip-latest';
44
- };
45
- }
46
- namespace KVStore {
47
- type Data = {
48
- listener: 'kvstore:update';
49
- event: Event;
50
- };
51
- type Event = {
52
- data: {
53
- key: `customWidget.${string}`;
54
- value: string | number | boolean | Record<string, any>;
55
- };
56
- };
57
- }
58
- namespace BotCounter {
59
- type Data = {
60
- listener: 'bot:counter';
61
- event: Event;
62
- };
63
- type Event = {
64
- counter: string;
65
- value: number;
66
- };
67
- }
68
- namespace AlertService {
69
- type Data = {
70
- listener: 'alertService:toggleSound';
71
- event: Event;
72
- };
73
- type Event = {
74
- muted: boolean;
75
- };
76
- }
77
- namespace EventSkip {
78
- type Data = {
79
- listener: 'event:skip';
80
- event: Event;
81
- };
82
- type Event = {};
83
- }
84
- namespace EventTest {
85
- export type Data = {
86
- listener: 'event:test';
87
- event: Event;
88
- };
89
- export type Event = widgetButton | emulatedEvents<EventType> | Session;
90
- type items = {
91
- name: string;
92
- price: number;
93
- quantity: number;
94
- };
95
- type widgetButton = {
96
- listener: 'widget-button';
97
- field: string;
98
- value: string | number | boolean;
99
- };
100
- type EventType = 'follower' | 'subscriber' | 'tip' | 'cheer' | 'raid';
101
- type EventTier = 'prime' | '1000' | '2000' | '3000';
102
- type emulatedEvents<T extends EventType> = {
103
- listener: `${T}-latest`;
104
- event: {
105
- type: T;
106
- name: string;
107
- amount: number;
108
- count: number;
109
- message?: string;
110
- gifted?: boolean;
111
- bulkGifted?: boolean;
112
- sender?: string;
113
- subExtension?: boolean;
114
- items: items[];
115
- tier: EventTier;
116
- month: string;
117
- isTest: true;
118
- };
119
- };
120
- type Session = SessionCount | SessionTotal | SessionTop | SessionGoal | SessionRecent | SessionPoints;
121
- type SessionCount = {
122
- listener: `${EventType}-count`;
123
- event: {
124
- type: EventType;
125
- name: string;
126
- count: number;
127
- items: items[];
128
- tier: EventTier;
129
- month: string;
130
- isTest: true;
131
- };
132
- };
133
- type SessionTotal = {
134
- listener: `${EventType}-total`;
135
- event: {
136
- type: EventType;
137
- name: string;
138
- amount: number;
139
- count: number;
140
- items: items[];
141
- tier: EventTier;
142
- month: string;
143
- isTest: true;
144
- };
145
- };
146
- type SessionTop = {
147
- listener: `${EventType}-top`;
148
- event: {
149
- type: EventType;
150
- name: string;
151
- amount: number;
152
- count: number;
153
- items: items[];
154
- tier: EventTier;
155
- month: string;
156
- isTest: true;
157
- };
158
- };
159
- type SessionGoal = {
160
- listener: `${EventType}-goal`;
161
- event: {
162
- type: EventType;
163
- name: string;
164
- amount: number;
165
- count: number;
166
- items: items[];
167
- tier: EventTier;
168
- month: string;
169
- isTest: true;
170
- };
171
- };
172
- type SessionRecent = {
173
- listener: `${EventType}-recent`;
174
- event: {
175
- event: SessionRecentEvent[];
176
- };
177
- };
178
- type SessionRecentEvent = {
179
- type: EventType;
180
- name: string;
181
- amount: number;
182
- count: number;
183
- tier: EventTier;
184
- isTest: true;
185
- };
186
- type SessionPoints = {
187
- listener: `${EventType}-points`;
188
- event: {
189
- type: EventType;
190
- name: string;
191
- amount: number;
192
- count: number;
193
- items: items[];
194
- tier: EventTier;
195
- month: string;
196
- isTest: true;
197
- };
198
- };
199
- export {};
200
- }
201
- interface BaseEvent {
202
- provider: Provider$1;
203
- flagged: boolean;
204
- channel: string;
205
- createdAt: string;
206
- _id: string;
207
- expiresAt: string;
208
- updatedAt: string;
209
- activityId: string;
210
- sessionEventsCount: number;
211
- isMock?: boolean;
212
- }
213
- namespace Event {
214
- type Data = {
215
- listener: 'event';
216
- event: Event;
217
- };
218
- type Event = Tip;
219
- interface Tip extends BaseEvent {
220
- type: 'tip';
221
- data: {
222
- amount: string;
223
- currency: string;
224
- username: string;
225
- message: string;
226
- avatar: string;
227
- };
228
- }
229
- }
230
- }
231
-
232
10
  type TwitchEmote = {
233
11
  type: 'twitch';
234
12
  name: string;
@@ -1681,46 +1459,334 @@ declare namespace StreamElements {
1681
1459
  }
1682
1460
  }
1683
1461
 
1684
- interface CommandOptions {
1685
- prefix?: string;
1686
- name: string;
1687
- description?: string;
1688
- arguments?: boolean;
1689
- run: (this: Client, args: string[], event: CommandEvent) => void;
1690
- test?: string;
1691
- aliases?: string[];
1692
- permissions?: string[] | boolean;
1693
- admins?: string[];
1694
- }
1695
- type CommandEvent = {
1696
- provider: 'twitch';
1697
- data: StreamElements.Event.Provider.Twitch.Message;
1698
- } | {
1699
- provider: 'youtube';
1700
- data: StreamElements.Event.Provider.YouTube.Message;
1701
- } | {
1702
- provider: 'kick';
1703
- data: any;
1462
+ type Provider$1 = 'twitch' | 'youtube' | 'kick' | 'facebook' | 'streamelements';
1463
+ type ClientProviderEvents = {
1464
+ streamelements: StreamElements.Event.Provider.StreamElements.Events;
1465
+ twitch: StreamElements.Event.Provider.Twitch.Events;
1466
+ youtube: StreamElements.Event.Provider.YouTube.Events;
1467
+ kick: StreamElements.Event.Provider.Kick.Events;
1468
+ facebook: StreamElements.Event.Provider.Facebook.Events;
1704
1469
  };
1705
- declare class Command {
1706
- prefix: string;
1707
- name: string;
1708
- description: string;
1709
- arguments: boolean;
1710
- test: string | (() => string);
1711
- aliases: string[];
1712
- permissions?: string[] | boolean;
1713
- admins: string[];
1714
- constructor(options: CommandOptions);
1715
- run(this: Client | undefined, args: string[], event: CommandEvent): void;
1716
- verify(nickname: string, roles: string[], args: string[]): boolean;
1717
- parse(text: string, event: CommandEvent): boolean;
1718
- remove(): void;
1719
- static execute(received: CommandEvent): boolean;
1720
- }
1470
+ type ClientCustomEventPayload = {
1471
+ provider: 'custom';
1472
+ };
1473
+ type ClientCustomProviderEvents = Record<string, ClientCustomEventPayload>;
1474
+ type ValidateCustomProviderEvents<CustomEvents> = CustomEvents extends Record<string, unknown> ? {
1475
+ [K in keyof CustomEvents]: CustomEvents[K] extends ClientCustomEventPayload ? CustomEvents[K] : never;
1476
+ } : {};
1477
+ type ClientAllProviderEvents<CustomEvents = {}> = ClientProviderEvents & ValidateCustomProviderEvents<CustomEvents>;
1478
+ type ClientEvents<CustomEvents = {}> = {
1479
+ [K in keyof ClientAllProviderEvents<CustomEvents> & string]: {
1480
+ provider: K;
1481
+ data: ClientAllProviderEvents<CustomEvents>[K];
1482
+ };
1483
+ }[keyof ClientAllProviderEvents<CustomEvents> & string];
1484
+ type ClientEventTuple<CustomEvents = {}> = {
1485
+ [K in keyof ClientAllProviderEvents<CustomEvents> & string]: [
1486
+ provider: K,
1487
+ event: ClientAllProviderEvents<CustomEvents>[K]
1488
+ ];
1489
+ }[keyof ClientAllProviderEvents<CustomEvents> & string];
1721
1490
 
1722
- /**
1723
- * EventProvider class for managing event listeners and emitters.
1491
+ declare namespace StreamElementsEvents {
1492
+ namespace Tip {
1493
+ type Data = {
1494
+ listener: 'tip-latest';
1495
+ event: Event;
1496
+ };
1497
+ type Event = {
1498
+ amount: number;
1499
+ avatar: string;
1500
+ name: string;
1501
+ displayName: string;
1502
+ providerId: string;
1503
+ _id: string;
1504
+ sessionTop: boolean;
1505
+ type: 'tip';
1506
+ originalEventName: 'tip-latest';
1507
+ };
1508
+ }
1509
+ namespace KVStore {
1510
+ type Data = {
1511
+ listener: 'kvstore:update';
1512
+ event: Event;
1513
+ };
1514
+ type Event = {
1515
+ data: {
1516
+ key: `customWidget.${string}`;
1517
+ value: string | number | boolean | Record<string, any>;
1518
+ };
1519
+ };
1520
+ }
1521
+ namespace BotCounter {
1522
+ type Data = {
1523
+ listener: 'bot:counter';
1524
+ event: Event;
1525
+ };
1526
+ type Event = {
1527
+ counter: string;
1528
+ value: number;
1529
+ };
1530
+ }
1531
+ namespace AlertService {
1532
+ type Data = {
1533
+ listener: 'alertService:toggleSound';
1534
+ event: Event;
1535
+ };
1536
+ type Event = {
1537
+ muted: boolean;
1538
+ };
1539
+ }
1540
+ namespace EventSkip {
1541
+ type Data = {
1542
+ listener: 'event:skip';
1543
+ event: Event;
1544
+ };
1545
+ type Event = {};
1546
+ }
1547
+ namespace EventTest {
1548
+ export type Data = {
1549
+ listener: 'event:test';
1550
+ event: Event;
1551
+ };
1552
+ export type Event = widgetButton | emulatedEvents<EventType> | Session;
1553
+ type items = {
1554
+ name: string;
1555
+ price: number;
1556
+ quantity: number;
1557
+ };
1558
+ type widgetButton = {
1559
+ listener: 'widget-button';
1560
+ field: string;
1561
+ value: string | number | boolean;
1562
+ };
1563
+ type EventType = 'follower' | 'subscriber' | 'tip' | 'cheer' | 'raid';
1564
+ type EventTier = 'prime' | '1000' | '2000' | '3000';
1565
+ type emulatedEvents<T extends EventType> = {
1566
+ listener: `${T}-latest`;
1567
+ event: {
1568
+ type: T;
1569
+ name: string;
1570
+ amount: number;
1571
+ count: number;
1572
+ message?: string;
1573
+ gifted?: boolean;
1574
+ bulkGifted?: boolean;
1575
+ sender?: string;
1576
+ subExtension?: boolean;
1577
+ items: items[];
1578
+ tier: EventTier;
1579
+ month: string;
1580
+ isTest: true;
1581
+ };
1582
+ };
1583
+ type Session = SessionCount | SessionTotal | SessionTop | SessionGoal | SessionRecent | SessionPoints;
1584
+ type SessionCount = {
1585
+ listener: `${EventType}-count`;
1586
+ event: {
1587
+ type: EventType;
1588
+ name: string;
1589
+ count: number;
1590
+ items: items[];
1591
+ tier: EventTier;
1592
+ month: string;
1593
+ isTest: true;
1594
+ };
1595
+ };
1596
+ type SessionTotal = {
1597
+ listener: `${EventType}-total`;
1598
+ event: {
1599
+ type: EventType;
1600
+ name: string;
1601
+ amount: number;
1602
+ count: number;
1603
+ items: items[];
1604
+ tier: EventTier;
1605
+ month: string;
1606
+ isTest: true;
1607
+ };
1608
+ };
1609
+ type SessionTop = {
1610
+ listener: `${EventType}-top`;
1611
+ event: {
1612
+ type: EventType;
1613
+ name: string;
1614
+ amount: number;
1615
+ count: number;
1616
+ items: items[];
1617
+ tier: EventTier;
1618
+ month: string;
1619
+ isTest: true;
1620
+ };
1621
+ };
1622
+ type SessionGoal = {
1623
+ listener: `${EventType}-goal`;
1624
+ event: {
1625
+ type: EventType;
1626
+ name: string;
1627
+ amount: number;
1628
+ count: number;
1629
+ items: items[];
1630
+ tier: EventTier;
1631
+ month: string;
1632
+ isTest: true;
1633
+ };
1634
+ };
1635
+ type SessionRecent = {
1636
+ listener: `${EventType}-recent`;
1637
+ event: {
1638
+ event: SessionRecentEvent[];
1639
+ };
1640
+ };
1641
+ type SessionRecentEvent = {
1642
+ type: EventType;
1643
+ name: string;
1644
+ amount: number;
1645
+ count: number;
1646
+ tier: EventTier;
1647
+ isTest: true;
1648
+ };
1649
+ type SessionPoints = {
1650
+ listener: `${EventType}-points`;
1651
+ event: {
1652
+ type: EventType;
1653
+ name: string;
1654
+ amount: number;
1655
+ count: number;
1656
+ items: items[];
1657
+ tier: EventTier;
1658
+ month: string;
1659
+ isTest: true;
1660
+ };
1661
+ };
1662
+ export {};
1663
+ }
1664
+ interface BaseEvent {
1665
+ provider: Provider$1;
1666
+ flagged: boolean;
1667
+ channel: string;
1668
+ createdAt: string;
1669
+ _id: string;
1670
+ expiresAt: string;
1671
+ updatedAt: string;
1672
+ activityId: string;
1673
+ sessionEventsCount: number;
1674
+ isMock?: boolean;
1675
+ }
1676
+ namespace Event {
1677
+ type Data = {
1678
+ listener: 'event';
1679
+ event: Event;
1680
+ };
1681
+ type Event = Tip;
1682
+ interface Tip extends BaseEvent {
1683
+ type: 'tip';
1684
+ data: {
1685
+ amount: string;
1686
+ currency: string;
1687
+ username: string;
1688
+ message: string;
1689
+ avatar: string;
1690
+ };
1691
+ }
1692
+ }
1693
+ }
1694
+
1695
+ type JSONPrimitive = string | number | boolean | null;
1696
+ type JSONSerializable = JSONPrimitive | JSONSerializable[] | {
1697
+ [k: string]: JSONSerializable | undefined;
1698
+ };
1699
+ type JSONObject = {
1700
+ [key: string]: JSONSerializable | undefined;
1701
+ };
1702
+
1703
+ type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
1704
+ [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
1705
+ }[Keys];
1706
+
1707
+ interface ButtonOptions {
1708
+ field: string | ((field: string, value: string | boolean | number) => boolean);
1709
+ template?: string;
1710
+ name?: string;
1711
+ value?: string;
1712
+ run: (this: Client | undefined, field: string, value: string | boolean | number) => void;
1713
+ }
1714
+ /**
1715
+ * Represents a button action that can be triggered by custom fields in StreamElements.
1716
+ * The button can be configured with a template and a name, and it will execute a specified function when triggered.
1717
+ * @example
1718
+ * ```javascript
1719
+ * const button = new Button({
1720
+ * field: (field, value) => field.startsWith('message-') && field.split('-')[1],
1721
+ * template: 'message-{role}',
1722
+ * // name: '[CAP={role}] role message',
1723
+ * name: 'Generate {role} message',
1724
+ * run(field, value) {
1725
+ * console.log(`Button ${field} was clicked with value: ${value}`);
1726
+ * }
1727
+ * })
1728
+ *
1729
+ * const field = button.generate([{ role: 'broadcaster' }, { role: 'moderator' }]);
1730
+ * // This will create buttons with fields "message-broadcaster" and "message-moderator" and names "Generate broadcaster message" and "Generate moderator message".
1731
+ * // field['message-broadcaster'] => { type: 'button', label: 'Generate broadcaster message' }
1732
+ * // field['message-moderator'] => { type: 'button', label: 'Generate moderator message' }
1733
+ *
1734
+ * // When a custom field with the name "message-broadcaster" or "message-moderator" is triggered, the run function will be called with the field and value.
1735
+ * ```
1736
+ */
1737
+ declare class Button {
1738
+ field: ButtonOptions['field'];
1739
+ template: string;
1740
+ name: string;
1741
+ value: string;
1742
+ run: ButtonOptions['run'];
1743
+ constructor(options: ButtonOptions);
1744
+ generate(values: Array<Record<string, string | number>>): Record<string, StreamElements.CustomField.Schema>;
1745
+ parse(field: string, value: string | boolean | number): Button;
1746
+ remove(): void;
1747
+ static execute(field: string, value: string | boolean | number): boolean;
1748
+ }
1749
+
1750
+ interface CommandOptions {
1751
+ prefix?: string;
1752
+ name: string;
1753
+ description?: string;
1754
+ arguments?: boolean;
1755
+ run: (this: Client, args: string[], event: CommandEvent) => void;
1756
+ test?: string;
1757
+ aliases?: string[];
1758
+ permissions?: string[] | boolean;
1759
+ admins?: string[];
1760
+ }
1761
+ type CommandEvent = {
1762
+ provider: 'twitch';
1763
+ data: StreamElements.Event.Provider.Twitch.Message;
1764
+ } | {
1765
+ provider: 'youtube';
1766
+ data: StreamElements.Event.Provider.YouTube.Message;
1767
+ } | {
1768
+ provider: 'kick';
1769
+ data: any;
1770
+ };
1771
+ declare class Command {
1772
+ prefix: string;
1773
+ name: string;
1774
+ description: string;
1775
+ arguments: boolean;
1776
+ test: string | (() => string);
1777
+ aliases: string[];
1778
+ permissions?: string[] | boolean;
1779
+ admins: string[];
1780
+ constructor(options: CommandOptions);
1781
+ run(this: Client | undefined, args: string[], event: CommandEvent): void;
1782
+ verify(nickname: string, roles: string[], args: string[]): boolean;
1783
+ parse(text: string, event: CommandEvent): boolean;
1784
+ remove(): void;
1785
+ static execute(received: CommandEvent): boolean;
1786
+ }
1787
+
1788
+ /**
1789
+ * EventProvider class for managing event listeners and emitters.
1724
1790
  * This class allows you to register event listeners, emit events, and manage event subscriptions.
1725
1791
  * @example
1726
1792
  * ```typescript
@@ -1776,14 +1842,6 @@ declare class EventProvider<EventMap extends Record<string, any[]> = Record<stri
1776
1842
  removeAllListeners<K extends keyof EventMap>(eventName: K): this;
1777
1843
  }
1778
1844
 
1779
- type JSONPrimitive = string | number | boolean | null;
1780
- type JSONSerializable = JSONPrimitive | JSONSerializable[] | {
1781
- [k: string]: JSONSerializable | undefined;
1782
- };
1783
- type JSONObject = {
1784
- [key: string]: JSONSerializable | undefined;
1785
- };
1786
-
1787
1845
  type UseStorageEvents<T> = {
1788
1846
  load: [T | null];
1789
1847
  update: [T];
@@ -1860,11 +1918,11 @@ declare namespace Alejo {
1860
1918
  function get(username: string): Promise<Pronouns.name | undefined>;
1861
1919
  }
1862
1920
 
1863
- type ClientEvents = {
1921
+ type ClientMapEvents<CustomEvents = {}> = {
1864
1922
  load: [event: StreamElements.Event.onWidgetLoad];
1865
1923
  action: [action: Button | Command, type: 'created' | 'executed' | 'removed'];
1866
1924
  session: [session: StreamElements.Session.Data];
1867
- event: [provider: 'streamelements', event: StreamElements.Event.Provider.StreamElements.Events] | [provider: 'twitch', event: StreamElements.Event.Provider.Twitch.Events] | [provider: 'youtube', event: StreamElements.Event.Provider.YouTube.Events] | [provider: 'kick', event: StreamElements.Event.Provider.Kick.Events] | [provider: 'facebook', event: StreamElements.Event.Provider.Facebook.Events];
1925
+ event: ClientEventTuple<CustomEvents>;
1868
1926
  };
1869
1927
  type ClientStorageOptions<T> = {
1870
1928
  value: T;
@@ -1881,7 +1939,7 @@ type ClientOptions = {
1881
1939
  id?: string;
1882
1940
  debug?: boolean | (() => boolean);
1883
1941
  };
1884
- declare class Client extends EventProvider<ClientEvents> {
1942
+ declare class Client<CustomEvents = {}> extends EventProvider<ClientMapEvents<CustomEvents>> {
1885
1943
  id: string;
1886
1944
  debug: boolean;
1887
1945
  storage: useStorage<ClientStorage>;
@@ -1913,54 +1971,7 @@ declare class Client extends EventProvider<ClientEvents> {
1913
1971
  */
1914
1972
  emote: number;
1915
1973
  };
1916
- on<K extends keyof ClientEvents>(eventName: K, callback: (this: Client, ...args: ClientEvents[K]) => void): this;
1917
- }
1918
-
1919
- type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
1920
- [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
1921
- }[Keys];
1922
-
1923
- interface ButtonOptions {
1924
- field: string | ((field: string, value: string | boolean | number) => boolean);
1925
- template?: string;
1926
- name?: string;
1927
- value?: string;
1928
- run: (this: Client | undefined, field: string, value: string | boolean | number) => void;
1929
- }
1930
- /**
1931
- * Represents a button action that can be triggered by custom fields in StreamElements.
1932
- * The button can be configured with a template and a name, and it will execute a specified function when triggered.
1933
- * @example
1934
- * ```javascript
1935
- * const button = new Button({
1936
- * field: (field, value) => field.startsWith('message-') && field.split('-')[1],
1937
- * template: 'message-{role}',
1938
- * // name: '[CAP={role}] role message',
1939
- * name: 'Generate {role} message',
1940
- * run(field, value) {
1941
- * console.log(`Button ${field} was clicked with value: ${value}`);
1942
- * }
1943
- * })
1944
- *
1945
- * const field = button.generate([{ role: 'broadcaster' }, { role: 'moderator' }]);
1946
- * // This will create buttons with fields "message-broadcaster" and "message-moderator" and names "Generate broadcaster message" and "Generate moderator message".
1947
- * // field['message-broadcaster'] => { type: 'button', label: 'Generate broadcaster message' }
1948
- * // field['message-moderator'] => { type: 'button', label: 'Generate moderator message' }
1949
- *
1950
- * // When a custom field with the name "message-broadcaster" or "message-moderator" is triggered, the run function will be called with the field and value.
1951
- * ```
1952
- */
1953
- declare class Button {
1954
- field: ButtonOptions['field'];
1955
- template: string;
1956
- name: string;
1957
- value: string;
1958
- run: ButtonOptions['run'];
1959
- constructor(options: ButtonOptions);
1960
- generate(values: Array<Record<string, string | number>>): Record<string, StreamElements.CustomField.Schema>;
1961
- parse(field: string, value: string | boolean | number): Button;
1962
- remove(): void;
1963
- static execute(field: string, value: string | boolean | number): boolean;
1974
+ on<K extends keyof ClientMapEvents<CustomEvents>>(eventName: K, callback: (this: Client<CustomEvents>, ...args: ClientMapEvents<CustomEvents>[K]) => void): this;
1964
1975
  }
1965
1976
 
1966
1977
  interface Theme {
@@ -2742,7 +2753,7 @@ declare class EventHelper {
2742
2753
  * @param detail - The event detail object received from the StreamElements event.
2743
2754
  * @returns An object containing the provider and the original event data.
2744
2755
  */
2745
- parseProvider(detail: StreamElements.Event.onEventReceived, overrideProvider?: Provider$1): ClientEvents$1;
2756
+ parseProvider(detail: StreamElements.Event.onEventReceived, overrideProvider?: Provider$1): ClientEvents;
2746
2757
  }
2747
2758
 
2748
2759
  type Modifier = (value: string, param: string | null | undefined, values: {
@@ -3490,7 +3501,7 @@ declare function onWidgetLoad(fields: Record<string, StreamElements.CustomField.
3490
3501
  * @param session - The session data to be included in the event.
3491
3502
  * @returns A Promise that resolves to the simulated onSessionUpdate event data.
3492
3503
  */
3493
- declare function onSessionUpdate(session?: StreamElements.Session.Data, update?: ClientEvents$1): Promise<StreamElements.Event.onSessionUpdate>;
3504
+ declare function onSessionUpdate(session?: StreamElements.Session.Data, update?: ClientEvents): Promise<StreamElements.Event.onSessionUpdate>;
3494
3505
  /**
3495
3506
  * Simulates the onEventReceived event for a widget.
3496
3507
  * @param provider - The provider of the event (default is 'random').
@@ -3678,7 +3689,7 @@ declare const main: {
3678
3689
  declare global {
3679
3690
  interface Window {
3680
3691
  Tixyel: typeof main;
3681
- client: InstanceType<typeof main.Client> | undefined;
3692
+ client: Client | undefined;
3682
3693
  ComfyJS?: ComfyJSInstance;
3683
3694
  }
3684
3695
  interface WindowEventMap {
@@ -3687,9 +3698,9 @@ declare global {
3687
3698
  onEventReceived: CustomEvent<StreamElements.Event.onEventReceived>;
3688
3699
  }
3689
3700
  const Tixyel: typeof main;
3690
- let client: InstanceType<typeof main.Client> | undefined;
3701
+ let client: Client | undefined;
3691
3702
  const SE_API: StreamElements.SE_API;
3692
3703
  }
3693
3704
 
3694
3705
  export { Alejo, Button, Command, EventProvider, StreamElements, StreamElementsEvents, Twitch, TwitchEvents, YoutubeEvents, main as default, useComfyJs, useLogger, useQueue, useStorage };
3695
- export type { BttvEmote, ClientEvents$1 as ClientEvents, Emoji, Emote, FfzEmote, JSONObject, JSONPrimitive, JSONSerializable, MapNumberValuesToString, NumberAsString, PathValue, Provider$1 as Provider, RequireAtLeastOne, SeventvEmote, TwitchEmote };
3706
+ export type { BttvEmote, ClientCustomEventPayload, ClientCustomProviderEvents, ClientEventTuple, ClientEvents, ClientProviderEvents, Emoji, Emote, FfzEmote, JSONObject, JSONPrimitive, JSONSerializable, MapNumberValuesToString, NumberAsString, PathValue, Provider$1 as Provider, RequireAtLeastOne, SeventvEmote, TwitchEmote };