/*
 * Solidarity Mobility API
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * API version: 1.0.0
 * Generated by: OpenAPI Generator (https://openapi-generator.tech)
 */

package openapi

import (
	"context"
	"net/http"
)

// BookingsFilterAPIRouter defines the required methods for binding the api requests to a responses for the BookingsFilterAPI
// The BookingsFilterAPIRouter implementation should parse necessary information from the http request,
// pass the data to a BookingsFilterAPIServicer to perform the required actions, then write the service results to the http response.
type BookingsFilterAPIRouter interface {
	FilterBookingsByStatus(http.ResponseWriter, *http.Request)
}

// DriverAvailabilityAndScheduleAPIRouter defines the required methods for binding the api requests to a responses for the DriverAvailabilityAndScheduleAPI
// The DriverAvailabilityAndScheduleAPIRouter implementation should parse necessary information from the http request,
// pass the data to a DriverAvailabilityAndScheduleAPIServicer to perform the required actions, then write the service results to the http response.
type DriverAvailabilityAndScheduleAPIRouter interface {
	DriverPunctualAvailabilitiesPost(http.ResponseWriter, *http.Request)
	DriverRegularAvailabilitiesPost(http.ResponseWriter, *http.Request)
}

// InteractAPIRouter defines the required methods for binding the api requests to a responses for the InteractAPI
// The InteractAPIRouter implementation should parse necessary information from the http request,
// pass the data to a InteractAPIServicer to perform the required actions, then write the service results to the http response.
type InteractAPIRouter interface {
	GetBookings(http.ResponseWriter, *http.Request)
	PatchBookings(http.ResponseWriter, *http.Request)
	PostBookings(http.ResponseWriter, *http.Request)
	PostConnections(http.ResponseWriter, *http.Request)
}

// PassengerTripRequestAPIRouter defines the required methods for binding the api requests to a responses for the PassengerTripRequestAPI
// The PassengerTripRequestAPIRouter implementation should parse necessary information from the http request,
// pass the data to a PassengerTripRequestAPIServicer to perform the required actions, then write the service results to the http response.
type PassengerTripRequestAPIRouter interface {
	PassengerPost(http.ResponseWriter, *http.Request)
}

// SearchAPIRouter defines the required methods for binding the api requests to a responses for the SearchAPI
// The SearchAPIRouter implementation should parse necessary information from the http request,
// pass the data to a SearchAPIServicer to perform the required actions, then write the service results to the http response.
type SearchAPIRouter interface {
	GetDriverJourneys(http.ResponseWriter, *http.Request)
}

// BookingsFilterAPIServicer defines the api actions for the BookingsFilterAPI service
// This interface intended to stay up to date with the openapi yaml used to generate it,
// while the service implementation can be ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API.
type BookingsFilterAPIServicer interface {
	FilterBookingsByStatus(context.Context, string, string, string, string) (ImplResponse, error)
}

// DriverAvailabilityAndScheduleAPIServicer defines the api actions for the DriverAvailabilityAndScheduleAPI service
// This interface intended to stay up to date with the openapi yaml used to generate it,
// while the service implementation can be ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API.
type DriverAvailabilityAndScheduleAPIServicer interface {
	DriverPunctualAvailabilitiesPost(context.Context, DriverPunctualAvailabilitiesRequest) (ImplResponse, error)
	DriverRegularAvailabilitiesPost(context.Context, DriverRegularAvailabilitiesRequest) (ImplResponse, error)
}

// InteractAPIServicer defines the api actions for the InteractAPI service
// This interface intended to stay up to date with the openapi yaml used to generate it,
// while the service implementation can be ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API.
type InteractAPIServicer interface {
	GetBookings(context.Context, string, string) (ImplResponse, error)
	PatchBookings(context.Context, string, string, BookingStatus, string) (ImplResponse, error)
	PostBookings(context.Context, BookingRequest) (ImplResponse, error)
	PostConnections(context.Context, PostConnectionsRequest) (ImplResponse, error)
}

// PassengerTripRequestAPIServicer defines the api actions for the PassengerTripRequestAPI service
// This interface intended to stay up to date with the openapi yaml used to generate it,
// while the service implementation can be ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API.
type PassengerTripRequestAPIServicer interface {
	PassengerPost(context.Context, PassengerTripRequest) (ImplResponse, error)
}

// SearchAPIServicer defines the api actions for the SearchAPI service
// This interface intended to stay up to date with the openapi yaml used to generate it,
// while the service implementation can be ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API.
type SearchAPIServicer interface {
	GetDriverJourneys(context.Context, float32, float32, int32, string) (ImplResponse, error)
}
