@x1id/resolve 0.21.0 → 0.23.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/README.md +3 -1
- package/dist/adminConfig.d.ts +17 -3
- package/dist/adminConfig.js +24 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/mintNft.d.ts +247 -0
- package/dist/mintNft.js +328 -0
- package/dist/namespacePricing.d.ts +207 -0
- package/dist/namespacePricing.js +378 -0
- package/dist/sha256.d.ts +10 -0
- package/dist/sha256.js +77 -0
- package/dist/voucher.d.ts +25 -7
- package/dist/voucher.js +23 -13
- package/dist/x402.d.ts +70 -6
- package/dist/x402.js +158 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -605,8 +605,10 @@ const requirements = buildX402Requirements({
|
|
|
605
605
|
buyer: buyerAddress, // x1id v1 is self-sponsored: buyer pays their own fee, no facilitator
|
|
606
606
|
network: X1_MAINNET_NETWORK, // defaults to mainnet; a server on another cluster
|
|
607
607
|
// should pass x402NetworkForGenesis(await getGenesisHash)
|
|
608
|
-
|
|
608
|
+
reference: invoiceReference, // a unique base58 reference per invoice (the payment carries it)
|
|
609
609
|
});
|
|
610
|
+
// Buyer side for api.x1id.io: sign x402RedeemMessage(reference) with the paying
|
|
611
|
+
// wallet and send it as payload.payerSig next to payload.signature.
|
|
610
612
|
```
|
|
611
613
|
|
|
612
614
|
This package only builds the requirements object — it does not build, sign,
|
package/dist/adminConfig.d.ts
CHANGED
|
@@ -44,6 +44,18 @@ export declare const SET_LEASE_GRACE_PERIOD_DISCRIMINATOR: Uint8Array;
|
|
|
44
44
|
export declare const SET_RECOVERY_TIMELOCK_DISCRIMINATOR: Uint8Array;
|
|
45
45
|
export declare const SET_MIN_COMMITMENT_AGE_DISCRIMINATOR: Uint8Array;
|
|
46
46
|
export declare const SET_MAX_COMMITMENT_AGE_DISCRIMINATOR: Uint8Array;
|
|
47
|
+
/** `sha256("global:set_namespace_creation_fee")[0..8]` — sets
|
|
48
|
+
* `Config.namespace_creation_fee_lamports` (u64, the permissionless
|
|
49
|
+
* `create_namespace` TLD creation fee paid to treasury). */
|
|
50
|
+
export declare const SET_NAMESPACE_CREATION_FEE_DISCRIMINATOR: Uint8Array;
|
|
51
|
+
/** Byte offset of `Config.namespace_creation_fee_lamports` (u64 LE) in the
|
|
52
|
+
* Config account data, including the 8-byte Anchor discriminator — mirrors
|
|
53
|
+
* `Config::NAMESPACE_CREATION_FEE_LAMPORTS_OFFSET` (state.rs). */
|
|
54
|
+
export declare const NAMESPACE_CREATION_FEE_LAMPORTS_OFFSET = 436;
|
|
55
|
+
/** Decode `Config.namespace_creation_fee_lamports` from raw Config account
|
|
56
|
+
* data. Returns null for a Config too short to carry the field (pre-v6
|
|
57
|
+
* layout) — never a guessed default. */
|
|
58
|
+
export declare function decodeNamespaceCreationFeeLamports(configData: Uint8Array): bigint | null;
|
|
47
59
|
/** Map an admin config action name → its discriminator (for a relay executor
|
|
48
60
|
* that dispatches on the action string). set_admin/set_attestor intentionally
|
|
49
61
|
* absent — those are owner-gated, never dispatched here. */
|
|
@@ -54,10 +66,12 @@ export interface AdminScalarParams {
|
|
|
54
66
|
readonly config: AddressLike;
|
|
55
67
|
/** The discriminator for the specific setter (from ADMIN_SCALAR_DISCRIMINATORS). */
|
|
56
68
|
readonly discriminator: Uint8Array;
|
|
57
|
-
/** The integer arg (u64/i64 encoding is identical for a non-negative value).
|
|
58
|
-
|
|
69
|
+
/** The integer arg (u64/i64 encoding is identical for a non-negative value).
|
|
70
|
+
* A string must be plain decimal digits (lamports amounts beyond JS's safe
|
|
71
|
+
* integer range arrive from the admin queue as decimal strings). */
|
|
72
|
+
readonly value: number | bigint | string;
|
|
59
73
|
}
|
|
60
74
|
/** Build any one-integer-arg AdminOnly setter (lease rate divisor, lease grace,
|
|
61
|
-
* recovery timelock, min/max commitment age). disc(8) + value as little-endian
|
|
75
|
+
* recovery timelock, min/max commitment age, namespace creation fee). disc(8) + value as little-endian
|
|
62
76
|
* u64(8). The value must be a non-negative integer that fits u64. */
|
|
63
77
|
export declare function buildAdminScalarSetterIx(p: AdminScalarParams): BuiltInstruction;
|
package/dist/adminConfig.js
CHANGED
|
@@ -84,6 +84,22 @@ export const SET_LEASE_GRACE_PERIOD_DISCRIMINATOR = Uint8Array.from([212, 2, 110
|
|
|
84
84
|
export const SET_RECOVERY_TIMELOCK_DISCRIMINATOR = Uint8Array.from([178, 183, 148, 243, 155, 166, 79, 6]);
|
|
85
85
|
export const SET_MIN_COMMITMENT_AGE_DISCRIMINATOR = Uint8Array.from([181, 20, 114, 43, 51, 23, 47, 248]);
|
|
86
86
|
export const SET_MAX_COMMITMENT_AGE_DISCRIMINATOR = Uint8Array.from([163, 106, 196, 206, 146, 156, 79, 249]);
|
|
87
|
+
/** `sha256("global:set_namespace_creation_fee")[0..8]` — sets
|
|
88
|
+
* `Config.namespace_creation_fee_lamports` (u64, the permissionless
|
|
89
|
+
* `create_namespace` TLD creation fee paid to treasury). */
|
|
90
|
+
export const SET_NAMESPACE_CREATION_FEE_DISCRIMINATOR = Uint8Array.from([158, 152, 239, 141, 143, 5, 75, 198]);
|
|
91
|
+
/** Byte offset of `Config.namespace_creation_fee_lamports` (u64 LE) in the
|
|
92
|
+
* Config account data, including the 8-byte Anchor discriminator — mirrors
|
|
93
|
+
* `Config::NAMESPACE_CREATION_FEE_LAMPORTS_OFFSET` (state.rs). */
|
|
94
|
+
export const NAMESPACE_CREATION_FEE_LAMPORTS_OFFSET = 436;
|
|
95
|
+
/** Decode `Config.namespace_creation_fee_lamports` from raw Config account
|
|
96
|
+
* data. Returns null for a Config too short to carry the field (pre-v6
|
|
97
|
+
* layout) — never a guessed default. */
|
|
98
|
+
export function decodeNamespaceCreationFeeLamports(configData) {
|
|
99
|
+
if (configData.length < NAMESPACE_CREATION_FEE_LAMPORTS_OFFSET + 8)
|
|
100
|
+
return null;
|
|
101
|
+
return new DataView(configData.buffer, configData.byteOffset, configData.byteLength).getBigUint64(NAMESPACE_CREATION_FEE_LAMPORTS_OFFSET, true);
|
|
102
|
+
}
|
|
87
103
|
/** Map an admin config action name → its discriminator (for a relay executor
|
|
88
104
|
* that dispatches on the action string). set_admin/set_attestor intentionally
|
|
89
105
|
* absent — those are owner-gated, never dispatched here. */
|
|
@@ -93,11 +109,18 @@ export const ADMIN_SCALAR_DISCRIMINATORS = {
|
|
|
93
109
|
set_recovery_timelock: SET_RECOVERY_TIMELOCK_DISCRIMINATOR,
|
|
94
110
|
set_min_commitment_age: SET_MIN_COMMITMENT_AGE_DISCRIMINATOR,
|
|
95
111
|
set_max_commitment_age: SET_MAX_COMMITMENT_AGE_DISCRIMINATOR,
|
|
112
|
+
set_namespace_creation_fee: SET_NAMESPACE_CREATION_FEE_DISCRIMINATOR,
|
|
96
113
|
};
|
|
97
114
|
/** Build any one-integer-arg AdminOnly setter (lease rate divisor, lease grace,
|
|
98
|
-
* recovery timelock, min/max commitment age). disc(8) + value as little-endian
|
|
115
|
+
* recovery timelock, min/max commitment age, namespace creation fee). disc(8) + value as little-endian
|
|
99
116
|
* u64(8). The value must be a non-negative integer that fits u64. */
|
|
100
117
|
export function buildAdminScalarSetterIx(p) {
|
|
118
|
+
if (typeof p.value === "string" && !/^\d{1,20}$/.test(p.value)) {
|
|
119
|
+
throw new Error(`value ${JSON.stringify(p.value)} is not a non-negative decimal integer`);
|
|
120
|
+
}
|
|
121
|
+
if (typeof p.value === "number" && !Number.isSafeInteger(p.value)) {
|
|
122
|
+
throw new Error(`value ${p.value} is not a safe integer`);
|
|
123
|
+
}
|
|
101
124
|
const raw = typeof p.value === "bigint" ? p.value : BigInt(p.value);
|
|
102
125
|
if (raw < 0n || raw > 0xffffffffffffffffn) {
|
|
103
126
|
throw new Error(`value ${p.value} is out of u64 range`);
|
package/dist/index.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export * from "./recordWrite.js";
|
|
|
52
52
|
export * from "./clearRecords.js";
|
|
53
53
|
export * from "./commitReveal.js";
|
|
54
54
|
export * from "./pnftTransfer.js";
|
|
55
|
+
export * from "./mintNft.js";
|
|
55
56
|
export * from "./payment.js";
|
|
56
57
|
export * from "./signin.js";
|
|
57
58
|
export * from "./connect.js";
|
|
@@ -126,4 +127,5 @@ export interface Resolver {
|
|
|
126
127
|
export declare function createResolver(config: ResolverConfig): Resolver;
|
|
127
128
|
export * from "./adminMarket.js";
|
|
128
129
|
export * from "./namespaceOverride.js";
|
|
130
|
+
export * from "./namespacePricing.js";
|
|
129
131
|
export * from "./universal.js";
|
package/dist/index.js
CHANGED
|
@@ -59,6 +59,7 @@ export * from "./recordWrite.js";
|
|
|
59
59
|
export * from "./clearRecords.js";
|
|
60
60
|
export * from "./commitReveal.js";
|
|
61
61
|
export * from "./pnftTransfer.js";
|
|
62
|
+
export * from "./mintNft.js";
|
|
62
63
|
export * from "./payment.js";
|
|
63
64
|
export * from "./signin.js";
|
|
64
65
|
export * from "./connect.js";
|
|
@@ -816,6 +817,7 @@ export function createResolver(config) {
|
|
|
816
817
|
}
|
|
817
818
|
export * from "./adminMarket.js";
|
|
818
819
|
export * from "./namespaceOverride.js";
|
|
820
|
+
export * from "./namespacePricing.js";
|
|
819
821
|
// The X1ID Universal Resolver (#8475): cross-namespace resolution (.sol via SNS,
|
|
820
822
|
// .eth via ENS) alongside the native path. Additive — the native resolver above
|
|
821
823
|
// is untouched; `createUniversalResolver` composes it with external adapters.
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenized registration — the capability-pNFT instructions of the registry
|
|
3
|
+
* program: `mint_handle_nft` (tokenize an already-registered handle),
|
|
4
|
+
* `mint_handle_nft_with_uri` (same, caller-pinned metadata URI),
|
|
5
|
+
* `register_tokenized` (register + mint in ONE instruction — the default
|
|
6
|
+
* permanent-XNT purchase) and `register_revealed_tokenized` (its
|
|
7
|
+
* commit-reveal sibling).
|
|
8
|
+
*
|
|
9
|
+
* The minted NFT is a Metaplex ProgrammableNonFungible (pNFT) VERIFIED into
|
|
10
|
+
* the "X1ID Handles" collection, with treasury royalties. Its token account
|
|
11
|
+
* is FROZEN by Token Metadata; move it with `buildTransferV1Ix`
|
|
12
|
+
* (pnftTransfer.ts), never a plain SPL transfer.
|
|
13
|
+
*
|
|
14
|
+
* One backend call for a tokenized purchase (payer = owner = the user):
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { PublicKey } from "@solana/web3.js";
|
|
18
|
+
* import {
|
|
19
|
+
* deriveTokenizedNftAccounts, buildRegisterTokenizedIx, fetchConfigTreasury,
|
|
20
|
+
* REGISTER_TOKENIZED_CU_LIMIT, HandleType,
|
|
21
|
+
* } from "@x1id/resolve";
|
|
22
|
+
*
|
|
23
|
+
* const find = (seeds, pid) => PublicKey.findProgramAddressSync(seeds, new PublicKey(pid))[0].toBase58();
|
|
24
|
+
* const te = new TextEncoder();
|
|
25
|
+
* const handle = find([te.encode("handle"), te.encode(canonical)], programId);
|
|
26
|
+
* const accounts = await deriveTokenizedNftAccounts(find, { programId, owner: user, handle });
|
|
27
|
+
* const treasury = await fetchConfigTreasury(rpc, accounts.config);
|
|
28
|
+
* const ix = buildRegisterTokenizedIx({
|
|
29
|
+
* ...accounts, programId, payer: user, owner: user, handle, treasury,
|
|
30
|
+
* name: canonical, handleType: HandleType.Human,
|
|
31
|
+
* });
|
|
32
|
+
* // prepend ComputeBudget SetComputeUnitLimit(REGISTER_TOKENIZED_CU_LIMIT)
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* # Account order (source of truth: programs/x1-handles/src/lib.rs)
|
|
36
|
+
*
|
|
37
|
+
* - `MintHandleNft<'info>`: payer(s,w) owner(s) config(w) treasury(w)
|
|
38
|
+
* handle(w) auction listing mint(w) owner_token_account(w) metadata(w)
|
|
39
|
+
* master_edition(w) token_record(w) collection_mint collection_metadata(w)
|
|
40
|
+
* collection_master_edition collection_authority token_metadata_program
|
|
41
|
+
* token_program associated_token_program system_program
|
|
42
|
+
* sysvar_instructions.
|
|
43
|
+
* - `RegisterTokenized<'info>`: payer(s,w) owner config(w) treasury(w)
|
|
44
|
+
* handle(w), then the SAME `mint` … `sysvar_instructions` tail (no
|
|
45
|
+
* auction/listing — a just-created handle can have neither), then the
|
|
46
|
+
* optional integrator(w) / integrator_allowlist pair.
|
|
47
|
+
* - `RegisterRevealedTokenized<'info>`: as `RegisterTokenized` plus
|
|
48
|
+
* commitment(w) right after handle.
|
|
49
|
+
*
|
|
50
|
+
* Note `owner` SIGNS `mint_handle_nft` (it tokenizes its own handle) but does
|
|
51
|
+
* NOT sign the register variants (gifting parity with `register`).
|
|
52
|
+
*
|
|
53
|
+
* # Compute budget
|
|
54
|
+
*
|
|
55
|
+
* The pNFT path (CreateV1 + MintV1 + VerifyCollectionV1 in one program
|
|
56
|
+
* instruction) exceeds the 200k-CU per-instruction default: every
|
|
57
|
+
* transaction carrying one of these instructions MUST also carry a
|
|
58
|
+
* ComputeBudget `SetComputeUnitLimit` — {@link MINT_HANDLE_NFT_CU_LIMIT} or
|
|
59
|
+
* {@link REGISTER_TOKENIZED_CU_LIMIT}. X1 prices the fee by the REQUESTED
|
|
60
|
+
* limit, so these are sized close to measured mainnet consumption.
|
|
61
|
+
*
|
|
62
|
+
* Hand-rolled like the rest of this package: no Anchor client, no
|
|
63
|
+
* `@solana/web3.js` import, no `@types/node`. Builders are pure (no RPC);
|
|
64
|
+
* PDAs are derived through an INJECTED `find_program_address`
|
|
65
|
+
* ({@link PdaFinder}) because this package never hand-rolls the ed25519
|
|
66
|
+
* on-curve check.
|
|
67
|
+
*/
|
|
68
|
+
import type { AddressLike, BuiltInstruction, InstructionKey } from "./delegate.js";
|
|
69
|
+
import type { PdaFinder } from "./namespacePricing.js";
|
|
70
|
+
import type { HandleTypeValue } from "./voucher.js";
|
|
71
|
+
/** `sha256("global:mint_handle_nft")[0..8]`. */
|
|
72
|
+
export declare const MINT_HANDLE_NFT_DISCRIMINATOR: Uint8Array;
|
|
73
|
+
/** `sha256("global:mint_handle_nft_with_uri")[0..8]`. */
|
|
74
|
+
export declare const MINT_HANDLE_NFT_WITH_URI_DISCRIMINATOR: Uint8Array;
|
|
75
|
+
/** `sha256("global:register_tokenized")[0..8]`. */
|
|
76
|
+
export declare const REGISTER_TOKENIZED_DISCRIMINATOR: Uint8Array;
|
|
77
|
+
/** `sha256("global:register_revealed_tokenized")[0..8]`. */
|
|
78
|
+
export declare const REGISTER_REVEALED_TOKENIZED_DISCRIMINATOR: Uint8Array;
|
|
79
|
+
/** Compute-unit limit for any transaction carrying `mint_handle_nft` /
|
|
80
|
+
* `mint_handle_nft_with_uri` (measured ~318k CU on mainnet; ~41% headroom). */
|
|
81
|
+
export declare const MINT_HANDLE_NFT_CU_LIMIT = 450000;
|
|
82
|
+
/** Compute-unit limit for any transaction carrying `register_tokenized` /
|
|
83
|
+
* `register_revealed_tokenized` (measured 299k–347k CU live; ≥17% headroom). */
|
|
84
|
+
export declare const REGISTER_TOKENIZED_CU_LIMIT = 420000;
|
|
85
|
+
/** `mpl_token_metadata::MAX_URI_LENGTH` — `mint_handle_nft_with_uri` refuses
|
|
86
|
+
* (`UriTooLong`) a longer URI; checked client-side too. */
|
|
87
|
+
export declare const MAX_NFT_METADATA_URI_LENGTH = 200;
|
|
88
|
+
/** Seed prefix of a handle's NFT mint PDA: `["nft_mint", handle]`. */
|
|
89
|
+
export declare const NFT_MINT_SEED = "nft_mint";
|
|
90
|
+
/** Seed of the collection parent's mint PDA: `["collection_mint"]`. */
|
|
91
|
+
export declare const COLLECTION_MINT_SEED = "collection_mint";
|
|
92
|
+
/** Seed of the collection update-authority PDA: `["collection_authority"]`. */
|
|
93
|
+
export declare const COLLECTION_AUTHORITY_SEED = "collection_authority";
|
|
94
|
+
/** The pNFT account block every tokenized instruction carries from `mint`
|
|
95
|
+
* onward, plus the `["config"]` PDA. Everything here is a PDA/ATA derived
|
|
96
|
+
* from `(programId, owner, handle)` — see {@link deriveTokenizedNftAccounts}. */
|
|
97
|
+
export interface TokenizedNftAccounts {
|
|
98
|
+
/** The `["config"]` PDA. */
|
|
99
|
+
readonly config: string;
|
|
100
|
+
/** The handle's NFT mint — `["nft_mint", handle]` under the registry program. */
|
|
101
|
+
readonly mint: string;
|
|
102
|
+
/** `owner`'s ATA for `mint` (classic SPL Token) — receives the single unit, frozen. */
|
|
103
|
+
readonly ownerTokenAccount: string;
|
|
104
|
+
/** Metaplex metadata PDA for `mint`. */
|
|
105
|
+
readonly metadata: string;
|
|
106
|
+
/** Metaplex master-edition PDA for `mint`. */
|
|
107
|
+
readonly masterEdition: string;
|
|
108
|
+
/** pNFT `TokenRecord` PDA for (`mint`, `ownerTokenAccount`). */
|
|
109
|
+
readonly tokenRecord: string;
|
|
110
|
+
/** Collection parent's mint — `["collection_mint"]` under the registry program. */
|
|
111
|
+
readonly collectionMint: string;
|
|
112
|
+
/** Collection parent's metadata (writable — sized-collection count bump). */
|
|
113
|
+
readonly collectionMetadata: string;
|
|
114
|
+
/** Collection parent's master edition. */
|
|
115
|
+
readonly collectionMasterEdition: string;
|
|
116
|
+
/** `["collection_authority"]` program-signer PDA. */
|
|
117
|
+
readonly collectionAuthority: string;
|
|
118
|
+
}
|
|
119
|
+
/** {@link TokenizedNftAccounts} plus the two read-only market PDAs
|
|
120
|
+
* `mint_handle_nft` checks (no live auction/listing may exist). */
|
|
121
|
+
export interface MintHandleNftAccounts extends TokenizedNftAccounts {
|
|
122
|
+
/** `["auction", handle]` under the registry program (normally absent). */
|
|
123
|
+
readonly auction: string;
|
|
124
|
+
/** `["listing", handle]` under the registry program (normally absent). */
|
|
125
|
+
readonly listing: string;
|
|
126
|
+
}
|
|
127
|
+
export interface TokenizedNftAccountsInput {
|
|
128
|
+
/** The registry program id. */
|
|
129
|
+
readonly programId: AddressLike;
|
|
130
|
+
/** The wallet that will hold the NFT (its ATA + token record are derived). */
|
|
131
|
+
readonly owner: AddressLike;
|
|
132
|
+
/** The `["handle", name]` PDA being tokenized. */
|
|
133
|
+
readonly handle: AddressLike;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Derive every PDA/ATA a tokenized REGISTER (`register_tokenized` /
|
|
137
|
+
* `register_revealed_tokenized`) needs beyond payer/owner/handle/treasury.
|
|
138
|
+
* Pure: nothing is fetched. `Config.treasury` is NOT derivable — read it with
|
|
139
|
+
* `fetchConfigTreasury` (register.ts).
|
|
140
|
+
*/
|
|
141
|
+
export declare function deriveTokenizedNftAccounts(find: PdaFinder, p: TokenizedNftAccountsInput): Promise<TokenizedNftAccounts>;
|
|
142
|
+
/**
|
|
143
|
+
* Derive every PDA/ATA `mint_handle_nft` needs beyond payer/owner/handle/
|
|
144
|
+
* treasury: {@link deriveTokenizedNftAccounts} plus `["auction", handle]` and
|
|
145
|
+
* `["listing", handle]`. Pure: nothing is fetched.
|
|
146
|
+
*/
|
|
147
|
+
export declare function deriveMintHandleNftAccounts(find: PdaFinder, p: TokenizedNftAccountsInput): Promise<MintHandleNftAccounts>;
|
|
148
|
+
/** The `mint` … `collectionAuthority` addresses — any object carrying them
|
|
149
|
+
* (e.g. a {@link TokenizedNftAccounts}, or a per-TLD collection variant). */
|
|
150
|
+
export interface TokenizedTailAccounts {
|
|
151
|
+
readonly mint: AddressLike;
|
|
152
|
+
readonly ownerTokenAccount: AddressLike;
|
|
153
|
+
readonly metadata: AddressLike;
|
|
154
|
+
readonly masterEdition: AddressLike;
|
|
155
|
+
readonly tokenRecord: AddressLike;
|
|
156
|
+
readonly collectionMint: AddressLike;
|
|
157
|
+
readonly collectionMetadata: AddressLike;
|
|
158
|
+
readonly collectionMasterEdition: AddressLike;
|
|
159
|
+
readonly collectionAuthority: AddressLike;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* The 14-account pNFT tail shared by every tokenized instruction, from
|
|
163
|
+
* `mint` through `sysvar_instructions` (order + signer/writable flags exactly
|
|
164
|
+
* as `MintHandleNft` / `RegisterTokenized` declare them in lib.rs). Exposed
|
|
165
|
+
* for instructions that append the same tail to their own preamble.
|
|
166
|
+
*/
|
|
167
|
+
export declare function buildTokenizedTailKeys(a: TokenizedTailAccounts): InstructionKey[];
|
|
168
|
+
export interface MintHandleNftParams extends TokenizedTailAccounts {
|
|
169
|
+
/** The registry program id. */
|
|
170
|
+
readonly programId: AddressLike;
|
|
171
|
+
/** Pays the mint fee + all new-account rent. Signer. */
|
|
172
|
+
readonly payer: AddressLike;
|
|
173
|
+
/** The handle's current owner — SIGNS (normally the same wallet as payer). */
|
|
174
|
+
readonly owner: AddressLike;
|
|
175
|
+
/** The `["config"]` PDA. */
|
|
176
|
+
readonly config: AddressLike;
|
|
177
|
+
/** `Config.treasury` — `fetchConfigTreasury` (register.ts). */
|
|
178
|
+
readonly treasury: AddressLike;
|
|
179
|
+
/** The existing, untokenized `["handle", name]` PDA. */
|
|
180
|
+
readonly handle: AddressLike;
|
|
181
|
+
/** `["auction", handle]` — read-only. */
|
|
182
|
+
readonly auction: AddressLike;
|
|
183
|
+
/** `["listing", handle]` — read-only. */
|
|
184
|
+
readonly listing: AddressLike;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Build `mint_handle_nft` — tokenize an ALREADY-REGISTERED, untokenized
|
|
188
|
+
* handle as its capability pNFT. Signers: `payer` AND `owner` (two signature
|
|
189
|
+
* slots unless they are the same key). Account order: `MintHandleNft<'info>`
|
|
190
|
+
* (see module docs). Data is the 8-byte discriminator only. Prepend
|
|
191
|
+
* `SetComputeUnitLimit(MINT_HANDLE_NFT_CU_LIMIT)`.
|
|
192
|
+
*/
|
|
193
|
+
export declare function buildMintHandleNftIx(p: MintHandleNftParams): BuiltInstruction;
|
|
194
|
+
export interface MintHandleNftWithUriParams extends MintHandleNftParams {
|
|
195
|
+
/** A metadata URI the caller has ALREADY pinned (Arweave/IPFS), ≤ 200 bytes. */
|
|
196
|
+
readonly metadataUri: string;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Build `mint_handle_nft_with_uri` — {@link buildMintHandleNftIx} with a
|
|
200
|
+
* caller-supplied Metaplex `uri` instead of the program's hosted one. Same
|
|
201
|
+
* accounts and signers; data = discriminator ‖ borsh(String metadataUri).
|
|
202
|
+
*/
|
|
203
|
+
export declare function buildMintHandleNftWithUriIx(p: MintHandleNftWithUriParams): BuiltInstruction;
|
|
204
|
+
export interface RegisterTokenizedParams extends TokenizedTailAccounts {
|
|
205
|
+
/** The registry program id. */
|
|
206
|
+
readonly programId: AddressLike;
|
|
207
|
+
/** Pays the price and all rent. Signer. */
|
|
208
|
+
readonly payer: AddressLike;
|
|
209
|
+
/** Receives the handle + NFT. Need NOT sign (gifting parity with `register`). */
|
|
210
|
+
readonly owner: AddressLike;
|
|
211
|
+
/** The `["config"]` PDA. */
|
|
212
|
+
readonly config: AddressLike;
|
|
213
|
+
/** `Config.treasury` — `fetchConfigTreasury` (register.ts). */
|
|
214
|
+
readonly treasury: AddressLike;
|
|
215
|
+
/** The `["handle", name]` PDA being claimed — must not already exist. */
|
|
216
|
+
readonly handle: AddressLike;
|
|
217
|
+
/** Canonical form (`normalizeHandle` output), 1..=32 bytes. */
|
|
218
|
+
readonly name: string;
|
|
219
|
+
readonly handleType: HandleTypeValue;
|
|
220
|
+
/** OPTIONAL revenue-share pair (#7397) — supply BOTH or NEITHER. */
|
|
221
|
+
readonly integrator?: AddressLike;
|
|
222
|
+
/** The `["integrator", integrator]` allowlist PDA. */
|
|
223
|
+
readonly integratorAllowlist?: AddressLike;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Build `register_tokenized` — register a new handle AND mint its pNFT in
|
|
227
|
+
* one instruction (the default permanent-XNT purchase). Signer: `payer`
|
|
228
|
+
* only. Account order: `RegisterTokenized<'info>` (see module docs). Data =
|
|
229
|
+
* discriminator ‖ borsh(name) ‖ handle_type(u8). Price is computed on-chain
|
|
230
|
+
* (as for `register`). Prepend `SetComputeUnitLimit(REGISTER_TOKENIZED_CU_LIMIT)`.
|
|
231
|
+
* `name` must be canonical (the PDA seeds on it).
|
|
232
|
+
*/
|
|
233
|
+
export declare function buildRegisterTokenizedIx(p: RegisterTokenizedParams): BuiltInstruction;
|
|
234
|
+
export interface RegisterRevealedTokenizedParams extends RegisterTokenizedParams {
|
|
235
|
+
/** The `["commitment", commitmentHash]` PDA the matching `commit` created. */
|
|
236
|
+
readonly commitment: AddressLike;
|
|
237
|
+
/** The exact 32-byte secret the commitment hashed. */
|
|
238
|
+
readonly secret: Uint8Array;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Build `register_revealed_tokenized` — the commit-reveal sibling of
|
|
242
|
+
* {@link buildRegisterTokenizedIx}. Signer: `payer` only. Same accounts plus
|
|
243
|
+
* `commitment` (w) right after `handle`; data = discriminator ‖ borsh(name)
|
|
244
|
+
* ‖ handle_type(u8) ‖ secret[32]. Prepend
|
|
245
|
+
* `SetComputeUnitLimit(REGISTER_TOKENIZED_CU_LIMIT)`.
|
|
246
|
+
*/
|
|
247
|
+
export declare function buildRegisterRevealedTokenizedIx(p: RegisterRevealedTokenizedParams): BuiltInstruction;
|