import { AsyncModel, Fetcher } from '@difizen/magent-core';
import type { Dayjs } from 'dayjs';
import type { KnowledgeModelOption } from '../knowledge/protocol.js';
import { LLMManager } from '../model/llm-manager.js';
import type { LLMModel } from '../model/llm-model.js';
import type { PlannerMeta } from '../planner/protocol.js';
import type { ToolMeta } from '../tool/protocol.js';
import { ToolManager } from '../tool/tool-manager.js';
import { AgentConfigManager } from './agent-config-manager.js';
import type { PromptMeta } from './protocol.js';
import { AgentModelOption } from './protocol.js';
declare class Prompt implements PromptMeta {
    introduction: string;
    target: string;
    instruction: string;
    constructor(option?: PromptMeta);
    toMeta: () => {
        introduction: string;
        instruction: string;
        target: string;
    };
}
export declare class AgentModel extends AsyncModel<AgentModel, AgentModelOption> {
    toolManager: ToolManager;
    fetcher: Fetcher;
    protected llmManager: LLMManager;
    id: string;
    name?: string;
    avatar?: string;
    description?: string;
    llm?: LLMModel;
    prompt?: Prompt;
    memory: string;
    planner?: PlannerMeta;
    openingSpeech?: string;
    tool: ToolMeta[];
    knowledge?: KnowledgeModelOption[];
    mtime?: Dayjs;
    saving?: boolean;
    option: AgentModelOption;
    fetching?: Promise<void>;
    constructor(option: AgentModelOption, configManager: AgentConfigManager, llmManager: LLMManager, fetcher: Fetcher);
    shouldInitFromMeta(): boolean;
    protected fromMeta(option?: AgentModelOption): void;
    protected doFetchInfo(option?: AgentModelOption): Promise<void>;
    fetchInfo(option?: AgentModelOption, force?: boolean): Promise<void>;
    toMeta(): AgentModelOption;
    toJSON(): string;
    save: () => Promise<boolean>;
    fetchKnowdledgeList(): Promise<KnowledgeModelOption[]>;
}
export {};
//# sourceMappingURL=agent-model.d.ts.map