@oxy.so/contracts 4.23.0 → 4.25.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,250 @@
1
+ /** Oxy One commercial catalogue. Source: website /one, approved by Nate 2026-10-17.
2
+ * Display terms do not grant access: fulfillment requires verified provider evidence. */
3
+ export type PersonalPlanMode = 'individual' | 'family';
4
+ export type OneAudience = 'personal' | 'creator' | 'business';
5
+ export interface OnePlan {
6
+ name: string;
7
+ monthlyPrice: number;
8
+ monthlyCredits: number;
9
+ creditDiscount: number;
10
+ /** Proposed shared storage in GB; does not provision a backend quota. */
11
+ storageGB: number;
12
+ storagePerSeatGB?: number;
13
+ monthlySeatPrice?: number;
14
+ creditsPerSeat?: number;
15
+ }
16
+ export declare const OXY_ONE_ANNUAL_DISCOUNT = 20;
17
+ export declare const OXY_ONE_FAMILY_MEMBERS = 6;
18
+ export declare const OXY_ONE_AUDIENCE_THEMES: {
19
+ readonly personal: "one-plans-theme";
20
+ readonly creator: "one-creator-theme";
21
+ readonly business: "one-professional-theme";
22
+ };
23
+ /** Approved prices and credits; proposed storage capacities for the bundle design.
24
+ * USD minor units; credits renew monthly even on annual plans. Free 2 GB and Go 20 GB follow
25
+ * the new product direction; existing backend quotas are not changed here. */
26
+ export declare const OXY_ONE_PERSONAL_PLANS: {
27
+ readonly Free: {
28
+ readonly monthlyPrice: 0;
29
+ readonly monthlyCredits: 0;
30
+ readonly creditDiscount: 0;
31
+ readonly storageGB: 2;
32
+ };
33
+ readonly Go: {
34
+ readonly monthlyPrice: 1500;
35
+ readonly monthlyCredits: 4000;
36
+ readonly creditDiscount: 5;
37
+ readonly storageGB: 20;
38
+ };
39
+ readonly Pro: {
40
+ readonly monthlyPrice: 2999;
41
+ readonly monthlyCredits: 10000;
42
+ readonly creditDiscount: 10;
43
+ readonly storageGB: 100;
44
+ };
45
+ readonly Max: {
46
+ readonly monthlyPrice: 9900;
47
+ readonly monthlyCredits: 50000;
48
+ readonly creditDiscount: 15;
49
+ readonly storageGB: 500;
50
+ };
51
+ readonly Ultra: {
52
+ readonly monthlyPrice: 40000;
53
+ readonly monthlyCredits: 200000;
54
+ readonly creditDiscount: 20;
55
+ readonly storageGB: 2000;
56
+ };
57
+ };
58
+ /** A family quota belongs to the whole group, never multiplied by member count. */
59
+ export declare const OXY_ONE_FAMILY_PLANS: {
60
+ readonly Go: {
61
+ readonly monthlyPrice: 2500;
62
+ readonly monthlyCredits: 8000;
63
+ readonly creditDiscount: 5;
64
+ readonly storageGB: 40;
65
+ };
66
+ readonly Pro: {
67
+ readonly monthlyPrice: 4900;
68
+ readonly monthlyCredits: 20000;
69
+ readonly creditDiscount: 10;
70
+ readonly storageGB: 200;
71
+ };
72
+ readonly Max: {
73
+ readonly monthlyPrice: 16900;
74
+ readonly monthlyCredits: 100000;
75
+ readonly creditDiscount: 15;
76
+ readonly storageGB: 1000;
77
+ };
78
+ readonly Ultra: {
79
+ readonly monthlyPrice: 59900;
80
+ readonly monthlyCredits: 300000;
81
+ readonly creditDiscount: 20;
82
+ readonly storageGB: 4000;
83
+ };
84
+ };
85
+ export declare const OXY_ONE_BUSINESS_PLANS: {
86
+ readonly Go: {
87
+ readonly monthlyPrice: 3900;
88
+ readonly monthlySeatPrice: 900;
89
+ readonly monthlyCredits: 8000;
90
+ readonly creditsPerSeat: 2000;
91
+ readonly creditDiscount: 15;
92
+ readonly storageGB: 20;
93
+ readonly storagePerSeatGB: 5;
94
+ };
95
+ readonly Pro: {
96
+ readonly monthlyPrice: 9999;
97
+ readonly monthlySeatPrice: 1900;
98
+ readonly monthlyCredits: 25000;
99
+ readonly creditsPerSeat: 5000;
100
+ readonly creditDiscount: 25;
101
+ readonly storageGB: 100;
102
+ readonly storagePerSeatGB: 10;
103
+ };
104
+ readonly Max: {
105
+ readonly monthlyPrice: 19900;
106
+ readonly monthlySeatPrice: 2900;
107
+ readonly monthlyCredits: 60000;
108
+ readonly creditsPerSeat: 8000;
109
+ readonly creditDiscount: 30;
110
+ readonly storageGB: 500;
111
+ readonly storagePerSeatGB: 25;
112
+ };
113
+ readonly Ultra: {
114
+ readonly monthlyPrice: 59900;
115
+ readonly monthlySeatPrice: 4900;
116
+ readonly monthlyCredits: 200000;
117
+ readonly creditsPerSeat: 15000;
118
+ readonly creditDiscount: 35;
119
+ readonly storageGB: 2000;
120
+ readonly storagePerSeatGB: 50;
121
+ };
122
+ };
123
+ /** Verification, basic app access and model access are not subscription gates. */
124
+ export declare const OXY_ONE_CREATOR_PLANS: {
125
+ readonly Go: {
126
+ readonly monthlyPrice: 2900;
127
+ readonly monthlyCredits: 10000;
128
+ readonly creditDiscount: 10;
129
+ readonly storageGB: 20;
130
+ };
131
+ readonly Pro: {
132
+ readonly monthlyPrice: 6900;
133
+ readonly monthlyCredits: 25000;
134
+ readonly creditDiscount: 15;
135
+ readonly storageGB: 100;
136
+ };
137
+ readonly Max: {
138
+ readonly monthlyPrice: 14900;
139
+ readonly monthlyCredits: 60000;
140
+ readonly creditDiscount: 20;
141
+ readonly storageGB: 500;
142
+ };
143
+ readonly Ultra: {
144
+ readonly monthlyPrice: 49900;
145
+ readonly monthlyCredits: 250000;
146
+ readonly creditDiscount: 25;
147
+ readonly storageGB: 2000;
148
+ };
149
+ };
150
+ export declare function getOnePlans(audience: OneAudience, mode?: PersonalPlanMode): OnePlan[];
151
+ /** Each product owns its tier names; an Oxy One level selects an app subscription.
152
+ * Bundle inclusion is a proposal and does not activate product entitlements. */
153
+ export declare const OXY_ONE_APP_SUBSCRIPTIONS: {
154
+ readonly alia: {
155
+ readonly name: "Alia";
156
+ readonly tiers: {
157
+ readonly Free: null;
158
+ readonly Go: "Go";
159
+ readonly Pro: "Pro";
160
+ readonly Max: "Max";
161
+ readonly Ultra: "Ultra";
162
+ };
163
+ };
164
+ readonly mention: {
165
+ readonly name: "Mention";
166
+ readonly tiers: {
167
+ readonly Free: null;
168
+ readonly Go: "Plus";
169
+ readonly Pro: "Plus";
170
+ readonly Max: "Plus";
171
+ readonly Ultra: "Plus";
172
+ };
173
+ };
174
+ readonly mercaria: {
175
+ readonly name: "Mercaria";
176
+ readonly tiers: {
177
+ readonly Free: null;
178
+ readonly Go: "Go";
179
+ readonly Pro: "Plus";
180
+ readonly Max: "Plus";
181
+ readonly Ultra: "Ultra";
182
+ };
183
+ readonly creatorTiers: {
184
+ readonly Free: null;
185
+ readonly Go: "Creator";
186
+ readonly Pro: "Creator";
187
+ readonly Max: "Creator";
188
+ readonly Ultra: "Creator";
189
+ };
190
+ };
191
+ readonly noted: {
192
+ readonly name: "Noted";
193
+ readonly tiers: {
194
+ readonly Free: null;
195
+ readonly Go: "+";
196
+ readonly Pro: "+";
197
+ readonly Max: "+";
198
+ readonly Ultra: "+";
199
+ };
200
+ };
201
+ readonly clarity: {
202
+ readonly name: "Clarity";
203
+ readonly tiers: {
204
+ readonly Free: null;
205
+ readonly Go: null;
206
+ readonly Pro: "Plus";
207
+ readonly Max: "Plus";
208
+ readonly Ultra: "Plus";
209
+ };
210
+ };
211
+ readonly schedio: {
212
+ readonly name: "Schedio";
213
+ readonly tiers: {
214
+ readonly Free: null;
215
+ readonly Go: null;
216
+ readonly Pro: "Plus";
217
+ readonly Max: "Plus";
218
+ readonly Ultra: "Plus";
219
+ };
220
+ };
221
+ readonly inbox: {
222
+ readonly name: "Inbox";
223
+ readonly tiers: {
224
+ readonly Free: null;
225
+ readonly Go: null;
226
+ readonly Pro: "Plus";
227
+ readonly Max: "Plus";
228
+ readonly Ultra: "Plus";
229
+ };
230
+ };
231
+ readonly homiio: {
232
+ readonly name: "Homiio";
233
+ readonly tiers: {
234
+ readonly Free: null;
235
+ readonly Go: "Plus";
236
+ readonly Pro: "Plus";
237
+ readonly Max: "Plus";
238
+ readonly Ultra: "Plus";
239
+ };
240
+ };
241
+ };
242
+ /** Annual rounding follows the billable base and per-seat line items. */
243
+ export declare function onePlanQuote(plan: OnePlan, period: 'monthly' | 'annual', seats: number | undefined): {
244
+ baseMonthly: number;
245
+ seatMonthly: number | undefined;
246
+ totalMonthly: number | undefined;
247
+ totalAnnual: number | undefined;
248
+ storageGB: number | undefined;
249
+ monthlyCredits: number | undefined;
250
+ };
@@ -349,7 +349,7 @@ export declare const createUpdateRequestSchema: z.ZodObject<{
349
349
  }, "strip", z.ZodTypeAny, {
350
350
  channel: string;
351
351
  applicationId: string;
352
- platform: "ios" | "android";
352
+ platform: "android" | "ios";
353
353
  assets: {
354
354
  key: string;
355
355
  sha256: string;
@@ -376,7 +376,7 @@ export declare const createUpdateRequestSchema: z.ZodObject<{
376
376
  }, {
377
377
  channel: string;
378
378
  applicationId: string;
379
- platform: "ios" | "android";
379
+ platform: "android" | "ios";
380
380
  assets: {
381
381
  key: string;
382
382
  sha256: string;
@@ -480,11 +480,11 @@ export declare const rollbackRequestSchema: z.ZodObject<{
480
480
  platform: z.ZodEnum<["ios", "android"]>;
481
481
  }, "strip", z.ZodTypeAny, {
482
482
  applicationId: string;
483
- platform: "ios" | "android";
483
+ platform: "android" | "ios";
484
484
  runtimeVersion: string;
485
485
  }, {
486
486
  applicationId: string;
487
- platform: "ios" | "android";
487
+ platform: "android" | "ios";
488
488
  runtimeVersion: string;
489
489
  }>;
490
490
  export type RollbackRequest = z.infer<typeof rollbackRequestSchema>;
@@ -499,11 +499,11 @@ export declare const rollbackToEmbeddedRequestSchema: z.ZodObject<{
499
499
  platform: z.ZodEnum<["ios", "android"]>;
500
500
  }, "strip", z.ZodTypeAny, {
501
501
  applicationId: string;
502
- platform: "ios" | "android";
502
+ platform: "android" | "ios";
503
503
  runtimeVersion: string;
504
504
  }, {
505
505
  applicationId: string;
506
- platform: "ios" | "android";
506
+ platform: "android" | "ios";
507
507
  runtimeVersion: string;
508
508
  }>;
509
509
  export type RollbackToEmbeddedRequest = z.infer<typeof rollbackToEmbeddedRequestSchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxy.so/contracts",
3
- "version": "4.23.0",
3
+ "version": "4.25.0",
4
4
  "description": "OxyHQ API contracts — single source of truth for request/response Zod schemas and inferred types, shared by the backend and the client SDKs",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",