/**
 * Types for commit system
 * Git-like version tracking for Bangstack configurations
 */
/**
 * Operation types for diffs
 */
export type DiffOperation = 'add' | 'remove' | 'modify';
/**
 * A single change in a diff
 */
export interface DiffChange {
    op: DiffOperation;
    path: string;
    value?: any;
    oldValue?: any;
}
/**
 * A commit represents a snapshot of changes
 */
export interface Commit {
    hash: string;
    parent: string | null;
    timestamp: string;
    author: string;
    message: string;
    diff: DiffChange[];
    filesAffected?: string[];
    referencedFiles?: string[];
}
/**
 * Commit index maintains the commit chain
 */
export interface CommitIndex {
    head: string | null;
    commits: CommitMetadata[];
}
/**
 * Lightweight commit metadata for index
 */
export interface CommitMetadata {
    hash: string;
    parent: string | null;
    timestamp: string;
    author: string;
    message: string;
}
/**
 * System state tracking
 */
export interface SystemState {
    versions: {
        bangstack: string;
        app: string;
        services?: Record<string, string>;
    };
    commit: string | null;
    previousCommit: string | null;
    deployed?: {
        dev?: string;
        staging?: string;
        prod?: string;
    };
}
/**
 * Bangstack directory structure
 */
export interface BangstackDirectory {
    root: string;
    config: string;
    commits: string;
    commitIndex: string;
    state: string;
    cache: string;
}
/**
 * Commit options
 */
export interface CommitOptions {
    author?: string;
    message: string;
    previousConfig?: any;
}
/**
 * Diff options
 */
export interface DiffOptions {
    ignoreMetadata?: boolean;
    ignoreComments?: boolean;
}
//# sourceMappingURL=types.d.ts.map