from gi.repository import GObject
from gi.repository import Gst

CODEC_FORMAT: str = ...
CODEC_ID_ANY: int = ...
CODEC_ID_DISABLE: int = ...
RTP_HEADER_EXTENSION_FORMAT: str = ...

def candidate_list_copy(*args, **kwargs): ...
def codec_list_are_equal(*args, **kwargs): ...
def codec_list_copy(*args, **kwargs): ...
def codec_list_from_keyfile(*args, **kwargs): ...
def error_quark(*args, **kwargs): ...
def media_type_to_string(*args, **kwargs): ...
def parse_error(*args, **kwargs): ...
def rtp_header_extension_list_copy(*args, **kwargs): ...
def rtp_header_extension_list_from_keyfile(*args, **kwargs): ...
def utils_get_default_codec_preferences(*args, **kwargs): ...
def utils_get_default_rtp_header_extension_preferences(*args, **kwargs): ...
def utils_set_bitrate(*args, **kwargs): ...
def value_set_candidate_list(*args, **kwargs): ...

class Candidate:
    base_ip = ...
    base_port = ...
    component_id = ...
    foundation = ...
    ip = ...
    password = ...
    port = ...
    priority = ...
    proto = ...
    ttl = ...
    type = ...
    username = ...

    def new(*args, **kwargs): ...
    def new_full(*args, **kwargs): ...

class CandidateList: ...

