@arkiv-network/sdk 0.1.3-dev.0 → 0.2.0

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.
package/LICENSE.md ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Arkiv Network
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # arkivjs
2
2
 
3
- A TypeScript client library for GolemDB/Arkiv blockchain interactions.
3
+ A TypeScript client library for Arkiv's blockchains interactions.
4
4
 
5
5
  ## Installation
6
6
 
package/dist/index.cjs CHANGED
@@ -54,9 +54,10 @@ const arkivABI = (0, viem.parseAbi)([
54
54
  "event ArkivEntityUpdated(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)",
55
55
  "event ArkivEntityExpired(uint256 indexed entityKey, address indexed ownerAddress)",
56
56
  "event ArkivEntityDeleted(uint256 indexed entityKey, address indexed ownerAddress)",
57
- "event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)"
57
+ "event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)",
58
+ "event ArkivEntityOwnerChanged(uint256 indexed entityKey, address indexed oldOwnerAddress, address indexed newOwnerAddress)"
58
59
  ]);
59
- async function subscribeEntityEvents(client, { onError, onEntityCreated, onEntityUpdated, onEntityDeleted, onEntityExpired, onEntityExpiresInExtended }, pollingInterval, fromBlock) {
60
+ async function subscribeEntityEvents(client, { onError, onEntityCreated, onEntityUpdated, onEntityDeleted, onEntityExpired, onEntityExpiresInExtended, onEntityOwnerChanged }, pollingInterval, fromBlock) {
60
61
  return client.watchEvent({
61
62
  pollingInterval: pollingInterval ?? 1e3,
62
63
  fromBlock: fromBlock ?? 0n,
@@ -109,6 +110,13 @@ async function subscribeEntityEvents(client, { onError, onEntityCreated, onEntit
109
110
  owner: event.args.ownerAddress
110
111
  });
111
112
  break;
113
+ case "ArkivEntityOwnerChanged":
114
+ onEntityOwnerChanged?.({
115
+ entityKey: (0, viem.toHex)(event.args.entityKey, { size: 32 }),
116
+ oldOwner: event.args.oldOwnerAddress,
117
+ newOwner: event.args.newOwnerAddress
118
+ });
119
+ break;
112
120
  default:
113
121
  console.warn("unknown event from subscribeEntityEvents", event);
114
122
  break;
@@ -169,7 +177,7 @@ function createPublicClient(parameters) {
169
177
  ...parameters,
170
178
  key,
171
179
  name
172
- }).extend(publicArkivActions).extend(viem.publicActions);
180
+ }).extend(viem.publicActions).extend(publicArkivActions);
173
181
  }
174
182
 
175
183
  //#endregion
@@ -331,9 +339,11 @@ function parseReceipt(receipt, params) {
331
339
  const updatedEntities = [];
332
340
  const deletedEntities = [];
333
341
  const extendedEntities = [];
342
+ const ownershipChanges = [];
334
343
  const totalCreates = params.creates?.length ?? 0;
335
344
  const totalUpdates = params.updates?.length ?? 0;
336
345
  const totalDeletes = params.deletes?.length ?? 0;
346
+ const totalExtensions = params.extensions?.length ?? 0;
337
347
  for (let i = 0; i < receipt.logs.length; i++) {
338
348
  const log = receipt.logs[i];
339
349
  if (i % 2 === 1) continue;
@@ -341,13 +351,15 @@ function parseReceipt(receipt, params) {
341
351
  if (index < totalCreates) createdEntities.push(log.topics[1]);
342
352
  else if (index < totalCreates + totalDeletes) deletedEntities.push(log.topics[1]);
343
353
  else if (index < totalCreates + totalUpdates + totalDeletes) updatedEntities.push(log.topics[1]);
344
- else extendedEntities.push(log.topics[1]);
354
+ else if (index < totalCreates + totalUpdates + totalDeletes + totalExtensions) extendedEntities.push(log.topics[1]);
355
+ else ownershipChanges.push(log.topics[1]);
345
356
  }
346
357
  return {
347
358
  createdEntities,
348
359
  updatedEntities,
349
360
  deletedEntities,
350
- extendedEntities
361
+ extendedEntities,
362
+ ownershipChanges
351
363
  };
352
364
  }
353
365
  async function mutateEntities(client, data, txParams) {
@@ -356,16 +368,18 @@ async function mutateEntities(client, data, txParams) {
356
368
  creates: data.creates ?? [],
357
369
  updates: data.updates ?? [],
358
370
  deletes: data.deletes ?? [],
359
- extensions: data.extensions ?? []
371
+ extensions: data.extensions ?? [],
372
+ ownershipChanges: data.ownershipChanges ?? []
360
373
  }), txParams);
361
374
  console.debug("Receipt from mutateEntities", receipt);
362
- const { createdEntities, updatedEntities, deletedEntities, extendedEntities } = parseReceipt(receipt, data);
375
+ const { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges } = parseReceipt(receipt, data);
363
376
  return {
364
377
  txHash: receipt.transactionHash,
365
378
  createdEntities,
366
379
  updatedEntities,
367
380
  deletedEntities,
368
- extendedEntities
381
+ extendedEntities,
382
+ ownershipChanges
369
383
  };
370
384
  }
371
385
 
@@ -421,7 +435,7 @@ function createWalletClient(parameters) {
421
435
  ...parameters,
422
436
  key,
423
437
  name
424
- }).extend(viem.walletActions).extend(viem.publicActions).extend(walletArkivActions).extend(publicArkivActions);
438
+ }).extend(viem.publicActions).extend(viem.walletActions).extend(walletArkivActions);
425
439
  }
426
440
 
427
441
  //#endregion
package/dist/index.d.cts CHANGED
@@ -293,6 +293,7 @@ type MutateEntitiesParameters = {
293
293
  updates?: UpdateEntityParameters[];
294
294
  deletes?: DeleteEntityParameters[];
295
295
  extensions?: ExtendEntityParameters[];
296
+ ownershipChanges?: ChangeOwnershipParameters[];
296
297
  };
297
298
  /**
298
299
  * Return type for the mutateEntities function.
@@ -301,6 +302,7 @@ type MutateEntitiesParameters = {
301
302
  * - updatedEntities: The keys of the updated entities.
302
303
  * - deletedEntities: The keys of the deleted entities.
303
304
  * - extendedEntities: The keys of the extended entities.
305
+ * - ownershipChanges: The keys of the ownership changes.
304
306
  */
