import { merge } from 'lodash' import { OrganizationConfig, SdkConfig } from './interfaces' import { Api } from './services/api' import { ApiConfig, DEFAULT_API_CONFIG } from './services/api/api-config' import { MainStore } from './stores/mainStore' export type ClientConfig = Partial & OrganizationConfig & SdkConfig export const setupClient = (config?: ClientConfig): MainStore => { const mergedConfig = merge({}, DEFAULT_API_CONFIG, config) const api = new Api(mergedConfig) return new MainStore(api, mergedConfig) } export const setupClientWithCustomMain = ( main: typeof MainStore, config?: ClientConfig, ): MainStore => { const mergedConfig = merge({}, DEFAULT_API_CONFIG, config) const api = new Api(mergedConfig) return new main(api, mergedConfig) }