async def METHOD_NAME(
    self,
    *,
    topic: str = MISSING,
    privacy_level: StagePrivacyLevel = MISSING,
    reason: Optional[str] = None,
) -> None:
    """|coro|
    Edits the stage instance.
    You must have the :attr:`~Permissions.manage_channels` permission to
    use this.
    Parameters
    ----------
    topic: :class:`str`
        The stage instance's new topic.
    privacy_level: :class:`StagePrivacyLevel`
        The stage instance's new privacy level.
    reason: :class:`str`
        The reason the stage instance was edited. Shows up on the audit log.
    Raises
    ------
    InvalidArgument
        If the ``privacy_level`` parameter is not the proper type.
    Forbidden
        You do not have permissions to edit the stage instance.
    HTTPException
        Editing a stage instance failed.
    """
    payload = {}
    if topic is not MISSING:
        payload["topic"] = topic
    if privacy_level is not MISSING:
        if not isinstance(privacy_level, StagePrivacyLevel):
            raise InvalidArgument("privacy_level field must be of type PrivacyLevel")
        payload["privacy_level"] = privacy_level.value
    if payload:
        await self._state.http.edit_stage_instance(self.channel_id, **payload, reason=reason)