import type { Screen } from "./screen"; import type { DiscordAdaptor, MessageMutualPayload } from "../adaptor"; import type { Logger } from "../util/logger"; import type { IEventFlowHandler } from "@discord-inquirer/event-flow"; import type { UnionToIntersection } from "type-fest"; export type InquireResultEvent> = IEventFlowHandler<{ [K in keyof T]: { key: K; value: T[K]; all: Partial; }; }[keyof T]>; /** * Inquireの回答 * @param resultEvent Promptでanswerが呼ばれ回答状態が変化したときにEmitされるEventFlow * @param result 現在の回答状態を取得する * @param close Inquireを終了する */ export type InquireResult> = { resultEvent: InquireResultEvent; result: () => Partial; close: () => Promise; }; export type Inquire> = (prompt: Prompt, config: InquireConfig) => InquireResult; /** * Inquireの設定 * @param screen Screen * @param adaptor DiscordAdaptor * @param defaultResult デフォルトのresult値 * @param time 最初にinquirerを送信してからタイムアウトするまでの時間(ミリ秒)tokenの有効期限が15分なので最大でもそれより短くする必要がある デフォルトは14.5 * 60 * 1000 ms * @param idle 最後に回答状態かコンポーネントの状態が変化してからタイムアウトするまでの時間(ミリ秒) デフォルトは2 ** 31 - 1 ms */ export interface InquireConfig = Record> { screen: Screen; adaptor: DiscordAdaptor; defaultResult?: Partial; time?: number; idle?: number; logger?: Logger; } export type Prompt = Record> = (answer: UnionToIntersection>, close: () => void) => MessageMutualPayload; export type AnswerPrompt> = { [K in keyof T]: AnswerFunc; }[keyof T]; export type AnswerFunc, K extends keyof T> = (key: K, value: T[K]) => void; /** * Promptを表示する * @param prompt * @param partialConfig */ export declare const inquire: >(prompt: Prompt, partialConfig: InquireConfig) => InquireResult; //# sourceMappingURL=inquire.d.ts.map