import { AppFilters, Network, SubscriptionCallback, SubscriptionHandler, } from '@aragon/connect-types' import { ConnectionContext } from '../types' import App from '../entities/App' import Organization from '../entities/Organization' import Permission from '../entities/Permission' import Repo from '../entities/Repo' import Role from '../entities/Role' export default interface IOrganizationConnector { readonly name: string readonly network: Network readonly config: { [key: string]: any } connect?(connection: ConnectionContext): Promise disconnect?(): Promise appByAddress(organization: Organization, appAddress: string): Promise appForOrg(organization: Organization, filters?: AppFilters): Promise onAppForOrg( organization: Organization, filters: AppFilters, callback: SubscriptionCallback ): SubscriptionHandler appsForOrg(organization: Organization, filters?: AppFilters): Promise onAppsForOrg( organization: Organization, filters: AppFilters, callback: SubscriptionCallback ): SubscriptionHandler permissionsForOrg(organization: Organization): Promise onPermissionsForOrg( organization: Organization, callback: SubscriptionCallback ): SubscriptionHandler repoForApp(organization: Organization, appAddress: string): Promise rolesForAddress( organization: Organization, appAddress: string ): Promise }