@daocloud-proto/leopard 0.0.1-dev29

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/fetch.pb.ts ADDED
@@ -0,0 +1,341 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ /**
8
+ * base64 encoder and decoder
9
+ * Copied and adapted from https://github.com/protobufjs/protobuf.js/blob/master/lib/base64/index.js
10
+ */
11
+ // Base64 encoding table
12
+ const b64 = new Array(64);
13
+
14
+ // Base64 decoding table
15
+ const s64 = new Array(123);
16
+
17
+ // 65..90, 97..122, 48..57, 43, 47
18
+ for (let i = 0; i < 64;)
19
+ s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;
20
+
21
+ export function b64Encode(buffer: Uint8Array, start: number, end: number): string {
22
+ let parts: string[] = null;
23
+ const chunk = [];
24
+ let i = 0, // output index
25
+ j = 0, // goto index
26
+ t; // temporary
27
+ while (start < end) {
28
+ const b = buffer[start++];
29
+ switch (j) {
30
+ case 0:
31
+ chunk[i++] = b64[b >> 2];
32
+ t = (b & 3) << 4;
33
+ j = 1;
34
+ break;
35
+ case 1:
36
+ chunk[i++] = b64[t | b >> 4];
37
+ t = (b & 15) << 2;
38
+ j = 2;
39
+ break;
40
+ case 2:
41
+ chunk[i++] = b64[t | b >> 6];
42
+ chunk[i++] = b64[b & 63];
43
+ j = 0;
44
+ break;
45
+ }
46
+ if (i > 8191) {
47
+ (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));
48
+ i = 0;
49
+ }
50
+ }
51
+ if (j) {
52
+ chunk[i++] = b64[t];
53
+ chunk[i++] = 61;
54
+ if (j === 1)
55
+ chunk[i++] = 61;
56
+ }
57
+ if (parts) {
58
+ if (i)
59
+ parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));
60
+ return parts.join("");
61
+ }
62
+ return String.fromCharCode.apply(String, chunk.slice(0, i));
63
+ }
64
+
65
+ const invalidEncoding = "invalid encoding";
66
+
67
+ export function b64Decode(s: string): Uint8Array {
68
+ const buffer = [];
69
+ let offset = 0;
70
+ let j = 0, // goto index
71
+ t; // temporary
72
+ for (let i = 0; i < s.length;) {
73
+ let c = s.charCodeAt(i++);
74
+ if (c === 61 && j > 1)
75
+ break;
76
+ if ((c = s64[c]) === undefined)
77
+ throw Error(invalidEncoding);
78
+ switch (j) {
79
+ case 0:
80
+ t = c;
81
+ j = 1;
82
+ break;
83
+ case 1:
84
+ buffer[offset++] = t << 2 | (c & 48) >> 4;
85
+ t = c;
86
+ j = 2;
87
+ break;
88
+ case 2:
89
+ buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;
90
+ t = c;
91
+ j = 3;
92
+ break;
93
+ case 3:
94
+ buffer[offset++] = (t & 3) << 6 | c;
95
+ j = 0;
96
+ break;
97
+ }
98
+ }
99
+ if (j === 1)
100
+ throw Error(invalidEncoding);
101
+ return new Uint8Array(buffer);
102
+ }
103
+
104
+ function b64Test(s: string): boolean {
105
+ return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s);
106
+ }
107
+
108
+ export interface InitReq extends RequestInit {
109
+ pathPrefix?: string
110
+ }
111
+
112
+ export function replacer(key: any, value: any): any {
113
+ if(value && value.constructor === Uint8Array) {
114
+ return b64Encode(value, 0, value.length);
115
+ }
116
+
117
+ return value;
118
+ }
119
+
120
+ export function fetchReq<I, O>(path: string, init?: InitReq): Promise<O> {
121
+ const {pathPrefix, ...req} = init || {}
122
+
123
+ const url = pathPrefix ? `${pathPrefix}${path}` : path
124
+
125
+ return fetch(url, req).then(r => r.json().then((body: O) => {
126
+ if (!r.ok) { throw body; }
127
+ return body;
128
+ })) as Promise<O>
129
+ }
130
+
131
+ // NotifyStreamEntityArrival is a callback that will be called on streaming entity arrival
132
+ export type NotifyStreamEntityArrival<T> = (resp: T) => void
133
+
134
+ /**
135
+ * fetchStreamingRequest is able to handle grpc-gateway server side streaming call
136
+ * it takes NotifyStreamEntityArrival that lets users respond to entity arrival during the call
137
+ * all entities will be returned as an array after the call finishes.
138
+ **/
139
+ export async function fetchStreamingRequest<S, R>(path: string, callback?: NotifyStreamEntityArrival<R>, init?: InitReq) {
140
+ const {pathPrefix, ...req} = init || {}
141
+ const url = pathPrefix ?`${pathPrefix}${path}` : path
142
+ const result = await fetch(url, req)
143
+ // needs to use the .ok to check the status of HTTP status code
144
+ // http other than 200 will not throw an error, instead the .ok will become false.
145
+ // see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#
146
+ if (!result.ok) {
147
+ const resp = await result.json()
148
+ const errMsg = resp.error && resp.error.message ? resp.error.message : ""
149
+ throw new Error(errMsg)
150
+ }
151
+
152
+ if (!result.body) {
153
+ throw new Error("response doesnt have a body")
154
+ }
155
+
156
+ await result.body
157
+ .pipeThrough(new TextDecoderStream())
158
+ .pipeThrough<R>(getNewLineDelimitedJSONDecodingStream<R>())
159
+ .pipeTo(getNotifyEntityArrivalSink((e: R) => {
160
+ if (callback) {
161
+ callback(e)
162
+ }
163
+ }))
164
+
165
+ // wait for the streaming to finish and return the success respond
166
+ return
167
+ }
168
+
169
+ /**
170
+ * JSONStringStreamController represents the transform controller that's able to transform the incoming
171
+ * new line delimited json content stream into entities and able to push the entity to the down stream
172
+ */
173
+ interface JSONStringStreamController<T> extends TransformStreamDefaultController {
174
+ buf?: string
175
+ pos?: number
176
+ enqueue: (s: T) => void
177
+ }
178
+
179
+ /**
180
+ * getNewLineDelimitedJSONDecodingStream returns a TransformStream that's able to handle new line delimited json stream content into parsed entities
181
+ */
182
+ function getNewLineDelimitedJSONDecodingStream<T>(): TransformStream<string, T> {
183
+ return new TransformStream({
184
+ start(controller: JSONStringStreamController<T>) {
185
+ controller.buf = ''
186
+ controller.pos = 0
187
+ },
188
+
189
+ transform(chunk: string, controller: JSONStringStreamController<T>) {
190
+ if (controller.buf === undefined) {
191
+ controller.buf = ''
192
+ }
193
+ if (controller.pos === undefined) {
194
+ controller.pos = 0
195
+ }
196
+ controller.buf += chunk
197
+ while (controller.pos < controller.buf.length) {
198
+ if (controller.buf[controller.pos] === '\n') {
199
+ const line = controller.buf.substring(0, controller.pos)
200
+ const response = JSON.parse(line)
201
+ controller.enqueue(response.result)
202
+ controller.buf = controller.buf.substring(controller.pos + 1)
203
+ controller.pos = 0
204
+ } else {
205
+ ++controller.pos
206
+ }
207
+ }
208
+ }
209
+ })
210
+
211
+ }
212
+
213
+ /**
214
+ * getNotifyEntityArrivalSink takes the NotifyStreamEntityArrival callback and return
215
+ * a sink that will call the callback on entity arrival
216
+ * @param notifyCallback
217
+ */
218
+ function getNotifyEntityArrivalSink<T>(notifyCallback: NotifyStreamEntityArrival<T>) {
219
+ return new WritableStream<T>({
220
+ write(entity: T) {
221
+ notifyCallback(entity)
222
+ }
223
+ })
224
+ }
225
+
226
+ type Primitive = string | boolean | number;
227
+ type RequestPayload = Record<string, unknown>;
228
+ type FlattenedRequestPayload = Record<string, Primitive | Array<Primitive>>;
229
+
230
+ /**
231
+ * Checks if given value is a plain object
232
+ * Logic copied and adapted from below source:
233
+ * https://github.com/char0n/ramda-adjunct/blob/master/src/isPlainObj.js
234
+ * @param {unknown} value
235
+ * @return {boolean}
236
+ */
237
+ function isPlainObject(value: unknown): boolean {
238
+ const isObject =
239
+ Object.prototype.toString.call(value).slice(8, -1) === "Object";
240
+ const isObjLike = value !== null && isObject;
241
+
242
+ if (!isObjLike || !isObject) {
243
+ return false;
244
+ }
245
+
246
+ const proto = Object.getPrototypeOf(value);
247
+
248
+ const hasObjectConstructor =
249
+ typeof proto === "object" &&
250
+ proto.constructor === Object.prototype.constructor;
251
+
252
+ return hasObjectConstructor;
253
+ }
254
+
255
+ /**
256
+ * Checks if given value is of a primitive type
257
+ * @param {unknown} value
258
+ * @return {boolean}
259
+ */
260
+ function isPrimitive(value: unknown): boolean {
261
+ return ["string", "number", "boolean"].some(t => typeof value === t);
262
+ }
263
+
264
+ /**
265
+ * Checks if given primitive is zero-value
266
+ * @param {Primitive} value
267
+ * @return {boolean}
268
+ */
269
+ function isZeroValuePrimitive(value: Primitive): boolean {
270
+ return value === false || value === 0 || value === "";
271
+ }
272
+
273
+ /**
274
+ * Flattens a deeply nested request payload and returns an object
275
+ * with only primitive values and non-empty array of primitive values
276
+ * as per https://github.com/googleapis/googleapis/blob/master/google/api/http.proto
277
+ * @param {RequestPayload} requestPayload
278
+ * @param {String} path
279
+ * @return {FlattenedRequestPayload>}
280
+ */
281
+ function flattenRequestPayload<T extends RequestPayload>(
282
+ requestPayload: T,
283
+ path: string = ""
284
+ ): FlattenedRequestPayload {
285
+ return Object.keys(requestPayload).reduce(
286
+ (acc: T, key: string): T => {
287
+ const value = requestPayload[key];
288
+ const newPath = path ? [path, key].join(".") : key;
289
+
290
+ const isNonEmptyPrimitiveArray =
291
+ Array.isArray(value) &&
292
+ value.every(v => isPrimitive(v)) &&
293
+ value.length > 0;
294
+
295
+ const isNonZeroValuePrimitive =
296
+ isPrimitive(value) && !isZeroValuePrimitive(value as Primitive);
297
+
298
+ let objectToMerge = {};
299
+
300
+ if (isPlainObject(value)) {
301
+ objectToMerge = flattenRequestPayload(value as RequestPayload, newPath);
302
+ } else if (isNonZeroValuePrimitive || isNonEmptyPrimitiveArray) {
303
+ objectToMerge = { [newPath]: value };
304
+ }
305
+
306
+ return { ...acc, ...objectToMerge };
307
+ },
308
+ {} as T
309
+ ) as FlattenedRequestPayload;
310
+ }
311
+
312
+ /**
313
+ * Renders a deeply nested request payload into a string of URL search
314
+ * parameters by first flattening the request payload and then removing keys
315
+ * which are already present in the URL path.
316
+ * @param {RequestPayload} requestPayload
317
+ * @param {string[]} urlPathParams
318
+ * @return {string}
319
+ */
320
+ export function renderURLSearchParams<T extends RequestPayload>(
321
+ requestPayload: T,
322
+ urlPathParams: string[] = []
323
+ ): string {
324
+ const flattenedRequestPayload = flattenRequestPayload(requestPayload);
325
+
326
+ const urlSearchParams = Object.keys(flattenedRequestPayload).reduce(
327
+ (acc: string[][], key: string): string[][] => {
328
+ // key should not be present in the url path as a parameter
329
+ const value = flattenedRequestPayload[key];
330
+ if (urlPathParams.find(f => f === key)) {
331
+ return acc;
332
+ }
333
+ return Array.isArray(value)
334
+ ? [...acc, ...value.map(m => [key, m.toString()])]
335
+ : (acc = [...acc, [key, value.toString()]]);
336
+ },
337
+ [] as string[][]
338
+ );
339
+
340
+ return new URLSearchParams(urlSearchParams).toString();
341
+ }
package/package.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "@daocloud-proto/leopard",
3
+ "version":"0.0.1-dev29",
4
+ "description": "",
5
+ "author": "",
6
+ "license": "ISC"
7
+ }
@@ -0,0 +1,77 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ import * as fm from "../fetch.pb"
8
+
9
+ export enum BillingType {
10
+ PAY_AS_YOU_GO = "PAY_AS_YOU_GO",
11
+ SUBSCRIPTION_DAILY = "SUBSCRIPTION_DAILY",
12
+ SUBSCRIPTION_WEEKLY = "SUBSCRIPTION_WEEKLY",
13
+ SUBSCRIPTION_MONTHLY = "SUBSCRIPTION_MONTHLY",
14
+ SUBSCRIPTION_YEARLY = "SUBSCRIPTION_YEARLY",
15
+ }
16
+
17
+ export enum UnitType {
18
+ HOUR = "HOUR",
19
+ THOUSAND_TOKENS = "THOUSAND_TOKENS",
20
+ GB_DAY = "GB_DAY",
21
+ COMPUTE_UNIT = "COMPUTE_UNIT",
22
+ }
23
+
24
+ export type ListBillsRequest = {
25
+ start?: string
26
+ end?: string
27
+ page?: number
28
+ pageSize?: number
29
+ billId?: string
30
+ orderId?: string
31
+ resourceId?: string
32
+ billingType?: string
33
+ productName?: string
34
+ }
35
+
36
+ export type ListBillsResponse = {
37
+ items?: bill[]
38
+ pagination?: Pagination
39
+ }
40
+
41
+ export type Pagination = {
42
+ total?: number
43
+ page?: number
44
+ pageSize?: number
45
+ }
46
+
47
+ export type bill = {
48
+ username?: string
49
+ billId?: string
50
+ billingCycle?: BillingCycle
51
+ billingMonth?: string
52
+ productName?: string
53
+ resources?: Resource[]
54
+ billingType?: BillingType
55
+ unitPrice?: string
56
+ unit?: UnitType
57
+ orderId?: string
58
+ orderPrice?: string
59
+ couponPayment?: string
60
+ amountDue?: string
61
+ }
62
+
63
+ export type BillingCycle = {
64
+ startTimestamp?: string
65
+ endTimestamp?: string
66
+ }
67
+
68
+ export type Resource = {
69
+ name?: string
70
+ id?: string
71
+ }
72
+
73
+ export class Bill {
74
+ static ListBills(req: ListBillsRequest, initReq?: fm.InitReq): Promise<ListBillsResponse> {
75
+ return fm.fetchReq<ListBillsRequest, ListBillsResponse>(`/apis/leopard.io/v1alpha1/bills?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
76
+ }
77
+ }
@@ -0,0 +1,40 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ import * as fm from "../fetch.pb"
8
+
9
+ export enum Action {
10
+ AddOrUpdate = "AddOrUpdate",
11
+ Delete = "Delete",
12
+ }
13
+
14
+ export type UpdateInventoryRequest = {
15
+ action?: Action
16
+ inventory?: inventory
17
+ }
18
+
19
+ export type inventory = {
20
+ region?: string
21
+ node?: string
22
+ resources?: resource[]
23
+ }
24
+
25
+ export type resource = {
26
+ specFieldKey?: string
27
+ specFieldValue?: string
28
+ total?: number
29
+ free?: number
30
+ serial?: string
31
+ }
32
+
33
+ export type UpdateInventoryResponse = {
34
+ }
35
+
36
+ export class Inventory {
37
+ static UpdateInventory(req: UpdateInventoryRequest, initReq?: fm.InitReq): Promise<UpdateInventoryResponse> {
38
+ return fm.fetchReq<UpdateInventoryRequest, UpdateInventoryResponse>(`/v1alpha1.inventory.Inventory/UpdateInventory`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
39
+ }
40
+ }
@@ -0,0 +1,205 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ import * as fm from "../fetch.pb"
8
+
9
+ export enum OrderType {
10
+ PURCHASE = "PURCHASE",
11
+ REFUND = "REFUND",
12
+ UPGRADE = "UPGRADE",
13
+ DOWNGRADE = "DOWNGRADE",
14
+ }
15
+
16
+ export enum BillingType {
17
+ PAY_AS_YOU_GO = "PAY_AS_YOU_GO",
18
+ SUBSCRIPTION_DAILY = "SUBSCRIPTION_DAILY",
19
+ SUBSCRIPTION_WEEKLY = "SUBSCRIPTION_WEEKLY",
20
+ SUBSCRIPTION_MONTHLY = "SUBSCRIPTION_MONTHLY",
21
+ SUBSCRIPTION_YEARLY = "SUBSCRIPTION_YEARLY",
22
+ }
23
+
24
+ export enum OrderStatus {
25
+ PAID = "PAID",
26
+ PARTIAL = "PARTIAL",
27
+ REFUNDED = "REFUNDED",
28
+ }
29
+
30
+ export enum UnitType {
31
+ HOUR = "HOUR",
32
+ THOUSAND_TOKENS = "THOUSAND_TOKENS",
33
+ GB_DAY = "GB_DAY",
34
+ COMPUTE_UNIT = "COMPUTE_UNIT",
35
+ }
36
+
37
+ export enum CreateOrderStatus {
38
+ SUCCESS = "SUCCESS",
39
+ SKU_NOT_FIND = "SKU_NOT_FIND",
40
+ RESOURCE_NOT_EXIST = "RESOURCE_NOT_EXIST",
41
+ RESOURCE_EXIST = "RESOURCE_EXIST",
42
+ INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
43
+ }
44
+
45
+ export type Pagination = {
46
+ total?: number
47
+ page?: number
48
+ pageSize?: number
49
+ }
50
+
51
+ export type ListOrdersRequest = {
52
+ orderId?: string
53
+ resourceId?: string
54
+ orderType?: string
55
+ productName?: string
56
+ orderStatus?: string
57
+ start?: string
58
+ end?: string
59
+ page?: number
60
+ pageSize?: number
61
+ }
62
+
63
+ export type Orders = {
64
+ userName?: string
65
+ orderId?: string
66
+ createdAtTimestamp?: string
67
+ orderType?: OrderType
68
+ productName?: string
69
+ resources?: Resource[]
70
+ orderStatus?: OrderStatus
71
+ orderPrice?: string
72
+ amountDue?: string
73
+ }
74
+
75
+ export type ListOrdersResponse = {
76
+ items?: Orders[]
77
+ pagination?: Pagination
78
+ }
79
+
80
+ export type OrderInfo = {
81
+ orderId?: string
82
+ createdAtTimestamp?: string
83
+ orderType?: OrderType
84
+ orderStatus?: OrderStatus
85
+ orderPrice?: string
86
+ amountDue?: string
87
+ }
88
+
89
+ export type Resource = {
90
+ name?: string
91
+ id?: string
92
+ }
93
+
94
+ export type ProductInfo = {
95
+ resources?: Resource[]
96
+ productName?: string
97
+ resourceNum?: number
98
+ specification?: string
99
+ billingType?: BillingType
100
+ start?: string
101
+ end?: string
102
+ }
103
+
104
+ export type GetOrderRequest = {
105
+ id?: string
106
+ }
107
+
108
+ export type GetOrderResponse = {
109
+ orderInfo?: OrderInfo
110
+ productInfo?: ProductInfo[]
111
+ }
112
+
113
+ export type Product = {
114
+ id?: string
115
+ name?: string
116
+ }
117
+
118
+ export type GetProductsRequest = {
119
+ }
120
+
121
+ export type GetProductsResponse = {
122
+ products?: Product[]
123
+ }
124
+
125
+ export type OrderItem = {
126
+ productName?: string
127
+ skuId?: string
128
+ quantity?: number
129
+ resources?: Resource[]
130
+ }
131
+
132
+ export type CreateNewPurchaseOrderRequest = {
133
+ username?: string
134
+ userId?: string
135
+ orderItems?: OrderItem[]
136
+ }
137
+
138
+ export type CreateNewPurchaseOrderResponse = {
139
+ orderId?: string
140
+ createOrderStatus?: CreateOrderStatus
141
+ }
142
+
143
+ export type CreateQuantityChangeOrderRequest = {
144
+ username?: string
145
+ userId?: string
146
+ productName?: string
147
+ quantity?: number
148
+ resourceId?: string
149
+ }
150
+
151
+ export type CreateQuantityChangeOrderResponse = {
152
+ orderId?: string
153
+ createOrderStatus?: CreateOrderStatus
154
+ }
155
+
156
+ export type IsResourceOrderNextBillBalanceSufficientRequest = {
157
+ username?: string
158
+ userId?: string
159
+ productName?: string
160
+ resourceId?: string
161
+ }
162
+
163
+ export type IsResourceOrderNextBillBalanceSufficientResponse = {
164
+ sufficient?: boolean
165
+ }
166
+
167
+ export type GetResourceOrderInfoByResourceIDRequest = {
168
+ resourceId?: string
169
+ }
170
+
171
+ export type GetResourceOrderInfoByResourceIDResponse = {
172
+ resourceId?: string
173
+ resourceName?: string
174
+ username?: string
175
+ skuId?: string
176
+ productName?: string
177
+ billingType?: BillingType
178
+ meteringUnit?: UnitType
179
+ unitPrice?: string
180
+ quantity?: number
181
+ }
182
+
183
+ export class Order {
184
+ static ListOrders(req: ListOrdersRequest, initReq?: fm.InitReq): Promise<ListOrdersResponse> {
185
+ return fm.fetchReq<ListOrdersRequest, ListOrdersResponse>(`/apis/leopard.io/v1alpha1/orders?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
186
+ }
187
+ static GetOrder(req: GetOrderRequest, initReq?: fm.InitReq): Promise<GetOrderResponse> {
188
+ return fm.fetchReq<GetOrderRequest, GetOrderResponse>(`/apis/leopard.io/v1alpha1/orders/${req["id"]}?${fm.renderURLSearchParams(req, ["id"])}`, {...initReq, method: "GET"})
189
+ }
190
+ static GetResourceOrderInfoByResourceID(req: GetResourceOrderInfoByResourceIDRequest, initReq?: fm.InitReq): Promise<GetResourceOrderInfoByResourceIDResponse> {
191
+ return fm.fetchReq<GetResourceOrderInfoByResourceIDRequest, GetResourceOrderInfoByResourceIDResponse>(`/apis/leopard.io/v1alpha1/orders/resources-info?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
192
+ }
193
+ static GetProducts(req: GetProductsRequest, initReq?: fm.InitReq): Promise<GetProductsResponse> {
194
+ return fm.fetchReq<GetProductsRequest, GetProductsResponse>(`/apis/leopard.io/v1alpha1/orders/products?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
195
+ }
196
+ static CreateNewPurchaseOrder(req: CreateNewPurchaseOrderRequest, initReq?: fm.InitReq): Promise<CreateNewPurchaseOrderResponse> {
197
+ return fm.fetchReq<CreateNewPurchaseOrderRequest, CreateNewPurchaseOrderResponse>(`/apis/leopard.io/v1alpha1/orders/new-purchase`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
198
+ }
199
+ static CreateQuantityChangeOrder(req: CreateQuantityChangeOrderRequest, initReq?: fm.InitReq): Promise<CreateQuantityChangeOrderResponse> {
200
+ return fm.fetchReq<CreateQuantityChangeOrderRequest, CreateQuantityChangeOrderResponse>(`/apis/leopard.io/v1alpha1/orders/quantity-change`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
201
+ }
202
+ static IsResourceOrderNextBillBalanceSufficient(req: IsResourceOrderNextBillBalanceSufficientRequest, initReq?: fm.InitReq): Promise<IsResourceOrderNextBillBalanceSufficientResponse> {
203
+ return fm.fetchReq<IsResourceOrderNextBillBalanceSufficientRequest, IsResourceOrderNextBillBalanceSufficientResponse>(`/apis/leopard.io/v1alpha1/orders/is-resource-balance-sufficient`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
204
+ }
205
+ }
@@ -0,0 +1,133 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ import * as fm from "../fetch.pb"
8
+
9
+ export enum BillingType {
10
+ PAY_AS_YOU_GO = "PAY_AS_YOU_GO",
11
+ }
12
+
13
+ export enum UnitType {
14
+ HOUR = "HOUR",
15
+ THOUSAND_TOKENS = "THOUSAND_TOKENS",
16
+ GB_DAY = "GB_DAY",
17
+ COMPUTE_UNIT = "COMPUTE_UNIT",
18
+ }
19
+
20
+ export enum QuantityUnit {
21
+ EMPTY = "EMPTY",
22
+ }
23
+
24
+ export type Pagination = {
25
+ total?: number
26
+ page?: number
27
+ pageSize?: number
28
+ }
29
+
30
+ export type FilterStringArr = {
31
+ values?: string[]
32
+ }
33
+
34
+ export type ListProductSKUsRequest = {
35
+ product?: string
36
+ regionId?: string
37
+ filter?: {[key: string]: FilterStringArr}
38
+ page?: number
39
+ pageSize?: number
40
+ filterByAnd?: boolean
41
+ }
42
+
43
+ export type SkuItem = {
44
+ id?: string
45
+ saleable?: boolean
46
+ billingType?: BillingType
47
+ meteringUnit?: UnitType
48
+ quantityUnit?: QuantityUnit
49
+ price?: string
50
+ region?: string
51
+ specId?: number
52
+ specName?: string
53
+ specFields?: SpecField[]
54
+ inventory?: number
55
+ }
56
+
57
+ export type ListProductSKUsResponse = {
58
+ items?: SkuItem[]
59
+ pagination?: Pagination
60
+ }
61
+
62
+ export type GetSKURequest = {
63
+ id?: string
64
+ }
65
+
66
+ export type SpecField = {
67
+ specId?: number
68
+ key?: string
69
+ value?: string
70
+ keyName?: string
71
+ }
72
+
73
+ export type ListRegionsRequest = {
74
+ }
75
+
76
+ export type Region = {
77
+ regionId?: string
78
+ regionName?: string
79
+ }
80
+
81
+ export type ListRegionsResponse = {
82
+ items?: Region[]
83
+ }
84
+
85
+ export type GetSKUResponse = {
86
+ id?: string
87
+ saleable?: boolean
88
+ billingType?: BillingType
89
+ meteringUnit?: UnitType
90
+ quantityUnit?: QuantityUnit
91
+ price?: string
92
+ region?: string
93
+ specId?: number
94
+ specName?: string
95
+ specFields?: SpecField[]
96
+ inventory?: number
97
+ }
98
+
99
+ export type GetSKUPriceRequest = {
100
+ id?: string
101
+ }
102
+
103
+ export type GetSKUPriceResponse = {
104
+ price?: string
105
+ }
106
+
107
+ export type ListProductSpecFieldRequest = {
108
+ regionId?: string
109
+ specKey?: string
110
+ product?: string
111
+ }
112
+
113
+ export type ListProductSpecFieldResponse = {
114
+ specFields?: SpecField[]
115
+ }
116
+
117
+ export class Product {
118
+ static ListProductSKUs(req: ListProductSKUsRequest, initReq?: fm.InitReq): Promise<ListProductSKUsResponse> {
119
+ return fm.fetchReq<ListProductSKUsRequest, ListProductSKUsResponse>(`/apis/leopard.io/v1alpha1/products/skus`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
120
+ }
121
+ static GetSKU(req: GetSKURequest, initReq?: fm.InitReq): Promise<GetSKUResponse> {
122
+ return fm.fetchReq<GetSKURequest, GetSKUResponse>(`/apis/leopard.io/v1alpha1/products/skus/${req["id"]}?${fm.renderURLSearchParams(req, ["id"])}`, {...initReq, method: "GET"})
123
+ }
124
+ static GetSKUPrice(req: GetSKUPriceRequest, initReq?: fm.InitReq): Promise<GetSKUPriceResponse> {
125
+ return fm.fetchReq<GetSKUPriceRequest, GetSKUPriceResponse>(`/apis/leopard.io/v1alpha1/products/skus/${req["id"]}/price?${fm.renderURLSearchParams(req, ["id"])}`, {...initReq, method: "GET"})
126
+ }
127
+ static ListRegions(req: ListRegionsRequest, initReq?: fm.InitReq): Promise<ListRegionsResponse> {
128
+ return fm.fetchReq<ListRegionsRequest, ListRegionsResponse>(`/apis/leopard.io/v1alpha1/products/regions?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
129
+ }
130
+ static ListProductSpecFieldValues(req: ListProductSpecFieldRequest, initReq?: fm.InitReq): Promise<ListProductSpecFieldResponse> {
131
+ return fm.fetchReq<ListProductSpecFieldRequest, ListProductSpecFieldResponse>(`/apis/leopard.io/v1alpha1/products/specs?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
132
+ }
133
+ }
@@ -0,0 +1,64 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ import * as fm from "../fetch.pb"
8
+
9
+ export enum TransactionType {
10
+ Consume = "Consume",
11
+ Charge = "Charge",
12
+ }
13
+
14
+ export enum TransactionChannel {
15
+ Balance = "Balance",
16
+ Alipay = "Alipay",
17
+ Wechat = "Wechat",
18
+ }
19
+
20
+ export enum PaymentType {
21
+ Income = "Income",
22
+ Expense = "Expense",
23
+ }
24
+
25
+ export type ListTransactionsRequest = {
26
+ start?: string
27
+ end?: string
28
+ page?: number
29
+ pageSize?: number
30
+ serialNumber?: string
31
+ billingId?: string
32
+ paymentType?: string
33
+ transactionType?: string
34
+ transactionChannel?: string
35
+ }
36
+
37
+ export type ListTransactionsRequestResponse = {
38
+ items?: transaction[]
39
+ pagination?: Pagination
40
+ }
41
+
42
+ export type Pagination = {
43
+ total?: number
44
+ page?: number
45
+ pageSize?: number
46
+ }
47
+
48
+ export type transaction = {
49
+ username?: string
50
+ serialNumber?: string
51
+ transactionTimestamp?: string
52
+ paymentType?: PaymentType
53
+ transactionType?: TransactionType
54
+ transactionChannel?: TransactionChannel
55
+ amount?: string
56
+ billingId?: string
57
+ balance?: string
58
+ }
59
+
60
+ export class Transaction {
61
+ static ListTransactions(req: ListTransactionsRequest, initReq?: fm.InitReq): Promise<ListTransactionsRequestResponse> {
62
+ return fm.fetchReq<ListTransactionsRequest, ListTransactionsRequestResponse>(`/apis/leopard.io/v1alpha1/transactions?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
63
+ }
64
+ }
@@ -0,0 +1,56 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ import * as fm from "../fetch.pb"
8
+
9
+ export enum PaymentChannel {
10
+ ALIPAY = "ALIPAY",
11
+ WECHAT = "WECHAT",
12
+ }
13
+
14
+ export enum PaymentType {
15
+ QR_CODE = "QR_CODE",
16
+ REDIRECT = "REDIRECT",
17
+ }
18
+
19
+ export type BalanceRequest = {
20
+ }
21
+
22
+ export type BalanceResponse = {
23
+ balance?: string
24
+ }
25
+
26
+ export type RechargeRequest = {
27
+ paymentChannel?: PaymentChannel
28
+ amount?: string
29
+ redirectUrl?: string
30
+ }
31
+
32
+ export type RechargeResponse = {
33
+ paymentType?: PaymentType
34
+ qrCode?: string
35
+ redirectUrl?: string
36
+ }
37
+
38
+ export type UserStateRequest = {
39
+ userId?: string
40
+ }
41
+
42
+ export type UserStateResponse = {
43
+ amount?: string
44
+ }
45
+
46
+ export class Wallet {
47
+ static Balance(req: BalanceRequest, initReq?: fm.InitReq): Promise<BalanceResponse> {
48
+ return fm.fetchReq<BalanceRequest, BalanceResponse>(`/apis/leopard.io/v1alpha1/wallet/balance?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
49
+ }
50
+ static Recharge(req: RechargeRequest, initReq?: fm.InitReq): Promise<RechargeResponse> {
51
+ return fm.fetchReq<RechargeRequest, RechargeResponse>(`/apis/leopard.io/v1alpha1/wallet/recharge`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
52
+ }
53
+ static UserState(req: UserStateRequest, initReq?: fm.InitReq): Promise<UserStateResponse> {
54
+ return fm.fetchReq<UserStateRequest, UserStateResponse>(`/v1alpha1.wallet.Wallet/UserState`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
55
+ }
56
+ }