import { SupabaseClient } from "@supabase/supabase-js";
import { Database } from "../types/supabase";
import { ISession, IConnectivity, IEvent, ISessionWithCoordinates, IConnectivityWithCoordinates, IEventAndTagsPrettyLocation } from "../types/db";
export type SessionInput = Omit<ISession, "id" | "inserted_at">;
export type SessionUpdateInput = Partial<SessionInput> & {
    id: number;
};
export type SessionUpsertInput = SessionInput | SessionUpdateInput;
export type ConnectivityInput = Omit<IConnectivity, "id" | "inserted_at">;
export type ConnectivityUpdateInput = Partial<ConnectivityInput> & {
    id: number;
};
export type ConnectivityUpsertInput = ConnectivityInput | ConnectivityUpdateInput;
export declare function getSessionsByHerdId(supabase: SupabaseClient<Database>, herdId: number): Promise<ISessionWithCoordinates[]>;
export declare function getConnectivityBySessionId(supabase: SupabaseClient<Database>, sessionId: number): Promise<IConnectivityWithCoordinates[]>;
export declare function getEventsBySessionId(supabase: SupabaseClient<Database>, sessionId: number): Promise<IEvent[]>;
export declare function getEventsAndTagsBySessionId(supabase: SupabaseClient<Database>, sessionId: number, limit?: number, offset?: number): Promise<IEventAndTagsPrettyLocation[]>;
export declare function getTotalEventsForSession(supabase: SupabaseClient<Database>, sessionId: number): Promise<number>;
export declare function upsertSession(supabase: SupabaseClient<Database>, sessionData: SessionUpsertInput): Promise<ISession>;
export declare function upsertSessions(supabase: SupabaseClient<Database>, sessionsData: SessionUpsertInput[]): Promise<ISession[]>;
export declare function upsertConnectivity(supabase: SupabaseClient<Database>, connectivityData: ConnectivityUpsertInput): Promise<IConnectivity>;
export declare function upsertConnectivityBatch(supabase: SupabaseClient<Database>, connectivityDataArray: ConnectivityUpsertInput[]): Promise<IConnectivity[]>;
export declare function getSessionWithConnectivityAndEvents(supabase: SupabaseClient<Database>, sessionId: number, herdId?: number): Promise<{
    session: ISessionWithCoordinates | null;
    connectivity: IConnectivityWithCoordinates[];
    events: IEvent[];
}>;
export declare function getSessionWithConnectivityAndEventsWithTags(supabase: SupabaseClient<Database>, sessionId: number, limit?: number, offset?: number, herdId?: number): Promise<{
    session: ISessionWithCoordinates | null;
    connectivity: IConnectivityWithCoordinates[];
    eventsWithTags: IEventAndTagsPrettyLocation[];
    totalEvents: number;
}>;
export declare function getSessionsByDeviceId(supabase: SupabaseClient<Database>, deviceId: number): Promise<ISessionWithCoordinates[]>;
export declare function deleteSession(supabase: SupabaseClient<Database>, sessionId: number): Promise<void>;
export declare function deleteSessions(supabase: SupabaseClient<Database>, sessionIds: number[]): Promise<void>;
export declare function deleteConnectivity(supabase: SupabaseClient<Database>, connectivityId: number): Promise<void>;
export declare function deleteConnectivityBatch(supabase: SupabaseClient<Database>, connectivityIds: number[]): Promise<void>;
