import { FinancialInstitutionAccount } from "../FinancialInstitutionAccount"; import { MessageSetType } from "../../domain/data/MessageSetType"; import { FinancialInstitutionImpl } from "./FinancialInstitutionImpl"; import { AccountStatement } from "../AccountStatement"; import { StatementRange } from "../../domain/data/common/StatementRange"; import { TransactionWrappedRequestMessage } from "../../domain/data/TransactionWrappedRequestMessage"; import { RequestMessage } from "../../domain/data/RequestMessage"; import { ResponseEnvelope } from "../../domain/data/ResponseEnvelope"; import { StatementResponse } from "../../domain/data/common/StatementResponse"; import { RequestMessageSet } from "../../domain/data/RequestMessageSet"; import { StatementRequest } from "../../domain/data/common/StatementRequest"; /** * Base account implementation. Supports banking and credit card accounts. */ export declare abstract class BaseAccountImpl implements FinancialInstitutionAccount { private details; private messageType; private username; private password; private institution; constructor(details: D, username: string, password: string, institution: FinancialInstitutionImpl); /** * Get the message set type of the specified details. * * @param details The details. * @return The message set type. */ protected getMessageSetType(details: D): MessageSetType; readStatement(start: Date, end: Date): Promise; /** * Unwrap the statement response from the specified response envelope. * * @param response The response envelope to unwrap. * @return The response. */ protected abstract unwrapStatementResponse(response: ResponseEnvelope): StatementResponse; /** * Create a request message set from the specified transaction. * * @param transaction The transaction. * @return The request message set. */ protected abstract createRequestMessageSet(transaction: TransactionWrappedRequestMessage): RequestMessageSet; /** * Create a transaction. * * @return The transaction. */ protected abstract createTransaction(): TransactionWrappedRequestMessage; /** * Create a statement request. * * @param details The details. * @param range the range. * @return The statement request. */ protected abstract createStatementRequest(details: D, range: StatementRange): StatementRequest; /** * The details of this account. * * @return The details of this account. */ getDetails(): D; /** * The message set type. * * @return The message set type. */ protected getMessageType(): MessageSetType; }