/**
 * This file was auto-generated by openapi-typescript.
 * Do not make direct changes to the file.
 */

export interface paths {
    "/auth/v1/token": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Fazer login e obter token JWT */
        post: {
            parameters: {
                query: {
                    grant_type: "password";
                };
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["LoginRequest"];
                };
            };
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["LoginResponse"];
                    };
                };
                /** @description Credenciais inválidas */
                400: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Email ou senha incorretos */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/v1/logout": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Logout do usuário */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description Logout realizado */
                204: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Token inválido */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/v1/user": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Obter dados do usuário atual */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["User"];
                    };
                };
                /** @description Token inválido */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/functions/v1/user-info": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Obter informações completas do usuário */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["UserInfoResponse"];
                    };
                };
                /** @description Não autorizado */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Erro interno */
                500: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/functions/v1/create-user": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Criar novo usuário */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["CreateUserRequest"];
                };
            };
            responses: {
                /** @description Criado */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["CreateUserResponse"];
                    };
                };
                /** @description Dados inválidos */
                400: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não autorizado */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Sem permissão */
                403: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Erro interno */
                500: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/user_roles": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar roles de usuários */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["UserRole"][];
                    };
                };
            };
        };
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/profiles": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar perfis */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Profile"][];
                    };
                };
            };
        };
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Atualizar perfil (apenas próprio) */
        patch: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["ProfileInput"];
                };
            };
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Profile"];
                    };
                };
            };
        };
        trace?: never;
    };
    "/rest/v1/doctors": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar médicos */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Doctor"][];
                    };
                };
            };
        };
        put?: never;
        /** Criar médico */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["DoctorCreate"];
                };
            };
            responses: {
                /** @description Criado */
                201: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Doctor"];
                    };
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/doctors/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Buscar médico por ID */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Doctor"];
                    };
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        put?: never;
        post?: never;
        /** Deletar médico */
        delete: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description Removido */
                204: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        options?: never;
        head?: never;
        /** Atualizar médico */
        patch: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["DoctorUpdate"];
                };
            };
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        trace?: never;
    };
    "/rest/v1/patients": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar pacientes */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Patient"][];
                    };
                };
            };
        };
        put?: never;
        /** Criar paciente */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["PatientInput"];
                };
            };
            responses: {
                /** @description Criado */
                201: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Patient"];
                    };
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/patients/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Obter paciente por ID */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        put?: never;
        post?: never;
        /** Deletar paciente */
        delete: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description Removido */
                204: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        options?: never;
        head?: never;
        /** Atualizar paciente */
        patch: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["PatientInput"];
                };
            };
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        trace?: never;
    };
    "/rest/v1/reports": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar relatórios */
        get: {
            parameters: {
                query?: {
                    patient_id?: string;
                    status?: "draft" | "pending" | "completed" | "cancelled";
                };
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Report"][];
                    };
                };
            };
        };
        put?: never;
        /** Criar relatório */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["ReportInput"];
                };
            };
            responses: {
                /** @description Criado */
                201: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["Report"];
                    };
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/reports/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Obter relatório por ID */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        /** Atualizar relatório */
        patch: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["ReportInput"];
                };
            };
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        trace?: never;
    };
    "/rest/v1/patient_assignments": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar atribuições */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["PatientAssignment"][];
                    };
                };
            };
        };
        put?: never;
        /** Criar atribuição */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": components["schemas"]["PatientAssignmentInput"];
                };
            };
            responses: {
                /** @description Criado */
                201: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["PatientAssignment"];
                    };
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/v1/pacientes/{id}/foto": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Upload foto paciente */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "multipart/form-data": {
                        /** Format: binary */
                        foto: string;
                    };
                };
            };
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": {
                            foto_url?: string | null;
                            thumbnail_url?: string | null;
                        };
                    };
                };
                /** @description Não autorizado */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Paciente não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        /** Remover foto paciente */
        delete: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description Removido */
                204: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não autorizado */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Paciente não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/v1/pacientes/{id}/anexos": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar anexos do paciente */
        get: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["PacienteAnexo"][];
                    };
                };
                /** @description Não autorizado */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Paciente não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        put?: never;
        /** Adicionar anexo ao paciente */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                };
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "multipart/form-data": {
                        /** Format: binary */
                        arquivo: string;
                    };
                };
            };
            responses: {
                /** @description Criado */
                201: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["PacienteAnexo"];
                    };
                };
                /** @description Não autorizado */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Paciente não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/auth/v1/pacientes/{id}/anexos/{anexoId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Remover anexo do paciente */
        delete: {
            parameters: {
                query?: never;
                header?: never;
                path: {
                    id: string;
                    anexoId: string;
                };
                cookie?: never;
            };
            requestBody?: never;
            responses: {
                /** @description Removido */
                204: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não autorizado */
                401: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Não encontrado */
                404: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/pacientes/validar-cpf": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** Validar CPF de paciente (existência e formato) */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": {
                        cpf: string;
                    };
                };
            };
            responses: {
                /** @description OK */
                200: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content: {
                        "application/json": components["schemas"]["ValidacaoCPF"];
                    };
                };
                /** @description CPF inválido */
                400: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/functions/v1/sms": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /** [FUTURO] Enviar SMS */
        post: {
            parameters: {
                query?: never;
                header?: never;
                path?: never;
                cookie?: never;
            };
            requestBody?: {
                content: {
                    "application/json": {
                        to: string;
                        message: string;
                    };
                };
            };
            responses: {
                /** @description Aceito para processamento */
                202: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
                /** @description Payload inválido */
                400: {
                    headers: {
                        [name: string]: unknown;
                    };
                    content?: never;
                };
            };
        };
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/functions/v1/get-available-slots": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Buscar horários disponíveis
         * @description Retorna os horários disponíveis de um médico em um período
         */
        post: operations["getAvailableSlots"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/appointments": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Listar agendamentos
         * @description Lista todos os agendamentos com filtros opcionais
         */
        get: operations["listAppointments"];
        put?: never;
        /**
         * Criar agendamento
         * @description Cria um novo agendamento
         */
        post: operations["createAppointment"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/appointments/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Buscar agendamento
         * @description Retorna um agendamento específico
         */
        get: operations["getAppointment"];
        put?: never;
        post?: never;
        /**
         * Deletar agendamento
         * @description Remove um agendamento
         */
        delete: operations["deleteAppointment"];
        options?: never;
        head?: never;
        /**
         * Atualizar agendamento
         * @description Atualiza um agendamento existente
         */
        patch: operations["updateAppointment"];
        trace?: never;
    };
    "/rest/v1/doctor_availability": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar disponibilidades dos médicos */
        get: operations["listDoctorAvailability"];
        put?: never;
        /** Criar disponibilidade */
        post: operations["createDoctorAvailability"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/doctor_availability/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Deletar disponibilidade */
        delete: operations["deleteDoctorAvailability"];
        options?: never;
        head?: never;
        /** Atualizar disponibilidade */
        patch: operations["updateDoctorAvailability"];
        trace?: never;
    };
    "/rest/v1/doctor_exceptions": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /** Listar exceções na agenda dos médicos */
        get: operations["listDoctorExceptions"];
        put?: never;
        /** Criar exceção (bloqueio/liberação) */
        post: operations["createDoctorException"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/rest/v1/doctor_exceptions/{id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        post?: never;
        /** Deletar exceção */
        delete: operations["deleteDoctorException"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
}
export type webhooks = Record<string, never>;
export interface components {
    schemas: {
        DoctorAvailability: {
            /** Format: uuid */
            id?: string;
            /** Format: uuid */
            doctor_id?: string;
            /** @enum {string} */
            weekday?: "segunda" | "terca" | "quarta" | "quinta" | "sexta" | "sabado" | "domingo";
            /** @example 09:00:00 */
            start_time?: string;
            /** @example 17:00:00 */
            end_time?: string;
            /** @default 30 */
            slot_minutes: number;
            /** @enum {string} */
            appointment_type?: "presencial" | "telemedicina";
            /** @default true */
            active: boolean;
            /** Format: date-time */
            created_at?: string;
            /** Format: date-time */
            updated_at?: string;
            /** Format: uuid */
            created_by?: string;
            /** Format: uuid */
            updated_by?: string | null;
        };
        DoctorAvailabilityInput: {
            /** Format: uuid */
            doctor_id: string;
            /** @enum {string} */
            weekday: "segunda" | "terca" | "quarta" | "quinta" | "sexta" | "sabado" | "domingo";
            /** @example 09:00:00 */
            start_time: string;
            /** @example 17:00:00 */
            end_time: string;
            /** @default 30 */
            slot_minutes: number;
            /**
             * @default presencial
             * @enum {string}
             */
            appointment_type: "presencial" | "telemedicina";
            /** @default true */
            active: boolean;
        };
        DoctorAvailabilityUpdate: {
            /** @enum {string} */
            weekday?: "segunda" | "terca" | "quarta" | "quinta" | "sexta" | "sabado" | "domingo";
            start_time?: string;
            end_time?: string;
            slot_minutes?: number;
            /** @enum {string} */
            appointment_type?: "presencial" | "telemedicina";
            active?: boolean;
        };
        DoctorException: {
            /** Format: uuid */
            id?: string;
            /** Format: uuid */
            doctor_id?: string;
            /** Format: date */
            date?: string;
            /** @example 09:00:00 */
            start_time?: string | null;
            /** @example 12:00:00 */
            end_time?: string | null;
            /**
             * @description bloqueio = bloquear horários, liberacao = liberar horários fora da disponibilidade
             * @enum {string}
             */
            kind?: "bloqueio" | "liberacao";
            reason?: string | null;
            /** Format: date-time */
            created_at?: string;
            /** Format: uuid */
            created_by?: string;
        };
        DoctorExceptionInput: {
            /** Format: uuid */
            doctor_id: string;
            /**
             * Format: date
             * @example 2025-10-10
             */
            date: string;
            /** @example 09:00:00 */
            start_time?: string | null;
            /** @example 12:00:00 */
            end_time?: string | null;
            /** @enum {string} */
            kind: "bloqueio" | "liberacao";
            /** @example Férias */
            reason?: string | null;
        };
        LoginRequest: {
            /** Format: email */
            email: string;
            password: string;
        };
        AuthUser: {
            id?: string;
            /** Format: email */
            email?: string;
            /** Format: date-time */
            email_confirmed_at?: string | null;
            /** Format: date-time */
            created_at?: string;
        };
        LoginResponse: {
            access_token?: string;
            token_type?: string;
            expires_in?: number;
            refresh_token?: string;
            user?: components["schemas"]["AuthUser"];
        };
        Error: {
            error?: string;
            message?: string;
        };
        User: {
            id?: string;
            /** Format: email */
            email?: string;
            /** Format: date-time */
            email_confirmed_at?: string | null;
            /** Format: date-time */
            created_at?: string;
            /** Format: date-time */
            last_sign_in_at?: string | null;
        };
        Profile: {
            id?: string;
            full_name?: string | null;
            email?: string | null;
            phone?: string | null;
            avatar_url?: string | null;
            disabled?: boolean;
            created_at?: string;
            updated_at?: string;
        };
        ProfileInput: {
            full_name?: string;
            avatar_url?: string;
            phone?: string;
        };
        DoctorCreate: {
            user_id?: string | null;
            crm: string;
            crm_uf: string;
            specialty?: string | null;
            full_name: string;
            cpf: string;
            email: string;
            phone_mobile?: string | null;
            phone2?: string | null;
            cep?: string | null;
            street?: string | null;
            number?: string | null;
            complement?: string | null;
            neighborhood?: string | null;
            city?: string | null;
            state?: string | null;
            birth_date?: string | null;
            rg?: string | null;
            active?: boolean;
        };
        DoctorUpdate: {
            user_id?: string | null;
            crm?: string;
            crm_uf?: string;
            specialty?: string | null;
            full_name?: string;
            cpf?: string;
            email?: string;
            phone_mobile?: string | null;
            phone2?: string | null;
            cep?: string | null;
            street?: string | null;
            number?: string | null;
            complement?: string | null;
            neighborhood?: string | null;
            city?: string | null;
            state?: string | null;
            birth_date?: string | null;
            rg?: string | null;
            active?: boolean;
        };
        Doctor: {
            id?: string;
            user_id?: string | null;
            crm?: string;
            crm_uf?: string;
            specialty?: string | null;
            full_name?: string;
            cpf?: string;
            email?: string;
            phone_mobile?: string | null;
            phone2?: string | null;
            cep?: string | null;
            street?: string | null;
            number?: string | null;
            complement?: string | null;
            neighborhood?: string | null;
            city?: string | null;
            state?: string | null;
            birth_date?: string | null;
            rg?: string | null;
            active?: boolean;
            created_at?: string;
            updated_at?: string;
            created_by?: string;
            updated_by?: string | null;
        };
        PatientInput: {
            full_name: string;
            cpf: string;
            email: string;
            phone_mobile: string;
            birth_date?: string | null;
            social_name?: string | null;
            sex?: string | null;
            blood_type?: string | null;
            weight_kg?: number | null;
            height_m?: number | null;
            street?: string | null;
            number?: string | null;
            complement?: string | null;
            neighborhood?: string | null;
            city?: string | null;
            state?: string | null;
            cep?: string | null;
        };
        Patient: {
            id?: string;
            full_name?: string;
            cpf?: string;
            email?: string;
            phone_mobile?: string;
            birth_date?: string | null;
            social_name?: string | null;
            sex?: string | null;
            blood_type?: string | null;
            weight_kg?: number | null;
            height_m?: number | null;
            bmi?: number | null;
            street?: string | null;
            number?: string | null;
            complement?: string | null;
            neighborhood?: string | null;
            city?: string | null;
            state?: string | null;
            cep?: string | null;
            created_at?: string;
            updated_at?: string;
            created_by?: string;
        };
        ReportInput: {
            patient_id: string;
            order_number: string;
            exam?: string | null;
            diagnosis?: string | null;
            conclusion?: string | null;
            cid_code?: string | null;
            content_html?: string | null;
            content_json?: Record<string, never> | null;
            /** @enum {string|null} */
            status?: "draft" | "pending" | "completed" | "cancelled" | null;
            requested_by?: string | null;
            due_at?: string | null;
            hide_date?: boolean | null;
            hide_signature?: boolean | null;
        };
        Report: {
            id?: string;
            patient_id?: string;
            order_number?: string;
            exam?: string | null;
            diagnosis?: string | null;
            conclusion?: string | null;
            cid_code?: string | null;
            content_html?: string | null;
            content_json?: Record<string, never> | null;
            status?: string;
            requested_by?: string | null;
            due_at?: string | null;
            hide_date?: boolean | null;
            hide_signature?: boolean | null;
            created_at?: string;
            updated_at?: string;
            created_by?: string;
        };
        PatientAssignmentInput: {
            patient_id: string;
            user_id: string;
            /** @enum {string} */
            role: "medico" | "enfermeiro";
        };
        PatientAssignment: {
            id?: string;
            patient_id?: string;
            user_id?: string;
            role?: string;
            created_at?: string;
            created_by?: string;
        };
        UserRole: {
            id?: string;
            user_id?: string;
            role?: string;
            created_at?: string;
        };
        CreateUserRequest: {
            email: string;
            password: string;
            full_name: string;
            phone?: string | null;
            /** @enum {string} */
            role: "admin" | "gestor" | "medico" | "secretaria" | "user";
        };
        CreateUserResponse: {
            success?: boolean;
            user?: {
                id?: string;
                email?: string;
                full_name?: string;
                phone?: string | null;
                role?: string;
            };
        };
        UserInfoResponse: {
            user?: components["schemas"]["User"];
            profile?: components["schemas"]["Profile"];
            roles?: string[];
            permissions?: {
                isAdmin?: boolean;
                isManager?: boolean;
                isDoctor?: boolean;
                isSecretary?: boolean;
                isAdminOrManager?: boolean;
            };
        };
        PacienteAnexo: {
            id?: string;
            nome?: string;
            url?: string | null;
            tipo?: string | null;
            tamanho?: number | null;
            categoria?: string | null;
            uploaded_at?: string | null;
            uploaded_by?: string | null;
        };
        ValidacaoCPF: {
            valido?: boolean;
            existe?: boolean;
            paciente_id?: string | null;
        };
        AppointmentInput: {
            /**
             * Format: uuid
             * @example 123e4567-e89b-12d3-a456-426614174000
             */
            patient_id: string;
            /**
             * Format: uuid
             * @example 123e4567-e89b-12d3-a456-426614174001
             */
            doctor_id: string;
            /**
             * Format: date-time
             * @example 2025-10-10T09:00:00.000Z
             */
            scheduled_at: string;
            /**
             * @default 30
             * @example 30
             */
            duration_minutes: number;
            /**
             * @default presencial
             * @enum {string}
             */
            appointment_type: "presencial" | "telemedicina";
            /** @example Dor de cabeça há 3 dias */
            chief_complaint?: string;
            /** @example Prefiro horário pela manhã */
            patient_notes?: string;
            /** @example Unimed */
            insurance_provider?: string;
        };
        AppointmentUpdate: {
            /** Format: date-time */
            scheduled_at?: string;
            duration_minutes?: number;
            /** @enum {string} */
            status?: "requested" | "confirmed" | "checked_in" | "in_progress" | "completed" | "cancelled" | "no_show";
            chief_complaint?: string;
            notes?: string;
            patient_notes?: string;
            insurance_provider?: string;
            /** Format: date-time */
            checked_in_at?: string;
            /** Format: date-time */
            completed_at?: string;
            /** Format: date-time */
            cancelled_at?: string;
            cancellation_reason?: string;
        };
        Appointment: {
            /** Format: uuid */
            id?: string;
            /** @example APT-2025-0001 */
            order_number?: string;
            /** Format: uuid */
            patient_id?: string;
            /** Format: uuid */
            doctor_id?: string;
            /** Format: date-time */
            scheduled_at?: string;
            /** @default 30 */
            duration_minutes: number;
            /** @enum {string} */
            appointment_type?: "presencial" | "telemedicina";
            /** @enum {string} */
            status?: "requested" | "confirmed" | "checked_in" | "in_progress" | "completed" | "cancelled" | "no_show";
            chief_complaint?: string | null;
            patient_notes?: string | null;
            notes?: string | null;
            insurance_provider?: string | null;
            /** Format: date-time */
            checked_in_at?: string | null;
            /** Format: date-time */
            completed_at?: string | null;
            /** Format: date-time */
            cancelled_at?: string | null;
            cancellation_reason?: string | null;
            /** Format: date-time */
            created_at?: string;
            /** Format: date-time */
            updated_at?: string;
            /** Format: uuid */
            created_by?: string;
            /** Format: uuid */
            updated_by?: string | null;
        };
    };
    responses: never;
    parameters: never;
    requestBodies: never;
    headers: never;
    pathItems: never;
}
export type $defs = Record<string, never>;
export interface operations {
    getAvailableSlots: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": {
                    /**
                     * Format: uuid
                     * @example 123e4567-e89b-12d3-a456-426614174000
                     */
                    doctor_id: string;
                    /**
                     * Format: date-time
                     * @example 2025-10-10T00:00:00.000Z
                     */
                    start_date: string;
                    /**
                     * Format: date-time
                     * @example 2025-10-17T23:59:59.999Z
                     */
                    end_date: string;
                    /**
                     * @default presencial
                     * @enum {string}
                     */
                    appointment_type?: "presencial" | "telemedicina";
                };
            };
        };
        responses: {
            /** @description Horários disponíveis retornados com sucesso */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": {
                        slots?: {
                            /**
                             * Format: date-time
                             * @example 2025-10-10T09:00:00.000Z
                             */
                            datetime?: string;
                            /** @example true */
                            available?: boolean;
                        }[];
                    };
                };
            };
        };
    };
    listAppointments: {
        parameters: {
            query?: {
                select?: string;
                /** @description Filtrar por médico */
                doctor_id?: string;
                /** @description Filtrar por paciente */
                patient_id?: string;
                /** @description Filtrar por status */
                status?: "requested" | "confirmed" | "checked_in" | "in_progress" | "completed" | "cancelled" | "no_show";
                /** @description Filtrar por data/hora (usar operadores like gte.2025-10-10) */
                scheduled_at?: string;
                /** @description Ordenação */
                order?: string;
                /** @description Limite de resultados */
                limit?: number;
                /** @description Paginação */
                offset?: number;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Lista de agendamentos */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["Appointment"][];
                };
            };
        };
    };
    createAppointment: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["AppointmentInput"];
            };
        };
        responses: {
            /** @description Agendamento criado */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["Appointment"];
                };
            };
        };
    };
    getAppointment: {
        parameters: {
            query?: {
                select?: string;
            };
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Agendamento encontrado */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["Appointment"];
                };
            };
        };
    };
    deleteAppointment: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Agendamento deletado */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    updateAppointment: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["AppointmentUpdate"];
            };
        };
        responses: {
            /** @description Agendamento atualizado */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["Appointment"];
                };
            };
        };
    };
    listDoctorAvailability: {
        parameters: {
            query?: {
                select?: string;
                /** @description Filtrar por médico */
                doctor_id?: string;
                /** @description Filtrar por status ativo */
                active?: boolean;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Lista de disponibilidades */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["DoctorAvailability"][];
                };
            };
        };
    };
    createDoctorAvailability: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["DoctorAvailabilityInput"];
            };
        };
        responses: {
            /** @description Disponibilidade criada */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["DoctorAvailability"];
                };
            };
        };
    };
    deleteDoctorAvailability: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Removida */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
    updateDoctorAvailability: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["DoctorAvailabilityUpdate"];
            };
        };
        responses: {
            /** @description Disponibilidade atualizada */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["DoctorAvailability"];
                };
            };
        };
    };
    listDoctorExceptions: {
        parameters: {
            query?: {
                select?: string;
                /** @description Filtrar por médico */
                doctor_id?: string;
                /** @description Filtrar por data (YYYY-MM-DD) */
                date?: string;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Lista de exceções */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["DoctorException"][];
                };
            };
        };
    };
    createDoctorException: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["DoctorExceptionInput"];
            };
        };
        responses: {
            /** @description Exceção criada */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["DoctorException"];
                };
            };
        };
    };
    deleteDoctorException: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Removida */
            204: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
        };
    };
}
