import type { DetectorStrategyDefinition } from './detector-strategy.interface';
export type StrategyDependencyKind = 'indicator' | 'plugin' | 'pattern';
export interface StrategyDependencyReference {
    kind: StrategyDependencyKind;
    id: string;
}
export type StrategyParameterType = 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array';
export interface StrategyParameterSchemaField {
    type: StrategyParameterType;
    required?: boolean;
    min?: number;
    max?: number;
    enum?: Array<string | number | boolean>;
}
export interface StrategyParameterSchema {
    fields: Record<string, StrategyParameterSchemaField>;
}
export interface StrategySynthesisConstraints {
    requireExperimentTag?: boolean;
    allowedDetectorTypes?: string[];
    allowedIndicators?: string[];
    allowedPlugins?: string[];
    allowedPatterns?: string[];
    allowDuplicateStrategyVersion?: boolean;
    maxParameters?: number;
}
export type StrategyMutationType = 'parameter_mutation' | 'indicator_toggle' | 'timeframe_mutation' | 'risk_adjustment' | 'confirmation_mutation' | 'copy';
export interface StrategyLineageMetadata {
    family: string;
    familyId?: string;
    familyType?: string;
    rootStrategyId?: string;
    rootGenomeId?: string;
    branchId?: string;
    parentStrategyId?: string;
    parentDnaId?: string;
    generation: number;
    mutationType: StrategyMutationType;
    mutationSeed: string;
    mutationOrdinal: number;
    mutationOperatorId: string;
    policyVersion: string;
}
export interface StrategyDNA {
    dnaId: string;
    family: string;
    familyId?: string;
    familyType?: string;
    rootStrategyId?: string;
    rootGenomeId?: string;
    branchId?: string;
    entrySignal: string;
    confirmations: string[];
    indicators: Record<string, unknown>;
    timeframe: {
        primary: string;
        confirmations?: string[];
    };
    riskParameters: Record<string, unknown>;
    featureFlags: Record<string, boolean>;
    policyVersion: string;
    mutationSeed: string;
    lineage: StrategyLineageMetadata;
}
export interface StrategySynthesisRequest {
    strategyId: string;
    strategyFamily: string;
    strategyVersion: string;
    detectorType: string;
    symbol?: string;
    parameters: Record<string, unknown>;
    parameterSchema?: StrategyParameterSchema;
    indicatorDependencies: string[];
    pluginDependencies: string[];
    patternDependencies: string[];
    experimentTag?: string;
    synthesisReason: string;
    sourceContext?: Record<string, unknown>;
    strategyDna?: StrategyDNA;
    lineage?: StrategyLineageMetadata;
    constraints?: StrategySynthesisConstraints;
}
export interface StrategySynthesisCandidate {
    strategyId: string;
    strategyFamily: string;
    strategyVersion: string;
    detectorType: string;
    symbol?: string;
    parameters: Record<string, unknown>;
    parameterSchema?: StrategyParameterSchema;
    indicatorDependencies: string[];
    pluginDependencies: string[];
    patternDependencies: string[];
    experimentTag?: string;
    createdBy: 'advisor';
    synthesisReason: string;
    sourceContext?: Record<string, unknown>;
    strategyDna?: StrategyDNA;
    lineage?: StrategyLineageMetadata;
    synthesisHash?: string;
    createdAt: string;
    updatedAt?: string;
    status: 'REJECTED' | 'REGISTERED' | 'CANDIDATE' | 'EXPERIMENT_READY' | 'PROMOTED_TO_EXPERIMENT' | 'ARCHIVED';
    rejectionReasons?: string[];
    detectorDefinition?: DetectorStrategyDefinition;
    runtimeRecovery?: StrategyRuntimeRecoveryPayload;
}
export interface StrategyRuntimeRecoveryPayload {
    schemaVersion: 1;
    persistedAt: string;
    definition: DetectorStrategyDefinition;
}
//# sourceMappingURL=advisor-strategy-synthesis.interface.d.ts.map