wabe 0.5.1 → 0.5.3

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/dist/index.d.ts CHANGED
@@ -65,6 +65,10 @@ declare enum AuthenticationProvider {
65
65
  declare enum SecondaryFactor {
66
66
  EmailOtp = "EmailOTP"
67
67
  }
68
+ declare enum Currency {
69
+ Eur = "eur",
70
+ Usd = "usd"
71
+ }
68
72
  /** User class */
69
73
  export type User = {
70
74
  __typename?: "User";
@@ -218,6 +222,34 @@ export type RoleAclObjectRolesAcl = {
218
222
  read: Scalars["Boolean"]["output"];
219
223
  write: Scalars["Boolean"]["output"];
220
224
  };
225
+ export type Payment = {
226
+ __typename?: "Payment";
227
+ id: Scalars["ID"]["output"];
228
+ user?: Maybe<User>;
229
+ amount: Scalars["Int"]["output"];
230
+ currency: Currency;
231
+ acl?: Maybe<PaymentAclObject>;
232
+ createdAt?: Maybe<Scalars["Date"]["output"]>;
233
+ updatedAt?: Maybe<Scalars["Date"]["output"]>;
234
+ search?: Maybe<Array<Maybe<Scalars["String"]["output"]>>>;
235
+ };
236
+ export type PaymentAclObject = {
237
+ __typename?: "PaymentACLObject";
238
+ users?: Maybe<Array<Maybe<PaymentAclObjectUsersAcl>>>;
239
+ roles?: Maybe<Array<Maybe<PaymentAclObjectRolesAcl>>>;
240
+ };
241
+ export type PaymentAclObjectUsersAcl = {
242
+ __typename?: "PaymentACLObjectUsersACL";
243
+ userId: Scalars["String"]["output"];
244
+ read: Scalars["Boolean"]["output"];
245
+ write: Scalars["Boolean"]["output"];
246
+ };
247
+ export type PaymentAclObjectRolesAcl = {
248
+ __typename?: "PaymentACLObjectRolesACL";
249
+ roleId: Scalars["String"]["output"];
250
+ read: Scalars["Boolean"]["output"];
251
+ write: Scalars["Boolean"]["output"];
252
+ };
221
253
  export type SignInWithInput = {
222
254
  authentication?: InputMaybe<SignInWithAuthenticationInput>;
223
255
  };
@@ -259,12 +291,13 @@ export type SignUpWithAuthenticationOtpInput = {
259
291
  code?: InputMaybe<Scalars["String"]["input"]>;
260
292
  };
261
293
  export type WabeSchemaScalars = "Phone";
262
- export type WabeSchemaEnums = "AuthenticationProvider" | "SecondaryFactor";
294
+ export type WabeSchemaEnums = "RoleEnum" | "AuthenticationProvider" | "SecondaryFactor" | "PaymentMode" | "PaymentReccuringInterval" | "Currency";
263
295
  export type WabeSchemaTypes = {
264
296
  User: User;
265
297
  Post: Post;
266
298
  _Session: _Session;
267
299
  Role: Role;
300
+ Payment: Payment;
268
301
  };
269
302
  export interface WabeContext<T extends WabeTypes> {
270
303
  response?: WobeResponse;
@@ -290,6 +323,7 @@ export type WhereConditional<T extends keyof WabeTypes["types"], K extends keyof
290
323
  AND?: Array<WhereType<T, K>>;
291
324
  };
292
325
  export type WhereType<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Partial<WhereAggregation<T, K>> & WhereConditional<T, K>;
326
+ export type OrderType<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Record<K, "ASC" | "DESC">;
293
327
  export interface AdapterOptions {
294
328
  databaseUrl: string;
295
329
  databaseName: string;
@@ -308,9 +342,10 @@ export interface GetObjectOptions<T extends keyof WabeTypes["types"], K extends
308
342
  context: WabeContext<any>;
309
343
  skipHooks?: boolean;
310
344
  }
311
- export interface GetObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
345
+ export interface GetObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]> {
312
346
  className: T;
313
347
  where?: WhereType<T, W>;
348
+ order?: OrderType<T, X>;
314
349
  fields: Array<K | "*">;
315
350
  offset?: number;
316
351
  first?: number;
@@ -323,12 +358,13 @@ export interface CreateObjectOptions<T extends keyof WabeTypes["types"], K exten
323
358
  fields: Array<K | "*">;
324
359
  context: WabeContext<any>;
325
360
  }
326
- export interface CreateObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
361
+ export interface CreateObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]> {
327
362
  className: T;
328
363
  data: Array<MutationData<W>>;
329
364
  fields: Array<K | "*">;
330
365
  offset?: number;
331
366
  first?: number;
367
+ order?: OrderType<T, X>;
332
368
  context: WabeContext<any>;
333
369
  }
