import { PublicKey } from '@dxos/keys'; import { type TypedMessage } from '@dxos/protocols/proto'; import { type Credential, MembershipPolicy, SpaceMember } from '@dxos/protocols/proto/dxos/halo/credentials'; import { type DelegateSpaceInvitation } from '@dxos/protocols/proto/dxos/halo/invitations'; import { type AsyncCallback, Callback } from '@dxos/util'; import { type CredentialProcessor } from '../processor/credential-processor'; import { type FeedInfo } from './feed-state-machine'; import { type MemberInfo } from './member-state-machine'; export interface SpaceState { readonly members: ReadonlyMap; readonly membershipChainHeads: PublicKey[]; readonly feeds: ReadonlyMap; readonly credentials: Credential[]; readonly genesisCredential: Credential | undefined; readonly tags: string[]; readonly membershipPolicy: MembershipPolicy; readonly creator: MemberInfo | undefined; readonly invitations: ReadonlyMap; addCredentialProcessor(processor: CredentialProcessor): Promise; removeCredentialProcessor(processor: CredentialProcessor): Promise; getCredentialsOfType(type: TypedMessage['@type']): Credential[]; getMemberRole(memberKey: PublicKey): SpaceMember.Role; hasMembershipManagementPermission(memberKey: PublicKey): boolean; } export type ProcessOptions = { sourceFeed: PublicKey; skipVerification?: boolean; }; export type CredentialEntry = { credential: Credential; sourceFeed: PublicKey; revoked: boolean; }; /** * Validates and processes credentials for a single space. * Keeps a list of members and feeds. * Keeps and in-memory index of credentials and allows to query them. */ export declare class SpaceStateMachine implements SpaceState { private readonly _spaceKey; private readonly _members; private readonly _feeds; private readonly _invitations; private readonly _credentials; private readonly _credentialsById; private readonly _processedCredentials; private _genesisCredential; private _tags; private _membershipPolicy; private _credentialProcessors; readonly onCredentialProcessed: Callback>; readonly onMemberRoleChanged: Callback>; readonly onFeedAdmitted: Callback>; readonly onDelegatedInvitation: Callback>; readonly onDelegatedInvitationRemoved: Callback>; constructor(_spaceKey: PublicKey); get creator(): MemberInfo | undefined; get members(): ReadonlyMap; get membershipChainHeads(): PublicKey[]; get feeds(): ReadonlyMap; get credentials(): Credential[]; get credentialEntries(): CredentialEntry[]; get genesisCredential(): Credential | undefined; get tags(): string[]; get membershipPolicy(): MembershipPolicy; get invitations(): ReadonlyMap; addCredentialProcessor(processor: CredentialProcessor): Promise; removeCredentialProcessor(processor: CredentialProcessor): Promise; getCredentialsOfType(type: TypedMessage['@type']): Credential[]; /** * @param credential Message to process. * @param fromFeed Key of the feed where this credential is recorded. */ process(credential: Credential, { sourceFeed, skipVerification }: ProcessOptions): Promise; getMemberRole(memberKey: PublicKey): SpaceMember.Role; hasMembershipManagementPermission(memberKey: PublicKey): boolean; private _canInviteNewMembers; } //# sourceMappingURL=space-state-machine.d.ts.map