import { adminDeliveryAddressRoutesMt } from '@d8d/delivery-address-module-mt';
import { rpcClient } from '@d8d/shared-ui-components/utils/hc'

class DeliveryAddressClientManager {
  private static instance: DeliveryAddressClientManager;
  private client: ReturnType<typeof rpcClient<typeof adminDeliveryAddressRoutesMt>> | null = null;

  private constructor() {}

  public static getInstance(): DeliveryAddressClientManager {
    if (!DeliveryAddressClientManager.instance) {
      DeliveryAddressClientManager.instance = new DeliveryAddressClientManager();
    }
    return DeliveryAddressClientManager.instance;
  }

  // 初始化客户端
  public init(baseUrl: string = '/'): ReturnType<typeof rpcClient<typeof adminDeliveryAddressRoutesMt>> {
    return this.client = rpcClient<typeof adminDeliveryAddressRoutesMt>(baseUrl);
  }

  // 获取客户端实例
  public get(): ReturnType<typeof rpcClient<typeof adminDeliveryAddressRoutesMt>> {
    if (!this.client) {
      return this.init()
    }
    return this.client;
  }

  // 重置客户端（用于测试或重新初始化）
  public reset(): void {
    this.client = null;
  }
}

// 导出单例实例
const deliveryAddressClientManager = DeliveryAddressClientManager.getInstance();

// 导出默认客户端实例（延迟初始化）
export const deliveryAddressClient = deliveryAddressClientManager.get()

export {
  deliveryAddressClientManager
}