334
370
  export interface UpdateObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
@@ -339,9 +375,10 @@ export interface UpdateObjectOptions<T extends keyof WabeTypes["types"], K exten
339
375
  fields: Array<K | "*">;
340
376
  context: WabeContext<any>;
341
377
  }
342
- export interface UpdateObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
378
+ export interface UpdateObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]> {
343
379
  className: T;
344
380
  where: WhereType<T, W>;
381
+ order?: OrderType<T, X>;
345
382
  data: MutationData<W>;
346
383
  fields: Array<K | "*">;
347
384
  offset?: number;
@@ -355,9 +392,10 @@ export interface DeleteObjectOptions<T extends keyof WabeTypes["types"], K exten
355
392
  fields: Array<K | "*">;
356
393
  context: WabeContext<any>;
357
394
  }
358
- export interface DeleteObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
395
+ export interface DeleteObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]> {
359
396
  className: T;
360
397
  where: WhereType<T, W>;
398
+ order?: OrderType<T, X>;
361
399
  fields: Array<K | "*">;
362
400
  offset?: number;
363
401
  first?: number;
@@ -373,14 +411,15 @@ export interface DatabaseAdapter {
373
411
  clearDatabase(): Promise<void>;
374
412
  count<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]>(params: CountOptions<T, K>): Promise<number>;
375
413
  getObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]>(params: GetObjectOptions<T, K>): Promise<OutputType<T, K>>;
376
- getObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: GetObjectsOptions<T, K, W>): Promise<OutputType<T, K>[]>;
414
+ getObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]>(params: GetObjectsOptions<T, K, W, X>): Promise<OutputType<T, K>[]>;
377
415
  createObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: CreateObjectOptions<T, K, W>): Promise<OutputType<T, K>>;
378
- createObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: CreateObjectsOptions<T, K, W>): Promise<OutputType<T, K>[]>;
416
+ createObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]>(params: CreateObjectsOptions<T, K, W, X>): Promise<OutputType<T, K>[]>;
379
417
  updateObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: UpdateObjectOptions<T, K, W>): Promise<OutputType<T, K>>;
380
- updateObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: UpdateObjectsOptions<T, K, W>): Promise<OutputType<T, K>[]>;
418
+ updateObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]>(params: UpdateObjectsOptions<T, K, W, X>): Promise<OutputType<T, K>[]>;
381
419
  deleteObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: DeleteObjectOptions<T, K, W>): Promise<void>;
382
- deleteObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: DeleteObjectsOptions<T, K, W>): Promise<void>;
420
+ deleteObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]>(params: DeleteObjectsOptions<T, K, W, X>): Promise<void>;
383
421
  }
422
+ export declare const buildMongoOrderQuery: <T extends unknown, K extends keyof Record<any, any>[T]>(order?: OrderType<T, K>) => Record<string, any>;
384
423
  export declare const buildMongoWhereQuery: <T extends unknown, K extends keyof Record<any, any>[T]>(where?: WhereType<T, K>) => Record<string, any>;
