import StateManagementProvider from './stateManagementProvider';
import SwrBoundary from './swrBoundary';

export default class StateManagementService implements StateManagementProvider {
  private provider: StateManagementProvider;

  constructor(provider: StateManagementProvider) {
    this.provider = provider;
  }

  static swr() {
    const stateManagement = new StateManagementService(new SwrBoundary());
    return stateManagement;
  }

  useGetQuery<DataType>(
    key: string,
    httpHandler: () => Promise<DataType>
  ): {
    data: DataType | undefined;
    isLoading: boolean;
    error?: string | undefined;
  } {
    return this.provider.useGetQuery(key, httpHandler);
  }
}