# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.1.0
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _freeswitch
else:
    import _freeswitch

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)



def setGlobalVariable(var_name, var_val):
    return _freeswitch.setGlobalVariable(var_name, var_val)

def getGlobalVariable(var_name):
    return _freeswitch.getGlobalVariable(var_name)

def consoleLog(level_str, msg):
    return _freeswitch.consoleLog(level_str, msg)

def consoleLog2(level_str, file, func, line, msg):
    return _freeswitch.consoleLog2(level_str, file, func, line, msg)

def consoleCleanLog(msg):
    return _freeswitch.consoleCleanLog(msg)

def running():
    return _freeswitch.running()

def email(to, _from, headers=None, body=None, file=None, convert_cmd=None, convert_ext=None):
    return _freeswitch.email(to, _from, headers, body, file, convert_cmd, convert_ext)
class IVRMenu(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, main, name, greeting_sound, short_greeting_sound, invalid_sound, exit_sound, transfer_sound, confirm_macro, confirm_key, tts_engine, tts_voice, confirm_attempts, inter_timeout, digit_len, timeout, max_failures, max_timeouts):
        _freeswitch.IVRMenu_swiginit(self, _freeswitch.new_IVRMenu(main, name, greeting_sound, short_greeting_sound, invalid_sound, exit_sound, transfer_sound, confirm_macro, confirm_key, tts_engine, tts_voice, confirm_attempts, inter_timeout, digit_len, timeout, max_failures, max_timeouts))
    __swig_destroy__ = _freeswitch.delete_IVRMenu

    def bindAction(self, action, arg, bind):
        return _freeswitch.IVRMenu_bindAction(self, action, arg, bind)

    def execute(self, session, name):
        return _freeswitch.IVRMenu_execute(self, session, name)

# Register IVRMenu in _freeswitch:
_freeswitch.IVRMenu_swigregister(IVRMenu)
class API(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, s=None):
        _freeswitch.API_swiginit(self, _freeswitch.new_API(s))
    __swig_destroy__ = _freeswitch.delete_API

    def execute(self, command, data=None):
        return _freeswitch.API_execute(self, command, data)

    def executeString(self, command):
        return _freeswitch.API_executeString(self, command)

    def getTime(self):
        return _freeswitch.API_getTime(self)

# Register API in _freeswitch:
_freeswitch.API_swigregister(API)
class input_callback_state_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    function = property(_freeswitch.input_callback_state_t_function_get, _freeswitch.input_callback_state_t_function_set)
    threadState = property(_freeswitch.input_callback_state_t_threadState_get, _freeswitch.input_callback_state_t_threadState_set)
    extra = property(_freeswitch.input_callback_state_t_extra_get, _freeswitch.input_callback_state_t_extra_set)
    funcargs = property(_freeswitch.input_callback_state_t_funcargs_get, _freeswitch.input_callback_state_t_funcargs_set)

    def __init__(self):
        _freeswitch.input_callback_state_t_swiginit(self, _freeswitch.new_input_callback_state_t())
    __swig_destroy__ = _freeswitch.delete_input_callback_state_t

