// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.30.0

package database

import (
	"context"

	"github.com/jackc/pgx/v5/pgtype"
)

type Querier interface {
	AcceptVolunteerResponse(ctx context.Context, id int64) error
	ApproveRequest(ctx context.Context, arg ApproveRequestParams) error
	AssignRoleToUser(ctx context.Context, arg AssignRoleToUserParams) (UserRole, error)
	AssignVolunteerToRequest(ctx context.Context, arg AssignVolunteerToRequestParams) error
	BlockUser(ctx context.Context, id int64) error
	CalculateVolunteerAverageRating(ctx context.Context, volunteerID int64) (CalculateVolunteerAverageRatingRow, error)
	// ============================================================================
	// Хранимые процедуры
	// ============================================================================
	CallAcceptVolunteerResponse(ctx context.Context, arg CallAcceptVolunteerResponseParams) (CallAcceptVolunteerResponseRow, error)
	CallCompleteRequestWithRating(ctx context.Context, arg CallCompleteRequestWithRatingParams) (CallCompleteRequestWithRatingRow, error)
	CallModerateRequest(ctx context.Context, arg CallModerateRequestParams) (CallModerateRequestRow, error)
	CancelRequest(ctx context.Context, id int64) error
	CleanupExpiredSessions(ctx context.Context) error
	CleanupExpiredTokens(ctx context.Context) error
	CompleteRequest(ctx context.Context, id int64) error
	CountPendingResponsesByVolunteer(ctx context.Context, volunteerID int64) (int64, error)
	// ============================================================================
	// Статистика
	// ============================================================================
	CountRequestsByRequester(ctx context.Context, requesterID int64) (int64, error)
	CountRequestsByStatus(ctx context.Context, status NullRequestStatus) (int64, error)
	// ============================================================================
	// Подсчет заявок поблизости
	// ============================================================================
	CountRequestsNearby(ctx context.Context, arg CountRequestsNearbyParams) (int64, error)
	CountResponsesByRequest(ctx context.Context, requestID int64) (int64, error)
	// ============================================================================
	// Рейтинги
	// ============================================================================
	CreateRating(ctx context.Context, arg CreateRatingParams) (Rating, error)
	// ============================================================================
	// Refresh Tokens
	// ============================================================================
	CreateRefreshToken(ctx context.Context, arg CreateRefreshTokenParams) (RefreshToken, error)
	// Фаза 2A: Управление заявками (ВЫСОКИЙ ПРИОРИТЕТ)
	// CRUD операции для заявок на помощь
	// ============================================================================
	// Создание и получение заявок
	// ============================================================================
	CreateRequest(ctx context.Context, arg CreateRequestParams) (CreateRequestRow, error)
	// ============================================================================
	// История изменения статусов заявок
	// ============================================================================
	CreateStatusHistoryEntry(ctx context.Context, arg CreateStatusHistoryEntryParams) (RequestStatusHistory, error)
	// Фаза 1A: Аутентификация (КРИТИЧНО)
	// Запросы для регистрации, входа и управления токенами
	// ============================================================================
	// Пользователи
	// ============================================================================
	CreateUser(ctx context.Context, arg CreateUserParams) (CreateUserRow, error)
	// ============================================================================
	// User Sessions
	// ============================================================================
	CreateUserSession(ctx context.Context, arg CreateUserSessionParams) (UserSession, error)
	// Фаза 3: Отклики волонтеров и история статусов (СРЕДНИЙ ПРИОРИТЕТ)
	// Запросы для управления откликами волонтеров и историей изменения статусов заявок
	// ============================================================================
	// Отклики волонтеров
	// ============================================================================
	CreateVolunteerResponse(ctx context.Context, arg CreateVolunteerResponseParams) (VolunteerResponse, error)
	// ============================================================================
	// Удаление заявок
	// ============================================================================
	DeleteRequest(ctx context.Context, arg DeleteRequestParams) error
	EmailExists(ctx context.Context, email string) (bool, error)
	// ============================================================================
	// Поиск ближайших заявок для волонтера
	// ============================================================================
	FindNearestRequestsForVolunteer(ctx context.Context, arg FindNearestRequestsForVolunteerParams) ([]FindNearestRequestsForVolunteerRow, error)
	// ============================================================================
	// Поиск заявок в прямоугольной области (для карты)
	// ============================================================================
	FindRequestsInBounds(ctx context.Context, arg FindRequestsInBoundsParams) ([]FindRequestsInBoundsRow, error)
	// Фаза 2B: Геопространственные запросы (ВЫСОКИЙ ПРИОРИТЕТ)
	// PostGIS запросы для поиска заявок по геолокации
	// ============================================================================
	// Поиск заявок рядом с точкой
	// ============================================================================
	FindRequestsNearby(ctx context.Context, arg FindRequestsNearbyParams) ([]FindRequestsNearbyRow, error)
	// ============================================================================
	// Поиск волонтеров рядом с заявкой
	// ============================================================================
	FindVolunteersNearRequest(ctx context.Context, arg FindVolunteersNearRequestParams) ([]FindVolunteersNearRequestRow, error)
	GetLatestStatusChange(ctx context.Context, requestID int64) (GetLatestStatusChangeRow, error)
	GetModeratedRequests(ctx context.Context, arg GetModeratedRequestsParams) ([]GetModeratedRequestsRow, error)
	GetModeratorActionsByModerator(ctx context.Context, arg GetModeratorActionsByModeratorParams) ([]GetModeratorActionsByModeratorRow, error)
	// ============================================================================
	// Аудит действий модераторов
	// ============================================================================
	GetModeratorActionsByRequest(ctx context.Context, targetRequestID pgtype.Int8) ([]GetModeratorActionsByRequestRow, error)
	// ============================================================================
	// Модерация заявок
	// ============================================================================
	GetPendingModerationRequests(ctx context.Context, arg GetPendingModerationRequestsParams) ([]GetPendingModerationRequestsRow, error)
	GetPermissionByName(ctx context.Context, name string) (Permission, error)
	GetRatingByResponseID(ctx context.Context, volunteerResponseID int64) (Rating, error)
	GetRatingsByVolunteer(ctx context.Context, arg GetRatingsByVolunteerParams) ([]GetRatingsByVolunteerRow, error)
	GetRefreshToken(ctx context.Context, token string) (RefreshToken, error)
	GetRequestByID(ctx context.Context, id int64) (GetRequestByIDRow, error)
	GetRequestStatusHistory(ctx context.Context, requestID int64) ([]GetRequestStatusHistoryRow, error)
	GetRequestTypeByID(ctx context.Context, id int64) (RequestType, error)
	GetRequestTypeByName(ctx context.Context, name string) (RequestType, error)
	GetRequestsByRequester(ctx context.Context, arg GetRequestsByRequesterParams) ([]GetRequestsByRequesterRow, error)
	GetRequestsByStatus(ctx context.Context, arg GetRequestsByStatusParams) ([]GetRequestsByStatusRow, error)
	GetResponseByID(ctx context.Context, id int64) (GetResponseByIDRow, error)
	GetResponsesByRequest(ctx context.Context, requestID int64) ([]GetResponsesByRequestRow, error)
	GetResponsesByVolunteer(ctx context.Context, arg GetResponsesByVolunteerParams) ([]GetResponsesByVolunteerRow, error)
	GetRoleByID(ctx context.Context, id int64) (Role, error)
	// Фаза 1B: RBAC (Role-Based Access Control) (КРИТИЧНО)
	// Запросы для управления ролями и правами доступа
	// ============================================================================
	// Роли
	// ============================================================================
	GetRoleByName(ctx context.Context, name string) (Role, error)
	GetUserByEmail(ctx context.Context, email string) (GetUserByEmailRow, error)
	GetUserByID(ctx context.Context, id int64) (GetUserByIDRow, error)
	// ============================================================================
	// Права доступа
	// ============================================================================
	GetUserPermissions(ctx context.Context, id int64) ([]GetUserPermissionsRow, error)
	// Фаза 1C: Управление профилем (КРИТИЧНО)
	// Запросы для получения и обновления профилей пользователей
	// ============================================================================
	// Профиль пользователя
	// ============================================================================
	GetUserProfile(ctx context.Context, id int64) (GetUserProfileRow, error)
	// ============================================================================
	// Пользовательские роли
	// ============================================================================
	GetUserRoles(ctx context.Context, userID int64) ([]Role, error)
	GetUserSession(ctx context.Context, sessionToken string) (UserSession, error)
	// ============================================================================
	// Поиск пользователей
	// ============================================================================
	GetUsersByIDs(ctx context.Context, dollar_1 []int64) ([]GetUsersByIDsRow, error)
	GetVolunteerStatistics(ctx context.Context, id int64) (GetVolunteerStatisticsRow, error)
	InvalidateAllUserSessions(ctx context.Context, userID int64) error
	InvalidateUserSession(ctx context.Context, id int64) error
	ListAllRoles(ctx context.Context) ([]Role, error)
	ListPermissionsByRole(ctx context.Context, roleID int64) ([]Permission, error)
	// ============================================================================
	// Типы заявок
	// ============================================================================
	ListRequestTypes(ctx context.Context) ([]RequestType, error)
	ModerateRequest(ctx context.Context, arg ModerateRequestParams) error
	RejectRequest(ctx context.Context, arg RejectRequestParams) error
	RejectVolunteerResponse(ctx context.Context, id int64) error
	RemoveRoleFromUser(ctx context.Context, arg RemoveRoleFromUserParams) error
	RevokeAllUserTokens(ctx context.Context, userID int64) error
	RevokeRefreshToken(ctx context.Context, id int64) error
	SearchUsersByName(ctx context.Context, arg SearchUsersByNameParams) ([]SearchUsersByNameRow, error)
	SoftDeleteUser(ctx context.Context, id int64) error
	UnblockUser(ctx context.Context, id int64) error
	UpdateLastLogin(ctx context.Context, id int64) error
	UpdateRating(ctx context.Context, arg UpdateRatingParams) error
	// ============================================================================
	// Обновление заявок
	// ============================================================================
	UpdateRequestStatus(ctx context.Context, arg UpdateRequestStatusParams) error
	UpdateSessionActivity(ctx context.Context, id int64) error
	UpdateUserLocation(ctx context.Context, arg UpdateUserLocationParams) error
	UpdateUserPassword(ctx context.Context, arg UpdateUserPasswordParams) error
	UpdateUserProfile(ctx context.Context, arg UpdateUserProfileParams) error
	UserHasAnyPermission(ctx context.Context, arg UserHasAnyPermissionParams) (bool, error)
	UserHasPermission(ctx context.Context, arg UserHasPermissionParams) (bool, error)
	UserHasRole(ctx context.Context, arg UserHasRoleParams) (bool, error)
	UserHasRoleByName(ctx context.Context, arg UserHasRoleByNameParams) (bool, error)
	VerifyUserEmail(ctx context.Context, id int64) error
}

var _ Querier = (*Queries)(nil)
