import type { QueryKey, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
import type { AdminStatus, DrawResult, ErrorResponse, HealthStatus, ParticipantInput, TogglePrizeInput } from './api.schemas';
import { customFetch } from '../custom-fetch';
import type { ErrorType, BodyType } from '../custom-fetch';
type AwaitedInput<T> = PromiseLike<T> | T;
type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;
type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
export declare const getHealthCheckUrl: () => string;
/**
 * Returns server health status
 * @summary Health check
 */
export declare const healthCheck: (options?: Parameters<typeof customFetch>[1]) => Promise<HealthStatus>;
export declare const getHealthCheckQueryKey: () => readonly ["/api/healthz"];
export declare const getHealthCheckQueryOptions: <TData = Awaited<ReturnType<typeof healthCheck>>, TError = ErrorType<unknown>>(options?: {
    query?: UseQueryOptions<Awaited<ReturnType<typeof healthCheck>>, TError, TData>;
    request?: SecondParameter<typeof customFetch>;
}) => UseQueryOptions<Awaited<ReturnType<typeof healthCheck>>, TError, TData> & {
    queryKey: QueryKey;
};
export type HealthCheckQueryResult = NonNullable<Awaited<ReturnType<typeof healthCheck>>>;
export type HealthCheckQueryError = ErrorType<unknown>;
/**
 * @summary Health check
 */
export declare function useHealthCheck<TData = Awaited<ReturnType<typeof healthCheck>>, TError = ErrorType<unknown>>(options?: {
    query?: UseQueryOptions<Awaited<ReturnType<typeof healthCheck>>, TError, TData>;
    request?: SecondParameter<typeof customFetch>;
}): UseQueryResult<TData, TError> & {
    queryKey: QueryKey;
};
export declare const getRegisterParticipantUrl: () => string;
/**
 * Registers a participant and returns the drawn prize based on cargo restrictions and daily limits
 * @summary Register participant and draw prize
 */
export declare const registerParticipant: (participantInput: ParticipantInput, options?: Parameters<typeof customFetch>[1]) => Promise<DrawResult>;
export declare const getRegisterParticipantMutationOptions: <TError = ErrorType<ErrorResponse>, TContext = unknown>(options?: {
    mutation?: UseMutationOptions<Awaited<ReturnType<typeof registerParticipant>>, TError, {
        data: BodyType<ParticipantInput>;
    }, TContext>;
    request?: SecondParameter<typeof customFetch>;
}) => UseMutationOptions<Awaited<ReturnType<typeof registerParticipant>>, TError, {
    data: BodyType<ParticipantInput>;
}, TContext>;
export type RegisterParticipantMutationResult = NonNullable<Awaited<ReturnType<typeof registerParticipant>>>;
export type RegisterParticipantMutationBody = BodyType<ParticipantInput>;
export type RegisterParticipantMutationError = ErrorType<ErrorResponse>;
/**
* @summary Register participant and draw prize
*/
export declare const useRegisterParticipant: <TError = ErrorType<ErrorResponse>, TContext = unknown>(options?: {
    mutation?: UseMutationOptions<Awaited<ReturnType<typeof registerParticipant>>, TError, {
        data: BodyType<ParticipantInput>;
    }, TContext>;
    request?: SecondParameter<typeof customFetch>;
}) => UseMutationResult<Awaited<ReturnType<typeof registerParticipant>>, TError, {
    data: BodyType<ParticipantInput>;
}, TContext>;
export declare const getGetAdminStatusUrl: () => string;
/**
 * Returns daily prize counters and enabled flags for special prizes
 * @summary Get admin status
 */
export declare const getAdminStatus: (options?: Parameters<typeof customFetch>[1]) => Promise<AdminStatus>;
export declare const getGetAdminStatusQueryKey: () => readonly ["/api/admin/status"];
export declare const getGetAdminStatusQueryOptions: <TData = Awaited<ReturnType<typeof getAdminStatus>>, TError = ErrorType<unknown>>(options?: {
    query?: UseQueryOptions<Awaited<ReturnType<typeof getAdminStatus>>, TError, TData>;
    request?: SecondParameter<typeof customFetch>;
}) => UseQueryOptions<Awaited<ReturnType<typeof getAdminStatus>>, TError, TData> & {
    queryKey: QueryKey;
};
export type GetAdminStatusQueryResult = NonNullable<Awaited<ReturnType<typeof getAdminStatus>>>;
export type GetAdminStatusQueryError = ErrorType<unknown>;
/**
 * @summary Get admin status
 */
export declare function useGetAdminStatus<TData = Awaited<ReturnType<typeof getAdminStatus>>, TError = ErrorType<unknown>>(options?: {
    query?: UseQueryOptions<Awaited<ReturnType<typeof getAdminStatus>>, TError, TData>;
    request?: SecondParameter<typeof customFetch>;
}): UseQueryResult<TData, TError> & {
    queryKey: QueryKey;
};
export declare const getAdminResetUrl: () => string;
/**
 * Resets all daily counters and state.json for a new day
 * @summary Reset daily counters
 */
export declare const adminReset: (options?: Parameters<typeof customFetch>[1]) => Promise<AdminStatus>;
export declare const getAdminResetMutationOptions: <TError = ErrorType<unknown>, TContext = unknown>(options?: {
    mutation?: UseMutationOptions<Awaited<ReturnType<typeof adminReset>>, TError, void, TContext>;
    request?: SecondParameter<typeof customFetch>;
}) => UseMutationOptions<Awaited<ReturnType<typeof adminReset>>, TError, void, TContext>;
export type AdminResetMutationResult = NonNullable<Awaited<ReturnType<typeof adminReset>>>;
export type AdminResetMutationError = ErrorType<unknown>;
/**
* @summary Reset daily counters
*/
export declare const useAdminReset: <TError = ErrorType<unknown>, TContext = unknown>(options?: {
    mutation?: UseMutationOptions<Awaited<ReturnType<typeof adminReset>>, TError, void, TContext>;
    request?: SecondParameter<typeof customFetch>;
}) => UseMutationResult<Awaited<ReturnType<typeof adminReset>>, TError, void, TContext>;
export declare const getAdminTogglePrizeUrl: () => string;
/**
 * Toggles Camarote Barretão or Treinamento de Bombas on/off
 * @summary Enable or disable a special prize
 */
export declare const adminTogglePrize: (togglePrizeInput: TogglePrizeInput, options?: Parameters<typeof customFetch>[1]) => Promise<AdminStatus>;
export declare const getAdminTogglePrizeMutationOptions: <TError = ErrorType<ErrorResponse>, TContext = unknown>(options?: {
    mutation?: UseMutationOptions<Awaited<ReturnType<typeof adminTogglePrize>>, TError, {
        data: BodyType<TogglePrizeInput>;
    }, TContext>;
    request?: SecondParameter<typeof customFetch>;
}) => UseMutationOptions<Awaited<ReturnType<typeof adminTogglePrize>>, TError, {
    data: BodyType<TogglePrizeInput>;
}, TContext>;
export type AdminTogglePrizeMutationResult = NonNullable<Awaited<ReturnType<typeof adminTogglePrize>>>;
export type AdminTogglePrizeMutationBody = BodyType<TogglePrizeInput>;
export type AdminTogglePrizeMutationError = ErrorType<ErrorResponse>;
/**
* @summary Enable or disable a special prize
*/
export declare const useAdminTogglePrize: <TError = ErrorType<ErrorResponse>, TContext = unknown>(options?: {
    mutation?: UseMutationOptions<Awaited<ReturnType<typeof adminTogglePrize>>, TError, {
        data: BodyType<TogglePrizeInput>;
    }, TContext>;
    request?: SecondParameter<typeof customFetch>;
}) => UseMutationResult<Awaited<ReturnType<typeof adminTogglePrize>>, TError, {
    data: BodyType<TogglePrizeInput>;
}, TContext>;
export {};
//# sourceMappingURL=api.d.ts.map