@artblocks/abx-sdk 0.1.0-alpha.4 → 0.1.0-alpha.41
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/CHANGELOG.md +72 -0
- package/README.md +130 -0
- package/dist/abi/generated.d.ts +8502 -129
- package/dist/abi/generated.d.ts.map +1 -1
- package/dist/abi/generated.js +40 -22
- package/dist/abi/generated.js.map +1 -1
- package/dist/abi/index.d.ts +2645 -168
- package/dist/abi/index.d.ts.map +1 -1
- package/dist/abi/index.js +34 -7
- package/dist/abi/index.js.map +1 -1
- package/dist/anchors.d.ts +325 -0
- package/dist/anchors.d.ts.map +1 -0
- package/dist/anchors.js +740 -0
- package/dist/anchors.js.map +1 -0
- package/dist/chain-support.d.ts +28 -0
- package/dist/chain-support.d.ts.map +1 -0
- package/dist/chain-support.js +65 -0
- package/dist/chain-support.js.map +1 -0
- package/dist/chain-support.json +60 -0
- package/dist/chains.d.ts +24 -10
- package/dist/chains.d.ts.map +1 -1
- package/dist/chains.js +51 -17
- package/dist/chains.js.map +1 -1
- package/dist/chunks.d.ts +162 -31
- package/dist/chunks.d.ts.map +1 -1
- package/dist/chunks.js +179 -14
- package/dist/chunks.js.map +1 -1
- package/dist/clients.d.ts +23 -11
- package/dist/clients.d.ts.map +1 -1
- package/dist/clients.js +17 -18
- package/dist/clients.js.map +1 -1
- package/dist/contract-generations.d.ts +58 -0
- package/dist/contract-generations.d.ts.map +1 -0
- package/dist/contract-generations.js +109 -0
- package/dist/contract-generations.js.map +1 -0
- package/dist/contract-generations.json +48 -0
- package/dist/create2.d.ts +84 -1
- package/dist/create2.d.ts.map +1 -1
- package/dist/create2.js +158 -2
- package/dist/create2.js.map +1 -1
- package/dist/creator-token.d.ts +132 -0
- package/dist/creator-token.d.ts.map +1 -0
- package/dist/creator-token.js +183 -0
- package/dist/creator-token.js.map +1 -0
- package/dist/deploy.d.ts +234 -14
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +289 -111
- package/dist/deploy.js.map +1 -1
- package/dist/deployments.d.ts +38 -5
- package/dist/deployments.d.ts.map +1 -1
- package/dist/deployments.js +157 -30
- package/dist/deployments.js.map +1 -1
- package/dist/deps.d.ts +123 -6
- package/dist/deps.d.ts.map +1 -1
- package/dist/deps.js +249 -7
- package/dist/deps.js.map +1 -1
- package/dist/env.d.ts +5 -4
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +20 -5
- package/dist/env.js.map +1 -1
- package/dist/errors.d.ts +109 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +148 -0
- package/dist/errors.js.map +1 -0
- package/dist/execute.d.ts +118 -0
- package/dist/execute.d.ts.map +1 -0
- package/dist/execute.js +159 -0
- package/dist/execute.js.map +1 -0
- package/dist/gateways.d.ts +79 -0
- package/dist/gateways.d.ts.map +1 -0
- package/dist/gateways.js +156 -0
- package/dist/gateways.js.map +1 -0
- package/dist/generator-document.d.ts +57 -0
- package/dist/generator-document.d.ts.map +1 -0
- package/dist/generator-document.js +123 -0
- package/dist/generator-document.js.map +1 -0
- package/dist/generator.d.ts +44 -2
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +29 -0
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +19 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/inspect.d.ts +48 -0
- package/dist/inspect.d.ts.map +1 -0
- package/dist/inspect.js +295 -0
- package/dist/inspect.js.map +1 -0
- package/dist/migrate.d.ts +41 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +142 -0
- package/dist/migrate.js.map +1 -0
- package/dist/mime.d.ts +11 -0
- package/dist/mime.d.ts.map +1 -0
- package/dist/mime.js +40 -0
- package/dist/mime.js.map +1 -0
- package/dist/node.d.ts +69 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +92 -0
- package/dist/node.js.map +1 -0
- package/dist/onchain-uri.d.ts +110 -0
- package/dist/onchain-uri.d.ts.map +1 -0
- package/dist/onchain-uri.js +276 -0
- package/dist/onchain-uri.js.map +1 -0
- package/dist/ops.d.ts +507 -14
- package/dist/ops.d.ts.map +1 -1
- package/dist/ops.js +850 -34
- package/dist/ops.js.map +1 -1
- package/dist/policy.d.ts +57 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +35 -0
- package/dist/policy.js.map +1 -0
- package/dist/probe.d.ts +58 -0
- package/dist/probe.d.ts.map +1 -1
- package/dist/probe.js +190 -9
- package/dist/probe.js.map +1 -1
- package/dist/reconstruct.d.ts +141 -3
- package/dist/reconstruct.d.ts.map +1 -1
- package/dist/reconstruct.js +479 -100
- package/dist/reconstruct.js.map +1 -1
- package/dist/resume.d.ts +147 -0
- package/dist/resume.d.ts.map +1 -0
- package/dist/resume.js +146 -0
- package/dist/resume.js.map +1 -0
- package/dist/script-chunks.d.ts +105 -0
- package/dist/script-chunks.d.ts.map +1 -0
- package/dist/script-chunks.js +158 -0
- package/dist/script-chunks.js.map +1 -0
- package/dist/service.d.ts +155 -9
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +103 -11
- package/dist/service.js.map +1 -1
- package/dist/spine.d.ts +47 -4
- package/dist/spine.d.ts.map +1 -1
- package/dist/spine.js +0 -0
- package/dist/spine.js.map +1 -1
- package/dist/staging.d.ts +139 -0
- package/dist/staging.d.ts.map +1 -0
- package/dist/staging.js +139 -0
- package/dist/staging.js.map +1 -0
- package/dist/token.d.ts +11 -1
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +32 -1
- package/dist/token.js.map +1 -1
- package/dist/tokendata.d.ts +63 -3
- package/dist/tokendata.d.ts.map +1 -1
- package/dist/tokendata.js +81 -19
- package/dist/tokendata.js.map +1 -1
- package/dist/tokens.d.ts +119 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +317 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +107 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/util.d.ts +74 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +106 -0
- package/dist/util.js.map +1 -0
- package/package.json +15 -6
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# @artblocks/abx-sdk
|
|
2
|
+
|
|
3
|
+
## 0.1.0-alpha.41
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8ccbede: Enable Robinhood Chain production as beta after canonical deployment, paired-testnet qualification,
|
|
8
|
+
and managed-service validation. Surface the same real-funds warning and testnet-first gate used for
|
|
9
|
+
other production beta networks.
|
|
10
|
+
|
|
11
|
+
## 0.1.0-alpha.40
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- b9197bc: Record the exact-match canonical Robinhood Chain production deployment while keeping the network
|
|
16
|
+
disabled until its services and low-value acceptance gates pass.
|
|
17
|
+
|
|
18
|
+
## 0.1.0-alpha.39
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- 3d7fe3c: Record the verified canonical Robinhood Chain Testnet deployment and enable the network for
|
|
23
|
+
experimental qualification with explicit CLI and agent guidance.
|
|
24
|
+
- 7b462e2: Update the SDK's Viem dependency to the latest compatible patch release.
|
|
25
|
+
|
|
26
|
+
## 0.1.0-alpha.38
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- c2400a7: Stage Robinhood Chain and its testnet as disabled qualification targets, keep the network registry
|
|
31
|
+
focused on the current roadmap, and stop sale inspection from turning RPC read failures into false
|
|
32
|
+
zero-state results.
|
|
33
|
+
|
|
34
|
+
## 0.1.0-alpha.37
|
|
35
|
+
|
|
36
|
+
### Patch Changes
|
|
37
|
+
|
|
38
|
+
- 4512962: Enable Base production as beta, add a keyless read fallback, and surface production risk and paired-testnet guidance in the CLI, agent skill, and public docs.
|
|
39
|
+
|
|
40
|
+
## 0.1.0-alpha.36
|
|
41
|
+
|
|
42
|
+
### Patch Changes
|
|
43
|
+
|
|
44
|
+
- 5522192: Record the source-verified Base production contract deployment while keeping Base disabled for CLI
|
|
45
|
+
use until the separate beta-enablement release.
|
|
46
|
+
|
|
47
|
+
## 0.1.0-alpha.35
|
|
48
|
+
|
|
49
|
+
### Minor Changes
|
|
50
|
+
|
|
51
|
+
- 21e3d6c: Drop-in for existing v2 integrations; new deployments use the v3 production-candidate contracts.
|
|
52
|
+
Record the synchronized v3 factory generation and testnet deployments, retain full v2 service
|
|
53
|
+
compatibility (including already-assigned v2 sale minters), and update the renderer scaffold to
|
|
54
|
+
`abx-contracts` 3.0.0.
|
|
55
|
+
|
|
56
|
+
## 0.1.0-alpha.34
|
|
57
|
+
|
|
58
|
+
### Minor Changes
|
|
59
|
+
|
|
60
|
+
- 3ddba71: Drop-in for existing SDK callers; new consumers can inspect contract-generation compatibility.
|
|
61
|
+
Add the append-only generation registry, stable lookup helpers, and lifecycle and operation support
|
|
62
|
+
to provenance results.
|
|
63
|
+
- 9065128: Drop-in for existing clients; service consumers can now inspect verified contract-generation facts.
|
|
64
|
+
Advertise understood generations and include a project generation in summaries and status responses
|
|
65
|
+
only when factory provenance and the on-chain core version agree.
|
|
66
|
+
|
|
67
|
+
## 0.1.0-alpha.33
|
|
68
|
+
|
|
69
|
+
### Patch Changes
|
|
70
|
+
|
|
71
|
+
- 9242a05: Prepare package metadata, release notes, and public-facing source comments for the initial public
|
|
72
|
+
source release.
|
package/README.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# @artblocks/abx-sdk
|
|
2
|
+
|
|
3
|
+
The neutral, low-level TypeScript library for the ABX protocol — deploy, reconstruct from chain,
|
|
4
|
+
resolve a token, verify content. It picks no provider, no UX, and (beyond a default chain target)
|
|
5
|
+
no chain. Every ABX surface is built on this: the [`abx` CLI](https://docs.abx.io/docs/using-abx/installation)
|
|
6
|
+
is a shell over it, the reference resolver reads through it, and a competing provider can import
|
|
7
|
+
this same public library. If you're scripting one-off operations, the CLI is usually faster to
|
|
8
|
+
reach for — install with `abx skill install` and let an agent drive it. Reach for the SDK when you're
|
|
9
|
+
building something programmatic: a server, a mint endpoint, a scheduled job.
|
|
10
|
+
|
|
11
|
+
ESM-only, built on [viem](https://viem.sh), requires Node 22.13+. The package's main entry is
|
|
12
|
+
**browser-safe** — bundled and tested under `platform: 'browser'` on every change.
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @artblocks/abx-sdk viem
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
import { makePublicClient, ensureFactory, deployOneOfOne } from '@artblocks/abx-sdk';
|
|
22
|
+
import { oneOfOneImageAbi } from '@artblocks/abx-sdk/abi';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## The send-injection model
|
|
26
|
+
|
|
27
|
+
Every write returns a `PreparedTx` — unsigned, with a human-readable `summary`/`fields` for a sign
|
|
28
|
+
page. The SDK never signs or broadcasts; it takes one function you provide:
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
type SendTx = (tx: PreparedTx) => Promise<TransactionReceipt>;
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Every `deploy*`/`ensure*`/`prepare*`-and-execute function takes a `SendTx` as an argument, so how a
|
|
35
|
+
transaction gets signed is entirely your call:
|
|
36
|
+
|
|
37
|
+
- **`makeHotSender({ wallet, account, publicClient, onEvent? })`** — for an env/hot key. Pins the
|
|
38
|
+
nonce once (a distributed RPC can briefly serve a stale count right after a send, so it tracks the
|
|
39
|
+
nonce locally rather than re-reading it), detects an `eth_estimateGas` that came back impossibly
|
|
40
|
+
low (a sign the node hasn't seen a just-deployed target's code yet) and retries rather than sending
|
|
41
|
+
an under-funded transaction, and throws a typed `TxRevertedError` — never reports a burned,
|
|
42
|
+
reverted transaction as "confirmed."
|
|
43
|
+
- **Bring your own** — a browser wallet, a Safe/multisig flow, a queue you drain later. Anything
|
|
44
|
+
that signs a `PreparedTx.data` and returns a `TransactionReceipt` works.
|
|
45
|
+
|
|
46
|
+
Sequences: `runPrepared(txs, send)` sends a list in order. `batchOps(ops)` collapses same-target
|
|
47
|
+
runs into one `Multicallable.multicall` transaction — several owner edits become one signature,
|
|
48
|
+
all-or-nothing.
|
|
49
|
+
|
|
50
|
+
## Worked example: deploy → upload → mint → read
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
import {
|
|
54
|
+
makePublicClient, makeWalletClient, makeHotSender,
|
|
55
|
+
ensureFactory, deployOneOfOne, saltFor, predictClone,
|
|
56
|
+
prepareMint, runPrepared, listTokens, reconstructProject, readSaleConfig,
|
|
57
|
+
encodeTag, type OneOfOneInitParams,
|
|
58
|
+
} from '@artblocks/abx-sdk';
|
|
59
|
+
import { resolveBackend, uploadAndLocate } from '@artblocks/abx-storage';
|
|
60
|
+
import { zeroAddress, toHex } from 'viem';
|
|
61
|
+
|
|
62
|
+
const publicClient = makePublicClient({ chainKey: 'base-sepolia' });
|
|
63
|
+
const { wallet, account } = makeWalletClient({ chainKey: 'base-sepolia' }); // reads ABX_DEPLOYER_PK
|
|
64
|
+
const send = makeHotSender({ wallet, account, publicClient });
|
|
65
|
+
|
|
66
|
+
// 1. Deploy — resolve (or bootstrap) the chain's trust anchor, then deploy a clone.
|
|
67
|
+
const factory = await ensureFactory(publicClient, send, { chainId: 84532 });
|
|
68
|
+
const salt = saltFor(account.address); // front-run-proof: reserves the address to this signer
|
|
69
|
+
const clone = await predictClone(publicClient, { factory, salt });
|
|
70
|
+
|
|
71
|
+
// 2. Upload — put the image somewhere fetchable before baking its URL on-chain.
|
|
72
|
+
const backend = resolveBackend({ backend: 'ipfs' }); // or 'cloud' / 'arweave' / 'fs'
|
|
73
|
+
const bytes = new Uint8Array(/* … read your file … */);
|
|
74
|
+
const { locator } = await uploadAndLocate(backend, 'art.png', { bytes, contentType: 'image/png' });
|
|
75
|
+
|
|
76
|
+
const params: OneOfOneInitParams = {
|
|
77
|
+
owner: account.address,
|
|
78
|
+
mintTo: zeroAddress, // defer minting to step 3
|
|
79
|
+
name: 'My Piece', symbol: 'MYPC',
|
|
80
|
+
tokenURIBase: '', tokenURIRenderer: zeroAddress,
|
|
81
|
+
contractURIBase: '', contractURIRenderer: zeroAddress,
|
|
82
|
+
royaltyReceiver: account.address, royaltyBps: 500,
|
|
83
|
+
transferValidator: zeroAddress, // plain ERC-721; see ERC-721C in the site docs to opt in
|
|
84
|
+
tokenFields: [
|
|
85
|
+
// Bake the uploaded locator on-chain as the `image` field (an ipfs:// URI here; `arweave`/
|
|
86
|
+
// `url`/`keccak256` are the other off-chain representations — see the site docs for the choice,
|
|
87
|
+
// and `stageFieldContent` to put the bytes fully on-chain instead).
|
|
88
|
+
{ field: encodeTag('image'), representation: encodeTag('ipfs'), value: toHex(locator) },
|
|
89
|
+
],
|
|
90
|
+
contractFields: [],
|
|
91
|
+
};
|
|
92
|
+
const { txHash } = await deployOneOfOne(send, publicClient, { factory, params, salt });
|
|
93
|
+
|
|
94
|
+
// 3. Mint — deploy deferred it (mintTo was the zero address), so mint explicitly.
|
|
95
|
+
await runPrepared([prepareMint({ contract: clone, to: account.address, chainId: 84532 })], send);
|
|
96
|
+
|
|
97
|
+
// 4. Read — straight from chain, no indexer required.
|
|
98
|
+
const listing = await listTokens(publicClient, clone); // owners, seeds, params
|
|
99
|
+
const state = await reconstructProject(publicClient, { // full protocol state
|
|
100
|
+
address: clone, fromBlock: (await publicClient.getBlockNumber()) - 100n,
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`encodeTag`/`decodeTag` (from the same package) turn a field name like `"image"` into the
|
|
105
|
+
`bytes32` tag the contract expects — spelled out above only so the snippet is self-contained.
|
|
106
|
+
Selling through the shared fixed-price minter is `prepareConfigureSale` + `preparePurchase` +
|
|
107
|
+
`readSaleConfig(publicClient, minter, clone)` — see the [SDK reference](https://docs.abx.io/docs/reference/sdk)
|
|
108
|
+
for the full surface (Series, code/generative projects, on-chain content staging, ERC-721C, and more).
|
|
109
|
+
|
|
110
|
+
## Browser use
|
|
111
|
+
|
|
112
|
+
The package's main entry (`.`) has **no Node-only imports** — it's bundled under
|
|
113
|
+
`platform: 'browser'` and asserted clean of `node:*` resolution on every change. In a browser:
|
|
114
|
+
|
|
115
|
+
- Pass `rpcUrls: [...]` explicitly to `makePublicClient`/`makeWalletClient` — there's no `process.env`
|
|
116
|
+
to fall back to, and the SDK never assumes one.
|
|
117
|
+
- Sign with a connected wallet (build the `SendTx` yourself around it) rather than `makeHotSender`,
|
|
118
|
+
which expects a local `WalletClient` backed by a key.
|
|
119
|
+
- **Never** import `@artblocks/abx-sdk/node` — that subpath is the *only* place `.env` loading lives
|
|
120
|
+
(`loadDotEnv`, needs `node:fs`/`node:path`) and it will break a browser bundle. A host (a CLI, a
|
|
121
|
+
server) calls `loadDotEnv()` once at startup; the SDK core just reads whatever's already in
|
|
122
|
+
`process.env` via a tiny `readEnv` that's a no-op outside Node.
|
|
123
|
+
|
|
124
|
+
The only signing-key env var the SDK ever reads is `ABX_DEPLOYER_PK` (via `makeWalletClient`/
|
|
125
|
+
`envSigningKey`) — and only as a *fallback* when you don't pass `privateKey`/`rpcUrls` explicitly.
|
|
126
|
+
|
|
127
|
+
## More
|
|
128
|
+
|
|
129
|
+
Full API documentation by task (deploy, sell, operate, read, embed in a browser, talk to a resolver)
|
|
130
|
+
is in the [SDK reference](https://docs.abx.io/docs/reference/sdk).
|