import { Component, ComponentStateLiteral, ContentType, Slot, Subject, Textbus } from '@textbus/core';
export interface Member {
    /** 头像 url */
    avatar: string;
    /** 成员名称 */
    name: string;
    /** 成员 id */
    id: string;
    /** 成员所属群组名 */
    groupName: string;
    /** 成员所属群组 id */
    groupId: string;
    /** 成员背景色 */
    color?: string;
}
/**
 * 组件架构信息
 */
export declare abstract class Organization<T extends Member = Member> {
    /** 根据当前输入获取成员列表 */
    abstract getMembers(name?: string): Promise<T[]>;
    /** 当 @ 某个成员时的回调 */
    abstract atMember(member: T): void;
}
export interface AtComponentState<T extends Member = Member> {
    userInfo?: T;
    slot?: Slot;
}
export declare function registerAtShortcut(textbus: Textbus): void;
export declare class AtComponent extends Component<AtComponentState> {
    static componentName: string;
    static type: ContentType;
    static fromJSON(textbus: Textbus, { slot: slotState, userInfo }: ComponentStateLiteral<AtComponentState>): AtComponent;
    focus: Subject<boolean>;
    members: import("@viewfly/core").Signal<Member[]>;
    selectedIndex: import("@viewfly/core").Signal<number>;
    private selection;
    private organization;
    constructor(textbus: Textbus, state?: AtComponentState);
    getSlots(): Slot[];
    setup(): void;
    atMember(member?: Member): void;
}
