2
2
ClientMessage ,
3
3
ClientLimitedMessageComponent ,
4
4
type ClientBuildableMessageComponent ,
5
- type ClientTypedMessageComponent
5
+ type ClientTypedMessageComponent ,
6
+ type TemplateComponent
6
7
} from "../types.js" ;
7
8
import type { AtLeastOne , XOR } from "../utils" ;
8
9
@@ -73,15 +74,7 @@ export class Template extends ClientMessage {
73
74
/**
74
75
* The components of the template
75
76
*/
76
- readonly components ?: Array <
77
- NonNullable <
78
- | HeaderComponent
79
- | BodyComponent
80
- | ButtonComponent
81
- | CarouselComponent
82
- | LTOComponent
83
- >
84
- > ;
77
+ readonly components ?: Array < NonNullable < TemplateComponent > > ;
85
78
86
79
/**
87
80
* @override
@@ -102,13 +95,7 @@ export class Template extends ClientMessage {
102
95
constructor (
103
96
name : string ,
104
97
language : string | Language ,
105
- ...components : (
106
- | HeaderComponent
107
- | BodyComponent
108
- | ButtonComponent
109
- | CarouselComponent
110
- | LTOComponent
111
- ) [ ]
98
+ ...components : TemplateComponent [ ]
112
99
) {
113
100
super ( ) ;
114
101
this . name = name ;
@@ -123,7 +110,7 @@ export class Template extends ClientMessage {
123
110
} ;
124
111
this . components = components
125
112
. map ( ( cmpt ) => cmpt . _build ( pointers ) )
126
- . filter ( ( e ) => ! ! e ) ;
113
+ . filter ( ( e ) => ! ! e ) as NonNullable < TemplateComponent > [ ] ;
127
114
}
128
115
}
129
116
@@ -258,9 +245,7 @@ export class DateTime implements ClientTypedMessageComponent {
258
245
*
259
246
* @group Template
260
247
*/
261
- export abstract class ButtonComponent
262
- implements ClientBuildableMessageComponent
263
- {
248
+ export abstract class ButtonComponent implements TemplateComponent {
264
249
/**
265
250
* The type of the component
266
251
*/
@@ -594,7 +579,7 @@ export class SkipButtonComponent extends ButtonComponent {
594
579
*
595
580
* @group Template
596
581
*/
597
- export class HeaderComponent implements ClientBuildableMessageComponent {
582
+ export class HeaderComponent implements TemplateComponent {
598
583
/**
599
584
* The type of the component
600
585
*/
@@ -717,7 +702,7 @@ export class HeaderParameter {
717
702
*
718
703
* @group Template
719
704
*/
720
- export class BodyComponent implements ClientBuildableMessageComponent {
705
+ export class BodyComponent implements TemplateComponent {
721
706
/**
722
707
* The type of the component
723
708
*/
@@ -817,7 +802,7 @@ export class BodyParameter {
817
802
*/
818
803
export class CarouselComponent
819
804
extends ClientLimitedMessageComponent < CarouselCard , 10 >
820
- implements ClientBuildableMessageComponent
805
+ implements TemplateComponent
821
806
{
822
807
/**
823
808
* The type of the component
@@ -910,7 +895,7 @@ export class CarouselCard implements ClientBuildableMessageComponent {
910
895
*
911
896
* @group Template
912
897
*/
913
- export class LTOComponent implements ClientBuildableMessageComponent {
898
+ export class LTOComponent implements TemplateComponent {
914
899
/**
915
900
* The type of the component
916
901
*/
0 commit comments