@bsv/wallet-toolbox 1.4.11 → 1.5.1

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 (169) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/mobile/out/src/CWIStyleWalletManager.js +1 -1
  3. package/mobile/out/src/CWIStyleWalletManager.js.map +1 -1
  4. package/mobile/out/src/SetupClient.mobile.d.ts +90 -0
  5. package/mobile/out/src/SetupClient.mobile.d.ts.map +1 -0
  6. package/mobile/out/src/SetupClient.mobile.js +183 -0
  7. package/mobile/out/src/SetupClient.mobile.js.map +1 -0
  8. package/mobile/out/src/SetupWallet.mobile.d.ts +93 -0
  9. package/mobile/out/src/SetupWallet.mobile.d.ts.map +1 -0
  10. package/mobile/out/src/SetupWallet.mobile.js +3 -0
  11. package/mobile/out/src/SetupWallet.mobile.js.map +1 -0
  12. package/mobile/out/src/monitor/tasks/TaskReviewStatus.d.ts +1 -1
  13. package/mobile/out/src/monitor/tasks/TaskReviewStatus.js +1 -1
  14. package/mobile/out/src/services/chaintracker/{BHServiceClient.d.ts → BhsChainTracker.d.ts} +16 -12
  15. package/mobile/out/src/services/chaintracker/BhsChainTracker.d.ts.map +1 -0
  16. package/mobile/out/src/services/chaintracker/BhsChainTracker.js +84 -0
  17. package/mobile/out/src/services/chaintracker/BhsChainTracker.js.map +1 -0
  18. package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts +98 -0
  19. package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +1 -0
  20. package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js +38 -0
  21. package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +1 -0
  22. package/mobile/out/src/services/chaintracker/index.d.ts +1 -1
  23. package/mobile/out/src/services/chaintracker/index.js +1 -1
  24. package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -1
  25. package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  26. package/mobile/out/src/services/createDefaultWalletServicesOptions.js +7 -10
  27. package/mobile/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  28. package/mobile/out/src/storage/WalletStorageManager.d.ts +25 -19
  29. package/mobile/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  30. package/mobile/out/src/storage/WalletStorageManager.js +69 -64
  31. package/mobile/out/src/storage/WalletStorageManager.js.map +1 -1
  32. package/mobile/out/src/storage/methods/createAction.d.ts.map +1 -1
  33. package/mobile/out/src/storage/methods/createAction.js +4 -9
  34. package/mobile/out/src/storage/methods/createAction.js.map +1 -1
  35. package/mobile/out/src/storage/methods/processAction.js +1 -1
  36. package/mobile/out/src/storage/methods/processAction.js.map +1 -1
  37. package/mobile/package-lock.json +6 -6
  38. package/mobile/package.json +2 -2
  39. package/out/src/AuthFetchDebug.d.ts +88 -0
  40. package/out/src/AuthFetchDebug.d.ts.map +1 -0
  41. package/out/src/AuthFetchDebug.js +518 -0
  42. package/out/src/AuthFetchDebug.js.map +1 -0
  43. package/out/src/SetupClient.mobile.d.ts +90 -0
  44. package/out/src/SetupClient.mobile.d.ts.map +1 -0
  45. package/out/src/SetupClient.mobile.js +183 -0
  46. package/out/src/SetupClient.mobile.js.map +1 -0
  47. package/out/src/SetupWallet.mobile.d.ts +93 -0
  48. package/out/src/SetupWallet.mobile.d.ts.map +1 -0
  49. package/out/src/SetupWallet.mobile.js +3 -0
  50. package/out/src/SetupWallet.mobile.js.map +1 -0
  51. package/out/src/SimplifiedFetchTransport.d.ts +1 -0
  52. package/out/src/SimplifiedFetchTransport.d.ts.map +1 -0
  53. package/out/src/SimplifiedFetchTransport.js +2 -0
  54. package/out/src/SimplifiedFetchTransport.js.map +1 -0
  55. package/out/src/services/BhsChainTracker.d.ts +1 -0
  56. package/out/src/services/BhsChainTracker.d.ts.map +1 -0
  57. package/out/src/services/BhsChainTracker.js +2 -0
  58. package/out/src/services/BhsChainTracker.js.map +1 -0
  59. package/out/src/services/chaintracker/BhsChainTracker.d.ts +38 -0
  60. package/out/src/services/chaintracker/BhsChainTracker.d.ts.map +1 -0
  61. package/out/src/services/chaintracker/BhsChainTracker.js +84 -0
  62. package/out/src/services/chaintracker/BhsChainTracker.js.map +1 -0
  63. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts +98 -0
  64. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +1 -0
  65. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js +38 -0
  66. package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +1 -0
  67. package/out/src/storage/StorageProvider copy.d.ts +209 -0
  68. package/out/src/storage/StorageProvider copy.d.ts.map +1 -0
  69. package/out/src/storage/StorageProvider copy.js +550 -0
  70. package/out/src/storage/StorageProvider copy.js.map +1 -0
  71. package/out/src/storage/StorageProvider.mobile.d.ts +209 -0
  72. package/out/src/storage/StorageProvider.mobile.d.ts.map +1 -0
  73. package/out/src/storage/StorageProvider.mobile.js +550 -0
  74. package/out/src/storage/StorageProvider.mobile.js.map +1 -0
  75. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  76. package/out/src/storage/WalletStorageManager.js.map +1 -1
  77. package/out/src/storage/remoting/StorageClient copy.d.ts +283 -0
  78. package/out/src/storage/remoting/StorageClient copy.d.ts.map +1 -0
  79. package/out/src/storage/remoting/StorageClient copy.js +477 -0
  80. package/out/src/storage/remoting/StorageClient copy.js.map +1 -0
  81. package/out/test/Wallet/action/abortAction.test.d.ts.map +1 -0
  82. package/out/test/{wallet → Wallet}/action/abortAction.test.js.map +1 -1
  83. package/out/test/Wallet/action/createAction.test.d.ts.map +1 -0
  84. package/out/test/{wallet → Wallet}/action/createAction.test.js.map +1 -1
  85. package/out/test/{wallet → Wallet}/action/createAction2.test.d.ts.map +1 -1
  86. package/out/test/{wallet → Wallet}/action/createAction2.test.js.map +1 -1
  87. package/out/test/Wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +1 -0
  88. package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.js.map +1 -1
  89. package/out/test/Wallet/action/internalizeAction.test.d.ts.map +1 -0
  90. package/out/test/{wallet → Wallet}/action/internalizeAction.test.js.map +1 -1
  91. package/out/test/Wallet/action/relinquishOutput.test.d.ts.map +1 -0
  92. package/out/test/{wallet → Wallet}/action/relinquishOutput.test.js.map +1 -1
  93. package/out/test/Wallet/construct/Wallet.constructor.test.d.ts.map +1 -0
  94. package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.js.map +1 -1
  95. package/out/test/Wallet/list/listActions.test.d.ts.map +1 -0
  96. package/out/test/{wallet → Wallet}/list/listActions.test.js.map +1 -1
  97. package/out/test/Wallet/list/listActions2.test.d.ts.map +1 -0
  98. package/out/test/{wallet → Wallet}/list/listActions2.test.js.map +1 -1
  99. package/out/test/Wallet/list/listCertificates.test.d.ts.map +1 -0
  100. package/out/test/{wallet → Wallet}/list/listCertificates.test.js.map +1 -1
  101. package/out/test/Wallet/list/listOutputs.test.d.ts.map +1 -0
  102. package/out/test/{wallet → Wallet}/list/listOutputs.test.js.map +1 -1
  103. package/out/test/Wallet/sync/Wallet.sync.test.d.ts.map +1 -0
  104. package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.js.map +1 -1
  105. package/out/tsconfig.all.tsbuildinfo +1 -1
  106. package/package.json +4 -4
  107. package/src/storage/WalletStorageManager.ts +1 -3
  108. package/mobile/out/src/services/chaintracker/BHServiceClient.d.ts.map +0 -1
  109. package/mobile/out/src/services/chaintracker/BHServiceClient.js +0 -163
  110. package/mobile/out/src/services/chaintracker/BHServiceClient.js.map +0 -1
  111. package/mobile/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +0 -140
  112. package/mobile/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +0 -1
  113. package/mobile/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +0 -467
  114. package/mobile/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +0 -1
  115. package/mobile/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts +0 -20
  116. package/mobile/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +0 -1
  117. package/mobile/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +0 -31
  118. package/mobile/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +0 -1
  119. package/mobile/out/src/utility/utilityHelpers.buffer.d.ts +0 -18
  120. package/mobile/out/src/utility/utilityHelpers.buffer.d.ts.map +0 -1
  121. package/mobile/out/src/utility/utilityHelpers.buffer.js +0 -45
  122. package/mobile/out/src/utility/utilityHelpers.buffer.js.map +0 -1
  123. package/out/test/wallet/action/abortAction.test.d.ts.map +0 -1
  124. package/out/test/wallet/action/createAction.test.d.ts.map +0 -1
  125. package/out/test/wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +0 -1
  126. package/out/test/wallet/action/internalizeAction.test.d.ts.map +0 -1
  127. package/out/test/wallet/action/relinquishOutput.test.d.ts.map +0 -1
  128. package/out/test/wallet/construct/Wallet.constructor.test.d.ts.map +0 -1
  129. package/out/test/wallet/list/listActions.test.d.ts.map +0 -1
  130. package/out/test/wallet/list/listActions2.test.d.ts.map +0 -1
  131. package/out/test/wallet/list/listCertificates.test.d.ts.map +0 -1
  132. package/out/test/wallet/list/listOutputs.test.d.ts.map +0 -1
  133. package/out/test/wallet/sync/Wallet.sync.test.d.ts.map +0 -1
  134. /package/out/test/{wallet → Wallet}/action/abortAction.test.d.ts +0 -0
  135. /package/out/test/{wallet → Wallet}/action/abortAction.test.js +0 -0
  136. /package/out/test/{wallet → Wallet}/action/createAction.test.d.ts +0 -0
  137. /package/out/test/{wallet → Wallet}/action/createAction.test.js +0 -0
  138. /package/out/test/{wallet → Wallet}/action/createAction2.test.d.ts +0 -0
  139. /package/out/test/{wallet → Wallet}/action/createAction2.test.js +0 -0
  140. /package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.d.ts +0 -0
  141. /package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.js +0 -0
  142. /package/out/test/{wallet → Wallet}/action/internalizeAction.test.d.ts +0 -0
  143. /package/out/test/{wallet → Wallet}/action/internalizeAction.test.js +0 -0
  144. /package/out/test/{wallet → Wallet}/action/relinquishOutput.test.d.ts +0 -0
  145. /package/out/test/{wallet → Wallet}/action/relinquishOutput.test.js +0 -0
  146. /package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.d.ts +0 -0
  147. /package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.js +0 -0
  148. /package/out/test/{wallet → Wallet}/list/listActions.test.d.ts +0 -0
  149. /package/out/test/{wallet → Wallet}/list/listActions.test.js +0 -0
  150. /package/out/test/{wallet → Wallet}/list/listActions2.test.d.ts +0 -0
  151. /package/out/test/{wallet → Wallet}/list/listActions2.test.js +0 -0
  152. /package/out/test/{wallet → Wallet}/list/listCertificates.test.d.ts +0 -0
  153. /package/out/test/{wallet → Wallet}/list/listCertificates.test.js +0 -0
  154. /package/out/test/{wallet → Wallet}/list/listOutputs.test.d.ts +0 -0
  155. /package/out/test/{wallet → Wallet}/list/listOutputs.test.js +0 -0
  156. /package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.d.ts +0 -0
  157. /package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.js +0 -0
  158. /package/test/{wallet → Wallet}/action/abortAction.test.ts +0 -0
  159. /package/test/{wallet → Wallet}/action/createAction.test.ts +0 -0
  160. /package/test/{wallet → Wallet}/action/createAction2.test.ts +0 -0
  161. /package/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.ts +0 -0
  162. /package/test/{wallet → Wallet}/action/internalizeAction.test.ts +0 -0
  163. /package/test/{wallet → Wallet}/action/relinquishOutput.test.ts +0 -0
  164. /package/test/{wallet → Wallet}/construct/Wallet.constructor.test.ts +0 -0
  165. /package/test/{wallet → Wallet}/list/listActions.test.ts +0 -0
  166. /package/test/{wallet → Wallet}/list/listActions2.test.ts +0 -0
  167. /package/test/{wallet → Wallet}/list/listCertificates.test.ts +0 -0
  168. /package/test/{wallet → Wallet}/list/listOutputs.test.ts +0 -0
  169. /package/test/{wallet → Wallet}/sync/Wallet.sync.test.ts +0 -0
