import type { CapabilityRef, CapabilityRegistry, CapabilitySpec } from '../capabilities';
import type { DataViewRegistry, DataViewSpec } from '../data-views';
import type { ExperimentRef, ExperimentRegistry, ExperimentSpec } from '../experiments/spec';
import type { FeatureModuleSpec, FeatureRef, FeatureRegistry } from '../features';
import type { AppKnowledgeBinding } from '../knowledge/binding';
import type { KnowledgeSourceConfig } from '../knowledge/source';
import type { KnowledgeSpaceRegistry, KnowledgeSpaceSpec } from '../knowledge/spec';
import type { PolicyRegistry } from '../policy/registry';
import type { PolicyRef, PolicySpec } from '../policy/spec';
import type { TelemetryRegistry, TelemetrySpec } from '../telemetry/spec';
import type { ThemeRegistry, ThemeSpec } from '../themes';
import type { Locale, TranslationEntry } from '../translations/catalog';
import type { WorkflowRegistry, WorkflowSpec } from '../workflow/spec';
import type { ResolvedBranding } from './branding';
import type { AppConfigIntegrationConnection, AppConfigIntegrationRegistry, AppConfigIntegrationSpec, AppIntegrationBinding } from './integrations';
import type { AppBlueprintSpec, AppIntegrationSlot, AppRouteConfig, AppThemeBinding, FeatureFlagState, SpecPointer, TelemetryBinding, TenantAppConfig, TranslationCatalogPointer } from './spec';
export interface ResolvedIntegration {
    slot: AppIntegrationSlot;
    binding: AppIntegrationBinding;
    connection: AppConfigIntegrationConnection;
    spec: AppConfigIntegrationSpec;
}
export interface ResolvedKnowledge {
    binding: AppKnowledgeBinding;
    space: KnowledgeSpaceSpec;
    sources: KnowledgeSourceConfig[];
}
export interface ResolvedTranslation {
    defaultLocale: Locale;
    supportedLocales: Locale[];
    blueprintCatalog?: TranslationCatalogPointer;
    tenantOverrides: TranslationEntry[];
}
export interface ResolvedAppConfig {
    appId: string;
    tenantId: string;
    environment?: string;
    blueprintName: string;
    blueprintVersion: string;
    configVersion: string;
    capabilities: {
        enabled: CapabilityRef[];
        disabled: CapabilityRef[];
    };
    features: {
        include: FeatureRef[];
        exclude: FeatureRef[];
    };
    dataViews: Record<string, SpecPointer>;
    workflows: Record<string, SpecPointer>;
    jobs: Record<string, SpecPointer>;
    policies: PolicyRef[];
    theme?: AppThemeBinding;
    telemetry?: TelemetryBinding;
    experiments: {
        catalog: ExperimentRef[];
        active: ExperimentRef[];
        paused: ExperimentRef[];
    };
    featureFlags: FeatureFlagState[];
    routes: AppRouteConfig[];
    integrations: ResolvedIntegration[];
    knowledge: ResolvedKnowledge[];
    translation: ResolvedTranslation;
    branding: ResolvedBranding;
    notes?: string;
}
export interface AppComposition {
    resolved: ResolvedAppConfig;
    capabilities: CapabilitySpec[];
    features: FeatureModuleSpec[];
    dataViews: Record<string, DataViewSpec>;
    workflows: Record<string, WorkflowSpec>;
    jobs: Record<string, import('../jobs/spec').JobSpec>;
    policies: PolicySpec[];
    theme?: ThemeSpec;
    themeFallbacks: ThemeSpec[];
    telemetry?: TelemetrySpec;
    experiments: {
        active: ExperimentSpec[];
        paused: ExperimentSpec[];
    };
    integrations: ResolvedIntegration[];
    knowledge: ResolvedKnowledge[];
    missing: MissingReference[];
}
export interface MissingReference {
    type: 'capability' | 'feature' | 'dataView' | 'workflow' | 'job' | 'policy' | 'theme' | 'telemetry' | 'experiment' | 'integrationConnection' | 'integrationSpec' | 'integrationSlot' | 'knowledgeSpace' | 'knowledgeSource';
    identifier: string;
}
export interface ResolveAppConfigDeps {
    integrationSpecs?: AppConfigIntegrationRegistry;
    integrationConnections?: AppConfigIntegrationConnection[];
    knowledgeSpaces?: KnowledgeSpaceRegistry;
    knowledgeSources?: KnowledgeSourceConfig[];
}
export interface AppCompositionDeps extends ResolveAppConfigDeps {
    capabilities?: CapabilityRegistry;
    features?: FeatureRegistry;
    dataViews?: DataViewRegistry;
    workflows?: WorkflowRegistry;
    jobs?: import('../jobs/spec').JobSpecRegistry;
    policies?: PolicyRegistry;
    themes?: ThemeRegistry;
    telemetry?: TelemetryRegistry;
    experiments?: ExperimentRegistry;
}
export interface ComposeOptions {
    strict?: boolean;
}
export declare function resolveAppConfig(blueprint: AppBlueprintSpec, tenant: TenantAppConfig, deps?: ResolveAppConfigDeps): ResolvedAppConfig;
export declare function composeAppConfig(blueprint: AppBlueprintSpec, tenant: TenantAppConfig, deps: AppCompositionDeps, options?: ComposeOptions): AppComposition;
