@ar.io/sdk 3.24.0 → 4.0.0-alpha.2
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 +757 -589
- package/lib/esm/cli/cli.js +188 -152
- package/lib/esm/cli/commands/antCommands.js +23 -58
- package/lib/esm/cli/commands/arnsPurchaseCommands.js +48 -30
- package/lib/esm/cli/commands/escrowCommands.js +227 -0
- package/lib/esm/cli/commands/gatewayWriteCommands.js +140 -23
- package/lib/esm/cli/commands/pruneCommands.js +154 -0
- package/lib/esm/cli/commands/readCommands.js +22 -3
- package/lib/esm/cli/commands/transfer.js +6 -6
- package/lib/esm/cli/options.js +124 -58
- package/lib/esm/cli/utils.js +303 -175
- package/lib/esm/common/ant-registry.js +17 -143
- package/lib/esm/common/ant.js +44 -1167
- package/lib/esm/common/faucet.js +17 -6
- package/lib/esm/common/index.js +0 -4
- package/lib/esm/common/io.js +25 -1412
- package/lib/esm/constants.js +13 -19
- package/lib/esm/solana/ant-readable.js +724 -0
- package/lib/esm/solana/ant-registry-readable.js +133 -0
- package/lib/esm/solana/ant-registry-writeable.js +472 -0
- package/lib/esm/solana/ant-writeable.js +384 -0
- package/lib/esm/solana/ata.js +70 -0
- package/lib/esm/solana/canonical-message.js +128 -0
- package/lib/esm/solana/clusters.js +111 -0
- package/lib/esm/solana/constants.js +146 -0
- package/lib/esm/solana/delegation-math.js +112 -0
- package/lib/esm/solana/deserialize.js +711 -0
- package/lib/esm/solana/escrow.js +839 -0
- package/lib/{cjs/utils/json.js → esm/solana/events.js} +15 -10
- package/lib/esm/solana/funding-plan.js +699 -0
- package/lib/esm/solana/index.js +126 -0
- package/lib/esm/solana/instruction.js +39 -0
- package/lib/esm/solana/io-readable.js +2182 -0
- package/lib/esm/solana/io-writeable.js +3196 -0
- package/lib/esm/solana/json-rpc.js +90 -0
- package/lib/esm/solana/metadata.js +81 -0
- package/lib/esm/solana/mpl-core.js +192 -0
- package/lib/esm/solana/pda.js +332 -0
- package/lib/esm/solana/predict-prescribed-observers.js +110 -0
- package/lib/esm/solana/retry.js +117 -0
- package/lib/esm/solana/rpc-circuit-breaker.js +258 -0
- package/lib/esm/solana/send.js +372 -0
- package/lib/esm/solana/spawn-ant.js +224 -0
- package/lib/esm/solana/types.js +1 -0
- package/lib/esm/types/ant.js +27 -15
- package/lib/esm/types/io.js +8 -11
- package/lib/esm/utils/ant.js +0 -63
- package/lib/esm/utils/index.js +0 -3
- package/lib/esm/version.js +1 -1
- package/lib/types/cli/commands/antCommands.d.ts +5 -13
- package/lib/types/cli/commands/arnsPurchaseCommands.d.ts +33 -7
- package/lib/types/cli/commands/escrowCommands.d.ts +68 -0
- package/lib/types/cli/commands/gatewayWriteCommands.d.ts +12 -11
- package/lib/types/cli/commands/pruneCommands.d.ts +31 -0
- package/lib/types/cli/commands/readCommands.d.ts +27 -22
- package/lib/types/cli/commands/transfer.d.ts +9 -9
- package/lib/types/cli/options.d.ts +76 -21
- package/lib/types/cli/types.d.ts +11 -13
- package/lib/types/cli/utils.d.ts +71 -31
- package/lib/types/common/ant-registry.d.ts +49 -47
- package/lib/types/common/ant.d.ts +54 -539
- package/lib/types/common/faucet.d.ts +20 -8
- package/lib/types/common/index.d.ts +0 -3
- package/lib/types/common/io.d.ts +66 -258
- package/lib/types/constants.d.ts +11 -18
- package/lib/types/solana/ant-readable.d.ts +180 -0
- package/lib/types/solana/ant-registry-readable.d.ts +105 -0
- package/lib/types/solana/ant-registry-writeable.d.ts +249 -0
- package/lib/types/solana/ant-writeable.d.ts +177 -0
- package/lib/types/solana/ata.d.ts +44 -0
- package/lib/types/solana/canonical-message.d.ts +121 -0
- package/lib/types/solana/clusters.d.ts +109 -0
- package/lib/types/solana/constants.d.ts +119 -0
- package/lib/types/solana/delegation-math.d.ts +45 -0
- package/lib/types/solana/deserialize.d.ts +262 -0
- package/lib/types/solana/escrow.d.ts +480 -0
- package/lib/types/solana/events.d.ts +38 -0
- package/lib/types/solana/funding-plan.d.ts +225 -0
- package/lib/types/solana/index.d.ts +87 -0
- package/lib/types/solana/instruction.d.ts +39 -0
- package/lib/types/solana/io-readable.d.ts +499 -0
- package/lib/types/solana/io-writeable.d.ts +893 -0
- package/lib/types/solana/json-rpc.d.ts +47 -0
- package/lib/types/solana/metadata.d.ts +84 -0
- package/lib/types/solana/mpl-core.d.ts +120 -0
- package/lib/types/solana/pda.d.ts +95 -0
- package/lib/types/solana/predict-prescribed-observers.d.ts +28 -0
- package/lib/types/solana/retry.d.ts +62 -0
- package/lib/types/solana/rpc-circuit-breaker.d.ts +78 -0
- package/lib/types/solana/send.d.ts +94 -0
- package/lib/types/solana/spawn-ant.d.ts +145 -0
- package/lib/types/solana/types.d.ts +82 -0
- package/lib/types/types/ant-registry.d.ts +43 -4
- package/lib/types/types/ant.d.ts +114 -96
- package/lib/types/types/common.d.ts +18 -74
- package/lib/types/types/faucet.d.ts +2 -2
- package/lib/types/types/io.d.ts +244 -158
- package/lib/types/types/token.d.ts +0 -12
- package/lib/types/utils/ant.d.ts +1 -12
- package/lib/types/utils/index.d.ts +0 -3
- package/lib/types/version.d.ts +1 -1
- package/package.json +36 -33
- package/lib/cjs/cli/cli.js +0 -822
- package/lib/cjs/cli/commands/antCommands.js +0 -113
- package/lib/cjs/cli/commands/arnsPurchaseCommands.js +0 -212
- package/lib/cjs/cli/commands/gatewayWriteCommands.js +0 -210
- package/lib/cjs/cli/commands/readCommands.js +0 -215
- package/lib/cjs/cli/commands/transfer.js +0 -159
- package/lib/cjs/cli/options.js +0 -470
- package/lib/cjs/cli/types.js +0 -2
- package/lib/cjs/cli/utils.js +0 -639
- package/lib/cjs/common/ant-registry.js +0 -155
- package/lib/cjs/common/ant-versions.js +0 -93
- package/lib/cjs/common/ant.js +0 -1182
- package/lib/cjs/common/arweave.js +0 -27
- package/lib/cjs/common/contracts/ao-process.js +0 -224
- package/lib/cjs/common/error.js +0 -64
- package/lib/cjs/common/faucet.js +0 -150
- package/lib/cjs/common/hyperbeam/hb.js +0 -173
- package/lib/cjs/common/index.js +0 -42
- package/lib/cjs/common/io.js +0 -1423
- package/lib/cjs/common/logger.js +0 -83
- package/lib/cjs/common/loggers/winston.js +0 -68
- package/lib/cjs/common/marketplace.js +0 -731
- package/lib/cjs/common/turbo.js +0 -223
- package/lib/cjs/constants.js +0 -41
- package/lib/cjs/node/index.js +0 -39
- package/lib/cjs/package.json +0 -1
- package/lib/cjs/types/ant-registry.js +0 -2
- package/lib/cjs/types/ant.js +0 -168
- package/lib/cjs/types/common.js +0 -2
- package/lib/cjs/types/faucet.js +0 -2
- package/lib/cjs/types/index.js +0 -37
- package/lib/cjs/types/io.js +0 -51
- package/lib/cjs/types/token.js +0 -116
- package/lib/cjs/utils/ant.js +0 -108
- package/lib/cjs/utils/ao.js +0 -432
- package/lib/cjs/utils/arweave.js +0 -285
- package/lib/cjs/utils/base64.js +0 -62
- package/lib/cjs/utils/hash.js +0 -56
- package/lib/cjs/utils/index.js +0 -38
- package/lib/cjs/utils/processes.js +0 -173
- package/lib/cjs/utils/random.js +0 -30
- package/lib/cjs/utils/schema.js +0 -15
- package/lib/cjs/utils/url.js +0 -37
- package/lib/cjs/version.js +0 -20
- package/lib/cjs/web/index.js +0 -41
- package/lib/esm/common/ant-versions.js +0 -87
- package/lib/esm/common/arweave.js +0 -21
- package/lib/esm/common/contracts/ao-process.js +0 -220
- package/lib/esm/common/hyperbeam/hb.js +0 -169
- package/lib/esm/common/marketplace.js +0 -724
- package/lib/esm/common/turbo.js +0 -215
- package/lib/esm/node/index.js +0 -20
- package/lib/esm/utils/ao.js +0 -420
- package/lib/esm/utils/arweave.js +0 -271
- package/lib/esm/utils/processes.js +0 -167
- package/lib/esm/web/index.js +0 -20
- package/lib/types/common/ant-versions.d.ts +0 -39
- package/lib/types/common/arweave.d.ts +0 -17
- package/lib/types/common/contracts/ao-process.d.ts +0 -47
- package/lib/types/common/hyperbeam/hb.d.ts +0 -88
- package/lib/types/common/marketplace.d.ts +0 -568
- package/lib/types/common/turbo.d.ts +0 -61
- package/lib/types/node/index.d.ts +0 -20
- package/lib/types/utils/ao.d.ts +0 -80
- package/lib/types/utils/arweave.d.ts +0 -79
- package/lib/types/utils/processes.d.ts +0 -39
- package/lib/types/web/index.d.ts +0 -20
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Solana implementation of `ANT.spawn`.
|
|
18
|
+
*
|
|
19
|
+
* Mints a fresh Metaplex Core asset (the ANT NFT) AND initializes the
|
|
20
|
+
* `ario-ant` extended state PDAs (`AntConfig`, `AntControllers`, root `@`
|
|
21
|
+
* record) in a single atomic transaction.
|
|
22
|
+
*
|
|
23
|
+
* This is the Solana counterpart to the legacy AO `spawnANT` flow:
|
|
24
|
+
* - AO: `ao.spawn({ module, scheduler, ... })` → returns AO process id.
|
|
25
|
+
* - Solana: mint MPL Core asset + initialize ario-ant PDAs → returns the
|
|
26
|
+
* asset's pubkey (which serves as the SDK's stable `processId`).
|
|
27
|
+
*
|
|
28
|
+
* For the bulk-import flow used by `migration/import` we use a separate
|
|
29
|
+
* code path that mints to the migration authority and uses the gated
|
|
30
|
+
* `import_account` instruction — that's intentional and not what this SDK
|
|
31
|
+
* helper is for.
|
|
32
|
+
*/
|
|
33
|
+
import { type Address, type Commitment, type Instruction, type KeyPairSigner } from '@solana/kit';
|
|
34
|
+
import type { SolanaRpc, SolanaRpcSubscriptions, SolanaSigner } from './types.js';
|
|
35
|
+
/** AR.IO logo Arweave TX — matches the Rust default in `ario_ant::initialize`. */
|
|
36
|
+
export declare const ARIO_LOGO_TX_ID = "AnYvLJTWcG9lr2Ll5MwYWZR2o5uTE39WbpYB0zCxwKM";
|
|
37
|
+
/**
|
|
38
|
+
* Default Arweave transaction id used when an ANT is spawned without an
|
|
39
|
+
* explicit `transactionId`. Empty string would fail the on-chain
|
|
40
|
+
* `is_valid_arweave_id` check, so we fall back to the AR.IO logo TX (which is
|
|
41
|
+
* a real Arweave id and won't trip validation).
|
|
42
|
+
*/
|
|
43
|
+
export declare const DEFAULT_ANT_TRANSACTION_ID = "AnYvLJTWcG9lr2Ll5MwYWZR2o5uTE39WbpYB0zCxwKM";
|
|
44
|
+
export type SpawnSolanaANTState = {
|
|
45
|
+
/** ANT display name (1–51 chars). */
|
|
46
|
+
name: string;
|
|
47
|
+
/** Optional ticker (defaults to "ANT" on chain). */
|
|
48
|
+
ticker?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Content target for the root `@` record (Arweave TX ID, IPFS CID, etc.).
|
|
51
|
+
* Defaults to the AR.IO logo TX — callers that want a real pointer should
|
|
52
|
+
* override this.
|
|
53
|
+
*/
|
|
54
|
+
transactionId?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Storage protocol for the root `@` record target.
|
|
57
|
+
* 0 = Arweave (default), 1 = IPFS.
|
|
58
|
+
*/
|
|
59
|
+
targetProtocol?: number;
|
|
60
|
+
/** Logo TX id (43 chars). Defaults to the AR.IO logo. */
|
|
61
|
+
logo?: string;
|
|
62
|
+
/** Description (≤ 512 chars). */
|
|
63
|
+
description?: string;
|
|
64
|
+
/** Keywords (≤ 16 entries). */
|
|
65
|
+
keywords?: string[];
|
|
66
|
+
/**
|
|
67
|
+
* Metadata URI baked into the MPL Core asset (`uri` field). Defaults to
|
|
68
|
+
* `ar://{logo}` — wallets resolve `ar://{txId}` to `https://arweave.net/{txId}`.
|
|
69
|
+
*/
|
|
70
|
+
uri?: string;
|
|
71
|
+
};
|
|
72
|
+
export type SpawnSolanaANTParams = {
|
|
73
|
+
/** RPC client used to fetch a recent blockhash + send the spawn transaction. */
|
|
74
|
+
rpc: SolanaRpc;
|
|
75
|
+
/** RPC subscriptions client — required to confirm the transaction. */
|
|
76
|
+
rpcSubscriptions: SolanaRpcSubscriptions;
|
|
77
|
+
/** Solana signer — pays rent + receives the NFT. */
|
|
78
|
+
signer: SolanaSigner;
|
|
79
|
+
/** ANT metadata for the new asset. `name` is the only required field. */
|
|
80
|
+
state: SpawnSolanaANTState;
|
|
81
|
+
/** Override the deployed `ario-ant` program id (devnet/localnet only). */
|
|
82
|
+
antProgramId?: Address;
|
|
83
|
+
/**
|
|
84
|
+
* Pre-derived mint signer. Useful for tests that want a deterministic
|
|
85
|
+
* asset address. When omitted a fresh random keypair signer is generated.
|
|
86
|
+
*/
|
|
87
|
+
mintSigner?: KeyPairSigner;
|
|
88
|
+
/** Confirmation commitment for the resulting tx. Defaults to 'confirmed'. */
|
|
89
|
+
commitment?: Commitment;
|
|
90
|
+
/** CU limit for the bundled tx. Defaults to 400_000 (matches existing writes). */
|
|
91
|
+
computeUnitLimit?: number;
|
|
92
|
+
};
|
|
93
|
+
export type SpawnSolanaANTResult = {
|
|
94
|
+
/**
|
|
95
|
+
* SDK-canonical ANT identifier on Solana — this is the MPL Core asset's
|
|
96
|
+
* pubkey (base58). Pass it back into `ANT.init({ backend: 'solana',
|
|
97
|
+
* processId, ... })` to drive subsequent reads/writes.
|
|
98
|
+
*/
|
|
99
|
+
processId: string;
|
|
100
|
+
/** Same value as `processId`, as an `Address` for convenience. */
|
|
101
|
+
mint: Address;
|
|
102
|
+
/** Confirmed transaction signature. */
|
|
103
|
+
signature: string;
|
|
104
|
+
};
|
|
105
|
+
/** A single on-chain `Attributes` plugin entry. */
|
|
106
|
+
export type AntAttribute = {
|
|
107
|
+
key: string;
|
|
108
|
+
value: string;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Public, low-level builder for the `CreateV1` MPL Core instruction with the
|
|
112
|
+
* AR.IO-standard ANT shape (Attributes plugin pre-installed, Owner authority).
|
|
113
|
+
*
|
|
114
|
+
* Delegates to the Codama-generated `getCreateV1Instruction`, but accepts
|
|
115
|
+
* plain `Address`es (rather than full `TransactionSigner`s) so test fixtures
|
|
116
|
+
* and devnet validation scripts can byte-pin the wire format without
|
|
117
|
+
* standing up real keypairs. The signer roles still flow through correctly
|
|
118
|
+
* because we re-cast under `unknown`.
|
|
119
|
+
*
|
|
120
|
+
* Most callers should use `ANT.spawn` / `spawnSolanaANT` instead — that path
|
|
121
|
+
* also wires up `ario_ant::initialize` so the ANT is fully usable end to end.
|
|
122
|
+
* Use this raw builder when you need fine-grained control over signing, or
|
|
123
|
+
* are bundling the mint into a larger compound transaction.
|
|
124
|
+
*
|
|
125
|
+
* **Why we always emit an Attributes plugin (even with an empty list):**
|
|
126
|
+
* `ario_arns::buy_record` and friends CPI into `UpdatePluginV1` to populate
|
|
127
|
+
* traits at purchase time. If the asset has no Attributes plugin, that CPI
|
|
128
|
+
* fails. Emitting an empty plugin here keeps every spawned ANT
|
|
129
|
+
* `purchase`-ready and matches what `migration/import` mints — see ADR-012
|
|
130
|
+
* and BD-096. Authority is `Owner` so the ANT NFT holder (= asset owner)
|
|
131
|
+
* can sign their own trait updates.
|
|
132
|
+
*/
|
|
133
|
+
export declare function buildCreateAntInstruction({ mint, authority, payer, name, uri, attributes, }: {
|
|
134
|
+
mint: Address;
|
|
135
|
+
authority: Address;
|
|
136
|
+
payer: Address;
|
|
137
|
+
name: string;
|
|
138
|
+
uri: string;
|
|
139
|
+
attributes?: AntAttribute[];
|
|
140
|
+
}): Instruction;
|
|
141
|
+
/**
|
|
142
|
+
* Spawn a brand-new ANT on Solana. Returns the asset address, which is the
|
|
143
|
+
* SDK's stable `processId` for that ANT.
|
|
144
|
+
*/
|
|
145
|
+
export declare function spawnSolanaANT(params: SpawnSolanaANTParams): Promise<SpawnSolanaANTResult>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Solana-specific types for the AR.IO SDK.
|
|
18
|
+
*
|
|
19
|
+
* These extend the common SDK types with Solana connection and signer config.
|
|
20
|
+
*/
|
|
21
|
+
import { type Address, type Commitment, type Rpc, type RpcSubscriptions, type SolanaRpcApi, type SolanaRpcApiMainnet, type SolanaRpcSubscriptionsApi, type TransactionSigner } from '@solana/kit';
|
|
22
|
+
/**
|
|
23
|
+
* The Solana RPC client produced by `createSolanaRpc(url)`.
|
|
24
|
+
*
|
|
25
|
+
* We accept both the mainnet-safe API (no `requestAirdrop`) and the test-cluster
|
|
26
|
+
* API (with `requestAirdrop`). kit's `createSolanaRpc` narrows the return type
|
|
27
|
+
* based on the URL string; this union lets callers pass either shape.
|
|
28
|
+
*/
|
|
29
|
+
export type SolanaRpc = Rpc<SolanaRpcApi> | Rpc<SolanaRpcApiMainnet>;
|
|
30
|
+
/**
|
|
31
|
+
* The subscriptions client produced by `createSolanaRpcSubscriptions(wsUrl)`.
|
|
32
|
+
* Required alongside `SolanaRpc` to confirm transactions (via
|
|
33
|
+
* `sendAndConfirmTransactionFactory`).
|
|
34
|
+
*/
|
|
35
|
+
export type SolanaRpcSubscriptions = RpcSubscriptions<SolanaRpcSubscriptionsApi>;
|
|
36
|
+
/**
|
|
37
|
+
* A transaction signer in the kit model. Covers keypair-based signers
|
|
38
|
+
* (`KeyPairSigner`) and any wallet-adapter-compatible signer that implements
|
|
39
|
+
* the {@link TransactionSigner} interface (partial, modifying, or sending).
|
|
40
|
+
*/
|
|
41
|
+
export type SolanaSigner = TransactionSigner;
|
|
42
|
+
/** Configuration for Solana SDK instances */
|
|
43
|
+
export type SolanaConfig = {
|
|
44
|
+
rpc: SolanaRpc;
|
|
45
|
+
/**
|
|
46
|
+
* Subscriptions client. Required for writeable instances (confirmation).
|
|
47
|
+
* Optional for readable instances.
|
|
48
|
+
*/
|
|
49
|
+
rpcSubscriptions?: SolanaRpcSubscriptions;
|
|
50
|
+
commitment?: Commitment;
|
|
51
|
+
};
|
|
52
|
+
export type SolanaReadConfig = SolanaConfig;
|
|
53
|
+
export type SolanaWriteConfig = SolanaConfig & {
|
|
54
|
+
rpcSubscriptions: SolanaRpcSubscriptions;
|
|
55
|
+
signer: SolanaSigner;
|
|
56
|
+
};
|
|
57
|
+
/** Result of a Solana write operation */
|
|
58
|
+
export type SolanaTransactionResult<T = undefined> = {
|
|
59
|
+
/** Transaction signature (base58) */
|
|
60
|
+
id: string;
|
|
61
|
+
result?: T;
|
|
62
|
+
};
|
|
63
|
+
/** Raw account data with metadata */
|
|
64
|
+
export type AccountData<T> = {
|
|
65
|
+
address: Address;
|
|
66
|
+
data: T;
|
|
67
|
+
};
|
|
68
|
+
/** Discriminator for Anchor accounts: sha256("account:StructName")[0..8] */
|
|
69
|
+
export type AccountDiscriminator = Uint8Array;
|
|
70
|
+
/**
|
|
71
|
+
* On Solana, "processId" (AO concept) maps to the ANT's Metaplex Core
|
|
72
|
+
* asset address. We keep the field name for SDK compatibility.
|
|
73
|
+
*/
|
|
74
|
+
export type SolanaArNSNameData = {
|
|
75
|
+
processId: string;
|
|
76
|
+
owner: string;
|
|
77
|
+
startTimestamp: number;
|
|
78
|
+
type: 'lease' | 'permabuy';
|
|
79
|
+
endTimestamp?: number;
|
|
80
|
+
undernameLimit: number;
|
|
81
|
+
purchasePrice: number;
|
|
82
|
+
};
|
|
@@ -13,17 +13,56 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
17
|
-
export interface
|
|
16
|
+
import { MessageResult } from './common.js';
|
|
17
|
+
export interface ANTRegistryRead {
|
|
18
18
|
accessControlList(params: {
|
|
19
19
|
address: string;
|
|
20
20
|
}): Promise<{
|
|
21
21
|
Owned: string[];
|
|
22
22
|
Controlled: string[];
|
|
23
23
|
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Alias for `accessControlList` with a clearer name. Returns the ANTs
|
|
26
|
+
* owned or controlled by the given address. Implemented by both the AO
|
|
27
|
+
* and Solana backends so consumers can switch backends without renaming
|
|
28
|
+
* calls.
|
|
29
|
+
*/
|
|
30
|
+
getAntsForAddress?(params: {
|
|
31
|
+
address: string;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
Owned: string[];
|
|
34
|
+
Controlled: string[];
|
|
35
|
+
}>;
|
|
24
36
|
}
|
|
25
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Cross-backend ACL relationship. Both AO and Solana model the same two
|
|
39
|
+
* roles today (owner / controller); the Solana paginated registry stores
|
|
40
|
+
* them as a `u8` byte (`ACL_ROLE_*` constants) but the public surface uses
|
|
41
|
+
* strings so consumers don't have to know the on-chain encoding.
|
|
42
|
+
*/
|
|
43
|
+
export type AclMaintenanceRole = 'owner' | 'controller';
|
|
44
|
+
/**
|
|
45
|
+
* Mutation we want the on-chain ACL to reflect once the transaction lands.
|
|
46
|
+
* `user` and `asset` are wallet/process addresses (base58 on Solana, AO
|
|
47
|
+
* address on AO).
|
|
48
|
+
*
|
|
49
|
+
* On the Solana backend this is the input to the registry's internal
|
|
50
|
+
* preflight planner, surfaced via the workflow helpers
|
|
51
|
+
* (`bootstrapOwnerOnSpawn`, `bulkRemoveControllerEntries`) — they
|
|
52
|
+
* translate it into the minimum `register_acl_config` / `add_acl_page`
|
|
53
|
+
* / `record_acl_*` / `remove_acl_*` instruction set against the
|
|
54
|
+
* paginated `AclConfig` + `AclPage` layout (see ADR-012). On AO, the
|
|
55
|
+
* registry process owns its own ACL bookkeeping, so the equivalent is
|
|
56
|
+
* a no-op.
|
|
57
|
+
*/
|
|
58
|
+
export type AclMaintenanceOp = {
|
|
59
|
+
action: 'record' | 'remove';
|
|
60
|
+
role: AclMaintenanceRole;
|
|
61
|
+
user: string;
|
|
62
|
+
asset: string;
|
|
63
|
+
};
|
|
64
|
+
export interface ANTRegistryWrite extends ANTRegistryRead {
|
|
26
65
|
register(params: {
|
|
27
66
|
processId: string;
|
|
28
|
-
}): Promise<
|
|
67
|
+
}): Promise<MessageResult>;
|
|
29
68
|
}
|