2019-06-20 00:20:09 +02:00
|
|
|
import Balance from '../models/Balance'
|
|
|
|
import Account from './Account'
|
|
|
|
import { Instantiable, InstantiableConfig } from '../Instantiable.abstract'
|
2019-01-21 17:48:40 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Account submodule of Ocean Protocol.
|
|
|
|
*/
|
2019-03-21 02:56:58 +01:00
|
|
|
export class OceanAccounts extends Instantiable {
|
2019-01-21 17:48:40 +01:00
|
|
|
/**
|
|
|
|
* Returns the instance of OceanAccounts.
|
|
|
|
* @return {Promise<OceanAccounts>}
|
|
|
|
*/
|
2019-09-09 12:18:54 +02:00
|
|
|
public static async getInstance(config: InstantiableConfig): Promise<OceanAccounts> {
|
2019-03-21 02:56:58 +01:00
|
|
|
const instance = new OceanAccounts()
|
|
|
|
instance.setInstanceConfig(config)
|
2019-01-21 17:48:40 +01:00
|
|
|
|
2019-03-21 02:56:58 +01:00
|
|
|
return instance
|
2019-01-21 17:48:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the list of accounts.
|
|
|
|
* @return {Promise<Account[]>}
|
|
|
|
*/
|
|
|
|
public async list(): Promise<Account[]> {
|
|
|
|
// retrieve eth accounts
|
2019-05-08 03:10:21 +02:00
|
|
|
const ethAccounts: string[] = await this.web3.eth.getAccounts()
|
2019-01-21 17:48:40 +01:00
|
|
|
|
2019-11-15 00:00:10 +01:00
|
|
|
const accountPromises = ethAccounts.map(
|
2020-05-19 16:15:56 +02:00
|
|
|
(address) => new Account(address, this.instanceConfig)
|
2019-11-15 00:00:10 +01:00
|
|
|
)
|
2019-05-08 03:10:21 +02:00
|
|
|
return Promise.all(accountPromises)
|
2019-01-21 17:48:40 +01:00
|
|
|
}
|
2019-02-14 13:15:50 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Return account balance.
|
|
|
|
* @param {Account} account Account instance.
|
|
|
|
* @return {Promise<Balance>} Ether and Ocean Token balance.
|
|
|
|
*/
|
|
|
|
public balance(account: Account): Promise<Balance> {
|
|
|
|
return account.getBalance()
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2019-12-06 09:57:26 +01:00
|
|
|
* Request tokens for an account.
|
2019-02-14 13:15:50 +01:00
|
|
|
* @param {Account} account Account instance.
|
|
|
|
* @param {number} amount Token amount.
|
|
|
|
* @return {Promise<boolean>} Success.
|
|
|
|
*/
|
2019-09-09 12:18:54 +02:00
|
|
|
public async requestTokens(account: Account, amount: number): Promise<boolean> {
|
2019-02-14 13:15:50 +01:00
|
|
|
try {
|
|
|
|
await account.requestTokens(amount)
|
|
|
|
return true
|
2019-02-21 18:14:07 +01:00
|
|
|
} catch (e) {
|
2019-02-14 13:15:50 +01:00
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
2019-01-21 17:48:40 +01:00
|
|
|
}
|