import { FP } from "./Aspect";
/**
 * An ideal for a given fingerprint. This may be a concrete
 * fingerprint instance, or an EliminationIdeal, which means that
 * the desired state is for all occurrences of this fingerprint to go away.
 */
export interface Ideal {
    /**
     * Reason for the choice
     */
    readonly reason: string;
    /**
     * URL, if any, associated with the ideal fingerprint instance.
     */
    readonly url?: string;
}
/**
 * An ideal for a fingerprint with a given name.
 */
export interface ConcreteIdeal extends Ideal {
    /**
     * The ideal fingerprint instance.
     */
    readonly ideal: FP;
}
export declare function isConcreteIdeal(ideal: Ideal): ideal is ConcreteIdeal;
/**
 * Ideal that says to eliminate fingerprints keyed this way
 */
export interface EliminationIdeal extends Ideal {
    readonly type: string;
    readonly name: string;
}
/**
 * Return the targeting of this ideal
 * @param {Ideal} ideal
 */
export declare function idealCoordinates(ideal: Ideal): {
    type?: string;
    name: string;
};
