export type Json =
  | string
  | number
  | boolean
  | null
  | { [key: string]: Json | undefined }
  | Json[]

export type Database = {
  // Allows to automatically instantiate createClient with right options
  // instead of createClient<Database, { PostgrestVersion: 'XX' }>(URL, KEY)
  __InternalSupabase: {
    PostgrestVersion: "14.5"
  }
  public: {
    Tables: {
      categorias: {
        Row: {
          a_cocina: boolean
          creado_en: string
          dias_semana: number[] | null
          grupo: string
          hora_desde: string | null
          hora_hasta: string | null
          id: string
          nombre: string
          orden: number
          puesto_id: string | null
          restaurante_id: string
        }
        Insert: {
          a_cocina?: boolean
          creado_en?: string
          dias_semana?: number[] | null
          grupo?: string
          hora_desde?: string | null
          hora_hasta?: string | null
          id?: string
          nombre: string
          orden?: number
          puesto_id?: string | null
          restaurante_id: string
        }
        Update: {
          a_cocina?: boolean
          creado_en?: string
          dias_semana?: number[] | null
          grupo?: string
          hora_desde?: string | null
          hora_hasta?: string | null
          id?: string
          nombre?: string
          orden?: number
          puesto_id?: string | null
          restaurante_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "categorias_puesto_id_fkey"
            columns: ["puesto_id"]
            isOneToOne: false
            referencedRelation: "puestos_impresion"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "categorias_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      cerebrito_config_nube: {
        Row: {
          actualizado_en: string
          config: Json
          restaurante_id: string
        }
        Insert: {
          actualizado_en?: string
          config?: Json
          restaurante_id: string
        }
        Update: {
          actualizado_en?: string
          config?: Json
          restaurante_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "cerebrito_config_nube_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: true
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      cerebritos: {
        Row: {
          detalle: Json | null
          restaurante_id: string
          version: string | null
          visto_en: string
        }
        Insert: {
          detalle?: Json | null
          restaurante_id: string
          version?: string | null
          visto_en?: string
        }
        Update: {
          detalle?: Json | null
          restaurante_id?: string
          version?: string | null
          visto_en?: string
        }
        Relationships: [
          {
            foreignKeyName: "cerebritos_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: true
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      clientes: {
        Row: {
          creado_en: string
          id: string
          nombre: string | null
          pedidos_count: number
          restaurante_id: string
          telefono: string
          total_usd: number
          ultimo_pedido_en: string
        }
        Insert: {
          creado_en?: string
          id?: string
          nombre?: string | null
          pedidos_count?: number
          restaurante_id: string
          telefono: string
          total_usd?: number
          ultimo_pedido_en?: string
        }
        Update: {
          creado_en?: string
          id?: string
          nombre?: string | null
          pedidos_count?: number
          restaurante_id?: string
          telefono?: string
          total_usd?: number
          ultimo_pedido_en?: string
        }
        Relationships: [
          {
            foreignKeyName: "clientes_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      comensales_mesa: {
        Row: {
          creado_en: string
          cuenta_id: string
          id: string
          nombre: string
          orden: number
          restaurante_id: string
        }
        Insert: {
          creado_en?: string
          cuenta_id: string
          id?: string
          nombre: string
          orden?: number
          restaurante_id: string
        }
        Update: {
          creado_en?: string
          cuenta_id?: string
          id?: string
          nombre?: string
          orden?: number
          restaurante_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "comensales_mesa_cuenta_id_fkey"
            columns: ["cuenta_id"]
            isOneToOne: false
            referencedRelation: "cuentas_mesa"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "comensales_mesa_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      compras_ingredientes: {
        Row: {
          cantidad_base: number
          costo_total_usd: number
          creado_en: string
          creado_por: string | null
          descripcion_original: string | null
          fuente: string
          id: string
          ingrediente_id: string
          restaurante_id: string
        }
        Insert: {
          cantidad_base: number
          costo_total_usd: number
          creado_en?: string
          creado_por?: string | null
          descripcion_original?: string | null
          fuente?: string
          id?: string
          ingrediente_id: string
          restaurante_id: string
        }
        Update: {
          cantidad_base?: number
          costo_total_usd?: number
          creado_en?: string
          creado_por?: string | null
          descripcion_original?: string | null
          fuente?: string
          id?: string
          ingrediente_id?: string
          restaurante_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "compras_ingredientes_ingrediente_id_fkey"
            columns: ["ingrediente_id"]
            isOneToOne: false
            referencedRelation: "ingredientes"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "compras_ingredientes_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      cuentas_mesa: {
        Row: {
          abierta_en: string
          cerrada_en: string | null
          cliente_correo: string | null
          cliente_direccion_fiscal: string | null
          cliente_razon_social: string | null
          cliente_rif: string | null
          comensales: number
          comprobante_url: string | null
          estado: string
          id: string
          mesa: string
          mesero_id: string | null
          mesero_nombre: string | null
          metodo_pago: string | null
          modo_cuenta: string
          pago_solicitado_en: string | null
          referencia: string | null
          restaurante_id: string
        }
        Insert: {
          abierta_en?: string
          cerrada_en?: string | null
          cliente_correo?: string | null
          cliente_direccion_fiscal?: string | null
          cliente_razon_social?: string | null
          cliente_rif?: string | null
          comensales?: number
          comprobante_url?: string | null
          estado?: string
          id?: string
          mesa: string
          mesero_id?: string | null
          mesero_nombre?: string | null
          metodo_pago?: string | null
          modo_cuenta?: string
          pago_solicitado_en?: string | null
          referencia?: string | null
          restaurante_id: string
        }
        Update: {
          abierta_en?: string
          cerrada_en?: string | null
          cliente_correo?: string | null
          cliente_direccion_fiscal?: string | null
          cliente_razon_social?: string | null
          cliente_rif?: string | null
          comensales?: number
          comprobante_url?: string | null
          estado?: string
          id?: string
          mesa?: string
          mesero_id?: string | null
          mesero_nombre?: string | null
          metodo_pago?: string | null
          modo_cuenta?: string
          pago_solicitado_en?: string | null
          referencia?: string | null
          restaurante_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "cuentas_mesa_mesero_id_fkey"
            columns: ["mesero_id"]
            isOneToOne: false
            referencedRelation: "perfiles"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "cuentas_mesa_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      eventos_web: {
        Row: {
          creado_en: string
          evento: string
          id: number
          origen: string | null
          pantalla: string | null
          sesion: string | null
          utm_campaign: string | null
          utm_medium: string | null
          utm_source: string | null
        }
        Insert: {
          creado_en?: string
          evento: string
          id?: never
          origen?: string | null
          pantalla?: string | null
          sesion?: string | null
          utm_campaign?: string | null
          utm_medium?: string | null
          utm_source?: string | null
        }
        Update: {
          creado_en?: string
          evento?: string
          id?: never
          origen?: string | null
          pantalla?: string | null
          sesion?: string | null
          utm_campaign?: string | null
          utm_medium?: string | null
          utm_source?: string | null
        }
        Relationships: []
      }
      gastos_caja: {
        Row: {
          archivado: boolean
          concepto: string
          creado_en: string
          id: string
          monto_usd: number
          registrado_por: string | null
          restaurante_id: string
        }
        Insert: {
          archivado?: boolean
          concepto: string
          creado_en?: string
          id?: string
          monto_usd: number
          registrado_por?: string | null
          restaurante_id: string
        }
        Update: {
          archivado?: boolean
          concepto?: string
          creado_en?: string
          id?: string
          monto_usd?: number
          registrado_por?: string | null
          restaurante_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "gastos_caja_registrado_por_fkey"
            columns: ["registrado_por"]
            isOneToOne: false
            referencedRelation: "perfiles"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "gastos_caja_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      ingredientes: {
        Row: {
          activo: boolean
          costo_actualizado_en: string | null
          costo_por_unidad: number
          creado_en: string
          id: string
          nombre: string
          restaurante_id: string
          unidad_base: string
        }
        Insert: {
          activo?: boolean
          costo_actualizado_en?: string | null
          costo_por_unidad?: number
          creado_en?: string
          id?: string
          nombre: string
          restaurante_id: string
          unidad_base?: string
        }
        Update: {
          activo?: boolean
          costo_actualizado_en?: string | null
          costo_por_unidad?: number
          creado_en?: string
          id?: string
          nombre?: string
          restaurante_id?: string
          unidad_base?: string
        }
        Relationships: [
          {
            foreignKeyName: "ingredientes_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      llamadas_mesa: {
        Row: {
          atendida_en: string | null
          atendida_por: string | null
          creada_en: string
          cuenta_id: string
          id: string
          mesa: string
          nota: string | null
          restaurante_id: string
          tipo: string
        }
        Insert: {
          atendida_en?: string | null
          atendida_por?: string | null
          creada_en?: string
          cuenta_id: string
          id?: string
          mesa: string
          nota?: string | null
          restaurante_id: string
          tipo: string
        }
        Update: {
          atendida_en?: string | null
          atendida_por?: string | null
          creada_en?: string
          cuenta_id?: string
          id?: string
          mesa?: string
          nota?: string | null
          restaurante_id?: string
          tipo?: string
        }
        Relationships: [
          {
            foreignKeyName: "llamadas_mesa_atendida_por_fkey"
            columns: ["atendida_por"]
            isOneToOne: false
            referencedRelation: "perfiles"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "llamadas_mesa_cuenta_id_fkey"
            columns: ["cuenta_id"]
            isOneToOne: false
            referencedRelation: "cuentas_mesa"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "llamadas_mesa_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      pagos: {
        Row: {
          comprobante_url: string | null
          confirmado_en: string | null
          confirmado_por: string | null
          creado_en: string
          estado: string
          id: string
          metodo: string
          monto_usd: number
          pedido_id: string
          referencia: string | null
        }
        Insert: {
          comprobante_url?: string | null
          confirmado_en?: string | null
          confirmado_por?: string | null
          creado_en?: string
          estado?: string
          id?: string
          metodo: string
          monto_usd: number
          pedido_id: string
          referencia?: string | null
        }
        Update: {
          comprobante_url?: string | null
          confirmado_en?: string | null
          confirmado_por?: string | null
          creado_en?: string
          estado?: string
          id?: string
          metodo?: string
          monto_usd?: number
          pedido_id?: string
          referencia?: string | null
        }
        Relationships: [
          {
            foreignKeyName: "pagos_confirmado_por_fkey"
            columns: ["confirmado_por"]
            isOneToOne: false
            referencedRelation: "perfiles"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pagos_pedido_id_fkey"
            columns: ["pedido_id"]
            isOneToOne: false
            referencedRelation: "pedidos"
            referencedColumns: ["id"]
          },
        ]
      }
      pagos_mesa: {
        Row: {
          comensal_id: string | null
          comprobante_url: string | null
          creado_en: string
          cuenta_id: string
          id: string
          mesero_id: string | null
          mesero_nombre: string | null
          metodo: string
          monto_usd: number
          nota: string | null
          propina_usd: number
          referencia: string | null
          restaurante_id: string
          verificado: boolean
        }
        Insert: {
          comensal_id?: string | null
          comprobante_url?: string | null
          creado_en?: string
          cuenta_id: string
          id?: string
          mesero_id?: string | null
          mesero_nombre?: string | null
          metodo: string
          monto_usd: number
          nota?: string | null
          propina_usd?: number
          referencia?: string | null
          restaurante_id: string
          verificado?: boolean
        }
        Update: {
          comensal_id?: string | null
          comprobante_url?: string | null
          creado_en?: string
          cuenta_id?: string
          id?: string
          mesero_id?: string | null
          mesero_nombre?: string | null
          metodo?: string
          monto_usd?: number
          nota?: string | null
          propina_usd?: number
          referencia?: string | null
          restaurante_id?: string
          verificado?: boolean
        }
        Relationships: [
          {
            foreignKeyName: "pagos_mesa_comensal_id_fkey"
            columns: ["comensal_id"]
            isOneToOne: false
            referencedRelation: "comensales_mesa"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pagos_mesa_cuenta_id_fkey"
            columns: ["cuenta_id"]
            isOneToOne: false
            referencedRelation: "cuentas_mesa"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pagos_mesa_mesero_id_fkey"
            columns: ["mesero_id"]
            isOneToOne: false
            referencedRelation: "perfiles"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pagos_mesa_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      pedido_items: {
        Row: {
          a_cocina: boolean
          base_usd: number | null
          cantidad: number
          id: string
          iva_alicuota: number | null
          iva_usd: number | null
          nombre: string
          nota: string | null
          pedido_id: string
          precio_usd: number
          producto_id: string | null
        }
        Insert: {
          a_cocina?: boolean
          base_usd?: number | null
          cantidad: number
          id?: string
          iva_alicuota?: number | null
          iva_usd?: number | null
          nombre: string
          nota?: string | null
          pedido_id: string
          precio_usd: number
          producto_id?: string | null
        }
        Update: {
          a_cocina?: boolean
          base_usd?: number | null
          cantidad?: number
          id?: string
          iva_alicuota?: number | null
          iva_usd?: number | null
          nombre?: string
          nota?: string | null
          pedido_id?: string
          precio_usd?: number
          producto_id?: string | null
        }
        Relationships: [
          {
            foreignKeyName: "pedido_items_pedido_id_fkey"
            columns: ["pedido_id"]
            isOneToOne: false
            referencedRelation: "pedidos"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pedido_items_producto_id_fkey"
            columns: ["producto_id"]
            isOneToOne: false
            referencedRelation: "productos"
            referencedColumns: ["id"]
          },
        ]
      }
      pedidos: {
        Row: {
          actualizado_en: string
          base_imponible_usd: number | null
          cancelado_en: string | null
          cliente_cedula: string | null
          cliente_correo: string | null
          cliente_direccion_fiscal: string | null
          cliente_nombre: string
          cliente_razon_social: string | null
          cliente_rif: string | null
          cliente_telefono: string
          codigo: string
          comensal_id: string | null
          confirmado_en: string | null
          costo_delivery_usd: number
          cuenta_id: string | null
          direccion: string | null
          direccion_latitud: number | null
          direccion_longitud: number | null
          en_camino_en: string | null
          entregado_en: string | null
          estado: string
          firma: string | null
          id: string
          iva_alicuota: number | null
          iva_usd: number | null
          listo_en: string | null
          mesa: string | null
          mesero_id: string | null
          mesero_nombre: string | null
          metodo_pago: string
          nota: string | null
          origen: string | null
          pago_mesa_id: string | null
          para_llevar: boolean
          personas: number | null
          push_auth: string | null
          push_endpoint: string | null
          push_p256dh: string | null
          recibido_en: string
          repartidor_id: string | null
          restaurante_id: string
          subtotal_usd: number
          tasa_bs: number | null
          tiempo_estimado_min: number | null
          tipo_entrega: string
          total_usd: number
        }
        Insert: {
          actualizado_en?: string
          base_imponible_usd?: number | null
          cancelado_en?: string | null
          cliente_cedula?: string | null
          cliente_correo?: string | null
          cliente_direccion_fiscal?: string | null
          cliente_nombre: string
          cliente_razon_social?: string | null
          cliente_rif?: string | null
          cliente_telefono: string
          codigo: string
          comensal_id?: string | null
          confirmado_en?: string | null
          costo_delivery_usd?: number
          cuenta_id?: string | null
          direccion?: string | null
          direccion_latitud?: number | null
          direccion_longitud?: number | null
          en_camino_en?: string | null
          entregado_en?: string | null
          estado?: string
          firma?: string | null
          id?: string
          iva_alicuota?: number | null
          iva_usd?: number | null
          listo_en?: string | null
          mesa?: string | null
          mesero_id?: string | null
          mesero_nombre?: string | null
          metodo_pago: string
          nota?: string | null
          origen?: string | null
          pago_mesa_id?: string | null
          para_llevar?: boolean
          personas?: number | null
          push_auth?: string | null
          push_endpoint?: string | null
          push_p256dh?: string | null
          recibido_en?: string
          repartidor_id?: string | null
          restaurante_id: string
          subtotal_usd: number
          tasa_bs?: number | null
          tiempo_estimado_min?: number | null
          tipo_entrega: string
          total_usd: number
        }
        Update: {
          actualizado_en?: string
          base_imponible_usd?: number | null
          cancelado_en?: string | null
          cliente_cedula?: string | null
          cliente_correo?: string | null
          cliente_direccion_fiscal?: string | null
          cliente_nombre?: string
          cliente_razon_social?: string | null
          cliente_rif?: string | null
          cliente_telefono?: string
          codigo?: string
          comensal_id?: string | null
          confirmado_en?: string | null
          costo_delivery_usd?: number
          cuenta_id?: string | null
          direccion?: string | null
          direccion_latitud?: number | null
          direccion_longitud?: number | null
          en_camino_en?: string | null
          entregado_en?: string | null
          estado?: string
          firma?: string | null
          id?: string
          iva_alicuota?: number | null
          iva_usd?: number | null
          listo_en?: string | null
          mesa?: string | null
          mesero_id?: string | null
          mesero_nombre?: string | null
          metodo_pago?: string
          nota?: string | null
          origen?: string | null
          pago_mesa_id?: string | null
          para_llevar?: boolean
          personas?: number | null
          push_auth?: string | null
          push_endpoint?: string | null
          push_p256dh?: string | null
          recibido_en?: string
          repartidor_id?: string | null
          restaurante_id?: string
          subtotal_usd?: number
          tasa_bs?: number | null
          tiempo_estimado_min?: number | null
          tipo_entrega?: string
          total_usd?: number
        }
        Relationships: [
          {
            foreignKeyName: "pedidos_comensal_id_fkey"
            columns: ["comensal_id"]
            isOneToOne: false
            referencedRelation: "comensales_mesa"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pedidos_cuenta_id_fkey"
            columns: ["cuenta_id"]
            isOneToOne: false
            referencedRelation: "cuentas_mesa"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pedidos_mesero_id_fkey"
            columns: ["mesero_id"]
            isOneToOne: false
            referencedRelation: "perfiles"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pedidos_pago_mesa_id_fkey"
            columns: ["pago_mesa_id"]
            isOneToOne: false
            referencedRelation: "pagos_mesa"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pedidos_repartidor_id_fkey"
            columns: ["repartidor_id"]
            isOneToOne: false
            referencedRelation: "repartidores"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "pedidos_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      perfiles: {
        Row: {
          creado_en: string
          es_fundador: boolean
          id: string
          nombre: string | null
          restaurante_id: string | null
          rol: string
          telefono: string | null
        }
        Insert: {
          creado_en?: string
          es_fundador?: boolean
          id: string
          nombre?: string | null
          restaurante_id?: string | null
          rol?: string
          telefono?: string | null
        }
        Update: {
          creado_en?: string
          es_fundador?: boolean
          id?: string
          nombre?: string | null
          restaurante_id?: string | null
          rol?: string
          telefono?: string | null
        }
        Relationships: [
          {
            foreignKeyName: "perfiles_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      productos: {
        Row: {
          actualizado_en: string
          archivado: boolean
          categoria_id: string | null
          controla_stock: boolean
          creado_en: string
          descripcion: string | null
          disponible: boolean
          foto_url: string | null
          id: string
          iva_alicuota: number | null
          nombre: string
          opciones: Json
          orden: number
          precio_usd: number
          puesto_id: string | null
          restaurante_id: string
          stock: number
          stock_minimo: number
        }
        Insert: {
          actualizado_en?: string
          archivado?: boolean
          categoria_id?: string | null
          controla_stock?: boolean
          creado_en?: string
          descripcion?: string | null
          disponible?: boolean
          foto_url?: string | null
          id?: string
          iva_alicuota?: number | null
          nombre: string
          opciones?: Json
          orden?: number
          precio_usd: number
          puesto_id?: string | null
          restaurante_id: string
          stock?: number
          stock_minimo?: number
        }
        Update: {
          actualizado_en?: string
          archivado?: boolean
          categoria_id?: string | null
          controla_stock?: boolean
          creado_en?: string
          descripcion?: string | null
          disponible?: boolean
          foto_url?: string | null
          id?: string
          iva_alicuota?: number | null
          nombre?: string
          opciones?: Json
          orden?: number
          precio_usd?: number
          puesto_id?: string | null
          restaurante_id?: string
          stock?: number
          stock_minimo?: number
        }
        Relationships: [
          {
            foreignKeyName: "productos_categoria_id_fkey"
            columns: ["categoria_id"]
            isOneToOne: false
            referencedRelation: "categorias"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "productos_puesto_id_fkey"
            columns: ["puesto_id"]
            isOneToOne: false
            referencedRelation: "puestos_impresion"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "productos_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      puestos_impresion: {
        Row: {
          activo: boolean
          creado_en: string
          es_defecto: boolean
          id: string
          nombre: string
          orden: number
          restaurante_id: string
        }
        Insert: {
          activo?: boolean
          creado_en?: string
          es_defecto?: boolean
          id?: string
          nombre: string
          orden?: number
          restaurante_id: string
        }
        Update: {
          activo?: boolean
          creado_en?: string
          es_defecto?: boolean
          id?: string
          nombre?: string
          orden?: number
          restaurante_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "puestos_impresion_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      push_subs: {
        Row: {
          auth: string
          contexto: string | null
          creado_en: string
          endpoint: string
          id: string
          p256dh: string
          perfil_id: string
        }
        Insert: {
          auth: string
          contexto?: string | null
          creado_en?: string
          endpoint: string
          id?: string
          p256dh: string
          perfil_id: string
        }
        Update: {
          auth?: string
          contexto?: string | null
          creado_en?: string
          endpoint?: string
          id?: string
          p256dh?: string
          perfil_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "push_subs_perfil_id_fkey"
            columns: ["perfil_id"]
            isOneToOne: false
            referencedRelation: "perfiles"
            referencedColumns: ["id"]
          },
        ]
      }
      rate_limits: {
        Row: {
          clave: string
          conteo: number
          ventana_fin: string
        }
        Insert: {
          clave: string
          conteo?: number
          ventana_fin: string
        }
        Update: {
          clave?: string
          conteo?: number
          ventana_fin?: string
        }
        Relationships: []
      }
      recetas_productos: {
        Row: {
          cantidad_base: number
          creado_en: string
          ingrediente_id: string
          nota: string | null
          opcion: string
          producto_id: string
        }
        Insert: {
          cantidad_base: number
          creado_en?: string
          ingrediente_id: string
          nota?: string | null
          opcion?: string
          producto_id: string
        }
        Update: {
          cantidad_base?: number
          creado_en?: string
          ingrediente_id?: string
          nota?: string | null
          opcion?: string
          producto_id?: string
        }
        Relationships: [
          {
            foreignKeyName: "recetas_productos_ingrediente_id_fkey"
            columns: ["ingrediente_id"]
            isOneToOne: false
            referencedRelation: "ingredientes"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "recetas_productos_producto_id_fkey"
            columns: ["producto_id"]
            isOneToOne: false
            referencedRelation: "productos"
            referencedColumns: ["id"]
          },
        ]
      }
      repartidores: {
        Row: {
          creado_en: string
          estado: string
          id: string
          perfil_id: string
          restaurante_id: string
          ultima_latitud: number | null
          ultima_longitud: number | null
          ultima_ubicacion_en: string | null
          vehiculo: string | null
        }
        Insert: {
          creado_en?: string
          estado?: string
          id?: string
          perfil_id: string
          restaurante_id: string
          ultima_latitud?: number | null
          ultima_longitud?: number | null
          ultima_ubicacion_en?: string | null
          vehiculo?: string | null
        }
        Update: {
          creado_en?: string
          estado?: string
          id?: string
          perfil_id?: string
          restaurante_id?: string
          ultima_latitud?: number | null
          ultima_longitud?: number | null
          ultima_ubicacion_en?: string | null
          vehiculo?: string | null
        }
        Relationships: [
          {
            foreignKeyName: "repartidores_perfil_id_fkey"
            columns: ["perfil_id"]
            isOneToOne: false
            referencedRelation: "perfiles"
            referencedColumns: ["id"]
          },
          {
            foreignKeyName: "repartidores_restaurante_id_fkey"
            columns: ["restaurante_id"]
            isOneToOne: false
            referencedRelation: "restaurantes"
            referencedColumns: ["id"]
          },
        ]
      }
      restaurantes: {
        Row: {
          abierto: boolean
          activo: boolean
          actualizado_en: string
          color_primario: string
          contador_pedidos: number
          costo_delivery_usd: number
          creado_en: string
          delivery_modo: string
          delivery_radio_km: number | null
          descripcion: string | null
          direccion: string | null
          domicilio_fiscal: string | null
          en_directorio: boolean
          estado_ve: string | null
          hace_delivery: boolean
          hace_pickup: boolean
          horarios: Json | null
          id: string
          iva_alicuota: number
          latitud: number | null
          logo_url: string | null
          longitud: number | null
          metodos_pago: Json
          municipio: string | null
          nombre: string
          num_mesas: number
          onboarding_completo: boolean
          pago_movil_datos: Json | null
          portada_url: string | null
          precios_con_iva: boolean
          prefijo: string | null
          publicado: boolean
          razon_social: string | null
          rif: string | null
          rubro: string | null
          rubros: string[]
          sala_promedio_min: number
          slug: string
          tasa_automatica: boolean
          tasa_bs: number | null
          telefono: string | null
          ultimo_cierre_en: string | null
        }
        Insert: {
          abierto?: boolean
          activo?: boolean
          actualizado_en?: string
          color_primario?: string
          contador_pedidos?: number
          costo_delivery_usd?: number
          creado_en?: string
          delivery_modo?: string
          delivery_radio_km?: number | null
          descripcion?: string | null
          direccion?: string | null
          domicilio_fiscal?: string | null
          en_directorio?: boolean
          estado_ve?: string | null
          hace_delivery?: boolean
          hace_pickup?: boolean
          horarios?: Json | null
          id?: string
          iva_alicuota?: number
          latitud?: number | null
          logo_url?: string | null
          longitud?: number | null
          metodos_pago?: Json
          municipio?: string | null
          nombre: string
          num_mesas?: number
          onboarding_completo?: boolean
          pago_movil_datos?: Json | null
          portada_url?: string | null
          precios_con_iva?: boolean
          prefijo?: string | null
          publicado?: boolean
          razon_social?: string | null
          rif?: string | null
          rubro?: string | null
          rubros?: string[]
          sala_promedio_min?: number
          slug: string
          tasa_automatica?: boolean
          tasa_bs?: number | null
          telefono?: string | null
          ultimo_cierre_en?: string | null
        }
        Update: {
          abierto?: boolean
          activo?: boolean
          actualizado_en?: string
          color_primario?: string
          contador_pedidos?: number
          costo_delivery_usd?: number
          creado_en?: string
          delivery_modo?: string
          delivery_radio_km?: number | null
          descripcion?: string | null
          direccion?: string | null
          domicilio_fiscal?: string | null
          en_directorio?: boolean
          estado_ve?: string | null
          hace_delivery?: boolean
          hace_pickup?: boolean
          horarios?: Json | null
          id?: string
          iva_alicuota?: number
          latitud?: number | null
          logo_url?: string | null
          longitud?: number | null
          metodos_pago?: Json
          municipio?: string | null
          nombre?: string
          num_mesas?: number
          onboarding_completo?: boolean
          pago_movil_datos?: Json | null
          portada_url?: string | null
          precios_con_iva?: boolean
          prefijo?: string | null
          publicado?: boolean
          razon_social?: string | null
          rif?: string | null
          rubro?: string | null
          rubros?: string[]
          sala_promedio_min?: number
          slug?: string
          tasa_automatica?: boolean
          tasa_bs?: number | null
          telefono?: string | null
          ultimo_cierre_en?: string | null
        }
        Relationships: []
      }
      tasa_cambio: {
        Row: {
          actualizado_en: string
          fuente: string
          id: number
          tasa_bs: number
        }
        Insert: {
          actualizado_en?: string
          fuente?: string
          id?: number
          tasa_bs: number
        }
        Update: {
          actualizado_en?: string
          fuente?: string
          id?: number
          tasa_bs?: number
        }
        Relationships: []
      }
    }
    Views: {
      [_ in never]: never
    }
    Functions: {
      abrir_mesa: {
        Args: {
          p_comensales?: number
          p_mesa: string
          p_modo?: string
          p_nombres?: string[]
        }
        Returns: string
      }
      abrir_mesa_cliente: {
        Args: { p_mesa: string; p_nombre: string; p_restaurante_id: string }
        Returns: string
      }
      aceptar_pedido: {
        Args: { p_min: number; p_pedido_id: string }
        Returns: string
      }
      actualizar_ubicacion_repartidor: {
        Args: { p_lat: number; p_lng: number }
        Returns: undefined
      }
      agregar_comensal: {
        Args: { p_cuenta_id: string; p_nombre: string }
        Returns: string
      }
      anular_venta_fiscal: {
        Args: {
          p_motivo: string
          p_origen_id: string
          p_restaurante: string
          p_tipo: string
        }
        Returns: Json
      }
      aplicar_tasa_automatica: {
        Args: { p_fuente?: string; p_tasa: number }
        Returns: undefined
      }
      asignar_repartidor: {
        Args: { p_pedido_id: string; p_repartidor_id: string }
        Returns: undefined
      }
      atender_llamada: { Args: { p_llamada_id: string }; Returns: undefined }
      buscar_pedidos: {
        Args: { p_telefono: string }
        Returns: {
          codigo: string
          creado_en: string
          estado: string
          pedido_id: string
          restaurante_nombre: string
          total_usd: number
        }[]
      }
      cambiar_disponibilidad: {
        Args: { p_disponible: boolean }
        Returns: string
      }
      cambiar_estado_pedido: {
        Args: { p_nuevo_estado: string; p_pedido_id: string }
        Returns: string
      }
      ceo_embudo_web: { Args: { p_dias?: number }; Returns: Json }
      ceo_estadisticas: { Args: never; Returns: Json }
      cerrar_cuenta_mesa: { Args: { p_cuenta_id: string }; Returns: undefined }
      cerrar_negocio: { Args: never; Returns: undefined }
      cobrar_parte_mesa: {
        Args: {
          p_comprobante_url?: string
          p_cuenta_id: string
          p_metodo: string
          p_nota?: string
          p_pedido_ids: string[]
          p_referencia?: string
        }
        Returns: {
          monto_usd: number
          pago_id: string
          saldo_usd: number
        }[]
      }
      cobrar_y_cerrar_mesa: {
        Args: {
          p_comprobante_url?: string
          p_cuenta_id: string
          p_metodo: string
          p_propina?: number
          p_referencia?: string
        }
        Returns: {
          cerrada: boolean
          monto_usd: number
          pago_id: string
        }[]
      }
      confirmar_pago: {
        Args: { p_estado: string; p_pago_id: string }
        Returns: string
      }
      costos_productos: {
        Args: { p_restaurante_id: string }
        Returns: {
          costo_usd: number
          ingredientes: number
          margen_pct: number
          margen_usd: number
          nombre: string
          opciones_con_receta: number
          opciones_total: number
          precio_usd: number
          producto_id: string
          sin_precio: number
        }[]
      }
      crear_pedido: {
        Args: {
          p_cedula?: string
          p_cliente_nombre: string
          p_cliente_telefono: string
          p_comensal_id?: string
          p_direccion?: string
          p_direccion_lat?: number
          p_direccion_lng?: number
          p_esperar_mesa?: boolean
          p_items: Json
          p_mesa?: string
          p_metodo_pago: string
          p_nota?: string
          p_para_llevar?: boolean
          p_personas?: number
          p_referencia?: string
          p_restaurante_id: string
          p_tipo_entrega: string
          p_venta_caja?: boolean
        }
        Returns: {
          codigo: string
          cuenta_id: string
          pedido_id: string
        }[]
      }
      crear_restaurante: {
        Args: { p_nombre: string; p_telefono?: string }
        Returns: {
          restaurante_id: string
          slug: string
        }[]
      }
      cuenta_mesa: {
        Args: { p_cuenta_id: string }
        Returns: {
          comensales: Json
          estado: string
          id: string
          llamadas: Json
          mesa: string
          mesero_nombre: string
          metodo_pago: string
          metodos_pago: Json
          modo_cuenta: string
          pedidos: Json
          promedio_min: number
          restaurante_color: string
          restaurante_nombre: string
          restaurante_slug: string
          restaurante_telefono: string
          tasa_bs: number
          tiempo_estimado_min: number
          total_usd: number
          viene_mesero: string
        }[]
      }
      cuenta_mesa_activa: {
        Args: { p_mesa: string; p_restaurante_id: string }
        Returns: {
          abierta_en: string
          abierta_por: string
          estado: string
          id: string
          mesa: string
          mesero_nombre: string
          total_usd: number
          ultimo_pedido_en: string
        }[]
      }
      derivar_prefijo: { Args: { p_nombre: string }; Returns: string }
      directorio: {
        Args: never
        Returns: {
          abierto: boolean
          color_primario: string
          costo_delivery_usd: number
          descripcion: string
          estado_ve: string
          hace_delivery: boolean
          latitud: number
          logo_url: string
          longitud: number
          municipio: string
          nombre: string
          portada_url: string
          precio_desde: number
          rubro: string
          rubros: string[]
          slug: string
          tasa_bs: number
        }[]
      }
      entregas_disponibles: {
        Args: never
        Returns: {
          cliente_nombre: string
          codigo: string
          direccion: string
          direccion_latitud: number
          direccion_longitud: number
          listo_en: string
          pedido_id: string
          restaurante_nombre: string
          total_usd: number
        }[]
      }
      enviar_orden_mesa: { Args: { p_cuenta_id: string }; Returns: Json }
      factura_de_venta: {
        Args: { p_origen_id: string; p_tipo: string }
        Returns: Json
      }
      fn_categoria_en_horario: {
        Args: { p_desde: string; p_dias: number[]; p_hasta: string }
        Returns: boolean
      }
      fn_cerebrito_latido: {
        Args: { p_detalle?: Json; p_version?: string }
        Returns: undefined
      }
      fn_cerebritos_tablero: {
        Args: never
        Returns: {
          detalle: Json
          restaurante: string
          version: string
          visto_en: string
        }[]
      }
      fn_cerrar_mesas_olvidadas: { Args: never; Returns: number }
      fn_cerrar_mesas_vacias: { Args: never; Returns: number }
      fn_comprobantes_viejos: {
        Args: { p_dias?: number; p_max?: number }
        Returns: {
          ruta: string
        }[]
      }
      fn_correo_factura_resultado: {
        Args: { p_error?: string; p_id: string; p_ok: boolean }
        Returns: undefined
      }
      fn_correos_factura_pendientes: {
        Args: { p_limite?: number }
        Returns: Json
      }
      fn_emitir_documento: {
        Args: {
          p_base_bs: number
          p_desde?: string
          p_documento: Json
          p_fecha: string
          p_hash: string
          p_iva_bs: number
          p_llave: string
          p_numero_documento: number
          p_rif: string
          p_serie: string
          p_tipo: string
          p_total_bs: number
        }
        Returns: {
          numero_control: number
          token: string
          ya_estaba: boolean
        }[]
      }
      fn_es_admin: { Args: never; Returns: boolean }
      fn_es_dueno_de: { Args: { p_restaurante: string }; Returns: boolean }
      fn_es_encargado_de: { Args: { p_restaurante: string }; Returns: boolean }
      fn_es_staff_de: { Args: { p_restaurante: string }; Returns: boolean }
      fn_estacion: {
        Args: {
          p_accion: string
          p_datos?: Json
          p_llave: string
          p_rif: string
        }
        Returns: Json
      }
      fn_estado_fiscal: { Args: { p_restaurante_id: string }; Returns: Json }
      fn_exigir_referencia: {
        Args: { p_metodo: string; p_referencia: string }
        Returns: string
      }
      fn_limpiar_datos_viejos: { Args: { p_dias?: number }; Returns: Json }
      fn_limpiar_medicion_vieja: { Args: never; Returns: number }
      fn_local_en_linea: { Args: { p_restaurante: string }; Returns: string }
      fn_medir: {
        Args: {
          p_evento: string
          p_origen?: string
          p_pantalla?: string
          p_sesion?: string
          p_utm_campaign?: string
          p_utm_medium?: string
          p_utm_source?: string
        }
        Returns: boolean
      }
      fn_mesa_de_staff: {
        Args: { p_mesero_id: string; p_restaurante_id: string }
        Returns: boolean
      }
      fn_mesa_toda_pagada: { Args: { p_cuenta_id: string }; Returns: boolean }
      fn_mesa_visible_a_staff: {
        Args: { p_restaurante_id: string }
        Returns: boolean
      }
      fn_mi_restaurante: { Args: never; Returns: string }
      fn_pago_necesita_referencia: {
        Args: { p_metodo: string }
        Returns: boolean
      }
      fn_panel_imprenta: {
        Args: {
          p_accion: string
          p_datos?: Json
          p_desde?: string
          p_quien?: string
          p_yo?: string
        }
        Returns: Json
      }
      fn_rate_limit: {
        Args: { p_clave: string; p_max: number; p_ventana_seg: number }
        Returns: undefined
      }
      fn_registrar_intento: {
        Args: {
          p_desde?: string
          p_motivo: string
          p_quien: string
          p_tipo?: string
        }
        Returns: undefined
      }
      fn_rif_normalizado: { Args: { p_rif: string }; Returns: string }
      fn_rif_valido: { Args: { p_rif: string }; Returns: boolean }
      fn_soltar_ordenes_mesa_vencidas: { Args: never; Returns: number }
      fn_tienda_abierta: { Args: { p_rest: string }; Returns: boolean }
      fn_validar_factura: {
        Args: { p_desde?: string; p_token: string }
        Returns: {
          fecha_emision: string
          numero_control: number
          numero_documento: number
          razon_social: string
          rif_emisor: string
          tipo: string
          total_bs: number
          valido: boolean
        }[]
      }
      fn_verificar_estacion: {
        Args: { p_desde?: string; p_serial: string }
        Returns: Json
      }
      generar_slug_unico: { Args: { p_nombre: string }; Returns: string }
      guardar_datos_fiscales: {
        Args: {
          p_correo?: string
          p_direccion?: string
          p_id: string
          p_razon_social?: string
          p_rif: string
          p_tipo: string
        }
        Returns: Json
      }
      guardar_push_pedido: {
        Args: {
          p_auth: string
          p_endpoint: string
          p_p256dh: string
          p_pedido_id: string
        }
        Returns: undefined
      }
      guardar_push_sub: {
        Args: {
          p_auth: string
          p_contexto?: string
          p_endpoint: string
          p_p256dh: string
        }
        Returns: undefined
      }
      historial_mesas: {
        Args: { p_dias?: number; p_restaurante_id: string }
        Returns: {
          abierta_en: string
          cerrada_en: string
          cobrado_usd: number
          comensales: number
          id: string
          mesa: string
          mesero_nombre: string
          metodo_pago: string
          modo_cuenta: string
          n_pedidos: number
          perdida_usd: number
          tasa_bs: number
          total_usd: number
        }[]
      }
      items_entregas_repartidor: {
        Args: { p_ids: string[] }
        Returns: {
          cantidad: number
          nombre: string
          nota: string
          pedido_id: string
        }[]
      }
      llamadas_activas: {
        Args: { p_restaurante_id: string }
        Returns: {
          creada_en: string
          cuenta_id: string
          id: string
          mesa: string
          mesero_id: string
          mesero_nombre: string
          nota: string
          tipo: string
        }[]
      }
      llamar_mesero: {
        Args: { p_cuenta_id: string; p_nota?: string; p_tipo?: string }
        Returns: {
          llamada_id: string
          ya_estaba: boolean
        }[]
      }
      marcar_perdida_mesa: {
        Args: { p_cuenta_id: string; p_motivo: string; p_pedido_ids: string[] }
        Returns: {
          monto_usd: number
          pago_id: string
          saldo_usd: number
        }[]
      }
      mi_perfil_repartidor: {
        Args: never
        Returns: {
          estado: string
          repartidor_id: string
          restaurante_color: string
          restaurante_direccion: string
          restaurante_id: string
          restaurante_latitud: number
          restaurante_logo_url: string
          restaurante_longitud: number
          restaurante_nombre: string
        }[]
      }
      mis_cuentas_mesa: {
        Args: { p_restaurante_id: string }
        Returns: {
          abierta_en: string
          abierta_por: string
          comensales: number
          comprobante_url: string
          estado: string
          id: string
          mesa: string
          mesero_id: string
          mesero_nombre: string
          metodo_pago: string
          modo_cuenta: string
          n_pedidos: number
          pagado_usd: number
          pago_solicitado_en: string
          perdida_usd: number
          por_revisar_usd: number
          referencia: string
          servido_en: string
          tasa_bs: number
          todo_entregado: boolean
          total_usd: number
        }[]
      }
      mis_entregas_activas: {
        Args: never
        Returns: {
          actualizado_en: string
          base_imponible_usd: number | null
          cancelado_en: string | null
          cliente_cedula: string | null
          cliente_correo: string | null
          cliente_direccion_fiscal: string | null
          cliente_nombre: string
          cliente_razon_social: string | null
          cliente_rif: string | null
          cliente_telefono: string
          codigo: string
          comensal_id: string | null
          confirmado_en: string | null
          costo_delivery_usd: number
          cuenta_id: string | null
          direccion: string | null
          direccion_latitud: number | null
          direccion_longitud: number | null
          en_camino_en: string | null
          entregado_en: string | null
          estado: string
          firma: string | null
          id: string
          iva_alicuota: number | null
          iva_usd: number | null
          listo_en: string | null
          mesa: string | null
          mesero_id: string | null
          mesero_nombre: string | null
          metodo_pago: string
          nota: string | null
          origen: string | null
          pago_mesa_id: string | null
          para_llevar: boolean
          personas: number | null
          push_auth: string | null
          push_endpoint: string | null
          push_p256dh: string | null
          recibido_en: string
          repartidor_id: string | null
          restaurante_id: string
          subtotal_usd: number
          tasa_bs: number | null
          tiempo_estimado_min: number | null
          tipo_entrega: string
          total_usd: number
        }[]
        SetofOptions: {
          from: "*"
          to: "pedidos"
          isOneToOne: false
          isSetofReturn: true
        }
      }
      mis_entregas_realizadas: {
        Args: { p_dias?: number }
        Returns: {
          cliente_nombre: string
          codigo: string
          direccion: string
          entregado_en: string
          metodo_pago: string
          pedido_id: string
          tipo_entrega: string
          total_usd: number
        }[]
      }
      mis_meseros: {
        Args: never
        Returns: {
          correo: string
          creado_en: string
          mesero_id: string
          nombre: string
          rol: string
          telefono: string
        }[]
      }
      mis_repartidores: {
        Args: never
        Returns: {
          creado_en: string
          estado: string
          nombre: string
          repartidor_id: string
          telefono: string
          vehiculo: string
        }[]
      }
      pagar_parte_cliente: {
        Args: {
          p_comensal_id: string
          p_comprobante_url?: string
          p_cuenta_id: string
          p_metodo: string
          p_referencia?: string
        }
        Returns: {
          monto_usd: number
          pago_id: string
        }[]
      }
      pagos_por_revisar: {
        Args: { p_restaurante_id: string }
        Returns: {
          comensal_nombre: string
          comprobante_url: string
          creado_en: string
          cuenta_id: string
          mesa: string
          metodo: string
          monto_usd: number
          pago_id: string
          referencia: string
        }[]
      }
      pedido_datos_pago: {
        Args: { p_pedido_id: string }
        Returns: {
          datos_pago: Json
          metodo_pago: string
          pago_estado: string
          pago_id: string
          tasa_bs: number
          telefono_rest: string
          total_usd: number
        }[]
      }
      pedido_seguimiento: {
        Args: { p_pedido_id: string }
        Returns: {
          codigo: string
          confirmado_en: string
          cuenta_id: string
          direccion: string
          direccion_latitud: number
          direccion_longitud: number
          en_camino_en: string
          entregado_en: string
          estado: string
          listo_en: string
          mesa: string
          personas: number
          recibido_en: string
          repartidor_latitud: number
          repartidor_longitud: number
          repartidor_ubicacion_en: string
          restaurante_color: string
          restaurante_nombre: string
          restaurante_telefono: string
          tasa_bs: number
          tiempo_estimado_min: number
          tipo_entrega: string
          total_usd: number
        }[]
      }
      pedido_ticket: {
        Args: { p_pedido_id: string }
        Returns: {
          cliente_cedula: string
          cliente_nombre: string
          cliente_telefono: string
          codigo: string
          estado: string
          items: Json
          mesa: string
          metodo_pago: string
          pago_estado: string
          restaurante_color: string
          restaurante_nombre: string
          tasa_bs: number
          tipo_entrega: string
          total_usd: number
        }[]
      }
      pedir_cuenta_mesa: {
        Args: {
          p_comprobante_url?: string
          p_cuenta_id: string
          p_metodo: string
          p_referencia?: string
        }
        Returns: undefined
      }
      quitar_item_pedido: { Args: { p_item_id: string }; Returns: undefined }
      registrar_compra_ingrediente: {
        Args: {
          p_cantidad_base: number
          p_costo_total_usd: number
          p_descripcion?: string
          p_fuente?: string
          p_ingrediente_id: string
        }
        Returns: string
      }
      registrar_comprobante: {
        Args: {
          p_comprobante_url: string
          p_pedido_id: string
          p_referencia: string
        }
        Returns: undefined
      }
      rendimiento_meseros: {
        Args: { p_desde?: string; p_restaurante_id: string }
        Returns: {
          mesas: number
          mesero_id: string
          nombre: string
          pedidos: number
          perdidas_usd: number
          propinas_usd: number
          ventas_usd: number
        }[]
      }
      reporte_pagos: {
        Args: { p_desde: string; p_metodo?: string; p_restaurante_id: string }
        Returns: {
          comprobante_url: string
          descripcion: string
          estado: string
          fecha: string
          metodo: string
          monto_usd: number
          origen: string
          referencia: string
        }[]
      }
      sala_espera: { Args: { p_slug: string }; Returns: Json }
      sentar_reserva: {
        Args: { p_mesa: string; p_pedido_id: string }
        Returns: string
      }
      sincronizar_venta_local: { Args: { p_venta: Json }; Returns: Json }
      tomar_pedido: { Args: { p_pedido_id: string }; Returns: string }
      verificar_pago_cliente: {
        Args: { p_ok: boolean; p_pago_id: string }
        Returns: undefined
      }
    }
    Enums: {
      [_ in never]: never
    }
    CompositeTypes: {
      [_ in never]: never
    }
  }
}

type DatabaseWithoutInternals = Omit<Database, "__InternalSupabase">

type DefaultSchema = DatabaseWithoutInternals[Extract<keyof Database, "public">]

export type Tables<
  DefaultSchemaTableNameOrOptions extends
    | keyof (DefaultSchema["Tables"] & DefaultSchema["Views"])
    | { schema: keyof DatabaseWithoutInternals },
  TableName extends DefaultSchemaTableNameOrOptions extends {
    schema: keyof DatabaseWithoutInternals
  }
    ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
        DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])
    : never = never,
> = DefaultSchemaTableNameOrOptions extends {
  schema: keyof DatabaseWithoutInternals
}
  ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
      DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends {
      Row: infer R
    }
    ? R
    : never
  : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] &
        DefaultSchema["Views"])
    ? (DefaultSchema["Tables"] &
        DefaultSchema["Views"])[DefaultSchemaTableNameOrOptions] extends {
        Row: infer R
      }
      ? R
      : never
    : never

export type TablesInsert<
  DefaultSchemaTableNameOrOptions extends
    | keyof DefaultSchema["Tables"]
    | { schema: keyof DatabaseWithoutInternals },
  TableName extends DefaultSchemaTableNameOrOptions extends {
    schema: keyof DatabaseWithoutInternals
  }
    ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
    : never = never,
> = DefaultSchemaTableNameOrOptions extends {
  schema: keyof DatabaseWithoutInternals
}
  ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
      Insert: infer I
    }
    ? I
    : never
  : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
    ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
        Insert: infer I
      }
      ? I
      : never
    : never

export type TablesUpdate<
  DefaultSchemaTableNameOrOptions extends
    | keyof DefaultSchema["Tables"]
    | { schema: keyof DatabaseWithoutInternals },
  TableName extends DefaultSchemaTableNameOrOptions extends {
    schema: keyof DatabaseWithoutInternals
  }
    ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
    : never = never,
> = DefaultSchemaTableNameOrOptions extends {
  schema: keyof DatabaseWithoutInternals
}
  ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
      Update: infer U
    }
    ? U
    : never
  : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
    ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
        Update: infer U
      }
      ? U
      : never
    : never

export type Enums<
  DefaultSchemaEnumNameOrOptions extends
    | keyof DefaultSchema["Enums"]
    | { schema: keyof DatabaseWithoutInternals },
  EnumName extends DefaultSchemaEnumNameOrOptions extends {
    schema: keyof DatabaseWithoutInternals
  }
    ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"]
    : never = never,
> = DefaultSchemaEnumNameOrOptions extends {
  schema: keyof DatabaseWithoutInternals
}
  ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName]
  : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"]
    ? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions]
    : never

export type CompositeTypes<
  PublicCompositeTypeNameOrOptions extends
    | keyof DefaultSchema["CompositeTypes"]
    | { schema: keyof DatabaseWithoutInternals },
  CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
    schema: keyof DatabaseWithoutInternals
  }
    ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"]
    : never = never,
> = PublicCompositeTypeNameOrOptions extends {
  schema: keyof DatabaseWithoutInternals
}
  ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName]
  : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"]
    ? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions]
    : never

export const Constants = {
  public: {
    Enums: {},
  },
} as const
