import { CredoWebCrypto } from "../../crypto/webcrypto/CredoWebCrypto.mjs";
import "../../crypto/webcrypto/index.mjs";
import { X509CreateCertificateSigningRequestOptions } from "./X509ServiceOptions.mjs";
import { X509ExtendedKeyUsage, X509KeyUsage } from "./X509Certificate.mjs";
import { PublicJwk } from "../kms/jwk/PublicJwk.mjs";
import "../kms/index.mjs";
import * as x509 from "@peculiar/x509";

//#region src/modules/x509/CertificateSigningRequest.d.ts
type CertificateSigningRequestOptions = {
  publicJwk: PublicJwk;
  certificateRequest: x509.Pkcs10CertificateRequest;
};
declare class CertificateSigningRequest {
  publicJwk: PublicJwk;
  private certificateRequest;
  private constructor();
  set keyId(keyId: string);
  get keyId(): string;
  get hasKeyId(): boolean;
  static fromRawCertificateRequest(rawCertificateRequest: Uint8Array): CertificateSigningRequest;
  static fromEncodedCertificateRequest(encodedCertificateRequest: string): CertificateSigningRequest;
  private static parseCertificateRequest;
  private getMatchingExtensions;
  get rawCertificateRequest(): Uint8Array<ArrayBuffer>;
  get subjectAlternativeNames(): {
    type: x509.GeneralNameType;
    value: string;
  }[];
  get sanDnsNames(): string[];
  get sanUriNames(): string[];
  get subjectKeyIdentifier(): string | undefined;
  get keyUsage(): X509KeyUsage[];
  get extendedKeyUsage(): X509ExtendedKeyUsage[];
  isExtensionCritical(id: string): boolean;
  static create(options: X509CreateCertificateSigningRequestOptions, webCrypto: CredoWebCrypto): Promise<CertificateSigningRequest>;
  get subject(): string;
  get subjectName(): string;
  verify(webCrypto: CredoWebCrypto): Promise<void>;
  /**
   * Get the data elements of the certificate signing request
   */
  get data(): {
    subjectName: string;
    subject: string;
    pem: string;
  };
  getSubjectNameField(field: string): string[];
  /**
   * @param format the format to export to, defaults to `pem`
   */
  toString(format?: 'asn' | 'pem' | 'hex' | 'base64' | 'text' | 'base64url'): string;
  equal(certificateRequest: CertificateSigningRequest): boolean;
}
//#endregion
export { CertificateSigningRequest, CertificateSigningRequestOptions };
//# sourceMappingURL=CertificateSigningRequest.d.mts.map