{"functions": ["bridge_incoming_process", "bridge_incoming", "bridge_unset_operator", "bridge_outgoing", "bridge_set_operator", "bridge_set_outgoing_fee"], "snippet": "def bridge_incoming(info, args):\n tick = args['a'][0]\n assert type(tick) is str\n assert len(tick) > 0 and len(tick) < 42\n assert tick[0] in string.ascii_uppercase\n assert set(tick) <= set(string.ascii_uppercase+string.digits+'_')\n\n assert args['f'] == 'bridge_incoming'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n operator, _ = get(tick, 'bridge_operator', None)\n assert operator is not None, \"Bridge is not initialized\"\n sender = info['sender']\n assert sender == operator, \"Only the operator can perform this operation\"\n\n amount = int(args['a'][1])\n assert amount > 0\n\n receiver = args['a'][2].lower()\n assert len(receiver) <= 42\n assert type(receiver) is str\n if len(receiver) == 42:\n assert receiver.startswith('0x')\n assert set(receiver[2:]) <= set(string.digits+'abcdef')\n else:\n assert len(receiver) > 4\n\n chain = args['a'][3].lower()\n assert chain in ['base']\n tx_hash = args['a'][4].lower().replace('0x', '')\n assert len(tx_hash) == 64\n\n balance, _ = get(tick, 'balance', 0, receiver)\n balance = int(balance)\n balance += amount\n put(receiver, tick, 'balance', balance, receiver)\n\n total, _ = get(tick, 'total', 0)\n total = int(total)\n total += amount\n asset_owner, _ = get('asset', 'owner', None, tick)\n assert asset_owner\n put(asset_owner, tick, 'total', total)\n\n event('BridgeIn', [tick, amount, receiver, chain, tx_hash])\n\n\ndef bridge_outgoing(info, args):\n tick = args['a'][0]\n assert type(tick) is str\n assert len(tick) > 0 and len(tick) < 42\n assert tick[0] in string.ascii_uppercase\n assert set(tick) <= set(string.ascii_uppercase+string.digits+'_')\n\n assert args['f'] == 'bridge_outgoing'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n amount = int(args['a'][1])\n assert amount > 0\n\n sender = info['sender']\n addr = handle_lookup(sender)\n\n balance, _ = get(tick, 'balance', 0, addr)\n balance = int(balance)\n assert balance - amount >= 0\n balance -= amount\n put(addr, tick, 'balance', balance, addr)\n\n total, _ = get(tick, 'total', 0)\n total = int(total)\n assert total - amount >= 0\n total -= amount\n asset_owner, _ = get('asset', 'owner', None, tick)\n assert asset_owner\n put(asset_owner, tick, 'total', total)\n\n chain = args['a'][2]\n assert chain in ['base']\n\n event('BridgeOut', [tick, amount, sender, chain])\n\n\ndef bridge_set_operator(info, args):\n tick = args['a'][0]\n assert type(tick) is str\n assert len(tick) > 0 and len(tick) < 42\n assert tick[0] in string.ascii_uppercase\n assert set(tick) <= set(string.ascii_uppercase+string.digits+'_')\n\n assert args['f'] == 'bridge_set_operator'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n asset_owner, _ = get('asset', 'owner', None, tick)\n sender = info['sender']\n addr = handle_lookup(sender)\n # print('bridge_set_operator', asset_owner, addr)\n assert sender == asset_owner, \"Only the asset owner can perform this operation\"\n\n operator = args['a'][1].lower()\n assert type(operator) is str\n # assert len(operator) == 42\n assert operator.startswith('0x')\n assert set(operator[2:]) <= set(string.digits+'abcdef')\n\n put(addr, tick, 'bridge_operator', operator)\n event('BridgeOperaterSet', [tick, operator])\n\n\ndef bridge_unset_operator(info, args):\n tick = args['a'][0]\n assert type(tick) is str\n assert len(tick) > 0 and len(tick) < 42\n assert tick[0] in string.ascii_uppercase\n assert set(tick) <= set(string.ascii_uppercase+string.digits+'_')\n\n assert args['f'] == 'bridge_unset_operator'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n asset_owner, _ = get('asset', 'owner', None, tick)\n sender = info['sender']\n addr = handle_lookup(sender)\n assert addr == asset_owner, \"Only the asset owner can perform this operation\"\n\n put(addr, tick, 'bridge_operator', None)\n event('BridgeOperaterUnset', [tick])\n\ndef bridge_set_outgoing_fee(info, args):\n tick = args['a'][0]\n assert type(tick) is str\n assert len(tick) > 0 and len(tick) < 42\n assert tick[0] in string.ascii_uppercase\n assert set(tick) <= set(string.ascii_uppercase+string.digits+'_')\n\n assert args['f'] == 'bridge_set_outgoing_fee'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n chain = args['a'][1]\n assert chain in ['base']\n\n fee = int(args['a'][2])\n assert fee > 0\n\n asset_owner, _ = get('asset', 'owner', None, tick)\n sender = info['sender']\n addr = handle_lookup(sender)\n assert addr == asset_owner, \"Only the asset owner can perform this operation\"\n\n put(asset_owner, tick, 'bridgeout_fee', fee)\n event('BridgeOutFeeChanged', [tick, fee])\n"}