/// <reference types="node" />
import { EventEmitter } from 'events';
import { JsonObject } from 'type-fest';
import { LineClient } from 'messaging-api-line';
import Context from '../context/Context';
import Session from '../session/Session';
import { RequestContext } from '../types';
import LineEvent from './LineEvent';
import * as LineTypes from './LineTypes';
export declare type LineContextOptions = {
    client: LineClient;
    event: LineEvent;
    session?: Session | null;
    initialState?: JsonObject | null;
    requestContext?: RequestContext;
    customAccessToken?: string;
    shouldBatch?: boolean;
    sendMethod?: string;
    emitter?: EventEmitter | null;
};
declare class LineContext extends Context<LineClient, LineEvent> {
    _isReplied: boolean;
    _shouldBatch: boolean;
    _replyMessages: LineTypes.Message[];
    _pushMessages: LineTypes.Message[];
    _sendMethod: string;
    constructor({ client, event, session, initialState, requestContext, customAccessToken, shouldBatch, sendMethod, emitter, }: LineContextOptions);
    get platform(): 'line';
    get accessToken(): string;
    useAccessToken(accessToken: string): void;
    get isReplied(): boolean;
    handlerDidEnd(): Promise<void>;
    getMessageContent(): Promise<Buffer> | undefined;
    leave(): Promise<any>;
    getUserProfile(): Promise<Record<string, any> | null>;
    getMemberProfile(userId: string): Promise<Record<string, any> | null>;
    getMembersCount(): Promise<number | null>;
    getMemberIds(start: string): Promise<Record<string, any> | null>;
    getAllMemberIds(): Promise<string[] | null>;
    getLinkedRichMenu(): Promise<any>;
    linkRichMenu(richMenuId: string): Promise<any>;
    unlinkRichMenu(): Promise<any>;
    issueLinkToken(): Promise<any>;
    reply(messages: LineTypes.Message[]): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyText(text: string, options?: LineTypes.MessageOptions & {
        emojis?: LineTypes.Emoji[];
    }): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyImage(image: {
        originalContentUrl: string;
        previewImageUrl?: string;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyVideo(video: {
        originalContentUrl: string;
        previewImageUrl: string;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyAudio(audio: {
        originalContentUrl: string;
        duration: number;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyLocation(location: LineTypes.Location, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replySticker(sticker: Omit<LineTypes.StickerMessage, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyImagemap(altText: string, imagemap: Omit<LineTypes.ImagemapMessage, 'type' | 'altText'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyFlex(altText: string, flex: LineTypes.FlexContainer, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyTemplate(altText: string, template: LineTypes.Template, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyButtonTemplate(altText: string, buttonTemplate: Omit<LineTypes.ButtonsTemplate, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyButtonsTemplate(altText: string, buttonTemplate: Omit<LineTypes.ButtonsTemplate, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyConfirmTemplate(altText: string, confirmTemplate: Omit<LineTypes.ConfirmTemplate, 'type'>, options: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyCarouselTemplate(altText: string, columns: LineTypes.ColumnObject[], options: {
        imageAspectRatio?: 'rectangle' | 'square';
        imageSize?: 'cover' | 'contain';
    } & LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    replyImageCarouselTemplate(altText: string, columns: LineTypes.ImageCarouselColumnObject[], options: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    push(messages: LineTypes.Message[]): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushText(text: string, options?: LineTypes.MessageOptions & {
        emojis?: LineTypes.Emoji[];
    }): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushImage(image: {
        originalContentUrl: string;
        previewImageUrl?: string;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushVideo(video: {
        originalContentUrl: string;
        previewImageUrl: string;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushAudio(audio: {
        originalContentUrl: string;
        duration: number;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushLocation(location: LineTypes.Location, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushSticker(sticker: Omit<LineTypes.StickerMessage, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushImagemap(altText: string, imagemap: Omit<LineTypes.ImagemapMessage, 'type' | 'altText'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushFlex(altText: string, flex: LineTypes.FlexContainer, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushTemplate(altText: string, template: LineTypes.Template, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushButtonTemplate(altText: string, buttonTemplate: Omit<LineTypes.ButtonsTemplate, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushButtonsTemplate(altText: string, buttonTemplate: Omit<LineTypes.ButtonsTemplate, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushConfirmTemplate(altText: string, confirmTemplate: Omit<LineTypes.ConfirmTemplate, 'type'>, options: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushCarouselTemplate(altText: string, columns: LineTypes.ColumnObject[], options: {
        imageAspectRatio?: 'rectangle' | 'square';
        imageSize?: 'cover' | 'contain';
    } & LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    pushImageCarouselTemplate(altText: string, columns: LineTypes.ImageCarouselColumnObject[], options: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    send(messages: LineTypes.Message[]): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendText(text: string, options?: LineTypes.MessageOptions & {
        emojis?: LineTypes.Emoji[];
    }): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendImage(image: {
        originalContentUrl: string;
        previewImageUrl?: string;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendVideo(video: {
        originalContentUrl: string;
        previewImageUrl: string;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendAudio(audio: {
        originalContentUrl: string;
        duration: number;
    }, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendLocation(location: LineTypes.Location, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendSticker(sticker: Omit<LineTypes.StickerMessage, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendImagemap(altText: string, imagemap: Omit<LineTypes.ImagemapMessage, 'type' | 'altText'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendFlex(altText: string, flex: LineTypes.FlexContainer, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendTemplate(altText: string, template: LineTypes.Template, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendButtonTemplate(altText: string, buttonTemplate: Omit<LineTypes.ButtonsTemplate, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendButtonsTemplate(altText: string, buttonTemplate: Omit<LineTypes.ButtonsTemplate, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendConfirmTemplate(altText: string, confirmTemplate: Omit<LineTypes.ConfirmTemplate, 'type'>, options?: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendCarouselTemplate(altText: string, columns: LineTypes.ColumnObject[], options?: {
        imageAspectRatio?: 'rectangle' | 'square';
        imageSize?: 'cover' | 'contain';
    } & LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
    sendImageCarouselTemplate(altText: string, columns: LineTypes.ImageCarouselColumnObject[], options: LineTypes.MessageOptions): Promise<LineTypes.MutationSuccessResponse> | undefined;
}
export default LineContext;
//# sourceMappingURL=LineContext.d.ts.map