package com.sambath.klaklouk_main.remote.service

import com.sambath.klaklouk_main.remote.*
import io.reactivex.Single
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Headers
import retrofit2.http.POST

interface ApiService {

    @POST("/klaklouk/v1/api/user/login")
    @Headers("No-Authentication: true")
    fun login(@Body loginRequest: LoginRequest): Single<LoginResponse>

    @POST("/klaklouk/v1/api/user/changepassword")
    fun changePassword(@Body changePwd: ChangePwd): Single<ChangePwdResponse>

    @GET("/klaklouk/v1/api/channel")
    fun getChannel(): Single<ChannelResponse>

    @GET("/klaklouk/v1/api/user")
    fun getUser(): Single<UserInfoResponse>

    @GET("/klaklouk/v1/api/weight")
    fun getWeight(): Single<WeightResponse>

    @GET("/klaklouk/v1/api/type")
    fun getBettingType(): Single<BettingTypeResponse>

    @GET("/klaklouk/v1/api/result")
    fun getResult(): Single<ResultsResponse>

    @POST("/klaklouk/v1/api/betting")
    fun createBetting(@Body createBetting: CreateBetting): Single<BettingResponse>

    @GET("/klaklouk/v1/api/betting/current")
    fun getCurrentBetting(): Single<CurrentResponse>

    @GET("/klaklouk/v1/api/betting/today")
    fun getTodayReport(): Single<TodayResponse>

    @GET("/klaklouk/v1/api/button")
    fun getButton(): Single<ButtonResponse>

    @POST("/klaklouk/v1/api/report/deposit")
    fun getReportDeposit(@Body reportBetting: ReportBody): Single<ReportDepositResponse>

    @POST("/klaklouk/v1/api/report/withdraw")
    fun getReportWithdraw(@Body reportBetting: ReportBody): Single<ReportWithdrawResponse>

    @POST("/klaklouk/v1/api/report/betting")
    fun getReportOne(@Body reportBetting: ReportBody): Single<ReportOneResponse>

    @POST("/klaklouk/v1/api/result/filter")
    fun getReportTwo(@Body reportBetting: ReportBody): Single<ReportTwoResponse>

    @GET("/klaklouk/v1/api/report")
    fun getReportThree(): Single<ReportThreeResponse>
}