{
  db: 'db.sqlite',

  strategy: 'blockchain',

  comms: {
    transport: 'cache',
    libp2p: {
      addresses: { listen: ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/tcp/0/ws'] }
    },
    countOfMessagesPersistedPerAgreement: 10
  },

  ipfs: {
    clientOptions: {
      // The default value for go-ipfs
      url: 'http://localhost:5001',
    },

    // What is timeout for fetching size of given hash
    sizeFetchTimeout: '4m'
  },

  directAddress: {
    ttl: '1h'
  },

  blockchain: {
    // Immediately remove events when they are confirmed
    waitBlockCountBeforeConfirmationRemoved: 0,

    // Network ID check for blockchain connection, * means any
    networkId: "*",

    eventsEmitter: {
      // Will process one event at a time
      serialProcessing: true,

      // Topics that will be listened to
      topics: [
        [ // It needs to be a "double array" because that represents an "or" of the topics and not "and"
          'TotalCapacitySet(address,uint64)',
          'MessageEmitted(address,bytes32[])',
          'NewAgreement(bytes32[],address,address,uint64,uint64,uint128,address,uint256)',
          'AgreementFundsDeposited(bytes32,uint256,address)',
          'AgreementFundsWithdrawn(bytes32,uint256,address)',
          'AgreementFundsPayout(bytes32,uint256,address)',
          'AgreementStopped(bytes32)'
        ]
      ],

      // If to use polling strategy, if false then listening is used.
      polling: true,

      // Interval in milliseconds, how often is blockchain checked.
      pollingInterval: 5000,

      // Starting block that upon first start of the service, will the blockchain be crawled for the past events.
      startingBlock: 0,

      // Number of blocks that will be waited before passing an event for further processing.
      confirmations: 6
    },

    // Specify behavior of NewBlockEmitter, that detects new blocks on blockchain.
    newBlockEmitter: {
      // If to use polling strategy, if false then listening is used.
      polling: true
    }
  },
  marketplace: {
    offers: '/storage/v0/offers',
    agreements: '/storage/v0/agreements',
    newBlock: '/new-block',
    reorg: '/reorg',
    comms: '/comms',
  },

  jobs: {
    // Number of how many retries before job is pronounced for errored one
    retries: 3
  },

  log: {
    level: "warn",
    filter: null,
    path: null
  }
}
