def approveproposal(self, proposal_ids, account=None, approver=None, **kwargs):
        """ Approve Proposal

            :param list proposal_id: Ids of the proposals
            :param str appprover: The account or key to use for approval
                (defaults to ``account``)
            :param str account: (optional) the account to allow access
                to (defaults to ``default_account``)
        """
        from .proposal import Proposal

        if not account:
            if "default_account" in self.config:
                account = self.config["default_account"]
        if not account:
            raise ValueError("You need to provide an account")
        account = Account(account, blockchain_instance=self)
        is_key = approver and approver[:3] == self.prefix
        if not approver and not is_key:
            approver = account
        elif approver and not is_key:
            approver = Account(approver, blockchain_instance=self)
        else:
            approver = PublicKey(approver)

        if not isinstance(proposal_ids, (list, set, tuple)):
            proposal_ids = {proposal_ids}

        op = []
        for proposal_id in proposal_ids:
            proposal = Proposal(proposal_id, blockchain_instance=self)
            update_dict = {
                "fee": {"amount": 0, "asset_id": "1.3.0"},
                "fee_paying_account": account["id"],
                "proposal": proposal["id"],
                "prefix": self.prefix,
            }
            if is_key:
                update_dict.update({"key_approvals_to_add": [str(approver)]})
            else:
                update_dict.update({"active_approvals_to_add": [approver["id"]]})
            op.append(operations.Proposal_update(**update_dict))
        if is_key:
            self.txbuffer.appendSigner(approver, "active")
            return self.finalizeOp(op, account["name"], "active", **kwargs)
        return self.finalizeOp(op, approver, "active", **kwargs)
Approve Proposal

            :param list proposal_id: Ids of the proposals
            :param str appprover: The account or key to use for approval
                (defaults to ``account``)
            :param str account: (optional) the account to allow access
                to (defaults to ``default_account``)