@withvlibe/base-sdk 1.0.1 → 1.1.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.
@@ -236,8 +236,7 @@ interface UsageMetric {
236
236
  period: string;
237
237
  createdAt: string;
238
238
  }
239
- interface Product {
240
- id: string;
239
+ interface Product extends BaseRecord {
241
240
  name: string;
242
241
  description?: string;
243
242
  sku?: string;
@@ -247,19 +246,21 @@ interface Product {
247
246
  stock: number;
248
247
  isActive: boolean;
249
248
  category?: string;
250
- createdAt: string;
251
- updatedAt: string;
249
+ metadata?: Record<string, any>;
252
250
  }
253
- interface Order {
254
- id: string;
251
+ interface Order extends BaseRecord {
255
252
  userId: string;
256
253
  status: 'pending' | 'processing' | 'shipped' | 'delivered' | 'cancelled';
257
254
  items: OrderItem[];
258
255
  subtotal: number;
259
256
  tax: number;
257
+ shipping: number;
260
258
  total: number;
261
259
  shippingAddress?: Address;
262
- createdAt: string;
260
+ billingAddress?: Address;
261
+ paymentMethodId?: string;
262
+ stripePaymentIntentId?: string;
263
+ notes?: string;
263
264
  }
264
265
  interface OrderItem {
265
266
  productId: string;
@@ -279,6 +280,70 @@ interface CartItem {
279
280
  productId: string;
280
281
  quantity: number;
281
282
  }
283
+ interface CreateProductInput {
284
+ name: string;
285
+ description?: string;
286
+ sku?: string;
287
+ price: number;
288
+ currency: string;
289
+ images?: string[];
290
+ stock: number;
291
+ isActive?: boolean;
292
+ category?: string;
293
+ metadata?: Record<string, any>;
294
+ }
295
+ interface CreateOrderInput {
296
+ userId: string;
297
+ items: Array<{
298
+ productId: string;
299
+ quantity: number;
300
+ }>;
301
+ shippingAddress: Address;
302
+ billingAddress?: Address;
303
+ paymentMethodId?: string;
304
+ notes?: string;
305
+ }
306
+ interface OrderCalculation {
307
+ subtotal: number;
308
+ tax: number;
309
+ shipping: number;
310
+ total: number;
311
+ items: Array<{
312
+ productId: string;
313
+ name: string;
314
+ price: number;
315
+ quantity: number;
316
+ lineTotal: number;
317
+ inStock: boolean;
318
+ }>;
319
+ }
320
+ interface RevenueStats {
321
+ totalRevenue: number;
322
+ totalOrders: number;
323
+ averageOrderValue: number;
324
+ period: {
325
+ start: string;
326
+ end: string;
327
+ };
328
+ trend: {
329
+ revenue: number;
330
+ orders: number;
331
+ };
332
+ }
333
+ interface ProductStats {
334
+ productId: string;
335
+ name: string;
336
+ totalSold: number;
337
+ revenue: number;
338
+ }
339
+ interface OrderStats {
340
+ pending: number;
341
+ processing: number;
342
+ shipped: number;
343
+ delivered: number;
344
+ cancelled: number;
345
+ averageOrderValue: number;
346
+ }
282
347
  /**
283
348
  * Standard API response
284
349
  */
@@ -564,4 +629,129 @@ declare class VlibeBaseAuth {
564
629
  getBaseUrl(): string;
565
630
  }
566
631
 
567
- export { type AppCategory as A, type BasePlan as B, type ConnectStatus as C, type DatabaseConfig as D, type FeatureFlag as F, type Media as M, type Order as O, type PaymentsConfig as P, type QueryOptions as Q, type RefundOptions as R, type Subscription as S, type Transaction as T, type UsageMetric as U, VlibeBaseDatabase as V, type CheckoutOptions as a, type CheckoutSession as b, VlibeBaseAuth as c, type VlibeBaseConfig as d, type AuthConfig as e, type ColumnType as f, type TableColumn as g, type TableSchema as h, type TableInfo as i, type BaseRecord as j, type RealtimePayload as k, type VlibeUser as l, type VerifyResponse as m, type AuthSession as n, type Page as o, type Product as p, type OrderItem as q, type Address as r, type CartItem as s, type ApiResponse as t, type PaginatedResponse as u, type UseCollectionReturn as v, type UseCollectionOptions as w, type UseKVReturn as x, type UseAuthReturn as y, type UsePaymentsReturn as z };
632
+ /**
633
+ * VlibeBaseEcommerce - E-commerce functionality for Vlibe Base apps
634
+ *
635
+ * Provides specialized methods for managing products, inventory, orders,
636
+ * shopping carts, and e-commerce analytics.
637
+ */
638
+ declare class VlibeBaseEcommerce {
639
+ private db;
640
+ constructor(db: VlibeBaseDatabase);
641
+ /**
642
+ * Create a new product
643
+ * Auto-generates SKU if not provided
644
+ */
645
+ createProduct(input: CreateProductInput): Promise<Product>;
646
+ /**
647
+ * Update an existing product
648
+ */
649
+ updateProduct(productId: string, updates: Partial<Product>): Promise<Product>;
650
+ /**
651
+ * Get a single product by ID
652
+ */
653
+ getProduct(productId: string): Promise<Product | null>;
654
+ /**
655
+ * List products with filtering and pagination
656
+ */
657
+ listProducts(options?: {
658
+ category?: string;
659
+ isActive?: boolean;
660
+ sortBy?: 'name' | 'price' | 'stock' | 'created_at';
661
+ limit?: number;
662
+ offset?: number;
663
+ }): Promise<{
664
+ products: Product[];
665
+ total: number;
666
+ }>;
667
+ /**
668
+ * Soft delete a product (sets isActive = false)
669
+ */
670
+ deleteProduct(productId: string): Promise<void>;
671
+ /**
672
+ * Update product inventory with atomic operations
673
+ */
674
+ updateInventory(productId: string, quantity: number, operation: 'set' | 'increment' | 'decrement'): Promise<Product>;
675
+ /**
676
+ * Get products below stock threshold
677
+ */
678
+ getLowStockProducts(threshold?: number): Promise<Product[]>;
679
+ /**
680
+ * Bulk update inventory for multiple products
681
+ */
682
+ bulkUpdateInventory(updates: Array<{
683
+ productId: string;
684
+ quantity: number;
685
+ operation: 'set' | 'increment' | 'decrement';
686
+ }>): Promise<Product[]>;
687
+ /**
688
+ * Calculate order totals from cart items
689
+ */
690
+ calculateOrderTotal(items: CartItem[]): Promise<OrderCalculation>;
691
+ /**
692
+ * Create an order from cart items
693
+ * Reduces inventory atomically
694
+ */
695
+ createOrder(input: CreateOrderInput): Promise<Order>;
696
+ /**
697
+ * Get an order by ID
698
+ */
699
+ getOrder(orderId: string): Promise<Order | null>;
700
+ /**
701
+ * List orders with filtering
702
+ */
703
+ listOrders(options?: {
704
+ userId?: string;
705
+ status?: Order['status'];
706
+ sortBy?: 'created_at' | 'total';
707
+ limit?: number;
708
+ offset?: number;
709
+ }): Promise<{
710
+ orders: Order[];
711
+ total: number;
712
+ }>;
713
+ /**
714
+ * Update order status
715
+ */
716
+ updateOrderStatus(orderId: string, status: Order['status']): Promise<Order>;
717
+ /**
718
+ * Cancel an order and optionally restore inventory
719
+ */
720
+ cancelOrder(orderId: string, restoreInventory?: boolean): Promise<Order>;
721
+ /**
722
+ * Add item to user's cart
723
+ */
724
+ addToCart(userId: string, item: CartItem): Promise<CartItem[]>;
725
+ /**
726
+ * Update cart item quantity or remove if quantity = 0
727
+ */
728
+ updateCartItem(userId: string, productId: string, quantity: number): Promise<CartItem[]>;
729
+ /**
730
+ * Get user's cart
731
+ */
732
+ getCart(userId: string): Promise<CartItem[]>;
733
+ /**
734
+ * Clear user's cart
735
+ */
736
+ clearCart(userId: string): Promise<void>;
737
+ /**
738
+ * Checkout - convert cart to order and clear cart
739
+ */
740
+ checkout(userId: string, shippingAddress: Address, paymentMethodId?: string): Promise<Order>;
741
+ /**
742
+ * Get revenue statistics for a time period
743
+ */
744
+ getRevenueStats(period: 'day' | 'week' | 'month' | 'year'): Promise<RevenueStats>;
745
+ /**
746
+ * Get top selling products
747
+ */
748
+ getTopProducts(limit?: number, period?: 'day' | 'week' | 'month'): Promise<ProductStats[]>;
749
+ /**
750
+ * Get order statistics by status
751
+ */
752
+ getOrderStats(): Promise<OrderStats>;
753
+ private generateSKU;
754
+ private getPeriodStart;
755
+ }
756
+
757
+ export { type AppCategory as A, type BasePlan as B, type ConnectStatus as C, type DatabaseConfig as D, type ApiResponse as E, type FeatureFlag as F, type PaginatedResponse as G, type UseCollectionReturn as H, type UseCollectionOptions as I, type UseKVReturn as J, type UseAuthReturn as K, type UsePaymentsReturn as L, type Media as M, type Order as O, type PaymentsConfig as P, type QueryOptions as Q, type RefundOptions as R, type Subscription as S, type Transaction as T, type UsageMetric as U, VlibeBaseDatabase as V, type CheckoutOptions as a, type CheckoutSession as b, VlibeBaseAuth as c, VlibeBaseEcommerce as d, type VlibeBaseConfig as e, type AuthConfig as f, type ColumnType as g, type TableColumn as h, type TableSchema as i, type TableInfo as j, type BaseRecord as k, type RealtimePayload as l, type VlibeUser as m, type VerifyResponse as n, type AuthSession as o, type Page as p, type Product as q, type OrderItem as r, type Address as s, type CartItem as t, type CreateProductInput as u, type CreateOrderInput as v, type OrderCalculation as w, type RevenueStats as x, type ProductStats as y, type OrderStats as z };
@@ -236,8 +236,7 @@ interface UsageMetric {
236
236
  period: string;
237
237
  createdAt: string;
238
238
  }
239
- interface Product {
240
- id: string;
239
+ interface Product extends BaseRecord {
241
240
  name: string;
242
241
  description?: string;
243
242
  sku?: string;
@@ -247,19 +246,21 @@ interface Product {
247
246
  stock: number;
248
247
  isActive: boolean;
249
248
  category?: string;
250
- createdAt: string;
251
- updatedAt: string;
249
+ metadata?: Record<string, any>;
252
250
  }
253
- interface Order {
254
- id: string;
251
+ interface Order extends BaseRecord {
255
252
  userId: string;
256
253
  status: 'pending' | 'processing' | 'shipped' | 'delivered' | 'cancelled';
257
254
  items: OrderItem[];
258
255
  subtotal: number;
259
256
  tax: number;
257
+ shipping: number;
260
258
  total: number;
261
259
  shippingAddress?: Address;
262
- createdAt: string;
260
+ billingAddress?: Address;
261
+ paymentMethodId?: string;
262
+ stripePaymentIntentId?: string;
263
+ notes?: string;
263
264
  }
264
265
  interface OrderItem {
265
266
  productId: string;
@@ -279,6 +280,70 @@ interface CartItem {
279
280
  productId: string;
280
281
  quantity: number;
281
282
  }
283
+ interface CreateProductInput {
284
+ name: string;
285
+ description?: string;
286
+ sku?: string;
287
+ price: number;
288
+ currency: string;
289
+ images?: string[];
290
+ stock: number;
291
+ isActive?: boolean;
292
+ category?: string;
293
+ metadata?: Record<string, any>;
294
+ }
295
+ interface CreateOrderInput {
296
+ userId: string;
297
+ items: Array<{
298
+ productId: string;
299
+ quantity: number;
300
+ }>;
301
+ shippingAddress: Address;
302
+ billingAddress?: Address;
303
+ paymentMethodId?: string;
304
+ notes?: string;
305
+ }
306
+ interface OrderCalculation {
307
+ subtotal: number;
308
+ tax: number;
309
+ shipping: number;
310
+ total: number;
311
+ items: Array<{
312
+ productId: string;
313
+ name: string;
314
+ price: number;
315
+ quantity: number;
316
+ lineTotal: number;
317
+ inStock: boolean;
318
+ }>;
319
+ }
320
+ interface RevenueStats {
321
+ totalRevenue: number;
322
+ totalOrders: number;
323
+ averageOrderValue: number;
324
+ period: {
325
+ start: string;
326
+ end: string;
327
+ };
328
+ trend: {
329
+ revenue: number;
330
+ orders: number;
331
+ };
332
+ }
333
+ interface ProductStats {
334
+ productId: string;
335
+ name: string;
336
+ totalSold: number;
337
+ revenue: number;
338
+ }
339
+ interface OrderStats {
340
+ pending: number;
341
+ processing: number;
342
+ shipped: number;
343
+ delivered: number;
344
+ cancelled: number;
345
+ averageOrderValue: number;
346
+ }
282
347
  /**
283
348
  * Standard API response
284
349
  */
@@ -564,4 +629,129 @@ declare class VlibeBaseAuth {
564
629
  getBaseUrl(): string;
565
630
  }
566
631
 
567
- export { type AppCategory as A, type BasePlan as B, type ConnectStatus as C, type DatabaseConfig as D, type FeatureFlag as F, type Media as M, type Order as O, type PaymentsConfig as P, type QueryOptions as Q, type RefundOptions as R, type Subscription as S, type Transaction as T, type UsageMetric as U, VlibeBaseDatabase as V, type CheckoutOptions as a, type CheckoutSession as b, VlibeBaseAuth as c, type VlibeBaseConfig as d, type AuthConfig as e, type ColumnType as f, type TableColumn as g, type TableSchema as h, type TableInfo as i, type BaseRecord as j, type RealtimePayload as k, type VlibeUser as l, type VerifyResponse as m, type AuthSession as n, type Page as o, type Product as p, type OrderItem as q, type Address as r, type CartItem as s, type ApiResponse as t, type PaginatedResponse as u, type UseCollectionReturn as v, type UseCollectionOptions as w, type UseKVReturn as x, type UseAuthReturn as y, type UsePaymentsReturn as z };
632
+ /**
633
+ * VlibeBaseEcommerce - E-commerce functionality for Vlibe Base apps
634
+ *
635
+ * Provides specialized methods for managing products, inventory, orders,
636
+ * shopping carts, and e-commerce analytics.
637
+ */
638
+ declare class VlibeBaseEcommerce {
639
+ private db;
640
+ constructor(db: VlibeBaseDatabase);
641
+ /**
642
+ * Create a new product
643
+ * Auto-generates SKU if not provided
644
+ */
645
+ createProduct(input: CreateProductInput): Promise<Product>;
646
+ /**
647
+ * Update an existing product
648
+ */
649
+ updateProduct(productId: string, updates: Partial<Product>): Promise<Product>;
650
+ /**
651
+ * Get a single product by ID
652
+ */
653
+ getProduct(productId: string): Promise<Product | null>;
654
+ /**
655
+ * List products with filtering and pagination
656
+ */
657
+ listProducts(options?: {
658
+ category?: string;
659
+ isActive?: boolean;
660
+ sortBy?: 'name' | 'price' | 'stock' | 'created_at';
661
+ limit?: number;
662
+ offset?: number;
663
+ }): Promise<{
664
+ products: Product[];
665
+ total: number;
666
+ }>;
667
+ /**
668
+ * Soft delete a product (sets isActive = false)
669
+ */
670
+ deleteProduct(productId: string): Promise<void>;
671
+ /**
672
+ * Update product inventory with atomic operations
673
+ */
674
+ updateInventory(productId: string, quantity: number, operation: 'set' | 'increment' | 'decrement'): Promise<Product>;
675
+ /**
676
+ * Get products below stock threshold
677
+ */
678
+ getLowStockProducts(threshold?: number): Promise<Product[]>;
679
+ /**
680
+ * Bulk update inventory for multiple products
681
+ */
682
+ bulkUpdateInventory(updates: Array<{
683
+ productId: string;
684
+ quantity: number;
685
+ operation: 'set' | 'increment' | 'decrement';
686
+ }>): Promise<Product[]>;
687
+ /**
688
+ * Calculate order totals from cart items
689
+ */
690
+ calculateOrderTotal(items: CartItem[]): Promise<OrderCalculation>;
691
+ /**
692
+ * Create an order from cart items
693
+ * Reduces inventory atomically
694
+ */
695
+ createOrder(input: CreateOrderInput): Promise<Order>;
696
+ /**
697
+ * Get an order by ID
698
+ */
699
+ getOrder(orderId: string): Promise<Order | null>;
700
+ /**
701
+ * List orders with filtering
702
+ */
703
+ listOrders(options?: {
704
+ userId?: string;
705
+ status?: Order['status'];
706
+ sortBy?: 'created_at' | 'total';
707
+ limit?: number;
708
+ offset?: number;
709
+ }): Promise<{
710
+ orders: Order[];
711
+ total: number;
712
+ }>;
713
+ /**
714
+ * Update order status
715
+ */
716
+ updateOrderStatus(orderId: string, status: Order['status']): Promise<Order>;
717
+ /**
718
+ * Cancel an order and optionally restore inventory
719
+ */
720
+ cancelOrder(orderId: string, restoreInventory?: boolean): Promise<Order>;
721
+ /**
722
+ * Add item to user's cart
723
+ */
724
+ addToCart(userId: string, item: CartItem): Promise<CartItem[]>;
725
+ /**
726
+ * Update cart item quantity or remove if quantity = 0
727
+ */
728
+ updateCartItem(userId: string, productId: string, quantity: number): Promise<CartItem[]>;
729
+ /**
730
+ * Get user's cart
731
+ */
732
+ getCart(userId: string): Promise<CartItem[]>;
733
+ /**
734
+ * Clear user's cart
735
+ */
736
+ clearCart(userId: string): Promise<void>;
737
+ /**
738
+ * Checkout - convert cart to order and clear cart
739
+ */
740
+ checkout(userId: string, shippingAddress: Address, paymentMethodId?: string): Promise<Order>;
741
+ /**
742
+ * Get revenue statistics for a time period
743
+ */
744
+ getRevenueStats(period: 'day' | 'week' | 'month' | 'year'): Promise<RevenueStats>;
745
+ /**
746
+ * Get top selling products
747
+ */
748
+ getTopProducts(limit?: number, period?: 'day' | 'week' | 'month'): Promise<ProductStats[]>;
749
+ /**
750
+ * Get order statistics by status
751
+ */
752
+ getOrderStats(): Promise<OrderStats>;
753
+ private generateSKU;
754
+ private getPeriodStart;
755
+ }
756
+
757
+ export { type AppCategory as A, type BasePlan as B, type ConnectStatus as C, type DatabaseConfig as D, type ApiResponse as E, type FeatureFlag as F, type PaginatedResponse as G, type UseCollectionReturn as H, type UseCollectionOptions as I, type UseKVReturn as J, type UseAuthReturn as K, type UsePaymentsReturn as L, type Media as M, type Order as O, type PaymentsConfig as P, type QueryOptions as Q, type RefundOptions as R, type Subscription as S, type Transaction as T, type UsageMetric as U, VlibeBaseDatabase as V, type CheckoutOptions as a, type CheckoutSession as b, VlibeBaseAuth as c, VlibeBaseEcommerce as d, type VlibeBaseConfig as e, type AuthConfig as f, type ColumnType as g, type TableColumn as h, type TableSchema as i, type TableInfo as j, type BaseRecord as k, type RealtimePayload as l, type VlibeUser as m, type VerifyResponse as n, type AuthSession as o, type Page as p, type Product as q, type OrderItem as r, type Address as s, type CartItem as t, type CreateProductInput as u, type CreateOrderInput as v, type OrderCalculation as w, type RevenueStats as x, type ProductStats as y, type OrderStats as z };
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as PaymentsConfig, C as ConnectStatus, a as CheckoutOptions, b as CheckoutSession, T as Transaction, R as RefundOptions } from './VlibeBaseAuth-BxS9T0vB.mjs';
2
- export { r as Address, t as ApiResponse, A as AppCategory, e as AuthConfig, n as AuthSession, B as BasePlan, j as BaseRecord, s as CartItem, f as ColumnType, D as DatabaseConfig, F as FeatureFlag, M as Media, O as Order, q as OrderItem, o as Page, u as PaginatedResponse, p as Product, Q as QueryOptions, k as RealtimePayload, S as Subscription, g as TableColumn, i as TableInfo, h as TableSchema, U as UsageMetric, y as UseAuthReturn, w as UseCollectionOptions, v as UseCollectionReturn, x as UseKVReturn, z as UsePaymentsReturn, m as VerifyResponse, c as VlibeBaseAuth, d as VlibeBaseConfig, V as VlibeBaseDatabase, l as VlibeUser } from './VlibeBaseAuth-BxS9T0vB.mjs';
1
+ import { P as PaymentsConfig, C as ConnectStatus, a as CheckoutOptions, b as CheckoutSession, T as Transaction, R as RefundOptions } from './VlibeBaseEcommerce-B6l17uup.mjs';
2
+ export { s as Address, E as ApiResponse, A as AppCategory, f as AuthConfig, o as AuthSession, B as BasePlan, k as BaseRecord, t as CartItem, g as ColumnType, v as CreateOrderInput, u as CreateProductInput, D as DatabaseConfig, F as FeatureFlag, M as Media, O as Order, w as OrderCalculation, r as OrderItem, z as OrderStats, p as Page, G as PaginatedResponse, q as Product, y as ProductStats, Q as QueryOptions, l as RealtimePayload, x as RevenueStats, S as Subscription, h as TableColumn, j as TableInfo, i as TableSchema, U as UsageMetric, K as UseAuthReturn, I as UseCollectionOptions, H as UseCollectionReturn, J as UseKVReturn, L as UsePaymentsReturn, n as VerifyResponse, c as VlibeBaseAuth, e as VlibeBaseConfig, V as VlibeBaseDatabase, d as VlibeBaseEcommerce, m as VlibeUser } from './VlibeBaseEcommerce-B6l17uup.mjs';
3
3
 
4
4
  /**
5
5
  * VlibeBasePayments - Payment processing for Vlibe Base Apps
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as PaymentsConfig, C as ConnectStatus, a as CheckoutOptions, b as CheckoutSession, T as Transaction, R as RefundOptions } from './VlibeBaseAuth-BxS9T0vB.js';
2
- export { r as Address, t as ApiResponse, A as AppCategory, e as AuthConfig, n as AuthSession, B as BasePlan, j as BaseRecord, s as CartItem, f as ColumnType, D as DatabaseConfig, F as FeatureFlag, M as Media, O as Order, q as OrderItem, o as Page, u as PaginatedResponse, p as Product, Q as QueryOptions, k as RealtimePayload, S as Subscription, g as TableColumn, i as TableInfo, h as TableSchema, U as UsageMetric, y as UseAuthReturn, w as UseCollectionOptions, v as UseCollectionReturn, x as UseKVReturn, z as UsePaymentsReturn, m as VerifyResponse, c as VlibeBaseAuth, d as VlibeBaseConfig, V as VlibeBaseDatabase, l as VlibeUser } from './VlibeBaseAuth-BxS9T0vB.js';
1
+ import { P as PaymentsConfig, C as ConnectStatus, a as CheckoutOptions, b as CheckoutSession, T as Transaction, R as RefundOptions } from './VlibeBaseEcommerce-B6l17uup.js';
2
+ export { s as Address, E as ApiResponse, A as AppCategory, f as AuthConfig, o as AuthSession, B as BasePlan, k as BaseRecord, t as CartItem, g as ColumnType, v as CreateOrderInput, u as CreateProductInput, D as DatabaseConfig, F as FeatureFlag, M as Media, O as Order, w as OrderCalculation, r as OrderItem, z as OrderStats, p as Page, G as PaginatedResponse, q as Product, y as ProductStats, Q as QueryOptions, l as RealtimePayload, x as RevenueStats, S as Subscription, h as TableColumn, j as TableInfo, i as TableSchema, U as UsageMetric, K as UseAuthReturn, I as UseCollectionOptions, H as UseCollectionReturn, J as UseKVReturn, L as UsePaymentsReturn, n as VerifyResponse, c as VlibeBaseAuth, e as VlibeBaseConfig, V as VlibeBaseDatabase, d as VlibeBaseEcommerce, m as VlibeUser } from './VlibeBaseEcommerce-B6l17uup.js';
3
3
 
4
4
  /**
5
5
  * VlibeBasePayments - Payment processing for Vlibe Base Apps