@wireapp/core-crypto
Version:
CoreCrypto bindings for the Web
1,549 lines (1,548 loc) • 92.7 kB
TypeScript
// Generated by dts-bundle-generator v9.5.1
/* tslint:disable */
/* eslint-disable */
/**
* Get an instance of the default ciphersuite.
*/
export function ciphersuiteDefault(): Ciphersuite;
/**
* Construct a ciphersuite enum instance from its discriminant.
*/
export function ciphersuiteFromU16(discriminant: number): Ciphersuite;
/**
* Open or create a [Database].
*/
export function openDatabase(name: string, key: DatabaseKey): Promise<Database>;
/**
* Updates the key of the CoreCrypto database.
* To be used only once, when moving from CoreCrypto <= 5.x to CoreCrypto 6.x.
*/
export function migrateDatabaseKeyTypeToBytes(path: string, old_key: string, new_key: DatabaseKey): Promise<void>;
/**
* Updates the key of the CoreCrypto database.
*/
export function updateDatabaseKey(name: string, old_key: DatabaseKey, new_key: DatabaseKey): Promise<void>;
/**
* MLS ciphersuites.
*/
export enum Ciphersuite {
/**
* DH KEM x25519 | AES-GCM 128 | SHA2-256 | Ed25519
*/
MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519 = 1,
/**
* DH KEM P256 | AES-GCM 128 | SHA2-256 | EcDSA P256
*/
MLS_128_DHKEMP256_AES128GCM_SHA256_P256 = 2,
/**
* DH KEM x25519 | Chacha20Poly1305 | SHA2-256 | Ed25519
*/
MLS_128_DHKEMX25519_CHACHA20POLY1305_SHA256_Ed25519 = 3,
/**
* DH KEM x448 | AES-GCM 256 | SHA2-512 | Ed448
*/
MLS_256_DHKEMX448_AES256GCM_SHA512_Ed448 = 4,
/**
* DH KEM P521 | AES-GCM 256 | SHA2-512 | EcDSA P521
*/
MLS_256_DHKEMP521_AES256GCM_SHA512_P521 = 5,
/**
* DH KEM x448 | Chacha20Poly1305 | SHA2-512 | Ed448
*/
MLS_256_DHKEMX448_CHACHA20POLY1305_SHA512_Ed448 = 6,
/**
* DH KEM P384 | AES-GCM 256 | SHA2-384 | EcDSA P384
*/
MLS_256_DHKEMP384_AES256GCM_SHA384_P384 = 7
}
/**
* Type of Credential
*/
export enum CredentialType {
/**
* Basic credential i.e. a KeyPair
*/
Basic = 1,
/**
* A x509 certificate generally obtained through e2e identity enrollment process
*/
X509 = 2
}
/**
* Indicates the standalone status of a device Credential in a MLS group at a moment T.
*
* This does not represent the states where a device is not using MLS or is not using end-to-end identity
*/
export enum DeviceStatus {
/**
* All is fine
*/
Valid = 1,
/**
* The Credential's certificate is expired
*/
Expired = 2,
/**
* The Credential's certificate is revoked (not implemented yet)
*/
Revoked = 3
}
declare enum E2eiConversationState {
/**
* All clients have a valid E2EI certificate
*/
Verified = 1,
/**
* Some clients are either still Basic or their certificate is expired
*/
NotVerified = 2,
/**
* All clients are still Basic. If all client have expired certificates, [E2eiConversationState::NotVerified] is returned.
*/
NotEnabled = 3
}
declare enum MlsGroupInfoEncryptionType {
/**
* Unencrypted `GroupInfo`
*/
Plaintext = 1,
/**
* `GroupInfo` encrypted in a JWE
*/
JweEncrypted = 2
}
declare enum MlsRatchetTreeType {
/**
* Plain old and complete `GroupInfo`
*/
Full = 1,
/**
* Contains `GroupInfo` changes since previous epoch (not yet implemented)
* (see [draft](https://github.com/rohan-wire/ietf-drafts/blob/main/mahy-mls-ratchet-tree-delta/draft-mahy-mls-ratchet-tree-delta.md))
*/
Delta = 2,
ByRef = 3
}
/**
* See [core_crypto::prelude::MlsWirePolicy]
*/
export enum WirePolicy {
/**
* Handshake messages are never encrypted
*/
Plaintext = 1,
/**
* Handshake messages are always encrypted
*/
Ciphertext = 2
}
/**
* For creating a challenge.
*
* - See <https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1>
* - See [core_crypto::e2e_identity::types::E2eiAcmeChallenge]
*/
export class AcmeChallenge {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* Contains raw JSON data of this challenge. This is parsed by the underlying Rust library hence should not be accessed
*/
readonly delegate: Uint8Array;
/**
* URL of this challenge
*/
readonly url: string;
/**
* Non-standard, Wire specific claim. Indicates the consumer from where it should get the challenge proof.
* Either from wire-server "/access-token" endpoint in case of a DPoP challenge, or from an OAuth token endpoint for an OIDC challenge
*/
readonly target: string;
}
declare class AcmeDirectory {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* URL for fetching a new nonce. Use this only for creating a new account.
*/
readonly newNonce: string;
/**
* URL for creating a new account.
*/
readonly newAccount: string;
/**
* URL for creating a new order.
*/
readonly newOrder: string;
/**
* Revocation URL
*/
readonly revokeCert: string;
}
declare class BufferedDecryptedMessage {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* Decrypted plaintext
*/
readonly message: Uint8Array | undefined;
/**
* False if processing this message caused the client to be removed from the group, i.e. due to a Remove commit
*/
readonly isActive: boolean;
/**
* Commit delay in seconds.
*
* When set, clients must delay this long before processing a commit.
* This reduces load on the backend, which otherwise would receive epoch change notifications from all clients simultaneously.
*/
readonly commitDelay: bigint | undefined;
/**
* [ClientId] of the sender of the message being decrypted. Only present for application messages.
*/
readonly senderClientId: ClientId | undefined;
/**
* true when the decrypted message resulted in an epoch change i.e. it was a commit
*
* Deprecated: this member will be removed in the future. Prefer using the `EpochObserver` interface.
*/
readonly hasEpochChanged: boolean;
/**
* Identity claims present in the sender credential
*/
readonly identity: WireIdentity;
/**
* New CRL distribution points that appeared by the introduction of a new credential
*/
readonly crlNewDistributionPoints: string[] | undefined;
}
/**
* Metadata describing the conditions of the build of this software.
*/
export class BuildMetadata {
private constructor();
/**
** Return copy of self without private attributes.
*/
toJSON(): Object;
/**
* Return stringified version of self.
*/
toString(): string;
free(): void;
[Symbol.dispose](): void;
/**
* Build Timestamp
*/
readonly timestamp: string;
/**
* Whether this build was in Debug mode (true) or Release mode (false)
*/
readonly cargoDebug: string;
/**
* Features enabled for this build
*/
readonly cargoFeatures: string;
/**
* Optimization level
*/
readonly optLevel: string;
/**
* Build target triple
*/
readonly targetTriple: string;
/**
* Git branch
*/
readonly gitBranch: string;
/**
* Output of `git describe`
*/
readonly gitDescribe: string;
/**
* Hash of current git commit
*/
readonly gitSha: string;
/**
* `true` when the source code differed from the commit at the most recent git hash
*/
readonly gitDirty: string;
}
/**
* A Client identifier
*
* A unique identifier for clients. A client is an identifier for each App a user is using, such as desktop,
* mobile, etc. Users can have multiple clients.
* More information [here](https://messaginglayersecurity.rocks/mls-architecture/draft-ietf-mls-architecture.html#name-group-members-and-clients)
*/
export class ClientId {
free(): void;
[Symbol.dispose](): void;
/**
* Copy the id into a new byte array.
*/
copyBytes(): Uint8Array;
/**
* Instantiate a client id from a byte array.
*/
constructor(bytes: Uint8Array);
}
declare class ConversationConfiguration {
free(): void;
[Symbol.dispose](): void;
/**
* Construct a `ConversationConfiguration` from its parts.
*/
constructor(ciphersuite?: Ciphersuite | null, external_senders?: ExternalSenderKey[] | null, key_rotation_span?: number | null, wire_policy?: WirePolicy | null);
/**
* The ciphersuite used in the group
*/
readonly ciphersuite: Ciphersuite | undefined;
/**
* Delivery service public signature key and credential
*/
readonly externalSenders: ExternalSenderKey[];
/**
* Implementation specific configuration
*/
readonly custom: CustomConfiguration;
}
/**
* r" A unique identifier for a single conversation.
* r"
* r" The backend provides an opaque string identifying a new conversation.
* r" Construct an instance of this newtype to pass that identifier to Rust.
*/
export class ConversationId {
free(): void;
[Symbol.dispose](): void;
/**
* Get the raw bytes from this type, transferring data from Rust to the client layer.
*
* This does not consume the newtype, instead copying the internal data across the FFI boundary.
*/
copyBytes(): Uint8Array;
/**
* Construct a new instance, transferring data from the client layer to Rust.
*/
constructor(bytes: Uint8Array);
}
declare class CoreCryptoContext {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* See [core_crypto::prelude::Session::random_bytes].
*/
random_bytes(len: number): Promise<Uint8Array>;
/**
* See [core_crypto::transaction_context::TransactionContext::get_data]
*/
get_data(): Promise<Uint8Array | undefined>;
/**
* See [core_crypto::transaction_context::TransactionContext::set_data]
*/
set_data(data: Uint8Array): Promise<void>;
/**
* See [core_crypto::mls::conversation::Conversation::get_client_ids]
*/
get_client_ids(conversation_id: ConversationId): Promise<ClientId[]>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::decrypt_message]
*/
decrypt_message(conversation_id: ConversationId, payload: Uint8Array): Promise<DecryptedMessage>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::encrypt_message]
*/
encrypt_message(conversation_id: ConversationId, message: Uint8Array): Promise<Uint8Array>;
/**
* See [core_crypto::transaction_context::TransactionContext::client_public_key]
*/
client_public_key(ciphersuite: Ciphersuite, credential_type: CredentialType): Promise<Uint8Array>;
/**
* See [core_crypto::mls::conversation::Conversation::export_secret_key]
*/
export_secret_key(conversation_id: ConversationId, key_length: number): Promise<SecretKey>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::wipe]
*/
wipe_conversation(conversation_id: ConversationId): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::get_or_create_client_keypackages]
*/
client_keypackages(ciphersuite: Ciphersuite, credential_type: CredentialType, amount_requested: number): Promise<KeyPackage[]>;
/**
* See [core_crypto::mls::conversation::Conversation::epoch]
*/
conversation_epoch(conversation_id: ConversationId): Promise<bigint>;
/**
* See [core_crypto::prelude::Session::conversation_exists]
*/
conversation_exists(conversation_id: ConversationId): Promise<boolean>;
/**
* See [core_crypto::transaction_context::TransactionContext::new_conversation]
*/
create_conversation(conversation_id: ConversationId, creator_credential_type: CredentialType, config: ConversationConfiguration): Promise<void>;
/**
* See [core_crypto::mls::conversation::Conversation::get_external_sender]
*/
get_external_sender(conversation_id: ConversationId): Promise<ExternalSenderKey>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::enable_history_sharing]
*/
enable_history_sharing(conversation_id: ConversationId): Promise<void>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::update_key_material]
*/
update_keying_material(conversation_id: ConversationId): Promise<void>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::disable_history_sharing]
*/
disable_history_sharing(conversation_id: ConversationId): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::join_by_external_commit]
*/
join_by_external_commit(group_info: GroupInfo, custom_configuration: CustomConfiguration, credential_type: CredentialType): Promise<WelcomeBundle>;
/**
* See [core_crypto::transaction_context::TransactionContext::process_raw_welcome_message]
*/
process_welcome_message(welcome_message: Welcome, custom_configuration: CustomConfiguration): Promise<WelcomeBundle>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::commit_pending_proposals]
*/
commit_pending_proposals(conversation_id: ConversationId): Promise<void>;
/**
* See [core_crypto::mls::conversation::Conversation::ciphersuite]
*/
conversation_ciphersuite(conversation_id: ConversationId): Promise<Ciphersuite>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::add_members]
*/
add_clients_to_conversation(conversation_id: ConversationId, key_packages: KeyPackage[]): Promise<string[] | undefined>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::mark_as_child_of]
*/
mark_conversation_as_child_of(child_id: ConversationId, parent_id: ConversationId): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::client_valid_key_packages_count]
*/
client_valid_keypackages_count(ciphersuite: Ciphersuite, credential_type: CredentialType): Promise<bigint>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::remove_members]
*/
remove_clients_from_conversation(conversation_id: ConversationId, clients: ClientId[]): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::mls_init]
*/
mls_init(client_id: ClientId, ciphersuites: any[], nb_key_package?: number | null): Promise<void>;
/**
* See [core_crypto::mls::conversation::ConversationGuard::e2ei_rotate]
*/
e2ei_rotate(conversation_id: ConversationId): Promise<void>;
/**
* See [core_crypto::prelude::Session::e2ei_is_enabled]
*/
e2ei_is_enabled(ciphersuite: Ciphersuite): Promise<boolean>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_register_crl]
*/
e2ei_register_crl(crl_dp: string, crl_der: Uint8Array): Promise<CrlRegistration>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_mls_init_only]
*/
e2ei_mls_init_only(enrollment: FfiWireE2EIdentity, certificate_chain: string, nb_key_package?: number | null): Promise<string[] | undefined>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_new_enrollment]
*/
e2ei_new_enrollment(client_id: string, display_name: string, handle: string, team: string | null | undefined, expiry_sec: number, ciphersuite: Ciphersuite): Promise<FfiWireE2EIdentity>;
/**
* See [core_crypto::mls::conversation::Conversation::get_user_identities]
*/
get_user_identities(conversation_id: ConversationId, user_ids: string[]): Promise<Map<string, WireIdentity[]>>;
/**
* See [core_crypto::transaction_context::TransactionContext::save_x509_credential]
*/
save_x509_credential(enrollment: FfiWireE2EIdentity, certificate_chain: string): Promise<string[] | undefined>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_enrollment_stash]
*
* Note that this can only succeed if the enrollment is unique and there are no other hard refs to it.
*/
e2ei_enrollment_stash(enrollment: FfiWireE2EIdentity): Promise<Uint8Array>;
/**
* See [core_crypto::prelude::Session::e2ei_is_pki_env_setup]
*/
e2ei_is_pki_env_setup(): Promise<boolean>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_register_acme_ca]
*/
e2ei_register_acme_ca(trust_anchor_pem: string): Promise<void>;
/**
* See [core_crypto::mls::conversation::Conversation::get_device_identities]
*/
get_device_identities(conversation_id: ConversationId, device_ids: ClientId[]): Promise<WireIdentity[]>;
/**
* See [core_crypto::mls::conversation::Conversation::e2ei_conversation_state]
*/
e2ei_conversation_state(conversation_id: ConversationId): Promise<E2eiConversationState>;
/**
* See [core_crypto::transaction_context::TransactionContext::delete_stale_key_packages]
*/
delete_stale_key_packages(ciphersuite: Ciphersuite): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_enrollment_stash_pop]
*/
e2ei_enrollment_stash_pop(handle: Uint8Array): Promise<FfiWireE2EIdentity>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_new_rotate_enrollment]
*/
e2ei_new_rotate_enrollment(display_name: string | null | undefined, handle: string | null | undefined, team: string | null | undefined, expiry_sec: number, ciphersuite: Ciphersuite): Promise<FfiWireE2EIdentity>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_register_intermediate_ca_pem]
*/
e2ei_register_intermediate_ca(cert_pem: string): Promise<string[] | undefined>;
/**
* See [core_crypto::transaction_context::TransactionContext::e2ei_new_activation_enrollment]
*/
e2ei_new_activation_enrollment(display_name: string, handle: string, team: string | null | undefined, expiry_sec: number, ciphersuite: Ciphersuite): Promise<FfiWireE2EIdentity>;
/**
* See [core_crypto::proteus::ProteusCentral::try_new]
*/
proteus_init(): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_decrypt]
*/
proteus_decrypt(session_id: string, ciphertext: Uint8Array): Promise<Uint8Array>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_encrypt]
*/
proteus_encrypt(session_id: string, plaintext: Uint8Array): Promise<Uint8Array>;
/**
* Creates a new Proteus prekey with the given id and returns the CBOR-serialized version of the prekey bundle
*
* Warning: The Proteus client **MUST** be initialized with `proteus_init` first or an error will be returned
*
* See [core_crypto::transaction_context::TransactionContext::proteus_new_prekey]
*/
proteus_new_prekey(prekey_id: number): Promise<Uint8Array>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_fingerprint]
*/
proteus_fingerprint(): Promise<string>;
/**
* Decrypt a message whether or not the proteus session already exists, and saves the session.
*
* This is intended to replace simple usages of `proteusDecrypt`.
*
* However, when decrypting large numbers of messages in a single session, the existing methods
* may be more efficient.
*/
proteus_decrypt_safe(session_id: string, ciphertext: Uint8Array): Promise<Uint8Array>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_session_save]
*
* **Note**: This isn't usually needed as persisting sessions happens automatically when
* decrypting/encrypting messages and initializing Sessions
*/
proteus_session_save(session_id: string): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_session_delete]
*/
proteus_session_delete(session_id: string): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_session_exists]
*/
proteus_session_exists(session_id: string): Promise<boolean>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_encrypt_batched]
*/
proteus_encrypt_batched(sessions: string[], plaintext: Uint8Array): Promise<Map<string, Uint8Array>>;
/**
* Creates a new Proteus prekey with an automatically incremented ID and returns the CBOR-serialized version of the prekey bundle
*
* Warning: The Proteus client **MUST** be initialized with `proteus_init` first or an error will be returned
*
* See [core_crypto::transaction_context::TransactionContext::proteus_new_prekey_auto]
*/
proteus_new_prekey_auto(): Promise<ProteusAutoPrekeyBundle>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_reload_sessions]
*/
proteus_reload_sessions(): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_fingerprint_local]
*/
proteus_fingerprint_local(session_id: string): Promise<string>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_fingerprint_remote]
*/
proteus_fingerprint_remote(session_id: string): Promise<string>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_last_resort_prekey]
*/
proteus_last_resort_prekey(): Promise<Uint8Array>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_session_from_prekey]
*/
proteus_session_from_prekey(session_id: string, prekey: Uint8Array): Promise<void>;
/**
* See [core_crypto::transaction_context::TransactionContext::proteus_session_from_message]
*/
proteus_session_from_message(session_id: string, envelope: Uint8Array): Promise<Uint8Array>;
/**
* See [core_crypto::proteus::ProteusCentral::last_resort_prekey_id]
*/
static proteus_last_resort_prekey_id(): number;
/**
* See [core_crypto::proteus::ProteusCentral::fingerprint_prekeybundle]
*/
static proteus_fingerprint_prekeybundle(prekey: Uint8Array): string;
}
declare class CrlRegistration {
free(): void;
[Symbol.dispose](): void;
/**
* Contstruct a CRL registration from its fields
*/
constructor(dirty: boolean, expiration?: bigint | null);
/**
* Whether this CRL modifies the old CRL (i.e. has a different revocated cert list)
*/
dirty: boolean;
/**
* Optional expiration timestamp
*/
get expiration(): bigint | undefined;
/**
* Optional expiration timestamp
*/
set expiration(value: bigint | null | undefined);
}
/**
* see [core_crypto::prelude::MlsCustomConfiguration]
*/
export class CustomConfiguration {
free(): void;
[Symbol.dispose](): void;
/**
* Construct a `CustomConfiguration` from its parts.
*/
constructor(key_rotation_span?: number | null, wire_policy?: WirePolicy | null);
/**
* Duration in seconds after which we will automatically force a self-update commit
* Note: This isn't currently implemented
*/
get keyRotationSpan(): number | undefined;
/**
* Duration in seconds after which we will automatically force a self-update commit
* Note: This isn't currently implemented
*/
set keyRotationSpan(value: number | null | undefined);
/**
* Defines if handshake messages are encrypted or not
* Note: encrypted handshake messages are not supported by wire-server
*/
get wirePolicy(): WirePolicy | undefined;
/**
* Defines if handshake messages are encrypted or not
* Note: encrypted handshake messages are not supported by wire-server
*/
set wirePolicy(value: WirePolicy | null | undefined);
}
/**
* The database acting as a core crypto keystore.
*/
export class Database {
private constructor();
free(): void;
[Symbol.dispose](): void;
}
/**
* The key used to encrypt the database.
*/
export class DatabaseKey {
free(): void;
[Symbol.dispose](): void;
/**
* Construct a new instance from a byte vector.
*/
constructor(buf: Uint8Array);
}
declare class DecryptedMessage {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* Decrypted plaintext
*/
readonly message: Uint8Array | undefined;
/**
* False if processing this message caused the client to be removed from the group, i.e. due to a Remove commit
*/
readonly isActive: boolean;
/**
* Commit delay in seconds.
*
* When set, clients must delay this long before processing a commit.
* This reduces load on the backend, which otherwise would receive epoch change notifications from all clients simultaneously.
*/
readonly commitDelay: bigint | undefined;
/**
* [ClientId] of the sender of the message being decrypted. Only present for application messages.
*/
readonly senderClientId: ClientId | undefined;
/**
* true when the decrypted message resulted in an epoch change i.e. it was a commit
*
* Deprecated: this member will be removed in the future. Prefer using the `EpochObserver` interface.
*/
readonly hasEpochChanged: boolean;
/**
* Identity claims present in the sender credential
*/
readonly identity: WireIdentity;
/**
* Only set when the decrypted message is a commit.
*
* Contains buffered messages for next epoch which were received before the commit creating the epoch
* because the DS did not fan them out in order.
*/
readonly bufferedMessages: BufferedDecryptedMessage[] | undefined;
/**
* New CRL distribution points that appeared by the introduction of a new credential
*/
readonly crlNewDistributionPoints: string[] | undefined;
}
/**
* r" The raw public key of an external sender.
* r"
* r" This can be used to initialize a subconversation.
*/
export class ExternalSenderKey {
free(): void;
[Symbol.dispose](): void;
/**
* Get the raw bytes from this type, transferring data from Rust to the client layer.
*
* This does not consume the newtype, instead copying the internal data across the FFI boundary.
*/
copyBytes(): Uint8Array;
/**
* Construct a new instance, transferring data from the client layer to Rust.
*/
constructor(bytes: Uint8Array);
}
declare class FfiWireE2EIdentity {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* See [core_crypto::prelude::E2eiEnrollment::finalize_request]
*/
finalize_request(previous_nonce: string): Promise<Uint8Array>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::create_dpop_token]
*/
create_dpop_token(expiry_secs: number, backend_nonce: string): Promise<string>;
/**
* See [core_crypto::prelude::E2eiEnrollment::finalize_response]
*/
finalize_response(finalize: Uint8Array): Promise<string>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_authz_request]
*/
new_authz_request(url: string, previous_nonce: string): Promise<Uint8Array>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_order_request]
*/
new_order_request(previous_nonce: string): Promise<Uint8Array>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::directory_response]
*/
directory_response(directory: Uint8Array): Promise<AcmeDirectory>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_authz_response]
*/
new_authz_response(authz: Uint8Array): Promise<NewAcmeAuthz>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_order_response]
*/
new_order_response(order: Uint8Array): Promise<NewAcmeOrder>;
/**
* See [core_crypto::prelude::E2eiEnrollment::certificate_request]
*/
certificate_request(previous_nonce: string): Promise<Uint8Array>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::check_order_request]
*/
check_order_request(order_url: string, previous_nonce: string): Promise<Uint8Array>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_account_request]
*/
new_account_request(previous_nonce: string): Promise<Uint8Array>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::check_order_response]
*/
check_order_response(order: Uint8Array): Promise<string>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_account_response]
*/
new_account_response(account: Uint8Array): Promise<void>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_dpop_challenge_request]
*/
new_dpop_challenge_request(access_token: string, previous_nonce: string): Promise<Uint8Array>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_oidc_challenge_request]
*/
new_oidc_challenge_request(id_token: string, previous_nonce: string): Promise<Uint8Array>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_dpop_challenge_response]
*/
new_dpop_challenge_response(challenge: Uint8Array): Promise<void>;
/**
* See [core_crypto::e2e_identity::E2eiEnrollment::new_oidc_challenge_response]
*/
new_oidc_challenge_response(challenge: Uint8Array): Promise<void>;
}
/**
* r" MLS Group Information
* r"
* r" This is used when joining by external commit.
* r" It can be found within the `GroupInfoBundle` within a `CommitBundle`.
*/
export class GroupInfo {
free(): void;
[Symbol.dispose](): void;
/**
* Get the raw bytes from this type, transferring data from Rust to the client layer.
*
* This does not consume the newtype, instead copying the internal data across the FFI boundary.
*/
copyBytes(): Uint8Array;
/**
* Construct a new instance, transferring data from the client layer to Rust.
*/
constructor(bytes: Uint8Array);
}
declare class KeyPackage {
free(): void;
[Symbol.dispose](): void;
/**
* Get the raw bytes from this type, transferring data from Rust to the client layer.
*
* This does not consume the newtype, instead copying the internal data across the FFI boundary.
*/
copyBytes(): Uint8Array;
/**
* Construct a new instance, transferring data from the client layer to Rust.
*/
constructor(bytes: Uint8Array);
}
/**
* An entity / data which has been packaged by the application to be encrypted
* and transmitted in an application message.
*/
export class MlsTransportData {
free(): void;
[Symbol.dispose](): void;
/**
* Construct `MlsTransportData` by providing data
*/
constructor(buf: Uint8Array);
/**
* The specific data which has been packaged to be encrypted/transmitted.
*/
readonly data: Uint8Array;
}
/**
* Result of an authorization creation.
*
* - See <https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5>
* - See [core_crypto::e2e_identity::types::E2eiNewAcmeAuthz]
*/
export class NewAcmeAuthz {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* DNS entry associated with those challenge
*/
readonly identifier: string;
/**
* ACME challenge + ACME key thumbprint
*/
readonly keyauth: string | undefined;
/**
* Associated ACME Challenge
*/
readonly challenge: AcmeChallenge;
}
/**
* Result of an order creation.
*
* - See <https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4>
* - See [core_crypto::e2e_identity::types::E2eiNewAcmeOrder]
*/
export class NewAcmeOrder {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* Opaque raw json value
*/
readonly delegate: Uint8Array;
/**
* Authorizations to create with `new_authz_request`
*/
readonly authorizations: string[];
}
declare class ProteusAutoPrekeyBundle {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* Prekey id (automatically incremented)
*/
readonly id: number;
/**
* CBOR serialization of prekey
*/
readonly pkb: Uint8Array;
}
/**
* r" A secret key derived from the group secret.
* r"
* r" This is intended to be used for AVS.
*/
export class SecretKey {
free(): void;
[Symbol.dispose](): void;
/**
* Get the raw bytes from this type, transferring data from Rust to the client layer.
*
* This does not consume the newtype, instead copying the internal data across the FFI boundary.
*/
copyBytes(): Uint8Array;
/**
* Construct a new instance, transferring data from the client layer to Rust.
*/
constructor(bytes: Uint8Array);
}
/**
* r" A TLS-serialized Welcome message.
* r"
* r" This structure is defined in RFC 9420:
* r" <https://www.rfc-editor.org/rfc/rfc9420.html#joining-via-welcome-message>.
*/
export class Welcome {
free(): void;
[Symbol.dispose](): void;
/**
* Get the raw bytes from this type, transferring data from Rust to the client layer.
*
* This does not consume the newtype, instead copying the internal data across the FFI boundary.
*/
copyBytes(): Uint8Array;
/**
* Construct a new instance, transferring data from the client layer to Rust.
*/
constructor(bytes: Uint8Array);
}
/**
* see [core_crypto::prelude::WelcomeBundle]
*/
export class WelcomeBundle {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* Identifier of the joined conversation
*/
readonly id: ConversationId;
/**
* New CRL Distribution of members of this group
*/
readonly crlNewDistributionPoints: string[] | undefined;
}
/**
* Represents the identity claims identifying a client
* Those claims are verifiable by any member in the group
*/
export class WireIdentity {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* Unique client identifier e.g. `T4Coy4vdRzianwfOgXpn6A:6add501bacd1d90e@whitehouse.gov`
*/
readonly clientId: string;
/**
* Status of the Credential at the moment this object is created
*/
readonly status: DeviceStatus;
/**
* MLS thumbprint
*/
readonly thumbprint: string;
/**
* Indicates whether the credential is Basic or X509
*/
credentialType: CredentialType;
/**
* In case 'credential_type' is [CredentialType::X509] this is populated
*/
readonly x509Identity: X509Identity | undefined;
}
/**
* Represents the parts of [WireIdentity][crate::WireIdentity] that are specific to a X509 certificate (and not a Basic one).
*
* We don't use an enum here since the sole purpose of this is to be exposed through the FFI (and
* union types are impossible to carry over the FFI boundary)
*/
export class X509Identity {
private constructor();
free(): void;
[Symbol.dispose](): void;
/**
* user handle e.g. `john_wire`
*/
readonly handle: string;
/**
* Name as displayed in the messaging application e.g. `John Fitzgerald Kennedy`
*/
readonly displayName: string;
/**
* DNS domain for which this identity proof was generated e.g. `whitehouse.gov`
*/
readonly domain: string;
/**
* X509 certificate identifying this client in the MLS group ; PEM encoded
*/
readonly certificate: string;
/**
* X509 certificate serial number
*/
readonly serialNumber: string;
/**
* X509 certificate not before as Unix timestamp
*/
readonly notBefore: bigint;
/**
* X509 certificate not after as Unix timestamp
*/
readonly notAfter: bigint;
}
interface ConversationConfiguration$1 {
/**
* The ciphersuite which should be used to encrypt this conversation.
*/
ciphersuite?: Ciphersuite;
/**
* List of client IDs that are allowed to be external senders
*/
externalSenders?: ExternalSenderKey[];
/**
* Duration in seconds after which we will automatically force a self-update commit
* Note: This isn't currently implemented
*/
keyRotationSpan?: number;
/**
* Defines if handshake messages are encrypted or not
* Note: encrypted handshake messages are not supported by wire-server
*/
wirePolicy?: WirePolicy;
}
/**
* The error structure produced by our rust code.
**/
export interface CoreCryptoRichError<T extends ErrorType> {
message: string;
error_name?: string;
error_stack?: string[];
type?: T;
context?: ErrorContext[T];
}
/**
* Error wrapper that takes care of extracting rich error details across the FFI (through JSON parsing)
*
* Whenever you're supposed to get this class (that extends `Error`) you might end up with a base `Error`
* in case the parsing of the message structure fails. This is unlikely but the case is still covered and fall backs automatically.
* More information will be found in the base `Error.cause` to inform you why the parsing has failed.
*
* Please note that in this case the extra properties will not be available.
*/
export declare class CoreCryptoError<T extends ErrorType> extends Error {
errorStack: string[];
context?: ErrorContext[T];
type?: T;
private constructor();
private static fallback;
static build<E extends ErrorType>(msg: string, ...params: unknown[]): CoreCryptoError<E>;
static fromStdError(e: Error): CoreCryptoError<ErrorType>;
static asyncMapErr<T, E extends ErrorType>(p: Promise<T>): Promise<T>;
}
/**
* Helper type to ensure that error contexts match their type
*/
export type ErrorTypeWithContext<T> = {
[K in keyof T]: {
type: K;
context: T[K];
};
}[keyof T];
/**
* Variants of core crypto errors
*/
export declare enum ErrorType {
Mls = "Mls",
Proteus = "Proteus",
E2ei = "E2ei",
TransactionFailed = "TransactionFailed",
Other = "Other"
}
export declare function isCcError<E extends ErrorType>(error: unknown, errorType: E): error is CoreCryptoError<E>;
/**
* Structured core crypto error
*/
export interface ErrorContext {
[ErrorType.Mls]: ErrorTypeWithContext<MlsErrorContext>;
[ErrorType.Proteus]: ErrorTypeWithContext<ProteusErrorContext>;
[ErrorType.E2ei]: {
e2eiError: string;
};
[ErrorType.TransactionFailed]: {
error: string;
};
[ErrorType.Other]: {
msg: string;
};
}
export declare function isE2eiError(error: unknown): error is CoreCryptoError<ErrorType.E2ei>;
export declare function isTransactionFailedError(error: unknown): error is CoreCryptoError<ErrorType.TransactionFailed>;
export declare function isOtherError(error: unknown): error is CoreCryptoError<ErrorType.Other>;
/**
* Variants of core crypto mls errors
*/
export declare enum MlsErrorType {
ConversationAlreadyExists = "ConversationAlreadyExists",
DuplicateMessage = "DuplicateMessage",
BufferedFutureMessage = "BufferedFutureMessage",
WrongEpoch = "WrongEpoch",
BufferedCommit = "BufferedCommit",
MessageEpochTooOld = "MessageEpochTooOld",
SelfCommitIgnored = "SelfCommitIgnored",
UnmergedPendingGroup = "UnmergedPendingGroup",
StaleProposal = "StaleProposal",
StaleCommit = "StaleCommit",
/**
* This happens when the DS cannot flag KeyPackages as claimed or not. In this scenario, a client
* requests their old KeyPackages to be deleted but one has already been claimed by another client to create a Welcome.
* In that case the only solution is that the client receiving such a Welcome tries to join the group
* with an External Commit instead
*/
OrphanWelcome = "OrphanWelcome",
MessageRejected = "MessageRejected",
Other = "Other"
}
/**
* Structured core crypto mls error (embedded in a core crypto error)
*/
export interface MlsErrorContext {
[MlsErrorType.ConversationAlreadyExists]: {
conversationId: Array<number>;
};
[MlsErrorType.DuplicateMessage]: Record<string, never>;
[MlsErrorType.BufferedFutureMessage]: Record<string, never>;
[MlsErrorType.WrongEpoch]: Record<string, never>;
[MlsErrorType.BufferedCommit]: Record<string, never>;
[MlsErrorType.MessageEpochTooOld]: Record<string, never>;
[MlsErrorType.SelfCommitIgnored]: Record<string, never>;
[MlsErrorType.UnmergedPendingGroup]: Record<string, never>;
[MlsErrorType.StaleProposal]: Record<string, never>;
[MlsErrorType.StaleCommit]: Record<string, never>;
[MlsErrorType.OrphanWelcome]: Record<string, never>;
[MlsErrorType.MessageRejected]: {
reason: string;
};
[MlsErrorType.Other]: {
msg: string;
};
}
export declare function isMlsError<E extends MlsErrorType>(error: unknown, errorType: E): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: E;
}>;
};
export declare function isMlsConversationAlreadyExistsError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.ConversationAlreadyExists;
}>;
};
export declare function isMlsDuplicateMessageError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.DuplicateMessage;
}>;
};
export declare function isMlsBufferedFutureMessageError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.BufferedFutureMessage;
}>;
};
export declare function isMlsWrongEpochError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.WrongEpoch;
}>;
};
export declare function isMlsBufferedCommitError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.BufferedCommit;
}>;
};
export declare function isMlsSelfCommitIgnoredError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.SelfCommitIgnored;
}>;
};
export declare function isMlsUnmergedPendingGroupError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.UnmergedPendingGroup;
}>;
};
export declare function isMlsStaleProposalError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.StaleProposal;
}>;
};
export declare function isMlsStaleCommitError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.StaleCommit;
}>;
};
export declare function isMlsOrphanWelcomeError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.OrphanWelcome;
}>;
};
export declare function isMlsMessageRejectedError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.MessageRejected;
}>;
};
export declare function isMlsOtherError(error: unknown): error is CoreCryptoError<ErrorType.Mls> & {
context: Extract<ErrorContext[ErrorType.Mls], {
type: MlsErrorType.Other;
}>;
};
/**
* Variants of core crypto proteus errors
*/
export declare enum ProteusErrorType {
SessionNotFound = "SessionNotFound",
DuplicateMessage = "DuplicateMessage",
RemoteIdentityChanged = "RemoteIdentityChanged",
Other = "Other"
}
/**
* Structured core crypto proteus error (embedded in a core crypto error)
*/
export interface ProteusErrorContext {
[ProteusErrorType.SessionNotFound]: {
errorCode: number;
};
[ProteusErrorType.DuplicateMessage]: {
errorCode: number;
};
[ProteusErrorType.RemoteIdentityChanged]: {
errorCode: number;
};
[ProteusErrorType.Other]: {
errorCode: number;
};
}
export declare function isProteusError<E extends ProteusErrorType>(error: unknown, errorType: E): error is CoreCryptoError<ErrorType.Proteus> & {
context: Extract<ErrorContext[ErrorType.Proteus], {
type: E;
}>;
};
export declare function isProteusSessionNotFoundError(error: unknown): error is CoreCryptoError<ErrorType.Proteus> & {
context: Extract<ErrorContext[ErrorType.Proteus], {
type: ProteusErrorType.SessionNotFound;
}>;
};
export declare function isProteusDuplicateMessageError(error: unknown): error is CoreCryptoError<ErrorType.Proteus> & {
context: Extract<ErrorContext[ErrorType.Proteus], {
type: ProteusErrorType.DuplicateMessage;
}>;
};
export declare function isProteusRemoteIdentityChangedError(error: unknown): error is CoreCryptoError<ErrorType.Proteus> & {
context: Extract<ErrorContext[ErrorType.Proteus], {
type: ProteusErrorType.RemoteIdentityChanged;
}>;
};
export declare function isProteusOtherError(error: unknown): error is CoreCryptoError<ErrorType.Proteus> & {
context: Extract<ErrorContext[ErrorType.Proteus], {
type: ProteusErrorType.Other;
}>;
};
/**
* Alias for proposal reference. It is a byte array of size 16.
*/
export type ProposalRef = Uint8Array;
/**
* A `HistorySecret` encodes sufficient client state that it can be used to instantiate an
* ephemeral client.
*/
export interface HistorySecret {
clientId: ClientId;
data: Uint8Array;
}
/**
* Data shape for a MLS generic commit + optional bundle (aka stapled commit & welcome)
*/
export interface CommitBundle {
/**
* TLS-serialized MLS Commit that needs to be fanned out to other (existing) members of the conversation
*
* @readonly
*/
commit: Uint8Array;
/**
* Optional TLS-serialized MLS Welcome message that needs to be fanned out to the clients newly added to the conversation
*
* @readonly
*/
welcome?: Welcome;
/**
* MLS GroupInfo which is required for joining a group by external commit
*
* @readonly
*/
groupInfo: GroupInfoBundle;
/**
* An encrypted message to fan out to all other conversation members in the new epoch
* @readonly
*/
encryptedMessage?: Uint8Array;
}
/**
* Wraps a GroupInfo in order to efficiently upload it to the Delivery Service.
* This is not part of MLS protocol but parts might be standardized at some point.
*/
export interface GroupInfoBundle {
/**
* see {@link GroupInfoEncryptionType}
*/
encryptionType: MlsGroupInfoEncryptionType;
/**
* see {@link RatchetTreeType}
*/
ratchetTreeType: MlsRatchetTreeType;
/**
* TLS-serialized GroupInfo
*/
payload: GroupInfo;
}
/**
* This is a wrapper for all the possible outcomes you can get after decrypting a message
*/
interface DecryptedMessage$1 {
/**
* Raw decrypted application message, if the decrypted MLS message is an application message
*/
message?: Uint8Array;
/**
* It is set to false if ingesting this MLS message has resulted in the client being removed from the group (i.e. a Remove commit)
*/
isActive: boolean;
/**
* Commit delay hint (in milliseconds) to prevent clients from hammering the server with epoch changes
*/
commitDelay?: number;
/**
* Client identifier of the sender of the message being decrypted. Only present for application messages.
*/
senderClientId?: ClientId;
/**
* true when the decrypted message resulted in an epoch change i.e. it was a commit
*/
hasEpochChanged: boolean;
/**
* Identity claims present in the sender credential
* Only present when the credential is a x509 certificate
* Present for all messages
*/
identity?: WireIdentity;
/**
* Only set when the decrypted message is a commit.
* Contains buffered messages for next epoch which were received before the commit creating the epoch
* because the DS did not fan them out in order.
*/
bufferedMessages?: BufferedDecryptedMessage$1[];
/**
* New CRL distribution points that appeared by the introduction of a new credential
*/
crlNewDistributionPoints?: string[];
}
/**
* Almost same as {@link DecryptedMessage} but avoids recursion
*/
interface BufferedDecryptedMessage$1 {
/**
* see {@link DecryptedMessage.message}
*/
message?: Uint8Array;
/**
* see {@link DecryptedMessage.isActive}
*/
isActive: boolean;
/**
* see {@link DecryptedMessage.commitDelay}
*/
commitDelay?: number;
/**
* see {@link DecryptedMessage.senderClientId}
*/
senderClientId?: ClientId;
/**
* see {@link DecryptedMessage.hasEpochChanged}
*/
hasEpochChanged: boolean;
/**
* see {@link DecryptedMessage.identity}
*/
identity?: WireIdentity;
/**
* see {@link DecryptedMessage.crlNewDistributionPoints}
*/
crlNewDistributionPoints?: string[];
}
/**
* Returned by {@link MlsTransport} callbacks.
*/
export type MlsTransportResponse = "success" | "retry" | {
/**
* The message was rejected by the delivery service and there's no recovery.
*/
abort: {
reason: string;
};
};
/**
* An interface that must be implemented and provided to CoreCrypto via
* {@link CoreCrypto.provideTransport}.
*/
export interface MlsTransport {
/**
* This callback is called by CoreCrypto to send a commit bundle to the delivery service.
*
* @param commitBundle - the commit bundle
* @returns a promise resolving to a {@link MlsTransportResponse}
*/
sendCommitBundle: (commitBundle: CommitBundle) => Promise<MlsTransportResponse>;
/**
* This callback is called by CoreCrypto to send a regular message to the delivery service.
* @param message
* @returns a promise resolving to a {@link MlsTransportResponse}
*/
sendMessage: (message: Uint8Array) => Promise<MlsTransportResponse>;
/**
* This callback is called by CoreCrypto to prepare a history secret to be sent to the delivery service.
* @param secret
* @returns a promise resolving to a {@link MlsTransportData}
*/
prepareForTransport: (secret: HistorySecret) => Promise<MlsTransportData>;
}
/**
* Supporting struct for CRL registration result
*/
export interface CRLRegistration {
/**
* Whether this CRL modifies the old CRL (i.e. has a different revocated cert list)
*
* @readonly
*/
dirty: boolean;
/**
* Optional expiration timestamp
*
* @readonly
*/
expiration?: number;
}
interface AcmeDirectory$1 {
/**
* URL for fetching a new nonce. Use this only for creating a new account.
*/
newNonce: string;
/**
* URL for creating a new account.
*/
newAccount: string;
/**
* URL for creating a new order.
*/
newOrder: string;
/**
* Revocation URL
*/
revokeCert: string;
}
/**
* Returned by APIs whose code paths potentially discover new certificate revocation list distribution URLs.
*/
export type NewCrlDistributionPoints = string[] | undefined;
export type JsonRawData = Uint8Array;
export declare class E2eiEnrollment {
#private;
/** @hidden */
constructor(e2ei: FfiWireE2EIdentity);
free(): void;
/**
* Should only be used internally
*/
inner(): unknown;
/**
* Parses the response from `GET /acme/{provisioner-name}/directory`.
* Use this {@link AcmeDirectory} in the next step to fetch the first nonce from the acme server. Use
* {@link AcmeDirectory.newNonce}.
*
* @param directory HTTP response body
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.1.1
*/
directoryResponse(directory: JsonRawData): Promise<AcmeDirectory$1>;
/**
* For creating a new acme account. This returns a signed JWS-alike request body to send to
* `POST /acme/{provisioner-name}/new-account`.
*
* @param previousNonce you got from calling `HEAD {@link AcmeDirectory.newNonce}`
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.3
*/
newAccountRequest(previousNonce: string): Promise<JsonRawData>;
/**
* Parses the response from `POST /acme/{provisioner-name}/new-account`.
* @param account HTTP response body
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.3
*/
newAccountResponse(account: JsonRawData): Promise<void>;
/**
* Creates a new acme order for the handle (userId + display name) and the clientId.
*
* @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/new-account`
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
*/
newOrderRequest(previousNonce: string): Promise<JsonRawData>;
/**
* Parses the response from `POST /acme/{provisioner-name}/new-order`.
*
* @param order HTTP response body
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
*/
newOrderResponse(order: JsonRawData): Promise<NewAcmeOrder>;
/**
* Creates a new authorization request.
*
* @param url one of the URL in new o