import type { Channel, ChannelOptions } from "./channel.js"; import * as Events from "../../events.js"; import { Configuration } from "../../configuration.js"; import { Maybe } from "../../common/types.js"; import { Session } from "../../session.js"; export declare type Implementation = { type: string; session: (components: C, authenticatedUsername: Maybe, config: Configuration, eventEmitters: { fileSystem: Events.Emitter; session: Events.Emitter>; }) => Promise>; isUsernameAvailable: (username: string) => Promise; isUsernameValid: (username: string) => Promise; register: (options: { username: string; email?: string; }) => Promise<{ success: boolean; }>; canDelegateAccount: (username: string) => Promise; delegateAccount: (username: string, audience: string) => Promise>; linkDevice: (username: string, data: Record) => Promise; createChannel: (options: ChannelOptions) => Promise; };