Algorand constructor

Algorand({
  1. AlgorandOptions? options,
})

Implementation

factory Algorand({
  AlgorandOptions? options,
}) {
  final _options = options ?? AlgorandOptions();
  final api = AlgorandApi();

  final nodeRepository = NodeRepository(
    service: NodeService(_options.algodClient.client),
  );

  final transactionRepository = TransactionRepository(
    nodeService: NodeService(_options.algodClient.client),
    transactionService: TransactionService(_options.algodClient.client),
  );

  final applicationRepository = ApplicationRepository(
    applicationService: ApplicationService(_options.algodClient.client),
  );

  final blocksAlgodApi = BlocksAlgodApi(
    api: api,
    service: BlockAlgodService(_options.algodClient.client),
  );

  final accountsApi = AccountsAlgodApi(
    api: api,
    service: AccountAlgodService(_options.algodClient.client),
  );

  final boxesApi = BoxesAlgodApi(
    api: api,
    service: BoxAlgodService(_options.algodClient.client),
  );

  /// ------ Indexer APIs------ //
  final assetsApi = AssetsIndexerApi(
    api: api,
    service: AssetIndexerService(_options.indexerClient.client),
  );

  final applicationsApi = ApplicationsIndexerApi(
    api: api,
    service: ApplicationIndexerService(_options.indexerClient.client),
  );

  final indexer = AlgorandIndexer(
    indexerRepository: IndexerRepository(
      indexerService: IndexerService(_options.indexerClient.client),
      accountService: AccountService(_options.indexerClient.client),
      assetService: AssetService(_options.indexerClient.client),
      applicationService: ApplicationService(_options.indexerClient.client),
    ),
    blocksApi: BlocksIndexerApi(
      api: api,
      service: BlockIndexerService(_options.indexerClient.client),
    ),
    accountsApi: AccountsIndexerApi(
      api: api,
      service: AccountIndexerService(_options.indexerClient.client),
    ),
    assetsApi: AssetsIndexerApi(
      api: api,
      service: AssetIndexerService(_options.indexerClient.client),
    ),
    applicationsApi: ApplicationsIndexerApi(
      api: api,
      service: ApplicationIndexerService(_options.indexerClient.client),
    ),
    boxesApi: BoxesIndexerApi(
      api: api,
      service: BoxIndexerService(_options.indexerClient.client),
    ),
  );

  return Algorand._(
    options: _options,
    nodeRepo: nodeRepository,
    transactionRepo: transactionRepository,
    applicationRepo: applicationRepository,
    indexer: indexer,
    blocksApi: blocksAlgodApi,
    accountsApi: accountsApi,
    assetsApi: assetsApi,
    applicationsApi: applicationsApi,
    boxesApi: boxesApi,
  );
}