2019-03-19 13:01:28 +01:00
|
|
|
import { OceanAccounts } from "./OceanAccounts"
|
|
|
|
import { OceanAgreements } from "./OceanAgreements"
|
|
|
|
import { OceanAssets } from "./OceanAssets"
|
|
|
|
import { OceanSecretStore } from "./OceanSecretStore"
|
|
|
|
import { OceanTokens } from "./OceanTokens"
|
2019-01-21 17:48:40 +01:00
|
|
|
|
2019-03-21 02:56:58 +01:00
|
|
|
import { Aquarius } from "../aquarius/Aquarius"
|
|
|
|
import { Brizo } from "../brizo/Brizo"
|
2018-10-05 12:34:31 +02:00
|
|
|
|
2019-03-04 13:05:27 +01:00
|
|
|
import Keeper from "../keeper/Keeper"
|
2019-03-21 02:56:58 +01:00
|
|
|
|
|
|
|
import { Config } from "../models/Config"
|
|
|
|
|
|
|
|
import { Instantiable, generateIntantiableConfigFromConfig } from "../Instantiable.abstract"
|
2018-11-23 16:01:42 +01:00
|
|
|
|
2019-01-09 16:17:23 +01:00
|
|
|
/**
|
|
|
|
* Main interface for Ocean Protocol.
|
|
|
|
*/
|
2019-03-21 02:56:58 +01:00
|
|
|
export class Ocean extends Instantiable {
|
2018-10-05 12:34:31 +02:00
|
|
|
|
2019-01-09 16:17:23 +01:00
|
|
|
/**
|
|
|
|
* Returns the instance of Ocean.
|
|
|
|
* @param {Config} config Ocean instance configuration.
|
|
|
|
* @return {Promise<Ocean>}
|
|
|
|
*/
|
|
|
|
public static async getInstance(config: Config): Promise<Ocean> {
|
2019-03-21 02:56:58 +01:00
|
|
|
const instance = new Ocean()
|
|
|
|
|
|
|
|
const instanceConfig = {
|
|
|
|
...generateIntantiableConfigFromConfig(config),
|
|
|
|
ocean: instance,
|
2018-10-16 14:56:18 +02:00
|
|
|
}
|
2019-03-21 02:56:58 +01:00
|
|
|
instance.setInstanceConfig(instanceConfig)
|
2018-10-16 14:56:18 +02:00
|
|
|
|
2019-03-21 02:56:58 +01:00
|
|
|
instance.keeper = await Keeper.getInstance(instanceConfig)
|
2018-10-05 12:34:31 +02:00
|
|
|
|
2019-03-21 02:56:58 +01:00
|
|
|
instance.brizo = new Brizo(instanceConfig)
|
|
|
|
instance.aquarius = new Aquarius(instanceConfig)
|
|
|
|
|
|
|
|
instance.accounts = await OceanAccounts.getInstance(instanceConfig)
|
|
|
|
instance.assets = await OceanAssets.getInstance(instanceConfig)
|
|
|
|
instance.agreements = await OceanAgreements.getInstance(instanceConfig)
|
|
|
|
instance.secretStore = await OceanSecretStore.getInstance(instanceConfig)
|
|
|
|
instance.tokens = await OceanTokens.getInstance(instanceConfig)
|
|
|
|
|
|
|
|
return instance
|
|
|
|
}
|
2018-11-06 16:23:48 +01:00
|
|
|
|
2019-03-04 13:05:27 +01:00
|
|
|
/**
|
|
|
|
* Keeper instance.
|
|
|
|
* @type {Keeper}
|
|
|
|
*/
|
|
|
|
public keeper: Keeper
|
|
|
|
|
2019-03-21 02:56:58 +01:00
|
|
|
/**
|
|
|
|
* Brizo instance.
|
|
|
|
* @type {Brizo}
|
|
|
|
*/
|
|
|
|
public brizo: Brizo
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Aquarius instance.
|
|
|
|
* @type {Aquarius}
|
|
|
|
*/
|
|
|
|
public aquarius: Aquarius
|
|
|
|
|
2019-01-09 16:17:23 +01:00
|
|
|
/**
|
2019-01-21 17:48:40 +01:00
|
|
|
* Ocean account submodule
|
|
|
|
* @type {OceanAccounts}
|
|
|
|
*/
|
|
|
|
public accounts: OceanAccounts
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Ocean assets submodule
|
|
|
|
* @type {OceanAssets}
|
|
|
|
*/
|
|
|
|
public assets: OceanAssets
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Ocean agreements submodule
|
|
|
|
* @type {OceanAgreements}
|
2019-01-09 16:17:23 +01:00
|
|
|
*/
|
2019-01-21 17:48:40 +01:00
|
|
|
public agreements: OceanAgreements
|
2018-10-17 10:12:40 +02:00
|
|
|
|
2019-02-14 11:26:12 +01:00
|
|
|
/**
|
|
|
|
* Ocean secretStore submodule
|
|
|
|
* @type {OceanSecretStore}
|
|
|
|
*/
|
|
|
|
public secretStore: OceanSecretStore
|
|
|
|
|
2019-02-18 15:37:52 +01:00
|
|
|
/**
|
|
|
|
* Ocean tokens submodule
|
|
|
|
* @type {OceanTokens}
|
|
|
|
*/
|
|
|
|
public tokens: OceanTokens
|
|
|
|
|
2019-03-21 02:56:58 +01:00
|
|
|
private constructor() {
|
|
|
|
super()
|
2018-11-05 14:58:58 +01:00
|
|
|
}
|
2018-10-05 12:34:31 +02:00
|
|
|
}
|