class Codec:
    channels = ...
    clock_rate = ...
    encoding_name = ...
    feedback_params = ...
    id = ...
    media_type = ...
    minimum_reporting_interval = ...
    optional_params = ...

    def add_feedback_parameter(*args, **kwargs): ...
    def add_optional_parameter(*args, **kwargs): ...
    def are_equal(*args, **kwargs): ...
    def get_feedback_parameter(*args, **kwargs): ...
    def get_optional_parameter(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def remove_feedback_parameter(*args, **kwargs): ...
    def remove_optional_parameter(*args, **kwargs): ...
    def to_string(*args, **kwargs): ...

class CodecGList:
    def are_equal(*args, **kwargs): ...
    def from_keyfile(*args, **kwargs): ...

class CodecParameter:
    name = ...
    value = ...

    def free(*args, **kwargs): ...

class Conference(Gst.Bin):
    _padding = ...

    def new_participant(*args, **kwargs): ...
    def new_session(self, media_type: MediaType) -> Session: ...
    def do_new_participant(self, *args, **kwargs): ...
    def do_new_session(self, *args, **kwargs): ...

class ElementAddedNotifier:
    parent = ...
    priv = ...

    def add(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def remove(*args, **kwargs): ...
    def set_default_properties(*args, **kwargs): ...
    def set_properties_from_file(*args, **kwargs): ...
    def set_properties_from_keyfile(*args, **kwargs): ...

class FeedbackParameter:
    extra_params = ...
    subtype = ...
    type = ...

    def free(*args, **kwargs): ...

class Participant:
    _padding = ...
    mutex = ...
    parent = ...
    priv = ...

class Plugin:
    parent = ...
    priv = ...
    type = ...
    unused = ...

    def list_available(*args, **kwargs): ...
    def register_static(*args, **kwargs): ...

class RtpHeaderExtension:
    direction = ...
    id = ...
    uri = ...

    def are_equal(*args, **kwargs): ...
    def new(*args, **kwargs): ...

class RtpHeaderExtensionGList:
    def from_keyfile(*args, **kwargs): ...

class Session:
    _padding = ...
    parent = ...
    priv = ...

    def codecs_need_resend(*args, **kwargs): ...
    def destroy(*args, **kwargs): ...
    def emit_error(*args, **kwargs): ...
    def get_stream_transmitter_type(*args, **kwargs): ...
    def list_transmitters(*args, **kwargs): ...
    def new_stream(*args, **kwargs): ...
    def parse_codecs_changed(*args, **kwargs): ...
    def parse_send_codec_changed(*args, **kwargs): ...
    def parse_telephony_event_started(*args, **kwargs): ...
    def parse_telephony_event_stopped(*args, **kwargs): ...
    def set_allowed_caps(*args, **kwargs): ...
    def set_codec_preferences(*args, **kwargs): ...
    def set_encryption_parameters(*args, **kwargs): ...
    def set_send_codec(*args, **kwargs): ...
    def start_telephony_event(*args, **kwargs): ...
    def stop_telephony_event(*args, **kwargs): ...
    def do_codecs_need_resend(self, *args, **kwargs): ...
    def do_get_stream_transmitter_type(self, *args, **kwargs): ...
    def do_list_transmitters(self, *args, **kwargs): ...
    def do_new_stream(self, *args, **kwargs): ...
    def do_set_allowed_caps(self, *args, **kwargs): ...
    def do_set_codec_preferences(self, *args, **kwargs): ...
    def do_set_encryption_parameters(self, *args, **kwargs): ...
    def do_set_send_codec(self, *args, **kwargs): ...
    def do_start_telephony_event(self, *args, **kwargs): ...
    def do_stop_telephony_event(self, *args, **kwargs): ...

class Stream:
    _padding = ...
    parent = ...
    priv = ...

    def add_id(*args, **kwargs): ...
    def add_remote_candidates(*args, **kwargs): ...
    def destroy(*args, **kwargs): ...
    def emit_error(*args, **kwargs): ...
    def emit_src_pad_added(*args, **kwargs): ...
    def force_remote_candidates(*args, **kwargs): ...
    def iterate_src_pads(*args, **kwargs): ...
    def parse_component_state_changed(*args, **kwargs): ...
    def parse_local_candidates_prepared(*args, **kwargs): ...
    def parse_new_active_candidate_pair(*args, **kwargs): ...
    def parse_new_local_candidate(*args, **kwargs): ...
    def parse_recv_codecs_changed(*args, **kwargs): ...
    def set_decryption_parameters(*args, **kwargs): ...
    def set_remote_codecs(*args, **kwargs): ...
    def set_transmitter(*args, **kwargs): ...
    def set_transmitter_ht(*args, **kwargs): ...
    def do_add_id(self, *args, **kwargs): ...
    def do_add_remote_candidates(self, *args, **kwargs): ...
    def do_force_remote_candidates(self, *args, **kwargs): ...
    def do_set_decryption_parameters(self, *args, **kwargs): ...
    def do_set_remote_codecs(self, *args, **kwargs): ...
    def do_set_transmitter(self, *args, **kwargs): ...

class StreamTransmitter:
    _padding = ...
    parent = ...
    priv = ...

    def add_remote_candidates(*args, **kwargs): ...
    def emit_error(*args, **kwargs): ...
    def force_remote_candidates(*args, **kwargs): ...
    def gather_local_candidates(*args, **kwargs): ...
    def stop(*args, **kwargs): ...
    def do_add_remote_candidates(self, *args, **kwargs): ...
    def do_force_remote_candidates(self, *args, **kwargs): ...
    def do_gather_local_candidates(self, *args, **kwargs): ...
    def do_stop(self, *args, **kwargs): ...

class Transmitter:
    _padding = ...
    construction_error = ...
    parent = ...
    priv = ...

    def emit_error(*args, **kwargs): ...
    def get_stream_transmitter_type(*args, **kwargs): ...
    def list_available(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def new_stream_transmitter(*args, **kwargs): ...
    def do_get_stream_transmitter_type(self, *args, **kwargs): ...
    def do_new_stream_transmitter(self, *args, **kwargs): ...

class StreamDirection(GObject.GFlags):
    NONE = ...
    SEND = ...
    RECV = ...
    BOTH = ...

class CandidateType(GObject.GEnum):
    HOST = ...
    SRFLX = ...
    PRFLX = ...
    RELAY = ...
    MULTICAST = ...

class ComponentType(GObject.GEnum):
    NONE = ...
    RTP = ...
    RTCP = ...

class DTMFEvent(GObject.GEnum):
    STAR = ...
    POUND = ...
    A = ...
    B = ...
    C = ...
    D = ...

class DTMFMethod(GObject.GEnum):
    RTP_RFC4733 = ...
    SOUND = ...

class Error(GObject.GEnum):
    CONSTRUCTION = ...
    INTERNAL = ...
    INVALID_ARGUMENTS = ...
    NETWORK = ...
    NOT_IMPLEMENTED = ...
    NEGOTIATION_FAILED = ...
    UNKNOWN_CODEC = ...
    NO_CODECS = ...
    NO_CODECS_LEFT = ...
    CONNECTION_FAILED = ...
    DISPOSED = ...
    ALREADY_EXISTS = ...
    quark = ...

class MediaType(GObject.GEnum):
    AUDIO = ...
    VIDEO = ...
    APPLICATION = ...
    LAST = ...
    to_string = ...

class NetworkProtocol(GObject.GEnum):
    UDP = ...
    TCP = ...
    TCP_PASSIVE = ...
    TCP_ACTIVE = ...
    TCP_SO = ...

class StreamState(GObject.GEnum):
    FAILED = ...
    DISCONNECTED = ...
    GATHERING = ...
    CONNECTING = ...
    CONNECTED = ...
    READY = ...
