import Session, { IMethodParams } from "../Session/Session.js";
import EventHandler, { EventReturn } from "./EventHandler.js";
import { PhotoObject } from "../API/photos.js";
export interface AttachmentPhoto {
    type: 'photo';
    photo: PhotoObject;
}
export declare type Attachment = AttachmentPhoto;
export declare type ButtonType = "text" | 'vkpay' | 'open_app' | 'location' | 'open_link' | 'intent_subscribe' | 'intent_unsubscribe';
export interface ClientInfo {
    button_actions: ButtonType[];
    keyboard: boolean;
    inline_keyboard: boolean;
    carousel: boolean;
    lang_id: number;
}
export interface ForwardMessage {
    date: number;
    from_id: number;
    text: string;
    attachments: [];
    conversation_message_id: number;
    peer_id: number;
    id: number;
}
export interface MessageObject {
    date: number;
    from_id: number;
    id: number;
    out: number;
    peer_id: number;
    text: string;
    conversation_message_id: number;
    fwd_messages: ForwardMessage[];
    reply_message: ForwardMessage;
    important: boolean;
    random_id: number;
    attachments: Attachment[];
    is_hidden: boolean;
}
export declare class NewMessageEvent {
    readonly ClientInfo: ClientInfo;
    readonly MessageSource: MessageObject;
    readonly Session: Session;
    constructor(o: {
        message: MessageObject;
        client_info: ClientInfo;
    }, session: Session);
    get message(): string;
    get from_id(): number;
    get peer_id(): number;
    reply(text: string, attachments?: string | readonly string[], params?: IMethodParams): Promise<void>;
}
export default interface NewMessageEventHandler extends EventHandler {
    (message: NewMessageEvent): EventReturn<boolean | void>;
}
