@explorins/pers-sdk
Version:
Platform-agnostic SDK for PERS (Phygital Experience Rewards System)
53 lines (43 loc) • 2.05 kB
text/typescript
/**
* @explorins/pers-sdk-business
*
* Platform-agnostic Business Domain SDK for PERS ecosystem
* Focuses on non-admin business operations
*/
// API Layer
export { BusinessApi } from './api/business-api';
// Service Layer
export { BusinessService } from './services/business-service';
// Models & Types
export * from './models';
// Factory function for creating business SDK instance
import { PersApiClient } from '../core/pers-api-client';
import { BusinessApi } from './api/business-api';
import { BusinessService } from './services/business-service';
/**
* Create a complete Business SDK instance
*
* @param apiClient - Configured PERS API client
* @returns Business SDK with flattened structure for better DX
*/
export function createBusinessSDK(apiClient: PersApiClient) {
const businessApi = new BusinessApi(apiClient);
const businessService = new BusinessService(businessApi);
return {
// Direct access to service methods (primary interface)
getActiveBusinesses: () => businessService.getActiveBusinesses(),
getAllBusinessTypes: () => businessService.getAllBusinessTypes(),
getBusinessById: (businessId: string) => businessService.getBusinessById(businessId),
getBusinessByAccount: (accountAddress: string) => businessService.getBusinessByAccount(accountAddress),
getBusinessesByType: (typeId: string) => businessService.getBusinessesByType(typeId),
// Admin methods
getAllBusinesses: () => businessService.getAllBusinesses(),
createBusinessByDisplayName: (displayName: string) => businessService.createBusinessByDisplayName(displayName),
updateBusiness: (id: string, businessData: any) => businessService.updateBusiness(id, businessData),
toggleBusinessActive: (id: string, isActive: boolean) => businessService.toggleBusinessActive(id, isActive),
// Advanced access for edge cases
api: businessApi,
service: businessService
};
}
export type BusinessSDK = ReturnType<typeof createBusinessSDK>;