305
307
  type MutateEntitiesReturnType = {
306
308
  txHash: string;
@@ -308,10 +310,11 @@ type MutateEntitiesReturnType = {
308
310
  updatedEntities: Hex$1[];
309
311
  deletedEntities: Hex$1[];
310
312
  extendedEntities: Hex$1[];
313
+ ownershipChanges: Hex$1[];
311
314
  };
312
315
  //#endregion
313
316
  //#region src/clients/decorators/arkivWallet.d.ts
314
- type WalletArkivActions<transport extends Transport$1 = Transport$1, chain extends Chain$1 | undefined = Chain$1 | undefined, account extends Account$1 | undefined = Account$1 | undefined> = PublicArkivActions<transport, chain, account> & Pick<WalletActions<chain, account>, "sendTransaction" | "sendTransactionSync" | "sendRawTransaction" | "sendRawTransactionSync" | "signMessage" | "signTransaction"> & {
317
+ type WalletArkivActions<transport extends Transport$1 = Transport$1, chain extends Chain$1 | undefined = Chain$1 | undefined, account extends Account$1 | undefined = Account$1 | undefined> = Pick<PublicActions<transport, chain, account>, "waitForTransactionReceipt"> & Pick<WalletActions<chain, account>, "addChain" | "sendTransaction" | "sendTransactionSync" | "sendRawTransaction" | "sendRawTransactionSync" | "signMessage" | "signTransaction"> & {
315
318
  /**
316
319
  * Returns the entity with the given key.
317
320
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/events.ts","../src/clients/decorators/arkivPublic.ts","../src/clients/createPublicClient.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/updateEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/clients/decorators/arkivWallet.ts","../src/clients/createWalletClient.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/events.ts","../src/clients/decorators/arkivPublic.ts","../src/clients/createPublicClient.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/updateEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/clients/decorators/arkivWallet.ts","../src/clients/createWalletClient.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -293,6 +293,7 @@ type MutateEntitiesParameters = {
293
293
  updates?: UpdateEntityParameters[];
294
294
  deletes?: DeleteEntityParameters[];
295
295
  extensions?: ExtendEntityParameters[];
296
+ ownershipChanges?: ChangeOwnershipParameters[];
296
297
  };
297
298
  /**
298
299
  * Return type for the mutateEntities function.
@@ -301,6 +302,7 @@ type MutateEntitiesParameters = {
301
302
  * - updatedEntities: The keys of the updated entities.
302
303
  * - deletedEntities: The keys of the deleted entities.
303
304
  * - extendedEntities: The keys of the extended entities.
305
+ * - ownershipChanges: The keys of the ownership changes.
304
306
  */
305
307
  type MutateEntitiesReturnType = {
306
308
  txHash: string;
@@ -308,10 +310,11 @@ type MutateEntitiesReturnType = {
308
310
  updatedEntities: Hex$1[];
309
311
  deletedEntities: Hex$1[];
310
312
  extendedEntities: Hex$1[];
313
+ ownershipChanges: Hex$1[];
311
314
  };
312
315
  //#endregion
313
316
  //#region src/clients/decorators/arkivWallet.d.ts
314
- type WalletArkivActions<transport extends Transport$1 = Transport$1, chain extends Chain$1 | undefined = Chain$1 | undefined, account extends Account$1 | undefined = Account$1 | undefined> = PublicArkivActions<transport, chain, account> & Pick<WalletActions<chain, account>, "sendTransaction" | "sendTransactionSync" | "sendRawTransaction" | "sendRawTransactionSync" | "signMessage" | "signTransaction"> & {
317
+ type WalletArkivActions<transport extends Transport$1 = Transport$1, chain extends Chain$1 | undefined = Chain$1 | undefined, account extends Account$1 | undefined = Account$1 | undefined> = Pick<PublicActions<transport, chain, account>, "waitForTransactionReceipt"> & Pick<WalletActions<chain, account>, "addChain" | "sendTransaction" | "sendTransactionSync" | "sendRawTransaction" | "sendRawTransactionSync" | "signMessage" | "signTransaction"> & {
315
318
  /**
316
319
  * Returns the entity with the given key.
317
320
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/events.ts","../src/clients/decorators/arkivPublic.ts","../src/clients/createPublicClient.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/updateEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/clients/decorators/arkivWallet.ts","../src/clients/createWalletClient.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/events.ts","../src/clients/decorators/arkivPublic.ts","../src/clients/createPublicClient.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/updateEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/clients/decorators/arkivWallet.ts","../src/clients/createWalletClient.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -54,9 +54,10 @@ const arkivABI = parseAbi([
54
54
  "event ArkivEntityUpdated(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)",
55
55
  "event ArkivEntityExpired(uint256 indexed entityKey, address indexed ownerAddress)",
56
56
  "event ArkivEntityDeleted(uint256 indexed entityKey, address indexed ownerAddress)",
57
- "event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)"
57
+ "event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)",
58
+ "event ArkivEntityOwnerChanged(uint256 indexed entityKey, address indexed oldOwnerAddress, address indexed newOwnerAddress)"
58
59
  ]);
59
- async function subscribeEntityEvents(client, { onError, onEntityCreated, onEntityUpdated, onEntityDeleted, onEntityExpired, onEntityExpiresInExtended }, pollingInterval, fromBlock) {
60
+ async function subscribeEntityEvents(client, { onError, onEntityCreated, onEntityUpdated, onEntityDeleted, onEntityExpired, onEntityExpiresInExtended, onEntityOwnerChanged }, pollingInterval, fromBlock) {
60
61
  return client.watchEvent({
61
62
  pollingInterval: pollingInterval ?? 1e3,
62
63
  fromBlock: fromBlock ?? 0n,
@@ -109,6 +110,13 @@ async function subscribeEntityEvents(client, { onError, onEntityCreated, onEntit
109
110
  owner: event.args.ownerAddress
110
111
  });
111
112
  break;
113
+ case "ArkivEntityOwnerChanged":
114
+ onEntityOwnerChanged?.({
115
+ entityKey: toHex$1(event.args.entityKey, { size: 32 }),
116
+ oldOwner: event.args.oldOwnerAddress,
117
+ newOwner: event.args.newOwnerAddress
118
+ });
119
+ break;
112
120
  default:
113
121
  console.warn("unknown event from subscribeEntityEvents", event);
114
122
  break;
@@ -169,7 +177,7 @@ function createPublicClient(parameters) {
169
177
  ...parameters,
170
178
  key,
171
179
  name
172
- }).extend(publicArkivActions).extend(publicActions);
180
+ }).extend(publicActions).extend(publicArkivActions);
173
181
  }
174
182
 
175
183
  //#endregion
@@ -331,9 +339,11 @@ function parseReceipt(receipt, params) {
331
339
  const updatedEntities = [];
332
340
  const deletedEntities = [];
333
341
  const extendedEntities = [];
342
+ const ownershipChanges = [];
334
343
  const totalCreates = params.creates?.length ?? 0;
335
344
  const totalUpdates = params.updates?.length ?? 0;
336
345
  const totalDeletes = params.deletes?.length ?? 0;
346
+ const totalExtensions = params.extensions?.length ?? 0;
337
347
  for (let i = 0; i < receipt.logs.length; i++) {
338
348
  const log = receipt.logs[i];
339
349
  if (i % 2 === 1) continue;
@@ -341,13 +351,15 @@ function parseReceipt(receipt, params) {
341
351
  if (index < totalCreates) createdEntities.push(log.topics[1]);
342
352
  else if (index < totalCreates + totalDeletes) deletedEntities.push(log.topics[1]);
343
353
  else if (index < totalCreates + totalUpdates + totalDeletes) updatedEntities.push(log.topics[1]);
344
- else extendedEntities.push(log.topics[1]);
354
+ else if (index < totalCreates + totalUpdates + totalDeletes + totalExtensions) extendedEntities.push(log.topics[1]);
355
+ else ownershipChanges.push(log.topics[1]);
345
356
  }
346
357
  return {
347
358
  createdEntities,
348
359
  updatedEntities,
349
360
  deletedEntities,
350
- extendedEntities
361
+ extendedEntities,
362
+ ownershipChanges
351
363
  };
352
364
  }
353
365
  async function mutateEntities(client, data, txParams) {
@@ -356,16 +368,18 @@ async function mutateEntities(client, data, txParams) {
356
368
  creates: data.creates ?? [],
357
369
  updates: data.updates ?? [],
358
370
  deletes: data.deletes ?? [],
359
- extensions: data.extensions ?? []
371
+ extensions: data.extensions ?? [],
372
+ ownershipChanges: data.ownershipChanges ?? []
360
373
  }), txParams);
361
374
  console.debug("Receipt from mutateEntities", receipt);
362
- const { createdEntities, updatedEntities, deletedEntities, extendedEntities } = parseReceipt(receipt, data);
375
+ const { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges } = parseReceipt(receipt, data);
363
376
  return {
364
377
  txHash: receipt.transactionHash,
365
378
  createdEntities,
366
379
  updatedEntities,
367
380
  deletedEntities,
368
- extendedEntities
381
+ extendedEntities,
382
+ ownershipChanges
369
383
  };
370
384
  }
371
385
 
@@ -421,7 +435,7 @@ function createWalletClient(parameters) {
421
435
  ...parameters,
422
436
  key,
423
437
  name
424
- }).extend(walletActions).extend(publicActions).extend(walletArkivActions).extend(publicArkivActions);
438
+ }).extend(publicActions).extend(walletActions).extend(walletArkivActions);
425
439
  }
426
440
 
427
441
  //#endregion
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["query","toHex","zlib: typeof import(\"zlib\") | null","brotli: BrotliWasmType | null","toHex","toRlp","toBytes","createdEntities: Hex[]","updatedEntities: Hex[]","deletedEntities: Hex[]","extendedEntities: Hex[]"],"sources":["../src/actions/public/getBlockTiming.ts","../src/actions/public/getEntity.ts","../src/actions/public/getEntityCount.ts","../src/actions/public/query.ts","../src/actions/public/subscribeEntityEvents.ts","../src/clients/decorators/arkivPublic.ts","../src/clients/createPublicClient.ts","../src/utils/compression.ts","../src/utils/arkivTransactions.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/actions/wallet/updateEntity.ts","../src/clients/decorators/arkivWallet.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { ArkivClient } from \"../../clients/baseClient\"\n\nexport type GetBlockTimingReturnType = {\n currentBlock: bigint\n currentBlockTime: number\n blockDuration: number\n}\n\nexport async function getBlockTiming(client: ArkivClient) {\n const blockTiming = await client.request({\n method: \"arkiv_getBlockTiming\",\n params: [],\n })\n console.debug(\"Block timing\", blockTiming)\n return {\n currentBlock: blockTiming.current_block,\n currentBlockTime: blockTiming.current_block_time,\n blockDuration: blockTiming.duration,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport { NoEntityFoundError } from \"../../query/errors\"\nimport { entityFromRpcResult } from \"../../utils/entities\"\n\nexport async function getEntity(client: ArkivClient, key: Hex) {\n const result = await client.request({\n method: \"arkiv_query\",\n params: [`$key = ${key}`],\n })\n console.debug(\"GetEntity result\", result)\n\n if (!result.data) {\n throw new NoEntityFoundError()\n }\n\n return entityFromRpcResult(result.data[0])\n}\n","import type { ArkivClient } from \"../../clients/baseClient\"\n\nexport async function getEntityCount(client: ArkivClient) {\n const count = await client.request({\n method: \"arkiv_getEntityCount\",\n params: [],\n })\n\n return count\n}\n","import type { ArkivClient } from \"../../clients/baseClient\"\nimport { entityFromRpcResult } from \"../../utils/entities\"\n\nexport async function query(client: ArkivClient, query: string) {\n const result = await client.request({\n method: \"arkiv_query\",\n params: [query],\n })\n\n const entities = await Promise.all(result.data.map((entity) => entityFromRpcResult(entity)))\n\n return entities\n}\n","import { decodeEventLog, parseAbi, toHex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { PublicArkivClient } from \"../../clients/createPublicClient\"\nimport type {\n OnEntityCreatedEvent,\n OnEntityDeletedEvent,\n OnEntityExpiredEvent,\n OnEntityExpiresInExtendedEvent,\n OnEntityUpdatedEvent,\n} from \"../../types/events\"\n\nexport const arkivABI = parseAbi([\n \"event ArkivEntityCreated(uint256 indexed entityKey, address indexed ownerAddress, uint256 expirationBlock, uint256 cost)\",\n \"event ArkivEntityUpdated(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)\",\n \"event ArkivEntityExpired(uint256 indexed entityKey, address indexed ownerAddress)\",\n \"event ArkivEntityDeleted(uint256 indexed entityKey, address indexed ownerAddress)\",\n \"event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)\",\n])\n\nexport async function subscribeEntityEvents(\n client: ArkivClient,\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n }: {\n onError: ((error: Error) => void) | undefined\n onEntityCreated?: ((event: OnEntityCreatedEvent) => void) | undefined\n onEntityUpdated?: ((event: OnEntityUpdatedEvent) => void) | undefined\n onEntityDeleted?: ((event: OnEntityDeletedEvent) => void) | undefined\n onEntityExpired?: ((event: OnEntityExpiredEvent) => void) | undefined\n onEntityExpiresInExtended?: ((event: OnEntityExpiresInExtendedEvent) => void) | undefined\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n): Promise<() => void> {\n const unsubscribe = (client as PublicArkivClient).watchEvent({\n pollingInterval: pollingInterval ?? 1000,\n fromBlock: fromBlock ?? 0n,\n events: arkivABI,\n onLogs: (logs) => {\n console.debug(\"logs from subscribeEntityEvents\", logs)\n for (const log of logs) {\n const event = decodeEventLog({\n abi: arkivABI,\n topics: log.topics,\n data: log.data,\n })\n console.debug(\"event from subscribeEntityEvents\", event)\n switch (event.eventName) {\n case \"ArkivEntityCreated\":\n onEntityCreated?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n expirationBlock: Number(event.args.expirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityUpdated\":\n onEntityUpdated?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n oldExpirationBlock: Number(event.args.oldExpirationBlock),\n newExpirationBlock: Number(event.args.newExpirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityDeleted\":\n onEntityDeleted?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n })\n break\n case \"ArkivEntityBTLExtended\":\n onEntityExpiresInExtended?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n oldExpirationBlock: Number(event.args.oldExpirationBlock),\n newExpirationBlock: Number(event.args.newExpirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityExpired\":\n onEntityExpired?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n })\n break\n default:\n console.warn(\"unknown event from subscribeEntityEvents\", event)\n break\n }\n }\n },\n onError: (error) => {\n console.error(\"error from subscribeEntityEvents\", error)\n onError?.(error)\n },\n })\n\n return unsubscribe\n}\n","import type { Account, Chain, Client, Hex, PublicActions, Transport } from \"viem\"\nimport { getBlockTiming } from \"../../actions/public/getBlockTiming\"\nimport { getEntity } from \"../../actions/public/getEntity\"\nimport { getEntityCount } from \"../../actions/public/getEntityCount\"\nimport { query } from \"../../actions/public/query\"\nimport { subscribeEntityEvents } from \"../../actions/public/subscribeEntityEvents\"\nimport { QueryBuilder } from \"../../query/queryBuilder\"\nimport type { Entity } from \"../../types/entity\"\nimport type {\n OnEntityCreatedEvent,\n OnEntityDeletedEvent,\n OnEntityExpiredEvent,\n OnEntityExpiresInExtendedEvent,\n OnEntityUpdatedEvent,\n} from \"../../types/events\"\n\nexport type PublicArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<\n PublicActions<transport, chain, account>,\n | \"getBalance\"\n | \"getBlock\"\n | \"getBlockNumber\"\n | \"getChainId\"\n | \"getLogs\"\n | \"getTransaction\"\n | \"getTransactionCount\"\n | \"getTransactionReceipt\"\n | \"waitForTransactionReceipt\"\n | \"watchEvent\"\n> & {\n /**\n * Returns the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/public/getEntity\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const entity = await client.getEntity(\"0x123\")\n * // {\n * // key: \"0x123\",\n * // value: \"0x123\",\n * // }\n */\n getEntity: (key: Hex) => Promise<Entity>\n\n /**\n * Returns a QueryBuilder instance for building and executing queries.\n * The QueryBuilder object follows the Builder pattern, allowing you to chain methods to build a query and then execute it.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/public/query\n *\n * @returns A QueryBuilder instance for building and executing queries. {@link QueryBuilder}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const query = client.buildQuery()\n * const entities = await query.where(\"key\", \"=\", \"value\").ownedBy(\"0x123\").fetch()\n *\n */\n buildQuery: () => QueryBuilder\n\n /**\n * Returns a QueryResult instance for fetching the results of a raw query.\n * @returns A QueryResult instance for fetching the results of a raw query. {@link QueryResult}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const queryResult = client.query('key = value && $owner = 0x123')\n *\n */\n query: (query: string) => Promise<Entity[]>\n\n /**\n * Returns the number of entities in the DBChain.\n * @returns The number of entities in the DBChain. {@link number}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const entityCount = await client.getEntityCount()\n * // entityCount = 0\n */\n getEntityCount: () => Promise<number>\n\n /**\n * Returns the current block timing.\n * @returns The current block timing. {@link GetBlockTimingReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const blockTiming = await client.getBlockTiming()\n * // {\n * // currentBlock: 10n, // block number\n * // currentBlockTime: 1234567890, // block timestamp\n * // blockDuration: 2, // in seconds\n * // }\n */\n getBlockTiming: () => Promise<{\n currentBlock: bigint\n currentBlockTime: number\n blockDuration: number\n }>\n\n subscribeEntityEvents: (\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpiresInExtended,\n }: {\n onError?: (error: Error) => void\n onEntityCreated?: (event: OnEntityCreatedEvent) => void\n onEntityUpdated?: (event: OnEntityUpdatedEvent) => void\n onEntityDeleted?: (event: OnEntityDeletedEvent) => void\n onEntityExpired?: (event: OnEntityExpiredEvent) => void\n onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n ) => Promise<() => void>\n}\n\nexport function publicArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>) {\n return {\n getEntity: (key: Hex) => getEntity(client, key),\n query: (rawQuery: string) => query(client, rawQuery),\n buildQuery: () => new QueryBuilder(client),\n getBlockTiming: () => getBlockTiming(client),\n getEntityCount: () => getEntityCount(client),\n subscribeEntityEvents: (\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n }: {\n onError?: (error: Error) => void\n onEntityCreated?: (event: OnEntityCreatedEvent) => void\n onEntityUpdated?: (event: OnEntityUpdatedEvent) => void\n onEntityDeleted?: (event: OnEntityDeletedEvent) => void\n onEntityExpired?: (event: OnEntityExpiredEvent) => void\n onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n ) =>\n subscribeEntityEvents(\n client,\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n },\n pollingInterval,\n fromBlock,\n ),\n }\n}\n","import type {\n Account,\n Address,\n Chain,\n Client,\n ParseAccount,\n Prettify,\n PublicClientConfig,\n RpcSchema,\n Transport,\n} from \"viem\"\nimport { createClient, publicActions } from \"viem\"\nimport type { ArkivRpcSchema } from \"../types/rpcSchema\"\nimport { type PublicArkivActions, publicArkivActions } from \"./decorators/arkivPublic\"\n\nexport type PublicArkivClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n> = Prettify<\n Client<transport, chain, accountOrAddress, rpcSchema, PublicArkivActions<transport, chain>>\n>\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/clients/public\n *\n * A Public Client is an interface to \"public\" [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/), [Arkiv JSON-RPC API](https://docs.golemdb.io/json-rpc/), and [Kaolin JSON-RPC API](https://kaolin.holesky.golemdb.io/rpc) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Arkiv Public Client. {@link PublicArkivClient}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\nexport function createPublicClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n>(\n parameters: PublicClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): PublicArkivClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = \"public\", name = \"Public Client\" } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n })\n\n return client.extend(publicArkivActions).extend(publicActions) as unknown as PublicArkivClient<\n transport,\n chain,\n ParseAccount<accountOrAddress>,\n rpcSchema\n >\n}\n","// src/utils/compression.ts\n\nimport type { BrotliWasmType } from \"brotli-wasm\"\n\n// Detect if we're in Node.js environment\nconst isNode = typeof process !== \"undefined\" && process.versions?.node != null\n\nlet zlib: typeof import(\"zlib\") | null = null\nlet brotli: BrotliWasmType | null = null\n\n// Lazy load zlib (Node.js only)\nasync function getZlib(): Promise<typeof import(\"zlib\") | null> {\n if (!isNode) return null\n\n if (!zlib) {\n try {\n zlib = await import(\"zlib\")\n } catch (error) {\n console.error(\"Error importing zlib\", error)\n return null\n }\n }\n return zlib\n}\n\n// Lazy load brotli-wasm (browser/fallback)\nasync function getBrotli(): Promise<BrotliWasmType | null> {\n if (brotli) return brotli\n\n try {\n const brotliModule = await import(\"brotli-wasm\")\n brotli = brotliModule.default || brotliModule\n } catch (error) {\n console.error(\"Error importing brotli-wasm\", error)\n return null\n }\n\n return brotli\n}\n\nexport async function compress(data: Uint8Array): Promise<Uint8Array> {\n console.debug(`Compressing data (size: ${data.length})`)\n\n // Try Node.js zlib first (if available)\n if (isNode) {\n const zlibModule = await getZlib()\n if (zlibModule) {\n try {\n // zlib.brotliCompress expects Buffer, returns Buffer\n const buffer = Buffer.from(data)\n const compressed = zlibModule.brotliCompressSync(buffer)\n const result = new Uint8Array(compressed)\n console.debug(`Brotli compressed with zlib (size: ${result.length})`)\n return result\n } catch (error) {\n console.warn(\"zlib compression failed, falling back to brotli-wasm\", error)\n }\n }\n }\n\n // Fallback to brotli-wasm (browser or if zlib fails)\n const brotliInstance = await getBrotli()\n if (!brotliInstance) {\n console.warn(\"Brotli instance not found, not compressing data\")\n return data\n }\n\n const brotliCompressed = brotliInstance.compress(data)\n console.debug(`Brotli compressed with wasm (size: ${brotliCompressed.length})`)\n return brotliCompressed\n}\n\nexport async function decompress(data: Uint8Array): Promise<Uint8Array> {\n // Try Node.js zlib first (if available)\n if (isNode) {\n const zlibModule = await getZlib()\n if (zlibModule) {\n try {\n // zlib.brotliDecompress expects Buffer, returns Buffer\n const buffer = Buffer.from(data)\n const decompressed = zlibModule.brotliDecompressSync(buffer)\n const result = new Uint8Array(decompressed)\n console.debug(`Brotli decompressed with zlib (size: ${result.length})`)\n return result\n } catch (error) {\n console.warn(\"zlib decompression failed, falling back to brotli-wasm\", error)\n }\n }\n }\n\n // Fallback to brotli-wasm (browser or if zlib fails)\n const brotliInstance = await getBrotli()\n if (!brotliInstance) {\n console.warn(\"Brotli instance not found, not decompressing data\")\n return data\n }\n\n return brotliInstance.decompress(data)\n}\n","import { type Hex, toBytes, toHex, toRlp } from \"viem\"\nimport type { ChangeOwnershipParameters } from \"../actions/wallet/changeOwnership\"\nimport type { CreateEntityParameters } from \"../actions/wallet/createEntity\"\nimport type { DeleteEntityParameters } from \"../actions/wallet/deleteEntity\"\nimport type { ExtendEntityParameters } from \"../actions/wallet/extendEntity\"\nimport type { UpdateEntityParameters } from \"../actions/wallet/updateEntity\"\nimport type { ArkivClient } from \"../clients/baseClient\"\nimport type { WalletArkivClient } from \"../clients/createWalletClient\"\nimport { ARKIV_ADDRESS, BLOCK_TIME } from \"../consts\"\nimport type { TxParams } from \"../types\"\nimport { compress } from \"./compression\"\n\nexport function opsToTxData({\n creates,\n updates,\n deletes,\n extensions,\n ownershipChanges,\n}: {\n creates?: CreateEntityParameters[]\n updates?: UpdateEntityParameters[]\n deletes?: DeleteEntityParameters[]\n extensions?: ExtendEntityParameters[]\n ownershipChanges?: ChangeOwnershipParameters[]\n}) {\n function formatAttributes<T extends string | number | bigint | boolean>(attribute: {\n key: string\n value: T\n }): [Hex, Hex] {\n return [toHex(attribute.key), toHex(attribute.value)]\n }\n\n const payload = [\n //creates\n (creates ?? []).map((item) => [\n toHex(item.expiresIn / BLOCK_TIME),\n toHex(item.contentType),\n toHex(item.payload),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"string\")\n .map(formatAttributes),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"number\")\n .map(formatAttributes),\n ]),\n //updates\n (updates ?? []).map((item) => [\n item.entityKey,\n toHex(item.contentType),\n toHex(item.expiresIn / BLOCK_TIME),\n toHex(item.payload),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"string\")\n .map(formatAttributes),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"number\")\n .map(formatAttributes),\n ]),\n //deletes\n (deletes ?? []).map((item) => item.entityKey),\n //extends\n (extensions ?? []).map((item) => [item.entityKey, toHex(item.expiresIn / BLOCK_TIME)]),\n //ownershipChanges TODO\n (ownershipChanges ?? []).map((item) => [item.entityKey, item.newOwner]),\n ]\n\n console.debug(\"txData to send as RLP\", payload, payload.length)\n\n return toRlp(payload)\n}\n\nexport async function sendArkivTransaction(client: ArkivClient, data: Hex, txParams?: TxParams) {\n if (!client.account) throw new Error(\"Account required\")\n const walletClient = client as WalletArkivClient\n\n console.debug(\"Sending transaction\", {\n account: client.account,\n chain: client.chain,\n to: ARKIV_ADDRESS,\n value: 0n,\n data,\n ...txParams,\n })\n\n const compressed = await compress(toBytes(data))\n const txHash = await walletClient.sendTransaction({\n account: client.account,\n chain: client.chain,\n to: ARKIV_ADDRESS,\n value: 0n,\n data: toHex(compressed),\n ...txParams,\n })\n\n const receipt = await walletClient.waitForTransactionReceipt({ hash: txHash })\n\n console.debug(\"Tx receipt\", receipt)\n\n return receipt\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the deleteEntity function.\n * - entityKey: The key of the entity to delete.\n */\nexport type ChangeOwnershipParameters = {\n entityKey: Hex\n newOwner: Hex\n}\n\n/**\n * Return type for the deleteEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type ChangeOwnershipReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function changeOwnership(\n client: ArkivClient,\n data: ChangeOwnershipParameters,\n txParams?: TxParams,\n): Promise<ChangeOwnershipReturnType> {\n console.debug(\"changeOwnership\", data)\n const txData = opsToTxData({ ownershipChanges: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from changeOwnership\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: data.entityKey,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { Attribute, MimeType, TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the createEntity function.\n * - payload: The payload of the entity.\n * - attributes: The attributes of the entity.\n * - contentType: The content type of the entity.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type CreateEntityParameters = {\n payload: Uint8Array\n attributes: Attribute[]\n contentType: MimeType\n expiresIn: number\n}\n\n/**\n * Return type for the createEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type CreateEntityReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function createEntity(\n client: ArkivClient,\n data: CreateEntityParameters,\n txParams?: TxParams,\n): Promise<CreateEntityReturnType> {\n console.debug(\"createEntity\", data)\n const txData = opsToTxData({ creates: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from createEntity\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the deleteEntity function.\n * - entityKey: The key of the entity to delete.\n */\nexport type DeleteEntityParameters = {\n entityKey: Hex\n}\n\n/**\n * Return type for the deleteEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type DeleteEntityReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function deleteEntity(\n client: ArkivClient,\n data: DeleteEntityParameters,\n txParams?: TxParams,\n): Promise<DeleteEntityReturnType> {\n console.debug(\"deleteEntity\", data)\n const txData = opsToTxData({ deletes: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from deleteEntity\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: data.entityKey,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the extendEntity function.\n * - entityKey: The key of the entity to extend.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type ExtendEntityParameters = {\n entityKey: Hex\n expiresIn: number\n}\n\n/**\n * Return type for the extendEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type ExtendEntityReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function extendEntity(\n client: ArkivClient,\n data: ExtendEntityParameters,\n txParams?: TxParams,\n): Promise<ExtendEntityReturnType> {\n console.debug(\"extendEntity\", data)\n const txData = opsToTxData({ extensions: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from extendEntity\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Hex, TransactionReceipt } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport type { CreateEntityParameters } from \"./createEntity\"\nimport type { DeleteEntityParameters } from \"./deleteEntity\"\nimport type { ExtendEntityParameters } from \"./extendEntity\"\nimport type { UpdateEntityParameters } from \"./updateEntity\"\n\n/**\n * Parameters for the mutateEntities function.\n * - creates: The creates to perform.\n * - updates: The updates to perform.\n * - deletes: The deletes to perform.\n * - extensions: The extensions to perform.\n */\nexport type MutateEntitiesParameters = {\n creates?: CreateEntityParameters[]\n updates?: UpdateEntityParameters[]\n deletes?: DeleteEntityParameters[]\n extensions?: ExtendEntityParameters[]\n}\n\nfunction parseReceipt(receipt: TransactionReceipt, params: MutateEntitiesParameters) {\n const createdEntities: Hex[] = []\n const updatedEntities: Hex[] = []\n const deletedEntities: Hex[] = []\n const extendedEntities: Hex[] = []\n const totalCreates = params.creates?.length ?? 0\n const totalUpdates = params.updates?.length ?? 0\n const totalDeletes = params.deletes?.length ?? 0\n\n // iterate over all logs and parse the event\n // each odd log is the interested ones, logs goes in order like: creates, deleted, updates, extends\n for (let i = 0; i < receipt.logs.length; i++) {\n const log = receipt.logs[i]\n if (i % 2 === 1) continue\n\n const index = i / 2\n if (index < totalCreates) {\n createdEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalDeletes) {\n deletedEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalUpdates + totalDeletes) {\n updatedEntities.push(log.topics[1] as Hex)\n } else {\n extendedEntities.push(log.topics[1] as Hex)\n }\n }\n\n return { createdEntities, updatedEntities, deletedEntities, extendedEntities }\n}\n\n/**\n * Return type for the mutateEntities function.\n * - txHash: The transaction hash.\n * - createdEntities: The keys of the created entities.\n * - updatedEntities: The keys of the updated entities.\n * - deletedEntities: The keys of the deleted entities.\n * - extendedEntities: The keys of the extended entities.\n */\nexport type MutateEntitiesReturnType = {\n txHash: string\n createdEntities: Hex[]\n updatedEntities: Hex[]\n deletedEntities: Hex[]\n extendedEntities: Hex[]\n}\nexport async function mutateEntities(\n client: ArkivClient,\n data: MutateEntitiesParameters,\n txParams?: TxParams,\n): Promise<MutateEntitiesReturnType> {\n if (!data.creates && !data.updates && !data.deletes && !data.extensions) {\n throw new Error(\"No operations to perform\")\n }\n\n const txData = opsToTxData({\n creates: data.creates ?? [],\n updates: data.updates ?? [],\n deletes: data.deletes ?? [],\n extensions: data.extensions ?? [],\n })\n\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from mutateEntities\", receipt)\n\n const { createdEntities, updatedEntities, deletedEntities, extendedEntities } = parseReceipt(\n receipt,\n data,\n )\n return {\n txHash: receipt.transactionHash,\n createdEntities,\n updatedEntities,\n deletedEntities,\n extendedEntities,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { Attribute, MimeType, TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the updateEntity function.\n * - entityKey: The key of the entity to update.\n * - payload: The payload of the entity.\n * - attributes: The attributes of the entity.\n * - contentType: The content type of the entity.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type UpdateEntityParameters = {\n entityKey: Hex\n payload: Uint8Array\n attributes: Attribute[]\n contentType: MimeType\n expiresIn: number\n}\n\n/**\n * Return type for the updateEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type UpdateEntityReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function updateEntity(\n client: ArkivClient,\n data: UpdateEntityParameters,\n txParams?: TxParams,\n): Promise<UpdateEntityReturnType> {\n console.debug(\"updateEntity\", data)\n const txData = opsToTxData({ updates: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from updateEntity\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Account, Chain, Client, Transport, WalletActions } from \"viem\"\nimport type {\n ChangeOwnershipParameters,\n ChangeOwnershipReturnType,\n} from \"../../actions/wallet/changeOwnership\"\nimport { changeOwnership } from \"../../actions/wallet/changeOwnership\"\nimport {\n type CreateEntityParameters,\n type CreateEntityReturnType,\n createEntity,\n} from \"../../actions/wallet/createEntity\"\nimport type {\n DeleteEntityParameters,\n DeleteEntityReturnType,\n} from \"../../actions/wallet/deleteEntity\"\nimport { deleteEntity } from \"../../actions/wallet/deleteEntity\"\nimport type {\n ExtendEntityParameters,\n ExtendEntityReturnType,\n} from \"../../actions/wallet/extendEntity\"\nimport { extendEntity } from \"../../actions/wallet/extendEntity\"\nimport type {\n MutateEntitiesParameters,\n MutateEntitiesReturnType,\n} from \"../../actions/wallet/mutateEntities\"\nimport { mutateEntities } from \"../../actions/wallet/mutateEntities\"\nimport type {\n UpdateEntityParameters,\n UpdateEntityReturnType,\n} from \"../../actions/wallet/updateEntity\"\nimport { updateEntity } from \"../../actions/wallet/updateEntity\"\nimport type { Entity, TxParams } from \"../../types\"\nimport type { PublicArkivActions } from \"./arkivPublic\"\n\nexport type WalletArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = PublicArkivActions<transport, chain, account> &\n Pick<\n WalletActions<chain, account>,\n | \"sendTransaction\"\n | \"sendTransactionSync\"\n | \"sendRawTransaction\"\n | \"sendRawTransactionSync\"\n | \"signMessage\"\n | \"signTransaction\"\n > & {\n /**\n * Returns the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/public/getEntity\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.createEntity({\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attributes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n createEntity: (\n data: CreateEntityParameters,\n txParams?: TxParams,\n ) => Promise<CreateEntityReturnType>\n\n /**\n * Updates the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/updateEntity\n * - JSON-RPC Methods: [`golembase_updateEntity`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_updateEntity)\n *\n * @param args - {entityKey, data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\n updateEntity: (\n data: UpdateEntityParameters,\n txParams?: TxParams,\n ) => Promise<UpdateEntityReturnType>\n\n /**\n * Deletes the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/deleteEntity\n * - JSON-RPC Methods: [`golembase_deleteEntity`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_deleteEntity)\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.deleteEntity({ entityKey: \"0x123\" })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n deleteEntity: (\n data: DeleteEntityParameters,\n txParams?: TxParams,\n ) => Promise<DeleteEntityReturnType>\n\n /**\n * Extends the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/extendEntity\n * - JSON-RPC Methods: [`golembase_extendEntity`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_extendEntity)\n *\n * @param args - {entityKey, data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.extendEntity(\"0x123\", {\n * expiresIn: 1000,\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n extendEntity: (\n data: ExtendEntityParameters,\n txParams?: TxParams,\n ) => Promise<ExtendEntityReturnType>\n\n /**\n * Changes the ownership of the entity with the given address.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/changeOwnership\n * - JSON-RPC Methods: [`golembase_ownershipChange`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_ownershipChange)\n *\n * @param args - {entityKey, newOwner}\n * @returns The entity with the given address. {@link Entity}\n */\n changeOwnership: (\n data: ChangeOwnershipParameters,\n txParams?: TxParams,\n ) => Promise<ChangeOwnershipReturnType>\n\n /**\n * Mutates the entities with the given keys.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/mutateEntities\n * - JSON-RPC Methods: [`golembase_mutateEntities`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_mutateEntities)\n *\n * @param args - {data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.mutateEntities({\n * creates: [{\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attriubutes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * }],\n * updates: [{\n * entityKey: \"0x123\",\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attributes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * }],\n * deletes: [{\n * entityKey: \"0x321\",\n * }],\n * extensions: [{\n * entityKey: \"0x1234\",\n * expiresIn: 1000,\n * }],\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n mutateEntities: (\n data: MutateEntitiesParameters,\n txParams?: TxParams,\n ) => Promise<MutateEntitiesReturnType>\n }\n\nexport function walletArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>) {\n return {\n createEntity: (data: CreateEntityParameters, txParams?: TxParams) =>\n createEntity(client, data, txParams),\n updateEntity: (data: UpdateEntityParameters, txParams?: TxParams) =>\n updateEntity(client, data, txParams),\n deleteEntity: (data: DeleteEntityParameters, txParams?: TxParams) =>\n deleteEntity(client, data, txParams),\n extendEntity: (data: ExtendEntityParameters, txParams?: TxParams) =>\n extendEntity(client, data, txParams),\n changeOwnership: (data: ChangeOwnershipParameters, txParams?: TxParams) =>\n changeOwnership(client, data, txParams),\n mutateEntities: (data: MutateEntitiesParameters, txParams?: TxParams) =>\n mutateEntities(client, data, txParams),\n }\n}\n","import type {\n Account,\n Address,\n Chain,\n Client,\n ParseAccount,\n Prettify,\n RpcSchema,\n Transport,\n WalletClientConfig,\n} from \"viem\"\nimport { createClient, publicActions, walletActions } from \"viem\"\nimport type { ArkivRpcSchema } from \"../types/rpcSchema\"\nimport { publicArkivActions } from \"./decorators/arkivPublic\"\nimport { type WalletArkivActions, walletArkivActions } from \"./decorators/arkivWallet\"\n\nexport type WalletArkivClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n> = Prettify<\n Client<transport, chain, account, rpcSchema, WalletArkivActions<transport, chain, account>>\n>\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/clients/public\n *\n * A Public Client is an interface to \"public\" [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/), [Arkiv JSON-RPC API](https://docs.golemdb.io/json-rpc/), and [Kaolin JSON-RPC API](https://kaolin.holesky.golemdb.io/rpc) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Arkiv Public Client. {@link PublicArkivClient}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\nexport function createWalletClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n>(\n parameters: WalletClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): WalletArkivClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = \"wallet\", name = \"Wallet Client\" } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n })\n\n return client\n .extend(walletActions)\n .extend(publicActions)\n .extend(walletArkivActions)\n .extend(publicArkivActions) as unknown as WalletArkivClient<\n transport,\n chain,\n ParseAccount<accountOrAddress>,\n rpcSchema\n >\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["query","toHex","zlib: typeof import(\"zlib\") | null","brotli: BrotliWasmType | null","toHex","toRlp","toBytes","createdEntities: Hex[]","updatedEntities: Hex[]","deletedEntities: Hex[]","extendedEntities: Hex[]","ownershipChanges: Hex[]"],"sources":["../src/actions/public/getBlockTiming.ts","../src/actions/public/getEntity.ts","../src/actions/public/getEntityCount.ts","../src/actions/public/query.ts","../src/actions/public/subscribeEntityEvents.ts","../src/clients/decorators/arkivPublic.ts","../src/clients/createPublicClient.ts","../src/utils/compression.ts","../src/utils/arkivTransactions.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/actions/wallet/updateEntity.ts","../src/clients/decorators/arkivWallet.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { ArkivClient } from \"../../clients/baseClient\"\n\nexport type GetBlockTimingReturnType = {\n currentBlock: bigint\n currentBlockTime: number\n blockDuration: number\n}\n\nexport async function getBlockTiming(client: ArkivClient) {\n const blockTiming = await client.request({\n method: \"arkiv_getBlockTiming\",\n params: [],\n })\n console.debug(\"Block timing\", blockTiming)\n return {\n currentBlock: blockTiming.current_block,\n currentBlockTime: blockTiming.current_block_time,\n blockDuration: blockTiming.duration,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport { NoEntityFoundError } from \"../../query/errors\"\nimport { entityFromRpcResult } from \"../../utils/entities\"\n\nexport async function getEntity(client: ArkivClient, key: Hex) {\n const result = await client.request({\n method: \"arkiv_query\",\n params: [`$key = ${key}`],\n })\n console.debug(\"GetEntity result\", result)\n\n if (!result.data) {\n throw new NoEntityFoundError()\n }\n\n return entityFromRpcResult(result.data[0])\n}\n","import type { ArkivClient } from \"../../clients/baseClient\"\n\nexport async function getEntityCount(client: ArkivClient) {\n const count = await client.request({\n method: \"arkiv_getEntityCount\",\n params: [],\n })\n\n return count\n}\n","import type { ArkivClient } from \"../../clients/baseClient\"\nimport { entityFromRpcResult } from \"../../utils/entities\"\n\nexport async function query(client: ArkivClient, query: string) {\n const result = await client.request({\n method: \"arkiv_query\",\n params: [query],\n })\n\n const entities = await Promise.all(result.data.map((entity) => entityFromRpcResult(entity)))\n\n return entities\n}\n","import { decodeEventLog, parseAbi, toHex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { PublicArkivClient } from \"../../clients/createPublicClient\"\nimport type {\n OnEntityCreatedEvent,\n OnEntityDeletedEvent,\n OnEntityExpiredEvent,\n OnEntityExpiresInExtendedEvent,\n OnEntityOwnerChangedEvent,\n OnEntityUpdatedEvent,\n} from \"../../types/events\"\n\nexport const arkivABI = parseAbi([\n \"event ArkivEntityCreated(uint256 indexed entityKey, address indexed ownerAddress, uint256 expirationBlock, uint256 cost)\",\n \"event ArkivEntityUpdated(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)\",\n \"event ArkivEntityExpired(uint256 indexed entityKey, address indexed ownerAddress)\",\n \"event ArkivEntityDeleted(uint256 indexed entityKey, address indexed ownerAddress)\",\n \"event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)\",\n \"event ArkivEntityOwnerChanged(uint256 indexed entityKey, address indexed oldOwnerAddress, address indexed newOwnerAddress)\",\n])\n\nexport async function subscribeEntityEvents(\n client: ArkivClient,\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n onEntityOwnerChanged,\n }: {\n onError: ((error: Error) => void) | undefined\n onEntityCreated?: ((event: OnEntityCreatedEvent) => void) | undefined\n onEntityUpdated?: ((event: OnEntityUpdatedEvent) => void) | undefined\n onEntityDeleted?: ((event: OnEntityDeletedEvent) => void) | undefined\n onEntityExpired?: ((event: OnEntityExpiredEvent) => void) | undefined\n onEntityExpiresInExtended?: ((event: OnEntityExpiresInExtendedEvent) => void) | undefined\n onEntityOwnerChanged?: ((event: OnEntityOwnerChangedEvent) => void) | undefined\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n): Promise<() => void> {\n const unsubscribe = (client as PublicArkivClient).watchEvent({\n pollingInterval: pollingInterval ?? 1000,\n fromBlock: fromBlock ?? 0n,\n events: arkivABI,\n onLogs: (logs) => {\n console.debug(\"logs from subscribeEntityEvents\", logs)\n for (const log of logs) {\n const event = decodeEventLog({\n abi: arkivABI,\n topics: log.topics,\n data: log.data,\n })\n console.debug(\"event from subscribeEntityEvents\", event)\n switch (event.eventName) {\n case \"ArkivEntityCreated\":\n onEntityCreated?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n expirationBlock: Number(event.args.expirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityUpdated\":\n onEntityUpdated?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n oldExpirationBlock: Number(event.args.oldExpirationBlock),\n newExpirationBlock: Number(event.args.newExpirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityDeleted\":\n onEntityDeleted?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n })\n break\n case \"ArkivEntityBTLExtended\":\n onEntityExpiresInExtended?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n oldExpirationBlock: Number(event.args.oldExpirationBlock),\n newExpirationBlock: Number(event.args.newExpirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityExpired\":\n onEntityExpired?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n })\n break\n case \"ArkivEntityOwnerChanged\":\n onEntityOwnerChanged?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n oldOwner: event.args.oldOwnerAddress,\n newOwner: event.args.newOwnerAddress,\n })\n break\n default:\n console.warn(\"unknown event from subscribeEntityEvents\", event)\n break\n }\n }\n },\n onError: (error) => {\n console.error(\"error from subscribeEntityEvents\", error)\n onError?.(error)\n },\n })\n\n return unsubscribe\n}\n","import type { Account, Chain, Client, Hex, PublicActions, Transport } from \"viem\"\nimport { getBlockTiming } from \"../../actions/public/getBlockTiming\"\nimport { getEntity } from \"../../actions/public/getEntity\"\nimport { getEntityCount } from \"../../actions/public/getEntityCount\"\nimport { query } from \"../../actions/public/query\"\nimport { subscribeEntityEvents } from \"../../actions/public/subscribeEntityEvents\"\nimport { QueryBuilder } from \"../../query/queryBuilder\"\nimport type { Entity } from \"../../types/entity\"\nimport type {\n OnEntityCreatedEvent,\n OnEntityDeletedEvent,\n OnEntityExpiredEvent,\n OnEntityExpiresInExtendedEvent,\n OnEntityUpdatedEvent,\n} from \"../../types/events\"\n\nexport type PublicArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<\n PublicActions<transport, chain, account>,\n | \"getBalance\"\n | \"getBlock\"\n | \"getBlockNumber\"\n | \"getChainId\"\n | \"getLogs\"\n | \"getTransaction\"\n | \"getTransactionCount\"\n | \"getTransactionReceipt\"\n | \"waitForTransactionReceipt\"\n | \"watchEvent\"\n> & {\n /**\n * Returns the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/public/getEntity\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const entity = await client.getEntity(\"0x123\")\n * // {\n * // key: \"0x123\",\n * // value: \"0x123\",\n * // }\n */\n getEntity: (key: Hex) => Promise<Entity>\n\n /**\n * Returns a QueryBuilder instance for building and executing queries.\n * The QueryBuilder object follows the Builder pattern, allowing you to chain methods to build a query and then execute it.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/public/query\n *\n * @returns A QueryBuilder instance for building and executing queries. {@link QueryBuilder}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const query = client.buildQuery()\n * const entities = await query.where(\"key\", \"=\", \"value\").ownedBy(\"0x123\").fetch()\n *\n */\n buildQuery: () => QueryBuilder\n\n /**\n * Returns a QueryResult instance for fetching the results of a raw query.\n * @returns A QueryResult instance for fetching the results of a raw query. {@link QueryResult}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const queryResult = client.query('key = value && $owner = 0x123')\n *\n */\n query: (query: string) => Promise<Entity[]>\n\n /**\n * Returns the number of entities in the DBChain.\n * @returns The number of entities in the DBChain. {@link number}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const entityCount = await client.getEntityCount()\n * // entityCount = 0\n */\n getEntityCount: () => Promise<number>\n\n /**\n * Returns the current block timing.\n * @returns The current block timing. {@link GetBlockTimingReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const blockTiming = await client.getBlockTiming()\n * // {\n * // currentBlock: 10n, // block number\n * // currentBlockTime: 1234567890, // block timestamp\n * // blockDuration: 2, // in seconds\n * // }\n */\n getBlockTiming: () => Promise<{\n currentBlock: bigint\n currentBlockTime: number\n blockDuration: number\n }>\n\n subscribeEntityEvents: (\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpiresInExtended,\n }: {\n onError?: (error: Error) => void\n onEntityCreated?: (event: OnEntityCreatedEvent) => void\n onEntityUpdated?: (event: OnEntityUpdatedEvent) => void\n onEntityDeleted?: (event: OnEntityDeletedEvent) => void\n onEntityExpired?: (event: OnEntityExpiredEvent) => void\n onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n ) => Promise<() => void>\n}\n\nexport function publicArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>) {\n return {\n getEntity: (key: Hex) => getEntity(client, key),\n query: (rawQuery: string) => query(client, rawQuery),\n buildQuery: () => new QueryBuilder(client),\n getBlockTiming: () => getBlockTiming(client),\n getEntityCount: () => getEntityCount(client),\n subscribeEntityEvents: (\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n }: {\n onError?: (error: Error) => void\n onEntityCreated?: (event: OnEntityCreatedEvent) => void\n onEntityUpdated?: (event: OnEntityUpdatedEvent) => void\n onEntityDeleted?: (event: OnEntityDeletedEvent) => void\n onEntityExpired?: (event: OnEntityExpiredEvent) => void\n onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n ) =>\n subscribeEntityEvents(\n client,\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n },\n pollingInterval,\n fromBlock,\n ),\n }\n}\n","import type {\n Account,\n Address,\n Chain,\n Client,\n ParseAccount,\n Prettify,\n PublicClientConfig,\n RpcSchema,\n Transport,\n} from \"viem\"\nimport { createClient, publicActions } from \"viem\"\nimport type { ArkivRpcSchema } from \"../types/rpcSchema\"\nimport { type PublicArkivActions, publicArkivActions } from \"./decorators/arkivPublic\"\n\nexport type PublicArkivClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n> = Prettify<\n Client<transport, chain, accountOrAddress, rpcSchema, PublicArkivActions<transport, chain>>\n>\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/clients/public\n *\n * A Public Client is an interface to \"public\" [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/), [Arkiv JSON-RPC API](https://docs.golemdb.io/json-rpc/), and [Kaolin JSON-RPC API](https://kaolin.holesky.golemdb.io/rpc) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Arkiv Public Client. {@link PublicArkivClient}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\nexport function createPublicClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n>(\n parameters: PublicClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): PublicArkivClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = \"public\", name = \"Public Client\" } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n })\n\n return client.extend(publicActions).extend(publicArkivActions) as unknown as PublicArkivClient<\n transport,\n chain,\n ParseAccount<accountOrAddress>,\n rpcSchema\n >\n}\n","// src/utils/compression.ts\n\nimport type { BrotliWasmType } from \"brotli-wasm\"\n\n// Detect if we're in Node.js environment\nconst isNode = typeof process !== \"undefined\" && process.versions?.node != null\n\nlet zlib: typeof import(\"zlib\") | null = null\nlet brotli: BrotliWasmType | null = null\n\n// Lazy load zlib (Node.js only)\nasync function getZlib(): Promise<typeof import(\"zlib\") | null> {\n if (!isNode) return null\n\n if (!zlib) {\n try {\n zlib = await import(\"zlib\")\n } catch (error) {\n console.error(\"Error importing zlib\", error)\n return null\n }\n }\n return zlib\n}\n\n// Lazy load brotli-wasm (browser/fallback)\nasync function getBrotli(): Promise<BrotliWasmType | null> {\n if (brotli) return brotli\n\n try {\n const brotliModule = await import(\"brotli-wasm\")\n brotli = brotliModule.default || brotliModule\n } catch (error) {\n console.error(\"Error importing brotli-wasm\", error)\n return null\n }\n\n return brotli\n}\n\nexport async function compress(data: Uint8Array): Promise<Uint8Array> {\n console.debug(`Compressing data (size: ${data.length})`)\n\n // Try Node.js zlib first (if available)\n if (isNode) {\n const zlibModule = await getZlib()\n if (zlibModule) {\n try {\n // zlib.brotliCompress expects Buffer, returns Buffer\n const buffer = Buffer.from(data)\n const compressed = zlibModule.brotliCompressSync(buffer)\n const result = new Uint8Array(compressed)\n console.debug(`Brotli compressed with zlib (size: ${result.length})`)\n return result\n } catch (error) {\n console.warn(\"zlib compression failed, falling back to brotli-wasm\", error)\n }\n }\n }\n\n // Fallback to brotli-wasm (browser or if zlib fails)\n const brotliInstance = await getBrotli()\n if (!brotliInstance) {\n console.warn(\"Brotli instance not found, not compressing data\")\n return data\n }\n\n const brotliCompressed = brotliInstance.compress(data)\n console.debug(`Brotli compressed with wasm (size: ${brotliCompressed.length})`)\n return brotliCompressed\n}\n\nexport async function decompress(data: Uint8Array): Promise<Uint8Array> {\n // Try Node.js zlib first (if available)\n if (isNode) {\n const zlibModule = await getZlib()\n if (zlibModule) {\n try {\n // zlib.brotliDecompress expects Buffer, returns Buffer\n const buffer = Buffer.from(data)\n const decompressed = zlibModule.brotliDecompressSync(buffer)\n const result = new Uint8Array(decompressed)\n console.debug(`Brotli decompressed with zlib (size: ${result.length})`)\n return result\n } catch (error) {\n console.warn(\"zlib decompression failed, falling back to brotli-wasm\", error)\n }\n }\n }\n\n // Fallback to brotli-wasm (browser or if zlib fails)\n const brotliInstance = await getBrotli()\n if (!brotliInstance) {\n console.warn(\"Brotli instance not found, not decompressing data\")\n return data\n }\n\n return brotliInstance.decompress(data)\n}\n","import { type Hex, toBytes, toHex, toRlp } from \"viem\"\nimport type { ChangeOwnershipParameters } from \"../actions/wallet/changeOwnership\"\nimport type { CreateEntityParameters } from \"../actions/wallet/createEntity\"\nimport type { DeleteEntityParameters } from \"../actions/wallet/deleteEntity\"\nimport type { ExtendEntityParameters } from \"../actions/wallet/extendEntity\"\nimport type { UpdateEntityParameters } from \"../actions/wallet/updateEntity\"\nimport type { ArkivClient } from \"../clients/baseClient\"\nimport type { WalletArkivClient } from \"../clients/createWalletClient\"\nimport { ARKIV_ADDRESS, BLOCK_TIME } from \"../consts\"\nimport type { TxParams } from \"../types\"\nimport { compress } from \"./compression\"\n\nexport function opsToTxData({\n creates,\n updates,\n deletes,\n extensions,\n ownershipChanges,\n}: {\n creates?: CreateEntityParameters[]\n updates?: UpdateEntityParameters[]\n deletes?: DeleteEntityParameters[]\n extensions?: ExtendEntityParameters[]\n ownershipChanges?: ChangeOwnershipParameters[]\n}) {\n function formatAttributes<T extends string | number | bigint | boolean>(attribute: {\n key: string\n value: T\n }): [Hex, Hex] {\n return [toHex(attribute.key), toHex(attribute.value)]\n }\n\n const payload = [\n //creates\n (creates ?? []).map((item) => [\n toHex(item.expiresIn / BLOCK_TIME),\n toHex(item.contentType),\n toHex(item.payload),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"string\")\n .map(formatAttributes),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"number\")\n .map(formatAttributes),\n ]),\n //updates\n (updates ?? []).map((item) => [\n item.entityKey,\n toHex(item.contentType),\n toHex(item.expiresIn / BLOCK_TIME),\n toHex(item.payload),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"string\")\n .map(formatAttributes),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"number\")\n .map(formatAttributes),\n ]),\n //deletes\n (deletes ?? []).map((item) => item.entityKey),\n //extends\n (extensions ?? []).map((item) => [item.entityKey, toHex(item.expiresIn / BLOCK_TIME)]),\n //ownershipChanges TODO\n (ownershipChanges ?? []).map((item) => [item.entityKey, item.newOwner]),\n ]\n\n console.debug(\"txData to send as RLP\", payload, payload.length)\n\n return toRlp(payload)\n}\n\nexport async function sendArkivTransaction(client: ArkivClient, data: Hex, txParams?: TxParams) {\n if (!client.account) throw new Error(\"Account required\")\n const walletClient = client as WalletArkivClient\n\n console.debug(\"Sending transaction\", {\n account: client.account,\n chain: client.chain,\n to: ARKIV_ADDRESS,\n value: 0n,\n data,\n ...txParams,\n })\n\n const compressed = await compress(toBytes(data))\n const txHash = await walletClient.sendTransaction({\n account: client.account,\n chain: client.chain,\n to: ARKIV_ADDRESS,\n value: 0n,\n data: toHex(compressed),\n ...txParams,\n })\n\n const receipt = await walletClient.waitForTransactionReceipt({ hash: txHash })\n\n console.debug(\"Tx receipt\", receipt)\n\n return receipt\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the deleteEntity function.\n * - entityKey: The key of the entity to delete.\n */\nexport type ChangeOwnershipParameters = {\n entityKey: Hex\n newOwner: Hex\n}\n\n/**\n * Return type for the deleteEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type ChangeOwnershipReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function changeOwnership(\n client: ArkivClient,\n data: ChangeOwnershipParameters,\n txParams?: TxParams,\n): Promise<ChangeOwnershipReturnType> {\n console.debug(\"changeOwnership\", data)\n const txData = opsToTxData({ ownershipChanges: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from changeOwnership\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: data.entityKey,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { Attribute, MimeType, TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the createEntity function.\n * - payload: The payload of the entity.\n * - attributes: The attributes of the entity.\n * - contentType: The content type of the entity.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type CreateEntityParameters = {\n payload: Uint8Array\n attributes: Attribute[]\n contentType: MimeType\n expiresIn: number\n}\n\n/**\n * Return type for the createEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type CreateEntityReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function createEntity(\n client: ArkivClient,\n data: CreateEntityParameters,\n txParams?: TxParams,\n): Promise<CreateEntityReturnType> {\n console.debug(\"createEntity\", data)\n const txData = opsToTxData({ creates: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from createEntity\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the deleteEntity function.\n * - entityKey: The key of the entity to delete.\n */\nexport type DeleteEntityParameters = {\n entityKey: Hex\n}\n\n/**\n * Return type for the deleteEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type DeleteEntityReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function deleteEntity(\n client: ArkivClient,\n data: DeleteEntityParameters,\n txParams?: TxParams,\n): Promise<DeleteEntityReturnType> {\n console.debug(\"deleteEntity\", data)\n const txData = opsToTxData({ deletes: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from deleteEntity\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: data.entityKey,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the extendEntity function.\n * - entityKey: The key of the entity to extend.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type ExtendEntityParameters = {\n entityKey: Hex\n expiresIn: number\n}\n\n/**\n * Return type for the extendEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type ExtendEntityReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function extendEntity(\n client: ArkivClient,\n data: ExtendEntityParameters,\n txParams?: TxParams,\n): Promise<ExtendEntityReturnType> {\n console.debug(\"extendEntity\", data)\n const txData = opsToTxData({ extensions: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from extendEntity\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Hex, TransactionReceipt } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport type { ChangeOwnershipParameters } from \"./changeOwnership\"\nimport type { CreateEntityParameters } from \"./createEntity\"\nimport type { DeleteEntityParameters } from \"./deleteEntity\"\nimport type { ExtendEntityParameters } from \"./extendEntity\"\nimport type { UpdateEntityParameters } from \"./updateEntity\"\n\n/**\n * Parameters for the mutateEntities function.\n * - creates: The creates to perform.\n * - updates: The updates to perform.\n * - deletes: The deletes to perform.\n * - extensions: The extensions to perform.\n */\nexport type MutateEntitiesParameters = {\n creates?: CreateEntityParameters[]\n updates?: UpdateEntityParameters[]\n deletes?: DeleteEntityParameters[]\n extensions?: ExtendEntityParameters[]\n ownershipChanges?: ChangeOwnershipParameters[]\n}\n\nfunction parseReceipt(receipt: TransactionReceipt, params: MutateEntitiesParameters) {\n const createdEntities: Hex[] = []\n const updatedEntities: Hex[] = []\n const deletedEntities: Hex[] = []\n const extendedEntities: Hex[] = []\n const ownershipChanges: Hex[] = []\n\n const totalCreates = params.creates?.length ?? 0\n const totalUpdates = params.updates?.length ?? 0\n const totalDeletes = params.deletes?.length ?? 0\n const totalExtensions = params.extensions?.length ?? 0\n\n // iterate over all logs and parse the event\n // each odd log is the interested ones, logs goes in order like: creates, deleted, updates, extends\n for (let i = 0; i < receipt.logs.length; i++) {\n const log = receipt.logs[i]\n if (i % 2 === 1) continue\n\n const index = i / 2\n if (index < totalCreates) {\n createdEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalDeletes) {\n deletedEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalUpdates + totalDeletes) {\n updatedEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalUpdates + totalDeletes + totalExtensions) {\n extendedEntities.push(log.topics[1] as Hex)\n } else {\n ownershipChanges.push(log.topics[1] as Hex)\n }\n }\n\n return { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges }\n}\n\n/**\n * Return type for the mutateEntities function.\n * - txHash: The transaction hash.\n * - createdEntities: The keys of the created entities.\n * - updatedEntities: The keys of the updated entities.\n * - deletedEntities: The keys of the deleted entities.\n * - extendedEntities: The keys of the extended entities.\n * - ownershipChanges: The keys of the ownership changes.\n */\nexport type MutateEntitiesReturnType = {\n txHash: string\n createdEntities: Hex[]\n updatedEntities: Hex[]\n deletedEntities: Hex[]\n extendedEntities: Hex[]\n ownershipChanges: Hex[]\n}\nexport async function mutateEntities(\n client: ArkivClient,\n data: MutateEntitiesParameters,\n txParams?: TxParams,\n): Promise<MutateEntitiesReturnType> {\n if (!data.creates && !data.updates && !data.deletes && !data.extensions) {\n throw new Error(\"No operations to perform\")\n }\n\n const txData = opsToTxData({\n creates: data.creates ?? [],\n updates: data.updates ?? [],\n deletes: data.deletes ?? [],\n extensions: data.extensions ?? [],\n ownershipChanges: data.ownershipChanges ?? [],\n })\n\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from mutateEntities\", receipt)\n\n const { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges } =\n parseReceipt(receipt, data)\n return {\n txHash: receipt.transactionHash,\n createdEntities,\n updatedEntities,\n deletedEntities,\n extendedEntities,\n ownershipChanges,\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { Attribute, MimeType, TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\n\n/**\n * Parameters for the updateEntity function.\n * - entityKey: The key of the entity to update.\n * - payload: The payload of the entity.\n * - attributes: The attributes of the entity.\n * - contentType: The content type of the entity.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type UpdateEntityParameters = {\n entityKey: Hex\n payload: Uint8Array\n attributes: Attribute[]\n contentType: MimeType\n expiresIn: number\n}\n\n/**\n * Return type for the updateEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type UpdateEntityReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function updateEntity(\n client: ArkivClient,\n data: UpdateEntityParameters,\n txParams?: TxParams,\n): Promise<UpdateEntityReturnType> {\n console.debug(\"updateEntity\", data)\n const txData = opsToTxData({ updates: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n console.debug(\"Receipt from updateEntity\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Account, Chain, Client, PublicActions, Transport, WalletActions } from \"viem\"\nimport type {\n ChangeOwnershipParameters,\n ChangeOwnershipReturnType,\n} from \"../../actions/wallet/changeOwnership\"\nimport { changeOwnership } from \"../../actions/wallet/changeOwnership\"\nimport {\n type CreateEntityParameters,\n type CreateEntityReturnType,\n createEntity,\n} from \"../../actions/wallet/createEntity\"\nimport type {\n DeleteEntityParameters,\n DeleteEntityReturnType,\n} from \"../../actions/wallet/deleteEntity\"\nimport { deleteEntity } from \"../../actions/wallet/deleteEntity\"\nimport type {\n ExtendEntityParameters,\n ExtendEntityReturnType,\n} from \"../../actions/wallet/extendEntity\"\nimport { extendEntity } from \"../../actions/wallet/extendEntity\"\nimport type {\n MutateEntitiesParameters,\n MutateEntitiesReturnType,\n} from \"../../actions/wallet/mutateEntities\"\nimport { mutateEntities } from \"../../actions/wallet/mutateEntities\"\nimport type {\n UpdateEntityParameters,\n UpdateEntityReturnType,\n} from \"../../actions/wallet/updateEntity\"\nimport { updateEntity } from \"../../actions/wallet/updateEntity\"\nimport type { Entity, TxParams } from \"../../types\"\n\nexport type WalletArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<PublicActions<transport, chain, account>, \"waitForTransactionReceipt\"> &\n Pick<\n WalletActions<chain, account>,\n | \"addChain\"\n | \"sendTransaction\"\n | \"sendTransactionSync\"\n | \"sendRawTransaction\"\n | \"sendRawTransactionSync\"\n | \"signMessage\"\n | \"signTransaction\"\n > & {\n /**\n * Returns the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/public/getEntity\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.createEntity({\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attributes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n createEntity: (\n data: CreateEntityParameters,\n txParams?: TxParams,\n ) => Promise<CreateEntityReturnType>\n\n /**\n * Updates the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/updateEntity\n * - JSON-RPC Methods: [`golembase_updateEntity`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_updateEntity)\n *\n * @param args - {entityKey, data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\n updateEntity: (\n data: UpdateEntityParameters,\n txParams?: TxParams,\n ) => Promise<UpdateEntityReturnType>\n\n /**\n * Deletes the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/deleteEntity\n * - JSON-RPC Methods: [`golembase_deleteEntity`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_deleteEntity)\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.deleteEntity({ entityKey: \"0x123\" })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n deleteEntity: (\n data: DeleteEntityParameters,\n txParams?: TxParams,\n ) => Promise<DeleteEntityReturnType>\n\n /**\n * Extends the entity with the given key.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/extendEntity\n * - JSON-RPC Methods: [`golembase_extendEntity`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_extendEntity)\n *\n * @param args - {entityKey, data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.extendEntity(\"0x123\", {\n * expiresIn: 1000,\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n extendEntity: (\n data: ExtendEntityParameters,\n txParams?: TxParams,\n ) => Promise<ExtendEntityReturnType>\n\n /**\n * Changes the ownership of the entity with the given address.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/changeOwnership\n * - JSON-RPC Methods: [`golembase_ownershipChange`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_ownershipChange)\n *\n * @param args - {entityKey, newOwner}\n * @returns The entity with the given address. {@link Entity}\n */\n changeOwnership: (\n data: ChangeOwnershipParameters,\n txParams?: TxParams,\n ) => Promise<ChangeOwnershipReturnType>\n\n /**\n * Mutates the entities with the given keys.\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/actions/wallet/mutateEntities\n * - JSON-RPC Methods: [`golembase_mutateEntities`](https://docs.golemdb.io/dev/json-rpc-api/#golembase_mutateEntities)\n *\n * @param args - {data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.mutateEntities({\n * creates: [{\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attriubutes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * }],\n * updates: [{\n * entityKey: \"0x123\",\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attributes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * }],\n * deletes: [{\n * entityKey: \"0x321\",\n * }],\n * extensions: [{\n * entityKey: \"0x1234\",\n * expiresIn: 1000,\n * }],\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n mutateEntities: (\n data: MutateEntitiesParameters,\n txParams?: TxParams,\n ) => Promise<MutateEntitiesReturnType>\n }\n\nexport function walletArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>) {\n return {\n createEntity: (data: CreateEntityParameters, txParams?: TxParams) =>\n createEntity(client, data, txParams),\n updateEntity: (data: UpdateEntityParameters, txParams?: TxParams) =>\n updateEntity(client, data, txParams),\n deleteEntity: (data: DeleteEntityParameters, txParams?: TxParams) =>\n deleteEntity(client, data, txParams),\n extendEntity: (data: ExtendEntityParameters, txParams?: TxParams) =>\n extendEntity(client, data, txParams),\n changeOwnership: (data: ChangeOwnershipParameters, txParams?: TxParams) =>\n changeOwnership(client, data, txParams),\n mutateEntities: (data: MutateEntitiesParameters, txParams?: TxParams) =>\n mutateEntities(client, data, txParams),\n }\n}\n","import type {\n Account,\n Address,\n Chain,\n Client,\n ParseAccount,\n Prettify,\n RpcSchema,\n Transport,\n WalletClientConfig,\n} from \"viem\"\nimport { createClient, publicActions, walletActions } from \"viem\"\nimport type { ArkivRpcSchema } from \"../types/rpcSchema\"\nimport { type WalletArkivActions, walletArkivActions } from \"./decorators/arkivWallet\"\n\nexport type WalletArkivClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n> = Prettify<\n Client<transport, chain, account, rpcSchema, WalletArkivActions<transport, chain, account>>\n>\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://docs.golemdb.io/ts-sdk/clients/public\n *\n * A Public Client is an interface to \"public\" [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/), [Arkiv JSON-RPC API](https://docs.golemdb.io/json-rpc/), and [Kaolin JSON-RPC API](https://kaolin.holesky.golemdb.io/rpc) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Arkiv Public Client. {@link PublicArkivClient}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\nexport function createWalletClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n>(\n parameters: WalletClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): WalletArkivClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = \"wallet\", name = \"Wallet Client\" } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n })\n\n return client\n .extend(publicActions)\n .extend(walletActions)\n .extend(walletArkivActions) as unknown as WalletArkivClient<\n transport,\n chain,\n ParseAccount<accountOrAddress>,\n rpcSchema\n >\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/utils/expirationTime.ts","../../src/utils/payload.ts"],"sourcesContent":[],"mappings":";;;cAEa;;;EAAA,SAAA,EAAA,CAAA,KAUZ,EAAA,MAAA,EAAA,GADkB,MAAI;;;;ECTP,SAAA,EAAA,CAAA,KAAa,EAAA,MAAA,EAAA,GAAgB,MAAA;EAI7B,UAAA,EAAA,CAAA,MAAe,EAAA,MAAA,EAAA,GAAgB,MAAA;mBDK5B;;;;iBCTH,aAAA,gBAA6B;iBAI7B,eAAA,gBAA+B"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/utils/expirationTime.ts","../../src/utils/payload.ts"],"sourcesContent":[],"mappings":";;;cAEa;;;EAAA,SAAA,EAAA,CAAA,KAUZ,EAAA,MAAA,EAAA,GADkB,MAAI;;;;ECTP,SAAA,EAAA,CAAA,KAAa,EAAA,MAAA,EAAgB,GAAA,MAAA;EAI7B,UAAA,EAAA,CAAA,MAAe,EAAA,MAAA,EAAgB,GAAA,MAAA;mBDK5B;;;;iBCTH,aAAA,gBAA6B;iBAI7B,eAAA,gBAA+B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arkiv-network/sdk",
3
- "version": "0.1.3-dev.0",
4
- "description": "TypeScript-only client library for Arkiv blockchain interactions",
3
+ "version": "0.2.0",
4
+ "description": "TypeScript client library for Arkiv's blockchains interactions",
5
5
  "type": "module",
6
6
  "target": "esnext",
7
7
  "main": "./dist/index.cjs",
@@ -111,6 +111,7 @@
111
111
  "type": "git",
112
112
  "url": "https://github.com/Arkiv-Network/arkiv-sdk-js.git"
113
113
  },
114
+ "homepage": "https://arkiv.network",
114
115
  "dependencies": {
115
116
  "brotli-wasm": "^3.0.1",
116
117
  "viem": "^2.38.2"
@@ -6,6 +6,7 @@ import type {
6
6
  OnEntityDeletedEvent,
7
7
  OnEntityExpiredEvent,
8
8
  OnEntityExpiresInExtendedEvent,
9
+ OnEntityOwnerChangedEvent,
9
10
  OnEntityUpdatedEvent,
10
11
  } from "../../types/events"
11
12
 
@@ -15,6 +16,7 @@ export const arkivABI = parseAbi([
15
16
  "event ArkivEntityExpired(uint256 indexed entityKey, address indexed ownerAddress)",
16
17
  "event ArkivEntityDeleted(uint256 indexed entityKey, address indexed ownerAddress)",
17
18
  "event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)",
19
+ "event ArkivEntityOwnerChanged(uint256 indexed entityKey, address indexed oldOwnerAddress, address indexed newOwnerAddress)",
18
20
  ])
19
21
 
20
22
  export async function subscribeEntityEvents(
@@ -26,6 +28,7 @@ export async function subscribeEntityEvents(
26
28
  onEntityDeleted,
27
29
  onEntityExpired,
28
30
  onEntityExpiresInExtended,
31
+ onEntityOwnerChanged,
29
32
  }: {
30
33
  onError: ((error: Error) => void) | undefined
31
34
  onEntityCreated?: ((event: OnEntityCreatedEvent) => void) | undefined
@@ -33,6 +36,7 @@ export async function subscribeEntityEvents(
33
36
  onEntityDeleted?: ((event: OnEntityDeletedEvent) => void) | undefined
34
37
  onEntityExpired?: ((event: OnEntityExpiredEvent) => void) | undefined
35
38
  onEntityExpiresInExtended?: ((event: OnEntityExpiresInExtendedEvent) => void) | undefined
39
+ onEntityOwnerChanged?: ((event: OnEntityOwnerChangedEvent) => void) | undefined
36
40
  },
37
41
  pollingInterval?: number,
38
42
  fromBlock?: bigint,
@@ -89,6 +93,13 @@ export async function subscribeEntityEvents(
89
93
  owner: event.args.ownerAddress,
90
94
  })
91
95
  break
96
+ case "ArkivEntityOwnerChanged":
97
+ onEntityOwnerChanged?.({
98
+ entityKey: toHex(event.args.entityKey, { size: 32 }),
99
+ oldOwner: event.args.oldOwnerAddress,
100
+ newOwner: event.args.newOwnerAddress,
101
+ })
102
+ break
92
103
  default:
93
104
  console.warn("unknown event from subscribeEntityEvents", event)
94
105
  break
@@ -2,6 +2,7 @@ import type { Hex, TransactionReceipt } from "viem"
2
2
  import type { ArkivClient } from "../../clients/baseClient"
3
3
  import type { TxParams } from "../../types"
4
4
  import { opsToTxData, sendArkivTransaction } from "../../utils/arkivTransactions"
5
+ import type { ChangeOwnershipParameters } from "./changeOwnership"
5
6
  import type { CreateEntityParameters } from "./createEntity"
6
7
  import type { DeleteEntityParameters } from "./deleteEntity"
7
8
  import type { ExtendEntityParameters } from "./extendEntity"
@@ -19,6 +20,7 @@ export type MutateEntitiesParameters = {
19
20
  updates?: UpdateEntityParameters[]
20
21
  deletes?: DeleteEntityParameters[]
21
22
  extensions?: ExtendEntityParameters[]
23
+ ownershipChanges?: ChangeOwnershipParameters[]
22
24
  }
23
25
 
24
26
  function parseReceipt(receipt: TransactionReceipt, params: MutateEntitiesParameters) {
@@ -26,9 +28,12 @@ function parseReceipt(receipt: TransactionReceipt, params: MutateEntitiesParamet
26
28
  const updatedEntities: Hex[] = []
27
29
  const deletedEntities: Hex[] = []
28
30
  const extendedEntities: Hex[] = []
31
+ const ownershipChanges: Hex[] = []
32
+
29
33
  const totalCreates = params.creates?.length ?? 0
30
34
  const totalUpdates = params.updates?.length ?? 0
31
35
  const totalDeletes = params.deletes?.length ?? 0
36
+ const totalExtensions = params.extensions?.length ?? 0
32
37
 
33
38
  // iterate over all logs and parse the event
34
39
  // each odd log is the interested ones, logs goes in order like: creates, deleted, updates, extends
@@ -43,12 +48,14 @@ function parseReceipt(receipt: TransactionReceipt, params: MutateEntitiesParamet
43
48
  deletedEntities.push(log.topics[1] as Hex)
44
49
  } else if (index < totalCreates + totalUpdates + totalDeletes) {
45
50
  updatedEntities.push(log.topics[1] as Hex)
46
- } else {
51
+ } else if (index < totalCreates + totalUpdates + totalDeletes + totalExtensions) {
47
52
  extendedEntities.push(log.topics[1] as Hex)
53
+ } else {
54
+ ownershipChanges.push(log.topics[1] as Hex)
48
55
  }
49
56
  }
50
57
 
51
- return { createdEntities, updatedEntities, deletedEntities, extendedEntities }
58
+ return { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges }
52
59
  }
53
60
 
54
61
  /**
@@ -58,6 +65,7 @@ function parseReceipt(receipt: TransactionReceipt, params: MutateEntitiesParamet
58
65
  * - updatedEntities: The keys of the updated entities.
59
66
  * - deletedEntities: The keys of the deleted entities.
60
67
  * - extendedEntities: The keys of the extended entities.
68
+ * - ownershipChanges: The keys of the ownership changes.
61
69
  */
62
70
  export type MutateEntitiesReturnType = {
63
71
  txHash: string
@@ -65,6 +73,7 @@ export type MutateEntitiesReturnType = {
65
73
  updatedEntities: Hex[]
66
74
  deletedEntities: Hex[]
67
75
  extendedEntities: Hex[]
76
+ ownershipChanges: Hex[]
68
77
  }
69
78
  export async function mutateEntities(
70
79
  client: ArkivClient,
@@ -80,21 +89,21 @@ export async function mutateEntities(
80
89
  updates: data.updates ?? [],
81
90
  deletes: data.deletes ?? [],
82
91
  extensions: data.extensions ?? [],
92
+ ownershipChanges: data.ownershipChanges ?? [],
83
93
  })
84
94
 
85
95
  const receipt = await sendArkivTransaction(client, txData, txParams)
86
96
 
87
97
  console.debug("Receipt from mutateEntities", receipt)
88
98
 
89
- const { createdEntities, updatedEntities, deletedEntities, extendedEntities } = parseReceipt(
90
- receipt,
91
- data,
92
- )
99
+ const { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges } =
100
+ parseReceipt(receipt, data)
93
101
  return {
94
102
  txHash: receipt.transactionHash,
95
103
  createdEntities,
96
104
  updatedEntities,
97
105
  deletedEntities,
98
106
  extendedEntities,
107
+ ownershipChanges,
99
108
  }
100
109
  }
@@ -18,5 +18,22 @@ test("creates", () => {
18
18
  expect(uid).toBeDefined()
19
19
  expect(client.getEntity).toBeDefined()
20
20
  expect(typeof client.getEntity).toBe("function")
21
+ expect(client.buildQuery).toBeDefined()
22
+ expect(typeof client.buildQuery).toBe("function")
23
+ expect(client.query).toBeDefined()
24
+ expect(typeof client.query).toBe("function")
25
+ expect(client.getEntityCount).toBeDefined()
26
+ expect(typeof client.getEntityCount).toBe("function")
27
+ expect(client.getBlockTiming).toBeDefined()
28
+ expect(typeof client.getBlockTiming).toBe("function")
29
+ expect(client.subscribeEntityEvents).toBeDefined()
30
+ expect(typeof client.subscribeEntityEvents).toBe("function")
31
+ expect(client.watchEvent).toBeDefined()
32
+ expect(typeof client.watchEvent).toBe("function")
21
33
  expect(client.createEntity).not.toBeDefined()
34
+ expect(client.updateEntity).not.toBeDefined()
35
+ expect(client.deleteEntity).not.toBeDefined()
36
+ expect(client.extendEntity).not.toBeDefined()
37
+ expect(client.changeOwnership).not.toBeDefined()
38
+ expect(client.mutateEntities).not.toBeDefined()
22
39
  })
@@ -56,7 +56,7 @@ export function createPublicClient<
56
56
  name,
57
57
  })
58
58
 
59
- return client.extend(publicArkivActions).extend(publicActions) as unknown as PublicArkivClient<
59
+ return client.extend(publicActions).extend(publicArkivActions) as unknown as PublicArkivClient<
60
60
  transport,
61
61
  chain,
62
62
  ParseAccount<accountOrAddress>,
@@ -16,8 +16,19 @@ test("creates", () => {
16
16
  })
17
17
 
18
18
  expect(uid).toBeDefined()
19
- expect(client.getEntity).toBeDefined()
20
- expect(typeof client.getEntity).toBe("function")
19
+ expect(client.getEntity).not.toBeDefined()
20
+ expect(client.waitForTransactionReceipt).toBeDefined()
21
+ expect(typeof client.waitForTransactionReceipt).toBe("function")
21
22
  expect(client.createEntity).toBeDefined()
22
23
  expect(typeof client.createEntity).toBe("function")
24
+ expect(client.updateEntity).toBeDefined()
25
+ expect(typeof client.updateEntity).toBe("function")
26
+ expect(client.deleteEntity).toBeDefined()
27
+ expect(typeof client.deleteEntity).toBe("function")
28
+ expect(client.extendEntity).toBeDefined()
29
+ expect(typeof client.extendEntity).toBe("function")
30
+ expect(client.changeOwnership).toBeDefined()
31
+ expect(typeof client.changeOwnership).toBe("function")
32
+ expect(client.mutateEntities).toBeDefined()
33
+ expect(typeof client.mutateEntities).toBe("function")
23
34
  })
