@bsv/wallet-toolbox 1.1.24 → 1.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/docs/client.md +2319 -84
  2. package/docs/wallet.md +2319 -84
  3. package/out/src/CWIStyleWalletManager.d.ts +411 -0
  4. package/out/src/CWIStyleWalletManager.d.ts.map +1 -0
  5. package/out/src/CWIStyleWalletManager.js +1131 -0
  6. package/out/src/CWIStyleWalletManager.js.map +1 -0
  7. package/out/src/SetupClient.d.ts +249 -0
  8. package/out/src/SetupClient.d.ts.map +1 -0
  9. package/out/src/SetupClient.js +252 -0
  10. package/out/src/SetupClient.js.map +1 -0
  11. package/out/src/SimpleWalletManager.d.ts +169 -0
  12. package/out/src/SimpleWalletManager.d.ts.map +1 -0
  13. package/out/src/SimpleWalletManager.js +315 -0
  14. package/out/src/SimpleWalletManager.js.map +1 -0
  15. package/out/src/Wallet.d.ts +6 -1
  16. package/out/src/Wallet.d.ts.map +1 -1
  17. package/out/src/Wallet.js +29 -2
  18. package/out/src/Wallet.js.map +1 -1
  19. package/out/src/WalletAuthenticationManager.d.ts +33 -0
  20. package/out/src/WalletAuthenticationManager.d.ts.map +1 -0
  21. package/out/src/WalletAuthenticationManager.js +107 -0
  22. package/out/src/WalletAuthenticationManager.js.map +1 -0
  23. package/out/src/WalletPermissionsManager.d.ts +575 -0
  24. package/out/src/WalletPermissionsManager.d.ts.map +1 -0
  25. package/out/src/WalletPermissionsManager.js +1807 -0
  26. package/out/src/WalletPermissionsManager.js.map +1 -0
  27. package/out/src/WalletSettingsManager.d.ts +59 -0
  28. package/out/src/WalletSettingsManager.d.ts.map +1 -0
  29. package/out/src/WalletSettingsManager.js +168 -0
  30. package/out/src/WalletSettingsManager.js.map +1 -0
  31. package/out/src/__tests/CWIStyleWalletManager.test.d.ts +2 -0
  32. package/out/src/__tests/CWIStyleWalletManager.test.d.ts.map +1 -0
  33. package/out/src/__tests/CWIStyleWalletManager.test.js +472 -0
  34. package/out/src/__tests/CWIStyleWalletManager.test.js.map +1 -0
  35. package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts +2 -0
  36. package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts.map +1 -0
  37. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js +239 -0
  38. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js.map +1 -0
  39. package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts +2 -0
  40. package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts.map +1 -0
  41. package/out/src/__tests/WalletPermissionsManager.checks.test.js +644 -0
  42. package/out/src/__tests/WalletPermissionsManager.checks.test.js.map +1 -0
  43. package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts +2 -0
  44. package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts.map +1 -0
  45. package/out/src/__tests/WalletPermissionsManager.encryption.test.js +295 -0
  46. package/out/src/__tests/WalletPermissionsManager.encryption.test.js.map +1 -0
  47. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +82 -0
  48. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +1 -0
  49. package/out/src/__tests/WalletPermissionsManager.fixtures.js +260 -0
  50. package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +1 -0
  51. package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts +2 -0
  52. package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts.map +1 -0
  53. package/out/src/__tests/WalletPermissionsManager.flows.test.js +389 -0
  54. package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +1 -0
  55. package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts +2 -0
  56. package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts.map +1 -0
  57. package/out/src/__tests/WalletPermissionsManager.initialization.test.js +227 -0
  58. package/out/src/__tests/WalletPermissionsManager.initialization.test.js.map +1 -0
  59. package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts +2 -0
  60. package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts.map +1 -0
  61. package/out/src/__tests/WalletPermissionsManager.proxying.test.js +566 -0
  62. package/out/src/__tests/WalletPermissionsManager.proxying.test.js.map +1 -0
  63. package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts +2 -0
  64. package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts.map +1 -0
  65. package/out/src/__tests/WalletPermissionsManager.tokens.test.js +460 -0
  66. package/out/src/__tests/WalletPermissionsManager.tokens.test.js.map +1 -0
  67. package/out/src/index.all.d.ts +9 -0
  68. package/out/src/index.all.d.ts.map +1 -1
  69. package/out/src/index.all.js +9 -0
  70. package/out/src/index.all.js.map +1 -1
  71. package/out/src/index.client.d.ts +9 -0
  72. package/out/src/index.client.d.ts.map +1 -1
  73. package/out/src/index.client.js +9 -0
  74. package/out/src/index.client.js.map +1 -1
  75. package/out/src/utility/identityUtils.d.ts +31 -0
  76. package/out/src/utility/identityUtils.d.ts.map +1 -0
  77. package/out/src/utility/identityUtils.js +114 -0
  78. package/out/src/utility/identityUtils.js.map +1 -0
  79. package/out/src/wab-client/WABClient.d.ts +38 -0
  80. package/out/src/wab-client/WABClient.d.ts.map +1 -0
  81. package/out/src/wab-client/WABClient.js +95 -0
  82. package/out/src/wab-client/WABClient.js.map +1 -0
  83. package/out/src/wab-client/__tests/WABClient.test.d.ts +2 -0
  84. package/out/src/wab-client/__tests/WABClient.test.d.ts.map +1 -0
  85. package/out/src/wab-client/__tests/WABClient.test.js +47 -0
  86. package/out/src/wab-client/__tests/WABClient.test.js.map +1 -0
  87. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +34 -0
  88. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -0
  89. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +16 -0
  90. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -0
  91. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.d.ts +7 -0
  92. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.d.ts.map +1 -0
  93. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +40 -0
  94. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -0
  95. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts +28 -0
  96. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -0
  97. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +73 -0
  98. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -0
  99. package/out/test/Wallet/action/abortAction.test.d.ts.map +1 -0
  100. package/out/test/{wallet → Wallet}/action/abortAction.test.js.map +1 -1
  101. package/out/test/Wallet/action/createAction.test.d.ts.map +1 -0
  102. package/out/test/{wallet → Wallet}/action/createAction.test.js.map +1 -1
  103. package/out/test/{wallet → Wallet}/action/createAction2.test.d.ts.map +1 -1
  104. package/out/test/{wallet → Wallet}/action/createAction2.test.js.map +1 -1
  105. package/out/test/Wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +1 -0
  106. package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.js.map +1 -1
  107. package/out/test/Wallet/action/internalizeAction.test.d.ts.map +1 -0
  108. package/out/test/{wallet → Wallet}/action/internalizeAction.test.js.map +1 -1
  109. package/out/test/Wallet/action/relinquishOutput.test.d.ts.map +1 -0
  110. package/out/test/{wallet → Wallet}/action/relinquishOutput.test.js.map +1 -1
  111. package/out/test/Wallet/construct/Wallet.constructor.test.d.ts.map +1 -0
  112. package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.js.map +1 -1
  113. package/out/test/Wallet/list/listActions.test.d.ts.map +1 -0
  114. package/out/test/{wallet → Wallet}/list/listActions.test.js.map +1 -1
  115. package/out/test/Wallet/list/listActions2.test.d.ts.map +1 -0
  116. package/out/test/{wallet → Wallet}/list/listActions2.test.js.map +1 -1
  117. package/out/test/Wallet/list/listCertificates.test.d.ts.map +1 -0
  118. package/out/test/{wallet → Wallet}/list/listCertificates.test.js.map +1 -1
  119. package/out/test/Wallet/list/listOutputs.test.d.ts.map +1 -0
  120. package/out/test/{wallet → Wallet}/list/listOutputs.test.js.map +1 -1
  121. package/out/test/Wallet/sync/Wallet.sync.test.d.ts.map +1 -0
  122. package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.js.map +1 -1
  123. package/out/tsconfig.all.tsbuildinfo +1 -1
  124. package/package.json +3 -3
  125. package/src/CWIStyleWalletManager.ts +1891 -0
  126. package/src/SimpleWalletManager.ts +553 -0
  127. package/src/Wallet.ts +47 -3
  128. package/src/WalletAuthenticationManager.ts +183 -0
  129. package/src/WalletPermissionsManager.ts +2639 -0
  130. package/src/WalletSettingsManager.ts +241 -0
  131. package/src/__tests/CWIStyleWalletManager.test.ts +709 -0
  132. package/src/__tests/WalletPermissionsManager.callbacks.test.ts +328 -0
  133. package/src/__tests/WalletPermissionsManager.checks.test.ts +857 -0
  134. package/src/__tests/WalletPermissionsManager.encryption.test.ts +407 -0
  135. package/src/__tests/WalletPermissionsManager.fixtures.ts +283 -0
  136. package/src/__tests/WalletPermissionsManager.flows.test.ts +490 -0
  137. package/src/__tests/WalletPermissionsManager.initialization.test.ts +333 -0
  138. package/src/__tests/WalletPermissionsManager.proxying.test.ts +753 -0
  139. package/src/__tests/WalletPermissionsManager.tokens.test.ts +584 -0
  140. package/src/index.all.ts +9 -0
  141. package/src/index.client.ts +9 -0
  142. package/src/utility/identityUtils.ts +170 -0
  143. package/src/wab-client/WABClient.ts +103 -0
  144. package/src/wab-client/__tests/WABClient.test.ts +58 -0
  145. package/src/wab-client/auth-method-interactors/AuthMethodInteractor.ts +47 -0
  146. package/src/wab-client/auth-method-interactors/PersonaIDInteractor.ts +45 -0
  147. package/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.ts +82 -0
  148. package/out/test/wallet/action/abortAction.test.d.ts.map +0 -1
  149. package/out/test/wallet/action/createAction.test.d.ts.map +0 -1
  150. package/out/test/wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +0 -1
  151. package/out/test/wallet/action/internalizeAction.test.d.ts.map +0 -1
  152. package/out/test/wallet/action/relinquishOutput.test.d.ts.map +0 -1
  153. package/out/test/wallet/construct/Wallet.constructor.test.d.ts.map +0 -1
  154. package/out/test/wallet/list/listActions.test.d.ts.map +0 -1
  155. package/out/test/wallet/list/listActions2.test.d.ts.map +0 -1
  156. package/out/test/wallet/list/listCertificates.test.d.ts.map +0 -1
  157. package/out/test/wallet/list/listOutputs.test.d.ts.map +0 -1
  158. package/out/test/wallet/sync/Wallet.sync.test.d.ts.map +0 -1
  159. /package/out/test/{wallet → Wallet}/action/abortAction.test.d.ts +0 -0
  160. /package/out/test/{wallet → Wallet}/action/abortAction.test.js +0 -0
  161. /package/out/test/{wallet → Wallet}/action/createAction.test.d.ts +0 -0
  162. /package/out/test/{wallet → Wallet}/action/createAction.test.js +0 -0
  163. /package/out/test/{wallet → Wallet}/action/createAction2.test.d.ts +0 -0
  164. /package/out/test/{wallet → Wallet}/action/createAction2.test.js +0 -0
  165. /package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.d.ts +0 -0
  166. /package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.js +0 -0
  167. /package/out/test/{wallet → Wallet}/action/internalizeAction.test.d.ts +0 -0
  168. /package/out/test/{wallet → Wallet}/action/internalizeAction.test.js +0 -0
  169. /package/out/test/{wallet → Wallet}/action/relinquishOutput.test.d.ts +0 -0
  170. /package/out/test/{wallet → Wallet}/action/relinquishOutput.test.js +0 -0
  171. /package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.d.ts +0 -0
  172. /package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.js +0 -0
  173. /package/out/test/{wallet → Wallet}/list/listActions.test.d.ts +0 -0
  174. /package/out/test/{wallet → Wallet}/list/listActions.test.js +0 -0
  175. /package/out/test/{wallet → Wallet}/list/listActions2.test.d.ts +0 -0
  176. /package/out/test/{wallet → Wallet}/list/listActions2.test.js +0 -0
  177. /package/out/test/{wallet → Wallet}/list/listCertificates.test.d.ts +0 -0
  178. /package/out/test/{wallet → Wallet}/list/listCertificates.test.js +0 -0
  179. /package/out/test/{wallet → Wallet}/list/listOutputs.test.d.ts +0 -0
  180. /package/out/test/{wallet → Wallet}/list/listOutputs.test.js +0 -0
  181. /package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.d.ts +0 -0
  182. /package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.js +0 -0
  183. /package/test/{wallet → Wallet}/action/abortAction.test.ts +0 -0
  184. /package/test/{wallet → Wallet}/action/createAction.test.ts +0 -0
  185. /package/test/{wallet → Wallet}/action/createAction2.test.ts +0 -0
  186. /package/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.ts +0 -0
  187. /package/test/{wallet → Wallet}/action/internalizeAction.test.ts +0 -0
  188. /package/test/{wallet → Wallet}/action/relinquishOutput.test.ts +0 -0
  189. /package/test/{wallet → Wallet}/construct/Wallet.constructor.test.ts +0 -0
  190. /package/test/{wallet → Wallet}/list/listActions.test.ts +0 -0
  191. /package/test/{wallet → Wallet}/list/listActions2.test.ts +0 -0
  192. /package/test/{wallet → Wallet}/list/listCertificates.test.ts +0 -0
  193. /package/test/{wallet → Wallet}/list/listOutputs.test.ts +0 -0
  194. /package/test/{wallet → Wallet}/sync/Wallet.sync.test.ts +0 -0
package/docs/wallet.md CHANGED
@@ -13,55 +13,60 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
13
13
 
14
14
  | | | |
15
15
  | --- | --- | --- |
