// Copyright 2022 Valters Melnalksnis // Licensed under the Apache License 2.0. // See LICENSE file in the project root for full license information. using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using NodaTime; namespace VMelnalksnis.NordigenDotNet.Accounts; /// Nordigen API client for reading account information. public interface IAccountClient { /// Gets account metadata. /// The id of the account. /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// The account with the specified id. Task Get(Guid id, CancellationToken cancellationToken = default); /// Gets additional details about the account. /// The id of the account. /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// The details of the account with the specified id. Task GetDetails(Guid id, CancellationToken cancellationToken = default); /// Gets current account balances. /// The id of the account. /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// The balances of the account with the specified id. Task> GetBalances(Guid id, CancellationToken cancellationToken = default); /// Gets all transactions for the account within the specified interval. /// The id of the account. /// The start date for which to get the transactions. /// The end date for which to get the transactions. /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// All transactions for the specified account and interval. Task GetTransactions(Guid id, DateTimeOffset? dateFrom = null, DateTimeOffset? dateTo = null, CancellationToken cancellationToken = default); }