import { KmsJwkPrivate } from "../jwk/knownJwk.js";
import { KnownJwaSignatureAlgorithm } from "../jwk/jwa.js";
import { KmsCreateKeyType } from "./KmsCreateKeyOptions.js";
import { KmsEncryptDataEncryption } from "./KmsEncryptOptions.js";
import { KmsDecryptDataDecryption } from "./KmsDecryptOptions.js";
import { KmsKeyAgreementEncryptOptions } from "./KmsKeyAgreementEncryptOptions.js";
import { KmsKeyAgreementDecryptOptions } from "./KmsKeyAgreementDecryptOptions.js";

//#region src/modules/kms/options/KmsOperation.d.ts
type KmsOperationCreateKey = {
  operation: 'createKey';
  type: KmsCreateKeyType;
};
type KmsOperationImportKey = {
  operation: 'importKey';
  privateJwk: KmsJwkPrivate;
};
type KmsOperationDeleteKey = {
  operation: 'deleteKey';
};
type KmsOperationSign = {
  operation: 'sign';
  algorithm: KnownJwaSignatureAlgorithm;
};
type KmsOperationVerify = {
  operation: 'verify';
  algorithm: KnownJwaSignatureAlgorithm;
};
type KmsOperationEncrypt = {
  operation: 'encrypt';
  encryption: KmsEncryptDataEncryption;
  keyAgreement?: KmsKeyAgreementEncryptOptions;
};
type KmsOperationDecrypt = {
  operation: 'decrypt';
  decryption: KmsDecryptDataDecryption;
  keyAgreement?: KmsKeyAgreementDecryptOptions;
};
type KmsOperationRandomBytes = {
  operation: 'randomBytes';
};
type KmsOperation = KmsOperationCreateKey | KmsOperationImportKey | KmsOperationDeleteKey | KmsOperationSign | KmsOperationVerify | KmsOperationEncrypt | KmsOperationDecrypt | KmsOperationRandomBytes;
declare function getKmsOperationHumanDescription(operation: KmsOperation): string;
//#endregion
export { KmsOperation, KmsOperationCreateKey, KmsOperationDecrypt, KmsOperationDeleteKey, KmsOperationEncrypt, KmsOperationImportKey, KmsOperationSign, KmsOperationVerify, getKmsOperationHumanDescription };
//# sourceMappingURL=KmsOperation.d.ts.map