import { ServiceEntry, IopSecrets } from '../config/types';
export interface ServiceFingerprint {
    type: 'built' | 'external';
    runtimeHash: string;
    localImageHash?: string;
    serverImageHash?: string;
    imageReference?: string;
}
export interface RedeploymentDecision {
    shouldRedeploy: boolean;
    reason: string;
    priority: 'critical' | 'normal' | 'optional';
    changeType: 'image' | 'runtime' | 'first-deployment';
    needsImageTransfer: boolean;
}
/**
 * Creates a runtime hash combining configuration and secrets
 * This determines if containers need to be recreated (but not if image needs transfer)
 */
export declare function createRuntimeHash(serviceEntry: ServiceEntry, secrets: IopSecrets): string;
/**
 * Gets the Docker image hash for a locally built image
 */
export declare function getLocalImageHash(imageName: string): Promise<string | null>;
/**
 * Determines if a service is built locally or uses external image
 */
export declare function isBuiltService(serviceEntry: ServiceEntry): boolean;
/**
 * Creates a service fingerprint based on service type
 */
export declare function createServiceFingerprint(serviceEntry: ServiceEntry, secrets: IopSecrets, projectName?: string): Promise<ServiceFingerprint>;
/**
 * Determines if a service should be redeployed based on fingerprint comparison
 */
export declare function shouldRedeploy(current: ServiceFingerprint | null, desired: ServiceFingerprint): RedeploymentDecision;
