@keetanetwork/anchor 0.0.42 → 0.0.44

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 (178) hide show
  1. package/client/index.d.ts +6 -0
  2. package/client/index.d.ts.map +1 -1
  3. package/client/index.js +7 -0
  4. package/client/index.js.map +1 -1
  5. package/lib/certificates.js +2 -2
  6. package/lib/certificates.js.map +1 -1
  7. package/lib/resolver.d.ts +45 -3
  8. package/lib/resolver.d.ts.map +1 -1
  9. package/lib/resolver.js +908 -398
  10. package/lib/resolver.js.map +1 -1
  11. package/lib/utils/json.d.ts +4 -5
  12. package/lib/utils/json.d.ts.map +1 -1
  13. package/lib/utils/json.js +4 -163
  14. package/lib/utils/json.js.map +1 -1
  15. package/npm-shrinkwrap.json +5 -5
  16. package/package.json +2 -2
  17. package/services/asset-movement/client.d.ts +2 -5
  18. package/services/asset-movement/client.d.ts.map +1 -1
  19. package/services/asset-movement/client.js +1 -2
  20. package/services/asset-movement/client.js.map +1 -1
  21. package/services/asset-movement/common.d.ts +56 -82
  22. package/services/asset-movement/common.d.ts.map +1 -1
  23. package/services/asset-movement/common.js +18314 -8000
  24. package/services/asset-movement/common.js.map +1 -1
  25. package/services/asset-movement/lib/data/addresses/bank-account/card.d.ts +4 -0
  26. package/services/asset-movement/lib/data/addresses/bank-account/card.d.ts.map +1 -0
  27. package/services/asset-movement/lib/data/addresses/bank-account/card.js +34 -0
  28. package/services/asset-movement/lib/data/addresses/bank-account/card.js.map +1 -0
  29. package/services/asset-movement/lib/data/addresses/bank-account/clabe.d.ts +4 -0
  30. package/services/asset-movement/lib/data/addresses/bank-account/clabe.d.ts.map +1 -0
  31. package/services/asset-movement/lib/data/addresses/bank-account/clabe.js +22 -0
  32. package/services/asset-movement/lib/data/addresses/bank-account/clabe.js.map +1 -0
  33. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.d.ts +4 -0
  34. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.d.ts.map +1 -0
  35. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.js +43 -0
  36. package/services/asset-movement/lib/data/addresses/bank-account/iban-swift.js.map +1 -0
  37. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.d.ts +15 -0
  38. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.d.ts.map +1 -0
  39. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.js +16 -0
  40. package/services/asset-movement/lib/data/addresses/bank-account/index.generated.js.map +1 -0
  41. package/services/asset-movement/lib/data/addresses/bank-account/interac.d.ts +4 -0
  42. package/services/asset-movement/lib/data/addresses/bank-account/interac.d.ts.map +1 -0
  43. package/services/asset-movement/lib/data/addresses/bank-account/interac.js +39 -0
  44. package/services/asset-movement/lib/data/addresses/bank-account/interac.js.map +1 -0
  45. package/services/asset-movement/lib/data/addresses/bank-account/pix.d.ts +4 -0
  46. package/services/asset-movement/lib/data/addresses/bank-account/pix.d.ts.map +1 -0
  47. package/services/asset-movement/lib/data/addresses/bank-account/pix.js +31 -0
  48. package/services/asset-movement/lib/data/addresses/bank-account/pix.js.map +1 -0
  49. package/services/asset-movement/lib/data/addresses/bank-account/us.d.ts +4 -0
  50. package/services/asset-movement/lib/data/addresses/bank-account/us.d.ts.map +1 -0
  51. package/services/asset-movement/lib/data/addresses/bank-account/us.js +37 -0
  52. package/services/asset-movement/lib/data/addresses/bank-account/us.js.map +1 -0
  53. package/services/asset-movement/lib/data/addresses/mobile-wallet/airtel-money.d.ts +4 -0
  54. package/services/asset-movement/lib/data/addresses/mobile-wallet/airtel-money.d.ts.map +1 -0
  55. package/services/asset-movement/lib/data/addresses/mobile-wallet/airtel-money.js +7 -0
  56. package/services/asset-movement/lib/data/addresses/mobile-wallet/airtel-money.js.map +1 -0
  57. package/services/asset-movement/lib/data/addresses/mobile-wallet/bkash.d.ts +4 -0
  58. package/services/asset-movement/lib/data/addresses/mobile-wallet/bkash.d.ts.map +1 -0
  59. package/services/asset-movement/lib/data/addresses/mobile-wallet/bkash.js +7 -0
  60. package/services/asset-movement/lib/data/addresses/mobile-wallet/bkash.js.map +1 -0
  61. package/services/asset-movement/lib/data/addresses/mobile-wallet/easy-paisa.d.ts +4 -0
  62. package/services/asset-movement/lib/data/addresses/mobile-wallet/easy-paisa.d.ts.map +1 -0
  63. package/services/asset-movement/lib/data/addresses/mobile-wallet/easy-paisa.js +7 -0
  64. package/services/asset-movement/lib/data/addresses/mobile-wallet/easy-paisa.js.map +1 -0
  65. package/services/asset-movement/lib/data/addresses/mobile-wallet/finja-wallet.d.ts +4 -0
  66. package/services/asset-movement/lib/data/addresses/mobile-wallet/finja-wallet.d.ts.map +1 -0
  67. package/services/asset-movement/lib/data/addresses/mobile-wallet/finja-wallet.js +7 -0
  68. package/services/asset-movement/lib/data/addresses/mobile-wallet/finja-wallet.js.map +1 -0
  69. package/services/asset-movement/lib/data/addresses/mobile-wallet/index.generated.d.ts +27 -0
  70. package/services/asset-movement/lib/data/addresses/mobile-wallet/index.generated.d.ts.map +1 -0
  71. package/services/asset-movement/lib/data/addresses/mobile-wallet/index.generated.js +28 -0
  72. package/services/asset-movement/lib/data/addresses/mobile-wallet/index.generated.js.map +1 -0
  73. package/services/asset-movement/lib/data/addresses/mobile-wallet/jazz-cash.d.ts +4 -0
  74. package/services/asset-movement/lib/data/addresses/mobile-wallet/jazz-cash.d.ts.map +1 -0
  75. package/services/asset-movement/lib/data/addresses/mobile-wallet/jazz-cash.js +7 -0
  76. package/services/asset-movement/lib/data/addresses/mobile-wallet/jazz-cash.js.map +1 -0
  77. package/services/asset-movement/lib/data/addresses/mobile-wallet/mtn-mobile-money.d.ts +4 -0
  78. package/services/asset-movement/lib/data/addresses/mobile-wallet/mtn-mobile-money.d.ts.map +1 -0
  79. package/services/asset-movement/lib/data/addresses/mobile-wallet/mtn-mobile-money.js +7 -0
  80. package/services/asset-movement/lib/data/addresses/mobile-wallet/mtn-mobile-money.js.map +1 -0
  81. package/services/asset-movement/lib/data/addresses/mobile-wallet/nagad.d.ts +4 -0
  82. package/services/asset-movement/lib/data/addresses/mobile-wallet/nagad.d.ts.map +1 -0
  83. package/services/asset-movement/lib/data/addresses/mobile-wallet/nagad.js +7 -0
  84. package/services/asset-movement/lib/data/addresses/mobile-wallet/nagad.js.map +1 -0
  85. package/services/asset-movement/lib/data/addresses/mobile-wallet/naya-pay.d.ts +4 -0
  86. package/services/asset-movement/lib/data/addresses/mobile-wallet/naya-pay.d.ts.map +1 -0
  87. package/services/asset-movement/lib/data/addresses/mobile-wallet/naya-pay.js +7 -0
  88. package/services/asset-movement/lib/data/addresses/mobile-wallet/naya-pay.js.map +1 -0
  89. package/services/asset-movement/lib/data/addresses/mobile-wallet/paypal.d.ts +4 -0
  90. package/services/asset-movement/lib/data/addresses/mobile-wallet/paypal.d.ts.map +1 -0
  91. package/services/asset-movement/lib/data/addresses/mobile-wallet/paypal.js +19 -0
  92. package/services/asset-movement/lib/data/addresses/mobile-wallet/paypal.js.map +1 -0
  93. package/services/asset-movement/lib/data/addresses/mobile-wallet/rocket.d.ts +4 -0
  94. package/services/asset-movement/lib/data/addresses/mobile-wallet/rocket.d.ts.map +1 -0
  95. package/services/asset-movement/lib/data/addresses/mobile-wallet/rocket.js +7 -0
  96. package/services/asset-movement/lib/data/addresses/mobile-wallet/rocket.js.map +1 -0
  97. package/services/asset-movement/lib/data/addresses/mobile-wallet/sada-pay.d.ts +4 -0
  98. package/services/asset-movement/lib/data/addresses/mobile-wallet/sada-pay.d.ts.map +1 -0
  99. package/services/asset-movement/lib/data/addresses/mobile-wallet/sada-pay.js +7 -0
  100. package/services/asset-movement/lib/data/addresses/mobile-wallet/sada-pay.js.map +1 -0
  101. package/services/asset-movement/lib/data/addresses/mobile-wallet/venmo.d.ts +4 -0
  102. package/services/asset-movement/lib/data/addresses/mobile-wallet/venmo.d.ts.map +1 -0
  103. package/services/asset-movement/lib/data/addresses/mobile-wallet/venmo.js +17 -0
  104. package/services/asset-movement/lib/data/addresses/mobile-wallet/venmo.js.map +1 -0
  105. package/services/asset-movement/lib/data/addresses/types.generated.d.ts +1590 -0
  106. package/services/asset-movement/lib/data/addresses/types.generated.d.ts.map +1 -0
  107. package/services/asset-movement/lib/data/addresses/types.generated.js +1895 -0
  108. package/services/asset-movement/lib/data/addresses/types.generated.js.map +1 -0
  109. package/services/asset-movement/lib/data/json-schema.d.ts +64 -0
  110. package/services/asset-movement/lib/data/json-schema.d.ts.map +1 -0
  111. package/services/asset-movement/lib/data/json-schema.js +2 -0
  112. package/services/asset-movement/lib/data/json-schema.js.map +1 -0
  113. package/services/asset-movement/lib/data/scripts/generator.d.ts +2 -0
  114. package/services/asset-movement/lib/data/scripts/generator.d.ts.map +1 -0
  115. package/services/asset-movement/lib/data/scripts/generator.js +140 -0
  116. package/services/asset-movement/lib/data/scripts/generator.js.map +1 -0
  117. package/services/asset-movement/lib/data/types.d.ts +23 -0
  118. package/services/asset-movement/lib/data/types.d.ts.map +1 -0
  119. package/services/asset-movement/lib/data/types.js +120 -0
  120. package/services/asset-movement/lib/data/types.js.map +1 -0
  121. package/services/asset-movement/lib/location.d.ts +11 -4
  122. package/services/asset-movement/lib/location.d.ts.map +1 -1
  123. package/services/asset-movement/lib/location.generated.d.ts +2 -1
  124. package/services/asset-movement/lib/location.generated.d.ts.map +1 -1
  125. package/services/asset-movement/lib/location.generated.js +15 -3
  126. package/services/asset-movement/lib/location.generated.js.map +1 -1
  127. package/services/asset-movement/lib/location.js +13 -1
  128. package/services/asset-movement/lib/location.js.map +1 -1
  129. package/services/fx/client.d.ts +17 -2
  130. package/services/fx/client.d.ts.map +1 -1
  131. package/services/fx/client.js +153 -76
  132. package/services/fx/client.js.map +1 -1
  133. package/services/fx/common.d.ts +11 -1
  134. package/services/fx/common.d.ts.map +1 -1
  135. package/services/fx/common.js +32 -10
  136. package/services/fx/common.js.map +1 -1
  137. package/services/fx/server.d.ts +37 -11
  138. package/services/fx/server.d.ts.map +1 -1
  139. package/services/fx/server.js +169 -92
  140. package/services/fx/server.js.map +1 -1
  141. package/services/notification/client.d.ts +78 -0
  142. package/services/notification/client.d.ts.map +1 -0
  143. package/services/notification/client.js +499 -0
  144. package/services/notification/client.js.map +1 -0
  145. package/services/notification/common.d.ts +179 -0
  146. package/services/notification/common.d.ts.map +1 -0
  147. package/services/notification/common.generated.d.ts +17 -0
  148. package/services/notification/common.generated.d.ts.map +1 -0
  149. package/services/notification/common.generated.js +733 -0
  150. package/services/notification/common.generated.js.map +1 -0
  151. package/services/notification/common.js +139 -0
  152. package/services/notification/common.js.map +1 -0
  153. package/services/notification/server.d.ts +39 -0
  154. package/services/notification/server.d.ts.map +1 -0
  155. package/services/notification/server.js +222 -0
  156. package/services/notification/server.js.map +1 -0
  157. package/services/storage/client.d.ts +11 -1
  158. package/services/storage/client.d.ts.map +1 -1
  159. package/services/storage/client.js +28 -6
  160. package/services/storage/client.js.map +1 -1
  161. package/services/storage/clients/contacts.d.ts.map +1 -1
  162. package/services/storage/clients/contacts.generated.js +1235 -338
  163. package/services/storage/clients/contacts.generated.js.map +1 -1
  164. package/services/storage/clients/contacts.js +2 -1
  165. package/services/storage/clients/contacts.js.map +1 -1
  166. package/services/storage/clients/icon.d.ts +29 -0
  167. package/services/storage/clients/icon.d.ts.map +1 -0
  168. package/services/storage/clients/icon.js +34 -0
  169. package/services/storage/clients/icon.js.map +1 -0
  170. package/services/storage/common.d.ts +14 -0
  171. package/services/storage/common.d.ts.map +1 -1
  172. package/services/storage/common.js.map +1 -1
  173. package/services/storage/test-utils.d.ts +15 -1
  174. package/services/storage/test-utils.d.ts.map +1 -1
  175. package/services/storage/test-utils.js +60 -0
  176. package/services/storage/test-utils.js.map +1 -1
  177. package/services/username/common.generated.js +38 -4
  178. package/services/username/common.generated.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.generated.js","sourceRoot":"","sources":["../../../../src/services/storage/clients/contacts.generated.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGrC,MAAM,CAAC,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAuD,CAAC","sourcesContent":["import { createAssert } from 'typia';\nimport type { Contact } from './contacts.ts';\n\nexport const assertContact: (input: unknown) => Contact = createAssert<Contact>();\n"]}
