import { TokenResponse } from './token-types';
type BoundingRect = {
    x: number;
    y: number;
    width: number;
    height: number;
    top: number;
    left: number;
    right: number;
    bottom: number;
};
export type ComponentNode = {
    name: string;
    type: 'function' | 'class' | 'memo' | 'forwardRef' | 'context' | 'unknown';
    depth: number;
    props?: Record<string, unknown>;
    key?: string | number | null;
};
export type FileMatch = {
    filePath: string;
};
export type SiblingElementContext = {
    tagName: string;
    className: string;
    id: string;
    textSnippet: string;
    relativePosition: 'previous' | 'next';
};
export type ParentElementSummary = {
    tagName: string;
    className: string;
    id: string;
    textSnippet: string;
};
export type ElementContext = {
    xpath: string;
    tagName: string;
    className: string;
    id: string;
    textContent: string;
    innerHTML: string;
    attributes: Record<string, string>;
    computedStyles: Record<string, string>;
    boundingRect: BoundingRect;
    /** Stable `data-rivet-id` when the client pinned the element (preview / re-targeting). */
    rivetId?: string;
    componentTree?: ComponentNode[];
    filePaths?: FileMatch[];
    siblingElements?: SiblingElementContext[];
    parentElementSummary?: ParentElementSummary;
};
type FileChange = {
    filePath: string;
    originalContent: string;
    modifiedContent: string;
    diff: string;
};
export type ChangeRecord = {
    id: string;
    timestamp: Date;
    type: 'css' | 'llm' | 'multi-element' | 'token';
    description: string;
    elements: ElementContext[];
    files: FileChange[];
    commitSha?: string;
};
export type CodeModificationRequest = {
    instruction: string;
    elements: ElementContext[];
    temperature?: number;
    images?: string[];
    designTokens?: TokenResponse;
    sessionId?: string;
    model?: string;
    traceId?: string;
    posthogSessionId?: string;
};
export type CodeModificationResponse = {
    changes: string;
    filesModified: Array<{
        filePath: string;
        changes: string;
    }>;
    totalElements: number;
    sessionId?: string;
    model?: string;
    ttfmMs?: number;
    traceId?: string;
    agentRunId?: string;
};
export {};
//# sourceMappingURL=change-types.d.ts.map