// 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);
}