import axios, { AxiosInstance, AxiosResponse } from 'axios';
import { ReportTagBody } from '@/dto/tagTransaction.dto';

export interface ServiceOptions {
  headers?: Record<string, unknown>;
  params?: Record<string, unknown>;
}

export const API = ({
  headers = {},
  params = {},
}: ServiceOptions = {}): AxiosInstance => {
  const user = JSON.parse(localStorage.getItem('user') ?? '{}');
  const BASE_URL = import.meta.env.VITE_APP_TAGSAMURAI_API;

  const instance = axios.create({
    baseURL: `${BASE_URL}/fam/tag/v2/tag-transaction`,
    headers: {
      'Content-type': 'application/json',
      'Authorization': `Bearer ${user.token}`,
      ...headers,
    },
    params,
  });

  return instance;
};

const reportTag = (body: ReportTagBody): Promise<AxiosResponse> => {
  return API().put('/report/bulk', body);
};

export default {
  reportTag,
};
