@bsv/sdk 1.3.8 → 1.3.9

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 (120) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/auth/Peer.js +1 -1
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  5. package/dist/cjs/src/auth/certificates/MasterCertificate.js +3 -3
  6. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  7. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +1 -1
  8. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  9. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +12 -0
  10. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  11. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  12. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  13. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  14. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  15. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  16. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  17. package/dist/cjs/src/script/templates/PushDrop.js +1 -1
  18. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  19. package/dist/cjs/src/wallet/ProtoWallet.js +10 -58
  20. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  21. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  22. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  23. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  24. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  25. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  26. package/dist/esm/src/auth/Peer.js +1 -1
  27. package/dist/esm/src/auth/Peer.js.map +1 -1
  28. package/dist/esm/src/auth/certificates/Certificate.js +1 -1
  29. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  30. package/dist/esm/src/auth/certificates/MasterCertificate.js +3 -3
  31. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  32. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +1 -1
  33. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  34. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +12 -0
  35. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  36. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  37. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  38. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  39. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  40. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  41. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  42. package/dist/esm/src/script/templates/PushDrop.js +1 -1
  43. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  44. package/dist/esm/src/wallet/ProtoWallet.js +10 -58
  45. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  46. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  47. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  48. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  49. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  50. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  51. package/dist/types/src/auth/Peer.d.ts +3 -3
  52. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  53. package/dist/types/src/auth/certificates/Certificate.d.ts +2 -2
  54. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  55. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +7 -7
  56. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  57. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts +3 -3
  58. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  59. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +6 -2
  60. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  61. package/dist/types/src/auth/clients/AuthFetch.d.ts +2 -2
  62. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  63. package/dist/types/src/auth/utils/createNonce.d.ts +2 -2
  64. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  65. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +2 -2
  66. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  67. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  68. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  69. package/dist/types/src/auth/utils/verifyNonce.d.ts +2 -2
  70. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  71. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +2 -2
  72. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  73. package/dist/types/src/script/templates/PushDrop.d.ts +4 -4
  74. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  75. package/dist/types/src/wallet/ProtoWallet.d.ts +12 -24
  76. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  77. package/dist/types/src/wallet/Wallet.interfaces.d.ts +5 -18
  78. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  79. package/dist/types/src/wallet/WalletClient.d.ts +4 -4
  80. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  81. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +2 -2
  82. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  83. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts +3 -3
  84. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  85. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +2 -2
  86. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  87. package/dist/types/src/wallet/substrates/XDM.d.ts +2 -2
  88. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  89. package/dist/types/src/wallet/substrates/window.CWI.d.ts +2 -2
  90. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  91. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  92. package/dist/umd/bundle.js +1 -1
  93. package/docs/auth.md +72 -39
  94. package/docs/overlay-tools.md +4 -4
  95. package/docs/script.md +5 -5
  96. package/docs/wallet-substrates.md +11 -11
  97. package/docs/wallet.md +300 -360
  98. package/package.json +1 -1
  99. package/src/auth/Peer.ts +25 -25
  100. package/src/auth/certificates/Certificate.ts +4 -3
  101. package/src/auth/certificates/MasterCertificate.ts +8 -8
  102. package/src/auth/certificates/VerifiableCertificate.ts +3 -3
  103. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +14 -3
  104. package/src/auth/clients/AuthFetch.ts +3 -3
  105. package/src/auth/utils/createNonce.ts +2 -2
  106. package/src/auth/utils/getVerifiableCertificates.ts +2 -2
  107. package/src/auth/utils/validateCertificates.ts +2 -2
  108. package/src/auth/utils/verifyNonce.ts +2 -2
  109. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +5 -5
  110. package/src/script/templates/PushDrop.ts +4 -4
  111. package/src/wallet/ProtoWallet.ts +11 -77
  112. package/src/wallet/Wallet.interfaces.ts +5 -19
  113. package/src/wallet/WalletClient.ts +62 -62
  114. package/src/wallet/__tests/ProtoWallet.test.ts +0 -31
  115. package/src/wallet/substrates/HTTPWalletJSON.ts +3 -3
  116. package/src/wallet/substrates/WalletWireProcessor.ts +3 -3
  117. package/src/wallet/substrates/WalletWireTransceiver.ts +2 -2
  118. package/src/wallet/substrates/XDM.ts +3 -3
  119. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +0 -104
  120. package/src/wallet/substrates/window.CWI.ts +5 -5
