import { Context, ContextFactoryOptions, ContextDefaultState } from './context';
import { kSerializeData } from '../../utils/constants';
export type GroupMemberContextType = 'group_member';
export type GroupMemberContextSubType = 'group_leave' | 'group_join';
export interface IGroupMemberContextPayload {
    user_id: number;
    self?: number;
    join_type?: string;
}
export type GroupMemberContextOptions<S> = ContextFactoryOptions<IGroupMemberContextPayload, S>;
export declare class GroupMemberContext<S = ContextDefaultState> extends Context<IGroupMemberContextPayload, S, GroupMemberContextType, GroupMemberContextSubType> {
    constructor(options: GroupMemberContextOptions<S>);
    /**
     * Checks is join user
     */
    get isJoin(): boolean;
    /**
     * Checks is leave user
     */
    get isLeave(): boolean;
    /**
     * Checks is self leave user
     */
    get isSelfLeave(): boolean | undefined;
    /**
     * Returns the identifier user
     */
    get userId(): number;
    /**
     * Returns the join type
     */
    get joinType(): string | undefined;
    /**
     * Returns the custom data
     */
    [kSerializeData](): object;
}
