import { X509CertificateExtensionsOptions, X509CertificateIssuerAndSubjectOptions, X509CertificateRevocationListExtensionsOptions } from "../X509ServiceOptions.mjs";
import { PublicJwk } from "../../kms/jwk/PublicJwk.mjs";
import "../../kms/index.mjs";
import { AuthorityKeyIdentifierExtension, BasicConstraintsExtension, CRLDistributionPointsExtension, ExtendedKeyUsageExtension, Extension, IssuerAlternativeNameExtension, KeyUsagesExtension, SubjectAlternativeNameExtension, SubjectKeyIdentifierExtension } from "@peculiar/x509";
//#region src/modules/x509/utils/extensions.d.ts
/**
 * X.509 extension OIDs defined in RFC 5280
 */
export declare enum X509ExtensionIdentifier {
  /** Basic Constraints (RFC 5280 Section 4.2.1.9) */
  BasicConstraints = "2.5.29.19",
  /** Key Usage (RFC 5280 Section 4.2.1.3) */
  KeyUsage = "2.5.29.15",
  /** Extended Key Usage (RFC 5280 Section 4.2.1.12) */
  ExtendedKeyUsage = "2.5.29.37",
  /** Subject Alternative Name (RFC 5280 Section 4.2.1.6) */
  SubjectAltName = "2.5.29.17",
  /** Issuer Alternative Name (RFC 5280 Section 4.2.1.7) */
  IssuerAltName = "2.5.29.18",
  /** Subject Key Identifier (RFC 5280 Section 4.2.1.2) */
  SubjectKeyIdentifier = "2.5.29.14",
  /** Authority Key Identifier (RFC 5280 Section 4.2.1.1) */
  AuthorityKeyIdentifier = "2.5.29.35",
  /** CRL Distribution Points (RFC 5280 Section 4.2.1.13) */
  CrlDistributionPoints = "2.5.29.31",
  /** Name Constraints (RFC 5280 Section 4.2.1.10) */
  NameConstraints = "2.5.29.30",
  /** Policy Constraints (RFC 5280 Section 4.2.1.11) */
  PolicyConstraints = "2.5.29.36"
}
/**
 * X.509 CRL extension OIDs defined in RFC 5280 Section 5.2.
 *
 * These are the extensions that may appear on a CRL itself. They are distinct from the per-entry
 * CRL extensions of RFC 5280 Section 5.3 (such as `reasonCode`, `invalidityDate` and
 * `certificateIssuer`), which are carried on individual revoked entries rather than the CRL.
 */
export declare enum X509CrlExtensionIdentifier {
  /** Authority Key Identifier (RFC 5280 Section 5.2.1) */
  AuthorityKeyIdentifier = "2.5.29.35",
  /** Issuer Alternative Name (RFC 5280 Section 5.2.2) */
  IssuerAltName = "2.5.29.18",
  /** CRL Number (RFC 5280 Section 5.2.3) */
  CrlNumber = "2.5.29.20",
  /** Delta CRL Indicator (RFC 5280 Section 5.2.4) */
  DeltaCrlIndicator = "2.5.29.27",
  /** Issuing Distribution Point (RFC 5280 Section 5.2.5) */
  IssuingDistributionPoint = "2.5.29.28",
  /** Freshest CRL, a.k.a. Delta CRL Distribution Point (RFC 5280 Section 5.2.6) */
  FreshestCrl = "2.5.29.46",
  /** Authority Information Access (RFC 5280 Section 5.2.7) */
  AuthorityInformationAccess = "1.3.6.1.5.5.7.1.1"
}
export declare const createSubjectKeyIdentifierExtension: (options: X509CertificateExtensionsOptions["subjectKeyIdentifier"], additionalOptions: {
  publicJwk: PublicJwk;
}) => SubjectKeyIdentifierExtension | undefined;
export declare const createKeyUsagesExtension: (options: X509CertificateExtensionsOptions["keyUsage"]) => KeyUsagesExtension | undefined;
export declare const createExtendedKeyUsagesExtension: (options: X509CertificateExtensionsOptions["extendedKeyUsage"]) => ExtendedKeyUsageExtension | undefined;
export declare const createAuthorityKeyIdentifierExtension: (options: X509CertificateExtensionsOptions["authorityKeyIdentifier"], additionalOptions: {
  publicJwk: PublicJwk;
}) => AuthorityKeyIdentifierExtension | undefined;
export declare const createIssuerAlternativeNameExtension: (options: X509CertificateExtensionsOptions["issuerAlternativeName"]) => IssuerAlternativeNameExtension | undefined;
export declare const createSubjectAlternativeNameExtension: (options: X509CertificateExtensionsOptions["subjectAlternativeName"]) => SubjectAlternativeNameExtension | undefined;
export declare const createBasicConstraintsExtension: (options: X509CertificateExtensionsOptions["basicConstraints"]) => BasicConstraintsExtension | undefined;
export declare const createCrlDistributionPointsExtension: (options: X509CertificateExtensionsOptions["crlDistributionPoints"]) => CRLDistributionPointsExtension | undefined;
export declare const createCrlNumberExtension: (options: X509CertificateRevocationListExtensionsOptions["crlNumber"]) => Extension | undefined;
export declare const createDeltaCrlIndicatorExtension: (options: X509CertificateRevocationListExtensionsOptions["deltaCrlIndicator"]) => Extension | undefined;
export declare const createIssuingDistributionPointExtension: (options: X509CertificateRevocationListExtensionsOptions["issuingDistributionPoint"]) => Extension | undefined;
/**
 * Build the `certificateIssuer` CRL entry extension (RFC 5280 §5.3.3) used by indirect CRLs to
 * indicate the issuer of the revoked certificate. This extension is always critical.
 */
export declare const createCrlEntryCertificateIssuerExtension: (issuer: string | X509CertificateIssuerAndSubjectOptions) => Extension;
//#endregion
//# sourceMappingURL=extensions.d.mts.map