11import { Firebot } from ".." ;
22
3- type BaseParameter = {
3+ export type BaseParameter = {
4+ /**
5+ * The title of the parameter
6+ * Supports markdown
7+ */
48 title : string ;
9+ /**
10+ * The description of the parameter
11+ * Supports markdown
12+ */
513 description ?: string ;
14+ /**
15+ * @deprecated use `title` and `description` instead
16+ */
17+ secondaryDescription ?: string ;
18+ /**
19+ * Shown under the parameter as muted text
20+ * Supports markdown
21+ */
622 tip ?: string ;
723 showBottomHr ?: boolean ;
824 validation ?: {
925 required ?: boolean ;
1026 } ;
1127} ;
1228
13- type StringParameter = BaseParameter & {
29+ export type StringParameter = BaseParameter & {
1430 type : "string" ;
1531 useTextArea ?: boolean ;
1632 default : string ;
1733} ;
1834
19- type PasswordParameter = BaseParameter & {
35+ export type PasswordParameter = BaseParameter & {
2036 type : "password" ;
2137 default : string ;
2238} ;
2339
24- type BooleanParameter = BaseParameter & {
40+ export type BooleanParameter = BaseParameter & {
2541 type : "boolean" ;
2642 default : boolean ;
2743} ;
2844
29- type NumberParameter = BaseParameter & {
45+ export type NumberParameter = BaseParameter & {
3046 type : "number" ;
3147 placeholder ?: string ;
3248 default : number ;
@@ -36,13 +52,18 @@ type NumberParameter = BaseParameter & {
3652 } ;
3753} ;
3854
39- type EnumParameter = BaseParameter & {
55+ export type EnumParameter < G = string | number > = BaseParameter & {
4056 type : "enum" ;
41- options : Array < string | number > ;
42- default : string | number ;
57+ options : Array < G > ;
58+ default : G | undefined ;
59+ searchable ?: boolean ;
60+ /**
61+ * Only used if `searchable` is true
62+ */
63+ placeholder ?: string ;
4364} ;
4465
45- type FilepathParameter = BaseParameter & {
66+ export type FilepathParameter = BaseParameter & {
4667 type : "filepath" ;
4768 fileOptions ?: {
4869 directoryOnly : boolean ;
@@ -55,25 +76,25 @@ type FilepathParameter = BaseParameter & {
5576 } ;
5677} ;
5778
58- type EffectListParameter = BaseParameter & {
79+ export type EffectListParameter = BaseParameter & {
5980 type : "effectlist" ;
6081} ;
6182
62- type DiscordChannelWebhookParameter = BaseParameter & {
83+ export type DiscordChannelWebhookParameter = BaseParameter & {
6384 type : "discord-channel-webhooks" ;
6485} ;
6586
66- type CurrencySelectParameter = BaseParameter & {
87+ export type CurrencySelectParameter = BaseParameter & {
6788 type : "currency-select" ;
6889 default ?: string ;
6990} ;
7091
71- type ChatterSelectParameter = BaseParameter & {
92+ export type ChatterSelectParameter = BaseParameter & {
7293 type : "chatter-select" ;
7394 default ?: "Bot" | "Streamer" ;
7495} ;
7596
76- type EditableListParameter = BaseParameter & {
97+ export type EditableListParameter = BaseParameter & {
7798 type : "editable-list" ;
7899 default ?: string [ ] ;
79100 settings : {
@@ -85,12 +106,14 @@ type EditableListParameter = BaseParameter & {
85106 } ;
86107} ;
87108
88- type MultiselectParameter = BaseParameter & {
109+ export type MultiselectParameter <
110+ T extends string | number = string | number
111+ > = BaseParameter & {
89112 type : "multiselect" ;
90- default ?: string [ ] | number [ ] ;
113+ default ?: T [ ] ;
91114 settings : {
92115 options : Array < {
93- id : string | number ;
116+ id : T ;
94117 name : string ;
95118 } > ;
96119 } ;
@@ -104,7 +127,7 @@ export type RolePercentageParameterValue = {
104127 } > ;
105128} ;
106129
107- type RolePercentagesParameter = BaseParameter & {
130+ export type RolePercentagesParameter = BaseParameter & {
108131 type : "role-percentages" ;
109132 default ?: RolePercentageParameterValue ;
110133} ;
@@ -117,7 +140,7 @@ export type RoleNumberParameterValue = {
117140 } > ;
118141} ;
119142
120- type RoleNumberParameter = BaseParameter & {
143+ export type RoleNumberParameter = BaseParameter & {
121144 type : "role-numbers" ;
122145 default ?: RoleNumberParameterValue ;
123146 settings : {
@@ -128,6 +151,42 @@ type RoleNumberParameter = BaseParameter & {
128151 } ;
129152} ;
130153
154+ export type ButtonParameter = BaseParameter & {
155+ type : "button" ;
156+ /**
157+ * The event name that will be sent to the backend when the button is clicked
158+ */
159+ backendEventName : string ;
160+ buttonText : string ;
161+ size ?: "extraSmall" | "small" | "large" ;
162+ buttonType ?:
163+ | "default"
164+ | "primary"
165+ | "success"
166+ | "info"
167+ | "warning"
168+ | "danger"
169+ | "link" ;
170+ tooltip ?: string ;
171+ tooltipPlacement ?:
172+ | "top"
173+ | "top-left"
174+ | "top-right"
175+ | "bottom"
176+ | "bottom-left"
177+ | "bottom-right"
178+ | "left"
179+ | "left-top"
180+ | "left-bottom"
181+ | "right"
182+ | "right-top"
183+ | "right-bottom" ;
184+ } ;
185+
186+ export type UnknownParameter = BaseParameter & {
187+ [ key : string ] : unknown ;
188+ } ;
189+
131190type FirebotParameter =
132191 | StringParameter
133192 | PasswordParameter
@@ -141,22 +200,29 @@ type FirebotParameter =
141200 | EditableListParameter
142201 | MultiselectParameter
143202 | RolePercentagesParameter
144- | RoleNumberParameter ;
203+ | RoleNumberParameter
204+ | ButtonParameter
205+ | UnknownParameter ;
145206
146- type DefaultParametersConfig < P > = {
207+ export type ParametersConfig < P > = {
147208 [ K in keyof P ] : P [ K ] extends string
148209 ?
149210 | StringParameter
150211 | PasswordParameter
151212 | FilepathParameter
152213 | ChatterSelectParameter
153214 | CurrencySelectParameter
215+ | EnumParameter < string >
154216 : P [ K ] extends number
155- ? NumberParameter
217+ ? NumberParameter | EnumParameter < number >
156218 : P [ K ] extends boolean
157- ? BooleanParameter
158- : P [ K ] extends Array < string > | Array < number >
159- ? EnumParameter | MultiselectParameter | EditableListParameter
219+ ? BooleanParameter | EnumParameter < boolean >
220+ : P [ K ] extends Array < string >
221+ ? MultiselectParameter < string > | EditableListParameter
222+ : P [ K ] extends Array < number >
223+ ? MultiselectParameter < number >
224+ : P [ K ] extends void | undefined | null
225+ ? ButtonParameter
160226 : P [ K ] extends RolePercentageParameterValue
161227 ? RolePercentagesParameter
162228 : P [ K ] extends RoleNumberParameterValue
@@ -169,11 +235,11 @@ type DefaultParametersConfig<P> = {
169235type FirebotParamCategory < ParamConfig extends Record < string , unknown > > = {
170236 title : string ;
171237 sortRank ?: number ;
172- settings : DefaultParametersConfig < ParamConfig > ;
238+ settings : ParametersConfig < ParamConfig > ;
173239} ;
174240
175241export type FirebotParams = Record < string , Record < string , unknown > > ;
176242
177243export type FirebotParameterCategories < Config extends FirebotParams > = {
178244 [ Category in keyof Config ] : FirebotParamCategory < Config [ Category ] > ;
179- } ;
245+ } ;
0 commit comments