import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
import 'package:rasadyar_chicken/data/models/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
import 'package:rasadyar_chicken/data/models/request/submit_steward_allocation/submit_steward_allocation.dart';
import 'package:rasadyar_chicken/data/models/response/allocated_made/allocated_made.dart';
import 'package:rasadyar_chicken/data/models/response/bar_information/bar_information.dart';
import 'package:rasadyar_chicken/data/models/response/dashboard_kill_house_free_bar/dashboard_kill_house_free_bar.dart';
import 'package:rasadyar_chicken/data/models/response/guild/guild_model.dart';
import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.dart';
import 'package:rasadyar_chicken/data/models/response/imported_loads_model/imported_loads_model.dart';
import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart';
import 'package:rasadyar_chicken/data/models/response/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
import 'package:rasadyar_chicken/data/models/response/pagination_model/pagination_model.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_free_bar/steward_free_bar.dart';
import 'package:rasadyar_chicken/data/models/response/steward_free_bar_dashboard/steward_free_bar_dashboard.dart';
import 'package:rasadyar_chicken/data/models/response/steward_free_sale_bar/steward_free_sale_bar.dart';
import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart'
    hide ProductModel;

import '../models/request/create_steward_free_bar/create_steward_free_bar.dart';

abstract class ChickenRepository {
  Future<List<InventoryModel>?> getInventory({required String token});

  Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({
    required String token,
  });

  Future<BarInformation?> getGeneralBarInformation({
    required String token,
    Map<String, dynamic>? queryParameters,
  });

  Future<WaitingArrivalModel?> getWaitingArrivals({
    required String token,
    int? page,
  });

  Future<void> setSateForArrivals({
    required String token,
    required Map<String, dynamic> request,
  });

  Future<ImportedLoadsModel?> getImportedLoadsModel({
    required String token,
    required int page,
  });

  Future<PaginationModel<AllocatedMadeModel>?> getAllocatedMade({
    required String token,
    Map<String, dynamic>? queryParameters,
  });

  Future<void> confirmAllocation({
    required String token,
    required Map<String, dynamic> allocation,
  });

  Future<void> denyAllocation({
    required String token,
    required String allocationToken,
  });

  Future<void> confirmAllAllocation({
    required String token,
    required List<String> allocationTokens,
  });

  Future<List<ProductModel>?> getRolesProducts({required String token});

  Future<List<GuildModel>?> getGuilds({
    required String token,
    Map<String, dynamic>? queryParameters,
  });

  Future<GuildProfile?> getProfile({required String token});

  Future<void> postSubmitStewardAllocation({
    required String token,
    required SubmitStewardAllocation request,
  });

  Future<void> deleteStewardAllocation({
    required String token,
    Map<String, dynamic>? queryParameters,
  });


  Future<void> updateStewardAllocation({
    required String token,
    required ConformAllocation request,
  });



  Future<StewardFreeBarDashboard?> getStewardDashboard({
    required String token,
    required String stratDate,
    required String endDate,
  });

  Future<DashboardKillHouseFreeBar?> getDashboardKillHouseFreeBar({
    required String token,
    required String stratDate,
    required String endDate,
  });

  Future<PaginationModel<StewardFreeBar>?>
  getStewardPurchasesOutSideOfTheProvince({
    required String token,
    Map<String, dynamic>? queryParameters,
  });

  Future<void> createStewardPurchasesOutSideOfTheProvince({
    required String token,
    required CreateStewardFreeBar body,
  });

  Future<void> deleteStewardPurchasesOutSideOfTheProvince({
    required String token,
    required String stewardFreeBarKey,
  });

  Future<PaginationModel<OutProvinceCarcassesBuyer>?>
  getOutProvinceCarcassesBuyer({
    required String token,
    Map<String, dynamic>? queryParameters,
  });

  Future<void> createOutProvinceCarcassesBuyer({
    required String token,
    required OutProvinceCarcassesBuyer body,
  });

  Future<List<IranProvinceCityModel>?> getProvince();

  Future<List<IranProvinceCityModel>?> getCity({required String provinceName});

  Future<PaginationModel<StewardFreeSaleBar>?> getStewardFreeSaleBar({
    required String token,
    Map<String, dynamic>? queryParameters,
  });

  Future<void> createOutProvinceStewardFreeBar({
    required String token,
    required StewardFreeSaleBarRequest body,
  });

  Future<void> updateOutProvinceStewardFreeBar({
    required String token,
    required StewardFreeSaleBarRequest body,
  });

}
