import { type EventDataApiBase, type Message, type MessageQuick, type CommandResult, type EventDataPrivateMsg, type EventDataGroupMsg, type EventDataChannelMsg } from '../types'; import type { Adapter } from './adapter'; import { formatFactory } from '../utils/factory'; import { CommandError } from '../utils/error'; import type { Api } from './api'; import type { Elements } from './elements'; import type { I18n } from '@kotori-bot/i18n'; declare class SessionOrigin implements EventDataApiBase { /** * Api instance of current session. * * @readonly */ readonly api: Api; /** * Elements instance of current session. * * @readonly */ readonly el: Elements; /** * I18n instance of current session. * * @readonly */ readonly i18n: I18n; /** * Session unique id, generated base on `type`. `userId`, `groupId`, `guildId`, `channelId`. * * @readonly */ readonly id: string; /** * Send message to current session. * * @param message - Message to send * @returns Message id and sent time */ send(message: Message): Promise; /** * Format message template with data. * * @param template - Message template * @param data - Data to format * @returns Formatted message */ readonly format: ReturnType; /** * Send message to current session, it's packed base on `session.send()`, `session.i18n` and `session.format()`. * * @param message - Message to send * @returns Message id and sent time * * @async */ quick(message: MessageQuick): Promise; /** * Get message from current session. * * @param message - Message to get * @returns Message id and sent time */ json(message: unknown): Promise; /** * Prompt message to current session. * * @param message - Message to prompt * @returns Message from current session * * @async */ prompt(message?: Message): Promise; /** * Confirm message to current session. * * @param options - Options to confirm * @returns Message from current session * * @async */ confirm(options?: { message: Message; sure: Message; }): Promise; /** * Create a command error. * * @param type - Error type * @param data - Error data * @returns Command error */ error(type: K, data?: CommandResult[K]): CommandError; readonly t: I18n['t']; /** * Session type * * @readonly */ readonly type: EventDataApiBase['type']; /** * Session time, milliseconds timestamp. * * @readonly */ readonly time: number; /** * Session related user id if exists. * * @readonly */ readonly userId?: string; /** * Session related operator id if exists. * * @readonly */ readonly operatorId?: string; /** * Session related message id if exists. * * @readonly */ readonly messageId?: string; /** * Session related group id if exists. * * @readonly */ readonly groupId?: string; /** * Session related channel id if exists. * * @readonly */ readonly channelId?: string; /** * Session related guild id if exists. * * @readonly */ readonly guildId?: string; /** * Session related meta data if exists, it is customized by the specific adapter. * * @readonly */ readonly meta?: EventDataApiBase['meta']; /** * Create a session instance. * * @param data - Session data * @param adapter - Adapter instance * * @constructor */ constructor(data: T, adapter: Adapter); } /** * Session instance. * * @class Session * @extends {SessionOrigin} * @template T */ export type Session = SessionOrigin & T; export type SessionMsg = Session; export type SessionMsgPrivate = Session; export type SessionMsgGroup = Session; export type SessionMsgChannel = Session; /** * Session event. * * @class * @template T - Session event data type */ export declare const Session: new (data: T, bot: Adapter) => Session; export {};