const abiabi = {
    'version': 'eosio::abi/1.1',
    'structs': [{
        'name': 'extensions_entry',
        'base': '',
        'fields': [{
            'name': 'tag',
            'type': 'uint16'
          },
          {
            'name': 'value',
            'type': 'bytes'
          }
        ]
      },
      {
        'name': 'type_def',
        'base': '',
        'fields': [{
            'name': 'new_type_name',
            'type': 'string'
          },
          {
            'name': 'type',
            'type': 'string'
          }
        ]
      },
      {
        'name': 'field_def',
        'base': '',
        'fields': [{
            'name': 'name',
            'type': 'string'
          },
          {
            'name': 'type',
            'type': 'string'
          }
        ]
      },
      {
        'name': 'struct_def',
        'base': '',
        'fields': [{
            'name': 'name',
            'type': 'string'
          },
          {
            'name': 'base',
            'type': 'string'
          },
          {
            'name': 'fields',
            'type': 'field_def[]'
          }
        ]
      },
      {
        'name': 'action_def',
        'base': '',
        'fields': [{
            'name': 'name',
            'type': 'name'
          },
          {
            'name': 'type',
            'type': 'string'
          },
          {
            'name': 'ricardian_contract',
            'type': 'string'
          }
        ]
      },
      {
        'name': 'table_def',
        'base': '',
        'fields': [{
            'name': 'name',
            'type': 'name'
          },
          {
            'name': 'index_type',
            'type': 'string'
          },
          {
            'name': 'key_names',
            'type': 'string[]'
          },
          {
            'name': 'key_types',
            'type': 'string[]'
          },
          {
            'name': 'type',
            'type': 'string'
          }
        ]
      },
      {
        'name': 'clause_pair',
        'base': '',
        'fields': [{
            'name': 'id',
            'type': 'string'
          },
          {
            'name': 'body',
            'type': 'string'
          }
        ]
      },
      {
        'name': 'error_message',
        'base': '',
        'fields': [{
            'name': 'error_code',
            'type': 'uint64'
          },
          {
            'name': 'error_msg',
            'type': 'string'
          }
        ]
      },
      {
        'name': 'variant_def',
        'base': '',
        'fields': [{
            'name': 'name',
            'type': 'string'
          },
          {
            'name': 'types',
            'type': 'string[]'
          }
        ]
      },
      {
        'name': 'abi_def',
        'base': '',
        'fields': [{
            'name': 'version',
            'type': 'string'
          },
          {
            'name': 'types',
            'type': 'type_def[]'
          },
          {
            'name': 'structs',
            'type': 'struct_def[]'
          },
          {
            'name': 'actions',
            'type': 'action_def[]'
          },
          {
            'name': 'tables',
            'type': 'table_def[]'
          },
          {
            'name': 'ricardian_clauses',
            'type': 'clause_pair[]'
          },
          {
            'name': 'error_messages',
            'type': 'error_message[]'
          },
          {
            'name': 'abi_extensions',
            'type': 'extensions_entry[]'
          },
          {
            'name': 'variants',
            'type': 'variant_def[]$'
          }
        ]
      }
    ]
  };

