@tixyel/streamelements 7.5.2 → 7.6.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/dist/index.d.ts CHANGED
@@ -7,6 +7,239 @@
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 ClientProviderEvents = {
12
+ streamelements: StreamElements.Event.Provider.StreamElements.Events;
13
+ twitch: StreamElements.Event.Provider.Twitch.Events;
14
+ youtube: StreamElements.Event.Provider.YouTube.Events;
15
+ kick: StreamElements.Event.Provider.Kick.Events;
16
+ facebook: StreamElements.Event.Provider.Facebook.Events;
17
+ };
18
+ type ClientCustomEventPayload = {
19
+ provider: 'custom';
20
+ };
21
+ type ClientCustomProviderEvents = Record<string, ClientCustomEventPayload>;
22
+ type ValidateCustomProviderEvents<CustomEvents> = CustomEvents extends Record<string, unknown> ? {
23
+ [K in keyof CustomEvents]: CustomEvents[K] extends ClientCustomEventPayload ? CustomEvents[K] : never;
24
+ } : {};
25
+ type ClientAllProviderEvents<CustomEvents = {}> = ClientProviderEvents & ValidateCustomProviderEvents<CustomEvents>;
26
+ type ClientEvents<CustomEvents = {}> = {
27
+ [K in keyof ClientAllProviderEvents<CustomEvents> & string]: {
28
+ provider: K;
29
+ data: ClientAllProviderEvents<CustomEvents>[K];
30
+ };
31
+ }[keyof ClientAllProviderEvents<CustomEvents> & string];
32
+ type ClientEventTuple<CustomEvents = {}> = {
33
+ [K in keyof ClientAllProviderEvents<CustomEvents> & string]: [
34
+ provider: K,
35
+ event: ClientAllProviderEvents<CustomEvents>[K]
36
+ ];
37
+ }[keyof ClientAllProviderEvents<CustomEvents> & string];
38
+
39
+ declare namespace StreamElementsEvents {
40
+ namespace Tip {
41
+ type Data = {
42
+ listener: 'tip-latest';
43
+ event: Event;
44
+ };
45
+ type Event = {
46
+ amount: number;
47
+ avatar: string;
48
+ name: string;
49
+ displayName: string;
50
+ providerId: string;
51
+ _id: string;
52
+ sessionTop: boolean;
53
+ type: 'tip';
54
+ originalEventName: 'tip-latest';
55
+ };
56
+ }
57
+ namespace KVStore {
58
+ type Data = {
59
+ listener: 'kvstore:update';
60
+ event: Event;
61
+ };
62
+ type Event = {
63
+ data: {
64
+ key: `customWidget.${string}`;
65
+ value: string | number | boolean | Record<string, any>;
66
+ };
67
+ };
68
+ }
69
+ namespace BotCounter {
70
+ type Data = {
71
+ listener: 'bot:counter';
72
+ event: Event;
73
+ };
74
+ type Event = {
75
+ counter: string;
76
+ value: number;
77
+ };
78
+ }
79
+ namespace AlertService {
80
+ type Data = {
81
+ listener: 'alertService:toggleSound';
82
+ event: Event;
83
+ };
84
+ type Event = {
85
+ muted: boolean;
86
+ };
87
+ }
88
+ namespace EventSkip {
89
+ type Data = {
90
+ listener: 'event:skip';
91
+ event: Event;
92
+ };
93
+ type Event = {};
94
+ }
95
+ namespace EventTest {
96
+ export type Data = {
97
+ listener: 'event:test';
98
+ event: Event;
99
+ };
100
+ export type Event = widgetButton | emulatedEvents<EventType> | Session;
101
+ type items = {
102
+ name: string;
103
+ price: number;
104
+ quantity: number;
105
+ };
106
+ type widgetButton = {
107
+ listener: 'widget-button';
108
+ field: string;
109
+ value: string | number | boolean;
110
+ };
111
+ type EventType = 'follower' | 'subscriber' | 'tip' | 'cheer' | 'raid';
112
+ type EventTier = 'prime' | '1000' | '2000' | '3000';
113
+ type emulatedEvents<T extends EventType> = {
114
+ listener: `${T}-latest`;
115
+ event: {
116
+ type: T;
117
+ name: string;
118
+ amount: number;
119
+ count: number;
120
+ message?: string;
121
+ gifted?: boolean;
122
+ bulkGifted?: boolean;
123
+ sender?: string;
124
+ subExtension?: boolean;
125
+ items: items[];
126
+ tier: EventTier;
127
+ month: string;
128
+ isTest: true;
129
+ };
130
+ };
131
+ type Session = SessionCount | SessionTotal | SessionTop | SessionGoal | SessionRecent | SessionPoints;
132
+ type SessionCount = {
133
+ listener: `${EventType}-count`;
134
+ event: {
135
+ type: EventType;
136
+ name: string;
137
+ count: number;
138
+ items: items[];
139
+ tier: EventTier;
140
+ month: string;
141
+ isTest: true;
142
+ };
143
+ };
144
+ type SessionTotal = {
145
+ listener: `${EventType}-total`;
146
+ event: {
147
+ type: EventType;
148
+ name: string;
149
+ amount: number;
150
+ count: number;
151
+ items: items[];
152
+ tier: EventTier;
153
+ month: string;
154
+ isTest: true;
155
+ };
156
+ };
157
+ type SessionTop = {
158
+ listener: `${EventType}-top`;
159
+ event: {
160
+ type: EventType;
161
+ name: string;
162
+ amount: number;
163
+ count: number;
164
+ items: items[];
165
+ tier: EventTier;
166
+ month: string;
167
+ isTest: true;
168
+ };
169
+ };
170
+ type SessionGoal = {
171
+ listener: `${EventType}-goal`;
172
+ event: {
173
+ type: EventType;
174
+ name: string;
175
+ amount: number;
176
+ count: number;
177
+ items: items[];
178
+ tier: EventTier;
179
+ month: string;
180
+ isTest: true;
181
+ };
182
+ };
183
+ type SessionRecent = {
184
+ listener: `${EventType}-recent`;
185
+ event: {
186
+ event: SessionRecentEvent[];
187
+ };
188
+ };
189
+ type SessionRecentEvent = {
190
+ type: EventType;
191
+ name: string;
192
+ amount: number;
193
+ count: number;
194
+ tier: EventTier;
195
+ isTest: true;
196
+ };
197
+ type SessionPoints = {
198
+ listener: `${EventType}-points`;
199
+ event: {
200
+ type: EventType;
201
+ name: string;
202
+ amount: number;
203
+ count: number;
204
+ items: items[];
205
+ tier: EventTier;
206
+ month: string;
207
+ isTest: true;
208
+ };
209
+ };
210
+ export {};
211
+ }
212
+ interface BaseEvent {
213
+ provider: Provider$1;
214
+ flagged: boolean;
215
+ channel: string;
216
+ createdAt: string;
217
+ _id: string;
218
+ expiresAt: string;
219
+ updatedAt: string;
220
+ activityId: string;
221
+ sessionEventsCount: number;
222
+ isMock?: boolean;
223
+ }
224
+ namespace Event {
225
+ type Data = {
226
+ listener: 'event';
227
+ event: Event;
228
+ };
229
+ type Event = Tip;
230
+ interface Tip extends BaseEvent {
231
+ type: 'tip';
232
+ data: {
233
+ amount: string;
234
+ currency: string;
235
+ username: string;
236
+ message: string;
237
+ avatar: string;
238
+ };
239
+ }
240
+ }
241
+ }
242
+
10
243
  type TwitchEmote = {
11
244
  type: 'twitch';
12
245
  name: string;
@@ -1385,368 +1618,80 @@ declare namespace StreamElements {
1385
1618
  amount: number;
1386
1619
  };
1387
1620
  'tip-alltime-top-donation': {
1388
- name: string;
1389
- amount: number;
1390
- };
1391
- 'tip-session-top-donator': {
1392
- name: string;
1393
- amount: number;
1394
- };
1395
- 'tip-weekly-top-donator': {
1396
- name: string;
1397
- amount: number;
1398
- };
1399
- 'tip-monthly-top-donator': {
1400
- name: string;
1401
- amount: number;
1402
- };
1403
- 'tip-alltime-top-donator': {
1404
- name: string;
1405
- amount: number;
1406
- };
1407
- 'tip-session': {
1408
- amount: number;
1409
- };
1410
- 'tip-week': {
1411
- amount: number;
1412
- };
1413
- 'tip-month': {
1414
- amount: number;
1415
- };
1416
- 'tip-total': {
1417
- amount: number;
1418
- };
1419
- 'tip-count': {
1420
- count: number;
1421
- };
1422
- 'tip-goal': {
1423
- amount: number;
1424
- };
1425
- 'tip-recent': {
1426
- name: string;
1427
- amount: number;
1428
- createdAt: string;
1429
- }[];
1430
- }
1431
- interface Merch {
1432
- 'merch-latest': {
1433
- name: string;
1434
- amount: number;
1435
- items: any[];
1436
- };
1437
- 'merch-goal-orders': {
1438
- amount: number;
1439
- };
1440
- 'merch-goal-items': {
1441
- amount: number;
1442
- };
1443
- 'merch-goal-total': {
1444
- amount: number;
1445
- };
1446
- 'merch-recent': {
1447
- name: string;
1448
- }[];
1449
- }
1450
- interface Purchase {
1451
- 'purchase-latest': {
1452
- name: string;
1453
- amount: number;
1454
- items: any[];
1455
- avatar: string;
1456
- message: string;
1457
- };
1458
- }
1459
- }
1460
- }
1461
-
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;
1469
- };
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];
1490
-
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;
1621
+ name: string;
1622
+ amount: number;
1581
1623
  };
