UNPKG

temporibusunde

Version:

Access and interact with Aragon Organizations and their apps.

114 lines (95 loc) 3.2 kB
import { Address, SubscriptionCallback, SubscriptionResult, } from '@aragon/connect-types' import { subscription } from '@aragon/connect-core' import { IAgreementConnector } from '../types' import Signer from './Signer' import Version from './Version' import DisputableApp from './DisputableApp' export default class Agreement { #address: Address #connector: IAgreementConnector constructor(connector: IAgreementConnector, address: Address) { this.#connector = connector this.#address = address } async disconnect() { await this.#connector.disconnect() } async id(): Promise<string> { const data = await this.#connector.agreement(this.#address) return data.id } async dao(): Promise<string> { const data = await this.#connector.agreement(this.#address) return data.dao } async stakingFactory(): Promise<string> { const data = await this.#connector.agreement(this.#address) return data.stakingFactory } async currentVersion(): Promise<Version> { return this.#connector.currentVersion(this.#address) } onCurrentVersion( callback?: SubscriptionCallback<Version> ): SubscriptionResult<Version> { return subscription<Version>(callback, (callback) => this.#connector.onCurrentVersion(this.#address, callback) ) } versionId(versionNumber: string): string { return `${this.#address}-version-${versionNumber}` } async version(versionNumber: string): Promise<Version> { return this.#connector.version(this.versionId(versionNumber)) } onVersion( versionNumber: string, callback?: SubscriptionCallback<Version> ): SubscriptionResult<Version> { return subscription<Version>(callback, (callback) => this.#connector.onVersion(this.versionId(versionNumber), callback) ) } async versions({ first = 1000, skip = 0 } = {}): Promise<Version[]> { return this.#connector.versions(this.#address, first, skip) } onVersions( { first = 1000, skip = 0 } = {}, callback?: SubscriptionCallback<Version[]> ): SubscriptionResult<Version[]> { return subscription<Version[]>(callback, (callback) => this.#connector.onVersions(this.#address, first, skip, callback) ) } async disputableApps({ first = 1000, skip = 0 } = {}): Promise< DisputableApp[] > { return this.#connector.disputableApps(this.#address, first, skip) } onDisputableApps( { first = 1000, skip = 0 } = {}, callback?: SubscriptionCallback<DisputableApp[]> ): SubscriptionResult<DisputableApp[]> { return subscription<DisputableApp[]>(callback, (callback) => this.#connector.onDisputableApps(this.#address, first, skip, callback) ) } signerId(signerAddress: string): string { return `${this.#address}-signer-${signerAddress.toLowerCase()}` } async signer(signerAddress: string): Promise<Signer> { return this.#connector.signer(this.signerId(signerAddress)) } onSigner( signerAddress: string, callback?: SubscriptionCallback<Signer> ): SubscriptionResult<Signer> { return subscription<Signer>(callback, (callback) => this.#connector.onSigner(this.signerId(signerAddress), callback) ) } }