squid-js/src/ocean/OceanAccounts.ts

58 lines
1.7 KiB
TypeScript
Raw Normal View History

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.
*/
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> {
const instance = new OceanAccounts()
instance.setInstanceConfig(config)
2019-01-21 17:48:40 +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
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(
(address) => new Account(address, this.instanceConfig)
2019-11-15 00:00:10 +01:00
)
return Promise.all(accountPromises)
2019-01-21 17:48:40 +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.
* @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> {
try {
await account.requestTokens(amount)
return true
2019-02-21 18:14:07 +01:00
} catch (e) {
return false
}
}
2019-01-21 17:48:40 +01:00
}