const abis = {
    'eosio': {
      'version': 'eosio::abi/1.0',
      'types': [{
        'new_type_name': 'account_name',
        'type': 'name'
      }, {
        'new_type_name': 'permission_name',
        'type': 'name'
      }, {
        'new_type_name': 'action_name',
        'type': 'name'
      }, {
        'new_type_name': 'transaction_id_type',
        'type': 'checksum256'
      }, {
        'new_type_name': 'weight_type',
        'type': 'uint16'
      }],
      '____comment': 'eosio.bios structs: set_account_limits, setpriv, set_global_limits, producer_key, set_producers, require_auth are provided so abi available for deserialization in future.',
      'structs': [{
        'name': 'permission_level',
        'base': '',
        'fields': [
          { 'name': 'actor', 'type': 'account_name' },
          { 'name': 'permission', 'type': 'permission_name' }
        ]
      }, {
        'name': 'key_weight',
        'base': '',
        'fields': [
          { 'name': 'key', 'type': 'public_key' },
          { 'name': 'weight', 'type': 'weight_type' }
        ]
      }, {
        'name': 'bidname',
        'base': '',
        'fields': [
          { 'name': 'bidder', 'type': 'account_name' },
          { 'name': 'newname', 'type': 'account_name' },
          { 'name': 'bid', 'type': 'asset' }
        ]
      }, {
        'name': 'permission_level_weight',
        'base': '',
        'fields': [
          { 'name': 'permission', 'type': 'permission_level' },
          { 'name': 'weight', 'type': 'weight_type' }
        ]
      }, {
        'name': 'wait_weight',
        'base': '',
        'fields': [
          { 'name': 'wait_sec', 'type': 'uint32' },
          { 'name': 'weight', 'type': 'weight_type' }
        ]
      }, {
        'name': 'authority',
        'base': '',
        'fields': [
          { 'name': 'threshold', 'type': 'uint32' },
          { 'name': 'keys', 'type': 'key_weight[]' },
          { 'name': 'accounts', 'type': 'permission_level_weight[]' },
          { 'name': 'waits', 'type': 'wait_weight[]' }
        ]
      }, {
        'name': 'newaccount',
        'base': '',
        'fields': [
          { 'name': 'creator', 'type': 'account_name' },
          { 'name': 'name', 'type': 'account_name' },
          { 'name': 'owner', 'type': 'authority' },
          { 'name': 'active', 'type': 'authority' }
        ]
      }, {
        'name': 'setcode',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'vmtype', 'type': 'uint8' },
          { 'name': 'vmversion', 'type': 'uint8' },
          { 'name': 'code', 'type': 'bytes' }
        ]
      }, {
        'name': 'setabi',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'abi', 'type': 'bytes' }
        ]
      }, {
        'name': 'updateauth',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'permission', 'type': 'permission_name' },
          { 'name': 'parent', 'type': 'permission_name' },
          { 'name': 'auth', 'type': 'authority' }
        ]
      }, {
        'name': 'deleteauth',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'permission', 'type': 'permission_name' }
        ]
      }, {
        'name': 'linkauth',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'code', 'type': 'account_name' },
          { 'name': 'type', 'type': 'action_name' },
          { 'name': 'requirement', 'type': 'permission_name' }
        ]
      }, {
        'name': 'unlinkauth',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'code', 'type': 'account_name' },
          { 'name': 'type', 'type': 'action_name' }
        ]
      }, {
        'name': 'canceldelay',
        'base': '',
        'fields': [
          { 'name': 'canceling_auth', 'type': 'permission_level' },
          { 'name': 'trx_id', 'type': 'transaction_id_type' }
        ]
      }, {
        'name': 'onerror',
        'base': '',
        'fields': [
          { 'name': 'sender_id', 'type': 'uint128' },
          { 'name': 'sent_trx', 'type': 'bytes' }
        ]
      }, {
        'name': 'buyrambytes',
        'base': '',
        'fields': [
          { 'name': 'payer', 'type': 'account_name' },
          { 'name': 'receiver', 'type': 'account_name' },
          { 'name': 'bytes', 'type': 'uint32' }
        ]
      }, {
        'name': 'sellram',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'bytes', 'type': 'uint64' }
        ]
      }, {
        'name': 'buyram',
        'base': '',
        'fields': [
          { 'name': 'payer', 'type': 'account_name' },
          { 'name': 'receiver', 'type': 'account_name' },
          { 'name': 'quant', 'type': 'asset' }
        ]
      }, {
        'name': 'delegatebw',
        'base': '',
        'fields': [
          { 'name': 'from', 'type': 'account_name' },
          { 'name': 'receiver', 'type': 'account_name' },
          { 'name': 'stake_net_quantity', 'type': 'asset' },
          { 'name': 'stake_cpu_quantity', 'type': 'asset' },
          { 'name': 'transfer', 'type': 'bool' }
        ]
      }, {
        'name': 'undelegatebw',
        'base': '',
        'fields': [
          { 'name': 'from', 'type': 'account_name' },
          { 'name': 'receiver', 'type': 'account_name' },
          { 'name': 'unstake_net_quantity', 'type': 'asset' },
          { 'name': 'unstake_cpu_quantity', 'type': 'asset' }
        ]
      }, {
        'name': 'refund',
        'base': '',
        'fields': [
          { 'name': 'owner', 'type': 'account_name' }
        ]
      }, {
        'name': 'delegated_bandwidth',
        'base': '',
        'fields': [
          { 'name': 'from', 'type': 'account_name' },
          { 'name': 'to', 'type': 'account_name' },
          { 'name': 'net_weight', 'type': 'asset' },
          { 'name': 'cpu_weight', 'type': 'asset' }
        ]
      }, {
        'name': 'user_resources',
        'base': '',
        'fields': [
          { 'name': 'owner', 'type': 'account_name' },
          { 'name': 'net_weight', 'type': 'asset' },
          { 'name': 'cpu_weight', 'type': 'asset' },
          { 'name': 'ram_bytes', 'type': 'uint64' }
        ]
      }, {
        'name': 'total_resources',
        'base': '',
        'fields': [
          { 'name': 'owner', 'type': 'account_name' },
          { 'name': 'net_weight', 'type': 'asset' },
          { 'name': 'cpu_weight', 'type': 'asset' },
          { 'name': 'ram_bytes', 'type': 'uint64' }
        ]
      }, {
        'name': 'refund_request',
        'base': '',
        'fields': [
          { 'name': 'owner', 'type': 'account_name' },
          { 'name': 'request_time', 'type': 'time_point_sec' },
          { 'name': 'net_amount', 'type': 'asset' },
          { 'name': 'cpu_amount', 'type': 'asset' }
        ]
      }, {
        'name': 'blockchain_parameters',
        'base': '',
        'fields': [
  
          { 'name': 'max_block_net_usage', 'type': 'uint64' },
          { 'name': 'target_block_net_usage_pct', 'type': 'uint32' },
          { 'name': 'max_transaction_net_usage', 'type': 'uint32' },
          { 'name': 'base_per_transaction_net_usage', 'type': 'uint32' },
          { 'name': 'net_usage_leeway', 'type': 'uint32' },
          { 'name': 'context_free_discount_net_usage_num', 'type': 'uint32' },
          { 'name': 'context_free_discount_net_usage_den', 'type': 'uint32' },
          { 'name': 'max_block_cpu_usage', 'type': 'uint32' },
          { 'name': 'target_block_cpu_usage_pct', 'type': 'uint32' },
          { 'name': 'max_transaction_cpu_usage', 'type': 'uint32' },
          { 'name': 'min_transaction_cpu_usage', 'type': 'uint32' },
          { 'name': 'max_transaction_lifetime', 'type': 'uint32' },
          { 'name': 'deferred_trx_expiration_window', 'type': 'uint32' },
          { 'name': 'max_transaction_delay', 'type': 'uint32' },
          { 'name': 'max_inline_action_size', 'type': 'uint32' },
          { 'name': 'max_inline_action_depth', 'type': 'uint16' },
          { 'name': 'max_authority_depth', 'type': 'uint16' }
  
        ]
      }, {
        'name': 'eosio_global_state',
        'base': 'blockchain_parameters',
        'fields': [
          { 'name': 'max_ram_size', 'type': 'uint64' },
          { 'name': 'total_ram_bytes_reserved', 'type': 'uint64' },
          { 'name': 'total_ram_stake', 'type': 'int64' },
          { 'name': 'last_producer_schedule_update', 'type': 'block_timestamp_type' },
          { 'name': 'last_pervote_bucket_fill', 'type': 'uint64' },
          { 'name': 'pervote_bucket', 'type': 'int64' },
          { 'name': 'perblock_bucket', 'type': 'int64' },
          { 'name': 'total_unpaid_blocks', 'type': 'uint32' },
          { 'name': 'total_activated_stake', 'type': 'int64' },
          { 'name': 'thresh_activated_stake_time', 'type': 'uint64' },
          { 'name': 'last_producer_schedule_size', 'type': 'uint16' },
          { 'name': 'total_producer_vote_weight', 'type': 'float64' },
          { 'name': 'last_name_close', 'type': 'block_timestamp_type' }
        ]
      }, {
        'name': 'producer_info',
        'base': '',
        'fields': [
          { 'name': 'owner', 'type': 'account_name' },
          { 'name': 'total_votes', 'type': 'float64' },
          { 'name': 'producer_key', 'type': 'public_key' },
          { 'name': 'is_active', 'type': 'bool' },
          { 'name': 'url', 'type': 'string' },
          { 'name': 'unpaid_blocks', 'type': 'uint32' },
          { 'name': 'last_claim_time', 'type': 'uint64' },
          { 'name': 'location', 'type': 'uint16' }
        ]
      }, {
        'name': 'regproducer',
        'base': '',
        'fields': [
          { 'name': 'producer', 'type': 'account_name' },
          { 'name': 'producer_key', 'type': 'public_key' },
          { 'name': 'url', 'type': 'string' },
          { 'name': 'location', 'type': 'uint16' }
        ]
      }, {
        'name': 'unregprod',
        'base': '',
        'fields': [
          { 'name': 'producer', 'type': 'account_name' }
        ]
      }, {
        'name': 'setram',
        'base': '',
        'fields': [
          { 'name': 'max_ram_size', 'type': 'uint64' }
        ]
      }, {
        'name': 'regproxy',
        'base': '',
        'fields': [
          { 'name': 'proxy', 'type': 'account_name' },
          { 'name': 'isproxy', 'type': 'bool' }
        ]
      }, {
        'name': 'voteproducer',
        'base': '',
        'fields': [
          { 'name': 'voter', 'type': 'account_name' },
          { 'name': 'proxy', 'type': 'account_name' },
          { 'name': 'producers', 'type': 'account_name[]' }
        ]
      }, {
        'name': 'voter_info',
        'base': '',
        'fields': [
          { 'name': 'owner', 'type': 'account_name' },
          { 'name': 'proxy', 'type': 'account_name' },
          { 'name': 'producers', 'type': 'account_name[]' },
          { 'name': 'staked', 'type': 'int64' },
          { 'name': 'last_vote_weight', 'type': 'float64' },
          { 'name': 'proxied_vote_weight', 'type': 'float64' },
          { 'name': 'is_proxy', 'type': 'bool' }
        ]
      }, {
        'name': 'claimrewards',
        'base': '',
        'fields': [
          { 'name': 'owner', 'type': 'account_name' }
        ]
      }, {
        'name': 'setpriv',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'is_priv', 'type': 'int8' }
        ]
      }, {
        'name': 'rmvproducer',
        'base': '',
        'fields': [
          { 'name': 'producer', 'type': 'account_name' }
        ]
      }, {
        'name': 'set_account_limits',
        'base': '',
        'fields': [
          { 'name': 'account', 'type': 'account_name' },
          { 'name': 'ram_bytes', 'type': 'int64' },
          { 'name': 'net_weight', 'type': 'int64' },
          { 'name': 'cpu_weight', 'type': 'int64' }
        ]
      }, {
        'name': 'set_global_limits',
        'base': '',
        'fields': [
          { 'name': 'cpu_usec_per_period', 'type': 'int64' }
        ]
      }, {
        'name': 'producer_key',
        'base': '',
        'fields': [
          { 'name': 'producer_name', 'type': 'account_name' },
          { 'name': 'block_signing_key', 'type': 'public_key' }
        ]
      }, {
        'name': 'set_producers',
        'base': '',
        'fields': [
          { 'name': 'schedule', 'type': 'producer_key[]' }
        ]
      }, {
        'name': 'require_auth',
        'base': '',
        'fields': [
          { 'name': 'from', 'type': 'account_name' }
        ]
      }, {
        'name': 'setparams',
        'base': '',
        'fields': [
          { 'name': 'params', 'type': 'blockchain_parameters' }
        ]
      }, {
        'name': 'connector',
        'base': '',
        'fields': [
          { 'name': 'balance', 'type': 'asset' },
          { 'name': 'weight', 'type': 'float64' }
        ]
      }, {
        'name': 'exchange_state',
        'base': '',
        'fields': [
          { 'name': 'supply', 'type': 'asset' },
          { 'name': 'base', 'type': 'connector' },
          { 'name': 'quote', 'type': 'connector' }
        ]
      }, {
        'name': 'namebid_info',
        'base': '',
        'fields': [
          { 'name': 'newname', 'type': 'account_name' },
          { 'name': 'high_bidder', 'type': 'account_name' },
          { 'name': 'high_bid', 'type': 'int64' },
          { 'name': 'last_bid_time', 'type': 'uint64' }
        ]
      }],
      'actions': [{
        'name': 'newaccount',
        'type': 'newaccount',
        'ricardian_contract': ''
      }, {
        'name': 'setcode',
        'type': 'setcode',
        'ricardian_contract': ''
      }, {
        'name': 'setabi',
        'type': 'setabi',
        'ricardian_contract': ''
      }, {
        'name': 'updateauth',
        'type': 'updateauth',
        'ricardian_contract': ''
      }, {
        'name': 'deleteauth',
        'type': 'deleteauth',
        'ricardian_contract': ''
      }, {
        'name': 'linkauth',
        'type': 'linkauth',
        'ricardian_contract': ''
      }, {
        'name': 'unlinkauth',
        'type': 'unlinkauth',
        'ricardian_contract': ''
      }, {
        'name': 'canceldelay',
        'type': 'canceldelay',
        'ricardian_contract': ''
      }, {
        'name': 'onerror',
        'type': 'onerror',
        'ricardian_contract': ''
      }, {
        'name': 'buyrambytes',
        'type': 'buyrambytes',
        'ricardian_contract': ''
      }, {
        'name': 'buyram',
        'type': 'buyram',
        'ricardian_contract': ''
      }, {
        'name': 'sellram',
        'type': 'sellram',
        'ricardian_contract': ''
      }, {
        'name': 'delegatebw',
        'type': 'delegatebw',
        'ricardian_contract': ''
      }, {
        'name': 'undelegatebw',
        'type': 'undelegatebw',
        'ricardian_contract': ''
      }, {
        'name': 'refund',
        'type': 'refund',
        'ricardian_contract': ''
      }, {
        'name': 'regproducer',
        'type': 'regproducer',
        'ricardian_contract': ''
      }, {
        'name': 'setram',
        'type': 'setram',
        'ricardian_contract': ''
      }, {
        'name': 'bidname',
        'type': 'bidname',
        'ricardian_contract': ''
      }, {
        'name': 'unregprod',
        'type': 'unregprod',
        'ricardian_contract': ''
      }, {
        'name': 'regproxy',
        'type': 'regproxy',
        'ricardian_contract': ''
      }, {
        'name': 'voteproducer',
        'type': 'voteproducer',
        'ricardian_contract': ''
      }, {
        'name': 'claimrewards',
        'type': 'claimrewards',
        'ricardian_contract': ''
      }, {
        'name': 'setpriv',
        'type': 'setpriv',
        'ricardian_contract': ''
      }, {
        'name': 'rmvproducer',
        'type': 'rmvproducer',
        'ricardian_contract': ''
      }, {
        'name': 'setalimits',
        'type': 'set_account_limits',
        'ricardian_contract': ''
      }, {
        'name': 'setglimits',
        'type': 'set_global_limits',
        'ricardian_contract': ''
      }, {
        'name': 'setprods',
        'type': 'set_producers',
        'ricardian_contract': ''
      }, {
        'name': 'reqauth',
        'type': 'require_auth',
        'ricardian_contract': ''
      }, {
        'name': 'setparams',
        'type': 'setparams',
        'ricardian_contract': ''
      }],
      'tables': [{
        'name': 'producers',
        'type': 'producer_info',
        'index_type': 'i64',
        'key_names': ['owner'],
        'key_types': ['uint64']
      }, {
        'name': 'global',
        'type': 'eosio_global_state',
        'index_type': 'i64',
        'key_names': [],
        'key_types': []
      }, {
        'name': 'voters',
        'type': 'voter_info',
        'index_type': 'i64',
        'key_names': ['owner'],
        'key_types': ['account_name']
      }, {
        'name': 'userres',
        'type': 'user_resources',
        'index_type': 'i64',
        'key_names': ['owner'],
        'key_types': ['uint64']
      }, {
        'name': 'delband',
        'type': 'delegated_bandwidth',
        'index_type': 'i64',
        'key_names': ['to'],
        'key_types': ['uint64']
      }, {
        'name': 'rammarket',
        'type': 'exchange_state',
        'index_type': 'i64',
        'key_names': ['supply'],
        'key_types': ['uint64']
      }, {
        'name': 'refunds',
        'type': 'refund_request',
        'index_type': 'i64',
        'key_names': ['owner'],
        'key_types': ['uint64']
      }, {
        'name': 'namebids',
        'type': 'namebid_info',
        'index_type': 'i64',
        'key_names': ['newname'],
        'key_types': ['account_name']
      }],
      'ricardian_clauses': [],
      'abi_extensions': []
    }
  };

  module.exports = {
      getAbis: function() { return abis; },
      getAbiAbi: function() { return abiabi; }
  }