@@ -0,0 +1,90 @@
1
+ import { BEEF, CreateActionOptions, CreateActionOutput, CreateActionResult, LockingScript, PrivateKey, WalletInterface } from '@bsv/sdk';
2
+ import { sdk, Wallet } from './index.mobile';
3
+ import { KeyPairAddress, SetupClientWalletArgs, SetupWallet, SetupWalletClient } from './SetupWallet.mobile';
4
+ /**
5
+ * Mobile-friendly version of the Setup class provides static setup functions to construct BRC-100 compatible
6
+ * wallets without IndexDB dependencies for mobile environments.
7
+ *
8
+ * It serves as a starting point for experimentation and customization.
9
+ */
10
+ export declare abstract class SetupClient {
11
+ /**
12
+ * Create a `Wallet`. Storage can optionally be provided or configured later.
13
+ *
14
+ * The following components are configured: KeyDeriver, WalletStorageManager, WalletService, WalletStorage.
15
+ * Optionally, PrivilegedKeyManager is also configured.
16
+ *
17
+ * @publicbody
18
+ */
19
+ static createWallet(args: SetupClientWalletArgs): Promise<SetupWallet>;
20
+ /**
21
+ * Setup a new `Wallet` without requiring a .env file.
22
+ *
23
+ * @param args.chain - 'main' or 'test'
24
+ * @param args.rootKeyHex - Root private key for wallet's key deriver.
25
+ * @param args.storageUrl - Optional. `StorageClient` and `chain` compatible endpoint URL.
26
+ * @param args.privilegedKeyGetter - Optional. Method that will return the privileged `PrivateKey`, on demand.
27
+ */
28
+ static createWalletClientNoEnv(args: {
29
+ chain: sdk.Chain;
30
+ rootKeyHex: string;
31
+ storageUrl?: string;
32
+ privilegedKeyGetter?: () => Promise<PrivateKey>;
33
+ }): Promise<Wallet>;
34
+ /**
35
+ * @publicbody
36
+ */
37
+ static createWalletClient(args: SetupClientWalletClientArgs): Promise<SetupWalletClient>;
38
+ /**
39
+ * @publicbody
40
+ */
41
+ static getKeyPair(priv?: string | PrivateKey): KeyPairAddress;
42
+ /**
43
+ * @publicbody
44
+ */
45
+ static getLockP2PKH(address: string): LockingScript;
46
+ /**
47
+ * @publicbody
48
+ */
49
+ static getUnlockP2PKH(priv: PrivateKey, satoshis: number): sdk.ScriptTemplateUnlock;
50
+ /**
51
+ * @publicbody
52
+ */
53
+ static createP2PKHOutputs(outputs: {
54
+ address: string;
55
+ satoshis: number;
56
+ outputDescription?: string;
57
+ basket?: string;
58
+ tags?: string[];
59
+ }[]): CreateActionOutput[];
60
+ /**
61
+ * @publicbody
62
+ */
63
+ static createP2PKHOutputsAction(wallet: WalletInterface, outputs: {
64
+ address: string;
65
+ satoshis: number;
66
+ outputDescription?: string;
67
+ basket?: string;
68
+ tags?: string[];
69
+ }[], options?: CreateActionOptions): Promise<{
70
+ cr: CreateActionResult;
71
+ outpoints: string[] | undefined;
72
+ }>;
73
+ /**
74
+ * @publicbody
75
+ */
76
+ static fundWalletFromP2PKHOutpoints(wallet: WalletInterface, outpoints: string[], p2pkhKey: KeyPairAddress, inputBEEF?: BEEF): Promise<void>;
77
+ }
78
+ /**
79
+ * Extension `SetupWalletClientArgs` of `SetupWalletArgs` is used by `createWalletClient`
80
+ * to construct a `SetupWalletClient`.
81
+ */
82
+ export interface SetupClientWalletClientArgs extends SetupClientWalletArgs {
83
+ /**
84
+ * The endpoint URL of a service hosting the `StorageServer` JSON-RPC service to
85
+ * which a `StorageClient` instance should connect to function as
86
+ * the active storage provider of the newly created wallet.
87
+ */
88
+ endpointUrl?: string;
89
+ }
90
+ //# sourceMappingURL=SetupClient.mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupClient.mobile.d.ts","sourceRoot":"","sources":["../../src/SetupClient.mobile.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAEJ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAElB,aAAa,EAEb,UAAU,EAEV,eAAe,EAChB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAW,GAAG,EAA2B,MAAM,EAAwB,MAAM,gBAAgB,CAAA;AACpG,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE5G;;;;;GAKG;AACH,8BAAsB,WAAW;IAC/B;;;;;;;OAOG;WACU,YAAY,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;IAqC5E;;;;;;;OAOG;WACU,uBAAuB,CAAC,IAAI,EAAE;QACzC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;KAChD,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBnB;;OAEG;WACU,kBAAkB,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAc9F;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,cAAc;IAS7D;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAMnD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,oBAAoB;IAYnF;;OAEG;IACH,MAAM,CAAC,kBAAkB,CACvB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAChB,EAAE,GACF,kBAAkB,EAAE;IAgBvB;;OAEG;WACU,wBAAwB,CACnC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAChB,EAAE,EACH,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;KAChC,CAAC;IAwBF;;OAEG;WACU,4BAA4B,CACvC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,IAAI;CAInB;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACxE;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetupClient = void 0;
4
+ const sdk_1 = require("@bsv/sdk");
5
+ const index_mobile_1 = require("./index.mobile");
6
+ /**
7
+ * Mobile-friendly version of the Setup class provides static setup functions to construct BRC-100 compatible
8
+ * wallets without IndexDB dependencies for mobile environments.
9
+ *
10
+ * It serves as a starting point for experimentation and customization.
11
+ */
12
+ class SetupClient {
13
+ /**
14
+ * Create a `Wallet`. Storage can optionally be provided or configured later.
15
+ *
16
+ * The following components are configured: KeyDeriver, WalletStorageManager, WalletService, WalletStorage.
17
+ * Optionally, PrivilegedKeyManager is also configured.
18
+ *
19
+ * @publicbody
20
+ */
21
+ static async createWallet(args) {
22
+ const chain = args.chain;
23
+ const rootKey = sdk_1.PrivateKey.fromHex(args.rootKeyHex);
24
+ const identityKey = rootKey.toPublicKey().toString();
25
+ const keyDeriver = new sdk_1.KeyDeriver(rootKey);
26
+ const storage = new index_mobile_1.WalletStorageManager(identityKey, args.active, args.backups);
27
+ if (storage.canMakeAvailable())
28
+ await storage.makeAvailable();
29
+ const serviceOptions = index_mobile_1.Services.createDefaultOptions(chain);
30
+ serviceOptions.taalApiKey = args.taalApiKey;
31
+ const services = new index_mobile_1.Services(serviceOptions);
32
+ const monopts = index_mobile_1.Monitor.createDefaultWalletMonitorOptions(chain, storage, services);
33
+ const monitor = new index_mobile_1.Monitor(monopts);
34
+ monitor.addDefaultTasks();
35
+ const privilegedKeyManager = args.privilegedKeyGetter
36
+ ? new index_mobile_1.sdk.PrivilegedKeyManager(args.privilegedKeyGetter)
37
+ : undefined;
38
+ const wallet = new index_mobile_1.Wallet({
39
+ chain,
40
+ keyDeriver,
41
+ storage,
42
+ services,
43
+ monitor,
44
+ privilegedKeyManager
45
+ });
46
+ const r = {
47
+ rootKey,
48
+ identityKey,
49
+ keyDeriver,
50
+ chain,
51
+ storage,
52
+ services,
53
+ monitor,
54
+ wallet
55
+ };
56
+ return r;
57
+ }
58
+ /**
59
+ * Setup a new `Wallet` without requiring a .env file.
60
+ *
61
+ * @param args.chain - 'main' or 'test'
62
+ * @param args.rootKeyHex - Root private key for wallet's key deriver.
63
+ * @param args.storageUrl - Optional. `StorageClient` and `chain` compatible endpoint URL.
64
+ * @param args.privilegedKeyGetter - Optional. Method that will return the privileged `PrivateKey`, on demand.
65
+ */
66
+ static async createWalletClientNoEnv(args) {
67
+ const chain = args.chain;
68
+ const endpointUrl = args.storageUrl || `https://${args.chain !== 'main' ? 'staging-' : ''}storage.babbage.systems`;
69
+ const rootKey = sdk_1.PrivateKey.fromHex(args.rootKeyHex);
70
+ const keyDeriver = new sdk_1.KeyDeriver(rootKey);
71
+ const storage = new index_mobile_1.WalletStorageManager(keyDeriver.identityKey);
72
+ const services = new index_mobile_1.Services(chain);
73
+ const privilegedKeyManager = args.privilegedKeyGetter
74
+ ? new index_mobile_1.sdk.PrivilegedKeyManager(args.privilegedKeyGetter)
75
+ : undefined;
76
+ const wallet = new index_mobile_1.Wallet({
77
+ chain,
78
+ keyDeriver,
79
+ storage,
80
+ services,
81
+ privilegedKeyManager
82
+ });
83
+ const client = new index_mobile_1.StorageClient(wallet, endpointUrl);
84
+ await storage.addWalletStorageProvider(client);
85
+ await storage.makeAvailable();
86
+ return wallet;
87
+ }
88
+ /**
89
+ * @publicbody
90
+ */
91
+ static async createWalletClient(args) {
92
+ const wo = await SetupClient.createWallet(args);
93
+ const endpointUrl = args.endpointUrl || `https://${args.chain !== 'main' ? 'staging-' : ''}storage.babbage.systems`;
94
+ const client = new index_mobile_1.StorageClient(wo.wallet, endpointUrl);
95
+ await wo.storage.addWalletStorageProvider(client);
96
+ await wo.storage.makeAvailable();
97
+ return {
98
+ ...wo,
99
+ endpointUrl
100
+ };
101
+ }
102
+ /**
103
+ * @publicbody
104
+ */
105
+ static getKeyPair(priv) {
106
+ if (priv === undefined)
107
+ priv = sdk_1.PrivateKey.fromRandom();
108
+ else if (typeof priv === 'string')
109
+ priv = new sdk_1.PrivateKey(priv, 'hex');
110
+ const pub = sdk_1.PublicKey.fromPrivateKey(priv);
111
+ const address = pub.toAddress();
112
+ return { privateKey: priv, publicKey: pub, address };
113
+ }
114
+ /**
115
+ * @publicbody
116
+ */
117
+ static getLockP2PKH(address) {
118
+ const p2pkh = new sdk_1.P2PKH();
119
+ const lock = p2pkh.lock(address);
120
+ return lock;
121
+ }
122
+ /**
123
+ * @publicbody
124
+ */
125
+ static getUnlockP2PKH(priv, satoshis) {
126
+ const p2pkh = new sdk_1.P2PKH();
127
+ const lock = SetupClient.getLockP2PKH(SetupClient.getKeyPair(priv).address);
128
+ // Prepare to pay with SIGHASH_ALL and without ANYONE_CAN_PAY.
129
+ // In otherwords:
130
+ // - all outputs must remain in the current order, amount and locking scripts.
131
+ // - all inputs must remain from the current outpoints and sequence numbers.
132
+ // (unlock scripts are never signed)
133
+ const unlock = p2pkh.unlock(priv, 'all', false, satoshis, lock);
134
+ return unlock;
135
+ }
136
+ /**
137
+ * @publicbody
138
+ */
139
+ static createP2PKHOutputs(outputs) {
140
+ const os = [];
141
+ const count = outputs.length;
142
+ for (let i = 0; i < count; i++) {
143
+ const o = outputs[i];
144
+ os.push({
145
+ basket: o.basket,
146
+ tags: o.tags,
147
+ satoshis: o.satoshis,
148
+ lockingScript: SetupClient.getLockP2PKH(o.address).toHex(),
149
+ outputDescription: o.outputDescription || `p2pkh ${i}`
150
+ });
151
+ }
152
+ return os;
153
+ }
154
+ /**
155
+ * @publicbody
156
+ */
157
+ static async createP2PKHOutputsAction(wallet, outputs, options) {
158
+ const os = SetupClient.createP2PKHOutputs(outputs);
159
+ const createArgs = {
160
+ description: `createP2PKHOutputs`,
161
+ outputs: os,
162
+ options: {
163
+ ...options,
164
+ // Don't randomize so we can simplify outpoint creation
165
+ randomizeOutputs: false
166
+ }
167
+ };
168
+ const cr = await wallet.createAction(createArgs);
169
+ let outpoints;
170
+ if (cr.txid) {
171
+ outpoints = os.map((o, i) => `${cr.txid}.${i}`);
172
+ }
173
+ return { cr, outpoints };
174
+ }
175
+ /**
176
+ * @publicbody
177
+ */
178
+ static async fundWalletFromP2PKHOutpoints(wallet, outpoints, p2pkhKey, inputBEEF) {
179
+ // TODO
180
+ }
181
+ }
182
+ exports.SetupClient = SetupClient;
183
+ //# sourceMappingURL=SetupClient.mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupClient.mobile.js","sourceRoot":"","sources":["../../src/SetupClient.mobile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { PrivateKey, KeyDeriver, PublicKey } from '@bsv/sdk';
2
+ import { WalletStorageManager, Monitor, sdk } from './index.mobile';
3
+ import { Services } from './services';
4
+ import { Wallet } from './Wallet';
5
+ /**
6
+ * When creating a BRC-100 compatible `Wallet`, many components come into play.
7
+ *
8
+ * All of the `createWallet` functions in the `Setup` and `SetupClient` classes return
9
+ * an object with direct access to each component to facilitate experimentation, testing
10
+ * and customization.
11
+ */
12
+ export interface SetupWallet {
13
+ /**
14
+ * The rootKey of the `KeyDeriver`. The private key from which other keys are derived.
15
+ */
16
+ rootKey: PrivateKey;
17
+ /**
18
+ * The pubilc key associated with the `rootKey` which also serves as the wallet's identity.
19
+ */
20
+ identityKey: string;
21
+ /**
22
+ * The `KeyDeriver` component used by the wallet for key derivation and cryptographic functions.
23
+ */
24
+ keyDeriver: KeyDeriver;
25
+ /**
26
+ * The chain ('main' or 'test') which the wallet accesses.
27
+ */
28
+ chain: sdk.Chain;
29
+ /**
30
+ * The `WalletStorageManager` that manages all the configured storage providers (active and backups)
31
+ * accessed by the wallet.
32
+ */
33
+ storage: WalletStorageManager;
34
+ /**
35
+ * The network `Services` component which provides the wallet with access to external services hosted
36
+ * on the public network.
37
+ */
38
+ services: Services;
39
+ /**
40
+ * The background task `Monitor` component available to the wallet to offload tasks
41
+ * that speed up wallet operations and maintain data integrity.
42
+ */
43
+ monitor: Monitor;
44
+ /**
45
+ * The actual BRC-100 `Wallet` to which all the other properties and components contribute.
46
+ *
47
+ * Note that internally, the wallet is itself linked to all these properties and components.
48
+ * They are included in this interface to facilitate access after wallet construction for
49
+ * experimentation, testing and customization. Any changes made to the configuration of these
50
+ * properties and components may thus directly impact your wallet.
51
+ */
52
+ wallet: Wallet;
53
+ }
54
+ /**
55
+ * A private key and associated public key and address.
56
+ */
57
+ export interface KeyPairAddress {
58
+ privateKey: PrivateKey;
59
+ publicKey: PublicKey;
60
+ address: string;
61
+ }
62
+ /**
63
+ * Arguments used by `createWallet` to construct a `SetupWallet`.
64
+ *
65
+ * Extension `SetupWalletClientArgs` used by `createWalletClient` to construct a `SetupWalletClient`.
66
+ *
67
+ * @publicbody
68
+ */
69
+ export interface SetupClientWalletArgs {
70
+ chain: sdk.Chain;
71
+ rootKeyHex: string;
72
+ /**
73
+ * When requesting privileged operations (e.g., sign), this method will be called
74
+ * to allow signing. This method will automatically be linked to a key derivation
75
+ * path known to be privileged, if available.
76
+ */
77
+ privilegedKeyGetter?: () => Promise<PrivateKey>;
78
+ active?: sdk.WalletStorageProvider;
79
+ backups?: sdk.WalletStorageProvider[];
80
+ taalApiKey?: string;
81
+ }
82
+ /**
83
+ * Extension `SetupWalletClient` of `SetupWallet` is returned by `createWalletClient`
84
+ */
85
+ export interface SetupWalletClient extends SetupWallet {
86
+ /**
87
+ * The endpoint URL of a service hosting the `StorageServer` JSON-RPC service to
88
+ * which the wallet's `StorageClient` is connected to function as
89
+ * the active storage provider of the wallet.
90
+ */
91
+ endpointUrl: string;
92
+ }
93
+ //# sourceMappingURL=SetupWallet.mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupWallet.mobile.d.ts","sourceRoot":"","sources":["../../src/SetupWallet.mobile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC;;;;;;GAMG;AAEH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,OAAO,EAAE,UAAU,CAAA;IACnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IACtB;;OAEG;IACH,KAAK,EAAE,GAAG,CAAC,KAAK,CAAA;IAChB;;;OAGG;IACH,OAAO,EAAE,oBAAoB,CAAA;IAC7B;;;OAGG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAClB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,CAAC,EAAE,GAAG,CAAC,qBAAqB,CAAA;IAClC,OAAO,CAAC,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAA;IACrC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=SetupWallet.mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupWallet.mobile.js","sourceRoot":"","sources":["../../src/SetupWallet.mobile.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SimplifiedFetchTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimplifiedFetchTransport.d.ts","sourceRoot":"","sources":["../../src/SimplifiedFetchTransport.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=SimplifiedFetchTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimplifiedFetchTransport.js","sourceRoot":"","sources":["../../src/SimplifiedFetchTransport.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=BhsChainTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BhsChainTracker.d.ts","sourceRoot":"","sources":["../../../src/services/BhsChainTracker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=BhsChainTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BhsChainTracker.js","sourceRoot":"","sources":["../../../src/services/BhsChainTracker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import { BlockHeadersService } from '@bsv/sdk';
2
+ import { ChaintracksServiceClient, ChaintracksServiceClientOptions } from './chaintracks/ChaintracksServiceClient';
3
+ import { sdk } from '../../index.client';
4
+ import { BlockHeader } from './chaintracks';
5
+ export interface BhsChainTrackerOptions {
6
+ url: string;
7
+ apiKey: string;
8
+ }
9
+ export declare class BHServiceClient implements ChaintracksServiceClient {
10
+ bhs: BlockHeadersService;
11
+ cache: Record<number, string>;
12
+ chain: sdk.Chain;
13
+ serviceUrl: string;
14
+ opts: BhsChainTrackerOptions;
15
+ options: ChaintracksServiceClientOptions;
16
+ constructor(chain: sdk.Chain, options: BhsChainTrackerOptions);
17
+ currentHeight(): Promise<number>;
18
+ isValidRootForHeight(root: string, height: number): Promise<boolean>;
19
+ getPresentHeight(): Promise<number>;
20
+ findHeaderForHeight(height: number): Promise<undefined>;
21
+ findHeaderForBlockHash(hash: string): Promise<undefined>;
22
+ findHeaderForMerkleRoot(merkleRoot: string, height?: number): Promise<undefined>;
23
+ getHeaders(height: number, count: number): Promise<string>;
24
+ startListening(): Promise<void>;
25
+ listening(): Promise<void>;
26
+ isSynchronized(): Promise<boolean>;
27
+ getChain(): Promise<sdk.Chain>;
28
+ isListening(): Promise<boolean>;
29
+ getChainTipHeader(): Promise<BlockHeader>;
30
+ findChainTipHashHex(): Promise<string>;
31
+ findChainWorkForBlockHash(hash: string): Promise<string | undefined>;
32
+ findChainTipHeader(): Promise<BlockHeader>;
33
+ getJsonOrUndefined<T>(path: string): Promise<T | undefined>;
34
+ getJson<T>(path: string): Promise<T>;
35
+ postJsonVoid<T>(path: string, params: T): Promise<void>;
36
+ addHeader(header: any): Promise<void>;
37
+ }
38
+ //# sourceMappingURL=BhsChainTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BhsChainTracker.d.ts","sourceRoot":"","sources":["../../../../src/services/chaintracker/BhsChainTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAA;AAClH,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,eAAgB,YAAW,wBAAwB;IAC9D,GAAG,EAAE,mBAAmB,CAAA;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,sBAAsB,CAAA;IAC5B,OAAO,EAAE,+BAA+B,CAAA;gBAE5B,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB;IAUvD,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpE,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIvD,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIxD,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIhF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAI9B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAIzC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIpE,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC;IAI1C,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAI3D,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAI5C"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BHServiceClient = void 0;
4
+ const sdk_1 = require("@bsv/sdk");
5
+ const ChaintracksServiceClient_1 = require("./chaintracks/ChaintracksServiceClient");
6
+ class BHServiceClient {
7
+ constructor(chain, options) {
8
+ this.bhs = new sdk_1.BlockHeadersService(options.url, { apiKey: options.apiKey });
9
+ this.cache = {};
10
+ this.chain = chain;
11
+ this.serviceUrl = options.url;
12
+ this.opts = options;
13
+ this.options = ChaintracksServiceClient_1.ChaintracksServiceClient.createChaintracksServiceClientOptions();
14
+ this.options.useAuthrite = true;
15
+ }
16
+ async currentHeight() {
17
+ return await this.bhs.currentHeight();
18
+ }
19
+ async isValidRootForHeight(root, height) {
20
+ const cachedRoot = this.cache[height];
21
+ if (cachedRoot) {
22
+ return cachedRoot === root;
23
+ }
24
+ const isValid = await this.bhs.isValidRootForHeight(root, height);
25
+ this.cache[height] = root;
26
+ return isValid;
27
+ }
28
+ async getPresentHeight() {
29
+ return await this.bhs.currentHeight();
30
+ }
31
+ async findHeaderForHeight(height) {
32
+ return undefined;
33
+ }
34
+ async findHeaderForBlockHash(hash) {
35
+ return undefined;
36
+ }
37
+ async findHeaderForMerkleRoot(merkleRoot, height) {
38
+ return undefined;
39
+ }
40
+ async getHeaders(height, count) {
41
+ return '';
42
+ }
43
+ async startListening() {
44
+ return;
45
+ }
46
+ async listening() {
47
+ return;
48
+ }
49
+ async isSynchronized() {
50
+ return true;
51
+ }
52
+ async getChain() {
53
+ return this.chain;
54
+ }
55
+ async isListening() {
56
+ return true;
57
+ }
58
+ async getChainTipHeader() {
59
+ return undefined;
60
+ }
61
+ async findChainTipHashHex() {
62
+ return '';
63
+ }
64
+ async findChainWorkForBlockHash(hash) {
65
+ return undefined;
66
+ }
67
+ async findChainTipHeader() {
68
+ return undefined;
69
+ }
70
+ async getJsonOrUndefined(path) {
71
+ return undefined;
72
+ }
73
+ async getJson(path) {
74
+ return {};
75
+ }
76
+ async postJsonVoid(path, params) {
77
+ return;
78
+ }
79
+ async addHeader(header) {
80
+ return;
81
+ }
82
+ }
83
+ exports.BHServiceClient = BHServiceClient;
84
+ //# sourceMappingURL=BhsChainTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BhsChainTracker.js","sourceRoot":"","sources":["../../../../src/services/chaintracker/BhsChainTracker.ts"],"names":[],"mappings":";;;AAAA,kCAA8C;AAC9C,qFAAkH;AASlH,MAAa,eAAe;IAQ1B,YAAY,KAAgB,EAAE,OAA+B;QAC3D,IAAI,CAAC,GAAG,GAAG,IAAI,yBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3E,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,mDAAwB,CAAC,qCAAqC,EAAE,CAAA;QAC/E,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAY,EAAE,MAAc;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,KAAK,IAAI,CAAA;QAC5B,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACjE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QACzB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,MAAc;QACtC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAY;QACvC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,UAAkB,EAAE,MAAe;QAC/D,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,KAAa;QAC5C,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAM;IACR,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAM;IACR,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,OAAO,SAAmC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,IAAY;QAC1C,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,SAAmC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAI,IAAY;QACtC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,IAAY;QAC3B,OAAO,EAAO,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,YAAY,CAAI,IAAY,EAAE,MAAS;QAC3C,OAAM;IACR,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAW;QACzB,OAAM;IACR,CAAC;CAEF;AAxGD,0CAwGC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * These are fields of 80 byte serialized header in order whose double sha256 hash is a block's hash value
3
+ * and the next block's previousHash value.
4
+ *
5
+ * All block hash values and merkleRoot values are 32 byte hex string values with the byte order reversed from the serialized byte order.
6
+ */
7
+ export interface BaseBlockHeader {
8
+ /**
9
+ * Block header version value. Serialized length is 4 bytes.
10
+ */
11
+ version: number;
12
+ /**
13
+ * Hash of previous block's block header. Serialized length is 32 bytes.
14
+ */
15
+ previousHash: string;
16
+ /**
17
+ * Root hash of the merkle tree of all transactions in this block. Serialized length is 32 bytes.
18
+ */
19
+ merkleRoot: string;
20
+ /**
21
+ * Block header time value. Serialized length is 4 bytes.
22
+ */
23
+ time: number;
24
+ /**
25
+ * Block header bits value. Serialized length is 4 bytes.
26
+ */
27
+ bits: number;
28
+ /**
29
+ * Block header nonce value. Serialized length is 4 bytes.
30
+ */
31
+ nonce: number;
32
+ }
33
+ /**
34
+ * A `BaseBlockHeader` extended with its computed hash and height in its chain.
35
+ */
36
+ export interface BlockHeader extends BaseBlockHeader {
37
+ /**
38
+ * Height of the header, starting from zero.
39
+ */
40
+ height: number;
41
+ /**
42
+ * The double sha256 hash of the serialized `BaseBlockHeader` fields.
43
+ */
44
+ hash: string;
45
+ }
46
+ /**
47
+ * The "live" portion of the block chain is recent history that can conceivably be subject to reorganizations.
48
+ * The additional fields support tracking orphan blocks, chain forks, and chain reorgs.
49
+ */
50
+ export interface LiveBlockHeader extends BlockHeader {
51
+ /**
52
+ * The cummulative chainwork achieved by the addition of this block to the chain.
53
+ * Chainwork only matters in selecting the active chain.
54
+ */
55
+ chainWork: string;
56
+ /**
57
+ * True only if this header is currently a chain tip. e.g. There is no header that follows it by previousHash or previousHeaderId.
58
+ */
59
+ isChainTip: boolean;
60
+ /**
61
+ * True only if this header is currently on the active chain.
62
+ */
63
+ isActive: boolean;
64
+ /**
65
+ * As there may be more than one header with identical height values due to orphan tracking,
66
+ * headers are assigned a unique headerId while part of the "live" portion of the block chain.
67
+ */
68
+ headerId: number;
69
+ /**
70
+ * Every header in the "live" portion of the block chain is linked to an ancestor header through
71
+ * both its previousHash and previousHeaderId properties.
72
+ *
73
+ * Due to forks, there may be multiple headers with identical `previousHash` and `previousHeaderId` values.
74
+ * Of these, only one (the header on the active chain) will have `isActive` === true.
75
+ */
76
+ previousHeaderId: number | null;
77
+ }
78
+ /**
79
+ * Type guard function.
80
+ * @publicbody
81
+ */
82
+ export declare function isLive(header: BlockHeader | LiveBlockHeader): header is LiveBlockHeader;
83
+ /**
84
+ * Type guard function.
85
+ * @publicbody
86
+ */
87
+ export declare function isBaseBlockHeader(header: BaseBlockHeader | BlockHeader | LiveBlockHeader): header is BaseBlockHeader;
88
+ /**
89
+ * Type guard function.
90
+ * @publicbody
91
+ */
92
+ export declare function isBlockHeader(header: BaseBlockHeader | BlockHeader | LiveBlockHeader): header is LiveBlockHeader;
93
+ /**
94
+ * Type guard function.
95
+ * @publicbody
96
+ */
97
+ export declare function isLiveBlockHeader(header: BaseBlockHeader | BlockHeader | LiveBlockHeader): header is LiveBlockHeader;
98
+ //# sourceMappingURL=BlockHeaderApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockHeaderApi.d.ts","sourceRoot":"","sources":["../../../../../src/services/chaintracker/chaintracks/BlockHeaderApi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;;OAMG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAMD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,IAAI,eAAe,CAEvF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,IAAI,eAAe,CAEpH;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,IAAI,eAAe,CAEhH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,IAAI,eAAe,CAEpH"}