import type { ChatMessage } from "../agent/types.js";
import type { ModelPurpose } from "../runtime/infra/model-registry.js";
import { type PetStats, type PetdexPetAsset, type PetdexValidationReport } from "../runtime/pet/index.js";
import { type PetdexProductionRun } from "../runtime/pet/petdex-forge-service.js";
import type { LLMTransport } from "./provider-core-facade.js";
export type PetSoulGenerator = (rarity: string, stats: PetStats) => Promise<{
    name: string;
    personality: string;
    catchphrase: string;
}>;
export type SmallLlmCall = (prompt: string, maxTokens: number) => Promise<string | null>;
export interface PetdexForgeInput {
    id?: string;
    name: string;
    description: string;
    prompt?: string | null;
    referenceImageUrl?: string;
    referenceMode?: "identity" | "refine";
    baseSpritesheet?: Buffer;
}
export interface PetdexForgeOutput {
    asset: PetdexPetAsset;
    spritesheet: Buffer;
    validation: PetdexValidationReport;
    productionRun?: PetdexProductionRun;
    mediaUsage?: {
        provider: string;
        model: string;
        billingUnit: string;
        billingQuantity: number;
    };
}
export interface PetLlmClient {
    transport: LLMTransport;
    apiKey: string;
    model: string;
}
export interface PetRuntime {
    createPetSoulGenerator(): PetSoulGenerator | undefined;
    createSmallLLMCall(): SmallLlmCall | undefined;
    forgeAnalyzeImage(imageBase64: string, hint?: string): Promise<string>;
    isImageGenerationAvailable(): boolean;
    isPetdexForgeAvailable(): boolean;
    forgeGeneratePetdexAtlas(input: PetdexForgeInput): Promise<PetdexForgeOutput>;
    awardXp(event: string): Promise<void>;
    reactAfterTurn(messages: ChatMessage[]): Promise<void>;
    isActive(): boolean;
}
export interface PetRuntimeDeps {
    getActiveProjectRoot(): string;
    resolveOwnerUserId?: () => string;
    resolveClientForPurpose(purpose: ModelPurpose): PetLlmClient | null;
    sendNotification(method: string, params: Record<string, unknown>): void;
}
export declare function createPetRuntime(deps: PetRuntimeDeps): PetRuntime;
