specVersion: 0.0.2
description: Ocean provides data sharing through IDOs
repository: https://github.com/oceanprotocol/ocean-subgraph
schema:
  file: ./schema.graphql
dataSources:
  - kind: ethereum/contract
    name: Factory
    network: mainnet
    source:
      address: '0xbe0083053744ECb871510C88dC0f6b77Da162706'
      abi: Factory
      startBlock: 11105585
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.4
      language: wasm/assemblyscript
      file: ./src/mappings/factory.ts
      entities:
        - PoolFactory
      abis:
        - name: Factory
          file: ./abis/BFactory.json
      eventHandlers:
        - event: BPoolRegistered(address,indexed address)
          handler: handleNewPool
  - kind: ethereum/contract
    name: DTFactory
    network: mainnet
    source:
      address: '0x57317f97E9EA49eBd19f7c9bB7c180b8cDcbDeB9'
      abi: DTFactory
      startBlock: 11105560
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.4
      language: wasm/assemblyscript
      file: ./src/mappings/dtfactory.ts
      entities:
        - DatatokenFactory
      abis:
        - name: DTFactory
          file: ./abis/DTFactory.json
      eventHandlers:
        - event: TokenRegistered(indexed address,string,string,uint256,indexed address,indexed string)
          handler: handleNewToken
  - kind: ethereum/contract
    name: Metadata
    network: mainnet
    source:
      address: '0x1a4b70d8c9DcA47cD6D0Fb3c52BB8634CA1C0Fdf'
      abi: Metadata
      startBlock: 11105610
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.4
      language: wasm/assemblyscript
      file: ./src/mappings/metadata.ts
      entities:
        - Metadata
      abis:
        - name: Metadata
          file: ./abis/Metadata.json
      eventHandlers:
        - event: MetadataCreated(indexed address,indexed address,bytes,bytes)
          handler: handleMetadataCreated
        - event: MetadataUpdated(indexed address,indexed address,bytes,bytes)
          handler: handleMetadataUpdated
  - kind: ethereum/contract
    name: FixedRateExchange
    network: mainnet
    source:
      address: '0x608d05214E42722B94a54cF6114d4840FCfF84e1'
      abi: FixedRateExchange
      startBlock: 11105610
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.4
      language: wasm/assemblyscript
      file: ./src/mappings/fixedrateexchange.ts
      entities:
        - FixedRateExchange
      abis:
        - name: FixedRateExchange
          file: ./abis/FixedRateExchange.json
      eventHandlers:
        - event: ExchangeCreated(indexed bytes32,indexed address,indexed address,address,uint256)
          handler: handleExchangeCreated
        - event: ExchangeActivated(indexed bytes32,indexed address)
          handler: handleExchangeActivated
        - event: ExchangeDeactivated(indexed bytes32,indexed address)
          handler: handleExchangeDeactivated
        - event: ExchangeRateChanged(indexed bytes32,indexed address,uint256)
          handler: handleExchangeRateChanged
        - event: Swapped(indexed bytes32,indexed address,uint256,uint256)
          handler: handleSwapped
  - kind: ethereum/contract
    name: Dispenser
    network: mainnet
    source:
      address: '0xDEfD0018969cd2d4E648209F876ADe184815f038'
      abi: Dispenser
      startBlock: 12398958
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.4
      language: wasm/assemblyscript
      file: ./src/mappings/dispenser.ts
      entities:
        - Dispenser
      abis:
        - name: Dispenser
          file: ./abis/Dispenser.json
      eventHandlers:
        - event: Activated(indexed address)
          handler: handleDispenserActivated
        - event: Deactivated(indexed address)
          handler: handleDispenserDeactivated
        - event: AcceptedMinter(indexed address)
          handler: handleDispenserAcceptedMinter
        - event: RemovedMinter(indexed address)
          handler: handleDispenserRemovedMinter
        - event: TokensDispensed(indexed address,indexed address,uint256)
          handler: handleDispenserTokensDispensed
        - event: OwnerWithdrawed(indexed address,indexed address,uint256)
          handler: handleDispenserOwnerWithdrawed      
templates:
  - kind: ethereum/contract
    name: Pool
    network: mainnet
    source:
      abi: Pool
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.4
      language: wasm/assemblyscript
      file: ./src/mappings/pool.ts
      entities:
        - Pool
        - PoolFactory
        - Swap
      abis:
        - name: Pool
          file: ./abis/BPool.json
        - name: BToken
          file: ./abis/BToken.json
      eventHandlers:
        - event: LOG_CALL(indexed bytes4,indexed address,bytes)
          topic0: '0x34e1990700000000000000000000000000000000000000000000000000000000'
          handler: handleSetSwapFee
        - event: LOG_CALL(indexed bytes4,indexed address,bytes)
          topic0: '0x92eefe9b00000000000000000000000000000000000000000000000000000000'
          handler: handleSetController
        - event: LOG_CALL(indexed bytes4,indexed address,bytes)
          topic0: '0x49b5955200000000000000000000000000000000000000000000000000000000'
          handler: handleSetPublicSwap
        - event: LOG_CALL(indexed bytes4,indexed address,bytes)
          topic0: '0x4bb278f300000000000000000000000000000000000000000000000000000000'
          handler: handleFinalize
        - event: LOG_CALL(indexed bytes4,indexed address,bytes)
          topic0: '0xd1d7bc9100000000000000000000000000000000000000000000000000000000'
          handler: handleSetup
        - event: LOG_CALL(indexed bytes4,indexed address,bytes)
          topic0: '0x3fdddaa200000000000000000000000000000000000000000000000000000000'
          handler: handleRebind
        - event: LOG_CALL(indexed bytes4,indexed address,bytes)
          topic0: '0xe4e1e53800000000000000000000000000000000000000000000000000000000'
          handler: handleRebind
        - event: LOG_CALL(indexed bytes4,indexed address,bytes)
          topic0: '0x8c28cbe800000000000000000000000000000000000000000000000000000000'
          handler: handleGulp
        - event: LOG_JOIN(indexed address,indexed address,uint256)
          handler: handleJoinPool
        - event: LOG_EXIT(indexed address,indexed address,uint256)
          handler: handleExitPool
        - event: LOG_SWAP(indexed address,indexed address,indexed address,uint256,uint256)
          handler: handleSwap
        - event: Transfer(indexed address,indexed address,uint256)
          handler: handleTransfer

  - kind: ethereum/contract
    name: DataToken
    network: mainnet
    source:
      abi: DataToken
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.4
      language: wasm/assemblyscript
      file: ./src/mappings/datatoken.ts
      entities:
        - DataToken
        - DatatokenFactory
      abis:
        - name: DataToken
          file: ./abis/DataTokenTemplate.json
      eventHandlers:
        - event: Transfer(indexed address,indexed address,uint256)
          handler: handleTransfer
        - event: OrderStarted(indexed address,indexed address,uint256,uint256,uint256,indexed address,uint256)
          handler: handleOrderStarted