import { Observable } from 'rxjs'; import { NetworkType } from '../model/blockchain/NetworkType'; import { AccountRepository } from './AccountRepository'; import { BlockRepository } from './BlockRepository'; import { ChainRepository } from './ChainRepository'; import { IListener } from './IListener'; import { MetadataRepository } from './MetadataRepository'; import { MosaicRepository } from './MosaicRepository'; import { MultisigRepository } from './MultisigRepository'; import { NamespaceRepository } from './NamespaceRepository'; import { NetworkRepository } from './NetworkRepository'; import { NodeRepository } from './NodeRepository'; import { ReceiptRepository } from './ReceiptRepository'; import { RestrictionAccountRepository } from './RestrictionAccountRepository'; import { RestrictionMosaicRepository } from './RestrictionMosaicRepository'; import { TransactionRepository } from './TransactionRepository'; /** * A repository factory allows clients to create repositories to access NEM Server without knowing * the underline implementation. * */ export interface RepositoryFactory { /** * @returns the network type of the network. This method is cached, the server is only called the * first time. */ getNetworkType(): Observable; /** * @returns the generation hash used to sign transactions. Value retrieved from the block/1 * endpoint. This method is cached, the server is only called the first time. */ getGenerationHash(): Observable; /** * @returns a newly created {@link AccountRepository} */ createAccountRepository(): AccountRepository; /** * @returns a newly created {@link MultisigRepository} */ createMultisigRepository(): MultisigRepository; /** * @returns a newly created {@link BlockRepository} */ createBlockRepository(): BlockRepository; /** * @returns a newly created {@link ReceiptRepository} */ createReceiptRepository(): ReceiptRepository; /** * @returns a newly created {@link ChainRepository} */ createChainRepository(): ChainRepository; /** * @returns a newly created {@link MosaicRepository} */ createMosaicRepository(): MosaicRepository; /** * @returns a newly created {@link NamespaceRepository} */ createNamespaceRepository(): NamespaceRepository; /** * @returns a newly created {@link NetworkRepository} */ createNetworkRepository(): NetworkRepository; /** * @returns a newly created {@link NodeRepository} */ createNodeRepository(): NodeRepository; /** * @returns a newly created {@link NodeRepository} */ createTransactionRepository(): TransactionRepository; /** * @returns a newly created {@link MetadataRepository} */ createMetadataRepository(): MetadataRepository; /** * @returns a newly created {@link RestrictionAccountRepository} */ createRestrictionAccountRepository(): RestrictionAccountRepository; /** * @returns a newly created {@link RestrictionMosaicRepository} */ createRestrictionMosaicRepository(): RestrictionMosaicRepository; /** * @returns a newly create {@link IListener} */ createListener(): IListener; }