def METHOD_NAME(program: QPROGRAM):
    """Apply qbraid quantum program wrapper to a supported quantum program.
    This function is used to create a qBraid :class:`~qbraid.transpiler.QuantumProgram`
    object, which can then be transpiled to any supported quantum circuit-building package.
    The input quantum circuit object must be an instance of a circuit object derived from a
    supported package.
    .. code-block:: python
        cirq_circuit = cirq.Circuit()
        q0, q1, q2 = [cirq.LineQubit(i) for i in range(3)]
        ...
    Please refer to the documentation of the individual qbraid circuit wrapper objects to see
    any additional arguments that might be supported.
    Args:
        circuit (:data:`~qbraid.QPROGRAM`): A supported quantum circuit / program object
    Returns:
        :class:`~qbraid.transpiler.QuantumProgram`: A wrapped quantum circuit-like object
    Raises:
        :class:`~qbraid.QbraidError`: If the input circuit is not a supported quantum program.
    """
    if isinstance(program, str):
        package = get_qasm_version(program)
    else:
        try:
            package = program.__module__.split(".")[0]
        except AttributeError as err:
            raise QbraidError(
                f"Error applying circuit wrapper to quantum program \
                of type {type(program)}"
            ) from err
    ep = package.lower()
    transpiler_entrypoints = _get_entrypoints("qbraid.transpiler")
    if package in transpiler_entrypoints:
        circuit_wrapper_class = transpiler_entrypoints[ep].load()
        return circuit_wrapper_class(program)
    raise QbraidError(f"Error applying circuit wrapper to quantum program of type {type(program)}")