import { Observable } from 'rxjs'; import { CosignatureSignedTransaction } from '../model/transaction/CosignatureSignedTransaction'; import { SignedTransaction } from '../model/transaction/SignedTransaction'; import { Transaction } from '../model/transaction/Transaction'; import { TransactionAnnounceResponse } from '../model/transaction/TransactionAnnounceResponse'; import { TransactionStatus } from '../model/transaction/TransactionStatus'; /** * Transaction interface repository. * * @since 1.0 */ export interface TransactionRepository { /** * Gets a transaction for a transactionId * @param transactionId - Transaction id or hash. * @returns Observable */ getTransaction(transactionId: string): Observable; /** * Gets an array of transactions for different transaction ids * @param transactionIds - Array of transactions id and/or hash. * @returns Observable */ getTransactions(transactionIds: string[]): Observable; /** * Gets a transaction status for a transaction hash * @param transactionHash - Transaction hash. * @returns Observable */ getTransactionStatus(transactionHash: string): Observable; /** * Gets an array of transaction status for different transaction hashes * @param transactionHashes - Array of transaction hash * @returns Observable */ getTransactionsStatuses(transactionHashes: string[]): Observable; /** * Gets a transaction's effective paid fee * @param transactionId - Transaction id or hash. * @returns Observable */ getTransactionEffectiveFee(transactionId: string): Observable; /** * Send a signed transaction * @param signedTransaction - Signed transaction * @returns Observable */ announce(signedTransaction: SignedTransaction): Observable; /** * Send a signed transaction with missing signatures * @param signedTransaction - Signed transaction * @returns Observable */ announceAggregateBonded(signedTransaction: SignedTransaction): Observable; /** * Send a cosignature signed transaction of an already announced transaction * @param cosignatureSignedTransaction - Cosignature signed transaction * @returns Observable */ announceAggregateBondedCosignature(cosignatureSignedTransaction: CosignatureSignedTransaction): Observable; }