385
424
  export declare class MongoAdapter<T extends WabeTypes> implements DatabaseAdapter {
386
425
  options: AdapterOptions;
@@ -393,13 +432,13 @@ export declare class MongoAdapter<T extends WabeTypes> implements DatabaseAdapte
393
432
  count<U extends keyof T["types"], K extends keyof T["types"][U]>(params: CountOptions<U, K>): Promise<number>;
394
433
  clearDatabase(): Promise<void>;
395
434
  getObject<U extends keyof T["types"], K extends keyof T["types"][U]>(params: GetObjectOptions<U, K>): Promise<OutputType<U, K>>;
396
- getObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: GetObjectsOptions<U, K, W>): Promise<OutputType<U, K>[]>;
435
+ getObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>(params: GetObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
397
436
  createObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: CreateObjectOptions<U, K, W>): Promise<OutputType<U, K>>;
398
- createObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: CreateObjectsOptions<U, K, W>): Promise<OutputType<U, K>[]>;
437
+ createObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>(params: CreateObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
399
438
  updateObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: UpdateObjectOptions<U, K, W>): Promise<OutputType<U, K>>;
400
- updateObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: UpdateObjectsOptions<U, K, W>): Promise<OutputType<U, K>[]>;
439
+ updateObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>(params: UpdateObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
401
440
  deleteObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: DeleteObjectOptions<U, K, W>): Promise<void>;
402
- deleteObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: DeleteObjectsOptions<U, K, W>): Promise<void>;
441
+ deleteObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>(params: DeleteObjectsOptions<U, K, W, X>): Promise<void>;
403
442
  }
