import { AuthenticateOptions, AuthenticationJSON, RegisterOptions, RegistrationJSON } from './types.js'; /** * Returns whether passwordless authentication is available on this browser/platform or not. */ export declare function isAvailable(): boolean; /** * Returns whether the device itself can be used as authenticator. */ export declare function isLocalAuthenticator(): Promise; /** * Creates a cryptographic key pair, in order to register the public key for later passwordless authentication. * * @param {string|Object} [user] Username or user object (id, name, displayName) * @param {string} [challenge] A server-side randomly generated string. * @param {number} [timeout=60000] Number of milliseconds the user has to respond to the biometric/PIN check. * @param {'required'|'preferred'|'discouraged'} [userVerification='required'] Whether to prompt for biometric/PIN check or not. * @param {PublicKeyCredentialHints[]} [hints]: Can contain a list of "client-device", "hybrid" or "security-key" * @param {boolean} [attestation=true] If enabled, the device attestation and clientData will be provided as Base64url encoded binary data. Note that this is not available on some platforms. * @param {'discouraged'|'preferred'|'required'} [discoverable] A "discoverable" credential can be selected using `authenticate(...)` without providing credential IDs. * Instead, a native pop-up will appear for user selection. * This may have an impact on the "passkeys" user experience and syncing behavior of the key. * @param {Record} [customProperties] - **Advanced usage**: An object of additional * properties that will be merged into the WebAuthn create options. This can be used to * explicitly set fields such as `excludeCredentials`. * * @example * const registration = await register({ * user: { id: 'user-id', name: 'john', displayName: 'John' }, * challenge: 'base64url-encoded-challenge', * customProperties: { * excludeCredentials: [ * { id: 'base64url-credential-id', type: 'public-key' }, * ], * }, * }); */ export declare function register(options: RegisterOptions): Promise; export declare function isAutocompleteAvailable(): Promise; /** * Signs a challenge using one of the provided credentials IDs in order to authenticate the user. * * @param {string[]} credentialIds The list of credential IDs that can be used for signing. * @param {string} challenge A server-side randomly generated string, the base64 encoded version will be signed. * @param {number} [timeout=60000] Number of milliseconds the user has to respond to the biometric/PIN check. * @param {'required'|'preferred'|'discouraged'} [userVerification='required'] Whether to prompt for biometric/PIN check or not. * @param {boolean} [conditional] Does not return directly, but only when the user has selected a credential in the input field with `autocomplete="username webauthn"` * @param {Record} [options.customProperties] - **Advanced usage**: An object of additional * properties that will be merged into the WebAuthn authenticate options. This can be used to * explicitly set fields such as `extensions`. * * @example * const authentication = await authenticate({ * challenge: 'base64url-encoded-challenge', * allowCredentials: [], * customProperties: { * extensions: { * uvm: true, // User verification methods extension * appid: "https://legacy-app-id.example.com", // App ID extension for backward compatibility * }, * }, * }); */ export declare function authenticate(options: AuthenticateOptions): Promise;