1582
- };
1583
- type Session = SessionCount | SessionTotal | SessionTop | SessionGoal | SessionRecent | SessionPoints;
1584
- type SessionCount = {
1585
- listener: `${EventType}-count`;
1586
- event: {
1587
- type: EventType;
1624
+ 'tip-session-top-donator': {
1588
1625
  name: string;
1589
- count: number;
1590
- items: items[];
1591
- tier: EventTier;
1592
- month: string;
1593
- isTest: true;
1626
+ amount: number;
1594
1627
  };
1595
- };
1596
- type SessionTotal = {
1597
- listener: `${EventType}-total`;
1598
- event: {
1599
- type: EventType;
1628
+ 'tip-weekly-top-donator': {
1600
1629
  name: string;
1601
1630
  amount: number;
1602
- count: number;
1603
- items: items[];
1604
- tier: EventTier;
1605
- month: string;
1606
- isTest: true;
1607
1631
  };
1608
- };
1609
- type SessionTop = {
1610
- listener: `${EventType}-top`;
1611
- event: {
1612
- type: EventType;
1632
+ 'tip-monthly-top-donator': {
1613
1633
  name: string;
1614
1634
  amount: number;
1615
- count: number;
1616
- items: items[];
1617
- tier: EventTier;
1618
- month: string;
1619
- isTest: true;
1620
1635
  };
1621
- };
1622
- type SessionGoal = {
1623
- listener: `${EventType}-goal`;
1624
- event: {
1625
- type: EventType;
1636
+ 'tip-alltime-top-donator': {
1626
1637
  name: string;
1627
1638
  amount: number;
1639
+ };
1640
+ 'tip-session': {
1641
+ amount: number;
1642
+ };
1643
+ 'tip-week': {
1644
+ amount: number;
1645
+ };
1646
+ 'tip-month': {
1647
+ amount: number;
1648
+ };
1649
+ 'tip-total': {
1650
+ amount: number;
1651
+ };
1652
+ 'tip-count': {
1628
1653
  count: number;
1629
- items: items[];
1630
- tier: EventTier;
1631
- month: string;
1632
- isTest: true;
1633
1654
  };
1634
- };
1635
- type SessionRecent = {
1636
- listener: `${EventType}-recent`;
1637
- event: {
1638
- event: SessionRecentEvent[];
1655
+ 'tip-goal': {
1656
+ amount: number;
1639
1657
  };
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;
1658
+ 'tip-recent': {
1653
1659
  name: string;
1654
1660
  amount: number;
1655
- count: number;
1656
- items: items[];
1657
- tier: EventTier;
1658
- month: string;
1659
- isTest: true;
1661
+ createdAt: string;
1662
+ }[];
1663
+ }
1664
+ interface Merch {
1665
+ 'merch-latest': {
1666
+ name: string;
1667
+ amount: number;
1668
+ items: any[];
1660
1669
  };
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;
1670
+ 'merch-goal-orders': {
1671
+ amount: number;
1672
+ };
1673
+ 'merch-goal-items': {
1674
+ amount: number;
1675
+ };
1676
+ 'merch-goal-total': {
1677
+ amount: number;
1678
+ };
1679
+ 'merch-recent': {
1680
+ name: string;
1681
+ }[];
1682
+ }
1683
+ interface Purchase {
1684
+ 'purchase-latest': {
1685
+ name: string;
1686
+ amount: number;
1687
+ items: any[];
1689
1688
  avatar: string;
1689
+ message: string;
1690
1690
  };
1691
1691
  }
1692
1692
  }
1693
1693
  }
1694
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
1695
  interface CommandOptions {
1751
1696
  prefix?: string;
1752
1697
  name: string;
@@ -1842,6 +1787,14 @@ declare class EventProvider<EventMap extends Record<string, any[]> = Record<stri
1842
1787
  removeAllListeners<K extends keyof EventMap>(eventName: K): this;
1843
1788
  }
1844
1789
 
1790
+ type JSONPrimitive = string | number | boolean | null;
1791
+ type JSONSerializable = JSONPrimitive | JSONSerializable[] | {
1792
+ [k: string]: JSONSerializable | undefined;
1793
+ };
1794
+ type JSONObject = {
1795
+ [key: string]: JSONSerializable | undefined;
1796
+ };
1797
+
1845
1798
  type UseStorageEvents<T> = {
1846
1799
  load: [T | null];
1847
1800
  update: [T];
@@ -1974,6 +1927,53 @@ declare class Client<CustomEvents = {}> extends EventProvider<ClientMapEvents<Cu
1974
1927
  on<K extends keyof ClientMapEvents<CustomEvents>>(eventName: K, callback: (this: Client<CustomEvents>, ...args: ClientMapEvents<CustomEvents>[K]) => void): this;
1975
1928
  }
1976
1929
 
1930
+ type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
1931
+ [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
1932
+ }[Keys];
1933
+
1934
+ interface ButtonOptions {
1935
+ field: string | ((field: string, value: string | boolean | number) => boolean);
1936
+ template?: string;
1937
+ name?: string;
1938
+ value?: string;
1939
+ run: (this: Client | undefined, field: string, value: string | boolean | number) => void;
1940
+ }
1941
+ /**
1942
+ * Represents a button action that can be triggered by custom fields in StreamElements.
1943
+ * The button can be configured with a template and a name, and it will execute a specified function when triggered.
1944
+ * @example
1945
+ * ```javascript
1946
+ * const button = new Button({
1947
+ * field: (field, value) => field.startsWith('message-') && field.split('-')[1],
1948
+ * template: 'message-{role}',
1949
+ * // name: '[CAP={role}] role message',
1950
+ * name: 'Generate {role} message',
1951
+ * run(field, value) {
1952
+ * console.log(`Button ${field} was clicked with value: ${value}`);
1953
+ * }
1954
+ * })
1955
+ *
1956
+ * const field = button.generate([{ role: 'broadcaster' }, { role: 'moderator' }]);
1957
+ * // This will create buttons with fields "message-broadcaster" and "message-moderator" and names "Generate broadcaster message" and "Generate moderator message".
1958
+ * // field['message-broadcaster'] => { type: 'button', label: 'Generate broadcaster message' }
1959
+ * // field['message-moderator'] => { type: 'button', label: 'Generate moderator message' }
1960
+ *
1961
+ * // 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.
1962
+ * ```
1963
+ */
1964
+ declare class Button {
1965
+ field: ButtonOptions['field'];
1966
+ template: string;
1967
+ name: string;
1968
+ value: string;
1969
+ run: ButtonOptions['run'];
1970
+ constructor(options: ButtonOptions);
1971
+ generate(values: Array<Record<string, string | number>>): Record<string, StreamElements.CustomField.Schema>;
1972
+ parse(field: string, value: string | boolean | number): Button;
1973
+ remove(): void;
1974
+ static execute(field: string, value: string | boolean | number): boolean;
1975
+ }
1976
+
1977
1977
  interface Theme {
1978
1978
  color?: string;
1979
1979
  background?: string;
@@ -3652,6 +3652,30 @@ declare class useComms<T extends MessageMap> extends EventProvider<BaseEvents<T>
3652
3652
  on<K extends keyof BaseEvents<T>>(eventName: K, callback: (this: useComms<T>, ...args: BaseEvents<T>[K]) => void): this;
3653
3653
  }
3654
3654
 
3655
+ declare const usedClients: Client[];
3656
+ declare const usedStorages: Array<useStorage<any>>;
3657
+ declare const usedComms: Array<useComms<any>>;
3658
+ declare const usedCommands: Command[];
3659
+ declare const usedButtons: Button[];
3660
+ declare const fakeUserPools: FakeUserPool[];
3661
+
3662
+ declare const internals_fakeUserPools: typeof fakeUserPools;
3663
+ declare const internals_usedButtons: typeof usedButtons;
3664
+ declare const internals_usedClients: typeof usedClients;
3665
+ declare const internals_usedCommands: typeof usedCommands;
3666
+ declare const internals_usedComms: typeof usedComms;
3667
+ declare const internals_usedStorages: typeof usedStorages;
3668
+ declare namespace internals {
3669
+ export {
3670
+ internals_fakeUserPools as fakeUserPools,
3671
+ internals_usedButtons as usedButtons,
3672
+ internals_usedClients as usedClients,
3673
+ internals_usedCommands as usedCommands,
3674
+ internals_usedComms as usedComms,
3675
+ internals_usedStorages as usedStorages,
3676
+ };
3677
+ }
3678
+
3655
3679
  declare const main: {
3656
3680
  SeAPI: Promise<StreamElements.SE_API>;
3657
3681
  Client: typeof Client;
@@ -3674,13 +3698,7 @@ declare const main: {
3674
3698
  multistream: {
3675
3699
  useComfyJs: typeof useComfyJs;
3676
3700
  };
3677
- internal: {
3678
- usedStorages: useStorage<any>[];
3679
- usedComms: useComms<any>[];
3680
- usedCommands: Command[];
3681
- usedButtons: Button[];
3682
- fakeUserPools: FakeUserPool[];
3683
- };
3701
+ internal: typeof internals;
3684
3702
  pronouns: {
3685
3703
  Alejo: typeof Alejo;
3686
3704
  };
@@ -3689,7 +3707,6 @@ declare const main: {
3689
3707
  declare global {
3690
3708
  interface Window {
3691
3709
  Tixyel: typeof main;
3692
- client: Client | undefined;
3693
3710
  ComfyJS?: ComfyJSInstance;
3694
3711
  }
3695
3712
  interface WindowEventMap {
@@ -3698,7 +3715,6 @@ declare global {
3698
3715
  onEventReceived: CustomEvent<StreamElements.Event.onEventReceived>;
3699
3716
  }
3700
3717
  const Tixyel: typeof main;
3701
- let client: Client | undefined;
3702
3718
  const SE_API: StreamElements.SE_API;
3703
3719
  }
3704
3720