package com.dgex.offspring.nxtCore.service; import java.util.List; import nxt.Account; import nxt.Block; import nxt.NxtException.ValidationException; import nxt.Token; import nxt.Trade; import nxt.Transaction; import nxt.peer.Peer; import org.eclipse.e4.core.services.events.IEventBroker; import org.eclipse.e4.ui.di.UISynchronize; public interface INxtService { public static String TOPIC_TRANSACTION = "NXT/TRANSACTION/*"; public static String TOPIC_ADD_TRANSACTION = "NXT/TRANSACTION/ADD_TRANSACTION"; public static String TOPIC_ADD_UNCONFIRMED_TRANSACTION = "NXT/TRANSACTION/ADD_UNCONFIRMED_TRANSACTION"; public static String TOPIC_REMOVE_UNCONFIRMED_TRANSACTION = "NXT/TRANSACTION/REMOVE_UNCONFIRMED_TRANSACTION"; public static String TOPIC_ADD_DOUBLESPENDING_TRANSACTION = "NXT/TRANSACTION/ADD_DOUBLESPENDING_TRANSACTION"; public static String TOPIC_FILTERED_TRANSACTION = "NXT/FILTERED_TRANSACTION/*"; public static String TOPIC_ADD_FILTERED_TRANSACTION = "NXT/FILTERED_TRANSACTION/ADD_FILTERED_TRANSACTION"; public static String TOPIC_ADD_FILTERED_UNCONFIRMED_TRANSACTION = "NXT/FILTERED_TRANSACTION/ADD_FILTERED_UNCONFIRMED_TRANSACTION"; public static String TOPIC_REMOVE_FILTERED_UNCONFIRMED_TRANSACTION = "NXT/FILTERED_TRANSACTION/REMOVE_FILTERED_UNCONFIRMED_TRANSACTION"; public static String TOPIC_BLOCK = "NXT/BLOCK/*"; public static String TOPIC_BLOCK_PUSHED = "NXT/BLOCK/BLOCK_PUSHED"; public static String TOPIC_BLOCK_POPPED = "NXT/BLOCK/BLOCK_POPPED"; public static String TOPIC_BLOCK_SCANNED = "NXT/BLOCK/BLOCK_SCANNED"; public static String TOPIC_BLOCK_GENERATED = "NXT/BLOCK/BLOCK_GENERATED"; public static String TOPIC_BLOCK_SCANNER_START = "NXT/BLOCK/BLOCK_SCANNER_START"; public static String TOPIC_BLOCK_SCANNER_FINISHED = "NXT/BLOCK/BLOCK_SCANNER_FINISHED"; public static String TOPIC_BLOCK_RESCAN_BEGIN = null; public static String TOPIC_BLOCK_RESCAN_END = null; public static String TOPIC_ACCOUNT_UPDATE_BALANCE = "NXT/ACCOUNT_UPDATE_BALANCE"; public static String TOPIC_ACCOUNT_UPDATE_UNCONFIRMED_BALANCE = "NXT/ACCOUNT_UPDATE_UNCONFIRMED_BALANCE"; public static String TOPIC_PEER = "NXT/PEER/*"; public static String TOPIC_ADDED_ACTIVE_PEER = "NXT/PEER/ADDED_ACTIVE_PEER"; public static String TOPIC_BLACKLIST_PEER = "NXT/PEER/BLACKLIST_PEER"; public static String TOPIC_CHANGED_ACTIVE_PEER = "NXT/PEER/CHANGED_ACTIVE_PEER"; public static String TOPIC_DEACTIVATE_PEER = "NXT/PEER/DEACTIVATE_PEER"; public static String TOPIC_DOWNLOADED_VOLUME_PEER = "NXT/PEER/DOWNLOADED_VOLUME_PEER"; public static String TOPIC_REMOVE_PEER = "NXT/PEER/REMOVE_PEER"; public static String TOPIC_UNBLACKLIST_PEER = "NXT/PEER/UNBLACKLIST_PEER"; public static String TOPIC_UPLOADED_VOLUME_PEER = "NXT/PEER/UPLOADED_VOLUME_PEER"; public static String TOPIC_WEIGHT_PEER = "NXT/PEER/WEIGHT_PEER"; public static String TOPIC_LOGGER = "NXT/LOGGER/*"; public static String TOPIC_LOGGER_EXCEPTION = "NXT/LOGGER/EXCEPTION"; public static String TOPIC_LOGGER_MESSAGE = "NXT/LOGGER/MESSAGE"; public static String TOPIC_INITIALIZATION_START = "NXT/INITIALIZATION/START"; public static String TOPIC_INITIALIZATION_FINISHED = "NXT/INITIALIZATION/FINISHED"; public static String TOPIC_GENERATION_DEADLINE = "NXT/GENERATOR/DEADLINE"; public static String TOPIC_START_FORGING = "NXT/GENERATOR/START_FORGING"; public static String TOPIC_STOP_FORGING = "NXT/GENERATOR/STOP_FORGING"; @Deprecated public static String TOPIC_SHUTDOWN_START = "NXT/SHUTDOWN/START"; @Deprecated public static String TOPIC_SHUTDOWN_FINISHED = "NXT/SHUTDOWN/FINISHED"; /** * The IEventBroker is not available until later, thats why we pass it here as * an argument. The initialize method calls Nxt.init() * * @param broker * @param sync */ public void initialize(IEventBroker broker, UISynchronize sync); /** * Returns the IEventBroker * * @return */ public IEventBroker getEventBroker(); /** * Performs a full reset of the blockchain. All blocks will be removed from * memory and re-read from the database. */ public void fullReset(); /** * Returns true if Nxt.init is currently running (in it's own thread) * * @return */ public boolean isInitializing(); /** * Returns true if database is currently being scanned * * @return */ public boolean isScanning(); /** * Sets scanning flag * * @param scanning */ public void setScanning(boolean scanning); /** * Returns the INxtDB instance * * @return */ public INxtDB getDB(); /** * Broadcasts the transaction * * @param transaction * @throws ValidationException */ public void broacastTransaction(Transaction transaction) throws ValidationException; /** * Calls shutdown on the Nxt classes, progress is reported through the * monitor. * * At the start of the shutdown process you can expect TOPIC_SHUTDOWN_START * event and once the shutdown has finished expect the TOPIC_SHUTDOWN_FINISHED * event. * * @param monitor */ public void shutdown(); /** * Wrap as ITransaction * * @param transaction * @return wrapper */ public ITransaction wrap(Transaction transaction); /** * Wrap as IAccount * * @param account * @return wrapper */ public IAccount wrap(Account account); /** * Wrap as IPeer * * @param peer * @return wrapper */ public IPeer wrap(Peer peer); /** * Unlocks the account and turns on forging. * * @param passphrase * @return IAccount */ public IAccount unlock(String passphrase); /** * Returns a list of all unlocked accounts * * @return list of IAccount */ public List<IAccount> getUnlockedAccounts(); /** * Returns a list of all peers * * @return list of Peer */ public List<Peer> getAllPeers(); /** * Returns a list of all blacklisted peers * * @return list of Peer */ public List<Peer> getAllBlacklistedPeers(); /** * Returns a list of all connected peers * * @return list of Peer */ public List<Peer> getAllConnectedPeers(); /** * Returns a list of all wellknown peers * * @return list of Peer */ public List<Peer> getAllWellknownPeers(); /** * Returns all pending transactions not yet in the blockchain * * @return */ public List<Transaction> getPendingTransactions(); /** * Returns all pending aliases not yet in the blockchain * * @return */ public List<IAlias> getPendingAliases(); /** * Creates a signed payment transaction * * @param sender * @param recipient * @param amount * @param deadline * @param fee * @param referencedTransaction * @return * @throws TransactionException * @throws nxt.NxtException.ValidationException */ public Transaction createPaymentTransaction(IAccount sender, Long recipient, int amount, short deadline, int fee, Long referencedTransaction) throws TransactionException, ValidationException; /** * Creates an assign alias transaction * * @param sender * @param alias * @param uri * @param deadline * @param fee * @param referencedTransaction * @return * @throws TransactionException * @throws ValidationException */ public Transaction createAssignAliasTransaction(IAccount sender, String alias, String uri, short deadline, int fee, Long referencedTransaction) throws ValidationException, TransactionException; /** * Creates a send message transatcion * * @param sender * @param _recipient * @param messageValue * @param deadline * @param fee * @param referencedTransaction * @return * @throws ValidationException * @throws TransactionException */ public Transaction createSendMessageTransaction(IAccount sender, Long recipient, byte[] messageValue, short deadline, int fee, Long referencedTransaction) throws ValidationException, TransactionException; /** * Creates an issue asset transaction * * @param sender * @param name * @param description * @param quantity * @param deadline * @param fee * @param referencedTransaction * @return */ public Transaction createIssueAssetTransaction(IAccount sender, String name, String description, int quantity, short deadline, int fee, Long referencedTransaction) throws ValidationException, TransactionException; /** * Creates an place ask order transaction * * @param sender * @param asset * @param quantity * @param price * @param deadline * @param fee * @param referencedTransaction * @return * @throws TransactionException * @throws ValidationException */ public Transaction createPlaceAskOrderTransaction(IAccount sender, long asset, int quantity, long price, short deadline, int fee, Long referencedTransaction) throws ValidationException, TransactionException; /** * Creates an place bid order transaction * * @param sender * @param asset * @param quantity * @param price * in NXT cents * @param deadline * @param fee * @param referencedTransaction * @return * @throws TransactionException * @throws ValidationException */ public Transaction createPlaceBidOrderTransaction(IAccount sender, long asset, int quantity, long price, short deadline, int fee, Long referencedTransaction) throws ValidationException, TransactionException; /** * Creates a transfer asset transaction. * * @param sender * @param recipient * @param asset * @param quantity * @param deadline * @param fee * @param referencedTransaction * @return * @throws TransactionException * @throws ValidationException */ public Transaction createTransferAssetTransaction(IAccount sender, Long recipient, long asset, int quantity, short deadline, int fee, Long referencedTransaction) throws ValidationException, TransactionException; /** * Creates a cancel ask order transactions * * @param sender * @param order * @param deadline * @param fee * @param referencedTransaction * @return * @throws ValidationException * @throws TransactionException */ public Transaction createCancelAskOrderTransaction(IAccount sender, Long order, short deadline, int fee, Long referencedTransaction) throws ValidationException, TransactionException; /** * Creates a cancel bid order transactions * * @param sender * @param order * @param deadline * @param fee * @param referencedTransaction * @return * @throws ValidationException * @throws TransactionException */ public Transaction createCancelBidOrderTransaction(IAccount sender, Long order, short deadline, int fee, Long referencedTransaction) throws ValidationException, TransactionException; /** * Returns the account number as String for a private key * * @param privateKey * @return */ public String getAccountForPrivateKey(String privateKey); /** * Returns the balance for an account, will return null for an invalid * account. * * @param account * @return */ public Long getBalanceForAccount(String account); /** * Generates an authorizatoin token * * @param privateKey * @param website * @return */ public String generateAuthorizationToken(String privateKey, String website); /** * Get a token * * @param website * @param token * @return */ public Token getToken(String website, String token); /** * Returns the version number of NXT * * @return */ public String getSoftwareVersion(); /** * Returns the total number of blocks (same as latestBlock.getHeight) * * @return */ public int getBlockCount(); /** * Returns the Block with height * * @param height * @return */ public Block getBlockAtHeight(int height); /** * Convert timestamp * * @param epochBasedTimestamp * @return */ public long convertTimestamp(long epochBasedTimestamp); /** * Returns true or false about an alias being registered or not * * @param alias * @return */ public boolean aliasIsRegistered(String alias, IAccount account); /** * Returns the value of an alias as string * * @param alias * @return */ public String getAlias(String alias); /** * Returns a list of all trades for an asset * * @param assetId * @return */ public List<Trade> getTrades(Long assetId); /** * Returns a list of pending assets * * @return */ public List<IAsset> getPendingAssets(); /** * Asking the database to each time count all transactions is very demanding. * Instead we now count the transactions once and then rely on event listeners * that add or remove transactions from the count on BLOCK_PUSHED and * BLOCK_POPPED * * @return */ public int getSmartTransactionCount(); /** * Asking the database to each time count all blocks is very demanding. * Instead we now count the blocks once and then rely on event listeners that * add or remove transactions from the count on BLOCK_PUSHED and BLOCK_POPPED * * @return */ public int getSmartBlockCount(); }