/**
 * Type utilities for Memory Bank MCP
 *
 * This file contains utility types that can be used throughout the codebase.
 */
import { ProgressDetails, Decision, ActiveContext } from './progress.js';
import { MemoryBankStatus } from './index.js';
/**
 * Makes all properties of T optional
 */
export type Optional<T> = Partial<T>;
/**
 * Makes all properties of T required
 */
export type Required<T> = {
    [P in keyof T]-?: T[P];
};
/**
 * Makes all properties of T read-only
 */
export type Readonly<T> = {
    readonly [P in keyof T]: T[P];
};
/**
 * Picks specific properties from T
 */
export type Pick<T, K extends keyof T> = {
    [P in K]: T[P];
};
/**
 * Omits specific properties from T
 */
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
/**
 * Utility types for MemoryBankStatus
 */
/** Partial version of MemoryBankStatus */
export type PartialMemoryBankStatus = Optional<MemoryBankStatus>;
/** Required version of MemoryBankStatus */
export type RequiredMemoryBankStatus = Required<MemoryBankStatus>;
/** Read-only version of MemoryBankStatus */
export type ReadonlyMemoryBankStatus = Readonly<MemoryBankStatus>;
/** Memory Bank status summary with only essential fields */
export type MemoryBankStatusSummary = Pick<MemoryBankStatus, 'path' | 'isComplete' | 'language'>;
/**
 * Utility types for ProgressDetails
 */
export declare namespace ProgressTypes {
    /** Partial version of ProgressDetails */
    type PartialProgressDetails = Optional<ProgressDetails>;
    /** Required version of ProgressDetails */
    type RequiredProgressDetails = Required<ProgressDetails>;
    /** Read-only version of ProgressDetails */
    type ReadonlyProgressDetails = Readonly<ProgressDetails>;
}
/**
 * Utility types for Decision
 */
export declare namespace DecisionTypes {
    /** Partial version of Decision */
    type PartialDecision = Optional<Decision>;
    /** Required version of Decision */
    type RequiredDecision = Required<Decision>;
    /** Read-only version of Decision */
    type ReadonlyDecision = Readonly<Decision>;
    /** Decision summary with only essential fields */
    type DecisionSummary = Pick<Decision, 'title' | 'decision'>;
}
/**
 * Utility types for ActiveContext
 */
export declare namespace ActiveContextTypes {
    /** Partial version of ActiveContext */
    type PartialActiveContext = Optional<ActiveContext>;
    /** Required version of ActiveContext */
    type RequiredActiveContext = Required<ActiveContext>;
    /** Read-only version of ActiveContext */
    type ReadonlyActiveContext = Readonly<ActiveContext>;
}