@@ -11,7 +11,6 @@ import type {
11
11
  } from "viem"
12
12
  import { createClient, publicActions, walletActions } from "viem"
13
13
  import type { ArkivRpcSchema } from "../types/rpcSchema"
14
- import { publicArkivActions } from "./decorators/arkivPublic"
15
14
  import { type WalletArkivActions, walletArkivActions } from "./decorators/arkivWallet"
16
15
 
17
16
  export type WalletArkivClient<
@@ -58,10 +57,9 @@ export function createWalletClient<
58
57
  })
59
58
 
60
59
  return client
61
- .extend(walletActions)
62
60
  .extend(publicActions)
63
- .extend(walletArkivActions)
64
- .extend(publicArkivActions) as unknown as WalletArkivClient<
61
+ .extend(walletActions)
62
+ .extend(walletArkivActions) as unknown as WalletArkivClient<
65
63
  transport,
66
64
  chain,
67
65
  ParseAccount<accountOrAddress>,
@@ -1,4 +1,4 @@
1
- import type { Account, Chain, Client, Transport, WalletActions } from "viem"
1
+ import type { Account, Chain, Client, PublicActions, Transport, WalletActions } from "viem"
2
2
  import type {
3
3
  ChangeOwnershipParameters,
4
4
  ChangeOwnershipReturnType,
@@ -30,15 +30,15 @@ import type {
30
30
  } from "../../actions/wallet/updateEntity"
31
31
  import { updateEntity } from "../../actions/wallet/updateEntity"
32
32
  import type { Entity, TxParams } from "../../types"
33
- import type { PublicArkivActions } from "./arkivPublic"
34
33
 
35
34
  export type WalletArkivActions<
36
35
  transport extends Transport = Transport,
37
36
  chain extends Chain | undefined = Chain | undefined,
38
37
  account extends Account | undefined = Account | undefined,
39
- > = PublicArkivActions<transport, chain, account> &
38
+ > = Pick<PublicActions<transport, chain, account>, "waitForTransactionReceipt"> &
40
39
  Pick<
41
40
  WalletActions<chain, account>,
41
+ | "addChain"
42
42
  | "sendTransaction"
43
43
  | "sendTransactionSync"
44
44
  | "sendRawTransaction"
@@ -32,3 +32,9 @@ export type OnEntityExpiresInExtendedEvent = {
32
32
  newExpirationBlock: number
33
33
  cost: bigint
34
34
  }
35
+
36
+ export type OnEntityOwnerChangedEvent = {
37
+ entityKey: Hex
38
+ oldOwner: Hex
39
+ newOwner: Hex
40
+ }