@automattic/jetpack-shared-extension-utils 0.16.4 → 0.17.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.
@@ -0,0 +1,161 @@
1
+ export type Plan = {
2
+ product_id: number;
3
+ product_name: string;
4
+ product_slug: string;
5
+ };
6
+ // AI Assistant feature props
7
+ export type UpgradeTypeProp = 'vip' | 'default';
8
+
9
+ export type TierUnlimitedProps = {
10
+ slug: 'ai-assistant-tier-unlimited';
11
+ limit: 999999999 | 3000;
12
+ value: 1;
13
+ readableLimit: string;
14
+ };
15
+
16
+ export type TierFreeProps = {
17
+ slug: 'ai-assistant-tier-free';
18
+ limit: 20;
19
+ value: 0;
20
+ };
21
+
22
+ export type Tier100Props = {
23
+ slug: 'ai-assistant-tier-100';
24
+ limit: 100;
25
+ value: 100;
26
+ };
27
+
28
+ export type Tier200Props = {
29
+ slug: 'ai-assistant-tier-200';
30
+ limit: 200;
31
+ value: 200;
32
+ };
33
+
34
+ export type Tier500Props = {
35
+ slug: 'ai-assistant-tier-500';
36
+ limit: 500;
37
+ value: 500;
38
+ };
39
+
40
+ export type Tier750Props = {
41
+ slug: 'ai-assistant-tier-750';
42
+ limit: 750;
43
+ value: 750;
44
+ };
45
+
46
+ export type Tier1000Props = {
47
+ slug: 'ai-assistant-tier-1000';
48
+ limit: 1000;
49
+ value: 1000;
50
+ };
51
+
52
+ export type TierProp = {
53
+ slug: TierSlugProp;
54
+ limit: TierLimitProp;
55
+ value: TierValueProp;
56
+ readableLimit?: string;
57
+ };
58
+
59
+ export type TierLimitProp =
60
+ | TierUnlimitedProps[ 'limit' ]
61
+ | TierFreeProps[ 'limit' ]
62
+ | Tier100Props[ 'limit' ]
63
+ | Tier200Props[ 'limit' ]
64
+ | Tier500Props[ 'limit' ]
65
+ | Tier750Props[ 'limit' ]
66
+ | Tier1000Props[ 'limit' ];
67
+
68
+ export type TierSlugProp =
69
+ | TierUnlimitedProps[ 'slug' ]
70
+ | TierFreeProps[ 'slug' ]
71
+ | Tier100Props[ 'slug' ]
72
+ | Tier200Props[ 'slug' ]
73
+ | Tier500Props[ 'slug' ]
74
+ | Tier750Props[ 'slug' ]
75
+ | Tier1000Props[ 'slug' ];
76
+
77
+ export type TierValueProp =
78
+ | TierUnlimitedProps[ 'value' ]
79
+ | TierFreeProps[ 'value' ]
80
+ | Tier100Props[ 'value' ]
81
+ | Tier200Props[ 'value' ]
82
+ | Tier500Props[ 'value' ]
83
+ | Tier750Props[ 'value' ]
84
+ | Tier1000Props[ 'value' ];
85
+
86
+ export type FeatureControl = {
87
+ enabled: boolean;
88
+ 'min-jetpack-version': string;
89
+ [ key: string ]: FeatureControl | boolean | string;
90
+ };
91
+
92
+ export type FeaturesControl = { [ key: string ]: FeatureControl };
93
+
94
+ export type AiFeatureProps = {
95
+ hasFeature: boolean;
96
+ isOverLimit: boolean;
97
+ requestsCount: number;
98
+ requestsLimit: number;
99
+ requireUpgrade: boolean;
100
+ errorMessage?: string;
101
+ errorCode?: string;
102
+ upgradeType: UpgradeTypeProp;
103
+ currentTier?: TierProp;
104
+ usagePeriod?: {
105
+ currentStart: string;
106
+ nextStart: string;
107
+ requestsCount: number;
108
+ };
109
+ nextTier?: TierProp | null;
110
+ tierPlansEnabled?: boolean;
111
+ costs?: {
112
+ [ key: string ]: {
113
+ [ key: string ]: number;
114
+ };
115
+ };
116
+ featuresControl?: FeaturesControl;
117
+ };
118
+
119
+ // Type used in the `wordpress-com/plans` store.
120
+ export type AiFeatureStateProps = AiFeatureProps & {
121
+ _meta?: {
122
+ isRequesting: boolean;
123
+ asyncRequestCountdown: number;
124
+ asyncRequestTimerId: number;
125
+ };
126
+ };
127
+
128
+ export type PlanStateProps = {
129
+ plans: Array< Plan >;
130
+ features: {
131
+ aiAssistant?: AiFeatureStateProps;
132
+ };
133
+ };
134
+
135
+ /*
136
+ * `sites/$site/ai-assistant-feature` endpoint response body props
137
+ */
138
+ export type SiteAIAssistantFeatureEndpointResponseProps = {
139
+ 'has-feature': boolean;
140
+ 'is-over-limit': boolean;
141
+ 'requests-count': number;
142
+ 'requests-limit': number;
143
+ 'usage-period': {
144
+ 'current-start': string;
145
+ 'next-start': string;
146
+ 'requests-count': number;
147
+ };
148
+ 'site-require-upgrade': boolean;
149
+ 'error-message'?: string;
150
+ 'error-code'?: string;
151
+ 'upgrade-type': UpgradeTypeProp;
152
+ 'current-tier': TierProp;
153
+ 'tier-plans': Array< TierProp >;
154
+ 'next-tier'?: TierProp | null;
155
+ costs?: {
156
+ [ key: string ]: {
157
+ [ key: string ]: number;
158
+ };
159
+ };
160
+ 'features-control'?: FeaturesControl;
161
+ };