# Register input_callback_state_t in _freeswitch:
_freeswitch.input_callback_state_t_swigregister(input_callback_state_t)
S_HUP = _freeswitch.S_HUP
S_FREE = _freeswitch.S_FREE
S_RDLOCK = _freeswitch.S_RDLOCK
class DTMF(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    digit = property(_freeswitch.DTMF_digit_get, _freeswitch.DTMF_digit_set)
    duration = property(_freeswitch.DTMF_duration_get, _freeswitch.DTMF_duration_set)

    def __init__(self, *args):
        _freeswitch.DTMF_swiginit(self, _freeswitch.new_DTMF(*args))
    __swig_destroy__ = _freeswitch.delete_DTMF

# Register DTMF in _freeswitch:
_freeswitch.DTMF_swigregister(DTMF)
class Stream(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _freeswitch.Stream_swiginit(self, _freeswitch.new_Stream(*args))
    __swig_destroy__ = _freeswitch.delete_Stream

    def read(self, len):
        return _freeswitch.Stream_read(self, len)

    def write(self, data):
        return _freeswitch.Stream_write(self, data)

    def raw_write(self, data, len):
        return _freeswitch.Stream_raw_write(self, data, len)

    def get_data(self):
        return _freeswitch.Stream_get_data(self)

# Register Stream in _freeswitch:
_freeswitch.Stream_swigregister(Stream)
class Event(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    event = property(_freeswitch.Event_event_get, _freeswitch.Event_event_set)
    serialized_string = property(_freeswitch.Event_serialized_string_get, _freeswitch.Event_serialized_string_set)
    mine = property(_freeswitch.Event_mine_get, _freeswitch.Event_mine_set)

    def __init__(self, *args):
        _freeswitch.Event_swiginit(self, _freeswitch.new_Event(*args))
    __swig_destroy__ = _freeswitch.delete_Event

    def chat_execute(self, app, data=None):
        return _freeswitch.Event_chat_execute(self, app, data)

    def chat_send(self, dest_proto=None):
        return _freeswitch.Event_chat_send(self, dest_proto)

    def serialize(self, format=None):
        return _freeswitch.Event_serialize(self, format)

    def setPriority(self, *args):
        return _freeswitch.Event_setPriority(self, *args)

    def getHeader(self, header_name):
        return _freeswitch.Event_getHeader(self, header_name)

    def getBody(self):
        return _freeswitch.Event_getBody(self)

    def getType(self):
        return _freeswitch.Event_getType(self)

    def addBody(self, value):
        return _freeswitch.Event_addBody(self, value)

    def addHeader(self, header_name, value):
        return _freeswitch.Event_addHeader(self, header_name, value)

    def delHeader(self, header_name):
        return _freeswitch.Event_delHeader(self, header_name)

    def fire(self):
        return _freeswitch.Event_fire(self)

    def merge(self, to_merge):
        return _freeswitch.Event_merge(self, to_merge)

# Register Event in _freeswitch:
_freeswitch.Event_swigregister(Event)
class EventConsumer(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    events = property(_freeswitch.EventConsumer_events_get, _freeswitch.EventConsumer_events_set)
    e_event_id = property(_freeswitch.EventConsumer_e_event_id_get, _freeswitch.EventConsumer_e_event_id_set)
    e_callback = property(_freeswitch.EventConsumer_e_callback_get, _freeswitch.EventConsumer_e_callback_set)
    e_subclass_name = property(_freeswitch.EventConsumer_e_subclass_name_get, _freeswitch.EventConsumer_e_subclass_name_set)
    e_cb_arg = property(_freeswitch.EventConsumer_e_cb_arg_get, _freeswitch.EventConsumer_e_cb_arg_set)
    enodes = property(_freeswitch.EventConsumer_enodes_get, _freeswitch.EventConsumer_enodes_set)
    node_index = property(_freeswitch.EventConsumer_node_index_get, _freeswitch.EventConsumer_node_index_set)

    def __init__(self, *args):
        _freeswitch.EventConsumer_swiginit(self, _freeswitch.new_EventConsumer(*args))
    __swig_destroy__ = _freeswitch.delete_EventConsumer

    def bind(self, *args):
        return _freeswitch.EventConsumer_bind(self, *args)

    def pop(self, block=0, timeout=0):
        return _freeswitch.EventConsumer_pop(self, block, timeout)

    def cleanup(self):
        return _freeswitch.EventConsumer_cleanup(self)

# Register EventConsumer in _freeswitch:
_freeswitch.EventConsumer_swigregister(EventConsumer)
class CoreSession(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _freeswitch.delete_CoreSession
    session = property(_freeswitch.CoreSession_session_get, _freeswitch.CoreSession_session_set)
    channel = property(_freeswitch.CoreSession_channel_get, _freeswitch.CoreSession_channel_set)
    flags = property(_freeswitch.CoreSession_flags_get, _freeswitch.CoreSession_flags_set)
    allocated = property(_freeswitch.CoreSession_allocated_get, _freeswitch.CoreSession_allocated_set)
    cb_state = property(_freeswitch.CoreSession_cb_state_get, _freeswitch.CoreSession_cb_state_set)
    hook_state = property(_freeswitch.CoreSession_hook_state_get, _freeswitch.CoreSession_hook_state_set)
    cause = property(_freeswitch.CoreSession_cause_get, _freeswitch.CoreSession_cause_set)
    uuid = property(_freeswitch.CoreSession_uuid_get, _freeswitch.CoreSession_uuid_set)
    tts_name = property(_freeswitch.CoreSession_tts_name_get, _freeswitch.CoreSession_tts_name_set)
    voice_name = property(_freeswitch.CoreSession_voice_name_get, _freeswitch.CoreSession_voice_name_set)

    def insertFile(self, file, insert_file, sample_point):
        return _freeswitch.CoreSession_insertFile(self, file, insert_file, sample_point)

    def answer(self):
        return _freeswitch.CoreSession_answer(self)

    def _print(self, txt):
        return _freeswitch.CoreSession__print(self, txt)

    def preAnswer(self):
        return _freeswitch.CoreSession_preAnswer(self)

    def hangup(self, *args):
        return _freeswitch.CoreSession_hangup(self, *args)

    def hangupState(self):
        return _freeswitch.CoreSession_hangupState(self)

    def setVariable(self, var, val):
        return _freeswitch.CoreSession_setVariable(self, var, val)

    def setPrivate(self, var, val):
        return _freeswitch.CoreSession_setPrivate(self, var, val)

    def getPrivate(self, var):
        return _freeswitch.CoreSession_getPrivate(self, var)

    def getVariable(self, var):
        return _freeswitch.CoreSession_getVariable(self, var)

    def process_callback_result(self, result):
        return _freeswitch.CoreSession_process_callback_result(self, result)

    def say(self, tosay, module_name, say_type, say_method, say_gender=None):
        return _freeswitch.CoreSession_say(self, tosay, module_name, say_type, say_method, say_gender)

    def sayPhrase(self, *args):
        return _freeswitch.CoreSession_sayPhrase(self, *args)

    def hangupCause(self):
        return _freeswitch.CoreSession_hangupCause(self)

    def getState(self):
        return _freeswitch.CoreSession_getState(self)

    def recordFile(self, file_name, time_limit=0, silence_threshold=0, silence_hits=0):
        return _freeswitch.CoreSession_recordFile(self, file_name, time_limit, silence_threshold, silence_hits)

    def originate(self, a_leg_session, dest, timeout=60, handlers=None):
        return _freeswitch.CoreSession_originate(self, a_leg_session, dest, timeout, handlers)

    def destroy(self):
        return _freeswitch.CoreSession_destroy(self)

    def setDTMFCallback(self, cbfunc, funcargs):
        return _freeswitch.CoreSession_setDTMFCallback(self, cbfunc, funcargs)

    def speak(self, text):
        return _freeswitch.CoreSession_speak(self, text)

    def set_tts_parms(self, tts_name, voice_name):
        return _freeswitch.CoreSession_set_tts_parms(self, tts_name, voice_name)

    def set_tts_params(self, tts_name, voice_name):
        return _freeswitch.CoreSession_set_tts_params(self, tts_name, voice_name)

    def collectDigits(self, *args):
        return _freeswitch.CoreSession_collectDigits(self, *args)

    def getDigits(self, *args):
        return _freeswitch.CoreSession_getDigits(self, *args)

    def transfer(self, extension, dialplan=None, context=None):
        return _freeswitch.CoreSession_transfer(self, extension, dialplan, context)

    def read(self, min_digits, max_digits, prompt_audio_file, timeout, valid_terminators, digit_timeout=0):
        return _freeswitch.CoreSession_read(self, min_digits, max_digits, prompt_audio_file, timeout, valid_terminators, digit_timeout)

    def detectSpeech(self, arg0, arg1=None, arg2=None, arg3=None):
        return _freeswitch.CoreSession_detectSpeech(self, arg0, arg1, arg2, arg3)

    def playAndGetDigits(self, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, digits_regex, var_name=None, digit_timeout=0, transfer_on_failure=None):
        return _freeswitch.CoreSession_playAndGetDigits(self, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, digits_regex, var_name, digit_timeout, transfer_on_failure)

    def playAndDetectSpeech(self, file, engine, grammar):
        return _freeswitch.CoreSession_playAndDetectSpeech(self, file, engine, grammar)

    def streamFile(self, file, starting_sample_count=0):
        return _freeswitch.CoreSession_streamFile(self, file, starting_sample_count)

    def sleep(self, ms, sync=0):
        return _freeswitch.CoreSession_sleep(self, ms, sync)

    def flushEvents(self):
        return _freeswitch.CoreSession_flushEvents(self)

    def flushDigits(self):
        return _freeswitch.CoreSession_flushDigits(self)

    def setAutoHangup(self, val):
        return _freeswitch.CoreSession_setAutoHangup(self, val)

    def setHangupHook(self, hangup_func):
        return _freeswitch.CoreSession_setHangupHook(self, hangup_func)

    def ready(self):
        return _freeswitch.CoreSession_ready(self)

    def bridged(self):
        return _freeswitch.CoreSession_bridged(self)

    def answered(self):
        return _freeswitch.CoreSession_answered(self)

    def mediaReady(self):
        return _freeswitch.CoreSession_mediaReady(self)

    def waitForAnswer(self, calling_session):
        return _freeswitch.CoreSession_waitForAnswer(self, calling_session)

    def execute(self, app, data=None):
        return _freeswitch.CoreSession_execute(self, app, data)

    def sendEvent(self, sendME):
        return _freeswitch.CoreSession_sendEvent(self, sendME)

    def setEventData(self, e):
        return _freeswitch.CoreSession_setEventData(self, e)

    def getXMLCDR(self):
        return _freeswitch.CoreSession_getXMLCDR(self)

    def begin_allow_threads(self):
        return _freeswitch.CoreSession_begin_allow_threads(self)

    def end_allow_threads(self):
        return _freeswitch.CoreSession_end_allow_threads(self)

    def get_uuid(self):
        return _freeswitch.CoreSession_get_uuid(self)

    def get_cb_args(self):
        return _freeswitch.CoreSession_get_cb_args(self)

    def check_hangup_hook(self):
        return _freeswitch.CoreSession_check_hangup_hook(self)

    def run_dtmf_callback(self, input, itype):
        return _freeswitch.CoreSession_run_dtmf_callback(self, input, itype)

    def consoleLog(self, level_str, msg):
        return _freeswitch.CoreSession_consoleLog(self, level_str, msg)

    def consoleLog2(self, level_str, file, func, line, msg):
        return _freeswitch.CoreSession_consoleLog2(self, level_str, file, func, line, msg)

# Register CoreSession in _freeswitch:
_freeswitch.CoreSession_swigregister(CoreSession)

def console_log(level_str, msg):
    return _freeswitch.console_log(level_str, msg)

def console_log2(level_str, file, func, line, msg):
    return _freeswitch.console_log2(level_str, file, func, line, msg)

def console_clean_log(msg):
    return _freeswitch.console_clean_log(msg)

def msleep(ms):
    return _freeswitch.msleep(ms)

def bridge(session_a, session_b):
    return _freeswitch.bridge(session_a, session_b)

def hanguphook(session):
    return _freeswitch.hanguphook(session)

def dtmf_callback(session, input, itype, buf, buflen):
    return _freeswitch.dtmf_callback(session, input, itype, buf, buflen)
class Session(CoreSession):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _freeswitch.Session_swiginit(self, _freeswitch.new_Session(*args))
    __swig_destroy__ = _freeswitch.delete_Session

    def begin_allow_threads(self):
        return _freeswitch.Session_begin_allow_threads(self)

    def end_allow_threads(self):
        return _freeswitch.Session_end_allow_threads(self)

    def check_hangup_hook(self):
        return _freeswitch.Session_check_hangup_hook(self)

    def destroy(self):
        return _freeswitch.Session_destroy(self)

    def run_dtmf_callback(self, input, itype):
        return _freeswitch.Session_run_dtmf_callback(self, input, itype)

    def setInputCallback(self, cbfunc, funcargs=None):
        return _freeswitch.Session_setInputCallback(self, cbfunc, funcargs)

    def unsetInputCallback(self):
        return _freeswitch.Session_unsetInputCallback(self)

    def setHangupHook(self, pyfunc, arg=None):
        return _freeswitch.Session_setHangupHook(self, pyfunc, arg)

    def ready(self):
        return _freeswitch.Session_ready(self)
    cb_function = property(_freeswitch.Session_cb_function_get, _freeswitch.Session_cb_function_set)
    cb_arg = property(_freeswitch.Session_cb_arg_get, _freeswitch.Session_cb_arg_set)
    hangup_func = property(_freeswitch.Session_hangup_func_get, _freeswitch.Session_hangup_func_set)
    hangup_func_arg = property(_freeswitch.Session_hangup_func_arg_get, _freeswitch.Session_hangup_func_arg_set)

    def setPython(self, state):
        return _freeswitch.Session_setPython(self, state)

    def setSelf(self, state):
        return _freeswitch.Session_setSelf(self, state)

# Register Session in _freeswitch:
_freeswitch.Session_swigregister(Session)

