export interface GoalVerificationKey<T> {
    name: string;
    publicKey: T;
    algorithm?: string;
}
/**
 * Private/public key pair to use for SDM goal signing and verification
 */
export interface GoalSigningKey<T> extends GoalVerificationKey<T> {
    privateKey: T;
    passphrase?: string;
}
/**
 * Defines the scope of which goes get signed and validated
 */
export declare enum GoalSigningScope {
    /**
     * Only verify incoming goals for fulfillment
     */
    Fulfillment = "fulfillment",
    /**
     * Verify each incoming goal into any of the SDM event handlers
     */
    All = "all"
}
/**
 * Strategy for implementing different signature algorithms
 */
export interface GoalSigningAlgorithm<T> {
    /**
     * Return the name of this algorithm
     */
    name: string;
    /**
     * Sign the provided normalized goal with the given key
     */
    sign(goal: string, key: GoalSigningKey<T>): string;
    /**
     * Verify the provided normalized goal against the signature
     */
    verify(goal: string, signature: string, key: GoalVerificationKey<T>): boolean;
}
export interface GoalSigningConfiguration {
    /**
     * Enable goal signature verification on this SDM.
     */
    enabled: boolean;
    /**
     * Scope for goal signing:
     *
     * Fulfillment: only verify goals before fulfillment
     * All: verify goals during all phases of a goal set execution
     */
    scope: GoalSigningScope;
    /**
     * Public/Private key pair to use for goal signing.
     * The public key will also be used to verify incoming goals.
     */
    signingKey?: GoalSigningKey<any>;
    /**
     * Public keys to verify incoming goals
     */
    verificationKeys?: GoalVerificationKey<any> | Array<GoalVerificationKey<any>>;
    /**
     * Algorithms to use for signing and verification
     *
     * Default RSA-SHA512 algorithm will always be available
     */
    algorithms?: GoalSigningAlgorithm<any> | Array<GoalSigningAlgorithm<any>>;
}
//# sourceMappingURL=SigningKeys.d.ts.map