@@ -60,47 +60,6 @@ describe('WalletWire Integration Tests', () => {
60
60
  return (wallet as any).discoverByAttributes()
61
61
  }).rejects.toThrow()
62
62
  })
63
- it('Throws the privileged error when the privileged flag is set', async () => {
64
- const wallet = new WalletWireTransceiver(new WalletWireProcessor(new ProtoWallet('anyone')))
65
- const privilegedError = 'ProtoWallet is a single-keyring wallet, operating without context about whether its configured keyring is privileged.'
66
- const saneParams = {
67
- protocolID: [0, 'hello world'],
68
- keyID: '123123123',
69
- plaintext: [0, 1, 3],
70
- ciphertext: [3, 4, 5],
71
- data: [1, 3, 5],
72
- hmac: [1, 3, 5],
73
- signature: [1, 3, 5],
74
- counterparty: 'self'
75
- }
76
- await expect(() => {
77
- return (wallet as any).encrypt({ ...saneParams, privileged: true })
78
- }).rejects.toThrow(new Error(privilegedError))
79
- await expect(() => {
80
- return (wallet as any).decrypt({ ...saneParams, privileged: true })
81
- }).rejects.toThrow(new Error(privilegedError))
82
- await expect(() => {
83
- return (wallet as any).createSignature({ ...saneParams, privileged: true })
84
- }).rejects.toThrow(new Error(privilegedError))
85
- await expect(() => {
86
- return (wallet as any).verifySignature({ ...saneParams, privileged: true })
87
- }).rejects.toThrow(new Error(privilegedError))
88
- await expect(() => {
89
- return (wallet as any).createHmac({ ...saneParams, privileged: true })
90
- }).rejects.toThrow(new Error(privilegedError))
91
- await expect(() => {
92
- return (wallet as any).verifyHmac({ ...saneParams, privileged: true })
93
- }).rejects.toThrow(new Error(privilegedError))
94
- await expect(() => {
95
- return (wallet as any).getPublicKey({ ...saneParams, privileged: true })
96
- }).rejects.toThrow(new Error(privilegedError))
97
- await expect(() => {
98
- return (wallet as any).revealCounterpartyKeyLinkage({ ...saneParams, privileged: true })
99
- }).rejects.toThrow(new Error(privilegedError))
100
- await expect(() => {
101
- return (wallet as any).revealSpecificKeyLinkage({ ...saneParams, privileged: true })
102
- }).rejects.toThrow(new Error(privilegedError))
103
- })
104
63
  it('Validates the BRC-3 compliance vector', async () => {
105
64
  const wallet = new WalletWireTransceiver(new WalletWireProcessor(new ProtoWallet('anyone')))
106
65
  const { valid } = await wallet.verifySignature({
@@ -356,13 +315,6 @@ describe('WalletWire Integration Tests', () => {
356
315
  counterparty: counterpartyKey.toPublicKey().toString()
357
316
  })).rejects.toThrow()
358
317
  })
359
- it('Returns the expected version, network, and authentication status', async () => {
360
- const wallet = new WalletWireTransceiver(new WalletWireProcessor(new ProtoWallet('anyone')))
361
- expect(await wallet.getVersion({})).toEqual({ version: 'proto-1.0.0' })
362
- expect(await wallet.getNetwork({})).toEqual({ network: 'mainnet' })
363
- expect(await wallet.isAuthenticated({})).toEqual({ authenticated: true })
364
- expect(await wallet.waitForAuthentication({})).toEqual({ authenticated: true })
365
- })
366
318
  it('Uses anyone for creating signatures and self for other operations if no counterparty is provided', async () => {
367
319
  const userKey = PrivateKey.fromRandom()
368
320
  const user = new WalletWireTransceiver(new WalletWireProcessor(new ProtoWallet(userKey)))
@@ -1132,16 +1084,6 @@ describe('WalletWire Integration Tests', () => {
1132
1084
  expect(typeof result.publicKey).toBe('string')
1133
1085
  expect(result.publicKey.length).toBe(66)
1134
1086
  })
1135
-
1136
- it('should throw an error for privileged operation without permission', async () => {
1137
- const wallet = createTestWalletWire(new ProtoWallet(PrivateKey.fromRandom()))
1138
- const args = {
1139
- identityKey: true as true,
1140
- privileged: true,
1141
- privilegedReason: 'Test privileged operation'
1142
- }
1143
- await expect(wallet.getPublicKey(args)).rejects.toThrow()
1144
- })
1145
1087
  })
1146
1088
 
1147
1089
  describe('encrypt and decrypt', () => {
@@ -1304,54 +1246,8 @@ describe('WalletWire Integration Tests', () => {
1304
1246
  const expectedLinkage = proverKey.deriveSharedSecret(counterpartyKey.toPublicKey()).encode(true)
1305
1247
  expect(decryptedResult.plaintext).toEqual(expectedLinkage)
1306
1248
  })
1307
-
1308
- it('should throw an error when trying to reveal linkage without privilege', async () => {
1309
- const proverKey = PrivateKey.fromRandom()
1310
- const counterpartyKey = PrivateKey.fromRandom()
1311
- const verifierKey = PrivateKey.fromRandom()
1312
-
1313
- const proverWallet = createTestWalletWire(new ProtoWallet(proverKey))
1314
-
1315
- const args = {
1316
- counterparty: counterpartyKey.toPublicKey().toString(),
1317
- verifier: verifierKey.toPublicKey().toString(),
1318
- privileged: true
1319
- }
1320
-
1321
- await expect(proverWallet.revealCounterpartyKeyLinkage(args)).rejects.toThrow()
1322
- })
1323
- })
1324
-
1325
- describe('getVersion and getNetwork', () => {
1326
- it('should return the correct version', async () => {
1327
- const wallet = createTestWalletWire(new ProtoWallet('anyone'))
1328
- const result = await wallet.getVersion({})
1329
- expect(result).toHaveProperty('version')
1330
- expect(typeof result.version).toBe('string')
1331
- })
1332
-
1333
- it('should return the correct network', async () => {
1334
- const wallet = createTestWalletWire(new ProtoWallet('anyone'))
1335
- const result = await wallet.getNetwork({})
1336
- expect(result).toHaveProperty('network')
1337
- expect(['mainnet', 'testnet']).toContain(result.network)
1338
- })
1339
1249
  })
1340
1250
 
1341
- describe('isAuthenticated and waitForAuthentication', () => {
1342
- it('should return authentication status', async () => {
1343
- const wallet = createTestWalletWire(new ProtoWallet('anyone'))
1344
- const result = await wallet.isAuthenticated({})
1345
- expect(result).toHaveProperty('authenticated')
1346
- expect(typeof result.authenticated).toBe('boolean')
1347
- })
1348
-
1349
- it('should wait for authentication', async () => {
1350
- const wallet = createTestWalletWire(new ProtoWallet('anyone'))
1351
- const result = await wallet.waitForAuthentication({})
1352
- expect(result).toEqual({ authenticated: true })
1353
- })
1354
- })
1355
1251
  describe('acquireCertificate', () => {
1356
1252
  it('should acquire a certificate with valid inputs', async () => {
1357
1253
  // Mock the acquireCertificate method
@@ -1,14 +1,14 @@
1
- import { Base64String, BasketStringUnder300Bytes, BEEF, BooleanDefaultFalse, BooleanDefaultTrue, Byte, CertificateFieldNameUnder50Bytes, DescriptionString5to50Bytes, EntityIconURLStringMax500Bytes, EntityNameStringMax100Bytes, HexString, ISOTimestampString, KeyIDStringUnder800Bytes, LabelStringUnder300Bytes, OriginatorDomainNameStringUnder250Bytes, OutpointString, OutputTagStringUnder300Bytes, PositiveInteger, PositiveIntegerDefault10Max10000, PositiveIntegerMax10, PositiveIntegerOrZero, ProtocolString5To400Bytes, PubKeyHex, SatoshiValue, SecurityLevel, TXIDHexString, VersionString7To30Bytes, Wallet } from '../Wallet.interfaces.js'
1
+ import { Base64String, BasketStringUnder300Bytes, BEEF, BooleanDefaultFalse, BooleanDefaultTrue, Byte, CertificateFieldNameUnder50Bytes, DescriptionString5to50Bytes, EntityIconURLStringMax500Bytes, EntityNameStringMax100Bytes, HexString, ISOTimestampString, KeyIDStringUnder800Bytes, LabelStringUnder300Bytes, OriginatorDomainNameStringUnder250Bytes, OutpointString, OutputTagStringUnder300Bytes, PositiveInteger, PositiveIntegerDefault10Max10000, PositiveIntegerMax10, PositiveIntegerOrZero, ProtocolString5To400Bytes, PubKeyHex, SatoshiValue, SecurityLevel, TXIDHexString, VersionString7To30Bytes, WalletInterface } from '../Wallet.interfaces.js'
2
2
 
3
3
  declare const window: {
4
- CWI?: Wallet
4
+ CWI?: WalletInterface
5
5
  } & Window
6
6
 
7
7
  /**
8
8
  * Facilitates wallet operations over the window.CWI interface.
9
9
  */
10
- export default class WindowCWISubstrate implements Wallet {
11
- private CWI: Wallet
10
+ export default class WindowCWISubstrate implements WalletInterface {
11
+ private CWI: WalletInterface
12
12
  constructor() {
13
13
  if (typeof window !== 'object') {
14
14
  throw new Error('The window.CWI substrate requires a global window object.')
@@ -16,7 +16,7 @@ export default class WindowCWISubstrate implements Wallet {
16
16
  if (typeof window.CWI !== 'object') {
17
17
  throw new Error('The window.CWI interface does not appear to be bound to the window object.')
18
18
  }
19
- this.CWI = window.CWI as Wallet // Binding CWI to prevent changes
19
+ this.CWI = window.CWI as WalletInterface // Binding CWI to prevent changes
20
20
  }
21
21
 
22
22
  async createAction(args: { description: DescriptionString5to50Bytes, inputs?: Array<{ tx?: BEEF, outpoint: OutpointString, unlockingScript?: HexString, unlockingScriptLength?: PositiveInteger, inputDescription: DescriptionString5to50Bytes, sequenceNumber?: PositiveIntegerOrZero }>, outputs?: Array<{ lockingScript: HexString, satoshis: SatoshiValue, outputDescription: DescriptionString5to50Bytes, basket?: BasketStringUnder300Bytes, customInstructions?: string, tags?: OutputTagStringUnder300Bytes[] }>, lockTime?: PositiveIntegerOrZero, version?: PositiveIntegerOrZero, labels?: LabelStringUnder300Bytes[], options?: { signAndProcess?: BooleanDefaultTrue, acceptDelayedBroadcast?: BooleanDefaultTrue, trustSelf?: 'known', knownTxids?: TXIDHexString[], returnTXIDOnly?: BooleanDefaultFalse, noSend?: BooleanDefaultFalse, noSendChange?: OutpointString[], sendWith?: TXIDHexString[] } }, originator?: OriginatorDomainNameStringUnder250Bytes): Promise<{ txid?: TXIDHexString, tx?: BEEF, noSendChange?: OutpointString[], sendWithResults?: Array<{ txid: TXIDHexString, status: 'unproven' | 'sending' | 'failed' }>, signableTransaction?: { tx: BEEF, reference: Base64String } }> {