import { ReactNode } from "react";
import { SupabaseClient } from "@supabase/supabase-js";
import { Database } from "../types/supabase";
interface ConnectionStatus {
    isConnected: boolean;
    isConnecting: boolean;
    lastError: string | null;
    retryCount: number;
    reconnect: () => void;
}
export declare function useSupabase(): SupabaseClient<Database, "public", {
    Tables: {
        actions: {
            Row: {
                id: number;
                inserted_at: string;
                opcode: number;
                trigger: string[];
                zone_id: number;
            };
            Insert: {
                id?: number;
                inserted_at?: string;
                opcode: number;
                trigger: string[];
                zone_id: number;
            };
            Update: {
                id?: number;
                inserted_at?: string;
                opcode?: number;
                trigger?: string[];
                zone_id?: number;
            };
            Relationships: [{
                foreignKeyName: "actions_zone_id_fkey";
                columns: ["zone_id"];
                isOneToOne: false;
                referencedRelation: "zones";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "actions_zone_id_fkey";
                columns: ["zone_id"];
                isOneToOne: false;
                referencedRelation: "zones_and_actions";
                referencedColumns: ["id"];
            }];
        };
        connectivity: {
            Row: {
                altitude: number;
                h11_index: string;
                h12_index: string;
                h13_index: string;
                h14_index: string;
                heading: number;
                id: number;
                inserted_at: string;
                location: unknown;
                noise: number;
                session_id: number;
                signal: number;
                timestamp_start: string;
            };
            Insert: {
                altitude: number;
                h11_index: string;
                h12_index: string;
                h13_index: string;
                h14_index: string;
                heading: number;
                id?: number;
                inserted_at?: string;
                location: unknown;
                noise: number;
                session_id: number;
                signal: number;
                timestamp_start: string;
            };
            Update: {
                altitude?: number;
                h11_index?: string;
                h12_index?: string;
                h13_index?: string;
                h14_index?: string;
                heading?: number;
                id?: number;
                inserted_at?: string;
                location?: unknown;
                noise?: number;
                session_id?: number;
                signal?: number;
                timestamp_start?: string;
            };
            Relationships: [{
                foreignKeyName: "connectivity_session_id_fkey";
                columns: ["session_id"];
                isOneToOne: false;
                referencedRelation: "sessions";
                referencedColumns: ["id"];
            }];
        };
        devices: {
            Row: {
                altitude: number | null;
                created_by: string;
                description: string;
                device_type: Database["public"]["Enums"]["device_type"];
                domain_name: string | null;
                heading: number | null;
                herd_id: number;
                id: number;
                inserted_at: string;
                location: unknown | null;
                name: string;
                video_publisher_token: string | null;
                video_subscriber_token: string | null;
            };
            Insert: {
                altitude?: number | null;
                created_by: string;
                description: string;
                device_type?: Database["public"]["Enums"]["device_type"];
                domain_name?: string | null;
                heading?: number | null;
                herd_id: number;
                id?: number;
                inserted_at?: string;
                location?: unknown | null;
                name: string;
                video_publisher_token?: string | null;
                video_subscriber_token?: string | null;
            };
            Update: {
                altitude?: number | null;
                created_by?: string;
                description?: string;
                device_type?: Database["public"]["Enums"]["device_type"];
                domain_name?: string | null;
                heading?: number | null;
                herd_id?: number;
                id?: number;
                inserted_at?: string;
                location?: unknown | null;
                name?: string;
                video_publisher_token?: string | null;
                video_subscriber_token?: string | null;
            };
            Relationships: [{
                foreignKeyName: "devices_created_by_fkey";
                columns: ["created_by"];
                isOneToOne: false;
                referencedRelation: "users";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "devices_herd_id_fkey";
                columns: ["herd_id"];
                isOneToOne: false;
                referencedRelation: "herds";
                referencedColumns: ["id"];
            }];
        };
        events: {
            Row: {
                altitude: number;
                device_id: number;
                earthranger_url: string | null;
                file_path: string | null;
                heading: number;
                id: number;
                inserted_at: string;
                is_public: boolean;
                location: unknown | null;
                media_type: Database["public"]["Enums"]["media_type"];
                media_url: string | null;
                message: string | null;
                session_id: number | null;
                timestamp_observation: string;
            };
            Insert: {
                altitude?: number;
                device_id: number;
                earthranger_url?: string | null;
                file_path?: string | null;
                heading?: number;
                id?: number;
                inserted_at?: string;
                is_public?: boolean;
                location?: unknown | null;
                media_type?: Database["public"]["Enums"]["media_type"];
                media_url?: string | null;
                message?: string | null;
                session_id?: number | null;
                timestamp_observation?: string;
            };
            Update: {
                altitude?: number;
                device_id?: number;
                earthranger_url?: string | null;
                file_path?: string | null;
                heading?: number;
                id?: number;
                inserted_at?: string;
                is_public?: boolean;
                location?: unknown | null;
                media_type?: Database["public"]["Enums"]["media_type"];
                media_url?: string | null;
                message?: string | null;
                session_id?: number | null;
                timestamp_observation?: string;
            };
            Relationships: [{
                foreignKeyName: "events_device_id_fkey";
                columns: ["device_id"];
                isOneToOne: false;
                referencedRelation: "devices";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "events_session_id_fkey";
                columns: ["session_id"];
                isOneToOne: false;
                referencedRelation: "sessions";
                referencedColumns: ["id"];
            }];
        };
        herds: {
            Row: {
                created_by: string;
                description: string;
                earthranger_domain: string | null;
                earthranger_token: string | null;
                id: number;
                inserted_at: string;
                is_public: boolean;
                slug: string;
                video_publisher_token: string | null;
                video_server_url: string | null;
                video_subscriber_token: string | null;
            };
            Insert: {
                created_by: string;
                description: string;
                earthranger_domain?: string | null;
                earthranger_token?: string | null;
                id?: number;
                inserted_at?: string;
                is_public?: boolean;
                slug: string;
                video_publisher_token?: string | null;
                video_server_url?: string | null;
                video_subscriber_token?: string | null;
            };
            Update: {
                created_by?: string;
                description?: string;
                earthranger_domain?: string | null;
                earthranger_token?: string | null;
                id?: number;
                inserted_at?: string;
                is_public?: boolean;
                slug?: string;
                video_publisher_token?: string | null;
                video_server_url?: string | null;
                video_subscriber_token?: string | null;
            };
            Relationships: [{
                foreignKeyName: "herds_created_by_fkey";
                columns: ["created_by"];
                isOneToOne: false;
                referencedRelation: "users";
                referencedColumns: ["id"];
            }];
        };
        layers: {
            Row: {
                created_at: string;
                features: import("../types/supabase").Json;
                herd_id: number;
                id: number;
            };
            Insert: {
                created_at?: string;
                features: import("../types/supabase").Json;
                herd_id: number;
                id?: number;
            };
            Update: {
                created_at?: string;
                features?: import("../types/supabase").Json;
                herd_id?: number;
                id?: number;
            };
            Relationships: [{
                foreignKeyName: "layers_herd_id_fkey";
                columns: ["herd_id"];
                isOneToOne: false;
                referencedRelation: "herds";
                referencedColumns: ["id"];
            }];
        };
        plans: {
            Row: {
                herd_id: number;
                id: number;
                inserted_at: string;
                instructions: string;
                name: string;
                plan_type: Database["public"]["Enums"]["plan_type"];
            };
            Insert: {
                herd_id: number;
                id?: number;
                inserted_at?: string;
                instructions: string;
                name: string;
                plan_type?: Database["public"]["Enums"]["plan_type"];
            };
            Update: {
                herd_id?: number;
                id?: number;
                inserted_at?: string;
                instructions?: string;
                name?: string;
                plan_type?: Database["public"]["Enums"]["plan_type"];
            };
            Relationships: [{
                foreignKeyName: "plans_herd_id_fkey";
                columns: ["herd_id"];
                isOneToOne: false;
                referencedRelation: "herds";
                referencedColumns: ["id"];
            }];
        };
        sessions: {
            Row: {
                altitude_average: number;
                altitude_max: number;
                altitude_min: number;
                device_id: number;
                distance_max_from_start: number;
                distance_total: number;
                earthranger_url: string | null;
                file_paths: string[] | null;
                id: number;
                inserted_at: string;
                locations: unknown;
                software_version: string;
                timestamp_end: string;
                timestamp_start: string;
                velocity_average: number;
                velocity_max: number;
                velocity_min: number;
            };
            Insert: {
                altitude_average: number;
                altitude_max: number;
                altitude_min: number;
                device_id: number;
                distance_max_from_start: number;
                distance_total: number;
                earthranger_url?: string | null;
                file_paths?: string[] | null;
                id?: number;
                inserted_at?: string;
                locations: unknown;
                software_version: string;
                timestamp_end: string;
                timestamp_start: string;
                velocity_average: number;
                velocity_max: number;
                velocity_min: number;
            };
            Update: {
                altitude_average?: number;
                altitude_max?: number;
                altitude_min?: number;
                device_id?: number;
                distance_max_from_start?: number;
                distance_total?: number;
                earthranger_url?: string | null;
                file_paths?: string[] | null;
                id?: number;
                inserted_at?: string;
                locations?: unknown;
                software_version?: string;
                timestamp_end?: string;
                timestamp_start?: string;
                velocity_average?: number;
                velocity_max?: number;
                velocity_min?: number;
            };
            Relationships: [{
                foreignKeyName: "sessions_device_id_fkey";
                columns: ["device_id"];
                isOneToOne: false;
                referencedRelation: "devices";
                referencedColumns: ["id"];
            }];
        };
        tags: {
            Row: {
                class_name: string;
                conf: number;
                event_id: number;
                height: number;
                id: number;
                inserted_at: string;
                observation_type: Database["public"]["Enums"]["tag_observation_type"];
                width: number;
                x: number;
                y: number;
            };
            Insert: {
                class_name: string;
                conf: number;
                event_id: number;
                height?: number;
                id?: number;
                inserted_at?: string;
                observation_type: Database["public"]["Enums"]["tag_observation_type"];
                width: number;
                x: number;
                y: number;
            };
            Update: {
                class_name?: string;
                conf?: number;
                event_id?: number;
                height?: number;
                id?: number;
                inserted_at?: string;
                observation_type?: Database["public"]["Enums"]["tag_observation_type"];
                width?: number;
                x?: number;
                y?: number;
            };
            Relationships: [{
                foreignKeyName: "tags_event_id_fkey";
                columns: ["event_id"];
                isOneToOne: false;
                referencedRelation: "events";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "tags_event_id_fkey";
                columns: ["event_id"];
                isOneToOne: false;
                referencedRelation: "events_with_tags";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "tags_event_id_fkey";
                columns: ["event_id"];
                isOneToOne: false;
                referencedRelation: "events_with_tags_by_session";
                referencedColumns: ["id"];
            }];
        };
        users: {
            Row: {
                id: string;
                username: string | null;
            };
            Insert: {
                id: string;
                username?: string | null;
            };
            Update: {
                id?: string;
                username?: string | null;
            };
            Relationships: [];
        };
        users_roles_per_herd: {
            Row: {
                herd_id: number;
                id: number;
                inserted_at: string;
                role: Database["public"]["Enums"]["role"];
                user_id: string;
            };
            Insert: {
                herd_id: number;
                id?: number;
                inserted_at?: string;
                role: Database["public"]["Enums"]["role"];
                user_id: string;
            };
            Update: {
                herd_id?: number;
                id?: number;
                inserted_at?: string;
                role?: Database["public"]["Enums"]["role"];
                user_id?: string;
            };
            Relationships: [{
                foreignKeyName: "users_roles_per_herd_herd_id_fkey";
                columns: ["herd_id"];
                isOneToOne: false;
                referencedRelation: "herds";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "users_roles_per_herd_user_id_fkey";
                columns: ["user_id"];
                isOneToOne: false;
                referencedRelation: "users";
                referencedColumns: ["id"];
            }];
        };
        zones: {
            Row: {
                herd_id: number;
                id: number;
                inserted_at: string;
                region: unknown;
            };
            Insert: {
                herd_id: number;
                id?: number;
                inserted_at?: string;
                region: unknown;
            };
            Update: {
                herd_id?: number;
                id?: number;
                inserted_at?: string;
                region?: unknown;
            };
            Relationships: [{
                foreignKeyName: "zones_herd_id_fkey";
                columns: ["herd_id"];
                isOneToOne: false;
                referencedRelation: "herds";
                referencedColumns: ["id"];
            }];
        };
    };
    Views: {
        events_with_tags: {
            Row: {
                altitude: number | null;
                device_id: number | null;
                earthranger_url: string | null;
                file_path: string | null;
                heading: number | null;
                herd_id: number | null;
                id: number | null;
                inserted_at: string | null;
                is_public: boolean | null;
                location: unknown | null;
                media_type: Database["public"]["Enums"]["media_type"] | null;
                media_url: string | null;
                message: string | null;
                session_id: number | null;
                tags: Database["public"]["Tables"]["tags"]["Row"][] | null;
                timestamp_observation: string | null;
            };
            Relationships: [{
                foreignKeyName: "devices_herd_id_fkey";
                columns: ["herd_id"];
                isOneToOne: false;
                referencedRelation: "herds";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "events_device_id_fkey";
                columns: ["device_id"];
                isOneToOne: false;
                referencedRelation: "devices";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "events_session_id_fkey";
                columns: ["session_id"];
                isOneToOne: false;
                referencedRelation: "sessions";
                referencedColumns: ["id"];
            }];
        };
        events_with_tags_by_session: {
            Row: {
                altitude: number | null;
                device_id: number | null;
                earthranger_url: string | null;
                file_path: string | null;
                heading: number | null;
                herd_id: number | null;
                id: number | null;
                inserted_at: string | null;
                is_public: boolean | null;
                location: unknown | null;
                media_type: Database["public"]["Enums"]["media_type"] | null;
                media_url: string | null;
                message: string | null;
                session_id: number | null;
                tags: Database["public"]["Tables"]["tags"]["Row"][] | null;
                timestamp_observation: string | null;
            };
            Relationships: [{
                foreignKeyName: "devices_herd_id_fkey";
                columns: ["herd_id"];
                isOneToOne: false;
                referencedRelation: "herds";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "events_device_id_fkey";
                columns: ["device_id"];
                isOneToOne: false;
                referencedRelation: "devices";
                referencedColumns: ["id"];
            }, {
                foreignKeyName: "events_session_id_fkey";
                columns: ["session_id"];
                isOneToOne: false;
                referencedRelation: "sessions";
                referencedColumns: ["id"];
            }];
        };
        zones_and_actions: {
            Row: {
                actions: Database["public"]["Tables"]["actions"]["Row"][] | null;
                herd_id: number | null;
                id: number | null;
                inserted_at: string | null;
                region: unknown | null;
            };
            Relationships: [{
                foreignKeyName: "zones_herd_id_fkey";
                columns: ["herd_id"];
                isOneToOne: false;
                referencedRelation: "herds";
                referencedColumns: ["id"];
            }];
        };
    };
    Functions: {
        get_connectivity_with_coordinates: {
            Args: {
                session_id_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["connectivity_with_coordinates"][];
        };
        get_device_by_api_key: {
            Args: {
                device_api_key: string;
            };
            Returns: Database["public"]["CompositeTypes"]["device_pretty_location"];
        };
        get_device_by_id: {
            Args: {
                device_id_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["device_pretty_location"];
        };
        get_device_id_from_key: {
            Args: {
                device_api_key: string;
            };
            Returns: number;
        };
        get_devices_for_herd: {
            Args: {
                herd_id_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["device_pretty_location"][];
        };
        get_events_and_tags_for_device: {
            Args: {
                device_id_caller: number;
                limit_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["event_and_tags_pretty_location"][];
        };
        get_events_and_tags_for_devices_batch: {
            Args: {
                device_ids: number[];
                limit_per_device?: number;
            };
            Returns: Database["public"]["CompositeTypes"]["event_and_tags_pretty_location"][];
        };
        get_events_and_tags_for_herd: {
            Args: {
                herd_id_caller: number;
                limit_caller: number;
                offset_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["event_and_tags_pretty_location"][];
        };
        get_events_and_tags_for_session: {
            Args: {
                session_id_caller: number;
                limit_caller: number;
                offset_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["event_and_tags_pretty_location"][];
        };
        get_events_with_tags_for_herd: {
            Args: {
                herd_id_caller: number;
                offset_caller: number;
                limit_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["event_with_tags"][];
        };
        get_sessions_with_coordinates: {
            Args: {
                herd_id_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["session_with_coordinates"][];
        };
        get_sessions_with_coordinates_by_device: {
            Args: {
                device_id_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["session_with_coordinates"][];
        };
        get_total_events_for_session: {
            Args: {
                session_id_caller: number;
            };
            Returns: number;
        };
        get_total_events_for_herd_with_session_filter: {
            Args: {
                herd_id_caller: number;
                exclude_session_events: boolean;
            };
            Returns: number;
        };
        get_zones_and_actions_for_herd: {
            Args: {
                herd_id_caller: number;
                limit_caller: number;
                offset_caller: number;
            };
            Returns: Database["public"]["CompositeTypes"]["zones_and_actions_pretty_location"][];
        };
        load_api_keys: {
            Args: {
                id_of_device: number;
            };
            Returns: string[];
        };
        load_api_keys_batch: {
            Args: {
                device_ids: number[];
            };
            Returns: {
                device_id: number;
                api_key_id: string;
                api_key_key: string;
            }[];
        };
        load_api_keys_old: {
            Args: {
                id_of_device: string;
            };
            Returns: string[];
        };
        remove_rls_broadcast_triggers: {
            Args: Record<PropertyKey, never>;
            Returns: undefined;
        };
    };
    Enums: {
        app_permission: "herds.delete" | "events.delete";
        device_type: "trail_camera" | "drone_fixed_wing" | "drone_quad" | "gps_tracker" | "sentry_tower" | "smart_buoy" | "radio_mesh_base_station" | "radio_mesh_repeater" | "unknown";
        media_type: "image" | "video" | "audio" | "text";
        plan_type: "mission" | "fence" | "rally" | "markov";
        role: "admin" | "viewer" | "editor";
        tag_observation_type: "manual" | "auto";
        user_status: "ONLINE" | "OFFLINE";
    };
    CompositeTypes: {
        connectivity_with_coordinates: {
            id: number | null;
            session_id: number | null;
            inserted_at: string | null;
            timestamp_start: string | null;
            signal: number | null;
            noise: number | null;
            altitude: number | null;
            heading: number | null;
            latitude: number | null;
            longitude: number | null;
            h14_index: string | null;
            h13_index: string | null;
            h12_index: string | null;
            h11_index: string | null;
        };
        device_pretty_location: {
            id: number | null;
            inserted_at: string | null;
            created_by: string | null;
            herd_id: number | null;
            device_type: Database["public"]["Enums"]["device_type"] | null;
            domain_name: string | null;
            location: string | null;
            altitude: number | null;
            heading: number | null;
            name: string | null;
            description: string | null;
            latitude: number | null;
            longitude: number | null;
        };
        event_and_tags: {
            id: number | null;
            inserted_at: string | null;
            message: string | null;
            media_url: string | null;
            latitude: number | null;
            longitude: number | null;
            altitude: number | null;
            heading: number | null;
            media_type: Database["public"]["Enums"]["media_type"] | null;
            device_id: number | null;
            timestamp_observation: string | null;
            is_public: boolean | null;
            tags: Database["public"]["Tables"]["tags"]["Row"][] | null;
            herd_id: number | null;
        };
        event_and_tags_pretty_location: {
            id: number | null;
            inserted_at: string | null;
            message: string | null;
            media_url: string | null;
            file_path: string | null;
            latitude: number | null;
            longitude: number | null;
            earthranger_url: string | null;
            altitude: number | null;
            heading: number | null;
            media_type: Database["public"]["Enums"]["media_type"] | null;
            device_id: number | null;
            timestamp_observation: string | null;
            is_public: boolean | null;
            tags: Database["public"]["Tables"]["tags"]["Row"][] | null;
            herd_id: number | null;
        };
        event_plus_tags: {
            id: number | null;
            inserted_at: string | null;
            message: string | null;
            media_url: string | null;
            location: unknown | null;
            earthranger_url: string | null;
            altitude: number | null;
            heading: number | null;
            media_type: Database["public"]["Enums"]["media_type"] | null;
            device_id: number | null;
            timestamp_observation: string | null;
            is_public: boolean | null;
            tags: Database["public"]["Tables"]["tags"]["Row"][] | null;
            herd_id: number | null;
        };
        event_with_tags: {
            id: number | null;
            inserted_at: string | null;
            message: string | null;
            media_url: string | null;
            latitude: number | null;
            longitude: number | null;
            altitude: number | null;
            heading: number | null;
            media_type: Database["public"]["Enums"]["media_type"] | null;
            device_id: number | null;
            timestamp_observation: string | null;
            is_public: boolean | null;
            tags: Database["public"]["Tables"]["tags"]["Row"][] | null;
        };
        session_with_coordinates: {
            id: number | null;
            device_id: number | null;
            timestamp_start: string | null;
            timestamp_end: string | null;
            inserted_at: string | null;
            software_version: string | null;
            locations_geojson: import("../types/supabase").Json | null;
            altitude_max: number | null;
            altitude_min: number | null;
            altitude_average: number | null;
            velocity_max: number | null;
            velocity_min: number | null;
            velocity_average: number | null;
            distance_total: number | null;
            distance_max_from_start: number | null;
        };
        zones_and_actions_pretty_location: {
            id: number | null;
            inserted_at: string | null;
            region: string | null;
            herd_id: number | null;
            actions: Database["public"]["Tables"]["actions"]["Row"][] | null;
        };
    };
}>;
export declare function useConnectionStatus(): ConnectionStatus;
export interface ScoutRefreshProviderProps {
    children: ReactNode;
}
export declare function ScoutRefreshProvider({ children }: ScoutRefreshProviderProps): import("react/jsx-runtime").JSX.Element;
export {};
