import IKeyContainer from '../keys/IKeyContainer';
import { KeyType } from '../keys/KeyTypeFactory';
/**
 * Define an item in the key store list
 */
export interface KeyStoreListItem {
    /**
     * The kid's of the key versions
     */
    kids: string[];
    /**
     * The key type of the key version
     */
    kty: KeyType;
}
/**
 * Define different types for the algorithm parameter
 */
export declare type CryptoAlgorithm = RsaPssParams | EcdsaParams | Algorithm;
/**
 * Interface defining methods and properties to
 * be implemented by specific key stores.
 */
export default interface IKeyStore {
    /**
     * Returns the key container associated with the specified
     * key reference.
     * @param keyIdentifier for which to return the key.
     * @param [publicKeyOnly] True if only the public key is needed.
     */
    get(keyReference: string, publicKeyOnly?: boolean): Promise<IKeyContainer>;
    /**
     * Returns the key associated with the specified
     * key reference.
     * @param keyIdentifier for which to return the key.
     * @param [publicKeyOnly] True if only the public key is needed.
     */
    /**
     * Saves the specified key container to the key store using
     * the key reference.
     * @param keyReference Reference for the key being saved.
     * @param key being saved to the key store.
     */
    save(keyReference: string, key: IKeyContainer | string): Promise<void>;
    /**
     * Lists all key references with their corresponding key ids
     */
    list(): Promise<{
        [name: string]: KeyStoreListItem;
    }>;
}
