import { Syringe } from '@difizen/mana-app';
import type { LLMMeta } from '../model/protocol.js';
import type { PlannerMeta } from '../planner/protocol.js';
import type { ToolMeta } from '../tool/protocol.js';
import type { AgentConfig } from './agent-config.js';
import type { AgentModel } from './agent-model.js';
export type { AgentConfig } from './agent-config.js';
export interface PromptMeta {
    introduction: string;
    target: string;
    instruction: string;
}
export interface AgentConfigOption {
    opening_speech?: string;
    llm?: LLMMeta;
    prompt?: PromptMeta;
    memory?: string;
    planner?: PlannerMeta;
    tool?: ToolMeta[];
    knowledge: any[];
}
export declare const AgentConfigOption: Syringe.DefinedToken;
export type AgentConfigFactory = (options: AgentConfigOption) => AgentConfig;
export declare const AgentConfigFactory: Syringe.DefinedToken;
export declare const PromptMetaType: {
    is(data?: null | Record<string, any>): data is PromptMeta;
};
export declare const AgentConfigType: {
    isOption(data?: Record<string, any>): data is AgentConfigOption;
    isFullOption(data?: Record<string, any>): boolean;
};
export type { AgentModel } from './agent-model.js';
export interface AgentModelOption {
    description?: string;
    avatar?: string;
    nickname?: string;
    id: string;
    opening_speech?: string;
    llm?: LLMMeta;
    prompt?: PromptMeta;
    memory?: string;
    planner?: PlannerMeta;
    tool?: ToolMeta[];
    knowledge?: any[];
    mtime?: number;
}
export declare const AgentModelOption: Syringe.DefinedToken;
export type AgentModelFactory = (options: AgentModelOption) => AgentModel;
export declare const AgentModelFactory: Syringe.DefinedToken;
export interface AgentModelCreateOption {
    description?: string;
    avatar?: string;
    nickname?: string;
    planner: Partial<PlannerMeta>;
    llm?: Partial<LLMMeta>;
    prompt?: Partial<PromptMeta>;
    id: string;
}
export declare const AgentModelType: {
    isOption(data?: Record<string, any>): data is AgentModelOption;
    isFullOption(data?: Record<string, any>): boolean;
};
export declare const AgentInstance: Syringe.DefinedToken;
//# sourceMappingURL=protocol.d.ts.map