squid-js/src/ocean/Ocean.ts

130 lines
3.1 KiB
TypeScript

import { OceanAccounts } from './OceanAccounts'
import { OceanAgreements } from './OceanAgreements'
import { OceanAssets } from './OceanAssets'
import { OceanAuth } from './OceanAuth'
import { OceanSecretStore } from './OceanSecretStore'
import { OceanTokens } from './OceanTokens'
import { OceanVersions } from './OceanVersions'
import { OceanUtils } from './utils/OceanUtils'
import { Aquarius } from '../aquarius/Aquarius'
import { Brizo } from '../brizo/Brizo'
import Keeper from '../keeper/Keeper'
import { Config } from '../models/Config'
import {
Instantiable,
generateIntantiableConfigFromConfig
} from '../Instantiable.abstract'
/**
* Main interface for Ocean Protocol.
*/
export class Ocean extends Instantiable {
/**
* Returns the instance of Ocean.
* @param {Config} config Ocean instance configuration.
* @return {Promise<Ocean>}
*/
public static async getInstance(config: Config): Promise<Ocean> {
const instance = new Ocean()
const instanceConfig = {
...generateIntantiableConfigFromConfig(config),
ocean: instance
}
instance.setInstanceConfig(instanceConfig)
instance.keeper = await Keeper.getInstance(instanceConfig)
instance.brizo = new Brizo(instanceConfig)
instance.aquarius = new Aquarius(instanceConfig)
instance.accounts = await OceanAccounts.getInstance(instanceConfig)
instance.auth = await OceanAuth.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)
instance.versions = await OceanVersions.getInstance(instanceConfig)
instance.utils = await OceanUtils.getInstance(instanceConfig)
return instance
}
/**
* Keeper instance.
* @type {Keeper}
*/
public keeper: Keeper
/**
* Brizo instance.
* @type {Brizo}
*/
public brizo: Brizo
/**
* Aquarius instance.
* @type {Aquarius}
*/
public aquarius: Aquarius
/**
* Ocean account submodule
* @type {OceanAccounts}
*/
public accounts: OceanAccounts
/**
* Ocean auth submodule
* @type {OceanAuth}
*/
public auth: OceanAuth
/**
* Ocean assets submodule
* @type {OceanAssets}
*/
public assets: OceanAssets
/**
* Ocean agreements submodule
* @type {OceanAgreements}
*/
public agreements: OceanAgreements
/**
* Ocean secretStore submodule
* @type {OceanSecretStore}
*/
public secretStore: OceanSecretStore
/**
* Ocean tokens submodule
* @type {OceanTokens}
*/
public tokens: OceanTokens
/**
* Ocean versions submodule
* @type {OceanVersions}
*/
public versions: OceanVersions
/**
* Ocean utils submodule
* @type {OceanUtils}
*/
public utils: OceanUtils
private constructor() {
super()
}
}