specVersion: 1.2.0
indexerHints:
  prune: auto
features:
  - nonFatalErrors
  - fullTextSearch
  - ipfsOnEthereumContracts
schema:
  file: ./schema.graphql
dataSources:
  - kind: ethereum/contract
    name: BondFactory
    network: settlemint
    source:
      address: "0x5e771e1417100000000000000000000000000004"
      abi: BondFactory
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Factory
        - BondCreatedEvent
      abis:
        - name: BondFactory
          file: ../contracts/artifacts/contracts/BondFactory.sol/BondFactory.json
        - name: Bond
          file: ../contracts/artifacts/contracts/Bond.sol/Bond.json
      eventHandlers:
        - event: BondCreated(indexed address,indexed address)
          handler: handleBondCreated
      file: ./src/factories/bond-factory.ts
  - kind: ethereum/contract
    name: CryptoCurrencyFactory
    network: settlemint
    source:
      address: "0x5e771e1417100000000000000000000000000001"
      abi: CryptoCurrencyFactory
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Factory
        - CryptoCurrencyCreatedEvent
      abis:
        - name: CryptoCurrencyFactory
          file: ../contracts/artifacts/contracts/CryptoCurrencyFactory.sol/CryptoCurrencyFactory.json
        - name: CryptoCurrency
          file: ../contracts/artifacts/contracts/CryptoCurrency.sol/CryptoCurrency.json
      eventHandlers:
        - event: CryptoCurrencyCreated(indexed address,indexed address)
          handler: handleCryptoCurrencyCreated
      file: ./src/factories/cryptocurrency-factory.ts
  - kind: ethereum/contract
    name: EquityFactory
    network: settlemint
    source:
      address: "0x5e771e1417100000000000000000000000000003"
      abi: EquityFactory
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Factory
        - EquityCreatedEvent
      abis:
        - name: EquityFactory
          file: ../contracts/artifacts/contracts/EquityFactory.sol/EquityFactory.json
        - name: Equity
          file: ../contracts/artifacts/contracts/Equity.sol/Equity.json
      eventHandlers:
        - event: EquityCreated(indexed address,indexed address)
          handler: handleEquityCreated
      file: ./src/factories/equity-factory.ts
  - kind: ethereum/contract
    name: StableCoinFactory
    network: settlemint
    source:
      address: "0x5e771e1417100000000000000000000000000002"
      abi: StableCoinFactory
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Factory
        - StableCoinCreatedEvent
      abis:
        - name: StableCoinFactory
          file: ../contracts/artifacts/contracts/StableCoinFactory.sol/StableCoinFactory.json
        - name: StableCoin
          file: ../contracts/artifacts/contracts/StableCoin.sol/StableCoin.json
      eventHandlers:
        - event: StableCoinCreated(indexed address,indexed address)
          handler: handleStableCoinCreated
      file: ./src/factories/stablecoin-factory.ts
  - kind: ethereum/contract
    name: FundFactory
    network: settlemint
    source:
      address: "0x5e771e1417100000000000000000000000000005"
      abi: FundFactory
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Factory
        - FundCreatedEvent
      abis:
        - name: FundFactory
          file: ../contracts/artifacts/contracts/FundFactory.sol/FundFactory.json
        - name: Fund
          file: ../contracts/artifacts/contracts/Fund.sol/Fund.json
      eventHandlers:
        - event: FundCreated(indexed address,indexed address)
          handler: handleFundCreated
      file: ./src/factories/fund-factory.ts
  - kind: ethereum/contract
    name: FixedYieldFactory
    network: settlemint
    source:
      address: "0x5e771e1417100000000000000000000000000006"
      abi: FixedYieldFactory
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Factory
        - FixedYieldCreatedEvent
      abis:
        - name: FixedYieldFactory
          file: ../contracts/artifacts/contracts/FixedYieldFactory.sol/FixedYieldFactory.json
        - name: FixedYield
          file: ../contracts/artifacts/contracts/FixedYield.sol/FixedYield.json
      eventHandlers:
        - event: FixedYieldCreated(indexed address,indexed address)
          handler: handleFixedYieldCreated
      file: ./src/factories/fixedyield-factory.ts