1
+ {"version":3,"file":"contacts.generated.js","sourceRoot":"","sources":["../../../../src/services/storage/clients/contacts.generated.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGrC,MAAM,CAAC,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAuD,CAAC","sourcesContent":["import { createAssert } from 'typia';\nimport type { Contact } from './contacts.ts';\n\nexport const assertContact: (input: unknown) => Contact = createAssert<Contact>();\n"]}
@@ -121,7 +121,8 @@ export class StorageContactsClient {
121
121
  return (updated);
122
122
  }
123
123
  async delete(id) {
124
- return (await this.#session.delete(id));
124
+ const result = await this.#session.delete(id);
125
+ return (result);
125
126
  }
126
127
  async list(options) {
127
128
  const criteria = {
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../../src/services/storage/clients/contacts.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssetTransferInstructions, RecipientResolved, KeetaNetAccount } from '../../asset-movement/common.js';\nimport type { AssetLocationLike, PickChainLocation } from '../../asset-movement/lib/location.js';\nimport type { KeetaStorageAnchorSession } from '../client.js';\nimport { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport { convertAssetLocationToString } from '../../asset-movement/lib/location.js';\nimport { Errors } from '../common.js';\nimport { Buffer } from '../../../lib/utils/buffer.js';\nimport { assertContact } from './contacts.generated.js';\n\n// #region Types\n\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\n/**\n * The structural shape of a transfer instruction, excluding transaction-specific fields.\n */\nexport type TransferInstructionShape = DistributiveOmit<\n\tAssetTransferInstructions,\n\t'value' | 'assetFee' | 'totalReceiveAmount' | 'persistentAddressId'\n>;\n\n/**\n * The type of provider information allowed for a contact address.\n */\nexport type ProviderInformationType = 'username' | 'template';\n\n/**\n * The type of recipient for a persistent address template.\n */\nexport type PersistentAddressTemplateRecipient = Extract<RecipientResolved, { type: 'persistent-address' }>;\n\n/**\n * Base interface for contact addresses with narrowed generic parameters.\n */\nexport interface ContactAddressBase<\n\tRecipientType extends RecipientResolved,\n\tLocation extends AssetLocationLike,\n\tProviderInformationAllowedTypes extends ProviderInformationType\n> {\n\trecipient: RecipientType;\n\tlocation?: Location;\n\tproviderInformation?: { [providerId: string]: ProviderInformationAllowedTypes[] };\n\tpastInstructions?: TransferInstructionShape[];\n}\n\nexport type KeetaAssetLocation = PickChainLocation<'keeta'> | `chain:keeta:${bigint}`;\n\n/**\n * A contact address for a Keeta account.\n */\nexport type KeetaContactAddress = ContactAddressBase<string, KeetaAssetLocation, 'username'>;\n\n/**\n * A contact address for a persistent address template.\n */\nexport type TemplateContactAddress = ContactAddressBase<PersistentAddressTemplateRecipient, AssetLocationLike, 'template'>;\n\n/**\n * A contact address for a non-Keeta, non-persistent-address recipient.\n */\nexport type OtherContactAddress = ContactAddressBase<\n\tExclude<RecipientResolved, KeetaNetAccount | PersistentAddressTemplateRecipient>,\n\tExclude<AssetLocationLike, KeetaAssetLocation>,\n\t'template'\n>;\n\nexport type ContactAddress = KeetaContactAddress | TemplateContactAddress | OtherContactAddress;\n\n/**\n * A stored contact with metadata and an address.\n */\nexport type Contact = {\n\tid: string;\n\tlabel: string;\n\taddress: ContactAddress;\n};\n\n// #endregion\n\n// #region Interface\n\n/**\n * Generic contacts client interface\n */\nexport interface ContactsClient {\n\tderiveId(address: ContactAddress): string;\n\n\tcreate(options: {\n\t\tlabel: string;\n\t\taddress: ContactAddress;\n\t}): Promise<Contact>;\n\n\tget(id: string): Promise<Contact | null>;\n\n\tupdate(id: string, options: {\n\t\tlabel?: string;\n\t\taddress?: ContactAddress;\n\t}): Promise<Contact>;\n\n\tdelete(id: string): Promise<boolean>;\n\n\tlist(options?: {\n\t\tlocation?: AssetLocationLike;\n\t}): Promise<Contact[]>;\n}\n\n// #endregion\n\n// #region Storage Implementation\n\n/**\n * MIME type for contact data.\n */\nconst MIME_TYPE = 'application/json';\n\n/**\n * Canonicalize a contact address for use in ID derivation.\n * Excludes metadata fields (`providerInformation`, `pastInstructions`) that are not part of contact identity.\n *\n * @param address - The contact address to canonicalize.\n *\n * @returns The canonicalized string representation of the contact address identity fields.\n */\nfunction canonicalizeContactAddress(address: ContactAddress): string {\n\tconst { providerInformation: _, pastInstructions: __, ...identity } = address; // eslint-disable-line @typescript-eslint/no-unused-vars\n\treturn(JSON.stringify(identity, function(_key: string, value: unknown): unknown {\n\t\tif (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tconst obj = value as { [k: string]: unknown };\n\t\t\treturn(Object.fromEntries(\n\t\t\t\tObject.entries(obj).sort(([a], [b]) => a.localeCompare(b))\n\t\t\t));\n\t\t}\n\n\t\treturn(value);\n\t}));\n}\n\n/**\n * Convert an asset location to a tag for use in storage.\n *\n * @param location - The asset location to convert to a tag.\n *\n * @returns The tag string.\n */\nfunction locationToTag(location: AssetLocationLike): string {\n\tconst str = convertAssetLocationToString(location);\n\n\tconst parts = str.split(':');\n\treturn(parts.join('-'));\n}\n\n/**\n * Convert a contact address to a list of tags for use in storage.\n *\n * @param address - The contact address to convert to tags.\n *\n * @returns The list of tags.\n */\nfunction contactTags(address: ContactAddress): string[] {\n\tif (address.location) {\n\t\treturn([locationToTag(address.location)]);\n\t}\n\n\treturn([]);\n}\n\n/**\n * Storage Anchor-backed implementation of `ContactsClient`.\n * Stores contacts as encrypted JSON objects via a `KeetaStorageAnchorSession`.\n */\nexport class StorageContactsClient implements ContactsClient {\n\treadonly #session: KeetaStorageAnchorSession;\n\n\tconstructor(session: KeetaStorageAnchorSession) {\n\t\tthis.#session = session;\n\t}\n\n\tderiveId(address: ContactAddress): string {\n\t\tconst data = Buffer.from(canonicalizeContactAddress(address));\n\t\tconst hash = KeetaNetLib.Utils.Hash.Hash(data);\n\n\t\tconst result = Buffer.from(hash).toString('hex');\n\t\treturn(result);\n\t}\n\n\t#serialize(contact: Contact): Buffer {\n\t\treturn(Buffer.from(JSON.stringify(contact)));\n\t}\n\n\t#deserialize(data: Buffer): Contact {\n\t\treturn(assertContact(JSON.parse(data.toString())));\n\t}\n\n\tasync create(options: {\n\t\tlabel: string;\n\t\taddress: ContactAddress;\n\t}): Promise<Contact> {\n\t\tconst id = this.deriveId(options.address);\n\t\tconst contact: Contact = {\n\t\t\tid,\n\t\t\tlabel: options.label,\n\t\t\taddress: options.address\n\t\t};\n\n\t\tawait this.#session.put(id, this.#serialize(contact), {\n\t\t\tmimeType: MIME_TYPE,\n\t\t\ttags: contactTags(options.address)\n\t\t});\n\n\t\treturn(contact);\n\t}\n\n\tasync get(id: string): Promise<Contact | null> {\n\t\tconst result = await this.#session.get(id);\n\t\tif (!result) {\n\t\t\treturn(null);\n\t\t}\n\n\t\treturn(this.#deserialize(result.data));\n\t}\n\n\tasync update(id: string, options: {\n\t\tlabel?: string;\n\t\taddress?: ContactAddress;\n\t}): Promise<Contact> {\n\t\tconst existing = await this.get(id);\n\t\tif (!existing) {\n\t\t\tthrow(new Errors.DocumentNotFound(`Contact not found: ${id}`));\n\t\t}\n\n\t\tconst newAddress = options.address ?? existing.address;\n\t\tconst newId = this.deriveId(newAddress);\n\n\t\tconst updated: Contact = {\n\t\t\tid: newId,\n\t\t\tlabel: options.label ?? existing.label,\n\t\t\taddress: newAddress\n\t\t};\n\n\t\tawait this.#session.put(newId, this.#serialize(updated), {\n\t\t\tmimeType: MIME_TYPE,\n\t\t\ttags: contactTags(updated.address)\n\t\t});\n\n\t\tif (newId !== id) {\n\t\t\ttry {\n\t\t\t\tawait this.#session.delete(id);\n\t\t\t} catch {\n\t\t\t\t// Put succeeded; old contact is now orphaned\n\t\t\t}\n\t\t}\n\n\t\treturn(updated);\n\t}\n\n\tasync delete(id: string): Promise<boolean> {\n\t\treturn(await this.#session.delete(id));\n\t}\n\n\tasync list(options?: {\n\t\tlocation?: AssetLocationLike;\n\t}): Promise<Contact[]> {\n\t\tconst criteria: { pathPrefix: string; tags?: string[] } = {\n\t\t\tpathPrefix: this.#session.workingDirectory\n\t\t};\n\n\t\tif (options?.location) {\n\t\t\tcriteria.tags = [locationToTag(options.location)];\n\t\t}\n\n\t\tconst searchResult = await this.#session.search(criteria);\n\n\t\tconst contacts: Contact[] = [];\n\t\tfor (const metadata of searchResult.results) {\n\t\t\tconst result = await this.#session.get(metadata.path);\n\t\t\tif (result) {\n\t\t\t\tcontacts.push(this.#deserialize(result.data));\n\t\t\t}\n\t\t}\n\n\t\treturn(contacts);\n\t}\n}\n\n// #endregion\n"]}
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../../src/services/storage/clients/contacts.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssetTransferInstructions, RecipientResolved, KeetaNetAccount } from '../../asset-movement/common.js';\nimport type { AssetLocationLike, PickChainLocation } from '../../asset-movement/lib/location.js';\nimport type { KeetaStorageAnchorSession } from '../client.js';\nimport { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport { convertAssetLocationToString } from '../../asset-movement/lib/location.js';\nimport { Errors } from '../common.js';\nimport { Buffer } from '../../../lib/utils/buffer.js';\nimport { assertContact } from './contacts.generated.js';\n\n// #region Types\n\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\n/**\n * The structural shape of a transfer instruction, excluding transaction-specific fields.\n */\nexport type TransferInstructionShape = DistributiveOmit<\n\tAssetTransferInstructions,\n\t'value' | 'assetFee' | 'totalReceiveAmount' | 'persistentAddressId'\n>;\n\n/**\n * The type of provider information allowed for a contact address.\n */\nexport type ProviderInformationType = 'username' | 'template';\n\n/**\n * The type of recipient for a persistent address template.\n */\nexport type PersistentAddressTemplateRecipient = Extract<RecipientResolved, { type: 'persistent-address' }>;\n\n/**\n * Base interface for contact addresses with narrowed generic parameters.\n */\nexport interface ContactAddressBase<\n\tRecipientType extends RecipientResolved,\n\tLocation extends AssetLocationLike,\n\tProviderInformationAllowedTypes extends ProviderInformationType\n> {\n\trecipient: RecipientType;\n\tlocation?: Location;\n\tproviderInformation?: { [providerId: string]: ProviderInformationAllowedTypes[] };\n\tpastInstructions?: TransferInstructionShape[];\n}\n\nexport type KeetaAssetLocation = PickChainLocation<'keeta'> | `chain:keeta:${bigint}`;\n\n/**\n * A contact address for a Keeta account.\n */\nexport type KeetaContactAddress = ContactAddressBase<string, KeetaAssetLocation, 'username'>;\n\n/**\n * A contact address for a persistent address template.\n */\nexport type TemplateContactAddress = ContactAddressBase<PersistentAddressTemplateRecipient, AssetLocationLike, 'template'>;\n\n/**\n * A contact address for a non-Keeta, non-persistent-address recipient.\n */\nexport type OtherContactAddress = ContactAddressBase<\n\tExclude<RecipientResolved, KeetaNetAccount | PersistentAddressTemplateRecipient>,\n\tExclude<AssetLocationLike, KeetaAssetLocation>,\n\t'template'\n>;\n\nexport type ContactAddress = KeetaContactAddress | TemplateContactAddress | OtherContactAddress;\n\n/**\n * A stored contact with metadata and an address.\n */\nexport type Contact = {\n\tid: string;\n\tlabel: string;\n\taddress: ContactAddress;\n};\n\n// #endregion\n\n// #region Interface\n\n/**\n * Generic contacts client interface\n */\nexport interface ContactsClient {\n\tderiveId(address: ContactAddress): string;\n\n\tcreate(options: {\n\t\tlabel: string;\n\t\taddress: ContactAddress;\n\t}): Promise<Contact>;\n\n\tget(id: string): Promise<Contact | null>;\n\n\tupdate(id: string, options: {\n\t\tlabel?: string;\n\t\taddress?: ContactAddress;\n\t}): Promise<Contact>;\n\n\tdelete(id: string): Promise<boolean>;\n\n\tlist(options?: {\n\t\tlocation?: AssetLocationLike;\n\t}): Promise<Contact[]>;\n}\n\n// #endregion\n\n// #region Storage Implementation\n\n/**\n * MIME type for contact data.\n */\nconst MIME_TYPE = 'application/json';\n\n/**\n * Canonicalize a contact address for use in ID derivation.\n * Excludes metadata fields (`providerInformation`, `pastInstructions`) that are not part of contact identity.\n *\n * @param address - The contact address to canonicalize.\n *\n * @returns The canonicalized string representation of the contact address identity fields.\n */\nfunction canonicalizeContactAddress(address: ContactAddress): string {\n\tconst { providerInformation: _, pastInstructions: __, ...identity } = address; // eslint-disable-line @typescript-eslint/no-unused-vars\n\treturn(JSON.stringify(identity, function(_key: string, value: unknown): unknown {\n\t\tif (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tconst obj = value as { [k: string]: unknown };\n\t\t\treturn(Object.fromEntries(\n\t\t\t\tObject.entries(obj).sort(([a], [b]) => a.localeCompare(b))\n\t\t\t));\n\t\t}\n\n\t\treturn(value);\n\t}));\n}\n\n/**\n * Convert an asset location to a tag for use in storage.\n *\n * @param location - The asset location to convert to a tag.\n *\n * @returns The tag string.\n */\nfunction locationToTag(location: AssetLocationLike): string {\n\tconst str = convertAssetLocationToString(location);\n\n\tconst parts = str.split(':');\n\treturn(parts.join('-'));\n}\n\n/**\n * Convert a contact address to a list of tags for use in storage.\n *\n * @param address - The contact address to convert to tags.\n *\n * @returns The list of tags.\n */\nfunction contactTags(address: ContactAddress): string[] {\n\tif (address.location) {\n\t\treturn([locationToTag(address.location)]);\n\t}\n\n\treturn([]);\n}\n\n/**\n * Storage Anchor-backed implementation of `ContactsClient`.\n * Stores contacts as encrypted JSON objects via a `KeetaStorageAnchorSession`.\n */\nexport class StorageContactsClient implements ContactsClient {\n\treadonly #session: KeetaStorageAnchorSession;\n\n\tconstructor(session: KeetaStorageAnchorSession) {\n\t\tthis.#session = session;\n\t}\n\n\tderiveId(address: ContactAddress): string {\n\t\tconst data = Buffer.from(canonicalizeContactAddress(address));\n\t\tconst hash = KeetaNetLib.Utils.Hash.Hash(data);\n\n\t\tconst result = Buffer.from(hash).toString('hex');\n\t\treturn(result);\n\t}\n\n\t#serialize(contact: Contact): Buffer {\n\t\treturn(Buffer.from(JSON.stringify(contact)));\n\t}\n\n\t#deserialize(data: Buffer): Contact {\n\t\treturn(assertContact(JSON.parse(data.toString())));\n\t}\n\n\tasync create(options: {\n\t\tlabel: string;\n\t\taddress: ContactAddress;\n\t}): Promise<Contact> {\n\t\tconst id = this.deriveId(options.address);\n\t\tconst contact: Contact = {\n\t\t\tid,\n\t\t\tlabel: options.label,\n\t\t\taddress: options.address\n\t\t};\n\n\t\tawait this.#session.put(id, this.#serialize(contact), {\n\t\t\tmimeType: MIME_TYPE,\n\t\t\ttags: contactTags(options.address)\n\t\t});\n\n\t\treturn(contact);\n\t}\n\n\tasync get(id: string): Promise<Contact | null> {\n\t\tconst result = await this.#session.get(id);\n\t\tif (!result) {\n\t\t\treturn(null);\n\t\t}\n\n\t\treturn(this.#deserialize(result.data));\n\t}\n\n\tasync update(id: string, options: {\n\t\tlabel?: string;\n\t\taddress?: ContactAddress;\n\t}): Promise<Contact> {\n\t\tconst existing = await this.get(id);\n\t\tif (!existing) {\n\t\t\tthrow(new Errors.DocumentNotFound(`Contact not found: ${id}`));\n\t\t}\n\n\t\tconst newAddress = options.address ?? existing.address;\n\t\tconst newId = this.deriveId(newAddress);\n\n\t\tconst updated: Contact = {\n\t\t\tid: newId,\n\t\t\tlabel: options.label ?? existing.label,\n\t\t\taddress: newAddress\n\t\t};\n\n\t\tawait this.#session.put(newId, this.#serialize(updated), {\n\t\t\tmimeType: MIME_TYPE,\n\t\t\ttags: contactTags(updated.address)\n\t\t});\n\n\t\tif (newId !== id) {\n\t\t\ttry {\n\t\t\t\tawait this.#session.delete(id);\n\t\t\t} catch {\n\t\t\t\t// Put succeeded; old contact is now orphaned\n\t\t\t}\n\t\t}\n\n\t\treturn(updated);\n\t}\n\n\tasync delete(id: string): Promise<boolean> {\n\t\tconst result = await this.#session.delete(id);\n\t\treturn(result);\n\t}\n\n\tasync list(options?: {\n\t\tlocation?: AssetLocationLike;\n\t}): Promise<Contact[]> {\n\t\tconst criteria: { pathPrefix: string; tags?: string[] } = {\n\t\t\tpathPrefix: this.#session.workingDirectory\n\t\t};\n\n\t\tif (options?.location) {\n\t\t\tcriteria.tags = [locationToTag(options.location)];\n\t\t}\n\n\t\tconst searchResult = await this.#session.search(criteria);\n\n\t\tconst contacts: Contact[] = [];\n\t\tfor (const metadata of searchResult.results) {\n\t\t\tconst result = await this.#session.get(metadata.path);\n\t\t\tif (result) {\n\t\t\t\tcontacts.push(this.#deserialize(result.data));\n\t\t\t}\n\t\t}\n\n\t\treturn(contacts);\n\t}\n}\n\n// #endregion\n"]}
@@ -0,0 +1,29 @@
1
+ import type { KeetaStorageAnchorSession } from '../client.js';
2
+ import type { Buffer } from '../../../lib/utils/buffer.js';
3
+ /**
4
+ * Icon binary data with its MIME type.
5
+ */
6
+ export type IconData = {
7
+ data: Buffer;
8
+ mimeType: string;
9
+ };
10
+ /**
11
+ * Generic icons client interface.
12
+ */
13
+ export interface IconsClient {
14
+ set(icon: IconData): Promise<void>;
15
+ get(): Promise<IconData | null>;
16
+ delete(): Promise<boolean>;
17
+ }
18
+ /**
19
+ * Storage Anchor-backed implementation of `IconsClient`.
20
+ * Stores a single icon as a public binary object via a `KeetaStorageAnchorSession`.
21
+ */
22
+ export declare class StorageIconsClient implements IconsClient {
23
+ #private;
24
+ constructor(session: KeetaStorageAnchorSession);
25
+ set(icon: IconData): Promise<void>;
26
+ get(): Promise<IconData | null>;
27
+ delete(): Promise<boolean>;
28
+ }
29
+ //# sourceMappingURL=icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/clients/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAK3D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,GAAG,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B;AAQD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,WAAW;;gBAGzC,OAAO,EAAE,yBAAyB;IAIxC,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlC,GAAG,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAS/B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAIhC"}
@@ -0,0 +1,34 @@
1
+ import { Errors } from '../common.js';
2
+ // #endregion
3
+ // #region Storage Implementation
4
+ const ICON_FILENAME = 'icon';
5
+ /**
6
+ * Storage Anchor-backed implementation of `IconsClient`.
7
+ * Stores a single icon as a public binary object via a `KeetaStorageAnchorSession`.
8
+ */
9
+ export class StorageIconsClient {
10
+ #session;
11
+ constructor(session) {
12
+ this.#session = session;
13
+ }
14
+ async set(icon) {
15
+ if (!icon.mimeType.startsWith('image/')) {
16
+ throw (new Errors.ValidationFailed(`Invalid icon MIME type: "${icon.mimeType}". Must be an image/* type.`));
17
+ }
18
+ await this.#session.put(ICON_FILENAME, icon.data, {
19
+ mimeType: icon.mimeType
20
+ });
21
+ }
22
+ async get() {
23
+ const result = await this.#session.get(ICON_FILENAME);
24
+ if (!result) {
25
+ return (null);
26
+ }
27
+ return ({ data: result.data, mimeType: result.mimeType });
28
+ }
29
+ async delete() {
30
+ const result = await this.#session.delete(ICON_FILENAME);
31
+ return (result);
32
+ }
33
+ }
34
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../../src/services/storage/clients/icon.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAyBtC,aAAa;AAEb,iCAAiC;AAEjC,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACrB,QAAQ,CAA4B;IAE7C,YAAY,OAAkC;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAc;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,MAAK,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,IAAI,CAAC,QAAQ,6BAA6B,CAAC,CAAC,CAAC;QAC5G,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE;YACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAM,CAAC,IAAI,CAAC,CAAC;QACd,CAAC;QAED,OAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,MAAM;QACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACzD,OAAM,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;CACD","sourcesContent":["import type { KeetaStorageAnchorSession } from '../client.js';\nimport type { Buffer } from '../../../lib/utils/buffer.js';\nimport { Errors } from '../common.js';\n\n// #region Types\n\n/**\n * Icon binary data with its MIME type.\n */\nexport type IconData = {\n\tdata: Buffer;\n\tmimeType: string;\n};\n\n// #endregion\n\n// #region Interface\n\n/**\n * Generic icons client interface.\n */\nexport interface IconsClient {\n\tset(icon: IconData): Promise<void>;\n\tget(): Promise<IconData | null>;\n\tdelete(): Promise<boolean>;\n}\n\n// #endregion\n\n// #region Storage Implementation\n\nconst ICON_FILENAME = 'icon';\n\n/**\n * Storage Anchor-backed implementation of `IconsClient`.\n * Stores a single icon as a public binary object via a `KeetaStorageAnchorSession`.\n */\nexport class StorageIconsClient implements IconsClient {\n\treadonly #session: KeetaStorageAnchorSession;\n\n\tconstructor(session: KeetaStorageAnchorSession) {\n\t\tthis.#session = session;\n\t}\n\n\tasync set(icon: IconData): Promise<void> {\n\t\tif (!icon.mimeType.startsWith('image/')) {\n\t\t\tthrow(new Errors.ValidationFailed(`Invalid icon MIME type: \"${icon.mimeType}\". Must be an image/* type.`));\n\t\t}\n\n\t\tawait this.#session.put(ICON_FILENAME, icon.data, {\n\t\t\tmimeType: icon.mimeType\n\t\t});\n\t}\n\n\tasync get(): Promise<IconData | null> {\n\t\tconst result = await this.#session.get(ICON_FILENAME);\n\t\tif (!result) {\n\t\t\treturn(null);\n\t\t}\n\n\t\treturn({ data: result.data, mimeType: result.mimeType });\n\t}\n\n\tasync delete(): Promise<boolean> {\n\t\tconst result = await this.#session.delete(ICON_FILENAME);\n\t\treturn(result);\n\t}\n}\n\n// #endregion\n"]}
@@ -196,6 +196,20 @@ export type ContactsClientConfig = {
196
196
  */
197
197
  basePath: string;
198
198
  };
199
+ /**
200
+ * Configuration for an icons client.
201
+ * The icon is stored as a single file under the base path.
202
+ */
203
+ export type IconsClientConfig = {
204
+ /**
205
+ * The account to use for the icons client.
206
+ */
207
+ account: KeetaNetAccount;
208
+ /**
209
+ * The base path for the icons client (e.g., `/user/<pubkey>/`).
210
+ */
211
+ basePath: string;
212
+ };
199
213
  /**
200
214
  * Generic response type for storage operations.
201
215
  */
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/storage/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/storage/common.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/services/storage/common.ts"],"names":[],"mappings":"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","sourcesContent":["import type { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport type { HTTPSignedField } from '../../lib/http-server/common.js';\nimport type { Signable } from '../../lib/utils/signing.js';\nimport { KeetaAnchorUserError, KeetaAnchorUserValidationError } from '../../lib/error.js';\nimport { Buffer, arrayBufferLikeToBuffer } from '../../lib/utils/buffer.js';\n\n/**\n * Type alias for a KeetaNet Account instance.\n * Used throughout the storage service for account authentication and signing.\n */\nexport type KeetaNetAccount = InstanceType<typeof KeetaNetLib.Account>;\n\n// #region Shared Constants\n\n/** Content type for JSON payloads */\nexport const CONTENT_TYPE_JSON = 'application/json';\n\n/** Content type for binary/octet-stream payloads */\nexport const CONTENT_TYPE_OCTET_STREAM = 'application/octet-stream';\n\n/** Default TTL for signed URLs in seconds (1 hour) */\nexport const DEFAULT_SIGNED_URL_TTL_SECONDS = 3600;\n\n// #endregion\n\n// #region Common Types\n\n/**\n * Visibility of a storage object\n */\nexport type StorageObjectVisibility = 'public' | 'private';\n\n// #endregion\n\n// #region Object Metadata\n\n/**\n * Metadata for a stored object\n */\nexport type StorageObjectMetadata = {\n\t/**\n\t * Full path (the unique ID)\n\t */\n\tpath: string;\n\n\t/**\n\t * Owner's identifier\n\t */\n\towner: string;\n\n\t/**\n\t * Plaintext tags (searchable)\n\t */\n\ttags: string[];\n\n\t/**\n\t * Visibility setting\n\t */\n\tvisibility: StorageObjectVisibility;\n\n\t/**\n\t * Size in bytes\n\t */\n\tsize: number;\n\n\t/**\n\t * ISO timestamp of creation\n\t */\n\tcreatedAt: string;\n\n\t/**\n\t * ISO timestamp of last update\n\t */\n\tupdatedAt?: string;\n};\n\n// #endregion\n\n// #region Search\n\n/**\n * Criteria for searching storage objects.\n * Note: Content/keyword search is not supported (content is encrypted).\n */\nexport type SearchCriteria = {\n\t/**\n\t * Match objects with paths starting with this prefix\n\t * e.g., \"/user/keeta1abc.../contacts/\"\n\t */\n\tpathPrefix?: string;\n\n\t/**\n\t * Match objects that have ANY of these tags\n\t */\n\ttags?: string[];\n\n\t/**\n\t * Match path segment (filename portion)\n\t */\n\tname?: string;\n\n\t/**\n\t * Filter by owner's public key\n\t */\n\towner?: string;\n\n\t/**\n\t * Include objects in nested paths (default: false)\n\t */\n\trecursive?: boolean;\n\n\t/**\n\t * Filter by visibility.\n\t * When 'public', allows searching public objects outside caller's namespace.\n\t */\n\tvisibility?: StorageObjectVisibility;\n};\n\n/**\n * Pagination options for search\n */\nexport type SearchPagination = {\n\t/**\n\t * Cursor for pagination (from previous response)\n\t */\n\tcursor?: string;\n\n\t/**\n\t * Maximum number of results to return\n\t */\n\tlimit?: number;\n};\n\n/**\n * Search results with pagination\n */\nexport type SearchResults = {\n\t/**\n\t * Matching objects\n\t */\n\tresults: StorageObjectMetadata[];\n\n\t/**\n\t * Cursor for next page (undefined if no more results)\n\t */\n\tnextCursor?: string;\n};\n\n// #endregion\n\n// #region Quota\n\n/**\n * Quota configuration for the storage service\n */\nexport type QuotaConfig = {\n\t/**\n\t * Maximum size in bytes per object\n\t */\n\tmaxObjectSize: number;\n\n\t/**\n\t * Maximum number of objects per user\n\t */\n\tmaxObjectsPerUser: number;\n\n\t/**\n\t * Maximum total storage in bytes per user\n\t */\n\tmaxStoragePerUser: number;\n\n\t/**\n\t * Maximum number of results per search request\n\t */\n\tmaxSearchLimit: number;\n\n\t/**\n\t * Maximum TTL in seconds for signed URLs\n\t */\n\tmaxSignedUrlTTL: number;\n};\n\n/**\n * Per-user quota limits.\n * Subset of QuotaConfig that can be overridden on a per-user basis.\n */\nexport type QuotaLimits = Pick<QuotaConfig, 'maxObjectsPerUser' | 'maxStoragePerUser' | 'maxObjectSize'>;\n\n/**\n * Current quota status for a user.\n * Backends must provide objectCount and totalSize.\n */\nexport type QuotaStatus = {\n\t/**\n\t * Current number of objects\n\t */\n\tobjectCount: number;\n\n\t/**\n\t * Current total size in bytes\n\t */\n\ttotalSize: number;\n\n\t/**\n\t * Remaining objects allowed (optional, server computes if absent)\n\t */\n\tremainingObjects?: number;\n\n\t/**\n\t * Remaining storage in bytes (optional, server computes if absent)\n\t */\n\tremainingSize?: number;\n};\n\n// #endregion\n\n// #region Request Type Helpers\n\n// #endregion\n\n// #region PUT Object\n\n/**\n * Client-side request to put (create/update) an object\n */\nexport type KeetaStorageAnchorPutClientRequest = {\n\taccount?: KeetaNetAccount;\n\tpath: string;\n\tdata: string; // Base64-encoded EncryptedContainer\n\ttags?: string[];\n\tvisibility?: StorageObjectVisibility;\n};\n\n/**\n * Server-side request to put an object\n */\nexport type KeetaStorageAnchorPutRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n\tpath: string;\n\tdata: string;\n\ttags?: string[];\n\tvisibility?: StorageObjectVisibility;\n};\n\n/**\n * Configuration for a contacts client.\n * Contacts are stored in a subdirectory of the account's working directory.\n */\nexport type ContactsClientConfig = {\n\t/**\n\t * The account to use for the contacts client.\n\t */\n\taccount: KeetaNetAccount;\n\t/**\n\t * The base path for the contacts client.\n\t */\n\tbasePath: string;\n};\n\n/**\n * Generic response type for storage operations.\n */\nexport type StorageResponse<T> = ({ ok: true } & T) | { ok: false; error: string };\n\nexport type KeetaStorageAnchorPutResponse = StorageResponse<{ object: StorageObjectMetadata }>;\n\nexport function getKeetaStorageAnchorPutRequestSigningData(\n\tinput: { path: string; visibility?: StorageObjectVisibility; tags?: string[] }\n): Signable {\n\tconst visibility = input.visibility ?? 'private';\n\tconst tags: string[] = input.tags ?? [];\n\tconst sortedTags = [...tags].sort();\n\treturn(['put', input.path, visibility, ...sortedTags]);\n}\n\n// #endregion\n\n// #region GET Object\n\n/**\n * Client-side request to get an object\n */\nexport type KeetaStorageAnchorGetClientRequest = {\n\taccount?: KeetaNetAccount;\n\tpath: string;\n};\n\n/**\n * Server-side request to get an object\n */\nexport type KeetaStorageAnchorGetRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n\tpath: string;\n};\n\nexport type KeetaStorageAnchorGetResponse = StorageResponse<{\n\tdata: string; // Base64-encoded EncryptedContainer\n\tobject: StorageObjectMetadata;\n}>;\n\nexport function getKeetaStorageAnchorGetRequestSigningData(\n\tinput: KeetaStorageAnchorGetRequest\n): Signable {\n\treturn(['get', input.path]);\n}\n\n// #endregion\n\n// #region DELETE Object\n\n/**\n * Client-side request to delete an object\n */\nexport type KeetaStorageAnchorDeleteClientRequest = {\n\taccount?: KeetaNetAccount;\n\t/**\n\t * Path to the object\n\t */\n\tpath: string;\n};\n\n/**\n * Server-side request to delete an object\n */\nexport type KeetaStorageAnchorDeleteRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n\t/**\n\t * Path to the object\n\t */\n\tpath: string;\n};\n\nexport type KeetaStorageAnchorDeleteResponse = StorageResponse<{ deleted: boolean }>;\n\nexport function getKeetaStorageAnchorDeleteRequestSigningData(\n\tinput: KeetaStorageAnchorDeleteRequest\n): Signable {\n\treturn(['delete', input.path]);\n}\n\n// #endregion\n\n// #region SEARCH\n\n/**\n * Client-side request to search objects\n */\nexport type KeetaStorageAnchorSearchClientRequest = {\n\taccount?: KeetaNetAccount;\n\tcriteria: SearchCriteria;\n\tpagination?: SearchPagination;\n};\n\n/**\n * Server-side request to search objects\n */\nexport type KeetaStorageAnchorSearchRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n\tcriteria: SearchCriteria;\n\tpagination?: SearchPagination;\n};\n\nexport type KeetaStorageAnchorSearchResponse = StorageResponse<{\n\tresults: StorageObjectMetadata[];\n\tnextCursor?: string;\n}>;\n\nexport function getKeetaStorageAnchorSearchRequestSigningData(\n\tinput: KeetaStorageAnchorSearchRequest\n): Signable {\n\tconst limit = input.pagination?.limit ?? 0;\n\tconst cursor = input.pagination?.cursor ?? '';\n\treturn(['search', JSON.stringify(input.criteria), limit, cursor]);\n}\n\n// #endregion\n\n// #region Quota\n\n/**\n * Client-side request to get quota status\n */\nexport type KeetaStorageAnchorQuotaClientRequest = {\n\taccount?: KeetaNetAccount;\n};\n\n/**\n * Server-side request to get quota status\n */\nexport type KeetaStorageAnchorQuotaRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n};\n\nexport type KeetaStorageAnchorQuotaResponse = StorageResponse<{ quota: QuotaStatus }>;\n\n/**\n * Get signing data for quota requests.\n * The input is unused because quota requests don't need request-specific signing -\n * authentication alone is sufficient.\n *\n * The parameter was kept for API consistency with other signing functions.\n */\nexport function getKeetaStorageAnchorQuotaRequestSigningData(\n\t_ignoreInput: KeetaStorageAnchorQuotaRequest\n): Signable {\n\treturn(['quota']);\n}\n\n// #endregion\n\n// #region Error Classes\n\nclass KeetaStorageAnchorDocumentNotFoundError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorDocumentNotFoundError';\n\tprivate readonly KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID = 'ac137e18-2827-4542-a852-c650610899b5';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Document not found');\n\t\tthis.statusCode = 404;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorDocumentNotFoundError.KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorDocumentNotFoundError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID', KeetaStorageAnchorDocumentNotFoundError.KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorDocumentNotFoundError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorAccessDeniedError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorAccessDeniedError';\n\tprivate readonly KeetaStorageAnchorAccessDeniedErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorAccessDeniedErrorObjectTypeID = 'fb75fa8c-6ef0-47cb-b767-3c2cfbb73617';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Access denied');\n\t\tthis.statusCode = 403;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorAccessDeniedErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorAccessDeniedError.KeetaStorageAnchorAccessDeniedErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorAccessDeniedError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorAccessDeniedErrorObjectTypeID', KeetaStorageAnchorAccessDeniedError.KeetaStorageAnchorAccessDeniedErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorAccessDeniedError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidPathError extends KeetaAnchorUserValidationError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidPathError';\n\tprivate readonly KeetaStorageAnchorInvalidPathErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidPathErrorObjectTypeID = 'eb0e1c0d-2281-4b93-9f78-87bf166a4829';\n\n\tconstructor(message?: string) {\n\t\tsuper({ fields: [{ path: 'path', message: message ?? 'Invalid path format' }] }, message ?? 'Invalid path format');\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidPathErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidPathError.KeetaStorageAnchorInvalidPathErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic override isInstance(input: unknown): input is KeetaStorageAnchorInvalidPathError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidPathErrorObjectTypeID', KeetaStorageAnchorInvalidPathError.KeetaStorageAnchorInvalidPathErrorObjectTypeID));\n\t}\n\n\tstatic override async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidPathError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\ntype QuotaExceededType = 'maxObjectSize' | 'maxObjectsPerUser' | 'maxStoragePerUser';\n\nclass KeetaStorageAnchorQuotaExceededError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorQuotaExceededError';\n\tprivate readonly KeetaStorageAnchorQuotaExceededErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorQuotaExceededErrorObjectTypeID = 'c0b75028-644a-472b-8df4-b0a856814f99';\n\n\t/** Which quota limit was exceeded */\n\treadonly quotaType: QuotaExceededType;\n\n\t/** The configured maximum for the exceeded quota */\n\treadonly limit: number;\n\n\t/** The current or attempted value that exceeded the limit */\n\treadonly current: number;\n\n\tconstructor(options: { quotaType: QuotaExceededType; limit: number; current: number; message?: string }) {\n\t\tsuper(options.message ?? `Quota exceeded: ${options.quotaType} (${options.current} exceeds limit of ${options.limit})`);\n\t\tthis.statusCode = 413;\n\t\tthis.quotaType = options.quotaType;\n\t\tthis.limit = options.limit;\n\t\tthis.current = options.current;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorQuotaExceededErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorQuotaExceededError.KeetaStorageAnchorQuotaExceededErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorQuotaExceededError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorQuotaExceededErrorObjectTypeID', KeetaStorageAnchorQuotaExceededError.KeetaStorageAnchorQuotaExceededErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorQuotaExceededError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this({ quotaType: 'maxObjectSize', limit: 0, current: 0, message });\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorPrincipalRequiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorPrincipalRequiredError';\n\tprivate readonly KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID = '12e42092-d4db-435e-8a01-798e26f653b4';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Validated path requires anchor as principal');\n\t\tthis.statusCode = 400;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorPrincipalRequiredError.KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorPrincipalRequiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID', KeetaStorageAnchorPrincipalRequiredError.KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorPrincipalRequiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorValidationFailedError extends KeetaAnchorUserValidationError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorValidationFailedError';\n\tprivate readonly KeetaStorageAnchorValidationFailedErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorValidationFailedErrorObjectTypeID = '73cadd95-cf39-466b-b9b6-484e1ae1ca9c';\n\n\tconstructor(message?: string) {\n\t\tconst msg = message ?? 'Content validation failed';\n\t\tsuper({ fields: [{ path: 'content', message: msg }] }, msg);\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorValidationFailedErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorValidationFailedError.KeetaStorageAnchorValidationFailedErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\toverride get statusCode() {\n\t\treturn(422);\n\t}\n\n\tstatic override isInstance(input: unknown): input is KeetaStorageAnchorValidationFailedError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorValidationFailedErrorObjectTypeID', KeetaStorageAnchorValidationFailedError.KeetaStorageAnchorValidationFailedErrorObjectTypeID));\n\t}\n\n\tstatic override async fromJSON(input: unknown): Promise<KeetaStorageAnchorValidationFailedError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorSignatureExpiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorSignatureExpiredError';\n\tprivate readonly KeetaStorageAnchorSignatureExpiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorSignatureExpiredErrorObjectTypeID = '3a676e44-882b-4925-bf5f-bc5123cc0b20';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Pre-signed URL has expired');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorSignatureExpiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorSignatureExpiredError.KeetaStorageAnchorSignatureExpiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorSignatureExpiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorSignatureExpiredErrorObjectTypeID', KeetaStorageAnchorSignatureExpiredError.KeetaStorageAnchorSignatureExpiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorSignatureExpiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorSignatureInvalidError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorSignatureInvalidError';\n\tprivate readonly KeetaStorageAnchorSignatureInvalidErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorSignatureInvalidErrorObjectTypeID = '91831c73-31e2-4f27-a9d1-4ab9a5ed5663';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Pre-signed URL signature verification failed');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorSignatureInvalidErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorSignatureInvalidError.KeetaStorageAnchorSignatureInvalidErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorSignatureInvalidError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorSignatureInvalidErrorObjectTypeID', KeetaStorageAnchorSignatureInvalidError.KeetaStorageAnchorSignatureInvalidErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorSignatureInvalidError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorPrivateKeyRequiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorPrivateKeyRequiredError';\n\tprivate readonly KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID = '36eaae98-1b1e-412b-ba5b-b9293cc37156';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Account with private key required for this operation');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorPrivateKeyRequiredError.KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorPrivateKeyRequiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID', KeetaStorageAnchorPrivateKeyRequiredError.KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorPrivateKeyRequiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorServiceUnavailableError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorServiceUnavailableError';\n\tprivate readonly KeetaStorageAnchorServiceUnavailableErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorServiceUnavailableErrorObjectTypeID = 'b2671cd1-6abb-4bd4-9be2-d8d111c17bcf';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Storage service not available');\n\t\tthis.statusCode = 503;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorServiceUnavailableErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorServiceUnavailableError.KeetaStorageAnchorServiceUnavailableErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorServiceUnavailableError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorServiceUnavailableErrorObjectTypeID', KeetaStorageAnchorServiceUnavailableError.KeetaStorageAnchorServiceUnavailableErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorServiceUnavailableError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorSignerRequiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorSignerRequiredError';\n\tprivate readonly KeetaStorageAnchorSignerRequiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorSignerRequiredErrorObjectTypeID = 'ce4a5581-1869-4656-88c6-63f0a29b46ca';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'A Signer or UserClient with an associated Signer is required');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorSignerRequiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorSignerRequiredError.KeetaStorageAnchorSignerRequiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorSignerRequiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorSignerRequiredErrorObjectTypeID', KeetaStorageAnchorSignerRequiredError.KeetaStorageAnchorSignerRequiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorSignerRequiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorAccountRequiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorAccountRequiredError';\n\tprivate readonly KeetaStorageAnchorAccountRequiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorAccountRequiredErrorObjectTypeID = '496e5dbe-535f-4f24-acf4-a44d9d93fb75';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'An Account or UserClient with an associated Account is required');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorAccountRequiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorAccountRequiredError.KeetaStorageAnchorAccountRequiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorAccountRequiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorAccountRequiredErrorObjectTypeID', KeetaStorageAnchorAccountRequiredError.KeetaStorageAnchorAccountRequiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorAccountRequiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorOperationNotSupportedError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorOperationNotSupportedError';\n\tprivate readonly KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID = 'ac491ea6-f656-4eab-a430-051a0f201fff';\n\n\tconstructor(operation?: string) {\n\t\tsuper(operation ? `Storage service does not support '${operation}' operation` : 'Operation not supported');\n\t\tthis.statusCode = 501;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorOperationNotSupportedError.KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorOperationNotSupportedError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID', KeetaStorageAnchorOperationNotSupportedError.KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorOperationNotSupportedError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorUnsupportedAuthMethodError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorUnsupportedAuthMethodError';\n\tprivate readonly KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID = '46cfbab9-934f-44b0-9216-03d397fdd6b6';\n\n\tconstructor(method?: string) {\n\t\tsuper(method ? `Unsupported authentication method: ${method}` : 'Unsupported authentication method');\n\t\tthis.statusCode = 501;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorUnsupportedAuthMethodError.KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorUnsupportedAuthMethodError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID', KeetaStorageAnchorUnsupportedAuthMethodError.KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorUnsupportedAuthMethodError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidResponseError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidResponseError';\n\tprivate readonly KeetaStorageAnchorInvalidResponseErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidResponseErrorObjectTypeID = '02480186-7bc3-4a80-b6a9-23c3a9f606c9';\n\n\tconstructor(details?: string) {\n\t\tsuper(details ? `Invalid response from storage service: ${details}` : 'Invalid response from storage service');\n\t\tthis.statusCode = 502;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidResponseErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidResponseError.KeetaStorageAnchorInvalidResponseErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorInvalidResponseError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidResponseErrorObjectTypeID', KeetaStorageAnchorInvalidResponseError.KeetaStorageAnchorInvalidResponseErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidResponseError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidAnchorAccountError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidAnchorAccountError';\n\tprivate readonly KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID = '82bb0a94-0a5e-4e0a-b5c1-7532bbe09cd6';\n\n\tconstructor(publicKey?: string) {\n\t\tsuper(publicKey ? `Invalid anchor account public key: ${publicKey}` : 'Invalid anchor account public key');\n\t\tthis.statusCode = 502;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidAnchorAccountError.KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorInvalidAnchorAccountError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID', KeetaStorageAnchorInvalidAnchorAccountError.KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidAnchorAccountError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvariantViolationError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvariantViolationError';\n\tprivate readonly KeetaStorageAnchorInvariantViolationErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvariantViolationErrorObjectTypeID = 'a7c5d3e1-8b9f-4c2a-b3d4-e5f6a7b8c9d0';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Internal invariant violation');\n\t\tthis.statusCode = 500;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvariantViolationErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvariantViolationError.KeetaStorageAnchorInvariantViolationErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorInvariantViolationError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvariantViolationErrorObjectTypeID', KeetaStorageAnchorInvariantViolationError.KeetaStorageAnchorInvariantViolationErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvariantViolationError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidTagError extends KeetaAnchorUserValidationError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidTagError';\n\tprivate readonly KeetaStorageAnchorInvalidTagErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidTagErrorObjectTypeID = 'b8d6e4f2-9c0a-5d3b-c4e5-f6a7b8c9d0e1';\n\n\tconstructor(message?: string) {\n\t\tsuper({ fields: [{ path: 'tags', message: message ?? 'Invalid tag' }] }, message ?? 'Invalid tag');\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidTagErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidTagError.KeetaStorageAnchorInvalidTagErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic override isInstance(input: unknown): input is KeetaStorageAnchorInvalidTagError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidTagErrorObjectTypeID', KeetaStorageAnchorInvalidTagError.KeetaStorageAnchorInvalidTagErrorObjectTypeID));\n\t}\n\n\tstatic override async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidTagError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidMetadataError extends KeetaAnchorUserValidationError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidMetadataError';\n\tprivate readonly KeetaStorageAnchorInvalidMetadataErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidMetadataErrorObjectTypeID = 'c9e7f5a3-0d1b-6e4c-d5f6-a7b8c9d0e1f2';\n\n\tconstructor(reason?: string) {\n\t\tconst message = reason ? `Invalid metadata: ${reason}` : 'Invalid metadata';\n\t\tsuper({ fields: [{ path: 'metadata', message }] }, message);\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidMetadataErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidMetadataError.KeetaStorageAnchorInvalidMetadataErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic override isInstance(input: unknown): input is KeetaStorageAnchorInvalidMetadataError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidMetadataErrorObjectTypeID', KeetaStorageAnchorInvalidMetadataError.KeetaStorageAnchorInvalidMetadataErrorObjectTypeID));\n\t}\n\n\tstatic override async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidMetadataError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nexport const Errors: {\n\tDocumentNotFound: typeof KeetaStorageAnchorDocumentNotFoundError;\n\tAccessDenied: typeof KeetaStorageAnchorAccessDeniedError;\n\tInvalidPath: typeof KeetaStorageAnchorInvalidPathError;\n\tQuotaExceeded: typeof KeetaStorageAnchorQuotaExceededError;\n\tAnchorPrincipalRequired: typeof KeetaStorageAnchorPrincipalRequiredError;\n\tValidationFailed: typeof KeetaStorageAnchorValidationFailedError;\n\tSignatureExpired: typeof KeetaStorageAnchorSignatureExpiredError;\n\tSignatureInvalid: typeof KeetaStorageAnchorSignatureInvalidError;\n\tPrivateKeyRequired: typeof KeetaStorageAnchorPrivateKeyRequiredError;\n\tServiceUnavailable: typeof KeetaStorageAnchorServiceUnavailableError;\n\tSignerRequired: typeof KeetaStorageAnchorSignerRequiredError;\n\tAccountRequired: typeof KeetaStorageAnchorAccountRequiredError;\n\tOperationNotSupported: typeof KeetaStorageAnchorOperationNotSupportedError;\n\tUnsupportedAuthMethod: typeof KeetaStorageAnchorUnsupportedAuthMethodError;\n\tInvalidResponse: typeof KeetaStorageAnchorInvalidResponseError;\n\tInvalidAnchorAccount: typeof KeetaStorageAnchorInvalidAnchorAccountError;\n\tInvariantViolation: typeof KeetaStorageAnchorInvariantViolationError;\n\tInvalidTag: typeof KeetaStorageAnchorInvalidTagError;\n\tInvalidMetadata: typeof KeetaStorageAnchorInvalidMetadataError;\n} = {\n\t/**\n\t * The requested document/object was not found\n\t */\n\tDocumentNotFound: KeetaStorageAnchorDocumentNotFoundError,\n\n\t/**\n\t * Access to the document/object was denied\n\t */\n\tAccessDenied: KeetaStorageAnchorAccessDeniedError,\n\n\t/**\n\t * Path doesn't match /user/<pubkey>/... format\n\t */\n\tInvalidPath: KeetaStorageAnchorInvalidPathError,\n\n\t/**\n\t * Object size, count, or total storage limit exceeded\n\t */\n\tQuotaExceeded: KeetaStorageAnchorQuotaExceededError,\n\n\t/**\n\t * Validated path requires anchor as principal\n\t */\n\tAnchorPrincipalRequired: KeetaStorageAnchorPrincipalRequiredError,\n\n\t/**\n\t * Namespace validator rejected content\n\t */\n\tValidationFailed: KeetaStorageAnchorValidationFailedError,\n\n\t/**\n\t * Pre-signed URL has expired\n\t */\n\tSignatureExpired: KeetaStorageAnchorSignatureExpiredError,\n\n\t/**\n\t * Pre-signed URL signature verification failed\n\t */\n\tSignatureInvalid: KeetaStorageAnchorSignatureInvalidError,\n\n\t/**\n\t * Account with private key required for this operation\n\t */\n\tPrivateKeyRequired: KeetaStorageAnchorPrivateKeyRequiredError,\n\n\t/**\n\t * Storage service is not available\n\t */\n\tServiceUnavailable: KeetaStorageAnchorServiceUnavailableError,\n\n\t/**\n\t * A Signer or UserClient with an associated Signer is required\n\t */\n\tSignerRequired: KeetaStorageAnchorSignerRequiredError,\n\n\t/**\n\t * An Account or UserClient with an associated Account is required\n\t */\n\tAccountRequired: KeetaStorageAnchorAccountRequiredError,\n\n\t/**\n\t * The requested operation is not supported by this storage service\n\t */\n\tOperationNotSupported: KeetaStorageAnchorOperationNotSupportedError,\n\n\t/**\n\t * The authentication method is not supported\n\t */\n\tUnsupportedAuthMethod: KeetaStorageAnchorUnsupportedAuthMethodError,\n\n\t/**\n\t * Invalid response received from storage service\n\t */\n\tInvalidResponse: KeetaStorageAnchorInvalidResponseError,\n\n\t/**\n\t * Anchor account public key from service metadata is invalid\n\t */\n\tInvalidAnchorAccount: KeetaStorageAnchorInvalidAnchorAccountError,\n\n\t/**\n\t * Internal invariant violation - indicates a bug in the code\n\t */\n\tInvariantViolation: KeetaStorageAnchorInvariantViolationError,\n\n\t/**\n\t * Tag validation failed (invalid format, too long, or too many tags)\n\t */\n\tInvalidTag: KeetaStorageAnchorInvalidTagError,\n\n\t/**\n\t * Metadata validation failed against path policy constraints\n\t */\n\tInvalidMetadata: KeetaStorageAnchorInvalidMetadataError\n};\n\n// #endregion\n\n// #region Storage Backend Interface\n\n/**\n * Metadata input for put operations.\n * Provided by the client when storing an object.\n */\nexport type StoragePutMetadata = {\n\t/** Owner's identifier */\n\towner: string;\n\t/** Tags for categorization and search */\n\ttags: string[];\n\t/** Access visibility setting */\n\tvisibility: StorageObjectVisibility;\n};\n\n/**\n * Result of a get operation.\n * Contains both the raw encrypted data and the object metadata.\n */\nexport type StorageGetResult = {\n\t/** Raw encrypted data (EncryptedContainer) */\n\tdata: Buffer;\n\t/** Object metadata */\n\tmetadata: StorageObjectMetadata;\n};\n\n/**\n * Represents a pending upload quota reservation.\n * Used to reserve quota before an upload and track in-flight uploads.\n */\nexport interface UploadReservation {\n\t/** Unique identifier for this reservation */\n\tid: string;\n\t/** Owner's identifier */\n\towner: string;\n\t/** Target path for the upload */\n\tpath: string;\n\t/** Reserved size in bytes */\n\tsize: number;\n\t/** When the reservation was created */\n\tcreatedAt: string;\n\t/** When the reservation expires - hint for stale cleanup */\n\texpiresAt: string;\n}\n\n/**\n * Core CRUD operations for storage.\n * All backends must implement these operations.\n */\nexport interface StorageBackend {\n\t/**\n\t * Store/update an object at the given path\n\t */\n\tput(path: string, data: Buffer, metadata: StoragePutMetadata): Promise<StorageObjectMetadata>;\n\n\t/**\n\t * Retrieve an object by path\n\t */\n\tget(path: string): Promise<StorageGetResult | null>;\n\n\t/**\n\t * Delete an object by path\n\t */\n\tdelete(path: string): Promise<boolean>;\n}\n\n/**\n * Search capability interface.\n * Optional for backends that don't support indexing (e.g., simple S3-only backends).\n */\nexport interface SearchableStorage {\n\t/**\n\t * Search for objects matching criteria\n\t */\n\tsearch(criteria: SearchCriteria, pagination: SearchPagination): Promise<SearchResults>;\n}\n\n/**\n * Quota management with upload reservations.\n * Handles quota tracking and reservation-based upload flow.\n */\nexport interface QuotaManagedStorage {\n\t/**\n\t * Get quota status for a user.\n\t * Includes both actual usage and pending reservations.\n\t */\n\tgetQuotaStatus(owner: string): Promise<QuotaStatus>;\n\n\t/**\n\t * Get per-user quota limits.\n\t * Return null to use global defaults.\n\t * @param owner - Owner's identifier\n\t */\n\tgetQuotaLimits?(owner: string): Promise<QuotaLimits | null>;\n\n\t/**\n\t * Reserve quota for an upcoming upload.\n\t *\n\t * @param owner - Owner's identifier\n\t * @param path - Target path for the upload\n\t * @param size - Size in bytes to reserve\n\t * @param options.ttlMs - Optional TTL in milliseconds for the reservation\n\t * @param options.quotaLimits - Optional quota limits to enforce (overrides backend defaults)\n\t *\n\t * @returns Reservation that must be committed or released\n\t *\n\t * @throws QuotaExceeded if reservation would exceed limits\n\t */\n\treserveUpload(owner: string, path: string, size: number, options?: {\n\t\tttlMs?: number;\n\t\tquotaLimits?: Pick<QuotaConfig, 'maxObjectsPerUser' | 'maxStoragePerUser'>;\n\t}): Promise<UploadReservation>;\n\n\t/**\n\t * Commit a reservation after successful upload.\n\t * Call after put() succeeds to finalize the quota usage.\n\t * @param reservationId - ID of the reservation to commit\n\t */\n\tcommitUpload(reservationId: string): Promise<void>;\n\n\t/**\n\t * Release a reservation (upload failed or cancelled).\n\t * Frees the reserved quota.\n\t * @param reservationId - ID of the reservation to release\n\t */\n\treleaseUpload(reservationId: string): Promise<void>;\n}\n\n/**\n * Full storage backend combining all capabilities.\n * Use this type when a backend supports CRUD, search, and quota management.\n */\nexport type FullStorageBackend = StorageBackend & SearchableStorage & QuotaManagedStorage;\n\n// #endregion\n\n// #region Path Policy\n\n/**\n * Generic interface for path policies.\n * Each implementation defines its own parsed type and access control logic.\n * Storage Anchors are free to implement whatever pathname structure they wish.\n */\nexport interface PathPolicy<TPathInfo> {\n\t/**\n\t * Parse a path into its components.\n\t * @returns TPathInfo if valid, null otherwise\n\t */\n\tparse(path: string): TPathInfo | null;\n\n\t/**\n\t * Validate a path and return its components.\n\t * @throws Errors.InvalidPath if the path is invalid\n\t */\n\tvalidate(path: string): TPathInfo;\n\n\t/**\n\t * Check if a path is valid.\n\t */\n\tisValid(path: string): boolean;\n\n\t/**\n\t * Check if the account has access to perform the operation on the parsed path.\n\t * @returns true if access is allowed, false otherwise\n\t */\n\tcheckAccess(account: KeetaNetAccount, parsed: TPathInfo, operation: 'get' | 'put' | 'delete' | 'search' | 'metadata'): boolean;\n\n\t/**\n\t * Get the account authorized to sign pre-signed URLs for this path.\n\t * Used for public object access verification.\n\t *\n\t * @returns The account if only that account can sign (owner-restricted), or `null` if any account can sign\n\t */\n\tgetAuthorizedSigner(parsed: TPathInfo): KeetaNetAccount | null;\n\n\t/**\n\t * Validate metadata for a path.\n\t * Called during PUT and metadata update operations.\n\t * @param parsed - The parsed path info\n\t * @param metadata - The metadata to validate\n\t * @throws Errors.InvalidMetadata if metadata violates path constraints\n\t */\n\tvalidateMetadata?(parsed: TPathInfo, metadata: StoragePutMetadata): void;\n}\n\n// #endregion\n\n// #region Container Payload Utilities\n\n/**\n * Parse the decrypted plaintext from an EncryptedContainer.\n * The payload is expected to be JSON with mimeType and base64-encoded data,\n * keeping the mimeType encrypted along with the content.\n *\n * @param plaintext - The decrypted plaintext from an EncryptedContainer\n *\n * @returns Object containing mimeType and content Buffer\n */\nexport function parseContainerPayload(plaintext: ArrayBuffer): { mimeType: string; content: Buffer } {\n\tconst payloadStr = Buffer.from(plaintext).toString('utf-8');\n\ttry {\n\t\tconst payload: unknown = JSON.parse(payloadStr);\n\t\tlet mimeType = CONTENT_TYPE_OCTET_STREAM;\n\t\tlet content: Buffer;\n\t\tif (typeof payload === 'object' && payload !== null && !Array.isArray(payload)) {\n\t\t\tconst payloadMime = 'mimeType' in payload ? payload.mimeType : undefined;\n\t\t\tconst payloadData = 'data' in payload ? payload.data : undefined;\n\t\t\tif (typeof payloadMime === 'string') {\n\t\t\t\tmimeType = payloadMime;\n\t\t\t}\n\t\t\tif (typeof payloadData === 'string') {\n\t\t\t\tcontent = arrayBufferLikeToBuffer(Buffer.from(payloadData, 'base64'));\n\t\t\t} else {\n\t\t\t\tcontent = arrayBufferLikeToBuffer(plaintext);\n\t\t\t}\n\t\t} else {\n\t\t\tcontent = arrayBufferLikeToBuffer(plaintext);\n\t\t}\n\t\treturn({ mimeType, content });\n\t} catch {\n\t\treturn({\n\t\t\tmimeType: CONTENT_TYPE_OCTET_STREAM,\n\t\t\tcontent: arrayBufferLikeToBuffer(plaintext)\n\t\t});\n\t}\n}\n\n// #endregion\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/services/storage/common.ts"],"names":[],"mappings":"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","sourcesContent":["import type { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport type { HTTPSignedField } from '../../lib/http-server/common.js';\nimport type { Signable } from '../../lib/utils/signing.js';\nimport { KeetaAnchorUserError, KeetaAnchorUserValidationError } from '../../lib/error.js';\nimport { Buffer, arrayBufferLikeToBuffer } from '../../lib/utils/buffer.js';\n\n/**\n * Type alias for a KeetaNet Account instance.\n * Used throughout the storage service for account authentication and signing.\n */\nexport type KeetaNetAccount = InstanceType<typeof KeetaNetLib.Account>;\n\n// #region Shared Constants\n\n/** Content type for JSON payloads */\nexport const CONTENT_TYPE_JSON = 'application/json';\n\n/** Content type for binary/octet-stream payloads */\nexport const CONTENT_TYPE_OCTET_STREAM = 'application/octet-stream';\n\n/** Default TTL for signed URLs in seconds (1 hour) */\nexport const DEFAULT_SIGNED_URL_TTL_SECONDS = 3600;\n\n// #endregion\n\n// #region Common Types\n\n/**\n * Visibility of a storage object\n */\nexport type StorageObjectVisibility = 'public' | 'private';\n\n// #endregion\n\n// #region Object Metadata\n\n/**\n * Metadata for a stored object\n */\nexport type StorageObjectMetadata = {\n\t/**\n\t * Full path (the unique ID)\n\t */\n\tpath: string;\n\n\t/**\n\t * Owner's identifier\n\t */\n\towner: string;\n\n\t/**\n\t * Plaintext tags (searchable)\n\t */\n\ttags: string[];\n\n\t/**\n\t * Visibility setting\n\t */\n\tvisibility: StorageObjectVisibility;\n\n\t/**\n\t * Size in bytes\n\t */\n\tsize: number;\n\n\t/**\n\t * ISO timestamp of creation\n\t */\n\tcreatedAt: string;\n\n\t/**\n\t * ISO timestamp of last update\n\t */\n\tupdatedAt?: string;\n};\n\n// #endregion\n\n// #region Search\n\n/**\n * Criteria for searching storage objects.\n * Note: Content/keyword search is not supported (content is encrypted).\n */\nexport type SearchCriteria = {\n\t/**\n\t * Match objects with paths starting with this prefix\n\t * e.g., \"/user/keeta1abc.../contacts/\"\n\t */\n\tpathPrefix?: string;\n\n\t/**\n\t * Match objects that have ANY of these tags\n\t */\n\ttags?: string[];\n\n\t/**\n\t * Match path segment (filename portion)\n\t */\n\tname?: string;\n\n\t/**\n\t * Filter by owner's public key\n\t */\n\towner?: string;\n\n\t/**\n\t * Include objects in nested paths (default: false)\n\t */\n\trecursive?: boolean;\n\n\t/**\n\t * Filter by visibility.\n\t * When 'public', allows searching public objects outside caller's namespace.\n\t */\n\tvisibility?: StorageObjectVisibility;\n};\n\n/**\n * Pagination options for search\n */\nexport type SearchPagination = {\n\t/**\n\t * Cursor for pagination (from previous response)\n\t */\n\tcursor?: string;\n\n\t/**\n\t * Maximum number of results to return\n\t */\n\tlimit?: number;\n};\n\n/**\n * Search results with pagination\n */\nexport type SearchResults = {\n\t/**\n\t * Matching objects\n\t */\n\tresults: StorageObjectMetadata[];\n\n\t/**\n\t * Cursor for next page (undefined if no more results)\n\t */\n\tnextCursor?: string;\n};\n\n// #endregion\n\n// #region Quota\n\n/**\n * Quota configuration for the storage service\n */\nexport type QuotaConfig = {\n\t/**\n\t * Maximum size in bytes per object\n\t */\n\tmaxObjectSize: number;\n\n\t/**\n\t * Maximum number of objects per user\n\t */\n\tmaxObjectsPerUser: number;\n\n\t/**\n\t * Maximum total storage in bytes per user\n\t */\n\tmaxStoragePerUser: number;\n\n\t/**\n\t * Maximum number of results per search request\n\t */\n\tmaxSearchLimit: number;\n\n\t/**\n\t * Maximum TTL in seconds for signed URLs\n\t */\n\tmaxSignedUrlTTL: number;\n};\n\n/**\n * Per-user quota limits.\n * Subset of QuotaConfig that can be overridden on a per-user basis.\n */\nexport type QuotaLimits = Pick<QuotaConfig, 'maxObjectsPerUser' | 'maxStoragePerUser' | 'maxObjectSize'>;\n\n/**\n * Current quota status for a user.\n * Backends must provide objectCount and totalSize.\n */\nexport type QuotaStatus = {\n\t/**\n\t * Current number of objects\n\t */\n\tobjectCount: number;\n\n\t/**\n\t * Current total size in bytes\n\t */\n\ttotalSize: number;\n\n\t/**\n\t * Remaining objects allowed (optional, server computes if absent)\n\t */\n\tremainingObjects?: number;\n\n\t/**\n\t * Remaining storage in bytes (optional, server computes if absent)\n\t */\n\tremainingSize?: number;\n};\n\n// #endregion\n\n// #region Request Type Helpers\n\n// #endregion\n\n// #region PUT Object\n\n/**\n * Client-side request to put (create/update) an object\n */\nexport type KeetaStorageAnchorPutClientRequest = {\n\taccount?: KeetaNetAccount;\n\tpath: string;\n\tdata: string; // Base64-encoded EncryptedContainer\n\ttags?: string[];\n\tvisibility?: StorageObjectVisibility;\n};\n\n/**\n * Server-side request to put an object\n */\nexport type KeetaStorageAnchorPutRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n\tpath: string;\n\tdata: string;\n\ttags?: string[];\n\tvisibility?: StorageObjectVisibility;\n};\n\n/**\n * Configuration for a contacts client.\n * Contacts are stored in a subdirectory of the account's working directory.\n */\nexport type ContactsClientConfig = {\n\t/**\n\t * The account to use for the contacts client.\n\t */\n\taccount: KeetaNetAccount;\n\t/**\n\t * The base path for the contacts client.\n\t */\n\tbasePath: string;\n};\n\n/**\n * Configuration for an icons client.\n * The icon is stored as a single file under the base path.\n */\nexport type IconsClientConfig = {\n\t/**\n\t * The account to use for the icons client.\n\t */\n\taccount: KeetaNetAccount;\n\t/**\n\t * The base path for the icons client (e.g., `/user/<pubkey>/`).\n\t */\n\tbasePath: string;\n};\n\n/**\n * Generic response type for storage operations.\n */\nexport type StorageResponse<T> = ({ ok: true } & T) | { ok: false; error: string };\n\nexport type KeetaStorageAnchorPutResponse = StorageResponse<{ object: StorageObjectMetadata }>;\n\nexport function getKeetaStorageAnchorPutRequestSigningData(\n\tinput: { path: string; visibility?: StorageObjectVisibility; tags?: string[] }\n): Signable {\n\tconst visibility = input.visibility ?? 'private';\n\tconst tags: string[] = input.tags ?? [];\n\tconst sortedTags = [...tags].sort();\n\treturn(['put', input.path, visibility, ...sortedTags]);\n}\n\n// #endregion\n\n// #region GET Object\n\n/**\n * Client-side request to get an object\n */\nexport type KeetaStorageAnchorGetClientRequest = {\n\taccount?: KeetaNetAccount;\n\tpath: string;\n};\n\n/**\n * Server-side request to get an object\n */\nexport type KeetaStorageAnchorGetRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n\tpath: string;\n};\n\nexport type KeetaStorageAnchorGetResponse = StorageResponse<{\n\tdata: string; // Base64-encoded EncryptedContainer\n\tobject: StorageObjectMetadata;\n}>;\n\nexport function getKeetaStorageAnchorGetRequestSigningData(\n\tinput: KeetaStorageAnchorGetRequest\n): Signable {\n\treturn(['get', input.path]);\n}\n\n// #endregion\n\n// #region DELETE Object\n\n/**\n * Client-side request to delete an object\n */\nexport type KeetaStorageAnchorDeleteClientRequest = {\n\taccount?: KeetaNetAccount;\n\t/**\n\t * Path to the object\n\t */\n\tpath: string;\n};\n\n/**\n * Server-side request to delete an object\n */\nexport type KeetaStorageAnchorDeleteRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n\t/**\n\t * Path to the object\n\t */\n\tpath: string;\n};\n\nexport type KeetaStorageAnchorDeleteResponse = StorageResponse<{ deleted: boolean }>;\n\nexport function getKeetaStorageAnchorDeleteRequestSigningData(\n\tinput: KeetaStorageAnchorDeleteRequest\n): Signable {\n\treturn(['delete', input.path]);\n}\n\n// #endregion\n\n// #region SEARCH\n\n/**\n * Client-side request to search objects\n */\nexport type KeetaStorageAnchorSearchClientRequest = {\n\taccount?: KeetaNetAccount;\n\tcriteria: SearchCriteria;\n\tpagination?: SearchPagination;\n};\n\n/**\n * Server-side request to search objects\n */\nexport type KeetaStorageAnchorSearchRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n\tcriteria: SearchCriteria;\n\tpagination?: SearchPagination;\n};\n\nexport type KeetaStorageAnchorSearchResponse = StorageResponse<{\n\tresults: StorageObjectMetadata[];\n\tnextCursor?: string;\n}>;\n\nexport function getKeetaStorageAnchorSearchRequestSigningData(\n\tinput: KeetaStorageAnchorSearchRequest\n): Signable {\n\tconst limit = input.pagination?.limit ?? 0;\n\tconst cursor = input.pagination?.cursor ?? '';\n\treturn(['search', JSON.stringify(input.criteria), limit, cursor]);\n}\n\n// #endregion\n\n// #region Quota\n\n/**\n * Client-side request to get quota status\n */\nexport type KeetaStorageAnchorQuotaClientRequest = {\n\taccount?: KeetaNetAccount;\n};\n\n/**\n * Server-side request to get quota status\n */\nexport type KeetaStorageAnchorQuotaRequest = {\n\taccount?: string;\n\tsigned?: HTTPSignedField;\n};\n\nexport type KeetaStorageAnchorQuotaResponse = StorageResponse<{ quota: QuotaStatus }>;\n\n/**\n * Get signing data for quota requests.\n * The input is unused because quota requests don't need request-specific signing -\n * authentication alone is sufficient.\n *\n * The parameter was kept for API consistency with other signing functions.\n */\nexport function getKeetaStorageAnchorQuotaRequestSigningData(\n\t_ignoreInput: KeetaStorageAnchorQuotaRequest\n): Signable {\n\treturn(['quota']);\n}\n\n// #endregion\n\n// #region Error Classes\n\nclass KeetaStorageAnchorDocumentNotFoundError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorDocumentNotFoundError';\n\tprivate readonly KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID = 'ac137e18-2827-4542-a852-c650610899b5';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Document not found');\n\t\tthis.statusCode = 404;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorDocumentNotFoundError.KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorDocumentNotFoundError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID', KeetaStorageAnchorDocumentNotFoundError.KeetaStorageAnchorDocumentNotFoundErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorDocumentNotFoundError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorAccessDeniedError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorAccessDeniedError';\n\tprivate readonly KeetaStorageAnchorAccessDeniedErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorAccessDeniedErrorObjectTypeID = 'fb75fa8c-6ef0-47cb-b767-3c2cfbb73617';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Access denied');\n\t\tthis.statusCode = 403;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorAccessDeniedErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorAccessDeniedError.KeetaStorageAnchorAccessDeniedErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorAccessDeniedError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorAccessDeniedErrorObjectTypeID', KeetaStorageAnchorAccessDeniedError.KeetaStorageAnchorAccessDeniedErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorAccessDeniedError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidPathError extends KeetaAnchorUserValidationError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidPathError';\n\tprivate readonly KeetaStorageAnchorInvalidPathErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidPathErrorObjectTypeID = 'eb0e1c0d-2281-4b93-9f78-87bf166a4829';\n\n\tconstructor(message?: string) {\n\t\tsuper({ fields: [{ path: 'path', message: message ?? 'Invalid path format' }] }, message ?? 'Invalid path format');\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidPathErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidPathError.KeetaStorageAnchorInvalidPathErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic override isInstance(input: unknown): input is KeetaStorageAnchorInvalidPathError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidPathErrorObjectTypeID', KeetaStorageAnchorInvalidPathError.KeetaStorageAnchorInvalidPathErrorObjectTypeID));\n\t}\n\n\tstatic override async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidPathError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\ntype QuotaExceededType = 'maxObjectSize' | 'maxObjectsPerUser' | 'maxStoragePerUser';\n\nclass KeetaStorageAnchorQuotaExceededError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorQuotaExceededError';\n\tprivate readonly KeetaStorageAnchorQuotaExceededErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorQuotaExceededErrorObjectTypeID = 'c0b75028-644a-472b-8df4-b0a856814f99';\n\n\t/** Which quota limit was exceeded */\n\treadonly quotaType: QuotaExceededType;\n\n\t/** The configured maximum for the exceeded quota */\n\treadonly limit: number;\n\n\t/** The current or attempted value that exceeded the limit */\n\treadonly current: number;\n\n\tconstructor(options: { quotaType: QuotaExceededType; limit: number; current: number; message?: string }) {\n\t\tsuper(options.message ?? `Quota exceeded: ${options.quotaType} (${options.current} exceeds limit of ${options.limit})`);\n\t\tthis.statusCode = 413;\n\t\tthis.quotaType = options.quotaType;\n\t\tthis.limit = options.limit;\n\t\tthis.current = options.current;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorQuotaExceededErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorQuotaExceededError.KeetaStorageAnchorQuotaExceededErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorQuotaExceededError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorQuotaExceededErrorObjectTypeID', KeetaStorageAnchorQuotaExceededError.KeetaStorageAnchorQuotaExceededErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorQuotaExceededError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this({ quotaType: 'maxObjectSize', limit: 0, current: 0, message });\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorPrincipalRequiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorPrincipalRequiredError';\n\tprivate readonly KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID = '12e42092-d4db-435e-8a01-798e26f653b4';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Validated path requires anchor as principal');\n\t\tthis.statusCode = 400;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorPrincipalRequiredError.KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorPrincipalRequiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID', KeetaStorageAnchorPrincipalRequiredError.KeetaStorageAnchorPrincipalRequiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorPrincipalRequiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorValidationFailedError extends KeetaAnchorUserValidationError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorValidationFailedError';\n\tprivate readonly KeetaStorageAnchorValidationFailedErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorValidationFailedErrorObjectTypeID = '73cadd95-cf39-466b-b9b6-484e1ae1ca9c';\n\n\tconstructor(message?: string) {\n\t\tconst msg = message ?? 'Content validation failed';\n\t\tsuper({ fields: [{ path: 'content', message: msg }] }, msg);\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorValidationFailedErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorValidationFailedError.KeetaStorageAnchorValidationFailedErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\toverride get statusCode() {\n\t\treturn(422);\n\t}\n\n\tstatic override isInstance(input: unknown): input is KeetaStorageAnchorValidationFailedError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorValidationFailedErrorObjectTypeID', KeetaStorageAnchorValidationFailedError.KeetaStorageAnchorValidationFailedErrorObjectTypeID));\n\t}\n\n\tstatic override async fromJSON(input: unknown): Promise<KeetaStorageAnchorValidationFailedError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorSignatureExpiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorSignatureExpiredError';\n\tprivate readonly KeetaStorageAnchorSignatureExpiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorSignatureExpiredErrorObjectTypeID = '3a676e44-882b-4925-bf5f-bc5123cc0b20';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Pre-signed URL has expired');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorSignatureExpiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorSignatureExpiredError.KeetaStorageAnchorSignatureExpiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorSignatureExpiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorSignatureExpiredErrorObjectTypeID', KeetaStorageAnchorSignatureExpiredError.KeetaStorageAnchorSignatureExpiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorSignatureExpiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorSignatureInvalidError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorSignatureInvalidError';\n\tprivate readonly KeetaStorageAnchorSignatureInvalidErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorSignatureInvalidErrorObjectTypeID = '91831c73-31e2-4f27-a9d1-4ab9a5ed5663';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Pre-signed URL signature verification failed');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorSignatureInvalidErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorSignatureInvalidError.KeetaStorageAnchorSignatureInvalidErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorSignatureInvalidError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorSignatureInvalidErrorObjectTypeID', KeetaStorageAnchorSignatureInvalidError.KeetaStorageAnchorSignatureInvalidErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorSignatureInvalidError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorPrivateKeyRequiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorPrivateKeyRequiredError';\n\tprivate readonly KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID = '36eaae98-1b1e-412b-ba5b-b9293cc37156';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Account with private key required for this operation');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorPrivateKeyRequiredError.KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorPrivateKeyRequiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID', KeetaStorageAnchorPrivateKeyRequiredError.KeetaStorageAnchorPrivateKeyRequiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorPrivateKeyRequiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorServiceUnavailableError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorServiceUnavailableError';\n\tprivate readonly KeetaStorageAnchorServiceUnavailableErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorServiceUnavailableErrorObjectTypeID = 'b2671cd1-6abb-4bd4-9be2-d8d111c17bcf';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Storage service not available');\n\t\tthis.statusCode = 503;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorServiceUnavailableErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorServiceUnavailableError.KeetaStorageAnchorServiceUnavailableErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorServiceUnavailableError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorServiceUnavailableErrorObjectTypeID', KeetaStorageAnchorServiceUnavailableError.KeetaStorageAnchorServiceUnavailableErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorServiceUnavailableError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorSignerRequiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorSignerRequiredError';\n\tprivate readonly KeetaStorageAnchorSignerRequiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorSignerRequiredErrorObjectTypeID = 'ce4a5581-1869-4656-88c6-63f0a29b46ca';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'A Signer or UserClient with an associated Signer is required');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorSignerRequiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorSignerRequiredError.KeetaStorageAnchorSignerRequiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorSignerRequiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorSignerRequiredErrorObjectTypeID', KeetaStorageAnchorSignerRequiredError.KeetaStorageAnchorSignerRequiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorSignerRequiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorAccountRequiredError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorAccountRequiredError';\n\tprivate readonly KeetaStorageAnchorAccountRequiredErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorAccountRequiredErrorObjectTypeID = '496e5dbe-535f-4f24-acf4-a44d9d93fb75';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'An Account or UserClient with an associated Account is required');\n\t\tthis.statusCode = 401;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorAccountRequiredErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorAccountRequiredError.KeetaStorageAnchorAccountRequiredErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorAccountRequiredError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorAccountRequiredErrorObjectTypeID', KeetaStorageAnchorAccountRequiredError.KeetaStorageAnchorAccountRequiredErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorAccountRequiredError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorOperationNotSupportedError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorOperationNotSupportedError';\n\tprivate readonly KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID = 'ac491ea6-f656-4eab-a430-051a0f201fff';\n\n\tconstructor(operation?: string) {\n\t\tsuper(operation ? `Storage service does not support '${operation}' operation` : 'Operation not supported');\n\t\tthis.statusCode = 501;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorOperationNotSupportedError.KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorOperationNotSupportedError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID', KeetaStorageAnchorOperationNotSupportedError.KeetaStorageAnchorOperationNotSupportedErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorOperationNotSupportedError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorUnsupportedAuthMethodError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorUnsupportedAuthMethodError';\n\tprivate readonly KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID = '46cfbab9-934f-44b0-9216-03d397fdd6b6';\n\n\tconstructor(method?: string) {\n\t\tsuper(method ? `Unsupported authentication method: ${method}` : 'Unsupported authentication method');\n\t\tthis.statusCode = 501;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorUnsupportedAuthMethodError.KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorUnsupportedAuthMethodError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID', KeetaStorageAnchorUnsupportedAuthMethodError.KeetaStorageAnchorUnsupportedAuthMethodErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorUnsupportedAuthMethodError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidResponseError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidResponseError';\n\tprivate readonly KeetaStorageAnchorInvalidResponseErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidResponseErrorObjectTypeID = '02480186-7bc3-4a80-b6a9-23c3a9f606c9';\n\n\tconstructor(details?: string) {\n\t\tsuper(details ? `Invalid response from storage service: ${details}` : 'Invalid response from storage service');\n\t\tthis.statusCode = 502;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidResponseErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidResponseError.KeetaStorageAnchorInvalidResponseErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorInvalidResponseError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidResponseErrorObjectTypeID', KeetaStorageAnchorInvalidResponseError.KeetaStorageAnchorInvalidResponseErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidResponseError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidAnchorAccountError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidAnchorAccountError';\n\tprivate readonly KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID = '82bb0a94-0a5e-4e0a-b5c1-7532bbe09cd6';\n\n\tconstructor(publicKey?: string) {\n\t\tsuper(publicKey ? `Invalid anchor account public key: ${publicKey}` : 'Invalid anchor account public key');\n\t\tthis.statusCode = 502;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidAnchorAccountError.KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorInvalidAnchorAccountError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID', KeetaStorageAnchorInvalidAnchorAccountError.KeetaStorageAnchorInvalidAnchorAccountErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidAnchorAccountError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvariantViolationError extends KeetaAnchorUserError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvariantViolationError';\n\tprivate readonly KeetaStorageAnchorInvariantViolationErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvariantViolationErrorObjectTypeID = 'a7c5d3e1-8b9f-4c2a-b3d4-e5f6a7b8c9d0';\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'Internal invariant violation');\n\t\tthis.statusCode = 500;\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvariantViolationErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvariantViolationError.KeetaStorageAnchorInvariantViolationErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaStorageAnchorInvariantViolationError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvariantViolationErrorObjectTypeID', KeetaStorageAnchorInvariantViolationError.KeetaStorageAnchorInvariantViolationErrorObjectTypeID));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvariantViolationError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidTagError extends KeetaAnchorUserValidationError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidTagError';\n\tprivate readonly KeetaStorageAnchorInvalidTagErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidTagErrorObjectTypeID = 'b8d6e4f2-9c0a-5d3b-c4e5-f6a7b8c9d0e1';\n\n\tconstructor(message?: string) {\n\t\tsuper({ fields: [{ path: 'tags', message: message ?? 'Invalid tag' }] }, message ?? 'Invalid tag');\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidTagErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidTagError.KeetaStorageAnchorInvalidTagErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic override isInstance(input: unknown): input is KeetaStorageAnchorInvalidTagError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidTagErrorObjectTypeID', KeetaStorageAnchorInvalidTagError.KeetaStorageAnchorInvalidTagErrorObjectTypeID));\n\t}\n\n\tstatic override async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidTagError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nclass KeetaStorageAnchorInvalidMetadataError extends KeetaAnchorUserValidationError {\n\tstatic override readonly name: string = 'KeetaStorageAnchorInvalidMetadataError';\n\tprivate readonly KeetaStorageAnchorInvalidMetadataErrorObjectTypeID!: string;\n\tprivate static readonly KeetaStorageAnchorInvalidMetadataErrorObjectTypeID = 'c9e7f5a3-0d1b-6e4c-d5f6-a7b8c9d0e1f2';\n\n\tconstructor(reason?: string) {\n\t\tconst message = reason ? `Invalid metadata: ${reason}` : 'Invalid metadata';\n\t\tsuper({ fields: [{ path: 'metadata', message }] }, message);\n\n\t\tObject.defineProperty(this, 'KeetaStorageAnchorInvalidMetadataErrorObjectTypeID', {\n\t\t\tvalue: KeetaStorageAnchorInvalidMetadataError.KeetaStorageAnchorInvalidMetadataErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic override isInstance(input: unknown): input is KeetaStorageAnchorInvalidMetadataError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaStorageAnchorInvalidMetadataErrorObjectTypeID', KeetaStorageAnchorInvalidMetadataError.KeetaStorageAnchorInvalidMetadataErrorObjectTypeID));\n\t}\n\n\tstatic override async fromJSON(input: unknown): Promise<KeetaStorageAnchorInvalidMetadataError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\nexport const Errors: {\n\tDocumentNotFound: typeof KeetaStorageAnchorDocumentNotFoundError;\n\tAccessDenied: typeof KeetaStorageAnchorAccessDeniedError;\n\tInvalidPath: typeof KeetaStorageAnchorInvalidPathError;\n\tQuotaExceeded: typeof KeetaStorageAnchorQuotaExceededError;\n\tAnchorPrincipalRequired: typeof KeetaStorageAnchorPrincipalRequiredError;\n\tValidationFailed: typeof KeetaStorageAnchorValidationFailedError;\n\tSignatureExpired: typeof KeetaStorageAnchorSignatureExpiredError;\n\tSignatureInvalid: typeof KeetaStorageAnchorSignatureInvalidError;\n\tPrivateKeyRequired: typeof KeetaStorageAnchorPrivateKeyRequiredError;\n\tServiceUnavailable: typeof KeetaStorageAnchorServiceUnavailableError;\n\tSignerRequired: typeof KeetaStorageAnchorSignerRequiredError;\n\tAccountRequired: typeof KeetaStorageAnchorAccountRequiredError;\n\tOperationNotSupported: typeof KeetaStorageAnchorOperationNotSupportedError;\n\tUnsupportedAuthMethod: typeof KeetaStorageAnchorUnsupportedAuthMethodError;\n\tInvalidResponse: typeof KeetaStorageAnchorInvalidResponseError;\n\tInvalidAnchorAccount: typeof KeetaStorageAnchorInvalidAnchorAccountError;\n\tInvariantViolation: typeof KeetaStorageAnchorInvariantViolationError;\n\tInvalidTag: typeof KeetaStorageAnchorInvalidTagError;\n\tInvalidMetadata: typeof KeetaStorageAnchorInvalidMetadataError;\n} = {\n\t/**\n\t * The requested document/object was not found\n\t */\n\tDocumentNotFound: KeetaStorageAnchorDocumentNotFoundError,\n\n\t/**\n\t * Access to the document/object was denied\n\t */\n\tAccessDenied: KeetaStorageAnchorAccessDeniedError,\n\n\t/**\n\t * Path doesn't match /user/<pubkey>/... format\n\t */\n\tInvalidPath: KeetaStorageAnchorInvalidPathError,\n\n\t/**\n\t * Object size, count, or total storage limit exceeded\n\t */\n\tQuotaExceeded: KeetaStorageAnchorQuotaExceededError,\n\n\t/**\n\t * Validated path requires anchor as principal\n\t */\n\tAnchorPrincipalRequired: KeetaStorageAnchorPrincipalRequiredError,\n\n\t/**\n\t * Namespace validator rejected content\n\t */\n\tValidationFailed: KeetaStorageAnchorValidationFailedError,\n\n\t/**\n\t * Pre-signed URL has expired\n\t */\n\tSignatureExpired: KeetaStorageAnchorSignatureExpiredError,\n\n\t/**\n\t * Pre-signed URL signature verification failed\n\t */\n\tSignatureInvalid: KeetaStorageAnchorSignatureInvalidError,\n\n\t/**\n\t * Account with private key required for this operation\n\t */\n\tPrivateKeyRequired: KeetaStorageAnchorPrivateKeyRequiredError,\n\n\t/**\n\t * Storage service is not available\n\t */\n\tServiceUnavailable: KeetaStorageAnchorServiceUnavailableError,\n\n\t/**\n\t * A Signer or UserClient with an associated Signer is required\n\t */\n\tSignerRequired: KeetaStorageAnchorSignerRequiredError,\n\n\t/**\n\t * An Account or UserClient with an associated Account is required\n\t */\n\tAccountRequired: KeetaStorageAnchorAccountRequiredError,\n\n\t/**\n\t * The requested operation is not supported by this storage service\n\t */\n\tOperationNotSupported: KeetaStorageAnchorOperationNotSupportedError,\n\n\t/**\n\t * The authentication method is not supported\n\t */\n\tUnsupportedAuthMethod: KeetaStorageAnchorUnsupportedAuthMethodError,\n\n\t/**\n\t * Invalid response received from storage service\n\t */\n\tInvalidResponse: KeetaStorageAnchorInvalidResponseError,\n\n\t/**\n\t * Anchor account public key from service metadata is invalid\n\t */\n\tInvalidAnchorAccount: KeetaStorageAnchorInvalidAnchorAccountError,\n\n\t/**\n\t * Internal invariant violation - indicates a bug in the code\n\t */\n\tInvariantViolation: KeetaStorageAnchorInvariantViolationError,\n\n\t/**\n\t * Tag validation failed (invalid format, too long, or too many tags)\n\t */\n\tInvalidTag: KeetaStorageAnchorInvalidTagError,\n\n\t/**\n\t * Metadata validation failed against path policy constraints\n\t */\n\tInvalidMetadata: KeetaStorageAnchorInvalidMetadataError\n};\n\n// #endregion\n\n// #region Storage Backend Interface\n\n/**\n * Metadata input for put operations.\n * Provided by the client when storing an object.\n */\nexport type StoragePutMetadata = {\n\t/** Owner's identifier */\n\towner: string;\n\t/** Tags for categorization and search */\n\ttags: string[];\n\t/** Access visibility setting */\n\tvisibility: StorageObjectVisibility;\n};\n\n/**\n * Result of a get operation.\n * Contains both the raw encrypted data and the object metadata.\n */\nexport type StorageGetResult = {\n\t/** Raw encrypted data (EncryptedContainer) */\n\tdata: Buffer;\n\t/** Object metadata */\n\tmetadata: StorageObjectMetadata;\n};\n\n/**\n * Represents a pending upload quota reservation.\n * Used to reserve quota before an upload and track in-flight uploads.\n */\nexport interface UploadReservation {\n\t/** Unique identifier for this reservation */\n\tid: string;\n\t/** Owner's identifier */\n\towner: string;\n\t/** Target path for the upload */\n\tpath: string;\n\t/** Reserved size in bytes */\n\tsize: number;\n\t/** When the reservation was created */\n\tcreatedAt: string;\n\t/** When the reservation expires - hint for stale cleanup */\n\texpiresAt: string;\n}\n\n/**\n * Core CRUD operations for storage.\n * All backends must implement these operations.\n */\nexport interface StorageBackend {\n\t/**\n\t * Store/update an object at the given path\n\t */\n\tput(path: string, data: Buffer, metadata: StoragePutMetadata): Promise<StorageObjectMetadata>;\n\n\t/**\n\t * Retrieve an object by path\n\t */\n\tget(path: string): Promise<StorageGetResult | null>;\n\n\t/**\n\t * Delete an object by path\n\t */\n\tdelete(path: string): Promise<boolean>;\n}\n\n/**\n * Search capability interface.\n * Optional for backends that don't support indexing (e.g., simple S3-only backends).\n */\nexport interface SearchableStorage {\n\t/**\n\t * Search for objects matching criteria\n\t */\n\tsearch(criteria: SearchCriteria, pagination: SearchPagination): Promise<SearchResults>;\n}\n\n/**\n * Quota management with upload reservations.\n * Handles quota tracking and reservation-based upload flow.\n */\nexport interface QuotaManagedStorage {\n\t/**\n\t * Get quota status for a user.\n\t * Includes both actual usage and pending reservations.\n\t */\n\tgetQuotaStatus(owner: string): Promise<QuotaStatus>;\n\n\t/**\n\t * Get per-user quota limits.\n\t * Return null to use global defaults.\n\t * @param owner - Owner's identifier\n\t */\n\tgetQuotaLimits?(owner: string): Promise<QuotaLimits | null>;\n\n\t/**\n\t * Reserve quota for an upcoming upload.\n\t *\n\t * @param owner - Owner's identifier\n\t * @param path - Target path for the upload\n\t * @param size - Size in bytes to reserve\n\t * @param options.ttlMs - Optional TTL in milliseconds for the reservation\n\t * @param options.quotaLimits - Optional quota limits to enforce (overrides backend defaults)\n\t *\n\t * @returns Reservation that must be committed or released\n\t *\n\t * @throws QuotaExceeded if reservation would exceed limits\n\t */\n\treserveUpload(owner: string, path: string, size: number, options?: {\n\t\tttlMs?: number;\n\t\tquotaLimits?: Pick<QuotaConfig, 'maxObjectsPerUser' | 'maxStoragePerUser'>;\n\t}): Promise<UploadReservation>;\n\n\t/**\n\t * Commit a reservation after successful upload.\n\t * Call after put() succeeds to finalize the quota usage.\n\t * @param reservationId - ID of the reservation to commit\n\t */\n\tcommitUpload(reservationId: string): Promise<void>;\n\n\t/**\n\t * Release a reservation (upload failed or cancelled).\n\t * Frees the reserved quota.\n\t * @param reservationId - ID of the reservation to release\n\t */\n\treleaseUpload(reservationId: string): Promise<void>;\n}\n\n/**\n * Full storage backend combining all capabilities.\n * Use this type when a backend supports CRUD, search, and quota management.\n */\nexport type FullStorageBackend = StorageBackend & SearchableStorage & QuotaManagedStorage;\n\n// #endregion\n\n// #region Path Policy\n\n/**\n * Generic interface for path policies.\n * Each implementation defines its own parsed type and access control logic.\n * Storage Anchors are free to implement whatever pathname structure they wish.\n */\nexport interface PathPolicy<TPathInfo> {\n\t/**\n\t * Parse a path into its components.\n\t * @returns TPathInfo if valid, null otherwise\n\t */\n\tparse(path: string): TPathInfo | null;\n\n\t/**\n\t * Validate a path and return its components.\n\t * @throws Errors.InvalidPath if the path is invalid\n\t */\n\tvalidate(path: string): TPathInfo;\n\n\t/**\n\t * Check if a path is valid.\n\t */\n\tisValid(path: string): boolean;\n\n\t/**\n\t * Check if the account has access to perform the operation on the parsed path.\n\t * @returns true if access is allowed, false otherwise\n\t */\n\tcheckAccess(account: KeetaNetAccount, parsed: TPathInfo, operation: 'get' | 'put' | 'delete' | 'search' | 'metadata'): boolean;\n\n\t/**\n\t * Get the account authorized to sign pre-signed URLs for this path.\n\t * Used for public object access verification.\n\t *\n\t * @returns The account if only that account can sign (owner-restricted), or `null` if any account can sign\n\t */\n\tgetAuthorizedSigner(parsed: TPathInfo): KeetaNetAccount | null;\n\n\t/**\n\t * Validate metadata for a path.\n\t * Called during PUT and metadata update operations.\n\t * @param parsed - The parsed path info\n\t * @param metadata - The metadata to validate\n\t * @throws Errors.InvalidMetadata if metadata violates path constraints\n\t */\n\tvalidateMetadata?(parsed: TPathInfo, metadata: StoragePutMetadata): void;\n}\n\n// #endregion\n\n// #region Container Payload Utilities\n\n/**\n * Parse the decrypted plaintext from an EncryptedContainer.\n * The payload is expected to be JSON with mimeType and base64-encoded data,\n * keeping the mimeType encrypted along with the content.\n *\n * @param plaintext - The decrypted plaintext from an EncryptedContainer\n *\n * @returns Object containing mimeType and content Buffer\n */\nexport function parseContainerPayload(plaintext: ArrayBuffer): { mimeType: string; content: Buffer } {\n\tconst payloadStr = Buffer.from(plaintext).toString('utf-8');\n\ttry {\n\t\tconst payload: unknown = JSON.parse(payloadStr);\n\t\tlet mimeType = CONTENT_TYPE_OCTET_STREAM;\n\t\tlet content: Buffer;\n\t\tif (typeof payload === 'object' && payload !== null && !Array.isArray(payload)) {\n\t\t\tconst payloadMime = 'mimeType' in payload ? payload.mimeType : undefined;\n\t\t\tconst payloadData = 'data' in payload ? payload.data : undefined;\n\t\t\tif (typeof payloadMime === 'string') {\n\t\t\t\tmimeType = payloadMime;\n\t\t\t}\n\t\t\tif (typeof payloadData === 'string') {\n\t\t\t\tcontent = arrayBufferLikeToBuffer(Buffer.from(payloadData, 'base64'));\n\t\t\t} else {\n\t\t\t\tcontent = arrayBufferLikeToBuffer(plaintext);\n\t\t\t}\n\t\t} else {\n\t\t\tcontent = arrayBufferLikeToBuffer(plaintext);\n\t\t}\n\t\treturn({ mimeType, content });\n\t} catch {\n\t\treturn({\n\t\t\tmimeType: CONTENT_TYPE_OCTET_STREAM,\n\t\t\tcontent: arrayBufferLikeToBuffer(plaintext)\n\t\t});\n\t}\n}\n\n// #endregion\n"]}
@@ -1,6 +1,8 @@
1
- import { KeetaNet } from '../../client/index.js';
2
1
  import type { PathPolicy, FullStorageBackend, StorageObjectMetadata, StoragePutMetadata, StorageGetResult, SearchCriteria, SearchPagination, SearchResults, QuotaStatus, QuotaLimits, UploadReservation } from './common.js';
2
+ import type { KeetaStorageAnchorProvider } from './client.js';
3
+ import { KeetaNet } from '../../client/index.js';
3
4
  import { Buffer } from '../../lib/utils/buffer.js';
5
+ import KeetaStorageAnchorClient from './client.js';
4
6
  /**
5
7
  * Parsed path for the test path policy: /user/<pubkey>/<relativePath>
6
8
  */
@@ -67,4 +69,16 @@ export declare class MemoryStorageBackend implements FullStorageBackend {
67
69
  clear(): void;
68
70
  get size(): number;
69
71
  }
72
+ export type Account = InstanceType<typeof KeetaNet.lib.Account>;
73
+ export declare function randomSeed(): string | ArrayBuffer;
74
+ export interface StorageProviderTestContext {
75
+ provider: KeetaStorageAnchorProvider;
76
+ account: Account;
77
+ storageClient: KeetaStorageAnchorClient;
78
+ }
79
+ /**
80
+ * Shared test harness that stands up a storage server, resolves a provider,
81
+ * and passes the provider context to the test function.
82
+ */
83
+ export declare function withStorageProvider(seed: string | ArrayBuffer, testFunction: (ctx: StorageProviderTestContext) => Promise<void>): Promise<void>;
70
84
  //# sourceMappingURL=test-utils.d.ts.map