import type { StyleProp, ViewStyle } from 'react-native';
export interface DeviceInfo {
    id: string;
    name: string;
    model?: string;
    manufacturer?: string;
    ipAddress?: string;
    type: 'dlna' | 'airplay' | 'miracast';
    controlURL?: string;
    renderControlURL?: string;
}
export interface PlaybackStatus {
    isPlaying: boolean;
    duration: number;
    position: number;
    volume: number;
}
export type ExpoDlnaPlayerModuleEvents = {
    onDeviceFound: (device: DeviceInfo) => void;
    onDeviceDisappeared: (deviceId: string) => void;
    onConnectionChanged: (params: ConnectionChangedEventPayload) => void;
    onPlaybackStatusChanged: (status: PlaybackStatus) => void;
    onError: (params: ErrorEventPayload) => void;
    onPermissionStatus: (params: PermissionStatusEventPayload) => void;
};
export type ErrorEventPayload = {
    code: string;
    message: string;
    deviceId?: string;
};
export type PermissionStatusEventPayload = {
    permission: 'localNetwork' | 'bluetooth' | 'location';
    status: 'granted' | 'denied' | 'unavailable';
};
export type ConnectionChangedEventPayload = {
    deviceId: string;
    connected: boolean;
};
export type ExpoDlnaPlayerViewProps = {
    autoDiscover?: boolean;
    style?: StyleProp<ViewStyle>;
};
export interface ProjectionMode {
    SCREEN_MIRRORING: string;
    VIDEO_ONLY: string;
}
interface EventEmitterInterface<T> {
    addListener(eventType: keyof T, listener: T[keyof T]): {
        remove: () => void;
    };
    removeListener(eventType: keyof T, listener: T[keyof T]): void;
    removeAllListeners(eventType?: keyof T): void;
    emit(eventType: keyof T, ...args: any[]): void;
    listenerCount(eventType: keyof T): number;
}
export interface DLNAPlayerInterface extends EventEmitterInterface<ExpoDlnaPlayerModuleEvents> {
    startDiscovery(): Promise<void>;
    stopDiscovery(): Promise<void>;
    getDevices(): Promise<DeviceInfo[]>;
    connectToDevice(deviceId: string): Promise<boolean>;
    disconnectFromDevice(): Promise<void>;
    isConnected(): Promise<boolean>;
    getConnectedDevice(): Promise<DeviceInfo | null>;
    play(url: string, title?: string, mimeType?: string): Promise<void>;
    pause(): Promise<void>;
    resume(): Promise<void>;
    stop(): Promise<void>;
    seek(position: number): Promise<void>;
    setVolume(volume: number): Promise<void>;
    getPlaybackStatus(): Promise<PlaybackStatus>;
    startProjection(deviceId: string, mode?: string): Promise<boolean>;
    stopProjection(): Promise<void>;
    isProjectionSupported(): Promise<boolean>;
}
export {};
//# sourceMappingURL=ExpoDlnaPlayer.types.d.ts.map