templates:
  - kind: ethereum/contract
    name: Bond
    network: settlemint
    source:
      abi: Bond
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Asset
        - Account
        - Factory
        - Bond
        - AssetEvent
        - FactoryEvent
        - BondCreatedEvent
        - ApprovalEvent
        - BondMaturedEvent
        - BondRedeemedEvent
        - PausedEvent
        - TokensFrozenEvent
        - TransferEvent
        - UnpausedEvent
        - UserBlockedEvent
        - UserUnblockedEvent
        - RoleGrantedEvent
        - RoleRevokedEvent
        - RoleAdminChangedEvent
        - UnderlyingAssetTopUpEvent
        - UnderlyingAssetWithdrawnEvent
        - AssetStats
        - AssetStatsData
        - PortfolioStats
        - PortfolioStatsData
        - BondStats
        - BondStatsData
        - TransferData
        - AccountActivityData
        - RoleActivityData
        - BondActivityData
        - TransferStats
        - AccountActivityStats
        - RoleActivityStats
        - BondActivityStats
      abis:
        - name: Bond
          file: ../contracts/artifacts/contracts/Bond.sol/Bond.json
      eventHandlers:
        - event: Approval(indexed address,indexed address,uint256)
          handler: handleApproval
        - event: BondMatured(uint256)
          handler: handleBondMatured
        - event: BondRedeemed(indexed address,uint256,uint256)
          handler: handleBondRedeemed
        - event: Paused(address)
          handler: handlePaused
        - event: TokensFrozen(indexed address,uint256)
          handler: handleTokensFrozen
        - event: Transfer(indexed address,indexed address,uint256)
          handler: handleTransfer
        - event: Unpaused(address)
          handler: handleUnpaused
        - event: UserBlocked(indexed address)
          handler: handleUserBlocked
        - event: UserUnblocked(indexed address)
          handler: handleUserUnblocked
        - event: RoleGranted(indexed bytes32,indexed address,indexed address)
          handler: handleRoleGranted
        - event: RoleRevoked(indexed bytes32,indexed address,indexed address)
          handler: handleRoleRevoked
        - event: RoleAdminChanged(indexed bytes32,indexed bytes32,indexed bytes32)
          handler: handleRoleAdminChanged
        - event: UnderlyingAssetTopUp(indexed address,uint256)
          handler: handleUnderlyingAssetTopUp
        - event: UnderlyingAssetWithdrawn(indexed address,uint256)
          handler: handleUnderlyingAssetWithdrawn
      file: ./src/assets/bond.ts
  - kind: ethereum/contract
    name: CryptoCurrency
    network: settlemint
    source:
      abi: CryptoCurrency
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Asset
        - Account
        - Factory
        - CryptoCurrency
        - AssetEvent
        - FactoryEvent
        - CryptoCurrencyCreatedEvent
        - ApprovalEvent
        - PausedEvent
        - TokensFrozenEvent
        - TransferEvent
        - UnpausedEvent
        - UserBlockedEvent
        - UserUnblockedEvent
        - RoleGrantedEvent
        - RoleRevokedEvent
        - RoleAdminChangedEvent
        - AssetStats
        - AssetStatsData
        - PortfolioStats
        - PortfolioStatsData
        - CryptoCurrencyStats
        - CryptoCurrencyStatsData
        - TransferData
        - AccountActivityData
        - RoleActivityData
        - CryptoCurrencyActivityData
        - TransferStats
        - AccountActivityStats
        - RoleActivityStats
        - CryptoCurrencyActivityStats
      abis:
        - name: CryptoCurrency
          file: ../contracts/artifacts/contracts/CryptoCurrency.sol/CryptoCurrency.json
      eventHandlers:
        - event: Transfer(indexed address,indexed address,uint256)
          handler: handleTransfer
        - event: RoleGranted(indexed bytes32,indexed address,indexed address)
          handler: handleRoleGranted
        - event: RoleRevoked(indexed bytes32,indexed address,indexed address)
          handler: handleRoleRevoked
        - event: RoleAdminChanged(indexed bytes32,indexed bytes32,indexed bytes32)
          handler: handleRoleAdminChanged
        - event: Approval(indexed address,indexed address,uint256)
          handler: handleApproval
      file: ./src/assets/cryptocurrency.ts
  - kind: ethereum/contract
    name: Equity
    network: settlemint
    source:
      abi: Equity
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Asset
        - Account
        - Factory
        - Equity
        - AssetEvent
        - FactoryEvent
        - EquityCreatedEvent
        - ApprovalEvent
        - PausedEvent
        - TokensFrozenEvent
        - TransferEvent
        - UnpausedEvent
        - UserBlockedEvent
        - UserUnblockedEvent
        - RoleGrantedEvent
        - RoleRevokedEvent
        - RoleAdminChangedEvent
        - AssetStats
        - AssetStatsData
        - PortfolioStats
        - PortfolioStatsData
        - EquityStats
        - EquityStatsData
        - TransferData
        - AccountActivityData
        - RoleActivityData
        - EquityActivityData
        - TransferStats
        - AccountActivityStats
        - RoleActivityStats
        - EquityActivityStats
      abis:
        - name: Equity
          file: ../contracts/artifacts/contracts/Equity.sol/Equity.json
      eventHandlers:
        - event: Approval(indexed address,indexed address,uint256)
          handler: handleApproval
        - event: Paused(address)
          handler: handlePaused
        - event: TokensFrozen(indexed address,uint256)
          handler: handleTokensFrozen
        - event: Transfer(indexed address,indexed address,uint256)
          handler: handleTransfer
        - event: Unpaused(address)
          handler: handleUnpaused
        - event: UserBlocked(indexed address)
          handler: handleUserBlocked
        - event: UserUnblocked(indexed address)
          handler: handleUserUnblocked
        - event: RoleGranted(indexed bytes32,indexed address,indexed address)
          handler: handleRoleGranted
        - event: RoleRevoked(indexed bytes32,indexed address,indexed address)
          handler: handleRoleRevoked
        - event: RoleAdminChanged(indexed bytes32,indexed bytes32,indexed bytes32)
          handler: handleRoleAdminChanged
      file: ./src/assets/equity.ts
  - kind: ethereum/contract
    name: StableCoin
    network: settlemint
    source:
      abi: StableCoin
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Asset
        - Account
        - Factory
        - StableCoin
        - AssetEvent
        - FactoryEvent
        - StableCoinCreatedEvent
        - ApprovalEvent
        - PausedEvent
        - TokensFrozenEvent
        - TransferEvent
        - UnpausedEvent
        - UserBlockedEvent
        - UserUnblockedEvent
        - RoleGrantedEvent
        - RoleRevokedEvent
        - RoleAdminChangedEvent
        - CollateralTopUpEvent
        - CollateralWithdrawnEvent
        - AssetStats
        - AssetStatsData
        - PortfolioStats
        - PortfolioStatsData
        - StableCoinStats
        - StableCoinStatsData
        - TransferData
        - AccountActivityData
        - RoleActivityData
        - StableCoinActivityData
        - TransferStats
        - AccountActivityStats
        - RoleActivityStats
        - StableCoinActivityStats
      abis:
        - name: StableCoin
          file: ../contracts/artifacts/contracts/StableCoin.sol/StableCoin.json
      eventHandlers:
        - event: Approval(indexed address,indexed address,uint256)
          handler: handleApproval
        - event: Paused(address)
          handler: handlePaused
        - event: TokensFrozen(indexed address,uint256)
          handler: handleTokensFrozen
        - event: Transfer(indexed address,indexed address,uint256)
          handler: handleTransfer
        - event: Unpaused(address)
          handler: handleUnpaused
        - event: UserBlocked(indexed address)
          handler: handleUserBlocked
        - event: UserUnblocked(indexed address)
          handler: handleUserUnblocked
        - event: RoleGranted(indexed bytes32,indexed address,indexed address)
          handler: handleRoleGranted
        - event: RoleRevoked(indexed bytes32,indexed address,indexed address)
          handler: handleRoleRevoked
        - event: RoleAdminChanged(indexed bytes32,indexed bytes32,indexed bytes32)
          handler: handleRoleAdminChanged
        - event: CollateralUpdated(uint256,uint256,uint256)
          handler: handleCollateralUpdated
      file: ./src/assets/stablecoin.ts
  - kind: ethereum/contract
    name: FixedYield
    network: settlemint
    source:
      abi: FixedYield
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Event_YieldClaimed
        - YieldPeriod
        - YieldMetricsData
        - YieldMetricsStats
      abis:
        - name: FixedYield
          file: ../contracts/artifacts/contracts/FixedYield.sol/FixedYield.json
      eventHandlers:
        - event: YieldClaimed(indexed address,uint256,uint256,uint256,uint256[],uint256)
          handler: handleYieldClaimed
      file: ./src/assets/fixedyield.ts
  - kind: ethereum/contract
    name: Fund
    network: settlemint
    source:
      abi: Fund
    mapping:
      kind: ethereum/events
      apiVersion: 0.0.9
      language: wasm/assemblyscript
      entities:
        - Asset
        - Account
        - Factory
        - Fund
        - AssetEvent
        - FactoryEvent
        - FundCreatedEvent
        - ApprovalEvent
        - PausedEvent
        - TokensFrozenEvent
        - TransferEvent
        - UnpausedEvent
        - UserBlockedEvent
        - UserUnblockedEvent
        - RoleGrantedEvent
        - RoleRevokedEvent
        - RoleAdminChangedEvent
        - FeeCollectedEvent
        - AssetStats
        - AssetStatsData
        - PortfolioStats
        - PortfolioStatsData
        - FundStats
        - FundStatsData
        - TransferData
        - AccountActivityData
        - RoleActivityData
        - FundActivityData
        - TransferStats
        - AccountActivityStats
        - RoleActivityStats
        - FundActivityStats
      abis:
        - name: Fund
          file: ../contracts/artifacts/contracts/Fund.sol/Fund.json
      eventHandlers:
        - event: Approval(indexed address,indexed address,uint256)
          handler: handleApproval
        - event: Paused(address)
          handler: handlePaused
        - event: TokensFrozen(indexed address,uint256)
          handler: handleTokensFrozen
        - event: Transfer(indexed address,indexed address,uint256)
          handler: handleTransfer
        - event: Unpaused(address)
          handler: handleUnpaused
        - event: UserBlocked(indexed address)
          handler: handleUserBlocked
        - event: UserUnblocked(indexed address)
          handler: handleUserUnblocked
        - event: RoleGranted(indexed bytes32,indexed address,indexed address)
          handler: handleRoleGranted
        - event: RoleRevoked(indexed bytes32,indexed address,indexed address)
          handler: handleRoleRevoked
        - event: RoleAdminChanged(indexed bytes32,indexed bytes32,indexed bytes32)
          handler: handleRoleAdminChanged
        - event: ManagementFeeCollected(uint256,uint256)
          handler: handleManagementFeeCollected
        - event: PerformanceFeeCollected(uint256,uint256)
          handler: handlePerformanceFeeCollected
        - event: TokenWithdrawn(indexed address,indexed address,uint256)
          handler: handleTokenWithdrawn
      file: ./src/assets/fund.ts
