import { Temporal } from "@js-temporal/polyfill";
import { URLPattern } from "urlpattern-polyfill";
import { DocumentLoader, DocumentLoaderFactoryOptions } from "./docloader-CxWcuWqQ.js";
import { HttpMessageSignaturesSpecDeterminer } from "./http-DqSNLFNY.js";
import { TracerProvider } from "@opentelemetry/api";

//#region src/runtime/authdocloader.d.ts
/**
 * Options for {@link getAuthenticatedDocumentLoader}.
 * @see {@link getAuthenticatedDocumentLoader}
 * @since 1.3.0
 */
interface GetAuthenticatedDocumentLoaderOptions extends DocumentLoaderFactoryOptions {
  /**
   * An optional spec determiner for HTTP Message Signatures.
   * It determines the spec to use for signing requests.
   * It is used for double-knocking
   * (see <https://swicg.github.io/activitypub-http-signature/#how-to-upgrade-supported-versions>).
   * @since 1.6.0
   */
  specDeterminer?: HttpMessageSignaturesSpecDeterminer;
  /**
   * The OpenTelemetry tracer provider.  If omitted, the global tracer provider
   * is used.
   * @since 1.6.0
   */
  tracerProvider?: TracerProvider;
}
/**
 * Gets an authenticated {@link DocumentLoader} for the given identity.
 * Note that an authenticated document loader intentionally does not cache
 * the fetched documents.
 * @param identity The identity to get the document loader for.
 *                 The actor's key pair.
 * @param options The options for the document loader.
 * @returns The authenticated document loader.
 * @throws {TypeError} If the key is invalid or unsupported.
 * @since 0.4.0
 */
declare function getAuthenticatedDocumentLoader(identity: {
  keyId: URL;
  privateKey: CryptoKey;
}, {
  allowPrivateAddress,
  userAgent,
  specDeterminer,
  tracerProvider
}?: GetAuthenticatedDocumentLoaderOptions): DocumentLoader;
//#endregion
//#region src/runtime/key.d.ts
/**
 * Imports a PEM-SPKI formatted public key.
 * @param pem The PEM-SPKI formatted public key.
 * @returns The imported public key.
 * @throws {TypeError} If the key is invalid or unsupported.
 * @since 0.5.0
 */
declare function importSpki(pem: string): Promise<CryptoKey>;
/**
 * Exports a public key in PEM-SPKI format.
 * @param key The public key to export.
 * @returns The exported public key in PEM-SPKI format.
 * @throws {TypeError} If the key is invalid or unsupported.
 * @since 0.5.0
 */
declare function exportSpki(key: CryptoKey): Promise<string>;
/**
 * Imports a PEM-PKCS#1 formatted public key.
 * @param pem The PEM-PKCS#1 formatted public key.
 * @returns The imported public key.
 * @throws {TypeError} If the key is invalid or unsupported.
 * @since 1.5.0
 */
declare function importPkcs1(pem: string): Promise<CryptoKey>;
/**
 * Imports a PEM formatted public key (SPKI or PKCS#1).
 * @param pem The PEM formatted public key to import (SPKI or PKCS#1).
 * @returns The imported public key.
 * @throws {TypeError} If the key is invalid or unsupported.
 * @since 1.5.0
 */
declare function importPem(pem: string): Promise<CryptoKey>;
/**
 * Imports a [Multibase]-encoded public key.
 *
 * [Multibase]: https://www.w3.org/TR/vc-data-integrity/#multibase-0
 * @param key The Multibase-encoded public key.
 * @returns The imported public key.
 * @throws {TypeError} If the key is invalid or unsupported.
 * @since 0.10.0
 */
declare function importMultibaseKey(key: string): Promise<CryptoKey>;
/**
 * Exports a public key in [Multibase] format.
 *
 * [Multibase]: https://www.w3.org/TR/vc-data-integrity/#multibase-0
 * @param key The public key to export.
 * @returns The exported public key in Multibase format.
 * @throws {TypeError} If the key is invalid or unsupported.
 * @since 0.10.0
 */
declare function exportMultibaseKey(key: CryptoKey): Promise<string>;
//#endregion
export { GetAuthenticatedDocumentLoaderOptions, exportMultibaseKey, exportSpki, getAuthenticatedDocumentLoader, importMultibaseKey, importPem, importPkcs1, importSpki };