16
- | [ArcConfig](#interface-arcconfig) | [PostBeefResult](#interface-postbeefresult) | [TableProvenTxReqDynamics](#interface-tableproventxreqdynamics) |
17
- | [ArcMinerGetTxData](#interface-arcminergettxdata) | [PostBeefResultForTxidApi](#interface-postbeefresultfortxidapi) | [TableSettings](#interface-tablesettings) |
18
- | [AuthId](#interface-authid) | [PostReqsToNetworkDetails](#interface-postreqstonetworkdetails) | [TableSyncState](#interface-tablesyncstate) |
19
- | [BaseBlockHeader](#interface-baseblockheader) | [PostReqsToNetworkResult](#interface-postreqstonetworkresult) | [TableTransaction](#interface-tabletransaction) |
20
- | [BlockHeader](#interface-blockheader) | [PostTxResultForTxid](#interface-posttxresultfortxid) | [TableTxLabel](#interface-tabletxlabel) |
21
- | [BsvExchangeRate](#interface-bsvexchangerate) | [PostTxResultForTxidError](#interface-posttxresultfortxiderror) | [TableTxLabelMap](#interface-tabletxlabelmap) |
22
- | [CertOpsWallet](#interface-certopswallet) | [PostTxsResult](#interface-posttxsresult) | [TableUser](#interface-tableuser) |
23
- | [CommitNewTxResults](#interface-commitnewtxresults) | [ProcessSyncChunkResult](#interface-processsyncchunkresult) | [TaskPurgeParams](#interface-taskpurgeparams) |
24
- | [EntitySyncMap](#interface-entitysyncmap) | [ProvenOrRawTx](#interface-provenorrawtx) | [TrxToken](#interface-trxtoken) |
25
- | [EntityTimeStamp](#interface-entitytimestamp) | [ProvenTxFromTxidResult](#interface-proventxfromtxidresult) | [TscMerkleProofApi](#interface-tscmerkleproofapi) |
26
- | [ExchangeRatesIoApi](#interface-exchangeratesioapi) | [ProvenTxReqHistory](#interface-proventxreqhistory) | [TxScriptOffsets](#interface-txscriptoffsets) |
27
- | [FiatExchangeRates](#interface-fiatexchangerates) | [ProvenTxReqHistorySummaryApi](#interface-proventxreqhistorysummaryapi) | [UpdateProvenTxReqWithNewProvenTxArgs](#interface-updateproventxreqwithnewproventxargs) |
28
- | [FindCertificateFieldsArgs](#interface-findcertificatefieldsargs) | [ProvenTxReqNotify](#interface-proventxreqnotify) | [UpdateProvenTxReqWithNewProvenTxResult](#interface-updateproventxreqwithnewproventxresult) |
29
- | [FindCertificatesArgs](#interface-findcertificatesargs) | [PurgeParams](#interface-purgeparams) | [ValidAbortActionArgs](#interface-validabortactionargs) |
30
- | [FindCommissionsArgs](#interface-findcommissionsargs) | [PurgeResults](#interface-purgeresults) | [ValidAcquireCertificateArgs](#interface-validacquirecertificateargs) |
31
- | [FindForUserSincePagedArgs](#interface-findforusersincepagedargs) | [RequestSyncChunkArgs](#interface-requestsyncchunkargs) | [ValidAcquireDirectCertificateArgs](#interface-validacquiredirectcertificateargs) |
32
- | [FindMonitorEventsArgs](#interface-findmonitoreventsargs) | [ScriptTemplateParamsBRC29](#interface-scripttemplateparamsbrc29) | [ValidAcquireIssuanceCertificateArgs](#interface-validacquireissuancecertificateargs) |
33
- | [FindOutputBasketsArgs](#interface-findoutputbasketsargs) | [ScriptTemplateUnlock](#interface-scripttemplateunlock) | [ValidBasketInsertion](#interface-validbasketinsertion) |
34
- | [FindOutputTagMapsArgs](#interface-findoutputtagmapsargs) | [StorageCreateActionResult](#interface-storagecreateactionresult) | [ValidCreateActionArgs](#interface-validcreateactionargs) |
35
- | [FindOutputTagsArgs](#interface-findoutputtagsargs) | [StorageCreateTransactionSdkInput](#interface-storagecreatetransactionsdkinput) | [ValidCreateActionInput](#interface-validcreateactioninput) |
36
- | [FindOutputsArgs](#interface-findoutputsargs) | [StorageCreateTransactionSdkOutput](#interface-storagecreatetransactionsdkoutput) | [ValidCreateActionOptions](#interface-validcreateactionoptions) |
37
- | [FindPartialSincePagedArgs](#interface-findpartialsincepagedargs) | [StorageFeeModel](#interface-storagefeemodel) | [ValidCreateActionOutput](#interface-validcreateactionoutput) |
38
- | [FindProvenTxReqsArgs](#interface-findproventxreqsargs) | [StorageGetBeefOptions](#interface-storagegetbeefoptions) | [ValidDiscoverByAttributesArgs](#interface-validdiscoverbyattributesargs) |
39
- | [FindProvenTxsArgs](#interface-findproventxsargs) | [StorageIdentity](#interface-storageidentity) | [ValidDiscoverByIdentityKeyArgs](#interface-validdiscoverbyidentitykeyargs) |
40
- | [FindSincePagedArgs](#interface-findsincepagedargs) | [StorageInternalizeActionResult](#interface-storageinternalizeactionresult) | [ValidInternalizeActionArgs](#interface-validinternalizeactionargs) |
41
- | [FindSyncStatesArgs](#interface-findsyncstatesargs) | [StorageProcessActionArgs](#interface-storageprocessactionargs) | [ValidInternalizeOutput](#interface-validinternalizeoutput) |
42
- | [FindTransactionsArgs](#interface-findtransactionsargs) | [StorageProcessActionResults](#interface-storageprocessactionresults) | [ValidListActionsArgs](#interface-validlistactionsargs) |
43
- | [FindTxLabelMapsArgs](#interface-findtxlabelmapsargs) | [StorageProvenOrReq](#interface-storageprovenorreq) | [ValidListCertificatesArgs](#interface-validlistcertificatesargs) |
44
- | [FindTxLabelsArgs](#interface-findtxlabelsargs) | [StorageProviderOptions](#interface-storageprovideroptions) | [ValidListOutputsArgs](#interface-validlistoutputsargs) |
45
- | [FindUsersArgs](#interface-findusersargs) | [StorageReaderOptions](#interface-storagereaderoptions) | [ValidProcessActionArgs](#interface-validprocessactionargs) |
46
- | [GenerateChangeSdkChangeInput](#interface-generatechangesdkchangeinput) | [StorageReaderWriterOptions](#interface-storagereaderwriteroptions) | [ValidProcessActionOptions](#interface-validprocessactionoptions) |
47
- | [GenerateChangeSdkChangeOutput](#interface-generatechangesdkchangeoutput) | [StorageSyncReader](#interface-storagesyncreader) | [ValidProveCertificateArgs](#interface-validprovecertificateargs) |
48
- | [GenerateChangeSdkInput](#interface-generatechangesdkinput) | [StorageSyncReaderOptions](#interface-storagesyncreaderoptions) | [ValidRelinquishCertificateArgs](#interface-validrelinquishcertificateargs) |
49
- | [GenerateChangeSdkOutput](#interface-generatechangesdkoutput) | [StorageSyncReaderWriter](#interface-storagesyncreaderwriter) | [ValidRelinquishOutputArgs](#interface-validrelinquishoutputargs) |
50
- | [GenerateChangeSdkParams](#interface-generatechangesdkparams) | [SyncChunk](#interface-syncchunk) | [ValidSignActionArgs](#interface-validsignactionargs) |
51
- | [GenerateChangeSdkResult](#interface-generatechangesdkresult) | [SyncError](#interface-syncerror) | [ValidSignActionOptions](#interface-validsignactionoptions) |
52
- | [GenerateChangeSdkStorageChange](#interface-generatechangesdkstoragechange) | [SyncMap](#interface-syncmap) | [ValidWalletPayment](#interface-validwalletpayment) |
53
- | [GetMerklePathResult](#interface-getmerklepathresult) | [TableCertificate](#interface-tablecertificate) | [ValidWalletSignerArgs](#interface-validwalletsignerargs) |
54
- | [GetRawTxResult](#interface-getrawtxresult) | [TableCertificateField](#interface-tablecertificatefield) | [ValidateGenerateChangeSdkParamsResult](#interface-validategeneratechangesdkparamsresult) |
55
- | [GetReqsAndBeefDetail](#interface-getreqsandbeefdetail) | [TableCertificateX](#interface-tablecertificatex) | [WalletArgs](#interface-walletargs) |
56
- | [GetReqsAndBeefResult](#interface-getreqsandbeefresult) | [TableCommission](#interface-tablecommission) | [WalletServices](#interface-walletservices) |
57
- | [GetUtxoStatusDetails](#interface-getutxostatusdetails) | [TableMonitorEvent](#interface-tablemonitorevent) | [WalletServicesOptions](#interface-walletservicesoptions) |
58
- | [GetUtxoStatusResult](#interface-getutxostatusresult) | [TableOutput](#interface-tableoutput) | [WalletSigner](#interface-walletsigner) |
59
- | [KeyPair](#interface-keypair) | [TableOutputBasket](#interface-tableoutputbasket) | [WalletStorage](#interface-walletstorage) |
60
- | [MonitorOptions](#interface-monitoroptions) | [TableOutputTag](#interface-tableoutputtag) | [WalletStorageProvider](#interface-walletstorageprovider) |
61
- | [OutPoint](#interface-outpoint) | [TableOutputTagMap](#interface-tableoutputtagmap) | [WalletStorageReader](#interface-walletstoragereader) |
62
- | [Paged](#interface-paged) | [TableOutputX](#interface-tableoutputx) | [WalletStorageSync](#interface-walletstoragesync) |
63
- | [PendingSignAction](#interface-pendingsignaction) | [TableProvenTx](#interface-tableproventx) | [WalletStorageWriter](#interface-walletstoragewriter) |
64
- | [PendingStorageInput](#interface-pendingstorageinput) | [TableProvenTxReq](#interface-tableproventxreq) | [XValidCreateActionOutput](#interface-xvalidcreateactionoutput) |
16
+ | [ArcConfig](#interface-arcconfig) | [PermissionToken](#interface-permissiontoken) | [TableSyncState](#interface-tablesyncstate) |
17
+ | [ArcMinerGetTxData](#interface-arcminergettxdata) | [PermissionsManagerConfig](#interface-permissionsmanagerconfig) | [TableTransaction](#interface-tabletransaction) |
18
+ | [AuthId](#interface-authid) | [PostBeefResult](#interface-postbeefresult) | [TableTxLabel](#interface-tabletxlabel) |
19
+ | [AuthPayload](#interface-authpayload) | [PostBeefResultForTxidApi](#interface-postbeefresultfortxidapi) | [TableTxLabelMap](#interface-tabletxlabelmap) |
20
+ | [BaseBlockHeader](#interface-baseblockheader) | [PostReqsToNetworkDetails](#interface-postreqstonetworkdetails) | [TableUser](#interface-tableuser) |
21
+ | [BlockHeader](#interface-blockheader) | [PostReqsToNetworkResult](#interface-postreqstonetworkresult) | [TaskPurgeParams](#interface-taskpurgeparams) |
22
+ | [BsvExchangeRate](#interface-bsvexchangerate) | [PostTxResultForTxid](#interface-posttxresultfortxid) | [TrustSettings](#interface-trustsettings) |
23
+ | [CertOpsWallet](#interface-certopswallet) | [PostTxResultForTxidError](#interface-posttxresultfortxiderror) | [TrxToken](#interface-trxtoken) |
24
+ | [Certifier](#interface-certifier) | [PostTxsResult](#interface-posttxsresult) | [TscMerkleProofApi](#interface-tscmerkleproofapi) |
25
+ | [CommitNewTxResults](#interface-commitnewtxresults) | [ProcessSyncChunkResult](#interface-processsyncchunkresult) | [TxScriptOffsets](#interface-txscriptoffsets) |
26
+ | [CompleteAuthResponse](#interface-completeauthresponse) | [ProvenOrRawTx](#interface-provenorrawtx) | [UMPToken](#interface-umptoken) |
27
+ | [EntitySyncMap](#interface-entitysyncmap) | [ProvenTxFromTxidResult](#interface-proventxfromtxidresult) | [UMPTokenInteractor](#interface-umptokeninteractor) |
28
+ | [EntityTimeStamp](#interface-entitytimestamp) | [ProvenTxReqHistory](#interface-proventxreqhistory) | [UpdateProvenTxReqWithNewProvenTxArgs](#interface-updateproventxreqwithnewproventxargs) |
29
+ | [ExchangeRatesIoApi](#interface-exchangeratesioapi) | [ProvenTxReqHistorySummaryApi](#interface-proventxreqhistorysummaryapi) | [UpdateProvenTxReqWithNewProvenTxResult](#interface-updateproventxreqwithnewproventxresult) |
30
+ | [ExtendedVerifiableCertificate](#interface-extendedverifiablecertificate) | [ProvenTxReqNotify](#interface-proventxreqnotify) | [ValidAbortActionArgs](#interface-validabortactionargs) |
31
+ | [FiatExchangeRates](#interface-fiatexchangerates) | [PurgeParams](#interface-purgeparams) | [ValidAcquireCertificateArgs](#interface-validacquirecertificateargs) |
32
+ | [FindCertificateFieldsArgs](#interface-findcertificatefieldsargs) | [PurgeResults](#interface-purgeresults) | [ValidAcquireDirectCertificateArgs](#interface-validacquiredirectcertificateargs) |
33
+ | [FindCertificatesArgs](#interface-findcertificatesargs) | [RequestSyncChunkArgs](#interface-requestsyncchunkargs) | [ValidAcquireIssuanceCertificateArgs](#interface-validacquireissuancecertificateargs) |
34
+ | [FindCommissionsArgs](#interface-findcommissionsargs) | [ScriptTemplateParamsBRC29](#interface-scripttemplateparamsbrc29) | [ValidBasketInsertion](#interface-validbasketinsertion) |
35
+ | [FindForUserSincePagedArgs](#interface-findforusersincepagedargs) | [ScriptTemplateUnlock](#interface-scripttemplateunlock) | [ValidCreateActionArgs](#interface-validcreateactionargs) |
36
+ | [FindMonitorEventsArgs](#interface-findmonitoreventsargs) | [StartAuthResponse](#interface-startauthresponse) | [ValidCreateActionInput](#interface-validcreateactioninput) |
37
+ | [FindOutputBasketsArgs](#interface-findoutputbasketsargs) | [StorageCreateActionResult](#interface-storagecreateactionresult) | [ValidCreateActionOptions](#interface-validcreateactionoptions) |
38
+ | [FindOutputTagMapsArgs](#interface-findoutputtagmapsargs) | [StorageCreateTransactionSdkInput](#interface-storagecreatetransactionsdkinput) | [ValidCreateActionOutput](#interface-validcreateactionoutput) |
39
+ | [FindOutputTagsArgs](#interface-findoutputtagsargs) | [StorageCreateTransactionSdkOutput](#interface-storagecreatetransactionsdkoutput) | [ValidDiscoverByAttributesArgs](#interface-validdiscoverbyattributesargs) |
40
+ | [FindOutputsArgs](#interface-findoutputsargs) | [StorageFeeModel](#interface-storagefeemodel) | [ValidDiscoverByIdentityKeyArgs](#interface-validdiscoverbyidentitykeyargs) |
41
+ | [FindPartialSincePagedArgs](#interface-findpartialsincepagedargs) | [StorageGetBeefOptions](#interface-storagegetbeefoptions) | [ValidInternalizeActionArgs](#interface-validinternalizeactionargs) |
42
+ | [FindProvenTxReqsArgs](#interface-findproventxreqsargs) | [StorageIdentity](#interface-storageidentity) | [ValidInternalizeOutput](#interface-validinternalizeoutput) |
43
+ | [FindProvenTxsArgs](#interface-findproventxsargs) | [StorageInternalizeActionResult](#interface-storageinternalizeactionresult) | [ValidListActionsArgs](#interface-validlistactionsargs) |
44
+ | [FindSincePagedArgs](#interface-findsincepagedargs) | [StorageProcessActionArgs](#interface-storageprocessactionargs) | [ValidListCertificatesArgs](#interface-validlistcertificatesargs) |
45
+ | [FindSyncStatesArgs](#interface-findsyncstatesargs) | [StorageProcessActionResults](#interface-storageprocessactionresults) | [ValidListOutputsArgs](#interface-validlistoutputsargs) |
46
+ | [FindTransactionsArgs](#interface-findtransactionsargs) | [StorageProvenOrReq](#interface-storageprovenorreq) | [ValidProcessActionArgs](#interface-validprocessactionargs) |
47
+ | [FindTxLabelMapsArgs](#interface-findtxlabelmapsargs) | [StorageProviderOptions](#interface-storageprovideroptions) | [ValidProcessActionOptions](#interface-validprocessactionoptions) |
48
+ | [FindTxLabelsArgs](#interface-findtxlabelsargs) | [StorageReaderOptions](#interface-storagereaderoptions) | [ValidProveCertificateArgs](#interface-validprovecertificateargs) |
49
+ | [FindUsersArgs](#interface-findusersargs) | [StorageReaderWriterOptions](#interface-storagereaderwriteroptions) | [ValidRelinquishCertificateArgs](#interface-validrelinquishcertificateargs) |
50
+ | [GenerateChangeSdkChangeInput](#interface-generatechangesdkchangeinput) | [StorageSyncReader](#interface-storagesyncreader) | [ValidRelinquishOutputArgs](#interface-validrelinquishoutputargs) |
51
+ | [GenerateChangeSdkChangeOutput](#interface-generatechangesdkchangeoutput) | [StorageSyncReaderOptions](#interface-storagesyncreaderoptions) | [ValidSignActionArgs](#interface-validsignactionargs) |
52
+ | [GenerateChangeSdkInput](#interface-generatechangesdkinput) | [StorageSyncReaderWriter](#interface-storagesyncreaderwriter) | [ValidSignActionOptions](#interface-validsignactionoptions) |
53
+ | [GenerateChangeSdkOutput](#interface-generatechangesdkoutput) | [SyncChunk](#interface-syncchunk) | [ValidWalletPayment](#interface-validwalletpayment) |
54
+ | [GenerateChangeSdkParams](#interface-generatechangesdkparams) | [SyncError](#interface-syncerror) | [ValidWalletSignerArgs](#interface-validwalletsignerargs) |
55
+ | [GenerateChangeSdkResult](#interface-generatechangesdkresult) | [SyncMap](#interface-syncmap) | [ValidateGenerateChangeSdkParamsResult](#interface-validategeneratechangesdkparamsresult) |
56
+ | [GenerateChangeSdkStorageChange](#interface-generatechangesdkstoragechange) | [TableCertificate](#interface-tablecertificate) | [WalletArgs](#interface-walletargs) |
57
+ | [GetMerklePathResult](#interface-getmerklepathresult) | [TableCertificateField](#interface-tablecertificatefield) | [WalletPermissionsManagerCallbacks](#interface-walletpermissionsmanagercallbacks) |
58
+ | [GetRawTxResult](#interface-getrawtxresult) | [TableCertificateX](#interface-tablecertificatex) | [WalletServices](#interface-walletservices) |
59
+ | [GetReqsAndBeefDetail](#interface-getreqsandbeefdetail) | [TableCommission](#interface-tablecommission) | [WalletServicesOptions](#interface-walletservicesoptions) |
60
+ | [GetReqsAndBeefResult](#interface-getreqsandbeefresult) | [TableMonitorEvent](#interface-tablemonitorevent) | [WalletSettings](#interface-walletsettings) |
61
+ | [GetUtxoStatusDetails](#interface-getutxostatusdetails) | [TableOutput](#interface-tableoutput) | [WalletSettingsManagerConfig](#interface-walletsettingsmanagerconfig) |
62
+ | [GetUtxoStatusResult](#interface-getutxostatusresult) | [TableOutputBasket](#interface-tableoutputbasket) | [WalletSigner](#interface-walletsigner) |
63
+ | [KeyPair](#interface-keypair) | [TableOutputTag](#interface-tableoutputtag) | [WalletStorage](#interface-walletstorage) |
64
+ | [MonitorOptions](#interface-monitoroptions) | [TableOutputTagMap](#interface-tableoutputtagmap) | [WalletStorageProvider](#interface-walletstorageprovider) |
65
+ | [OutPoint](#interface-outpoint) | [TableOutputX](#interface-tableoutputx) | [WalletStorageReader](#interface-walletstoragereader) |
66
+ | [Paged](#interface-paged) | [TableProvenTx](#interface-tableproventx) | [WalletStorageSync](#interface-walletstoragesync) |
67
+ | [PendingSignAction](#interface-pendingsignaction) | [TableProvenTxReq](#interface-tableproventxreq) | [WalletStorageWriter](#interface-walletstoragewriter) |
68
+ | [PendingStorageInput](#interface-pendingstorageinput) | [TableProvenTxReqDynamics](#interface-tableproventxreqdynamics) | [WalletTheme](#interface-wallettheme) |
69
+ | [PermissionRequest](#interface-permissionrequest) | [TableSettings](#interface-tablesettings) | [XValidCreateActionOutput](#interface-xvalidcreateactionoutput) |
65
70
 
66
71
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
67
72
 
@@ -165,6 +170,22 @@ export interface AuthId {
165
170
 
166
171
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
167
172
 
173
+ ---
174
+ ##### Interface: AuthPayload
175
+
176
+ AuthMethodInteractor
177
+
178
+ A base interface/class for client-side logic to interact with a server
179
+ for a specific Auth Method's flow (start, complete).
180
+
181
+ ```ts
182
+ export interface AuthPayload {
183
+ [key: string]: any;
184
+ }
185
+ ```
186
+
187
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
188
+
168
189
  ---
169
190
  ##### Interface: BaseBlockHeader
170
191
 
@@ -292,6 +313,22 @@ export interface CertOpsWallet {
292
313
 
293
314
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
294
315
 
316
+ ---
317
+ ##### Interface: Certifier
318
+
319
+ ```ts
320
+ export interface Certifier {
321
+ name: string;
322
+ description: string;
323
+ identityKey: PubKeyHex;
324
+ trust: number;
325
+ iconUrl?: string;
326
+ baseURL?: string;
327
+ }
328
+ ```
329
+
330
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
331
+
295
332
  ---
296
333
  ##### Interface: CommitNewTxResults
297
334
 
@@ -306,6 +343,19 @@ See also: [EntityProvenTxReq](./storage.md#class-entityproventxreq)
306
343
 
307
344
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
308
345
 
346
+ ---
347
+ ##### Interface: CompleteAuthResponse
348
+
349
+ ```ts
350
+ export interface CompleteAuthResponse {
351
+ success: boolean;
352
+ message?: string;
353
+ presentationKey?: string;
354
+ }
355
+ ```
356
+
357
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
358
+
309
359
  ---
310
360
  ##### Interface: EntitySyncMap
311
361
 
@@ -376,6 +426,18 @@ export interface ExchangeRatesIoApi {
376
426
 
377
427
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
378
428
 
429
+ ---
430
+ ##### Interface: ExtendedVerifiableCertificate
431
+
432
+ ```ts
433
+ export interface ExtendedVerifiableCertificate extends IdentityCertificate {
434
+ certifierInfo: IdentityCertifier;
435
+ publiclyRevealedKeyring: Record<string, Base64String>;
436
+ }
437
+ ```
438
+
439
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
440
+
379
441
  ---
380
442
  ##### Interface: FiatExchangeRates
381
443
 
@@ -1149,6 +1211,411 @@ export interface PendingStorageInput {
1149
1211
 
1150
1212
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
1151
1213
 
1214
+ ---
1215
+ ##### Interface: PermissionRequest
1216
+
1217
+ Describes a single requested permission that the user must either grant or deny.
1218
+
1219
+ Four categories of permission are supported, each with a unique protocol:
1220
+ 1) protocol - "DPACP" (Domain Protocol Access Control Protocol)
1221
+ 2) basket - "DBAP" (Domain Basket Access Protocol)
1222
+ 3) certificate - "DCAP" (Domain Certificate Access Protocol)
1223
+ 4) spending - "DSAP" (Domain Spending Authorization Protocol)
1224
+
1225
+ This model underpins "requests" made to the user for permission, which the user can
1226
+ either grant or deny. The manager can then create on-chain tokens (PushDrop outputs)
1227
+ if permission is granted. Denying requests cause the underlying operation to throw,
1228
+ and no token is created. An "ephemeral" grant is also possible, denoting a one-time
1229
+ authorization without an associated persistent on-chain token.
1230
+
1231
+ ```ts
1232
+ export interface PermissionRequest {
1233
+ type: "protocol" | "basket" | "certificate" | "spending";
1234
+ originator: string;
1235
+ privileged?: boolean;
1236
+ protocolID?: [
1237
+ 0 | 1 | 2,
1238
+ string
1239
+ ];
1240
+ counterparty?: string;
1241
+ basket?: string;
1242
+ certificate?: {
1243
+ verifier: string;
1244
+ certType: string;
1245
+ fields: string[];
1246
+ };
1247
+ spending?: {
1248
+ satoshis: number;
1249
+ lineItems?: Array<{
1250
+ type: "input" | "output" | "fee";
1251
+ description: string;
1252
+ satoshis: number;
1253
+ }>;
1254
+ };
1255
+ reason?: string;
1256
+ renewal?: boolean;
1257
+ previousToken?: PermissionToken;
1258
+ }
1259
+ ```
1260
+
1261
+ See also: [PermissionToken](./client.md#interface-permissiontoken)
1262
+
1263
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
1264
+
1265
+ ---
1266
+ ##### Interface: PermissionToken
1267
+
1268
+ Data structure representing an on-chain permission token.
1269
+ It is typically stored as a single unspent PushDrop output in a special "internal" admin basket belonging to
1270
+ the user, held in their underlying wallet.
1271
+
1272
+ It can represent any of the four permission categories by having the relevant fields:
1273
+ - DPACP: originator, privileged, protocol, securityLevel, counterparty
1274
+ - DBAP: originator, basketName
1275
+ - DCAP: originator, privileged, verifier, certType, certFields
1276
+ - DSAP: originator, authorizedAmount
1277
+
1278
+ ```ts
1279
+ export interface PermissionToken {
1280
+ txid: string;
1281
+ outputIndex: number;
1282
+ outputScript: string;
1283
+ satoshis: number;
1284
+ originator: string;
1285
+ expiry: number;
1286
+ privileged?: boolean;
1287
+ protocol?: string;
1288
+ securityLevel?: 0 | 1 | 2;
1289
+ counterparty?: string;
1290
+ basketName?: string;
1291
+ certType?: string;
1292
+ certFields?: string[];
1293
+ verifier?: string;
1294
+ authorizedAmount?: number;
1295
+ }
1296
+ ```
1297
+
1298
+ ###### Property authorizedAmount
1299
+
1300
+ For DSAP, the maximum authorized spending for the month.
1301
+
1302
+ ```ts
1303
+ authorizedAmount?: number
1304
+ ```
1305
+
1306
+ ###### Property basketName
1307
+
1308
+ The name of a basket, if this is a DBAP token.
1309
+
1310
+ ```ts
1311
+ basketName?: string
1312
+ ```
1313
+
1314
+ ###### Property certFields
1315
+
1316
+ The certificate fields that this token covers, if DCAP token.
1317
+
1318
+ ```ts
1319
+ certFields?: string[]
1320
+ ```
1321
+
1322
+ ###### Property certType
1323
+
1324
+ The certificate type, if this is a DCAP token.
1325
+
1326
+ ```ts
1327
+ certType?: string
1328
+ ```
1329
+
1330
+ ###### Property counterparty
1331
+
1332
+ The counterparty, for DPACP.
1333
+
1334
+ ```ts
1335
+ counterparty?: string
1336
+ ```
1337
+
1338
+ ###### Property expiry
1339
+
1340
+ The expiration time for this token in UNIX epoch seconds. (0 or omitted for spending authorizations, which are indefinite)
1341
+
1342
+ ```ts
1343
+ expiry: number
1344
+ ```
1345
+
1346
+ ###### Property originator
1347
+
1348
+ The originator domain or FQDN that is allowed to use this permission.
1349
+
1350
+ ```ts
1351
+ originator: string
1352
+ ```
1353
+
1354
+ ###### Property outputIndex
1355
+
1356
+ The output index within that transaction.
1357
+
1358
+ ```ts
1359
+ outputIndex: number
1360
+ ```
1361
+
1362
+ ###### Property outputScript
1363
+
1364
+ The exact script hex for the locking script.
1365
+
1366
+ ```ts
1367
+ outputScript: string
1368
+ ```
1369
+
1370
+ ###### Property privileged
1371
+
1372
+ Whether this token grants privileged usage (for protocol or certificate).
1373
+
1374
+ ```ts
1375
+ privileged?: boolean
1376
+ ```
1377
+
1378
+ ###### Property protocol
1379
+
1380
+ The protocol name, if this is a DPACP token.
1381
+
1382
+ ```ts
1383
+ protocol?: string
1384
+ ```
1385
+
1386
+ ###### Property satoshis
1387
+
1388
+ The amount of satoshis assigned to the permission output (often 1).
1389
+
1390
+ ```ts
1391
+ satoshis: number
1392
+ ```
1393
+
1394
+ ###### Property securityLevel
1395
+
1396
+ The security level (0,1,2) for DPACP.
1397
+
1398
+ ```ts
1399
+ securityLevel?: 0 | 1 | 2
1400
+ ```
1401
+
1402
+ ###### Property txid
1403
+
1404
+ The transaction ID where this token resides.
1405
+
1406
+ ```ts
1407
+ txid: string
1408
+ ```
1409
+
1410
+ ###### Property verifier
1411
+
1412
+ The "verifier" public key string, if DCAP.
1413
+
1414
+ ```ts
1415
+ verifier?: string
1416
+ ```
1417
+
1418
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
1419
+
1420
+ ---
1421
+ ##### Interface: PermissionsManagerConfig
1422
+
1423
+ Configuration object for the WalletPermissionsManager. If a given option is `false`,
1424
+ the manager will skip or alter certain permission checks or behaviors.
1425
+
1426
+ By default, all of these are `true` unless specified otherwise. This is the most secure configuration.
1427
+
1428
+ ```ts
1429
+ export interface PermissionsManagerConfig {
1430
+ seekProtocolPermissionsForSigning?: boolean;
1431
+ seekProtocolPermissionsForEncrypting?: boolean;
1432
+ seekProtocolPermissionsForHMAC?: boolean;
1433
+ seekPermissionsForKeyLinkageRevelation?: boolean;
1434
+ seekPermissionsForPublicKeyRevelation?: boolean;
1435
+ seekPermissionsForIdentityKeyRevelation?: boolean;
1436
+ seekPermissionsForIdentityResolution?: boolean;
1437
+ seekBasketInsertionPermissions?: boolean;
1438
+ seekBasketRemovalPermissions?: boolean;
1439
+ seekBasketListingPermissions?: boolean;
1440
+ seekPermissionWhenApplyingActionLabels?: boolean;
1441
+ seekPermissionWhenListingActionsByLabel?: boolean;
1442
+ seekCertificateDisclosurePermissions?: boolean;
1443
+ seekCertificateAcquisitionPermissions?: boolean;
1444
+ seekCertificateRelinquishmentPermissions?: boolean;
1445
+ seekCertificateListingPermissions?: boolean;
1446
+ encryptWalletMetadata?: boolean;
1447
+ seekSpendingPermissions?: boolean;
1448
+ differentiatePrivilegedOperations?: boolean;
1449
+ }
1450
+ ```
1451
+
1452
+ ###### Property differentiatePrivilegedOperations
1453
+
1454
+ If false, permissions are checked without regard for whether we are in
1455
+ privileged mode. Privileged status is ignored with respect to whether
1456
+ permissions are granted. Internally, they are always sought and checked
1457
+ with privileged=false, regardless of the actual value.
1458
+
1459
+ ```ts
1460
+ differentiatePrivilegedOperations?: boolean
1461
+ ```
1462
+
1463
+ ###### Property encryptWalletMetadata
1464
+
1465
+ Should transaction descriptions, input descriptions, and output descriptions be encrypted
1466
+ when before they are passed to the underlying wallet, and transparently decrypted when retrieved?
1467
+
1468
+ ```ts
1469
+ encryptWalletMetadata?: boolean
1470
+ ```
1471
+
1472
+ ###### Property seekBasketInsertionPermissions
1473
+
1474
+ When we do internalizeAction with `basket insertion`, or include outputs in baskets
1475
+ with `createAction, do we ask for basket permission?
1476
+
1477
+ ```ts
1478
+ seekBasketInsertionPermissions?: boolean
1479
+ ```
1480
+
1481
+ ###### Property seekBasketListingPermissions
1482
+
1483
+ When listOutputs is called, do we ask for basket permission?
1484
+
1485
+ ```ts
1486
+ seekBasketListingPermissions?: boolean
1487
+ ```
1488
+
1489
+ ###### Property seekBasketRemovalPermissions
1490
+
1491
+ When relinquishOutput is called, do we ask for basket permission?
1492
+
1493
+ ```ts
1494
+ seekBasketRemovalPermissions?: boolean
1495
+ ```
1496
+
1497
+ ###### Property seekCertificateAcquisitionPermissions
1498
+
1499
+ If acquiring a certificate (acquireCertificate), do we require a permission check?
1500
+
1501
+ ```ts
1502
+ seekCertificateAcquisitionPermissions?: boolean
1503
+ ```
1504
+
1505
+ ###### Property seekCertificateDisclosurePermissions
1506
+
1507
+ If proving a certificate (proveCertificate) or revealing certificate fields,
1508
+ do we require a "certificate access" permission?
1509
+
1510
+ ```ts
1511
+ seekCertificateDisclosurePermissions?: boolean
1512
+ ```
1513
+
1514
+ ###### Property seekCertificateListingPermissions
1515
+
1516
+ If listing a user's certificates (listCertificates), do we require a permission check?
1517
+
1518
+ ```ts
1519
+ seekCertificateListingPermissions?: boolean
1520
+ ```
1521
+
1522
+ ###### Property seekCertificateRelinquishmentPermissions
1523
+
1524
+ If relinquishing a certificate (relinquishCertificate), do we require a permission check?
1525
+
1526
+ ```ts
1527
+ seekCertificateRelinquishmentPermissions?: boolean
1528
+ ```
1529
+
1530
+ ###### Property seekPermissionWhenApplyingActionLabels
1531
+
1532
+ When createAction is called with labels, do we ask for "label usage" permission?
1533
+
1534
+ ```ts
1535
+ seekPermissionWhenApplyingActionLabels?: boolean
1536
+ ```
1537
+
1538
+ ###### Property seekPermissionWhenListingActionsByLabel
1539
+
1540
+ When listActions is called with labels, do we ask for "label usage" permission?
1541
+
1542
+ ```ts
1543
+ seekPermissionWhenListingActionsByLabel?: boolean
1544
+ ```
1545
+
1546
+ ###### Property seekPermissionsForIdentityKeyRevelation
1547
+
1548
+ If getPublicKey is requested with `identityKey=true`, do we require permission?
1549
+
1550
+ ```ts
1551
+ seekPermissionsForIdentityKeyRevelation?: boolean
1552
+ ```
1553
+
1554
+ ###### Property seekPermissionsForIdentityResolution
1555
+
1556
+ If discoverByIdentityKey / discoverByAttributes are called, do we require permission
1557
+ for "identity resolution" usage?
1558
+
1559
+ ```ts
1560
+ seekPermissionsForIdentityResolution?: boolean
1561
+ ```
1562
+
1563
+ ###### Property seekPermissionsForKeyLinkageRevelation
1564
+
1565
+ For revealing counterparty-level or specific key linkage revelation information,
1566
+ should we require permission?
1567
+
1568
+ ```ts
1569
+ seekPermissionsForKeyLinkageRevelation?: boolean
1570
+ ```
1571
+
1572
+ ###### Property seekPermissionsForPublicKeyRevelation
1573
+
1574
+ For revealing any user public key (getPublicKey) **other** than the identity key,
1575
+ should we require permission?
1576
+
1577
+ ```ts
1578
+ seekPermissionsForPublicKeyRevelation?: boolean
1579
+ ```
1580
+
1581
+ ###### Property seekProtocolPermissionsForEncrypting
1582
+
1583
+ For methods that perform encryption (encrypt/decrypt), require
1584
+ a "protocol usage" permission check?
1585
+
1586
+ ```ts
1587
+ seekProtocolPermissionsForEncrypting?: boolean
1588
+ ```
1589
+
1590
+ ###### Property seekProtocolPermissionsForHMAC
1591
+
1592
+ For methods that perform HMAC creation or verification (createHmac, verifyHmac),
1593
+ require a "protocol usage" permission check?
1594
+
1595
+ ```ts
1596
+ seekProtocolPermissionsForHMAC?: boolean
1597
+ ```
1598
+
1599
+ ###### Property seekProtocolPermissionsForSigning
1600
+
1601
+ For `createSignature` and `verifySignature`,
1602
+ require a "protocol usage" permission check?
1603
+
1604
+ ```ts
1605
+ seekProtocolPermissionsForSigning?: boolean
1606
+ ```
1607
+
1608
+ ###### Property seekSpendingPermissions
1609
+
1610
+ If the originator tries to spend wallet funds (netSpent > 0 in createAction),
1611
+ do we seek spending authorization?
1612
+
1613
+ ```ts
1614
+ seekSpendingPermissions?: boolean
1615
+ ```
1616
+
1617
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
1618
+
1152
1619
  ---
1153
1620
  ##### Interface: PostBeefResult
1154
1621
 
@@ -1607,15 +2074,28 @@ export interface ScriptTemplateUnlock {
1607
2074
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
1608
2075
 
1609
2076
  ---
1610
- ##### Interface: StorageCreateActionResult
2077
+ ##### Interface: StartAuthResponse
1611
2078
 
1612
2079
  ```ts
1613
- export interface StorageCreateActionResult {
1614
- inputBeef?: number[];
1615
- inputs: StorageCreateTransactionSdkInput[];
1616
- outputs: StorageCreateTransactionSdkOutput[];
1617
- noSendChangeOutputVouts?: number[];
1618
- derivationPrefix: string;
2080
+ export interface StartAuthResponse {
2081
+ success: boolean;
2082
+ message?: string;
2083
+ data?: any;
2084
+ }
2085
+ ```
2086
+
2087
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
2088
+
2089
+ ---
2090
+ ##### Interface: StorageCreateActionResult
2091
+
2092
+ ```ts
2093
+ export interface StorageCreateActionResult {
2094
+ inputBeef?: number[];
2095
+ inputs: StorageCreateTransactionSdkInput[];
2096
+ outputs: StorageCreateTransactionSdkOutput[];
2097
+ noSendChangeOutputVouts?: number[];
2098
+ derivationPrefix: string;
1619
2099
  version: number;
1620
2100
  lockTime: number;
1621
2101
  reference: string;
@@ -2737,6 +3217,20 @@ See also: [PurgeParams](./client.md#interface-purgeparams)
2737
3217
 
2738
3218
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
2739
3219
 
3220
+ ---
3221
+ ##### Interface: TrustSettings
3222
+
3223
+ ```ts
3224
+ export interface TrustSettings {
3225
+ trustLevel: number;
3226
+ trustedCertifiers: Certifier[];
3227
+ }
3228
+ ```
3229
+
3230
+ See also: [Certifier](./client.md#interface-certifier)
3231
+
3232
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3233
+
2740
3234
  ---
2741
3235
  ##### Interface: TrxToken
2742
3236
 
@@ -2782,6 +3276,172 @@ export interface TxScriptOffsets {
2782
3276
 
2783
3277
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
2784
3278
 
3279
+ ---
3280
+ ##### Interface: UMPToken
3281
+
3282
+ Describes the structure of a User Management Protocol (UMP) token.
3283
+
3284
+ ```ts
3285
+ export interface UMPToken {
3286
+ passwordPresentationPrimary: number[];
3287
+ passwordRecoveryPrimary: number[];
3288
+ presentationRecoveryPrimary: number[];
3289
+ passwordPrimaryPrivileged: number[];
3290
+ presentationRecoveryPrivileged: number[];
3291
+ presentationHash: number[];
3292
+ passwordSalt: number[];
3293
+ recoveryHash: number[];
3294
+ presentationKeyEncrypted: number[];
3295
+ recoveryKeyEncrypted: number[];
3296
+ passwordKeyEncrypted: number[];
3297
+ currentOutpoint?: OutpointString;
3298
+ }
3299
+ ```
3300
+
3301
+ ###### Property currentOutpoint
3302
+
3303
+ Describes the token's location on-chain, if it's already been published.
3304
+
3305
+ ```ts
3306
+ currentOutpoint?: OutpointString
3307
+ ```
3308
+
3309
+ ###### Property passwordKeyEncrypted
3310
+
3311
+ A copy of the password key encrypted with the privileged key.
3312
+
3313
+ ```ts
3314
+ passwordKeyEncrypted: number[]
3315
+ ```
3316
+
3317
+ ###### Property passwordPresentationPrimary
3318
+
3319
+ Primary key encrypted by the XOR of the password and presentation keys.
3320
+
3321
+ ```ts
3322
+ passwordPresentationPrimary: number[]
3323
+ ```
3324
+
3325
+ ###### Property passwordPrimaryPrivileged
3326
+
3327
+ Privileged key encrypted by the XOR of the password and primary keys.
3328
+
3329
+ ```ts
3330
+ passwordPrimaryPrivileged: number[]
3331
+ ```
3332
+
3333
+ ###### Property passwordRecoveryPrimary
3334
+
3335
+ Primary key encrypted by the XOR of the password and recovery keys.
3336
+
3337
+ ```ts
3338
+ passwordRecoveryPrimary: number[]
3339
+ ```
3340
+
3341
+ ###### Property passwordSalt
3342
+
3343
+ PBKDF2 salt used in conjunction with the password to derive the password key.
3344
+
3345
+ ```ts
3346
+ passwordSalt: number[]
3347
+ ```
3348
+
3349
+ ###### Property presentationHash
3350
+
3351
+ Hash of the presentation key.
3352
+
3353
+ ```ts
3354
+ presentationHash: number[]
3355
+ ```
3356
+
3357
+ ###### Property presentationKeyEncrypted
3358
+
3359
+ A copy of the presentation key encrypted with the privileged key.
3360
+
3361
+ ```ts
3362
+ presentationKeyEncrypted: number[]
3363
+ ```
3364
+
3365
+ ###### Property presentationRecoveryPrimary
3366
+
3367
+ Primary key encrypted by the XOR of the presentation and recovery keys.
3368
+
3369
+ ```ts
3370
+ presentationRecoveryPrimary: number[]
3371
+ ```
3372
+
3373
+ ###### Property presentationRecoveryPrivileged
3374
+
3375
+ Privileged key encrypted by the XOR of the presentation and recovery keys.
3376
+
3377
+ ```ts
3378
+ presentationRecoveryPrivileged: number[]
3379
+ ```
3380
+
3381
+ ###### Property recoveryHash
3382
+
3383
+ Hash of the recovery key.
3384
+
3385
+ ```ts
3386
+ recoveryHash: number[]
3387
+ ```
3388
+
3389
+ ###### Property recoveryKeyEncrypted
3390
+
3391
+ A copy of the recovery key encrypted with the privileged key.
3392
+
3393
+ ```ts
3394
+ recoveryKeyEncrypted: number[]
3395
+ ```
3396
+
3397
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3398
+
3399
+ ---
3400
+ ##### Interface: UMPTokenInteractor
3401
+
3402
+ Describes a system capable of finding and updating UMP tokens on the blockchain.
3403
+
3404
+ ```ts
3405
+ export interface UMPTokenInteractor {
3406
+ findByPresentationKeyHash: (hash: number[]) => Promise<UMPToken | undefined>;
3407
+ findByRecoveryKeyHash: (hash: number[]) => Promise<UMPToken | undefined>;
3408
+ buildAndSend: (wallet: WalletInterface, adminOriginator: OriginatorDomainNameStringUnder250Bytes, token: UMPToken, oldTokenToConsume?: UMPToken) => Promise<OutpointString>;
3409
+ }
3410
+ ```
3411
+
3412
+ See also: [UMPToken](./client.md#interface-umptoken)
3413
+
3414
+ ###### Property buildAndSend
3415
+
3416
+ Creates (and optionally consumes the previous version of) a UMP token on-chain.
3417
+
3418
+ ```ts
3419
+ buildAndSend: (wallet: WalletInterface, adminOriginator: OriginatorDomainNameStringUnder250Bytes, token: UMPToken, oldTokenToConsume?: UMPToken) => Promise<OutpointString>
3420
+ ```
3421
+ See also: [UMPToken](./client.md#interface-umptoken)
3422
+
3423
+ ###### Property findByPresentationKeyHash
3424
+
3425
+ Locates the latest valid copy of a UMP token (including its outpoint)
3426
+ based on the presentation key hash.
3427
+
3428
+ ```ts
3429
+ findByPresentationKeyHash: (hash: number[]) => Promise<UMPToken | undefined>
3430
+ ```
3431
+ See also: [UMPToken](./client.md#interface-umptoken)
3432
+
3433
+ ###### Property findByRecoveryKeyHash
3434
+
3435
+ Locates the latest valid copy of a UMP token (including its outpoint)
3436
+ based on the recovery key hash.
3437
+
3438
+ ```ts
3439
+ findByRecoveryKeyHash: (hash: number[]) => Promise<UMPToken | undefined>
3440
+ ```
3441
+ See also: [UMPToken](./client.md#interface-umptoken)
3442
+
3443
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3444
+
2785
3445
  ---
2786
3446
  ##### Interface: UpdateProvenTxReqWithNewProvenTxArgs
2787
3447
 
@@ -3298,10 +3958,31 @@ export interface WalletArgs {
3298
3958
  services?: sdk.WalletServices;
3299
3959
  monitor?: Monitor;
3300
3960
  privilegedKeyManager?: sdk.PrivilegedKeyManager;
3961
+ settingsManager?: WalletSettingsManager;
3962
+ lookupResolver?: LookupResolver;
3301
3963
  }
3302
3964
  ```
3303
3965
 
3304
- See also: [Chain](./client.md#type-chain), [Monitor](./monitor.md#class-monitor), [PrivilegedKeyManager](./client.md#class-privilegedkeymanager), [WalletServices](./client.md#interface-walletservices), [WalletStorageManager](./storage.md#class-walletstoragemanager)
3966
+ See also: [Chain](./client.md#type-chain), [Monitor](./monitor.md#class-monitor), [PrivilegedKeyManager](./client.md#class-privilegedkeymanager), [WalletServices](./client.md#interface-walletservices), [WalletSettingsManager](./client.md#class-walletsettingsmanager), [WalletStorageManager](./storage.md#class-walletstoragemanager)
3967
+
3968
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3969
+
3970
+ ---
3971
+ ##### Interface: WalletPermissionsManagerCallbacks
3972
+
3973
+ The set of callbacks that external code can bind to, e.g. to display UI prompts or logs
3974
+ when a permission is requested.
3975
+
3976
+ ```ts
3977
+ export interface WalletPermissionsManagerCallbacks {
3978
+ onProtocolPermissionRequested?: PermissionEventHandler[];
3979
+ onBasketAccessRequested?: PermissionEventHandler[];
3980
+ onCertificateAccessRequested?: PermissionEventHandler[];
3981
+ onSpendingAuthorizationRequested?: PermissionEventHandler[];
3982
+ }
3983
+ ```
3984
+
3985
+ See also: [PermissionEventHandler](./client.md#type-permissioneventhandler)
3305
3986
 
3306
3987
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3307
3988
 
@@ -3529,6 +4210,33 @@ See also: [ArcConfig](./services.md#interface-arcconfig), [BsvExchangeRate](./cl
3529
4210
 
3530
4211
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3531
4212
 
4213
+ ---
4214
+ ##### Interface: WalletSettings
4215
+
4216
+ ```ts
4217
+ export interface WalletSettings {
4218
+ trustSettings: TrustSettings;
4219
+ theme?: WalletTheme;
4220
+ }
4221
+ ```
4222
+
4223
+ See also: [TrustSettings](./client.md#interface-trustsettings), [WalletTheme](./client.md#interface-wallettheme)
4224
+
4225
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4226
+
4227
+ ---
4228
+ ##### Interface: WalletSettingsManagerConfig
4229
+
4230
+ ```ts
4231
+ export interface WalletSettingsManagerConfig {
4232
+ defaultSettings: WalletSettings;
4233
+ }
4234
+ ```
4235
+
4236
+ See also: [WalletSettings](./client.md#interface-walletsettings)
4237
+
4238
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4239
+
3532
4240
  ---
3533
4241
  ##### Interface: WalletSigner
3534
4242
 
@@ -3693,6 +4401,17 @@ See also: [AuthId](./client.md#interface-authid), [StorageCreateActionResult](./
3693
4401
 
3694
4402
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3695
4403
 
4404
+ ---
4405
+ ##### Interface: WalletTheme
4406
+
4407
+ ```ts
4408
+ export interface WalletTheme {
4409
+ mode: string;
4410
+ }
4411
+ ```
4412
+
4413
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4414
+
3696
4415
  ---
3697
4416
  ##### Interface: XValidCreateActionOutput
3698
4417
 
@@ -3715,25 +4434,28 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
3715
4434
 
3716
4435
  | | | |
3717
4436
  | --- | --- | --- |
3718
- | [ARC](#class-arc) | [PrivilegedKeyManager](#class-privilegedkeymanager) | [WERR_BROADCAST_UNAVAILABLE](#class-werr_broadcast_unavailable) |
3719
- | [CertOps](#class-certops) | [ScriptTemplateBRC29](#class-scripttemplatebrc29) | [WERR_INSUFFICIENT_FUNDS](#class-werr_insufficient_funds) |
3720
- | [EntityBase](#class-entitybase) | [SdkWhatsOnChain](#class-sdkwhatsonchain) | [WERR_INTERNAL](#class-werr_internal) |
3721
- | [EntityCertificate](#class-entitycertificate) | [ServiceCollection](#class-servicecollection) | [WERR_INVALID_OPERATION](#class-werr_invalid_operation) |
3722
- | [EntityCertificateField](#class-entitycertificatefield) | [Services](#class-services) | [WERR_INVALID_PARAMETER](#class-werr_invalid_parameter) |
3723
- | [EntityCommission](#class-entitycommission) | [StorageClient](#class-storageclient) | [WERR_INVALID_PUBLIC_KEY](#class-werr_invalid_public_key) |
3724
- | [EntityOutput](#class-entityoutput) | [StorageProvider](#class-storageprovider) | [WERR_MISSING_PARAMETER](#class-werr_missing_parameter) |
3725
- | [EntityOutputBasket](#class-entityoutputbasket) | [StorageReader](#class-storagereader) | [WERR_NETWORK_CHAIN](#class-werr_network_chain) |
3726
- | [EntityOutputTag](#class-entityoutputtag) | [StorageReaderWriter](#class-storagereaderwriter) | [WERR_NOT_ACTIVE](#class-werr_not_active) |
3727
- | [EntityOutputTagMap](#class-entityoutputtagmap) | [StorageSyncReader](#class-storagesyncreader) | [WERR_NOT_IMPLEMENTED](#class-werr_not_implemented) |
3728
- | [EntityProvenTx](#class-entityproventx) | [TaskCheckForProofs](#class-taskcheckforproofs) | [WERR_UNAUTHORIZED](#class-werr_unauthorized) |
3729
- | [EntityProvenTxReq](#class-entityproventxreq) | [TaskClock](#class-taskclock) | [Wallet](#class-wallet) |
4437
+ | [ARC](#class-arc) | [PersonaIDInteractor](#class-personaidinteractor) | [WERR_BAD_REQUEST](#class-werr_bad_request) |
4438
+ | [AuthMethodInteractor](#class-authmethodinteractor) | [PrivilegedKeyManager](#class-privilegedkeymanager) | [WERR_BROADCAST_UNAVAILABLE](#class-werr_broadcast_unavailable) |
4439
+ | [CWIStyleWalletManager](#class-cwistylewalletmanager) | [ScriptTemplateBRC29](#class-scripttemplatebrc29) | [WERR_INSUFFICIENT_FUNDS](#class-werr_insufficient_funds) |
4440
+ | [CertOps](#class-certops) | [SdkWhatsOnChain](#class-sdkwhatsonchain) | [WERR_INTERNAL](#class-werr_internal) |
4441
+ | [EntityBase](#class-entitybase) | [ServiceCollection](#class-servicecollection) | [WERR_INVALID_OPERATION](#class-werr_invalid_operation) |
4442
+ | [EntityCertificate](#class-entitycertificate) | [Services](#class-services) | [WERR_INVALID_PARAMETER](#class-werr_invalid_parameter) |
4443
+ | [EntityCertificateField](#class-entitycertificatefield) | [SimpleWalletManager](#class-simplewalletmanager) | [WERR_INVALID_PUBLIC_KEY](#class-werr_invalid_public_key) |
4444
+ | [EntityCommission](#class-entitycommission) | [StorageClient](#class-storageclient) | [WERR_MISSING_PARAMETER](#class-werr_missing_parameter) |
4445
+ | [EntityOutput](#class-entityoutput) | [StorageProvider](#class-storageprovider) | [WERR_NETWORK_CHAIN](#class-werr_network_chain) |
4446
+ | [EntityOutputBasket](#class-entityoutputbasket) | [StorageReader](#class-storagereader) | [WERR_NOT_ACTIVE](#class-werr_not_active) |
4447
+ | [EntityOutputTag](#class-entityoutputtag) | [StorageReaderWriter](#class-storagereaderwriter) | [WERR_NOT_IMPLEMENTED](#class-werr_not_implemented) |
4448
+ | [EntityOutputTagMap](#class-entityoutputtagmap) | [StorageSyncReader](#class-storagesyncreader) | [WERR_UNAUTHORIZED](#class-werr_unauthorized) |
4449
+ | [EntityProvenTx](#class-entityproventx) | [TaskCheckForProofs](#class-taskcheckforproofs) | [Wallet](#class-wallet) |
4450
+ | [EntityProvenTxReq](#class-entityproventxreq) | [TaskClock](#class-taskclock) | [WalletAuthenticationManager](#class-walletauthenticationmanager) |
3730
4451
  | [EntitySyncState](#class-entitysyncstate) | [TaskFailAbandoned](#class-taskfailabandoned) | [WalletError](#class-walleterror) |
3731
4452
  | [EntityTransaction](#class-entitytransaction) | [TaskNewHeader](#class-tasknewheader) | [WalletMonitorTask](#class-walletmonitortask) |
3732
- | [EntityTxLabel](#class-entitytxlabel) | [TaskPurge](#class-taskpurge) | [WalletSigner](#class-walletsigner) |
3733
- | [EntityTxLabelMap](#class-entitytxlabelmap) | [TaskReviewStatus](#class-taskreviewstatus) | [WalletStorageManager](#class-walletstoragemanager) |
3734
- | [EntityUser](#class-entityuser) | [TaskSendWaiting](#class-tasksendwaiting) | [WhatsOnChain](#class-whatsonchain) |
3735
- | [MergeEntity](#class-mergeentity) | [TaskSyncWhenIdle](#class-tasksyncwhenidle) | |
3736
- | [Monitor](#class-monitor) | [WERR_BAD_REQUEST](#class-werr_bad_request) | |
4453
+ | [EntityTxLabel](#class-entitytxlabel) | [TaskPurge](#class-taskpurge) | [WalletPermissionsManager](#class-walletpermissionsmanager) |
4454
+ | [EntityTxLabelMap](#class-entitytxlabelmap) | [TaskReviewStatus](#class-taskreviewstatus) | [WalletSettingsManager](#class-walletsettingsmanager) |
4455
+ | [EntityUser](#class-entityuser) | [TaskSendWaiting](#class-tasksendwaiting) | [WalletSigner](#class-walletsigner) |
4456
+ | [MergeEntity](#class-mergeentity) | [TaskSyncWhenIdle](#class-tasksyncwhenidle) | [WalletStorageManager](#class-walletstoragemanager) |
4457
+ | [Monitor](#class-monitor) | [TwilioPhoneInteractor](#class-twiliophoneinteractor) | [WhatsOnChain](#class-whatsonchain) |
4458
+ | [OverlayUMPTokenInteractor](#class-overlayumptokeninteractor) | [WABClient](#class-wabclient) | |
3737
4459
 
3738
4460
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3739
4461
 
@@ -3831,6 +4553,304 @@ See also: [PostTxResultForTxid](./client.md#interface-posttxresultfortxid)
3831
4553
 
3832
4554
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3833
4555
 
4556
+ ---
4557
+ ##### Class: AuthMethodInteractor
4558
+
4559
+ Abstract client-side interactor for an Auth Method
4560
+
4561
+ ```ts
4562
+ export abstract class AuthMethodInteractor {
4563
+ public abstract methodType: string;
4564
+ public abstract startAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<StartAuthResponse>;
4565
+ public abstract completeAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<CompleteAuthResponse>;
4566
+ }
4567
+ ```
4568
+
4569
+ See also: [AuthPayload](./client.md#interface-authpayload), [CompleteAuthResponse](./client.md#interface-completeauthresponse), [StartAuthResponse](./client.md#interface-startauthresponse)
4570
+
4571
+ ###### Method completeAuth
4572
+
4573
+ Complete the flow (e.g. confirm OTP).
4574
+
4575
+ ```ts
4576
+ public abstract completeAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<CompleteAuthResponse>
4577
+ ```
4578
+ See also: [AuthPayload](./client.md#interface-authpayload), [CompleteAuthResponse](./client.md#interface-completeauthresponse)
4579
+
4580
+ ###### Method startAuth
4581
+
4582
+ Start the flow (e.g. request an OTP or create a session).
4583
+
4584
+ ```ts
4585
+ public abstract startAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<StartAuthResponse>
4586
+ ```
4587
+ See also: [AuthPayload](./client.md#interface-authpayload), [StartAuthResponse](./client.md#interface-startauthresponse)
4588
+
4589
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4590
+
4591
+ ---
4592
+ ##### Class: CWIStyleWalletManager
4593
+
4594
+ Manages a "CWI-style" wallet that uses a UMP token and a
4595
+ multi-key authentication scheme (password, presentation key, and recovery key).
4596
+
4597
+ ```ts
4598
+ export class CWIStyleWalletManager implements WalletInterface {
4599
+ authenticated: boolean;
4600
+ authenticationMode: "presentation-key-and-password" | "presentation-key-and-recovery-key" | "recovery-key-and-password" = "presentation-key-and-password";
4601
+ authenticationFlow: "new-user" | "existing-user" = "new-user";
4602
+ constructor(adminOriginator: OriginatorDomainNameStringUnder250Bytes, walletBuilder: (primaryKey: number[], privilegedKeyManager: PrivilegedKeyManager) => Promise<WalletInterface>, interactor: UMPTokenInteractor = new OverlayUMPTokenInteractor(), recoveryKeySaver: (key: number[]) => Promise<true>, passwordRetriever: (reason: string, test: (passwordCandidate: string) => boolean) => Promise<string>, newWalletFunder?: (presentationKey: number[], wallet: WalletInterface, adminOriginator: OriginatorDomainNameStringUnder250Bytes) => Promise<void>, stateSnapshot?: number[])
4603
+ async providePresentationKey(key: number[]): Promise<void>
4604
+ async providePassword(password: string): Promise<void>
4605
+ async provideRecoveryKey(recoveryKey: number[]): Promise<void>
4606
+ saveSnapshot(): number[]
4607
+ async loadSnapshot(snapshot: number[]): Promise<void>
4608
+ destroy(): void
4609
+ async changePassword(newPassword: string): Promise<void>
4610
+ async changeRecoveryKey(): Promise<void>
4611
+ async changePresentationKey(presentationKey: number[]): Promise<void>
4612
+ async getPublicKey(args: GetPublicKeyArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetPublicKeyResult>
4613
+ async revealCounterpartyKeyLinkage(args: RevealCounterpartyKeyLinkageArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RevealCounterpartyKeyLinkageResult>
4614
+ async revealSpecificKeyLinkage(args: RevealSpecificKeyLinkageArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RevealSpecificKeyLinkageResult>
4615
+ async encrypt(args: WalletEncryptArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<WalletEncryptResult>
4616
+ async decrypt(args: WalletDecryptArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<WalletDecryptResult>
4617
+ async createHmac(args: CreateHmacArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateHmacResult>
4618
+ async verifyHmac(args: VerifyHmacArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<VerifyHmacResult>
4619
+ async createSignature(args: CreateSignatureArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateSignatureResult>
4620
+ async verifySignature(args: VerifySignatureArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<VerifySignatureResult>
4621
+ async createAction(args: CreateActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateActionResult>
4622
+ async signAction(args: SignActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<SignActionResult>
4623
+ async abortAction(args: AbortActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AbortActionResult>
4624
+ async listActions(args: ListActionsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListActionsResult>
4625
+ async internalizeAction(args: InternalizeActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<InternalizeActionResult>
4626
+ async listOutputs(args: ListOutputsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListOutputsResult>
4627
+ async relinquishOutput(args: RelinquishOutputArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RelinquishOutputResult>
4628
+ async acquireCertificate(args: AcquireCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AcquireCertificateResult>
4629
+ async listCertificates(args: ListCertificatesArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListCertificatesResult>
4630
+ async proveCertificate(args: ProveCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ProveCertificateResult>
4631
+ async relinquishCertificate(args: RelinquishCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RelinquishCertificateResult>
4632
+ async discoverByIdentityKey(args: DiscoverByIdentityKeyArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<DiscoverCertificatesResult>
4633
+ async discoverByAttributes(args: DiscoverByAttributesArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<DiscoverCertificatesResult>
4634
+ async isAuthenticated(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AuthenticatedResult>
4635
+ async waitForAuthentication(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AuthenticatedResult>
4636
+ async getHeight(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetHeightResult>
4637
+ async getHeaderForHeight(args: GetHeaderArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetHeaderResult>
4638
+ async getNetwork(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetNetworkResult>
4639
+ async getVersion(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetVersionResult>
4640
+ }
4641
+ ```
4642
+
4643
+ See also: [OverlayUMPTokenInteractor](./client.md#class-overlayumptokeninteractor), [PrivilegedKeyManager](./client.md#class-privilegedkeymanager), [UMPTokenInteractor](./client.md#interface-umptokeninteractor), [createAction](./storage.md#function-createaction), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [proveCertificate](./client.md#function-provecertificate), [signAction](./client.md#function-signaction)
4644
+
4645
+ ###### Constructor
4646
+
4647
+ Constructs a new CWIStyleWalletManager.
4648
+
4649
+ ```ts
4650
+ constructor(adminOriginator: OriginatorDomainNameStringUnder250Bytes, walletBuilder: (primaryKey: number[], privilegedKeyManager: PrivilegedKeyManager) => Promise<WalletInterface>, interactor: UMPTokenInteractor = new OverlayUMPTokenInteractor(), recoveryKeySaver: (key: number[]) => Promise<true>, passwordRetriever: (reason: string, test: (passwordCandidate: string) => boolean) => Promise<string>, newWalletFunder?: (presentationKey: number[], wallet: WalletInterface, adminOriginator: OriginatorDomainNameStringUnder250Bytes) => Promise<void>, stateSnapshot?: number[])
4651
+ ```
4652
+ See also: [OverlayUMPTokenInteractor](./client.md#class-overlayumptokeninteractor), [PrivilegedKeyManager](./client.md#class-privilegedkeymanager), [UMPTokenInteractor](./client.md#interface-umptokeninteractor)
4653
+
4654
+ Argument Details
4655
+
4656
+ + **adminOriginator**
4657
+ + The domain name of the administrative originator.
4658
+ + **walletBuilder**
4659
+ + A function that can build an underlying wallet instance
4660
+ from a primary key and a privileged key manager
4661
+ + **interactor**
4662
+ + An instance of UMPTokenInteractor capable of managing UMP tokens.
4663
+ + **recoveryKeySaver**
4664
+ + A function that can persist or display a newly generated recovery key.
4665
+ + **passwordRetriever**
4666
+ + A function to request the user's password, given a reason and a test function.
4667
+ + **newWalletFunder**
4668
+ + An optional function called with the presentation key and a new Wallet post-construction to fund it before use.
4669
+ + **stateSnapshot**
4670
+ + If provided, a previously saved snapshot of the wallet's state.
4671
+
4672
+ ###### Property authenticated
4673
+
4674
+ Whether the user is currently authenticated.
4675
+
4676
+ ```ts
4677
+ authenticated: boolean
4678
+ ```
4679
+
4680
+ ###### Property authenticationFlow
4681
+
4682
+ Indicates whether this is a new user or an existing user flow:
4683
+ - 'new-user'
4684
+ - 'existing-user'
4685
+
4686
+ ```ts
4687
+ authenticationFlow: "new-user" | "existing-user" = "new-user"
4688
+ ```
4689
+
4690
+ ###### Property authenticationMode
4691
+
4692
+ The current mode of authentication:
4693
+ - 'presentation-key-and-password'
4694
+ - 'presentation-key-and-recovery-key'
4695
+ - 'recovery-key-and-password'
4696
+
4697
+ ```ts
4698
+ authenticationMode: "presentation-key-and-password" | "presentation-key-and-recovery-key" | "recovery-key-and-password" = "presentation-key-and-password"
4699
+ ```
4700
+
4701
+ ###### Method changePassword
4702
+
4703
+ Changes the user's password, re-wrapping the primary and privileged keys with the new password factor.
4704
+
4705
+ ```ts
4706
+ async changePassword(newPassword: string): Promise<void>
4707
+ ```
4708
+
4709
+ Argument Details
4710
+
4711
+ + **newPassword**
4712
+ + The user's new password as a string.
4713
+
4714
+ Throws
4715
+
4716
+ If the user is not authenticated, or if underlying token references are missing.
4717
+
4718
+ ###### Method changePresentationKey
4719
+
4720
+ Changes the user's presentation key.
4721
+
4722
+ ```ts
4723
+ async changePresentationKey(presentationKey: number[]): Promise<void>
4724
+ ```
4725
+
4726
+ Argument Details
4727
+
4728
+ + **presentationKey**
4729
+ + The new presentation key (32 bytes).
4730
+
4731
+ Throws
4732
+
4733
+ If the user is not authenticated, or if underlying token references are missing.
4734
+
4735
+ ###### Method changeRecoveryKey
4736
+
4737
+ Changes the user's recovery key, prompting the user to save the new key.
4738
+
4739
+ ```ts
4740
+ async changeRecoveryKey(): Promise<void>
4741
+ ```
4742
+
4743
+ Throws
4744
+
4745
+ If the user is not authenticated, or if underlying token references are missing.
4746
+
4747
+ ###### Method destroy
4748
+
4749
+ Destroys the underlying wallet, returning to a default state
4750
+
4751
+ ```ts
4752
+ destroy(): void
4753
+ ```
4754
+
4755
+ ###### Method loadSnapshot
4756
+
4757
+ Loads a previously saved state snapshot (e.g. from `saveSnapshot`).
4758
+ Upon success, the wallet becomes authenticated without needing to re-enter keys.
4759
+
4760
+ ```ts
4761
+ async loadSnapshot(snapshot: number[]): Promise<void>
4762
+ ```
4763
+
4764
+ Argument Details
4765
+
4766
+ + **snapshot**
4767
+ + An array of bytes that was previously produced by `saveSnapshot`.
4768
+
4769
+ Throws
4770
+
4771
+ If the snapshot format is invalid or decryption fails.
4772
+
4773
+ ###### Method providePassword
4774
+
4775
+ Provides the password in an authentication mode that requires it.
4776
+
4777
+ - **Existing user**:
4778
+ Decrypts the primary key using the provided password (and either the presentation key or recovery key, depending on the mode).
4779
+ Then builds the underlying wallet, marking the user as authenticated.
4780
+
4781
+ - **New user**:
4782
+ Generates a new UMP token with fresh keys (primary, privileged, recovery). Publishes it on-chain and builds the wallet.
4783
+
4784
+ ```ts
4785
+ async providePassword(password: string): Promise<void>
4786
+ ```
4787
+
4788
+ Argument Details
4789
+
4790
+ + **password**
4791
+ + The user's password as a string.
4792
+
4793
+ Throws
4794
+
4795
+ If the user is already authenticated, if the mode does not use a password, or if required keys are missing.
4796
+
4797
+ ###### Method providePresentationKey
4798
+
4799
+ Provides the presentation key in an authentication mode that requires it.
4800
+ If a UMP token is found based on the key's hash, this is an existing-user flow.
4801
+ Otherwise, it is treated as a new-user flow.
4802
+
4803
+ ```ts
4804
+ async providePresentationKey(key: number[]): Promise<void>
4805
+ ```
4806
+
4807
+ Argument Details
4808
+
4809
+ + **key**
4810
+ + The user's presentation key (32 bytes).
4811
+
4812
+ Throws
4813
+
4814
+ if user is already authenticated, or if the current mode does not require a presentation key.
4815
+
4816
+ ###### Method provideRecoveryKey
4817
+
4818
+ Provides the recovery key in an authentication flow that requires it.
4819
+
4820
+ ```ts
4821
+ async provideRecoveryKey(recoveryKey: number[]): Promise<void>
4822
+ ```
4823
+
4824
+ Argument Details
4825
+
4826
+ + **recoveryKey**
4827
+ + The user's recovery key (32 bytes).
4828
+
4829
+ Throws
4830
+
4831
+ if user is already authenticated, if the mode does not use a recovery key,
4832
+ or if a required presentation key is missing in "presentation-key-and-recovery-key" mode.
4833
+
4834
+ ###### Method saveSnapshot
4835
+
4836
+ Saves the current wallet state (including the current UMP token and primary key)
4837
+ into an encrypted snapshot. This snapshot can be stored locally and later passed
4838
+ to `loadSnapshot` to restore the wallet state without re-authenticating manually.
4839
+
4840
+ ```ts
4841
+ saveSnapshot(): number[]
4842
+ ```
4843
+
4844
+ Returns
4845
+
4846
+ An array of bytes representing the encrypted snapshot.
4847
+
4848
+ Throws
4849
+
4850
+ if no primary key or token is currently set.
4851
+
4852
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4853
+
3834
4854
  ---
3835
4855
  ##### Class: CertOps
3836
4856
 
@@ -5004,6 +6024,117 @@ See also: [BlockHeader](./client.md#interface-blockheader)
5004
6024
 
5005
6025
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5006
6026
 
6027
+ ---
6028
+ ##### Class: OverlayUMPTokenInteractor
6029
+
6030
+ ```ts
6031
+ export class OverlayUMPTokenInteractor implements UMPTokenInteractor {
6032
+ constructor(resolver: LookupResolver = new LookupResolver(), broadcaster: SHIPBroadcaster = new SHIPBroadcaster(["tm_users"]))
6033
+ public async findByPresentationKeyHash(hash: number[]): Promise<UMPToken | undefined>
6034
+ public async findByRecoveryKeyHash(hash: number[]): Promise<UMPToken | undefined>
6035
+ public async buildAndSend(wallet: WalletInterface, adminOriginator: OriginatorDomainNameStringUnder250Bytes, token: UMPToken, oldTokenToConsume?: UMPToken): Promise<OutpointString>
6036
+ }
6037
+ ```
6038
+
6039
+ See also: [UMPToken](./client.md#interface-umptoken), [UMPTokenInteractor](./client.md#interface-umptokeninteractor)
6040
+
6041
+ ###### Constructor
6042
+
6043
+ Construct a new OverlayUMPTokenInteractor.
6044
+
6045
+ ```ts
6046
+ constructor(resolver: LookupResolver = new LookupResolver(), broadcaster: SHIPBroadcaster = new SHIPBroadcaster(["tm_users"]))
6047
+ ```
6048
+
6049
+ Argument Details
6050
+
6051
+ + **resolver**
6052
+ + A LookupResolver instance for performing overlay queries (ls_users).
6053
+ + **broadcaster**
6054
+ + A SHIPBroadcaster instance for sharing new or updated tokens across the `tm_users` overlay.
6055
+
6056
+ ###### Method buildAndSend
6057
+
6058
+ Creates or updates (replaces) a UMP token on-chain. If `oldTokenToConsume` is provided,
6059
+ it is spent in the same transaction that creates the new token output. The new token is
6060
+ then broadcast and published under the `tm_users` topic using a SHIP broadcast, ensuring
6061
+ overlay participants see the updated token.
6062
+
6063
+ ```ts
6064
+ public async buildAndSend(wallet: WalletInterface, adminOriginator: OriginatorDomainNameStringUnder250Bytes, token: UMPToken, oldTokenToConsume?: UMPToken): Promise<OutpointString>
6065
+ ```
6066
+ See also: [UMPToken](./client.md#interface-umptoken)
6067
+
6068
+ Returns
6069
+
6070
+ The outpoint of the newly created UMP token (e.g. "abcd1234...ef.0").
6071
+
6072
+ Argument Details
6073
+
6074
+ + **wallet**
6075
+ + The wallet used to build and sign the transaction.
6076
+ + **adminOriginator**
6077
+ + The domain/FQDN of the administrative originator (wallet operator).
6078
+ + **token**
6079
+ + The new UMPToken to create on-chain.
6080
+ + **oldTokenToConsume**
6081
+ + Optionally, an existing token to consume/spend in the same transaction.
6082
+
6083
+ ###### Method findByPresentationKeyHash
6084
+
6085
+ Finds a UMP token on-chain by the given presentation key hash, if it exists.
6086
+ Uses the ls_users overlay service to perform the lookup.
6087
+
6088
+ ```ts
6089
+ public async findByPresentationKeyHash(hash: number[]): Promise<UMPToken | undefined>
6090
+ ```
6091
+ See also: [UMPToken](./client.md#interface-umptoken)
6092
+
6093
+ Returns
6094
+
6095
+ A UMPToken object (including currentOutpoint) if found, otherwise undefined.
6096
+
6097
+ Argument Details
6098
+
6099
+ + **hash**
6100
+ + The 32-byte SHA-256 hash of the presentation key.
6101
+
6102
+ ###### Method findByRecoveryKeyHash
6103
+
6104
+ Finds a UMP token on-chain by the given recovery key hash, if it exists.
6105
+ Uses the ls_users overlay service to perform the lookup.
6106
+
6107
+ ```ts
6108
+ public async findByRecoveryKeyHash(hash: number[]): Promise<UMPToken | undefined>
6109
+ ```
6110
+ See also: [UMPToken](./client.md#interface-umptoken)
6111
+
6112
+ Returns
6113
+
6114
+ A UMPToken object (including currentOutpoint) if found, otherwise undefined.
6115
+
6116
+ Argument Details
6117
+
6118
+ + **hash**
6119
+ + The 32-byte SHA-256 hash of the recovery key.
6120
+
6121
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
6122
+
6123
+ ---
6124
+ ##### Class: PersonaIDInteractor
6125
+
6126
+ ```ts
6127
+ export class PersonaIDInteractor extends AuthMethodInteractor {
6128
+ public methodType = "PersonaID";
6129
+ public async startAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<StartAuthResponse>
6130
+ public async completeAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<CompleteAuthResponse>
6131
+ }
6132
+ ```
6133
+
6134
+ See also: [AuthMethodInteractor](./client.md#class-authmethodinteractor), [AuthPayload](./client.md#interface-authpayload), [CompleteAuthResponse](./client.md#interface-completeauthresponse), [StartAuthResponse](./client.md#interface-startauthresponse)
6135
+
6136
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
6137
+
5007
6138
  ---
5008
6139
  ##### Class: PrivilegedKeyManager
5009
6140
 
@@ -5199,6 +6330,228 @@ See also: [ARC](./services.md#class-arc), [BlockHeader](./client.md#interface-bl
5199
6330
 
5200
6331
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5201
6332
 
6333
+ ---
6334
+ ##### Class: SimpleWalletManager
6335
+
6336
+ SimpleWalletManager is a slimmed-down wallet manager that only requires two things to authenticate:
6337
+ 1. A primary key (32 bytes), which represents the core secret for the wallet.
6338
+ 2. A privileged key manager (an instance of `PrivilegedKeyManager`), responsible for
6339
+ more sensitive operations.
6340
+
6341
+ Once both pieces are provided (or if a snapshot containing the primary key is loaded,
6342
+ and the privileged key manager is provided separately), the wallet becomes authenticated.
6343
+
6344
+ After authentication, calls to the standard wallet methods (`createAction`, `signAction`, etc.)
6345
+ are proxied to an underlying `WalletInterface` instance returned by a user-supplied `walletBuilder`.
6346
+
6347
+ **Important**: This manager does not handle user password flows, recovery, or on-chain
6348
+ token management. It is a straightforward wrapper that ensures the user has provided
6349
+ both their main secret (primary key) and a privileged key manager before allowing usage.
6350
+
6351
+ It also prevents calls from the special "admin originator" from being used externally.
6352
+ (Any call that tries to use the admin originator as its originator, other than the manager itself,
6353
+ will result in an error, ensuring that only internal operations can use that originator.)
6354
+
6355
+ The manager can also save and load snapshots of its state. In this simplified version,
6356
+ the snapshot only contains the primary key. If you load a snapshot, you still need to
6357
+ re-provide the privileged key manager to complete authentication.
6358
+
6359
+ ```ts
6360
+ export class SimpleWalletManager implements WalletInterface {
6361
+ authenticated: boolean;
6362
+ constructor(adminOriginator: OriginatorDomainNameStringUnder250Bytes, walletBuilder: (primaryKey: number[], privilegedKeyManager: PrivilegedKeyManager) => Promise<WalletInterface>, stateSnapshot?: number[])
6363
+ async providePrimaryKey(key: number[]): Promise<void>
6364
+ async providePrivilegedKeyManager(manager: PrivilegedKeyManager): Promise<void>
6365
+ destroy(): void
6366
+ saveSnapshot(): number[]
6367
+ async loadSnapshot(snapshot: number[]): Promise<void>
6368
+ async isAuthenticated(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AuthenticatedResult>
6369
+ async waitForAuthentication(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AuthenticatedResult>
6370
+ async getPublicKey(args: GetPublicKeyArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetPublicKeyResult>
6371
+ async revealCounterpartyKeyLinkage(args: RevealCounterpartyKeyLinkageArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RevealCounterpartyKeyLinkageResult>
6372
+ async revealSpecificKeyLinkage(args: RevealSpecificKeyLinkageArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RevealSpecificKeyLinkageResult>
6373
+ async encrypt(args: WalletEncryptArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<WalletEncryptResult>
6374
+ async decrypt(args: WalletDecryptArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<WalletDecryptResult>
6375
+ async createHmac(args: CreateHmacArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateHmacResult>
6376
+ async verifyHmac(args: VerifyHmacArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<VerifyHmacResult>
6377
+ async createSignature(args: CreateSignatureArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateSignatureResult>
6378
+ async verifySignature(args: VerifySignatureArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<VerifySignatureResult>
6379
+ async createAction(args: CreateActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<CreateActionResult>
6380
+ async signAction(args: SignActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<SignActionResult>
6381
+ async abortAction(args: AbortActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AbortActionResult>
6382
+ async listActions(args: ListActionsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListActionsResult>
6383
+ async internalizeAction(args: InternalizeActionArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<InternalizeActionResult>
6384
+ async listOutputs(args: ListOutputsArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListOutputsResult>
6385
+ async relinquishOutput(args: RelinquishOutputArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RelinquishOutputResult>
6386
+ async acquireCertificate(args: AcquireCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AcquireCertificateResult>
6387
+ async listCertificates(args: ListCertificatesArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ListCertificatesResult>
6388
+ async proveCertificate(args: ProveCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<ProveCertificateResult>
6389
+ async relinquishCertificate(args: RelinquishCertificateArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<RelinquishCertificateResult>
6390
+ async discoverByIdentityKey(args: DiscoverByIdentityKeyArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<DiscoverCertificatesResult>
6391
+ async discoverByAttributes(args: DiscoverByAttributesArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<DiscoverCertificatesResult>
6392
+ async getHeight(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetHeightResult>
6393
+ async getHeaderForHeight(args: GetHeaderArgs, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetHeaderResult>
6394
+ async getNetwork(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetNetworkResult>
6395
+ async getVersion(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<GetVersionResult>
6396
+ }
6397
+ ```
6398
+
6399
+ See also: [PrivilegedKeyManager](./client.md#class-privilegedkeymanager), [createAction](./storage.md#function-createaction), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [proveCertificate](./client.md#function-provecertificate), [signAction](./client.md#function-signaction)
6400
+
6401
+ ###### Constructor
6402
+
6403
+ Constructs a new `SimpleWalletManager`.
6404
+
6405
+ ```ts
6406
+ constructor(adminOriginator: OriginatorDomainNameStringUnder250Bytes, walletBuilder: (primaryKey: number[], privilegedKeyManager: PrivilegedKeyManager) => Promise<WalletInterface>, stateSnapshot?: number[])
6407
+ ```
6408
+ See also: [PrivilegedKeyManager](./client.md#class-privilegedkeymanager)
6409
+
6410
+ Argument Details
6411
+
6412
+ + **adminOriginator**
6413
+ + The domain name of the administrative originator.
6414
+ + **walletBuilder**
6415
+ + A function that, given a primary key and privileged key manager,
6416
+ returns a fully functional `WalletInterface`.
6417
+ + **stateSnapshot**
6418
+ + If provided, a previously saved snapshot of the wallet's state.
6419
+ If the snapshot contains a primary key, it will be loaded immediately
6420
+ (though you will still need to provide a privileged key manager to authenticate).
6421
+
6422
+ ###### Property authenticated
6423
+
6424
+ Whether the user is currently authenticated (meaning both the primary key
6425
+ and privileged key manager have been provided).
6426
+
6427
+ ```ts
6428
+ authenticated: boolean
6429
+ ```
6430
+
6431
+ ###### Method destroy
6432
+
6433
+ Destroys the underlying wallet, returning to a default (unauthenticated) state.
6434
+
6435
+ This clears the primary key, the privileged key manager, and the `authenticated` flag.
6436
+
6437
+ ```ts
6438
+ destroy(): void
6439
+ ```
6440
+
6441
+ ###### Method isAuthenticated
6442
+
6443
+ Returns whether the user is currently authenticated (the wallet has a primary key
6444
+ and a privileged key manager). If not authenticated, an error is thrown.
6445
+
6446
+ ```ts
6447
+ async isAuthenticated(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AuthenticatedResult>
6448
+ ```
6449
+
6450
+ Argument Details
6451
+
6452
+ + **_**
6453
+ + Not used in this manager.
6454
+ + **originator**
6455
+ + The originator domain, which must not be the admin originator.
6456
+
6457
+ Throws
6458
+
6459
+ If not authenticated, or if the originator is the admin.
6460
+
6461
+ ###### Method loadSnapshot
6462
+
6463
+ Loads a previously saved state snapshot (produced by `saveSnapshot`).
6464
+ This will restore the primary key but will **not** restore the privileged key manager
6465
+ (that must be provided separately to complete authentication).
6466
+
6467
+ ```ts
6468
+ async loadSnapshot(snapshot: number[]): Promise<void>
6469
+ ```
6470
+
6471
+ Argument Details
6472
+
6473
+ + **snapshot**
6474
+ + A byte array that was previously returned by `saveSnapshot`.
6475
+
6476
+ Throws
6477
+
6478
+ If the snapshot format is invalid or decryption fails.
6479
+
6480
+ ###### Method providePrimaryKey
6481
+
6482
+ Provides the primary key (32 bytes) needed for authentication.
6483
+ If a privileged key manager has already been provided, we attempt to build
6484
+ the underlying wallet. Otherwise, we wait until the manager is also provided.
6485
+
6486
+ ```ts
6487
+ async providePrimaryKey(key: number[]): Promise<void>
6488
+ ```
6489
+
6490
+ Argument Details
6491
+
6492
+ + **key**
6493
+ + A 32-byte primary key.
6494
+
6495
+ ###### Method providePrivilegedKeyManager
6496
+
6497
+ Provides the privileged key manager needed for sensitive tasks.
6498
+ If a primary key has already been provided (or loaded from a snapshot),
6499
+ we attempt to build the underlying wallet. Otherwise, we wait until the key is provided.
6500
+
6501
+ ```ts
6502
+ async providePrivilegedKeyManager(manager: PrivilegedKeyManager): Promise<void>
6503
+ ```
6504
+ See also: [PrivilegedKeyManager](./client.md#class-privilegedkeymanager)
6505
+
6506
+ Argument Details
6507
+
6508
+ + **manager**
6509
+ + An instance of `PrivilegedKeyManager`.
6510
+
6511
+ ###### Method saveSnapshot
6512
+
6513
+ Saves the current wallet state (including just the primary key)
6514
+ into an encrypted snapshot. This snapshot can be stored and later
6515
+ passed to `loadSnapshot` to restore the primary key (and partially authenticate).
6516
+
6517
+ **Note**: The snapshot does NOT include the privileged key manager.
6518
+ You must still provide that separately after loading the snapshot
6519
+ in order to complete authentication.
6520
+
6521
+ ```ts
6522
+ saveSnapshot(): number[]
6523
+ ```
6524
+
6525
+ Returns
6526
+
6527
+ A byte array representing the encrypted snapshot.
6528
+
6529
+ Throws
6530
+
6531
+ if no primary key is currently set.
6532
+
6533
+ ###### Method waitForAuthentication
6534
+
6535
+ Blocks until the user is authenticated (by providing primaryKey and privileged manager).
6536
+ If not authenticated yet, it waits until that occurs.
6537
+
6538
+ ```ts
6539
+ async waitForAuthentication(_: {}, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<AuthenticatedResult>
6540
+ ```
6541
+
6542
+ Argument Details
6543
+
6544
+ + **_**
6545
+ + Not used in this manager.
6546
+ + **originator**
6547
+ + The originator domain, which must not be the admin originator.
6548
+
6549
+ Throws
6550
+
6551
+ If the originator is the admin.
6552
+
6553
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
6554
+
5202
6555
  ---
5203
6556
  ##### Class: StorageClient
5204
6557
 
@@ -6419,6 +7772,158 @@ See also: [Monitor](./monitor.md#class-monitor), [WalletMonitorTask](./monitor.m
6419
7772
 
6420
7773
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
6421
7774
 
7775
+ ---
7776
+ ##### Class: TwilioPhoneInteractor
7777
+
7778
+ TwilioPhoneInteractor
7779
+
7780
+ A client-side class that knows how to call the WAB server for Twilio-based phone verification.
7781
+
7782
+ ```ts
7783
+ export class TwilioPhoneInteractor extends AuthMethodInteractor {
7784
+ public methodType = "TwilioPhone";
7785
+ public async startAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<StartAuthResponse>
7786
+ public async completeAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<CompleteAuthResponse>
7787
+ }
7788
+ ```
7789
+
7790
+ See also: [AuthMethodInteractor](./client.md#class-authmethodinteractor), [AuthPayload](./client.md#interface-authpayload), [CompleteAuthResponse](./client.md#interface-completeauthresponse), [StartAuthResponse](./client.md#interface-startauthresponse)
7791
+
7792
+ ###### Method completeAuth
7793
+
7794
+ Complete the Twilio phone verification on the server.
7795
+ - The server will verify the code with Twilio Verify’s verificationChecks endpoint.
7796
+
7797
+ ```ts
7798
+ public async completeAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<CompleteAuthResponse>
7799
+ ```
7800
+ See also: [AuthPayload](./client.md#interface-authpayload), [CompleteAuthResponse](./client.md#interface-completeauthresponse)
7801
+
7802
+ Returns
7803
+
7804
+ - { success, message, presentationKey }
7805
+
7806
+ Argument Details
7807
+
7808
+ + **serverUrl**
7809
+ + The base URL of the WAB server
7810
+ + **presentationKey**
7811
+ + The 256-bit key
7812
+ + **payload**
7813
+ + { phoneNumber: string, otp: string } (the code that was received via SMS)
7814
+
7815
+ ###### Method startAuth
7816
+
7817
+ Start the Twilio phone verification on the server.
7818
+ - The server will send an SMS code to the user’s phone, using Twilio Verify.
7819
+
7820
+ ```ts
7821
+ public async startAuth(serverUrl: string, presentationKey: string, payload: AuthPayload): Promise<StartAuthResponse>
7822
+ ```
7823
+ See also: [AuthPayload](./client.md#interface-authpayload), [StartAuthResponse](./client.md#interface-startauthresponse)
7824
+
7825
+ Returns
7826
+
7827
+ - { success, message, data }
7828
+
7829
+ Argument Details
7830
+
7831
+ + **serverUrl**
7832
+ + The base URL of the WAB server (e.g. http://localhost:3000)
7833
+ + **presentationKey**
7834
+ + The 256-bit key the client is attempting to authenticate with
7835
+ + **payload**
7836
+ + { phoneNumber: string } (the phone number to verify)
7837
+
7838
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
7839
+
7840
+ ---
7841
+ ##### Class: WABClient
7842
+
7843
+ ```ts
7844
+ export class WABClient {
7845
+ constructor(private serverUrl: string)
7846
+ public async getInfo()
7847
+ public generateRandomPresentationKey(): string
7848
+ public async startAuthMethod(authMethod: AuthMethodInteractor, presentationKey: string, payload: any)
7849
+ public async completeAuthMethod(authMethod: AuthMethodInteractor, presentationKey: string, payload: any)
7850
+ public async listLinkedMethods(presentationKey: string)
7851
+ public async unlinkMethod(presentationKey: string, authMethodId: number)
7852
+ public async requestFaucet(presentationKey: string)
7853
+ public async deleteUser(presentationKey: string)
7854
+ }
7855
+ ```
7856
+
7857
+ See also: [AuthMethodInteractor](./client.md#class-authmethodinteractor)
7858
+
7859
+ ###### Method completeAuthMethod
7860
+
7861
+ Complete an Auth Method flow
7862
+
7863
+ ```ts
7864
+ public async completeAuthMethod(authMethod: AuthMethodInteractor, presentationKey: string, payload: any)
7865
+ ```
7866
+ See also: [AuthMethodInteractor](./client.md#class-authmethodinteractor)
7867
+
7868
+ ###### Method deleteUser
7869
+
7870
+ Delete user
7871
+
7872
+ ```ts
7873
+ public async deleteUser(presentationKey: string)
7874
+ ```
7875
+
7876
+ ###### Method generateRandomPresentationKey
7877
+
7878
+ Generate a random 256-bit presentation key as a hex string (client side).
7879
+
7880
+ ```ts
7881
+ public generateRandomPresentationKey(): string
7882
+ ```
7883
+
7884
+ ###### Method getInfo
7885
+
7886
+ Return the WAB server info
7887
+
7888
+ ```ts
7889
+ public async getInfo()
7890
+ ```
7891
+
7892
+ ###### Method listLinkedMethods
7893
+
7894
+ List user-linked methods
7895
+
7896
+ ```ts
7897
+ public async listLinkedMethods(presentationKey: string)
7898
+ ```
7899
+
7900
+ ###### Method requestFaucet
7901
+
7902
+ Request faucet
7903
+
7904
+ ```ts
7905
+ public async requestFaucet(presentationKey: string)
7906
+ ```
7907
+
7908
+ ###### Method startAuthMethod
7909
+
7910
+ Start an Auth Method flow
7911
+
7912
+ ```ts
7913
+ public async startAuthMethod(authMethod: AuthMethodInteractor, presentationKey: string, payload: any)
7914
+ ```
7915
+ See also: [AuthMethodInteractor](./client.md#class-authmethodinteractor)
7916
+
7917
+ ###### Method unlinkMethod
7918
+
7919
+ Unlink a given Auth Method by ID
7920
+
7921
+ ```ts
7922
+ public async unlinkMethod(presentationKey: string, authMethodId: number)
7923
+ ```
7924
+
7925
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
7926
+
6422
7927
  ---
6423
7928
  ##### Class: WERR_BAD_REQUEST
6424
7929
 
@@ -6642,6 +8147,8 @@ export class Wallet implements WalletInterface, ProtoWallet {
6642
8147
  chain: sdk.Chain;
6643
8148
  keyDeriver: KeyDeriver;
6644
8149
  storage: WalletStorageManager;
8150
+ settingsManager: WalletSettingsManager;
8151
+ lookupResolver: LookupResolver;
6645
8152
  services?: sdk.WalletServices;
6646
8153
  monitor?: Monitor;
6647
8154
  identityKey: string;
@@ -6692,7 +8199,7 @@ export class Wallet implements WalletInterface, ProtoWallet {
6692
8199
  }
6693
8200
  ```
6694
8201
 
6695
- See also: [Chain](./client.md#type-chain), [KeyPair](./client.md#interface-keypair), [Monitor](./monitor.md#class-monitor), [PendingSignAction](./client.md#interface-pendingsignaction), [PrivilegedKeyManager](./client.md#class-privilegedkeymanager), [StorageIdentity](./client.md#interface-storageidentity), [WalletArgs](./client.md#interface-walletargs), [WalletServices](./client.md#interface-walletservices), [WalletSigner](./client.md#class-walletsigner), [WalletStorageManager](./storage.md#class-walletstoragemanager), [createAction](./storage.md#function-createaction), [getIdentityKey](./client.md#function-getidentitykey), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [proveCertificate](./client.md#function-provecertificate), [signAction](./client.md#function-signaction)
8202
+ See also: [Chain](./client.md#type-chain), [KeyPair](./client.md#interface-keypair), [Monitor](./monitor.md#class-monitor), [PendingSignAction](./client.md#interface-pendingsignaction), [PrivilegedKeyManager](./client.md#class-privilegedkeymanager), [StorageIdentity](./client.md#interface-storageidentity), [WalletArgs](./client.md#interface-walletargs), [WalletServices](./client.md#interface-walletservices), [WalletSettingsManager](./client.md#class-walletsettingsmanager), [WalletSigner](./client.md#class-walletsigner), [WalletStorageManager](./storage.md#class-walletstoragemanager), [createAction](./storage.md#function-createaction), [getIdentityKey](./client.md#function-getidentitykey), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [proveCertificate](./client.md#function-provecertificate), [signAction](./client.md#function-signaction)
6696
8203
 
6697
8204
  ###### Property beef
6698
8205
 
@@ -6748,6 +8255,54 @@ Argument Details
6748
8255
 
6749
8256
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
6750
8257
 
8258
+ ---
8259
+ ##### Class: WalletAuthenticationManager
8260
+
8261
+ WalletAuthenticationManager
8262
+
8263
+ A wallet manager that integrates
8264
+ with a WABClient for user authentication flows (e.g. Twilio phone).
8265
+
8266
+ ```ts
8267
+ export class WalletAuthenticationManager extends CWIStyleWalletManager {
8268
+ constructor(adminOriginator: string, walletBuilder: (primaryKey: number[], privilegedKeyManager: PrivilegedKeyManager) => Promise<WalletInterface>, interactor: UMPTokenInteractor = new OverlayUMPTokenInteractor(), recoveryKeySaver: (key: number[]) => Promise<true>, passwordRetriever: (reason: string, test: (passwordCandidate: string) => boolean) => Promise<string>, wabClient: WABClient, authMethod?: AuthMethodInteractor, stateSnapshot?: number[])
8269
+ public setAuthMethod(method: AuthMethodInteractor)
8270
+ public async startAuth(payload: any): Promise<void>
8271
+ public async completeAuth(payload: any): Promise<void>
8272
+ }
8273
+ ```
8274
+
8275
+ See also: [AuthMethodInteractor](./client.md#class-authmethodinteractor), [CWIStyleWalletManager](./client.md#class-cwistylewalletmanager), [OverlayUMPTokenInteractor](./client.md#class-overlayumptokeninteractor), [PrivilegedKeyManager](./client.md#class-privilegedkeymanager), [UMPTokenInteractor](./client.md#interface-umptokeninteractor), [WABClient](./client.md#class-wabclient)
8276
+
8277
+ ###### Method completeAuth
8278
+
8279
+ Completes the WAB-based flow, retrieving the final presentationKey from WAB if successful.
8280
+
8281
+ ```ts
8282
+ public async completeAuth(payload: any): Promise<void>
8283
+ ```
8284
+
8285
+ ###### Method setAuthMethod
8286
+
8287
+ Sets (or switches) the chosen AuthMethodInteractor at runtime,
8288
+ in case the user changes their mind or picks a new method in the UI.
8289
+
8290
+ ```ts
8291
+ public setAuthMethod(method: AuthMethodInteractor)
8292
+ ```
8293
+ See also: [AuthMethodInteractor](./client.md#class-authmethodinteractor)
8294
+
8295
+ ###### Method startAuth
8296
+
8297
+ Initiate the WAB-based flow, e.g. sending an SMS code or starting an ID check,
8298
+ using the chosen AuthMethodInteractor.
8299
+
8300
+ ```ts
8301
+ public async startAuth(payload: any): Promise<void>
8302
+ ```
8303
+
8304
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8305
+
6751
8306
  ---
6752
8307
  ##### Class: WalletError
6753
8308
 
@@ -6868,6 +8423,497 @@ abstract trigger(nowMsecsSinceEpoch: number): {
6868
8423
 
6869
8424
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
6870
8425
 
8426
+ ---
8427
+ ##### Class: WalletPermissionsManager
8428
+
8429
+ ```ts
8430
+ export class WalletPermissionsManager implements WalletInterface {
8431
+ constructor(underlyingWallet: WalletInterface, adminOriginator: string, config: PermissionsManagerConfig = {})
8432
+ public bindCallback(eventName: keyof WalletPermissionsManagerCallbacks, handler: PermissionEventHandler): number
8433
+ public unbindCallback(eventName: keyof WalletPermissionsManagerCallbacks, reference: number | Function): boolean
8434
+ public async grantPermission(params: {
8435
+ requestID: string;
8436
+ expiry?: number;
8437
+ ephemeral?: boolean;
8438
+ amount?: number;
8439
+ }): Promise<void>
8440
+ public async denyPermission(requestID: string): Promise<void>
8441
+ public async ensureProtocolPermission({ originator, privileged, protocolID, counterparty, reason, seekPermission = true, usageType }: {
8442
+ originator: string;
8443
+ privileged: boolean;
8444
+ protocolID: [
8445
+ 0 | 1 | 2,
8446
+ string
8447
+ ];
8448
+ counterparty: string;
8449
+ reason?: string;
8450
+ seekPermission?: boolean;
8451
+ usageType: "signing" | "encrypting" | "hmac" | "publicKey" | "identityKey" | "linkageRevelation" | "generic";
8452
+ }): Promise<boolean>
8453
+ public async ensureBasketAccess({ originator, basket, reason, seekPermission = true, usageType }: {
8454
+ originator: string;
8455
+ basket: string;
8456
+ reason?: string;
8457
+ seekPermission?: boolean;
8458
+ usageType: "insertion" | "removal" | "listing";
8459
+ }): Promise<boolean>
8460
+ public async ensureCertificateAccess({ originator, privileged, verifier, certType, fields, reason, seekPermission = true, usageType }: {
8461
+ originator: string;
8462
+ privileged: boolean;
8463
+ verifier: string;
8464
+ certType: string;
8465
+ fields: string[];
8466
+ reason?: string;
8467
+ seekPermission?: boolean;
8468
+ usageType: "disclosure";
8469
+ }): Promise<boolean>
8470
+ public async ensureSpendingAuthorization({ originator, satoshis, lineItems, reason, seekPermission = true }: {
8471
+ originator: string;
8472
+ satoshis: number;
8473
+ lineItems?: Array<{
8474
+ type: "input" | "output" | "fee";
8475
+ description: string;
8476
+ satoshis: number;
8477
+ }>;
8478
+ reason?: string;
8479
+ seekPermission?: boolean;
8480
+ }): Promise<boolean>
8481
+ public async ensureLabelAccess({ originator, label, reason, seekPermission = true, usageType }: {
8482
+ originator: string;
8483
+ label: string;
8484
+ reason?: string;
8485
+ seekPermission?: boolean;
8486
+ usageType: "apply" | "list";
8487
+ }): Promise<boolean>
8488
+ public async querySpentSince(token: PermissionToken): Promise<number>
8489
+ public async listProtocolPermissions({ originator }: {
8490
+ originator?: string;
8491
+ }): Promise<PermissionToken[]>
8492
+ public async hasProtocolPermission(params: {
8493
+ originator: string;
8494
+ privileged: boolean;
8495
+ protocolID: [
8496
+ 0 | 1 | 2,
8497
+ string
8498
+ ];
8499
+ counterparty: string;
8500
+ }): Promise<boolean>
8501
+ public async listBasketAccess(params: {
8502
+ originator?: string;
8503
+ }): Promise<PermissionToken[]>
8504
+ public async hasBasketAccess(params: {
8505
+ originator: string;
8506
+ basket: string;
8507
+ }): Promise<boolean>
8508
+ public async listSpendingAuthorizations(params: {
8509
+ originator?: string;
8510
+ }): Promise<PermissionToken[]>
8511
+ public async hasSpendingAuthorization(params: {
8512
+ originator: string;
8513
+ satoshis: number;
8514
+ }): Promise<boolean>
8515
+ public async listCertificateAccess(params: {
8516
+ originator?: string;
8517
+ }): Promise<PermissionToken[]>
8518
+ public async hasCertificateAccess(params: {
8519
+ originator: string;
8520
+ privileged: boolean;
8521
+ verifier: string;
8522
+ certType: string;
8523
+ fields: string[];
8524
+ }): Promise<boolean>
8525
+ public async revokePermission(oldToken: PermissionToken): Promise<void>
8526
+ public async createAction(args: Parameters<WalletInterface["createAction"]>[0], originator?: string): ReturnType<WalletInterface["createAction"]>
8527
+ public async signAction(...args: Parameters<WalletInterface["signAction"]>): ReturnType<WalletInterface["signAction"]>
8528
+ public async abortAction(...args: Parameters<WalletInterface["abortAction"]>): ReturnType<WalletInterface["abortAction"]>
8529
+ public async listActions(...args: Parameters<WalletInterface["listActions"]>): ReturnType<WalletInterface["listActions"]>
8530
+ public async internalizeAction(...args: Parameters<WalletInterface["internalizeAction"]>): ReturnType<WalletInterface["internalizeAction"]>
8531
+ public async listOutputs(...args: Parameters<WalletInterface["listOutputs"]>): ReturnType<WalletInterface["listOutputs"]>
8532
+ public async relinquishOutput(...args: Parameters<WalletInterface["relinquishOutput"]>): ReturnType<WalletInterface["relinquishOutput"]>
8533
+ public async getPublicKey(...args: Parameters<WalletInterface["getPublicKey"]>): ReturnType<WalletInterface["getPublicKey"]>
8534
+ public async revealCounterpartyKeyLinkage(...args: Parameters<WalletInterface["revealCounterpartyKeyLinkage"]>): ReturnType<WalletInterface["revealCounterpartyKeyLinkage"]>
8535
+ public async revealSpecificKeyLinkage(...args: Parameters<WalletInterface["revealSpecificKeyLinkage"]>): ReturnType<WalletInterface["revealSpecificKeyLinkage"]>
8536
+ public async encrypt(...args: Parameters<WalletInterface["encrypt"]>): ReturnType<WalletInterface["encrypt"]>
8537
+ public async decrypt(...args: Parameters<WalletInterface["decrypt"]>): ReturnType<WalletInterface["decrypt"]>
8538
+ public async createHmac(...args: Parameters<WalletInterface["createHmac"]>): ReturnType<WalletInterface["createHmac"]>
8539
+ public async verifyHmac(...args: Parameters<WalletInterface["verifyHmac"]>): ReturnType<WalletInterface["verifyHmac"]>
8540
+ public async createSignature(...args: Parameters<WalletInterface["createSignature"]>): ReturnType<WalletInterface["createSignature"]>
8541
+ public async verifySignature(...args: Parameters<WalletInterface["verifySignature"]>): ReturnType<WalletInterface["verifySignature"]>
8542
+ public async acquireCertificate(...args: Parameters<WalletInterface["acquireCertificate"]>): ReturnType<WalletInterface["acquireCertificate"]>
8543
+ public async listCertificates(...args: Parameters<WalletInterface["listCertificates"]>): ReturnType<WalletInterface["listCertificates"]>
8544
+ public async proveCertificate(...args: Parameters<WalletInterface["proveCertificate"]>): ReturnType<WalletInterface["proveCertificate"]>
8545
+ public async relinquishCertificate(...args: Parameters<WalletInterface["relinquishCertificate"]>): ReturnType<WalletInterface["relinquishCertificate"]>
8546
+ public async discoverByIdentityKey(...args: Parameters<WalletInterface["discoverByIdentityKey"]>): ReturnType<WalletInterface["discoverByIdentityKey"]>
8547
+ public async discoverByAttributes(...args: Parameters<WalletInterface["discoverByAttributes"]>): ReturnType<WalletInterface["discoverByAttributes"]>
8548
+ public async isAuthenticated(...args: Parameters<WalletInterface["isAuthenticated"]>): ReturnType<WalletInterface["isAuthenticated"]>
8549
+ public async waitForAuthentication(...args: Parameters<WalletInterface["waitForAuthentication"]>): ReturnType<WalletInterface["waitForAuthentication"]>
8550
+ public async getHeight(...args: Parameters<WalletInterface["getHeight"]>): ReturnType<WalletInterface["getHeight"]>
8551
+ public async getHeaderForHeight(...args: Parameters<WalletInterface["getHeaderForHeight"]>): ReturnType<WalletInterface["getHeaderForHeight"]>
8552
+ public async getNetwork(...args: Parameters<WalletInterface["getNetwork"]>): ReturnType<WalletInterface["getNetwork"]>
8553
+ public async getVersion(...args: Parameters<WalletInterface["getVersion"]>): ReturnType<WalletInterface["getVersion"]>
8554
+ }
8555
+ ```
8556
+
8557
+ See also: [PermissionEventHandler](./client.md#type-permissioneventhandler), [PermissionToken](./client.md#interface-permissiontoken), [PermissionsManagerConfig](./client.md#interface-permissionsmanagerconfig), [WalletPermissionsManagerCallbacks](./client.md#interface-walletpermissionsmanagercallbacks), [createAction](./storage.md#function-createaction), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [proveCertificate](./client.md#function-provecertificate), [signAction](./client.md#function-signaction)
8558
+
8559
+ ###### Constructor
8560
+
8561
+ Constructs a new Permissions Manager instance.
8562
+
8563
+ ```ts
8564
+ constructor(underlyingWallet: WalletInterface, adminOriginator: string, config: PermissionsManagerConfig = {})
8565
+ ```
8566
+ See also: [PermissionsManagerConfig](./client.md#interface-permissionsmanagerconfig)
8567
+
8568
+ Argument Details
8569
+
8570
+ + **underlyingWallet**
8571
+ + The underlying BRC-100 wallet, where requests are forwarded after permission is granted
8572
+ + **adminOriginator**
8573
+ + The domain or FQDN that is automatically allowed everything
8574
+ + **config**
8575
+ + A set of boolean flags controlling how strictly permissions are enforced
8576
+
8577
+ ###### Method bindCallback
8578
+
8579
+ Binds a callback function to a named event, such as `onProtocolPermissionRequested`.
8580
+
8581
+ ```ts
8582
+ public bindCallback(eventName: keyof WalletPermissionsManagerCallbacks, handler: PermissionEventHandler): number
8583
+ ```
8584
+ See also: [PermissionEventHandler](./client.md#type-permissioneventhandler), [WalletPermissionsManagerCallbacks](./client.md#interface-walletpermissionsmanagercallbacks)
8585
+
8586
+ Returns
8587
+
8588
+ A numeric ID you can use to unbind later
8589
+
8590
+ Argument Details
8591
+
8592
+ + **eventName**
8593
+ + The name of the event to listen to
8594
+ + **handler**
8595
+ + A function that handles the event
8596
+
8597
+ ###### Method denyPermission
8598
+
8599
+ Denies a previously requested permission.
8600
+ This method rejects all pending promise calls waiting on that request
8601
+
8602
+ ```ts
8603
+ public async denyPermission(requestID: string): Promise<void>
8604
+ ```
8605
+
8606
+ Argument Details
8607
+
8608
+ + **requestID**
8609
+ + requestID identifying which request to deny
8610
+
8611
+ ###### Method ensureBasketAccess
8612
+
8613
+ Ensures the originator has basket usage permission for the specified basket.
8614
+ If not, triggers a permission request flow.
8615
+
8616
+ ```ts
8617
+ public async ensureBasketAccess({ originator, basket, reason, seekPermission = true, usageType }: {
8618
+ originator: string;
8619
+ basket: string;
8620
+ reason?: string;
8621
+ seekPermission?: boolean;
8622
+ usageType: "insertion" | "removal" | "listing";
8623
+ }): Promise<boolean>
8624
+ ```
8625
+
8626
+ ###### Method ensureCertificateAccess
8627
+
8628
+ Ensures the originator has a valid certificate permission.
8629
+ This is relevant when revealing certificate fields in DCAP contexts.
8630
+
8631
+ ```ts
8632
+ public async ensureCertificateAccess({ originator, privileged, verifier, certType, fields, reason, seekPermission = true, usageType }: {
8633
+ originator: string;
8634
+ privileged: boolean;
8635
+ verifier: string;
8636
+ certType: string;
8637
+ fields: string[];
8638
+ reason?: string;
8639
+ seekPermission?: boolean;
8640
+ usageType: "disclosure";
8641
+ }): Promise<boolean>
8642
+ ```
8643
+
8644
+ ###### Method ensureLabelAccess
8645
+
8646
+ Ensures the originator has label usage permission.
8647
+ If no valid (unexpired) permission token is found, triggers a permission request flow.
8648
+
8649
+ ```ts
8650
+ public async ensureLabelAccess({ originator, label, reason, seekPermission = true, usageType }: {
8651
+ originator: string;
8652
+ label: string;
8653
+ reason?: string;
8654
+ seekPermission?: boolean;
8655
+ usageType: "apply" | "list";
8656
+ }): Promise<boolean>
8657
+ ```
8658
+
8659
+ ###### Method ensureProtocolPermission
8660
+
8661
+ Ensures the originator has protocol usage permission.
8662
+ If no valid (unexpired) permission token is found, triggers a permission request flow.
8663
+
8664
+ ```ts
8665
+ public async ensureProtocolPermission({ originator, privileged, protocolID, counterparty, reason, seekPermission = true, usageType }: {
8666
+ originator: string;
8667
+ privileged: boolean;
8668
+ protocolID: [
8669
+ 0 | 1 | 2,
8670
+ string
8671
+ ];
8672
+ counterparty: string;
8673
+ reason?: string;
8674
+ seekPermission?: boolean;
8675
+ usageType: "signing" | "encrypting" | "hmac" | "publicKey" | "identityKey" | "linkageRevelation" | "generic";
8676
+ }): Promise<boolean>
8677
+ ```
8678
+
8679
+ ###### Method ensureSpendingAuthorization
8680
+
8681
+ Ensures the originator has spending authorization (DSAP) for a certain satoshi amount.
8682
+ If the existing token limit is insufficient, attempts to renew. If no token, attempts to create one.
8683
+
8684
+ ```ts
8685
+ public async ensureSpendingAuthorization({ originator, satoshis, lineItems, reason, seekPermission = true }: {
8686
+ originator: string;
8687
+ satoshis: number;
8688
+ lineItems?: Array<{
8689
+ type: "input" | "output" | "fee";
8690
+ description: string;
8691
+ satoshis: number;
8692
+ }>;
8693
+ reason?: string;
8694
+ seekPermission?: boolean;
8695
+ }): Promise<boolean>
8696
+ ```
8697
+
8698
+ ###### Method grantPermission
8699
+
8700
+ Grants a previously requested permission.
8701
+ This method:
8702
+ 1) Resolves all pending promise calls waiting on this request
8703
+ 2) Optionally creates or renews an on-chain PushDrop token (unless `ephemeral===true`)
8704
+
8705
+ ```ts
8706
+ public async grantPermission(params: {
8707
+ requestID: string;
8708
+ expiry?: number;
8709
+ ephemeral?: boolean;
8710
+ amount?: number;
8711
+ }): Promise<void>
8712
+ ```
8713
+
8714
+ Argument Details
8715
+
8716
+ + **params**
8717
+ + requestID to identify which request is granted, plus optional expiry
8718
+ or `ephemeral` usage, etc.
8719
+
8720
+ ###### Method hasBasketAccess
8721
+
8722
+ Returns `true` if the originator already holds a valid unexpired basket permission for `basket`.
8723
+
8724
+ ```ts
8725
+ public async hasBasketAccess(params: {
8726
+ originator: string;
8727
+ basket: string;
8728
+ }): Promise<boolean>
8729
+ ```
8730
+
8731
+ ###### Method hasCertificateAccess
8732
+
8733
+ Returns `true` if the originator already holds a valid unexpired certificate access
8734
+ for the given certType/fields. Does not prompt the user.
8735
+
8736
+ ```ts
8737
+ public async hasCertificateAccess(params: {
8738
+ originator: string;
8739
+ privileged: boolean;
8740
+ verifier: string;
8741
+ certType: string;
8742
+ fields: string[];
8743
+ }): Promise<boolean>
8744
+ ```
8745
+
8746
+ ###### Method hasProtocolPermission
8747
+
8748
+ Returns true if the originator already holds a valid unexpired protocol permission.
8749
+ This calls `ensureProtocolPermission` with `seekPermission=false`, so it won't prompt.
8750
+
8751
+ ```ts
8752
+ public async hasProtocolPermission(params: {
8753
+ originator: string;
8754
+ privileged: boolean;
8755
+ protocolID: [
8756
+ 0 | 1 | 2,
8757
+ string
8758
+ ];
8759
+ counterparty: string;
8760
+ }): Promise<boolean>
8761
+ ```
8762
+
8763
+ ###### Method hasSpendingAuthorization
8764
+
8765
+ Returns `true` if the originator already holds a valid spending authorization token
8766
+ with enough available monthly spend. We do not prompt (seekPermission=false).
8767
+
8768
+ ```ts
8769
+ public async hasSpendingAuthorization(params: {
8770
+ originator: string;
8771
+ satoshis: number;
8772
+ }): Promise<boolean>
8773
+ ```
8774
+
8775
+ ###### Method listBasketAccess
8776
+
8777
+ Lists basket permission tokens (DBAP) for a given originator (or for all if not specified).
8778
+
8779
+ ```ts
8780
+ public async listBasketAccess(params: {
8781
+ originator?: string;
8782
+ }): Promise<PermissionToken[]>
8783
+ ```
8784
+ See also: [PermissionToken](./client.md#interface-permissiontoken)
8785
+
8786
+ ###### Method listCertificateAccess
8787
+
8788
+ Lists certificate permission tokens (DCAP) for a given originator (or all).
8789
+
8790
+ ```ts
8791
+ public async listCertificateAccess(params: {
8792
+ originator?: string;
8793
+ }): Promise<PermissionToken[]>
8794
+ ```
8795
+ See also: [PermissionToken](./client.md#interface-permissiontoken)
8796
+
8797
+ ###### Method listProtocolPermissions
8798
+
8799
+ Lists all protocol permission tokens (DPACP) for a given originator or for all if originator is undefined.
8800
+ This is a convenience method for UI or debug.
8801
+
8802
+ ```ts
8803
+ public async listProtocolPermissions({ originator }: {
8804
+ originator?: string;
8805
+ }): Promise<PermissionToken[]>
8806
+ ```
8807
+ See also: [PermissionToken](./client.md#interface-permissiontoken)
8808
+
8809
+ ###### Method listSpendingAuthorizations
8810
+
8811
+ Lists spending authorization tokens (DSAP) for a given originator (or all).
8812
+
8813
+ ```ts
8814
+ public async listSpendingAuthorizations(params: {
8815
+ originator?: string;
8816
+ }): Promise<PermissionToken[]>
8817
+ ```
8818
+ See also: [PermissionToken](./client.md#interface-permissiontoken)
8819
+
8820
+ ###### Method querySpentSince
8821
+
8822
+ Returns spending for an originator in the current calendar month.
8823
+
8824
+ ```ts
8825
+ public async querySpentSince(token: PermissionToken): Promise<number>
8826
+ ```
8827
+ See also: [PermissionToken](./client.md#interface-permissiontoken)
8828
+
8829
+ ###### Method revokePermission
8830
+
8831
+ Revokes a permission token by spending it with no replacement output.
8832
+ The manager builds a BRC-100 transaction that consumes the token, effectively invalidating it.
8833
+
8834
+ ```ts
8835
+ public async revokePermission(oldToken: PermissionToken): Promise<void>
8836
+ ```
8837
+ See also: [PermissionToken](./client.md#interface-permissiontoken)
8838
+
8839
+ ###### Method unbindCallback
8840
+
8841
+ Unbinds a previously registered callback by either its numeric ID (returned by `bindCallback`)
8842
+ or by exact function reference.
8843
+
8844
+ ```ts
8845
+ public unbindCallback(eventName: keyof WalletPermissionsManagerCallbacks, reference: number | Function): boolean
8846
+ ```
8847
+ See also: [WalletPermissionsManagerCallbacks](./client.md#interface-walletpermissionsmanagercallbacks)
8848
+
8849
+ Returns
8850
+
8851
+ True if successfully unbound, false otherwise
8852
+
8853
+ Argument Details
8854
+
8855
+ + **eventName**
8856
+ + The event name, e.g. "onProtocolPermissionRequested"
8857
+ + **reference**
8858
+ + Either the numeric ID or the function reference
8859
+
8860
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8861
+
8862
+ ---
8863
+ ##### Class: WalletSettingsManager
8864
+
8865
+ Manages wallet settings
8866
+
8867
+ ```ts
8868
+ export class WalletSettingsManager {
8869
+ constructor(private wallet: WalletInterface, private config: WalletSettingsManagerConfig = {
8870
+ defaultSettings: DEFAULT_SETTINGS
8871
+ })
8872
+ async get(): Promise<WalletSettings>
8873
+ async set(settings: WalletSettings): Promise<void>
8874
+ async delete(): Promise<void>
8875
+ }
8876
+ ```
8877
+
8878
+ See also: [DEFAULT_SETTINGS](./client.md#variable-default_settings), [WalletSettings](./client.md#interface-walletsettings), [WalletSettingsManagerConfig](./client.md#interface-walletsettingsmanagerconfig)
8879
+
8880
+ ###### Method delete
8881
+
8882
+ Deletes the user's settings token.
8883
+
8884
+ ```ts
8885
+ async delete(): Promise<void>
8886
+ ```
8887
+
8888
+ ###### Method get
8889
+
8890
+ Returns a user's wallet settings
8891
+
8892
+ ```ts
8893
+ async get(): Promise<WalletSettings>
8894
+ ```
8895
+ See also: [WalletSettings](./client.md#interface-walletsettings)
8896
+
8897
+ Returns
8898
+
8899
+ - Wallet settings object
8900
+
8901
+ ###### Method set
8902
+
8903
+ Creates (or updates) the user's settings token.
8904
+
8905
+ ```ts
8906
+ async set(settings: WalletSettings): Promise<void>
8907
+ ```
8908
+ See also: [WalletSettings](./client.md#interface-walletsettings)
8909
+
8910
+ Argument Details
8911
+
8912
+ + **settings**
8913
+ + The wallet settings to be stored.
8914
+
8915
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8916
+
6871
8917
  ---
6872
8918
  ##### Class: WalletSigner
6873
8919
 
@@ -8555,15 +10601,15 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
8555
10601
 
8556
10602
  | | |
8557
10603
  | --- | --- |
8558
- | [Chain](#type-chain) | [PostReqsToNetworkDetailsStatus](#type-postreqstonetworkdetailsstatus) |
8559
- | [DBType](#type-dbtype) | [PostTxsService](#type-posttxsservice) |
8560
- | [EntityStorage](#type-entitystorage) | [ProvenTxReqStatus](#type-proventxreqstatus) |
8561
- | [GetMerklePathService](#type-getmerklepathservice) | [StorageProvidedBy](#type-storageprovidedby) |
8562
- | [GetRawTxService](#type-getrawtxservice) | [SyncProtocolVersion](#type-syncprotocolversion) |
8563
- | [GetUtxoStatusOutputFormat](#type-getutxostatusoutputformat) | [SyncStatus](#type-syncstatus) |
8564
- | [GetUtxoStatusService](#type-getutxostatusservice) | [TransactionStatus](#type-transactionstatus) |
8565
- | [MonitorStorage](#type-monitorstorage) | [UpdateFiatExchangeRateService](#type-updatefiatexchangerateservice) |
8566
- | [PostBeefService](#type-postbeefservice) | |
10604
+ | [Chain](#type-chain) | [PostBeefService](#type-postbeefservice) |
10605
+ | [DBType](#type-dbtype) | [PostReqsToNetworkDetailsStatus](#type-postreqstonetworkdetailsstatus) |
10606
+ | [EntityStorage](#type-entitystorage) | [PostTxsService](#type-posttxsservice) |
10607
+ | [GetMerklePathService](#type-getmerklepathservice) | [ProvenTxReqStatus](#type-proventxreqstatus) |
10608
+ | [GetRawTxService](#type-getrawtxservice) | [StorageProvidedBy](#type-storageprovidedby) |
10609
+ | [GetUtxoStatusOutputFormat](#type-getutxostatusoutputformat) | [SyncProtocolVersion](#type-syncprotocolversion) |
10610
+ | [GetUtxoStatusService](#type-getutxostatusservice) | [SyncStatus](#type-syncstatus) |
10611
+ | [MonitorStorage](#type-monitorstorage) | [TransactionStatus](#type-transactionstatus) |
10612
+ | [PermissionEventHandler](#type-permissioneventhandler) | [UpdateFiatExchangeRateService](#type-updatefiatexchangerateservice) |
8567
10613
 
8568
10614
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8569
10615
 
@@ -8650,6 +10696,21 @@ See also: [WalletStorageManager](./storage.md#class-walletstoragemanager)
8650
10696
 
8651
10697
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8652
10698
 
10699
+ ---
10700
+ ##### Type: PermissionEventHandler
10701
+
10702
+ Signature for functions that handle a permission request event, e.g. "Please ask the user to allow basket X".
10703
+
10704
+ ```ts
10705
+ export type PermissionEventHandler = (request: PermissionRequest & {
10706
+ requestID: string;
10707
+ }) => void | Promise<void>
10708
+ ```
10709
+
10710
+ See also: [PermissionRequest](./client.md#interface-permissionrequest)
10711
+
10712
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
10713
+
8653
10714
  ---
8654
10715
  ##### Type: PostBeefService
8655
10716
 
@@ -8782,17 +10843,71 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
8782
10843
 
8783
10844
  | |
8784
10845
  | --- |
10846
+ | [DEFAULT_SETTINGS](#variable-default_settings) |
10847
+ | [PBKDF2_NUM_ROUNDS](#variable-pbkdf2_num_rounds) |
8785
10848
  | [ProvenTxReqNonTerminalStatus](#variable-proventxreqnonterminalstatus) |
8786
10849
  | [ProvenTxReqTerminalStatus](#variable-proventxreqterminalstatus) |
10850
+ | [TESTNET_DEFAULT_SETTINGS](#variable-testnet_default_settings) |
8787
10851
  | [brc29ProtocolID](#variable-brc29protocolid) |
8788
10852
  | [maxPossibleSatoshis](#variable-maxpossiblesatoshis) |
8789
10853
  | [outputColumnsWithoutLockingScript](#variable-outputcolumnswithoutlockingscript) |
10854
+ | [parseResults](#variable-parseresults) |
10855
+ | [queryOverlay](#variable-queryoverlay) |
8790
10856
  | [transactionColumnsWithoutRawTx](#variable-transactioncolumnswithoutrawtx) |
10857
+ | [transformVerifiableCertificatesWithTrust](#variable-transformverifiablecertificateswithtrust) |
10858
+
10859
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
10860
+
10861
+ ---
10862
+
10863
+ ##### Variable: DEFAULT_SETTINGS
10864
+
10865
+ ```ts
10866
+ DEFAULT_SETTINGS = {
10867
+ trustSettings: {
10868
+ trustLevel: 2,
10869
+ trustedCertifiers: [
10870
+ {
10871
+ name: "Babbage Trust Services",
10872
+ description: "Resolves identity information for Babbage-run APIs and Bitcoin infrastructure.",
10873
+ iconUrl: "https://projectbabbage.com/favicon.ico",
10874
+ identityKey: "028703956178067ea7ca405111f1ca698290a0112a3d7cf3d843e195bf58a7cfa6",
10875
+ trust: 4
10876
+ },
10877
+ {
10878
+ name: "IdentiCert",
10879
+ description: "Certifies legal first and last name, and photos",
10880
+ iconUrl: "https://identicert.me/favicon.ico",
10881
+ trust: 5,
10882
+ identityKey: "0295bf1c7842d14babf60daf2c733956c331f9dcb2c79e41f85fd1dda6a3fa4549"
10883
+ },
10884
+ {
10885
+ name: "SocialCert",
10886
+ description: "Certifies social media handles, phone numbers and emails",
10887
+ iconUrl: "https://socialcert.net/favicon.ico",
10888
+ trust: 3,
10889
+ identityKey: "03285263f06139b66fb27f51cf8a92e9dd007c4c4b83876ad6c3e7028db450a4c2"
10890
+ }
10891
+ ]
10892
+ },
10893
+ theme: { mode: "dark" }
10894
+ } as WalletSettings
10895
+ ```
10896
+
10897
+ See also: [WalletSettings](./client.md#interface-walletsettings)
8791
10898
 
8792
10899
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8793
10900
 
8794
10901
  ---
10902
+ ##### Variable: PBKDF2_NUM_ROUNDS
10903
+
10904
+ ```ts
10905
+ PBKDF2_NUM_ROUNDS = 7777
10906
+ ```
10907
+
10908
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8795
10909
 
10910
+ ---
8796
10911
  ##### Variable: ProvenTxReqNonTerminalStatus
8797
10912
 
8798
10913
  ```ts
@@ -8828,6 +10943,26 @@ See also: [ProvenTxReqStatus](./client.md#type-proventxreqstatus)
8828
10943
 
8829
10944
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8830
10945
 
10946
+ ---
10947
+ ##### Variable: TESTNET_DEFAULT_SETTINGS
10948
+
10949
+ ```ts
10950
+ TESTNET_DEFAULT_SETTINGS: WalletSettings = {
10951
+ ...DEFAULT_SETTINGS,
10952
+ trustSettings: {
10953
+ ...DEFAULT_SETTINGS.trustSettings,
10954
+ trustedCertifiers: DEFAULT_SETTINGS.trustSettings.trustedCertifiers.map(certifier => ({
10955
+ ...certifier,
10956
+ identityKey: TESTNET_IDENTITY_KEYS[certifier.name] || certifier.identityKey
10957
+ }))
10958
+ }
10959
+ }
10960
+ ```
10961
+
10962
+ See also: [DEFAULT_SETTINGS](./client.md#variable-default_settings), [WalletSettings](./client.md#interface-walletsettings)
10963
+
10964
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
10965
+
8831
10966
  ---
8832
10967
  ##### Variable: brc29ProtocolID
8833
10968
 
@@ -8880,6 +11015,52 @@ outputColumnsWithoutLockingScript = [
8880
11015
 
8881
11016
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8882
11017
 
11018
+ ---
11019
+ ##### Variable: parseResults
11020
+
11021
+ ```ts
11022
+ parseResults = async (lookupResult: LookupAnswer): Promise<VerifiableCertificate[]> => {
11023
+ if (lookupResult.type === "output-list") {
11024
+ const parsedResults: VerifiableCertificate[] = [];
11025
+ for (const output of lookupResult.outputs) {
11026
+ try {
11027
+ const tx = Transaction.fromAtomicBEEF(output.beef);
11028
+ const decodedOutput = PushDrop.decode(tx.outputs[OUTPUT_INDEX].lockingScript);
11029
+ const certificate: VerifiableCertificate = JSON.parse(Utils.toUTF8(decodedOutput.fields[0]));
11030
+ const verifiableCert = new VerifiableCertificate(certificate.type, certificate.serialNumber, certificate.subject, certificate.revocationOutpoint, certificate.certifier, certificate.fields, certificate.keyring, certificate.signature);
11031
+ const decryptedFields = await verifiableCert.decryptFields(new ProtoWallet("anyone"));
11032
+ verifiableCert.decryptedFields = decryptedFields;
11033
+ parsedResults.push(verifiableCert);
11034
+ }
11035
+ catch (error) {
11036
+ console.error(error);
11037
+ }
11038
+ }
11039
+ return parsedResults;
11040
+ }
11041
+ return [];
11042
+ }
11043
+ ```
11044
+
11045
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
11046
+
11047
+ ---
11048
+ ##### Variable: queryOverlay
11049
+
11050
+ ```ts
11051
+ queryOverlay = async (query: unknown, resolver: LookupResolver): Promise<VerifiableCertificate[]> => {
11052
+ const results = await resolver.query({
11053
+ service: "ls_identity",
11054
+ query
11055
+ });
11056
+ return await parseResults(results);
11057
+ }
11058
+ ```
11059
+
11060
+ See also: [parseResults](./client.md#variable-parseresults)
11061
+
11062
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
11063
+
8883
11064
  ---
8884
11065
  ##### Variable: transactionColumnsWithoutRawTx
8885
11066
 
@@ -8903,6 +11084,60 @@ transactionColumnsWithoutRawTx = [
8903
11084
 
8904
11085
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8905
11086
 
11087
+ ---
11088
+ ##### Variable: transformVerifiableCertificatesWithTrust
11089
+
11090
+ ```ts
11091
+ transformVerifiableCertificatesWithTrust = (trustSettings: TrustSettings, certificates: VerifiableCertificate[]): DiscoverCertificatesResult => {
11092
+ const identityGroups: Record<string, IdentityGroup> = {};
11093
+ const certifierCache: Record<string, Certifier> = {};
11094
+ certificates.forEach(cert => {
11095
+ const { subject, certifier } = cert;
11096
+ if (!subject || !certifier)
11097
+ return;
11098
+ if (!certifierCache[certifier]) {
11099
+ const found = trustSettings.trustedCertifiers.find(x => x.identityKey === certifier);
11100
+ if (!found)
11101
+ return;
11102
+ certifierCache[certifier] = found;
11103
+ }
11104
+ const certifierInfo: IdentityCertifier = {
11105
+ name: certifierCache[certifier].name,
11106
+ iconUrl: certifierCache[certifier].iconUrl || "",
11107
+ description: certifierCache[certifier].description,
11108
+ trust: certifierCache[certifier].trust
11109
+ };
11110
+ const extendedCert: IdentityCertificate = {
11111
+ ...cert,
11112
+ signature: cert.signature!,
11113
+ decryptedFields: cert.decryptedFields as Record<string, string>,
11114
+ publiclyRevealedKeyring: cert.keyring,
11115
+ certifierInfo
11116
+ };
11117
+ if (!identityGroups[subject]) {
11118
+ identityGroups[subject] = { totalTrust: 0, members: [] };
11119
+ }
11120
+ identityGroups[subject].totalTrust += certifierInfo.trust;
11121
+ identityGroups[subject].members.push(extendedCert);
11122
+ });
11123
+ const finalResults: ExtendedVerifiableCertificate[] = [];
11124
+ Object.values(identityGroups).forEach(group => {
11125
+ if (group.totalTrust >= trustSettings.trustLevel) {
11126
+ finalResults.push(...group.members);
11127
+ }
11128
+ });
11129
+ finalResults.sort((a, b) => b.certifierInfo.trust - a.certifierInfo.trust);
11130
+ return {
11131
+ totalCertificates: finalResults.length,
11132
+ certificates: finalResults
11133
+ };
11134
+ }
11135
+ ```
11136
+
11137
+ See also: [Certifier](./client.md#interface-certifier), [ExtendedVerifiableCertificate](./client.md#interface-extendedverifiablecertificate), [TrustSettings](./client.md#interface-trustsettings)
11138
+
11139
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
11140
+
8906
11141
  ---
8907
11142
 
8908
11143
  <!--#endregion ts2md-api-merged-here-->