404
443
  export interface InMemoryCacheOptions {
405
444
  /**
@@ -459,13 +498,13 @@ export declare class DatabaseController<T extends WabeTypes> {
459
498
  count<U extends keyof T["types"], K extends keyof T["types"][U]>(params: CountOptions<U, K>): Promise<number>;
460
499
  clearDatabase(): Promise<void>;
461
500
  getObject<U extends keyof T["types"], K extends keyof T["types"][U]>({ fields, className, context, skipHooks, id, where, }: GetObjectOptions<U, K>): Promise<OutputType<U, K>>;
462
- getObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ className, fields, context, where, skipHooks, first, offset, }: GetObjectsOptions<U, K, W>): Promise<OutputType<U, K>[]>;
501
+ getObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>({ className, fields, context, where, skipHooks, first, offset, order, }: GetObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
463
502
  createObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ className, context, data, fields }: CreateObjectOptions<U, K, W>): Promise<OutputType<U, K>>;
464
- createObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ data, fields, className, context, first, offset, }: CreateObjectsOptions<U, K, W>): Promise<OutputType<U, K>[]>;
503
+ createObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>({ data, fields, className, context, first, offset, order, }: CreateObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
465
504
  updateObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ id, className, context, data, fields }: UpdateObjectOptions<U, K, W>): Promise<OutputType<keyof T["types"], K>>;
466
- updateObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ className, where, context, fields, data, first, offset, }: UpdateObjectsOptions<U, K, W>): Promise<OutputType<U, K>[]>;
505
+ updateObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>({ className, where, context, fields, data, first, offset, order, }: UpdateObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
467
506
  deleteObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ context, className, id, fields }: DeleteObjectOptions<U, K, W>): Promise<OutputType<U, K>>;
468
- deleteObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ className, context, fields, where, first, offset, }: DeleteObjectsOptions<U, K, W>): Promise<OutputType<U, K>[]>;
507
+ deleteObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>({ className, context, fields, where, first, offset, order, }: DeleteObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
469
508
  }
470
509
  export declare enum DatabaseEnum {
471
510
  Mongo = "mongo"
@@ -541,36 +580,33 @@ export type TypeFieldCustomEnums<T extends WabeTypes> = {
541
580
  };
542
581
  export type TypeField<T extends WabeTypes> = TypeFieldBase<string, "String"> | TypeFieldBase<number, "Int"> | TypeFieldBase<number, "Float"> | TypeFieldBase<boolean, "Boolean"> | TypeFieldBase<Date, "Date"> | TypeFieldBase<string, "Email"> | TypeFieldArray<T> | TypeFieldObject<T> | TypeFieldPointer<T> | TypeFieldRelation<T> | TypeFieldFile | TypeFieldCustomScalars<T> | TypeFieldCustomEnums<T>;
543
582
  export type SchemaFields<T extends WabeTypes> = Record<string, TypeField<T>>;
544
- export type QueryResolver<T extends WabeTypes> = {
583
+ export type ResolverType<T extends WabeTypes> = {
545
584
  required?: boolean;
546
585
  description?: string;
547
- args?: SchemaFields<T>;
548
586
  resolve: (...args: any) => any;
549
587
  } & ({
550
- type: WabePrimaryTypes;
588
+ type: WabePrimaryTypes | T["enums"] | T["scalars"];
551
589
  } | {
552
590
  type: "Object";
553
591
  outputObject: ClassInterface<T>;
554
592
  } | {
555
593
  type: "Array";
556
594
  typeValue: WabePrimaryTypes;
595
+ typeValueRequired?: boolean;
596
+ } | {
597
+ type: "Array";
598
+ typeValue: "Object";
599
+ outputObject: ClassInterface<T>;
600
+ typeValueRequired?: boolean;
557
601
  });
602
+ export type QueryResolver<T extends WabeTypes> = {
603
+ args?: SchemaFields<T>;
604
+ } & ResolverType<T>;
558
605
  export type MutationResolver<T extends WabeTypes> = {
559
- required?: boolean;
560
- description?: string;
561
606
  args?: {
562
607
  input: SchemaFields<T>;
563
608
  };
564
- resolve: (...args: any) => any;
565
- } & ({
566
- type: WabePrimaryTypes;
567
- } | {
568
- type: "Object";
569
- outputObject: ClassInterface<T>;
570
- } | {
571
- type: "Array";
572
- typeValue: WabePrimaryTypes;
573
- });
609
+ } & ResolverType<T>;
574
610
  export type TypeResolver<T extends WabeTypes> = {
575
611
  queries?: {
576
612
  [key: string]: QueryResolver<T>;
@@ -628,6 +664,7 @@ export declare class Schema<T extends WabeTypes> {
628
664
  mergeResolvers(defaultResolvers: TypeResolver<T>): TypeResolver<T>;
629
665
  defaultResolvers(): TypeResolver<T>;
630
666
  sessionClass(): ClassInterface<T>;
667
+ paymentClass(): ClassInterface<T>;
631
668
  roleClass(): ClassInterface<T>;
632
669
  userClass(): ClassInterface<T>;
633
670
  defaultFields(): SchemaFields<T>;
@@ -825,8 +862,195 @@ declare class EmailController implements EmailAdapter {
825
862
  constructor(adapter: EmailAdapter);
826
863
  send(options: EmailSendOptions): Promise<string>;
827
864
  }
865
+ declare enum Currency$1 {
866
+ EUR = "eur",
867
+ USD = "usd"
868
+ }
869
+ export type Address = {
870
+ city: string;
871
+ country: string;
872
+ line1: string;
873
+ line2: string;
874
+ postalCode: string;
875
+ state: string;
876
+ };
877
+ export declare enum PaymentMode {
878
+ Payment = "payment",
879
+ Subscription = "subscription"
880
+ }
881
+ export type PaymentMethod = "card" | "paypal" | "link" | "sepa_debit" | "revolut_pay" | "us_bank_account";
882
+ export declare enum PaymentReccuringInterval {
883
+ Month = "month",
884
+ Year = "year"
885
+ }
886
+ export type Product = {
887
+ name: string;
888
+ unitAmount: number;
889
+ quantity: number;
890
+ };
891
+ export interface OnPaymentSucceedOptions {
892
+ created: string;
893
+ amount: number;
894
+ customerEmail: string | null;
895
+ billingDetails: {
896
+ address: {
897
+ city: string | null;
898
+ country: string | null;
899
+ line1: string | null;
900
+ line2: string | null;
901
+ postalCode: string | null;
902
+ state: string | null;
903
+ };
904
+ name: string | null;
905
+ phone: string | null;
906
+ };
907
+ currency: string;
908
+ paymentMethodTypes: Array<string>;
909
+ }
910
+ export interface OnPaymentFailedOptions {
911
+ created: string;
912
+ amount: number;
913
+ messageError: string;
914
+ paymentMethodTypes: Array<string>;
915
+ }
916
+ export interface PaymentConfig {
917
+ adapter: PaymentAdapter;
918
+ supportedPaymentMethods: Array<PaymentMethod>;
919
+ currency: Currency$1;
920
+ onPaymentSucceed?: (options: OnPaymentSucceedOptions) => Promise<void>;
921
+ onPaymentFailed?: (options: OnPaymentFailedOptions) => Promise<void>;
922
+ }
923
+ export type Invoice = {
924
+ amountDue: number;
925
+ amountPaid: number;
926
+ currency: Currency$1;
927
+ id: string;
928
+ created: number;
929
+ invoiceUrl: string;
930
+ isPaid: boolean;
931
+ };
932
+ export type Transaction = {
933
+ customerEmail: string;
934
+ amount: number;
935
+ currency: Currency$1;
936
+ created: number;
937
+ isSubscription: boolean;
938
+ reccuringInterval?: "month" | "year";
939
+ };
940
+ export type CreateCustomerOptions = {
941
+ customerName?: string;
942
+ customerEmail: string;
943
+ customerPhone?: string;
944
+ address: Address;
945
+ paymentMethod: PaymentMethod;
946
+ };
947
+ export type CreatePaymentOptions = {
948
+ currency: Currency$1;
949
+ customerEmail: string;
950
+ products: Array<Product>;
951
+ paymentMethod: Array<PaymentMethod>;
952
+ paymentMode: PaymentMode;
953
+ successUrl: string;
954
+ cancelUrl: string;
955
+ automaticTax?: boolean;
956
+ recurringInterval?: "month" | "year";
957
+ };
958
+ export type InitWebhookOptions = {
959
+ webhookUrl: string;
960
+ };
961
+ export type CancelSubscriptionOptions = {
962
+ email: string;
963
+ };
964
+ export type GetInvoicesOptions = {
965
+ email: string;
966
+ };
967
+ export type GetTotalRevenueOptions = {
968
+ startRangeTimestamp?: number;
969
+ endRangeTimestamp?: number;
970
+ charge: "net" | "gross";
971
+ };
972
+ export type GetAllTransactionsOptions = {
973
+ startRangeTimestamp?: number;
974
+ endRangeTimestamp?: number;
975
+ first?: number;
976
+ };
977
+ export type GetCustomerByIdOptions = {
978
+ id: string;
979
+ };
980
+ export interface PaymentAdapter {
981
+ /**
982
+ * Get a customer by id
983
+ * @param id The customer id
984
+ * @returns The customer
985
+ */
986
+ getCustomerById: (options: GetCustomerByIdOptions) => Promise<{
987
+ email: string | null;
988
+ }>;
989
+ /**
990
+ * Create a customer
991
+ * @param options CreateCustomerOptions
992
+ * @returns The customer email
993
+ */
994
+ createCustomer: (options: CreateCustomerOptions) => Promise<string>;
995
+ /**
996
+ * Create a payment
997
+ * @param options CreatePaymentOptions
998
+ * @returns The payment url
999
+ */
1000
+ createPayment: (options: CreatePaymentOptions) => Promise<string>;
1001
+ /**
1002
+ * Cancel a subscription
1003
+ * @param options The customer email to cancel the subscription
1004
+ */
1005
+ cancelSubscription: (options: CancelSubscriptionOptions) => Promise<void>;
1006
+ /**
1007
+ * Get invoices
1008
+ * @param options The customer email to get the invoices
1009
+ * @returns The invoices of a customer
1010
+ */
1011
+ getInvoices: (options: GetInvoicesOptions) => Promise<Invoice[]>;
1012
+ /**
1013
+ * Get total revenue
1014
+ * @param options The type of charge (net or gross) and the start and end range timestamps to get the total revenue
1015
+ * @returns The total amount
1016
+ */
1017
+ getTotalRevenue: (options: GetTotalRevenueOptions) => Promise<number>;
1018
+ /**
1019
+ * Get the list of all transactions
1020
+ * @param options The start and end range timestamps to get the transactions
1021
+ * @returns The list of transactions
1022
+ */
1023
+ getAllTransactions: (options: GetAllTransactionsOptions) => Promise<Transaction[]>;
1024
+ /**
1025
+ * Get the hypothetical revenue of subscriptions
1026
+ * @returns The hypothetical revenue of subscriptions
1027
+ */
1028
+ getHypotheticalSubscriptionRevenue: () => Promise<number>;
1029
+ /**
1030
+ * Init the webhook for succeed and failed payments
1031
+ * @param options The webhook url
1032
+ */
1033
+ initWebhook: (options: InitWebhookOptions) => Promise<void>;
1034
+ }
1035
+ declare class PaymentController implements PaymentAdapter {
1036
+ private adapter;
1037
+ private config;
1038
+ constructor(paymentConfig: PaymentConfig);
1039
+ getCustomerById(options: GetCustomerByIdOptions): Promise<{
1040
+ email: string | null;
1041
+ }>;
1042
+ initWebhook({ webhookUrl }: InitWebhookOptions): Promise<void>;
1043
+ createCustomer(options: CreateCustomerOptions): Promise<string>;
1044
+ createPayment(options: Omit<CreatePaymentOptions, "currency" | "paymentMethod">): Promise<string>;
1045
+ cancelSubscription(options: CancelSubscriptionOptions): Promise<void>;
1046
+ getInvoices(options: GetInvoicesOptions): Promise<Invoice[]>;
1047
+ getTotalRevenue(options: GetTotalRevenueOptions): Promise<number>;
1048
+ getAllTransactions(options: GetAllTransactionsOptions): Promise<Transaction[]>;
1049
+ getHypotheticalSubscriptionRevenue(): Promise<number>;
1050
+ }
828
1051
  export interface WabeConfig<T extends WabeTypes> {
829
1052
  port: number;
1053
+ publicUrl?: string;
830
1054
  schema?: SchemaInterface<T>;
831
1055
  database: DatabaseConfig;
832
1056
  codegen?: {
@@ -840,6 +1064,7 @@ export interface WabeConfig<T extends WabeTypes> {
840
1064
  rootKey: string;
841
1065
  hooks?: Hook<any>[];
842
1066
  email?: EmailConfig;
1067
+ payment?: PaymentConfig;
843
1068
  file?: FileConfig;
844
1069
  }
845
1070
  export type WabeTypes = {
@@ -853,12 +1078,14 @@ export type WobeCustomContext<T extends WabeTypes> = {
853
1078
  export type WabeControllers<T extends WabeTypes> = {
854
1079
  database: DatabaseController<T>;
855
1080
  email?: EmailController;
1081
+ payment?: PaymentController;
856
1082
  };
857
1083
  export declare class Wabe<T extends WabeTypes> {
858
1084
  server: Wobe<WobeCustomContext<T>>;
859
1085
  config: WabeConfig<T>;
860
1086
  controllers: WabeControllers<T>;
861
- constructor({ port, schema, database, authentication, rootKey, codegen, hooks, file, email, routes, }: WabeConfig<T>);
1087
+ constructor({ port, schema, database, authentication, rootKey, codegen, hooks, file, email, payment, routes, publicUrl, }: WabeConfig<T>);
1088
+ loadRoleEnum(): void;
862
1089
  loadAuthenticationMethods(): void;
863
1090
  loadHooks(): void;
864
1091
  loadDefaultRoutes(): void;
@@ -945,6 +1172,7 @@ export declare class Google implements OAuth2ProviderWithPKCE {
945
1172
 
946
1173
  export {
947
1174
  AuthenticationProvider$1 as AuthenticationProvider,
1175
+ Currency$1 as Currency,
948
1176
  };
949
1177
 
950
1178
  export {};