@arkiv-network/sdk 0.7.0 → 0.8.0-advanced.3
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/README.md +71 -16
- package/dist/actions/advanced/index.cjs +13 -0
- package/dist/actions/advanced/index.d.cts +8 -0
- package/dist/actions/advanced/index.d.ts +9 -0
- package/dist/actions/advanced/index.js +9 -0
- package/dist/advanced-Ds2XRflQ.cjs +656 -0
- package/dist/advanced-FZy7WoYR.js +598 -0
- package/dist/advanced-FZy7WoYR.js.map +1 -0
- package/dist/arkivTransactions-BpARZOsH.d.cts +584 -0
- package/dist/arkivTransactions-BpARZOsH.d.cts.map +1 -0
- package/dist/arkivTransactions-DfZ_yVDD.d.ts +584 -0
- package/dist/arkivTransactions-DfZ_yVDD.d.ts.map +1 -0
- package/dist/attr/index.cjs +35 -0
- package/dist/attr/index.d.cts +2 -0
- package/dist/attr/index.d.ts +3 -0
- package/dist/attr/index.js +4 -0
- package/dist/attributes-BJGuhsqp.js +819 -0
- package/dist/attributes-BJGuhsqp.js.map +1 -0
- package/dist/attributes-CMJlp1wn.cjs +1039 -0
- package/dist/chains/index.cjs +2 -3
- package/dist/chains/index.d.cts +41 -76
- package/dist/chains/index.d.cts.map +1 -1
- package/dist/chains/index.d.ts +24 -59
- package/dist/chains/index.d.ts.map +1 -1
- package/dist/chains/index.js +2 -2
- package/dist/chains-BfNQliHU.cjs +76 -0
- package/dist/chains-Du8tql7I.js +60 -0
- package/dist/chains-Du8tql7I.js.map +1 -0
- package/dist/codec-M74UR1_0.d.ts +101 -0
- package/dist/codec-M74UR1_0.d.ts.map +1 -0
- package/dist/entity/index.cjs +21 -0
- package/dist/entity/index.d.cts +4 -0
- package/dist/entity/index.d.ts +5 -0
- package/dist/entity/index.js +7 -0
- package/dist/entity-B00Li04j.cjs +71 -0
- package/dist/entity-B7G8q_Eo.cjs +0 -0
- package/dist/entity-BYQR1uoe.js +67 -0
- package/dist/entity-BYQR1uoe.js.map +1 -0
- package/dist/entity-CD_qFF2M.js +0 -0
- package/dist/errors-51znTSB1.cjs +56 -0
- package/dist/errors-CwPJ16bn.js +33 -0
- package/dist/errors-CwPJ16bn.js.map +1 -0
- package/dist/expiry-CZErShX6.js +95 -0
- package/dist/expiry-CZErShX6.js.map +1 -0
- package/dist/expiry-DRV29F1r.d.cts +79 -0
- package/dist/expiry-DRV29F1r.d.cts.map +1 -0
- package/dist/expiry-nDbCgZX4.d.ts +79 -0
- package/dist/expiry-nDbCgZX4.d.ts.map +1 -0
- package/dist/expiry-xr6mx4f7.cjs +135 -0
- package/dist/flags-5dTNRnow.d.ts +41 -0
- package/dist/flags-5dTNRnow.d.ts.map +1 -0
- package/dist/flags-Bh0HJldY.cjs +43 -0
- package/dist/flags-CRjPpoh3.d.cts +41 -0
- package/dist/flags-CRjPpoh3.d.cts.map +1 -0
- package/dist/flags-Cr76ldwF.js +33 -0
- package/dist/flags-Cr76ldwF.js.map +1 -0
- package/dist/index-CMeD8uEq.d.cts +280 -0
- package/dist/index-CMeD8uEq.d.cts.map +1 -0
- package/dist/index-CTDI5pXZ.d.ts +184 -0
- package/dist/index-CTDI5pXZ.d.ts.map +1 -0
- package/dist/index-CekGjkRx.d.cts +184 -0
- package/dist/index-CekGjkRx.d.cts.map +1 -0
- package/dist/index-D0IzFwMX.d.ts +328 -0
- package/dist/index-D0IzFwMX.d.ts.map +1 -0
- package/dist/index-DZxwz2Ky.d.cts +177 -0
- package/dist/index-DZxwz2Ky.d.cts.map +1 -0
- package/dist/index-Dz4SkQWg.d.ts +280 -0
- package/dist/index-Dz4SkQWg.d.ts.map +1 -0
- package/dist/index-JP31fjyM.d.ts +177 -0
- package/dist/index-JP31fjyM.d.ts.map +1 -0
- package/dist/index-NbfnXxgr.d.cts +424 -0
- package/dist/index-NbfnXxgr.d.cts.map +1 -0
- package/dist/index.cjs +434 -412
- package/dist/index.d.cts +401 -235
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +402 -235
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +370 -404
- package/dist/index.js.map +1 -1
- package/dist/key-E7mv0BYf.cjs +116 -0
- package/dist/key-XQkpw2xh.js +82 -0
- package/dist/key-XQkpw2xh.js.map +1 -0
- package/dist/logger-CVpvU8ik.js +153 -0
- package/dist/logger-CVpvU8ik.js.map +1 -0
- package/dist/logger-Cr15lPAQ.cjs +188 -0
- package/dist/payload-Cvrir3Q-.cjs +108 -0
- package/dist/payload-D53ms-Mg.d.ts +153 -0
- package/dist/payload-D53ms-Mg.d.ts.map +1 -0
- package/dist/payload-DaPzUvEh.js +92 -0
- package/dist/payload-DaPzUvEh.js.map +1 -0
- package/dist/payload-hluX1rc0.d.cts +153 -0
- package/dist/payload-hluX1rc0.d.cts.map +1 -0
- package/dist/query/index.cjs +26 -149
- package/dist/query/index.d.cts +5 -3
- package/dist/query/index.d.ts +6 -3
- package/dist/query/index.js +8 -137
- package/dist/queryBuilder-BXR-HxD9.cjs +947 -0
- package/dist/queryBuilder-BwauPaGO.js +823 -0
- package/dist/queryBuilder-BwauPaGO.js.map +1 -0
- package/dist/selection-C6KeWJ7g.d.cts +441 -0
- package/dist/selection-C6KeWJ7g.d.cts.map +1 -0
- package/dist/selection-mjiiAGDO.d.ts +442 -0
- package/dist/selection-mjiiAGDO.d.ts.map +1 -0
- package/dist/types/index.cjs +4 -1
- package/dist/types/index.d.cts +7 -2
- package/dist/types/index.d.ts +8 -2
- package/dist/types/index.js +4 -1
- package/dist/types-Bu_ZwMbZ.js +0 -0
- package/dist/types-NRqymi6S.cjs +0 -0
- package/dist/utils/index.cjs +4 -17
- package/dist/utils/index.d.cts +3 -17
- package/dist/utils/index.d.ts +3 -17
- package/dist/utils/index.js +4 -18
- package/package.json +26 -9
- package/src/actions/advanced/advanced.test.ts +258 -0
- package/src/actions/advanced/buildMutation.ts +104 -0
- package/src/actions/advanced/getMutationResult.ts +112 -0
- package/src/actions/advanced/index.ts +21 -0
- package/src/actions/advanced/pingTransaction.ts +43 -0
- package/src/actions/advanced/sendMutation.ts +59 -0
- package/src/actions/public/getEntity.ts +28 -43
- package/src/actions/public/getEntityNonce.ts +30 -0
- package/src/actions/public/predictEntityKeys.test.ts +159 -0
- package/src/actions/public/predictEntityKeys.ts +152 -0
- package/src/actions/public/query.ts +35 -67
- package/src/actions/public/watchEntityEvents.test.ts +414 -0
- package/src/actions/public/watchEntityEvents.ts +225 -0
- package/src/actions/wallet/changeOwnership.ts +8 -8
- package/src/actions/wallet/createEntity.ts +105 -26
- package/src/actions/wallet/deleteEntity.ts +2 -3
- package/src/actions/wallet/executeBatch.test.ts +76 -0
- package/src/actions/wallet/executeBatch.ts +51 -0
- package/src/actions/wallet/extendEntity.ts +40 -16
- package/src/actions/wallet/patchEntity.ts +90 -0
- package/src/attr/attributes.test.ts +120 -0
- package/src/attr/attributes.ts +196 -0
- package/src/attr/codec.test.ts +162 -0
- package/src/attr/codec.ts +220 -0
- package/src/attr/decimal.ts +86 -0
- package/src/attr/errors.ts +145 -0
- package/src/attr/index.ts +50 -0
- package/src/attr/names.ts +106 -0
- package/src/attr/types.ts +150 -0
- package/src/attr/values.test.ts +271 -0
- package/src/attr/values.ts +506 -0
- package/src/chains/cheesecake.ts +22 -0
- package/src/chains/index.ts +1 -2
- package/src/chains/localhost.ts +3 -0
- package/src/clients/createPublicClient.test.ts +4 -6
- package/src/clients/createPublicClient.ts +9 -8
- package/src/clients/createWalletClient.test.ts +4 -4
- package/src/clients/createWalletClient.ts +13 -9
- package/src/clients/decorators/arkivAdvanced.ts +144 -0
- package/src/clients/decorators/arkivPublic.ts +181 -147
- package/src/clients/decorators/arkivWallet.ts +141 -122
- package/src/consts.ts +2 -1
- package/src/entity/create.test.ts +203 -0
- package/src/entity/errors.ts +39 -0
- package/src/entity/events.ts +16 -0
- package/src/entity/expiry.test.ts +195 -0
- package/src/entity/expiry.ts +182 -0
- package/src/entity/flags.ts +65 -0
- package/src/entity/index.ts +16 -0
- package/src/entity/key.ts +88 -0
- package/src/entity/operations.ts +135 -0
- package/src/entity/params.ts +15 -0
- package/src/errors.ts +33 -28
- package/src/index.ts +19 -0
- package/src/query/engine.ts +68 -132
- package/src/query/errors.ts +151 -0
- package/src/query/expression.test.ts +286 -0
- package/src/query/expression.ts +500 -0
- package/src/query/index.ts +40 -4
- package/src/query/injection.test.ts +151 -0
- package/src/query/queryBuilder.test.ts +342 -637
- package/src/query/queryBuilder.ts +133 -359
- package/src/query/queryResult.ts +54 -51
- package/src/query/selection.test.ts +48 -98
- package/src/query/selection.ts +77 -65
- package/src/types/entity.test.ts +44 -155
- package/src/types/entity.ts +62 -44
- package/src/types/events.ts +64 -23
- package/src/types/index.ts +24 -20
- package/src/types/rpcSchema.ts +71 -33
- package/src/types/txParams.ts +8 -0
- package/src/utils/arkivTransactions.test.ts +687 -38
- package/src/utils/arkivTransactions.ts +400 -115
- package/src/utils/chains.test.ts +21 -24
- package/src/utils/compression.ts +1 -1
- package/src/utils/entities.test.ts +62 -0
- package/src/utils/entities.ts +111 -29
- package/src/utils/expirationTime.ts +153 -10
- package/src/utils/logger.ts +2 -2
- package/src/utils/payload.ts +29 -2
- package/src/utils/revert.test.ts +99 -0
- package/src/utils/revert.ts +145 -0
- package/dist/chains-BifaY04V.cjs +0 -108
- package/dist/chains-CrtkVbBh.js +0 -86
- package/dist/chains-CrtkVbBh.js.map +0 -1
- package/dist/consts-AUoL-v42.cjs +0 -18
- package/dist/consts-BV4PR-de.js +0 -7
- package/dist/consts-BV4PR-de.js.map +0 -1
- package/dist/entity-B6g_EPm1.d.cts +0 -382
- package/dist/entity-B6g_EPm1.d.cts.map +0 -1
- package/dist/entity-qoLMAuuk.d.ts +0 -382
- package/dist/entity-qoLMAuuk.d.ts.map +0 -1
- package/dist/index-DdspxNAA.d.ts +0 -481
- package/dist/index-DdspxNAA.d.ts.map +0 -1
- package/dist/index-Ds9dwqb5.d.cts +0 -481
- package/dist/index-Ds9dwqb5.d.cts.map +0 -1
- package/dist/payload-B2kFJyah.d.ts +0 -6
- package/dist/payload-B2kFJyah.d.ts.map +0 -1
- package/dist/payload-CJN8fTvX.d.cts +0 -6
- package/dist/payload-CJN8fTvX.d.cts.map +0 -1
- package/dist/payload-Claf2jUO.js +0 -13
- package/dist/payload-Claf2jUO.js.map +0 -1
- package/dist/payload-DpA5PA-w.cjs +0 -23
- package/dist/query/index.js.map +0 -1
- package/dist/queryBuilder-D2uwP9jI.js +0 -704
- package/dist/queryBuilder-D2uwP9jI.js.map +0 -1
- package/dist/queryBuilder-UW2MCaX4.cjs +0 -792
- package/dist/utils/index.d.cts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/src/actions/public/buildQuery.ts +0 -10
- package/src/actions/public/subscribeEntityEvents.ts +0 -119
- package/src/actions/wallet/mutateEntities.ts +0 -111
- package/src/actions/wallet/updateEntity.ts +0 -60
- package/src/chains/braga.ts +0 -26
- package/src/chains/kaolin.ts +0 -29
- package/src/query/engine.test.ts +0 -526
- package/src/query/predicate.test.ts +0 -461
- package/src/query/predicate.ts +0 -144
- package/src/query/queryResult.test.ts +0 -270
- package/src/query/selectQueryBuilder.test.ts +0 -210
- package/src/types/attributes.ts +0 -16
- package/src/utils/validation.test.ts +0 -60
- package/src/utils/validation.ts +0 -32
- /package/dist/{types-H-TSmRpm.js → attr-DlmErkvR.cjs} +0 -0
- /package/dist/{types-o3zWarRp.cjs → attr-GcQKatub.js} +0 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { Account, Chain, Client, Hash, TransactionReceipt, Transport } from "viem"
|
|
2
|
+
import type {
|
|
3
|
+
BuildMutationOptions,
|
|
4
|
+
BuildMutationReturnType,
|
|
5
|
+
} from "../../actions/advanced/buildMutation"
|
|
6
|
+
import { buildMutation } from "../../actions/advanced/buildMutation"
|
|
7
|
+
import type {
|
|
8
|
+
GetMutationResultReturnType,
|
|
9
|
+
MutationResult,
|
|
10
|
+
} from "../../actions/advanced/getMutationResult"
|
|
11
|
+
import { decodeMutationResult, getMutationResult } from "../../actions/advanced/getMutationResult"
|
|
12
|
+
import type { PingTransactionReturnType } from "../../actions/advanced/pingTransaction"
|
|
13
|
+
import { pingTransaction } from "../../actions/advanced/pingTransaction"
|
|
14
|
+
import type {
|
|
15
|
+
SendMutationOptions,
|
|
16
|
+
SendMutationReturnType,
|
|
17
|
+
} from "../../actions/advanced/sendMutation"
|
|
18
|
+
import { sendMutation } from "../../actions/advanced/sendMutation"
|
|
19
|
+
import type { EntityMutationOps } from "../../utils/arkivTransactions"
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The read-only half of the advanced path — checking on a transaction and decoding its result —
|
|
23
|
+
* which needs no account, so a Public Client carries it too.
|
|
24
|
+
*
|
|
25
|
+
* Every action here costs at most one RPC call, and says exactly which.
|
|
26
|
+
*/
|
|
27
|
+
export type PublicAdvancedActions = {
|
|
28
|
+
/**
|
|
29
|
+
* Asks the chain — once — whether a transaction has landed. Exactly one
|
|
30
|
+
* `eth_getTransactionReceipt`, never a poll: an unmined transaction comes back as
|
|
31
|
+
* `{ status: "pending" }` and the schedule stays yours.
|
|
32
|
+
*
|
|
33
|
+
* @param txHash - The transaction hash returned by `sendMutation` (or any other send)
|
|
34
|
+
* @returns `{ status: "pending" }`, or `{ status: "success" | "reverted", blockNumber }`
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* const { status } = await client.advanced.pingTransaction(txHash)
|
|
38
|
+
* if (status === "pending") scheduleAnotherPing()
|
|
39
|
+
*/
|
|
40
|
+
pingTransaction: (txHash: Hash) => Promise<PingTransactionReturnType>
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Fetches a transaction's receipt — once — and decodes what the mutation did: created keys and
|
|
44
|
+
* expiries, plus the keys of everything patched, deleted, extended or handed over. One
|
|
45
|
+
* `eth_getTransactionReceipt`; `{ status: "pending" }` if not mined yet. No revert diagnosis is
|
|
46
|
+
* run on a `reverted` result — that extra call is yours to spend or skip.
|
|
47
|
+
*
|
|
48
|
+
* @param txHash - The transaction hash
|
|
49
|
+
* @returns The decoded {@link MutationResult}, or `{ status: "pending" }`
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* const result = await client.advanced.getMutationResult(txHash)
|
|
53
|
+
* if (result.status === "success") console.log(result.createdEntities)
|
|
54
|
+
*/
|
|
55
|
+
getMutationResult: (txHash: Hash) => Promise<GetMutationResultReturnType>
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Decodes a receipt you already hold into a {@link MutationResult}. **Zero RPC calls** — for
|
|
59
|
+
* receipts that reached you through your own `waitForTransactionReceipt`, a block watcher, or a
|
|
60
|
+
* webhook.
|
|
61
|
+
*
|
|
62
|
+
* @param receipt - The transaction receipt
|
|
63
|
+
* @returns The decoded {@link MutationResult}
|
|
64
|
+
*/
|
|
65
|
+
decodeMutationResult: (receipt: TransactionReceipt) => MutationResult
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The advanced path on a Wallet Client: build, send, ping and read results as separate steps, each
|
|
70
|
+
* costing the minimum number of RPC calls — down to one per transaction when you supply what the
|
|
71
|
+
* SDK would otherwise look up.
|
|
72
|
+
*
|
|
73
|
+
* The everyday actions (`createEntity`, `executeBatch`, …) bundle send + wait + decode and are
|
|
74
|
+
* the right default. This namespace unbundles them for callers optimising their RPC budget.
|
|
75
|
+
*
|
|
76
|
+
* @example Minimal-call flow: one send, one ping, done.
|
|
77
|
+
* const { txHash } = await client.advanced.sendMutation(
|
|
78
|
+
* { creates: [{ payload, contentType: "application/json", expires }] },
|
|
79
|
+
* { currentBlock, txParams: { nonce, gas: 1_000_000n, maxFeePerGas, maxPriorityFeePerGas } },
|
|
80
|
+
* ) // exactly 1 RPC call: eth_sendRawTransaction
|
|
81
|
+
* // ... later, on your own schedule:
|
|
82
|
+
* const result = await client.advanced.getMutationResult(txHash) // 1 RPC call
|
|
83
|
+
* if (result.status === "success") console.log(result.createdEntities)
|
|
84
|
+
*/
|
|
85
|
+
export type WalletAdvancedActions = PublicAdvancedActions & {
|
|
86
|
+
/**
|
|
87
|
+
* Encodes a mutation batch without sending anything: zero RPC calls with `currentBlock` supplied
|
|
88
|
+
* (or when no expiry is relative), at most one `eth_blockNumber` otherwise. Returns the
|
|
89
|
+
* operations for `writeContract`, and the `{ to, data }` calldata for offline signing.
|
|
90
|
+
*
|
|
91
|
+
* @param data - The batch (creates, patches, deletes, extensions, ownershipChanges)
|
|
92
|
+
* @param options - Optional `currentBlock` to avoid the `eth_blockNumber` lookup
|
|
93
|
+
*/
|
|
94
|
+
buildMutation: (
|
|
95
|
+
data: EntityMutationOps,
|
|
96
|
+
options?: BuildMutationOptions,
|
|
97
|
+
) => Promise<BuildMutationReturnType>
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Signs and sends a mutation batch, returning the hash as soon as the transaction is submitted —
|
|
101
|
+
* no waiting, no polling, no revert diagnosis. With `currentBlock` and full `txParams` (nonce,
|
|
102
|
+
* gas, fees) supplied this is exactly one `eth_sendRawTransaction`; each omitted piece adds only
|
|
103
|
+
* the lookup viem needs to fill it.
|
|
104
|
+
*
|
|
105
|
+
* @param data - The batch (creates, patches, deletes, extensions, ownershipChanges)
|
|
106
|
+
* @param options - Optional `currentBlock` and `txParams`
|
|
107
|
+
* @returns The transaction hash and the batch's per-kind operation counts
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* const { txHash } = await client.advanced.sendMutation({
|
|
111
|
+
* creates: [{ payload, contentType: "application/json", expires: ExpirationTime.atBlock(1_200_000n) }],
|
|
112
|
+
* })
|
|
113
|
+
*/
|
|
114
|
+
sendMutation: (
|
|
115
|
+
data: EntityMutationOps,
|
|
116
|
+
options?: SendMutationOptions,
|
|
117
|
+
) => Promise<SendMutationReturnType>
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function publicAdvancedActions<
|
|
121
|
+
transport extends Transport = Transport,
|
|
122
|
+
chain extends Chain | undefined = Chain | undefined,
|
|
123
|
+
account extends Account | undefined = Account | undefined,
|
|
124
|
+
>(client: Client<transport, chain, account>): PublicAdvancedActions {
|
|
125
|
+
return {
|
|
126
|
+
pingTransaction: (txHash: Hash) => pingTransaction(client, txHash),
|
|
127
|
+
getMutationResult: (txHash: Hash) => getMutationResult(client, txHash),
|
|
128
|
+
decodeMutationResult: (receipt: TransactionReceipt) => decodeMutationResult(receipt),
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export function walletAdvancedActions<
|
|
133
|
+
transport extends Transport = Transport,
|
|
134
|
+
chain extends Chain | undefined = Chain | undefined,
|
|
135
|
+
account extends Account | undefined = Account | undefined,
|
|
136
|
+
>(client: Client<transport, chain, account>): WalletAdvancedActions {
|
|
137
|
+
return {
|
|
138
|
+
...publicAdvancedActions(client),
|
|
139
|
+
buildMutation: (data: EntityMutationOps, options?: BuildMutationOptions) =>
|
|
140
|
+
buildMutation(client, data, options),
|
|
141
|
+
sendMutation: (data: EntityMutationOps, options?: SendMutationOptions) =>
|
|
142
|
+
sendMutation(client, data, options),
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
import type { Account, Chain, Client, Hex, PublicActions, Transport } from "viem"
|
|
2
|
-
import { getBlockTiming } from "../../actions/public/getBlockTiming"
|
|
1
|
+
import type { Account, Address, Chain, Client, Hex, PublicActions, Transport } from "viem"
|
|
2
|
+
import { type GetBlockTimingReturnType, getBlockTiming } from "../../actions/public/getBlockTiming"
|
|
3
3
|
import { getEntity } from "../../actions/public/getEntity"
|
|
4
4
|
import { getEntityCount } from "../../actions/public/getEntityCount"
|
|
5
|
+
import { getEntityNonce } from "../../actions/public/getEntityNonce"
|
|
6
|
+
import {
|
|
7
|
+
type PredictEntityKeysParameters,
|
|
8
|
+
type PredictEntityKeysReturnType,
|
|
9
|
+
predictEntityKeys,
|
|
10
|
+
} from "../../actions/public/predictEntityKeys"
|
|
5
11
|
import { type QueryOptions, type QueryReturnType, query } from "../../actions/public/query"
|
|
6
|
-
import {
|
|
7
|
-
|
|
12
|
+
import {
|
|
13
|
+
type WatchEntityEventsParameters,
|
|
14
|
+
watchEntityEvents,
|
|
15
|
+
} from "../../actions/public/watchEntityEvents"
|
|
16
|
+
import type { SaltInput } from "../../entity/key"
|
|
17
|
+
import type { Expression } from "../../query/expression"
|
|
18
|
+
import { SelectQueryBuilder } from "../../query/queryBuilder"
|
|
8
19
|
import type { EntitySelection, FullEntity, ProjectedEntity, SelectArg } from "../../query/selection"
|
|
9
20
|
import type { Entity } from "../../types/entity"
|
|
10
|
-
import type
|
|
11
|
-
OnEntityCreatedEvent,
|
|
12
|
-
OnEntityDeletedEvent,
|
|
13
|
-
OnEntityExpiredEvent,
|
|
14
|
-
OnEntityExpiresInExtendedEvent,
|
|
15
|
-
OnEntityUpdatedEvent,
|
|
16
|
-
} from "../../types/events"
|
|
21
|
+
import { type PublicAdvancedActions, publicAdvancedActions } from "./arkivAdvanced"
|
|
17
22
|
|
|
18
23
|
export type PublicArkivActions<
|
|
19
24
|
transport extends Transport = Transport,
|
|
@@ -35,33 +40,42 @@ export type PublicArkivActions<
|
|
|
35
40
|
/**
|
|
36
41
|
* Returns the entity with the given key.
|
|
37
42
|
*
|
|
38
|
-
* -
|
|
43
|
+
* - JSON-RPC Methods: `arkiv_query`
|
|
39
44
|
*
|
|
40
45
|
* @param key - The entity key (hex string)
|
|
41
|
-
* @returns The entity with the given key. {@link
|
|
46
|
+
* @returns The entity with the given key, with every field populated. {@link FullEntity}
|
|
47
|
+
*
|
|
48
|
+
* @throws {InvalidValueError} If the key is not 32 bytes.
|
|
49
|
+
* @throws {NoEntityFoundError} If no live entity has that key — it never existed, or it was
|
|
50
|
+
* deleted or has expired.
|
|
42
51
|
*
|
|
43
52
|
* @example
|
|
44
|
-
* import { createPublicClient
|
|
45
|
-
* import {
|
|
53
|
+
* import { createPublicClient } from "@arkiv-network/sdk"
|
|
54
|
+
* import { cheesecake } from "@arkiv-network/sdk/chains"
|
|
55
|
+
* import { http } from "viem"
|
|
46
56
|
*
|
|
47
57
|
* const client = createPublicClient({
|
|
48
|
-
* chain:
|
|
58
|
+
* chain: cheesecake,
|
|
49
59
|
* transport: http(),
|
|
50
60
|
* })
|
|
51
|
-
* const entity = await client.getEntity(
|
|
52
|
-
* // {
|
|
53
|
-
* // key: "
|
|
54
|
-
* //
|
|
61
|
+
* const entity = await client.getEntity(entityKey)
|
|
62
|
+
* // Entity {
|
|
63
|
+
* // key: "0x9f2c…",
|
|
64
|
+
* // owner: "0xabc…",
|
|
65
|
+
* // contentType: "application/json",
|
|
66
|
+
* // payload: Uint8Array, // entity.toJson() / entity.toText() decode it
|
|
67
|
+
* // attributes: { category: { type: "str", value: "docs" } },
|
|
68
|
+
* // expiresAt: 1_297_000n,
|
|
55
69
|
* // }
|
|
56
70
|
*/
|
|
57
|
-
getEntity: (key: Hex) => Promise<
|
|
71
|
+
getEntity: (key: Hex) => Promise<FullEntity>
|
|
58
72
|
|
|
59
73
|
/**
|
|
60
74
|
* Returns a SelectQueryBuilder for building and executing queries — the recommended way to
|
|
61
75
|
* read entities. You declare up front which parts of an entity you want returned, so results
|
|
62
76
|
* always contain exactly the data you asked for.
|
|
63
77
|
*
|
|
64
|
-
* -
|
|
78
|
+
* - JSON-RPC Methods: `arkiv_query`
|
|
65
79
|
*
|
|
66
80
|
* @param selection - What to include in the results. Omit it (or pass `"*"`) to select everything,
|
|
67
81
|
* or pass an object to select specific parts (at least one field is required). Every part is
|
|
@@ -70,12 +84,13 @@ export type PublicArkivActions<
|
|
|
70
84
|
* @returns A SelectQueryBuilder instance for building and executing queries. {@link SelectQueryBuilder}
|
|
71
85
|
*
|
|
72
86
|
* @example
|
|
73
|
-
* import { createPublicClient
|
|
74
|
-
* import {
|
|
75
|
-
* import { eq } from
|
|
87
|
+
* import { createPublicClient } from "@arkiv-network/sdk"
|
|
88
|
+
* import { cheesecake } from "@arkiv-network/sdk/chains"
|
|
89
|
+
* import { eq } from "@arkiv-network/sdk/query"
|
|
90
|
+
* import { http } from "viem"
|
|
76
91
|
*
|
|
77
92
|
* const client = createPublicClient({
|
|
78
|
-
* chain:
|
|
93
|
+
* chain: cheesecake,
|
|
79
94
|
* transport: http(),
|
|
80
95
|
* })
|
|
81
96
|
* // select everything
|
|
@@ -83,7 +98,7 @@ export type PublicArkivActions<
|
|
|
83
98
|
* await client.select("*").where(eq("category", "docs")).fetch()
|
|
84
99
|
* // only the key
|
|
85
100
|
* await client.select({ key: true }).where(eq("category", "docs")).fetch()
|
|
86
|
-
* // select specific fields — result typed { owner: Hex; attributes:
|
|
101
|
+
* // select specific fields — result typed { owner: Hex; attributes: Attributes }
|
|
87
102
|
* await client.select({ owner: true, attributes: true }).fetch()
|
|
88
103
|
* // a single field — result typed { owner: Hex }
|
|
89
104
|
* await client.select({ owner: true }).fetch()
|
|
@@ -95,9 +110,11 @@ export type PublicArkivActions<
|
|
|
95
110
|
* Pick the entity fields to return. Set the ones you want to `true` (at least one is required);
|
|
96
111
|
* the result is typed to exactly those fields, so reading anything else is a compile error.
|
|
97
112
|
*
|
|
98
|
-
* Available fields: `key`, `owner`, `creator`, `
|
|
99
|
-
* `
|
|
100
|
-
*
|
|
113
|
+
* Available fields: `key`, `owner`, `creator`, `createdAt`, `updatedAt`, `expiresAt`,
|
|
114
|
+
* `creationFlags`, `contentType`, `payload`, `attributeSchema` and `attributes`.
|
|
115
|
+
*
|
|
116
|
+
* `attributes` also takes a map of names, to fetch only those:
|
|
117
|
+
* `select({ key: true, attributes: { projectId: true } })`.
|
|
101
118
|
*
|
|
102
119
|
* Pass the selection inline so its fields stay literal `true`. A selection stored in a `let`/
|
|
103
120
|
* `const` variable widens to `boolean` and the result type can no longer be narrowed — annotate
|
|
@@ -105,7 +122,8 @@ export type PublicArkivActions<
|
|
|
105
122
|
*
|
|
106
123
|
* @example
|
|
107
124
|
* client.select({ owner: true, attributes: true }) // entities typed { owner, attributes }
|
|
108
|
-
* client.select({ key: true, payload: true })
|
|
125
|
+
* client.select({ key: true, payload: true }) // includes payload → toText()/toJson() too
|
|
126
|
+
* client.select({ key: true, attributeSchema: true }) // what shape is the data?
|
|
109
127
|
*/
|
|
110
128
|
<const S extends EntitySelection>(selection: S): SelectQueryBuilder<ProjectedEntity<S>>
|
|
111
129
|
/**
|
|
@@ -116,90 +134,133 @@ export type PublicArkivActions<
|
|
|
116
134
|
}
|
|
117
135
|
|
|
118
136
|
/**
|
|
119
|
-
*
|
|
120
|
-
* The QueryBuilder object follows the Builder pattern, allowing you to chain methods to build a query and then execute it.
|
|
121
|
-
*
|
|
122
|
-
* - Docs: https://docs.arkiv.network/ts-sdk/actions/public/query
|
|
137
|
+
* Runs one query and returns one page, with no builder in between.
|
|
123
138
|
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
139
|
+
* Use {@link PublicArkivActions.select} for anything typed — this returns full {@link Entity} objects whatever the
|
|
140
|
+
* selection, and takes a raw string as an escape hatch for a query built elsewhere. A raw string
|
|
141
|
+
* goes to the node exactly as written, with none of the name, type or operator checks the
|
|
142
|
+
* expression combinators apply.
|
|
128
143
|
*
|
|
129
|
-
* @
|
|
144
|
+
* @param query - An {@link Expression}, or the raw query string.
|
|
145
|
+
* @param queryOptions - Selection, page size, cursor and block. {@link QueryOptions}
|
|
146
|
+
* @returns One page of entities. {@link QueryReturnType}
|
|
130
147
|
*
|
|
131
148
|
* @example
|
|
132
|
-
* import { createPublicClient
|
|
133
|
-
* import {
|
|
149
|
+
* import { createPublicClient } from "@arkiv-network/sdk"
|
|
150
|
+
* import { cheesecake } from "@arkiv-network/sdk/chains"
|
|
151
|
+
* import { and, eq, gte } from "@arkiv-network/sdk/query"
|
|
152
|
+
* import { i32 } from "@arkiv-network/sdk/attr"
|
|
153
|
+
* import { http } from "viem"
|
|
134
154
|
*
|
|
135
155
|
* const client = createPublicClient({
|
|
136
|
-
* chain:
|
|
156
|
+
* chain: cheesecake,
|
|
137
157
|
* transport: http(),
|
|
138
158
|
* })
|
|
139
|
-
* const
|
|
140
|
-
*
|
|
159
|
+
* const page = await client.query(and(eq("category", "docs"), gte("level", i32(10))), {
|
|
160
|
+
* select: { key: true, attributes: true },
|
|
161
|
+
* limit: 100,
|
|
162
|
+
* })
|
|
163
|
+
* // { entities: [Entity], cursor: "b64:…", blockNumber: 32223n }
|
|
141
164
|
*
|
|
165
|
+
* // The raw form, unchecked:
|
|
166
|
+
* await client.query("category = str('docs') AND level >= i32(10)")
|
|
142
167
|
*/
|
|
143
|
-
|
|
168
|
+
query: (query: Expression | string, queryOptions?: QueryOptions) => Promise<QueryReturnType>
|
|
144
169
|
|
|
145
170
|
/**
|
|
146
|
-
* Returns
|
|
147
|
-
*
|
|
148
|
-
* @param query - The raw query string
|
|
149
|
-
* @param queryOptions - The optional query options - {@link QueryOptions}
|
|
150
|
-
* @returns A QueryReturnType instance - {@link QueryReturnType}
|
|
171
|
+
* Returns the total number of entities on the chain.
|
|
172
|
+
* @returns The number of entities currently stored
|
|
151
173
|
*
|
|
152
174
|
* @example
|
|
153
|
-
* import { createPublicClient
|
|
154
|
-
* import {
|
|
175
|
+
* import { createPublicClient } from "@arkiv-network/sdk"
|
|
176
|
+
* import { cheesecake } from "@arkiv-network/sdk/chains"
|
|
177
|
+
* import { http } from "viem"
|
|
155
178
|
*
|
|
156
179
|
* const client = createPublicClient({
|
|
157
|
-
* chain:
|
|
180
|
+
* chain: cheesecake,
|
|
158
181
|
* transport: http(),
|
|
159
182
|
* })
|
|
160
|
-
* const
|
|
161
|
-
* //
|
|
162
|
-
* const queryResultWithOptions = client.query('key = value && $owner = 0x123', {
|
|
163
|
-
* includeData: {
|
|
164
|
-
* attributes: false,
|
|
165
|
-
* payload: true,
|
|
166
|
-
* metadata: true,
|
|
167
|
-
* },
|
|
168
|
-
* resultsPerPage: 10,
|
|
169
|
-
* cursor: undefined,
|
|
170
|
-
* atBlock: undefined,
|
|
171
|
-
* })
|
|
172
|
-
* // queryResultWithOptions = { entities: [{ key: "0x123", value: "0x123" }], cursor: "...", blockNumber: 32223n }
|
|
183
|
+
* const entityCount = await client.getEntityCount()
|
|
184
|
+
* // entityCount = 0
|
|
173
185
|
*/
|
|
174
|
-
|
|
186
|
+
getEntityCount: () => Promise<number>
|
|
175
187
|
|
|
176
188
|
/**
|
|
177
|
-
* Returns
|
|
178
|
-
*
|
|
189
|
+
* Returns how many entities an account has created — its entity-minting nonce.
|
|
190
|
+
*
|
|
191
|
+
* Not the account's transaction nonce: the engine keeps its own counter per creator and mixes it
|
|
192
|
+
* into every key it mints, which is why two identical creates from one account never collide.
|
|
193
|
+
*
|
|
194
|
+
* @param owner - The account whose nonce to read.
|
|
195
|
+
* @returns The nonce the account's next create will use.
|
|
179
196
|
*
|
|
180
197
|
* @example
|
|
181
|
-
* import { createPublicClient
|
|
182
|
-
* import {
|
|
198
|
+
* import { createPublicClient } from "@arkiv-network/sdk"
|
|
199
|
+
* import { cheesecake } from "@arkiv-network/sdk/chains"
|
|
200
|
+
* import { http } from "viem"
|
|
183
201
|
*
|
|
184
202
|
* const client = createPublicClient({
|
|
185
|
-
* chain:
|
|
203
|
+
* chain: cheesecake,
|
|
186
204
|
* transport: http(),
|
|
187
205
|
* })
|
|
188
|
-
* const
|
|
189
|
-
* //
|
|
206
|
+
* const nonce = await client.getEntityNonce("0xabc…")
|
|
207
|
+
* // 7n — the next entity this account creates is its eighth
|
|
190
208
|
*/
|
|
191
|
-
|
|
209
|
+
getEntityNonce: (owner: Address) => Promise<bigint>
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Works out the keys an account's next creates will be given, before sending them.
|
|
213
|
+
*
|
|
214
|
+
* The engine derives a key from the chain, the registry, the owner, the owner's nonce and a
|
|
215
|
+
* salt — everything but the nonce is known to the caller, and the nonce is read here. This is
|
|
216
|
+
* what lets a batch reference an entity it is about to mint.
|
|
217
|
+
*
|
|
218
|
+
* Each key arrives paired with the salt that mints it, because a create defaults to a *random*
|
|
219
|
+
* salt: a predicted key only holds if the create carries the salt it was predicted with. And the
|
|
220
|
+
* prediction holds only while nothing else from this owner is in flight — for a key you can rely
|
|
221
|
+
* on unconditionally, read it back from the create instead.
|
|
222
|
+
*
|
|
223
|
+
* A literal `count` comes back as a fixed-length tuple, so the pairs destructure into names.
|
|
224
|
+
*
|
|
225
|
+
* @param parameters - Owner, and either a count or the salts. {@link PredictEntityKeysParameters}
|
|
226
|
+
* @returns One `{ key, salt }` pair per create, in batch order.
|
|
227
|
+
* {@link PredictEntityKeysReturnType}
|
|
228
|
+
*
|
|
229
|
+
* @example A batch whose second entity points at its first.
|
|
230
|
+
* import { key } from "@arkiv-network/sdk/attr"
|
|
231
|
+
*
|
|
232
|
+
* const [parent, child] = await client.predictEntityKeys({ owner: account.address, count: 2 })
|
|
233
|
+
* await wallet.executeBatch({
|
|
234
|
+
* creates: [
|
|
235
|
+
* { payload, contentType, expires, salt: parent.salt },
|
|
236
|
+
* {
|
|
237
|
+
* payload,
|
|
238
|
+
* contentType,
|
|
239
|
+
* expires,
|
|
240
|
+
* salt: child.salt,
|
|
241
|
+
* attributes: { parent: key(parent.key) },
|
|
242
|
+
* },
|
|
243
|
+
* ],
|
|
244
|
+
* })
|
|
245
|
+
*/
|
|
246
|
+
predictEntityKeys: <
|
|
247
|
+
const TCount extends number = number,
|
|
248
|
+
const TSalts extends readonly SaltInput[] | undefined = undefined,
|
|
249
|
+
>(
|
|
250
|
+
parameters: PredictEntityKeysParameters<TCount, TSalts>,
|
|
251
|
+
) => Promise<PredictEntityKeysReturnType<TCount, TSalts>>
|
|
192
252
|
|
|
193
253
|
/**
|
|
194
254
|
* Returns the current block timing.
|
|
195
255
|
* @returns The current block timing. {@link GetBlockTimingReturnType}
|
|
196
256
|
*
|
|
197
257
|
* @example
|
|
198
|
-
* import { createPublicClient
|
|
199
|
-
* import {
|
|
258
|
+
* import { createPublicClient } from "@arkiv-network/sdk"
|
|
259
|
+
* import { cheesecake } from "@arkiv-network/sdk/chains"
|
|
260
|
+
* import { http } from "viem"
|
|
200
261
|
*
|
|
201
262
|
* const client = createPublicClient({
|
|
202
|
-
* chain:
|
|
263
|
+
* chain: cheesecake,
|
|
203
264
|
* transport: http(),
|
|
204
265
|
* })
|
|
205
266
|
* const blockTiming = await client.getBlockTiming()
|
|
@@ -209,50 +270,45 @@ export type PublicArkivActions<
|
|
|
209
270
|
* // blockDuration: 2, // in seconds
|
|
210
271
|
* // }
|
|
211
272
|
*/
|
|
212
|
-
getBlockTiming: () => Promise<
|
|
213
|
-
currentBlock: bigint
|
|
214
|
-
currentBlockTime: number
|
|
215
|
-
blockDuration: number
|
|
216
|
-
}>
|
|
273
|
+
getBlockTiming: () => Promise<GetBlockTimingReturnType>
|
|
217
274
|
|
|
218
275
|
/**
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
276
|
+
* Watches entity events, calling the handlers you pass as they arrive.
|
|
277
|
+
*
|
|
278
|
+
* All five are decoded from logs — `onEntityCreated`, `onEntityPatched`, `onExpiryExtended`,
|
|
279
|
+
* `onOwnershipTransferred`, `onEntityDeleted` — and each carries the block, transaction and log
|
|
280
|
+
* index it came from, which is the order the operations were applied in. `onEvent` receives all
|
|
281
|
+
* of them, whatever their type.
|
|
282
|
+
*
|
|
283
|
+
* @param parameters - Handlers and options, all optional. {@link WatchEntityEventsParameters}
|
|
284
|
+
* @returns A function that stops the watcher.
|
|
224
285
|
*
|
|
225
286
|
* @example
|
|
226
|
-
* import { createPublicClient
|
|
227
|
-
* import {
|
|
287
|
+
* import { createPublicClient } from "@arkiv-network/sdk"
|
|
288
|
+
* import { cheesecake } from "@arkiv-network/sdk/chains"
|
|
289
|
+
* import { http } from "viem"
|
|
228
290
|
*
|
|
229
291
|
* const client = createPublicClient({
|
|
230
|
-
* chain:
|
|
292
|
+
* chain: cheesecake,
|
|
231
293
|
* transport: http(),
|
|
232
294
|
* })
|
|
233
|
-
* const
|
|
234
|
-
*
|
|
295
|
+
* const unwatch = client.watchEntityEvents({
|
|
296
|
+
* onEntityCreated: ({ entityKey, expiresAt }) => console.log(entityKey, "until", expiresAt),
|
|
297
|
+
* onError: (error) => console.error("watchEntityEvents error", error),
|
|
235
298
|
* })
|
|
236
|
-
*
|
|
299
|
+
* unwatch() // stop watching
|
|
300
|
+
*/
|
|
301
|
+
watchEntityEvents: (parameters: WatchEntityEventsParameters) => () => void
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* The read-only half of the advanced path: check on a transaction and decode its result with at
|
|
305
|
+
* most one RPC call per action — so a process that holds nothing but a transaction hash can
|
|
306
|
+
* follow it without a wallet. {@link PublicAdvancedActions}
|
|
307
|
+
*
|
|
308
|
+
* @example
|
|
309
|
+
* const { status } = await client.advanced.pingTransaction(txHash) // 1 eth_getTransactionReceipt
|
|
237
310
|
*/
|
|
238
|
-
|
|
239
|
-
{
|
|
240
|
-
onError,
|
|
241
|
-
onEntityCreated,
|
|
242
|
-
onEntityUpdated,
|
|
243
|
-
onEntityDeleted,
|
|
244
|
-
onEntityExpiresInExtended,
|
|
245
|
-
}: {
|
|
246
|
-
onError?: (error: Error) => void
|
|
247
|
-
onEntityCreated?: (event: OnEntityCreatedEvent) => void
|
|
248
|
-
onEntityUpdated?: (event: OnEntityUpdatedEvent) => void
|
|
249
|
-
onEntityDeleted?: (event: OnEntityDeletedEvent) => void
|
|
250
|
-
onEntityExpired?: (event: OnEntityExpiredEvent) => void
|
|
251
|
-
onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void
|
|
252
|
-
},
|
|
253
|
-
pollingInterval?: number,
|
|
254
|
-
fromBlock?: bigint,
|
|
255
|
-
) => Promise<() => void>
|
|
311
|
+
advanced: PublicAdvancedActions
|
|
256
312
|
}
|
|
257
313
|
|
|
258
314
|
export function publicArkivActions<
|
|
@@ -262,42 +318,20 @@ export function publicArkivActions<
|
|
|
262
318
|
>(client: Client<transport, chain, account>) {
|
|
263
319
|
return {
|
|
264
320
|
getEntity: (key: Hex) => getEntity(client, key),
|
|
265
|
-
query: (rawQuery: string, queryOptions?: QueryOptions) =>
|
|
266
|
-
|
|
321
|
+
query: (rawQuery: Expression | string, queryOptions?: QueryOptions) =>
|
|
322
|
+
query(client, rawQuery, queryOptions),
|
|
267
323
|
select: (selection?: SelectArg) => new SelectQueryBuilder(client, selection),
|
|
268
324
|
getBlockTiming: () => getBlockTiming(client),
|
|
269
325
|
getEntityCount: () => getEntityCount(client),
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
onEntityCreated?: (event: OnEntityCreatedEvent) => void
|
|
281
|
-
onEntityUpdated?: (event: OnEntityUpdatedEvent) => void
|
|
282
|
-
onEntityDeleted?: (event: OnEntityDeletedEvent) => void
|
|
283
|
-
onEntityExpired?: (event: OnEntityExpiredEvent) => void
|
|
284
|
-
onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void
|
|
285
|
-
},
|
|
286
|
-
pollingInterval?: number,
|
|
287
|
-
fromBlock?: bigint,
|
|
288
|
-
) =>
|
|
289
|
-
subscribeEntityEvents(
|
|
290
|
-
client,
|
|
291
|
-
{
|
|
292
|
-
onError,
|
|
293
|
-
onEntityCreated,
|
|
294
|
-
onEntityUpdated,
|
|
295
|
-
onEntityDeleted,
|
|
296
|
-
onEntityExpired,
|
|
297
|
-
onEntityExpiresInExtended,
|
|
298
|
-
},
|
|
299
|
-
pollingInterval,
|
|
300
|
-
fromBlock,
|
|
301
|
-
),
|
|
326
|
+
getEntityNonce: (owner: Address) => getEntityNonce(client, owner),
|
|
327
|
+
predictEntityKeys: <
|
|
328
|
+
const TCount extends number = number,
|
|
329
|
+
const TSalts extends readonly SaltInput[] | undefined = undefined,
|
|
330
|
+
>(
|
|
331
|
+
parameters: PredictEntityKeysParameters<TCount, TSalts>,
|
|
332
|
+
) => predictEntityKeys(client, parameters),
|
|
333
|
+
watchEntityEvents: (parameters: WatchEntityEventsParameters) =>
|
|
334
|
+
watchEntityEvents(client, parameters),
|
|
335
|
+
advanced: publicAdvancedActions(client),
|
|
302
336
|
}
|
|
303
337
|
}
|