Appearance
@keymaster/connect / KeymasterConnectClient
Class: KeymasterConnectClient
Official browser client for Keymaster Connect V1.
One client owns one reusable Session Window. It validates both the exact message origin and the source window, correlates concurrent requests by id, supports protocol cancellation through AbortSignal, and keeps persistent Connect sessions separate from the window transport lifecycle.
Examples
Direct popup login
ts
const keymaster = new KeymasterConnectClient({
targetOrigin: keymasterDeploymentOrigin
});
const session = await keymaster.login({
text: "Sign in to Example",
claims: ["profile.name"]
});appView launch
ts
const keymaster = new KeymasterConnectClient({
targetOrigin: sessionWindowOrigin,
mode: "appView"
});
await keymaster.connect();
const session = await keymaster.launch({ launchToken, appIdentity });Connect
Create, restore, revoke, or launch a persistent Connect session.
login()
login(
params,options?):Promise<ConnectLoginResult>
Calls connect.login to create a persistent Connect session.
Parameters
params
options?
Returns
Promise<ConnectLoginResult>
resume()
resume(
connectSessionId,options?):Promise<ConnectResumeResult>
Calls connect.resume to restore the unlock runtime for a persistent session.
Parameters
connectSessionId
string
options?
Returns
Promise<ConnectResumeResult>
logout()
logout(
connectSessionId,options?):Promise<ConnectLogoutResult>
Calls connect.logout to revoke a persistent Connect session.
Parameters
connectSessionId
string
options?
Returns
Promise<ConnectLogoutResult>
launch()
launch(
params,options?):Promise<ConnectLaunchResult>
Calls connect.launch to consume the one-time launch token of an appView session.
Parameters
params
options?
Returns
Promise<ConnectLaunchResult>
Identity
Read signed identity claims or sign an application intent.
identityGet()
identityGet(
params,options?):Promise<IdentityGetResult>
Calls identity.get to return signed identity claims for the session owner.
Parameters
params
options?
Returns
Promise<IdentityGetResult>
intentSign()
intentSign(
params,options?):Promise<IntentSignResult>
Calls intent.sign to sign caller-provided bytes with a human-readable intent.
Parameters
params
options?
Returns
Promise<IntentSignResult>
Cipher
Encrypt and decrypt origin-bound application data.
cipherEncrypt()
cipherEncrypt(
params,options?):Promise<CipherEncryptResult>
Calls cipher.encrypt to encrypt origin-bound application data.
Parameters
params
options?
Returns
Promise<CipherEncryptResult>
cipherDecrypt()
cipherDecrypt(
params,options?):Promise<CipherDecryptResult>
Calls cipher.decrypt to decrypt data previously returned by cipher.encrypt.
Parameters
params
options?
Returns
Promise<CipherDecryptResult>
Transfer
Transfer BSV or negotiate a fee-pool operation.
p2pkhTransfer()
p2pkhTransfer(
params,options?):Promise<P2pkhTransferResult>
Calls p2pkh.transfer to request a controlled mainnet BSV transfer.
Parameters
params
options?
Returns
Promise<P2pkhTransferResult>
feepoolPrepare()
feepoolPrepare(
params,options?):Promise<FeepoolPrepareResult>
Calls feepool.prepare to prepare the next fee-pool operation.
Parameters
params
options?
Returns
Promise<FeepoolPrepareResult>
feepoolCommit()
feepoolCommit(
params,options?):Promise<FeepoolCommitResult>
Calls feepool.commit to verify counterparty signatures and commit a prepared fee-pool operation.
Parameters
params
options?
Returns
Promise<FeepoolCommitResult>
AppMsg
Send and query private application messages. Incoming messages arrive as appmsg.message_received through KeymasterConnectOptions.onEvent.
appmsgSend()
appmsgSend(
params,options?):Promise<AppMsgSendResult>
Calls appmsg.send to send an end-to-end sealed application message.
Parameters
params
options?
Returns
Promise<AppMsgSendResult>
appmsgList()
appmsgList(
params,options?):Promise<AppMsgListResult>
Calls appmsg.list to incrementally list messages visible to the session.
Parameters
params
options?
Returns
Promise<AppMsgListResult>
appmsgGet()
appmsgGet(
params,options?):Promise<AppMsgGetResult>
Calls appmsg.get to fetch one message visible to the session.
Parameters
params
options?
Returns
Promise<AppMsgGetResult>
Broadcast
Publish broadcasts and manage subscriptions. Incoming broadcasts arrive as broadcast.message_received through KeymasterConnectOptions.onEvent.
broadcastPublish()
broadcastPublish(
params,options?):Promise<BroadcastPublishResult>
Calls broadcast.publish to publish a message signed by the session owner.
Parameters
params
options?
Returns
Promise<BroadcastPublishResult>
broadcastSubscriptionSet()
broadcastSubscriptionSet(
params,options?):Promise<BroadcastSubscriptionSetResult>
Calls broadcast.subscription_set to replace the caller's channel set.
Parameters
params
BroadcastSubscriptionSetParams
options?
Returns
Promise<BroadcastSubscriptionSetResult>
broadcastSubscriptionList()
broadcastSubscriptionList(
params,options?):Promise<BroadcastSubscriptionListResult>
Calls broadcast.subscription_list to read the caller's channel set.
Parameters
params
BroadcastSubscriptionListParams
options?
Returns
Promise<BroadcastSubscriptionListResult>
Storage
Manage app-scoped directories, objects, and multipart uploads.
storageList()
storageList(
params,options?):Promise<StorageListResult>
Calls storage.list to list paths in the verified application's namespace.
Parameters
params
options?
Returns
Promise<StorageListResult>
storageDirectoryCreate()
storageDirectoryCreate(
params,options?):Promise<StorageDirectoryResult>
Calls storage.directory.create to create an app-scoped directory.
Parameters
params
options?
Returns
Promise<StorageDirectoryResult>
storageDirectoryDelete()
storageDirectoryDelete(
params,options?):Promise<StorageDirectoryResult>
Calls storage.directory.delete to delete an app-scoped directory.
Parameters
params
options?
Returns
Promise<StorageDirectoryResult>
storagePut()
storagePut(
params,options?):Promise<StoragePutResult>
Calls storage.put to write an app-scoped object.
Parameters
params
options?
Returns
Promise<StoragePutResult>
storageGet()
storageGet(
params,options?):Promise<StorageGetResult>
Calls storage.get to read an app-scoped object.
Parameters
params
options?
Returns
Promise<StorageGetResult>
storageDelete()
storageDelete(
params,options?):Promise<StorageDeleteResult>
Calls storage.delete to delete an app-scoped object.
Parameters
params
options?
Returns
Promise<StorageDeleteResult>
storageUploadBegin()
storageUploadBegin(
params,options?):Promise<StorageUploadBeginResult>
Calls storage.upload.begin to start a multipart object upload.
Parameters
params
options?
Returns
Promise<StorageUploadBeginResult>
storageUploadPart()
storageUploadPart(
params,options?):Promise<StorageUploadPartResult>
Calls storage.upload.part to append one part to a multipart upload.
Parameters
params
options?
Returns
Promise<StorageUploadPartResult>
storageUploadComplete()
storageUploadComplete(
params,options?):Promise<StoragePutResult>
Calls storage.upload.complete to finalize a multipart upload.
Parameters
params
options?
Returns
Promise<StoragePutResult>
storageUploadAbort()
storageUploadAbort(
params,options?):Promise<StorageUploadAbortResult>
Calls storage.upload.abort to discard a multipart upload.
Parameters
params
options?
Returns
Promise<StorageUploadAbortResult>
Transport
Manage the Session Window and send lower-level protocol requests.
state
Get Signature
get state():
KeymasterConnectState
Current browser transport state.
Returns
connect()
connect():
Promise<void>
Establishes the browser transport.
Popup mode opens the Session Window and waits for ready. appView mode adopts window.opener, installs the listener, and sends the child ready message without ever opening a fallback popup.
Returns
Promise<void>
request()
request<
M>(method,params,options?):Promise<MethodResult<M>>
Sends any public Connect method with compile-time parameter and result inference.
Type Parameters
M
M extends "identity.get" | "intent.sign" | "cipher.encrypt" | "cipher.decrypt" | "p2pkh.transfer" | "feepool.prepare" | "feepool.commit" | "connect.login" | "connect.resume" | "connect.logout" | "connect.launch" | "appmsg.send" | "appmsg.list" | "appmsg.get" | "broadcast.publish" | "broadcast.subscription_set" | "broadcast.subscription_list" | "storage.list" | "storage.directory.create" | "storage.directory.delete" | "storage.put" | "storage.get" | "storage.delete" | "storage.upload.begin" | "storage.upload.part" | "storage.upload.complete" | "storage.upload.abort"
Parameters
method
M
params
MethodParams<M>
options?
Returns
Promise<MethodResult<M>>
cancel()
cancel(
requestId,reason?):boolean
Cancels a locally pending request. Keymaster only cancels work that has not entered execution; cancellation is therefore best-effort remotely.
Parameters
requestId
string
reason?
unknown = ...
Returns
boolean
close()
close():
void
Tears down the local transport. This does not revoke persistent Connect sessions; call logout before closing when revocation is required.
Returns
void
Constructors
Constructor
new KeymasterConnectClient(
options):KeymasterConnectClient
Parameters
options
Returns
KeymasterConnectClient