@secondlayer/stacks 0.0.1
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 +92 -0
- package/dist/shared/stacks-02actsrx.cjs +17 -0
- package/dist/shared/stacks-02actsrx.cjs.map +10 -0
- package/dist/shared/stacks-1aqm7c2h.cjs +110 -0
- package/dist/shared/stacks-1aqm7c2h.cjs.map +11 -0
- package/dist/shared/stacks-24h5k94q.cjs +74 -0
- package/dist/shared/stacks-24h5k94q.cjs.map +11 -0
- package/dist/shared/stacks-2ar4prfz.cjs +328 -0
- package/dist/shared/stacks-2ar4prfz.cjs.map +11 -0
- package/dist/shared/stacks-4py5pm0r.cjs +237 -0
- package/dist/shared/stacks-4py5pm0r.cjs.map +10 -0
- package/dist/shared/stacks-5tprhns9.cjs +54 -0
- package/dist/shared/stacks-5tprhns9.cjs.map +11 -0
- package/dist/shared/stacks-61rvzkz1.cjs +132 -0
- package/dist/shared/stacks-61rvzkz1.cjs.map +17 -0
- package/dist/shared/stacks-709tra19.js +30 -0
- package/dist/shared/stacks-709tra19.js.map +10 -0
- package/dist/shared/stacks-74k8cxgb.cjs +567 -0
- package/dist/shared/stacks-74k8cxgb.cjs.map +13 -0
- package/dist/shared/stacks-8m9byk2j.js +7 -0
- package/dist/shared/stacks-8m9byk2j.js.map +9 -0
- package/dist/shared/stacks-8yykgdww.js +125 -0
- package/dist/shared/stacks-8yykgdww.js.map +11 -0
- package/dist/shared/stacks-9g0jhab3.cjs +40 -0
- package/dist/shared/stacks-9g0jhab3.cjs.map +10 -0
- package/dist/shared/stacks-an5k8n4t.cjs +291 -0
- package/dist/shared/stacks-an5k8n4t.cjs.map +23 -0
- package/dist/shared/stacks-b008c3w8.cjs +214 -0
- package/dist/shared/stacks-b008c3w8.cjs.map +11 -0
- package/dist/shared/stacks-bnvfmt7y.cjs +31 -0
- package/dist/shared/stacks-bnvfmt7y.cjs.map +9 -0
- package/dist/shared/stacks-bycy6t9k.js +22 -0
- package/dist/shared/stacks-bycy6t9k.js.map +10 -0
- package/dist/shared/stacks-d1fmkv3p.js +258 -0
- package/dist/shared/stacks-d1fmkv3p.js.map +13 -0
- package/dist/shared/stacks-dr5en54r.cjs +119 -0
- package/dist/shared/stacks-dr5en54r.cjs.map +10 -0
- package/dist/shared/stacks-dxhntr76.js +278 -0
- package/dist/shared/stacks-dxhntr76.js.map +10 -0
- package/dist/shared/stacks-evnzth1q.cjs +35 -0
- package/dist/shared/stacks-evnzth1q.cjs.map +10 -0
- package/dist/shared/stacks-f3tk2k5s.js +27 -0
- package/dist/shared/stacks-f3tk2k5s.js.map +9 -0
- package/dist/shared/stacks-f7wdrzs3.js +285 -0
- package/dist/shared/stacks-f7wdrzs3.js.map +11 -0
- package/dist/shared/stacks-fcaefc5b.cjs +16 -0
- package/dist/shared/stacks-fcaefc5b.cjs.map +10 -0
- package/dist/shared/stacks-g9mcjcqg.cjs +3 -0
- package/dist/shared/stacks-g9mcjcqg.cjs.map +9 -0
- package/dist/shared/stacks-gck1sq7h.cjs +28 -0
- package/dist/shared/stacks-gck1sq7h.cjs.map +10 -0
- package/dist/shared/stacks-gjvbq6w7.js +46 -0
- package/dist/shared/stacks-gjvbq6w7.js.map +10 -0
- package/dist/shared/stacks-j2cy7qtt.js +237 -0
- package/dist/shared/stacks-j2cy7qtt.js.map +11 -0
- package/dist/shared/stacks-k08tgzyp.cjs +232 -0
- package/dist/shared/stacks-k08tgzyp.cjs.map +13 -0
- package/dist/shared/stacks-k2p5tv6x.js +37 -0
- package/dist/shared/stacks-k2p5tv6x.js.map +10 -0
- package/dist/shared/stacks-k58k970n.js +234 -0
- package/dist/shared/stacks-k58k970n.js.map +10 -0
- package/dist/shared/stacks-n2g56wgg.js +338 -0
- package/dist/shared/stacks-n2g56wgg.js.map +23 -0
- package/dist/shared/stacks-nqytwfcc.js +243 -0
- package/dist/shared/stacks-nqytwfcc.js.map +11 -0
- package/dist/shared/stacks-qcae5852.js +19 -0
- package/dist/shared/stacks-qcae5852.js.map +10 -0
- package/dist/shared/stacks-qt8ehebn.js +76 -0
- package/dist/shared/stacks-qt8ehebn.js.map +11 -0
- package/dist/shared/stacks-qvg7c24g.cjs +232 -0
- package/dist/shared/stacks-qvg7c24g.cjs.map +10 -0
- package/dist/shared/stacks-r1t6g3c3.cjs +241 -0
- package/dist/shared/stacks-r1t6g3c3.cjs.map +11 -0
- package/dist/shared/stacks-tjxmrssa.js +282 -0
- package/dist/shared/stacks-tjxmrssa.js.map +11 -0
- package/dist/shared/stacks-v9jqcpd4.js +18 -0
- package/dist/shared/stacks-v9jqcpd4.js.map +10 -0
- package/dist/shared/stacks-vdfag81a.cjs +121 -0
- package/dist/shared/stacks-vdfag81a.cjs.map +10 -0
- package/dist/shared/stacks-vdfs3e5v.js +134 -0
- package/dist/shared/stacks-vdfs3e5v.js.map +10 -0
- package/dist/shared/stacks-y3dh7hv1.js +60 -0
- package/dist/shared/stacks-y3dh7hv1.js.map +11 -0
- package/dist/shared/stacks-ya3x01yd.cjs +16 -0
- package/dist/shared/stacks-ya3x01yd.cjs.map +10 -0
- package/dist/shared/stacks-yfgsm6ap.js +599 -0
- package/dist/shared/stacks-yfgsm6ap.js.map +13 -0
- package/dist/shared/stacks-yfveb68e.js +121 -0
- package/dist/shared/stacks-yfveb68e.js.map +10 -0
- package/dist/shared/stacks-zm0b3tgy.js +160 -0
- package/dist/shared/stacks-zm0b3tgy.js.map +17 -0
- package/dist/shared/stacks-zyv9qqme.cjs +249 -0
- package/dist/shared/stacks-zyv9qqme.cjs.map +11 -0
- package/dist/src/accounts/index.cjs +90 -0
- package/dist/src/accounts/index.cjs.map +12 -0
- package/dist/src/accounts/index.d.cts +47 -0
- package/dist/src/accounts/index.d.ts +47 -0
- package/dist/src/accounts/index.js +104 -0
- package/dist/src/accounts/index.js.map +12 -0
- package/dist/src/actions/index.cjs +36 -0
- package/dist/src/actions/index.cjs.map +9 -0
- package/dist/src/actions/index.d.cts +886 -0
- package/dist/src/actions/index.d.ts +886 -0
- package/dist/src/actions/index.js +81 -0
- package/dist/src/actions/index.js.map +9 -0
- package/dist/src/bns/index.cjs +590 -0
- package/dist/src/bns/index.cjs.map +15 -0
- package/dist/src/bns/index.d.cts +241 -0
- package/dist/src/bns/index.d.ts +241 -0
- package/dist/src/bns/index.js +611 -0
- package/dist/src/bns/index.js.map +15 -0
- package/dist/src/chains/index.cjs +13 -0
- package/dist/src/chains/index.cjs.map +9 -0
- package/dist/src/chains/index.d.cts +53 -0
- package/dist/src/chains/index.d.ts +53 -0
- package/dist/src/chains/index.js +18 -0
- package/dist/src/chains/index.js.map +9 -0
- package/dist/src/clarity/index.cjs +3 -0
- package/dist/src/clarity/index.cjs.map +9 -0
- package/dist/src/clarity/index.d.cts +821 -0
- package/dist/src/clarity/index.d.ts +821 -0
- package/dist/src/clarity/index.js +145 -0
- package/dist/src/clarity/index.js.map +9 -0
- package/dist/src/connect/index.cjs +480 -0
- package/dist/src/connect/index.cjs.map +19 -0
- package/dist/src/connect/index.d.cts +110 -0
- package/dist/src/connect/index.d.ts +110 -0
- package/dist/src/connect/index.js +448 -0
- package/dist/src/connect/index.js.map +19 -0
- package/dist/src/connect/walletconnect/index.cjs +1322 -0
- package/dist/src/connect/walletconnect/index.cjs.map +18 -0
- package/dist/src/connect/walletconnect/index.d.cts +132 -0
- package/dist/src/connect/walletconnect/index.d.ts +132 -0
- package/dist/src/connect/walletconnect/index.js +1290 -0
- package/dist/src/connect/walletconnect/index.js.map +18 -0
- package/dist/src/index.cjs +557 -0
- package/dist/src/index.cjs.map +21 -0
- package/dist/src/index.d.cts +847 -0
- package/dist/src/index.d.ts +847 -0
- package/dist/src/index.js +629 -0
- package/dist/src/index.js.map +21 -0
- package/dist/src/postconditions/index.cjs +3 -0
- package/dist/src/postconditions/index.cjs.map +9 -0
- package/dist/src/postconditions/index.d.cts +91 -0
- package/dist/src/postconditions/index.d.ts +91 -0
- package/dist/src/postconditions/index.js +12 -0
- package/dist/src/postconditions/index.js.map +9 -0
- package/dist/src/pox/index.cjs +860 -0
- package/dist/src/pox/index.cjs.map +15 -0
- package/dist/src/pox/index.d.cts +244 -0
- package/dist/src/pox/index.d.ts +244 -0
- package/dist/src/pox/index.js +877 -0
- package/dist/src/pox/index.js.map +15 -0
- package/dist/src/stackingdao/index.cjs +300 -0
- package/dist/src/stackingdao/index.cjs.map +13 -0
- package/dist/src/stackingdao/index.d.cts +179 -0
- package/dist/src/stackingdao/index.d.ts +179 -0
- package/dist/src/stackingdao/index.js +318 -0
- package/dist/src/stackingdao/index.js.map +13 -0
- package/dist/src/subscriptions/index.cjs +14 -0
- package/dist/src/subscriptions/index.cjs.map +9 -0
- package/dist/src/subscriptions/index.d.cts +250 -0
- package/dist/src/subscriptions/index.d.ts +250 -0
- package/dist/src/subscriptions/index.js +21 -0
- package/dist/src/subscriptions/index.js.map +9 -0
- package/dist/src/transactions/index.cjs +50 -0
- package/dist/src/transactions/index.cjs.map +9 -0
- package/dist/src/transactions/index.d.cts +412 -0
- package/dist/src/transactions/index.d.ts +412 -0
- package/dist/src/transactions/index.js +101 -0
- package/dist/src/transactions/index.js.map +9 -0
- package/dist/src/utils/index.cjs +168 -0
- package/dist/src/utils/index.cjs.map +11 -0
- package/dist/src/utils/index.d.cts +140 -0
- package/dist/src/utils/index.d.ts +140 -0
- package/dist/src/utils/index.js +222 -0
- package/dist/src/utils/index.js.map +11 -0
- package/package.json +105 -0
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
import"../../shared/stacks-tjxmrssa.js";
|
|
2
|
+
import"../../shared/stacks-k58k970n.js";
|
|
3
|
+
import {
|
|
4
|
+
getContract
|
|
5
|
+
} from "../../shared/stacks-vdfs3e5v.js";
|
|
6
|
+
import"../../shared/stacks-zm0b3tgy.js";
|
|
7
|
+
import"../../shared/stacks-709tra19.js";
|
|
8
|
+
import"../../shared/stacks-d1fmkv3p.js";
|
|
9
|
+
import {
|
|
10
|
+
Pc
|
|
11
|
+
} from "../../shared/stacks-yfveb68e.js";
|
|
12
|
+
import"../../shared/stacks-f7wdrzs3.js";
|
|
13
|
+
import"../../shared/stacks-yfgsm6ap.js";
|
|
14
|
+
import {
|
|
15
|
+
Cl
|
|
16
|
+
} from "../../shared/stacks-j2cy7qtt.js";
|
|
17
|
+
import"../../shared/stacks-8yykgdww.js";
|
|
18
|
+
import"../../shared/stacks-v9jqcpd4.js";
|
|
19
|
+
import {
|
|
20
|
+
hash160
|
|
21
|
+
} from "../../shared/stacks-bycy6t9k.js";
|
|
22
|
+
import"../../shared/stacks-gjvbq6w7.js";
|
|
23
|
+
import"../../shared/stacks-nqytwfcc.js";
|
|
24
|
+
import"../../shared/stacks-8m9byk2j.js";
|
|
25
|
+
|
|
26
|
+
// src/bns/abi.ts
|
|
27
|
+
var BNS_ABI = {
|
|
28
|
+
functions: [
|
|
29
|
+
{
|
|
30
|
+
name: "get-owner-name",
|
|
31
|
+
access: "read-only",
|
|
32
|
+
args: [
|
|
33
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
34
|
+
{ name: "namespace", type: { buff: { length: 20 } } }
|
|
35
|
+
],
|
|
36
|
+
outputs: {
|
|
37
|
+
response: {
|
|
38
|
+
ok: { optional: "principal" },
|
|
39
|
+
error: "uint128"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: "get-id-from-bns",
|
|
45
|
+
access: "read-only",
|
|
46
|
+
args: [
|
|
47
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
48
|
+
{ name: "namespace", type: { buff: { length: 20 } } }
|
|
49
|
+
],
|
|
50
|
+
outputs: { optional: "uint128" }
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "get-bns-from-id",
|
|
54
|
+
access: "read-only",
|
|
55
|
+
args: [{ name: "id", type: "uint128" }],
|
|
56
|
+
outputs: {
|
|
57
|
+
optional: {
|
|
58
|
+
tuple: [
|
|
59
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
60
|
+
{ name: "namespace", type: { buff: { length: 20 } } }
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "get-owner",
|
|
67
|
+
access: "read-only",
|
|
68
|
+
args: [{ name: "id", type: "uint128" }],
|
|
69
|
+
outputs: {
|
|
70
|
+
response: {
|
|
71
|
+
ok: { optional: "principal" },
|
|
72
|
+
error: "none"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "get-primary",
|
|
78
|
+
access: "read-only",
|
|
79
|
+
args: [{ name: "owner", type: "principal" }],
|
|
80
|
+
outputs: {
|
|
81
|
+
response: {
|
|
82
|
+
ok: {
|
|
83
|
+
optional: {
|
|
84
|
+
tuple: [
|
|
85
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
86
|
+
{ name: "namespace", type: { buff: { length: 20 } } }
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
error: "none"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: "can-resolve-name",
|
|
96
|
+
access: "read-only",
|
|
97
|
+
args: [
|
|
98
|
+
{ name: "namespace", type: { buff: { length: 20 } } },
|
|
99
|
+
{ name: "name", type: { buff: { length: 48 } } }
|
|
100
|
+
],
|
|
101
|
+
outputs: {
|
|
102
|
+
response: {
|
|
103
|
+
ok: {
|
|
104
|
+
tuple: [
|
|
105
|
+
{ name: "renewal", type: "uint128" },
|
|
106
|
+
{ name: "owner", type: "principal" }
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
error: "uint128"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "get-renewal-height",
|
|
115
|
+
access: "read-only",
|
|
116
|
+
args: [{ name: "id", type: "uint128" }],
|
|
117
|
+
outputs: { response: { ok: "uint128", error: "uint128" } }
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: "get-name-price",
|
|
121
|
+
access: "read-only",
|
|
122
|
+
args: [
|
|
123
|
+
{ name: "namespace", type: { buff: { length: 20 } } },
|
|
124
|
+
{ name: "name", type: { buff: { length: 48 } } }
|
|
125
|
+
],
|
|
126
|
+
outputs: {
|
|
127
|
+
response: {
|
|
128
|
+
ok: { response: { ok: "uint128", error: "uint128" } },
|
|
129
|
+
error: "uint128"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: "get-bns-info",
|
|
135
|
+
access: "read-only",
|
|
136
|
+
args: [
|
|
137
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
138
|
+
{ name: "namespace", type: { buff: { length: 20 } } }
|
|
139
|
+
],
|
|
140
|
+
outputs: {
|
|
141
|
+
optional: {
|
|
142
|
+
tuple: [
|
|
143
|
+
{ name: "hashed-salted-fqn-preorder", type: { optional: { buff: { length: 20 } } } },
|
|
144
|
+
{ name: "imported-at", type: { optional: "uint128" } },
|
|
145
|
+
{ name: "owner", type: "principal" },
|
|
146
|
+
{ name: "preordered-by", type: { optional: "principal" } },
|
|
147
|
+
{ name: "registered-at", type: { optional: "uint128" } },
|
|
148
|
+
{ name: "renewal-height", type: "uint128" },
|
|
149
|
+
{ name: "stx-burn", type: "uint128" }
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: "name-preorder",
|
|
156
|
+
access: "public",
|
|
157
|
+
args: [
|
|
158
|
+
{ name: "hashed-salted-fqn", type: { buff: { length: 20 } } },
|
|
159
|
+
{ name: "stx-to-burn", type: "uint128" }
|
|
160
|
+
],
|
|
161
|
+
outputs: { response: { ok: "uint128", error: "uint128" } }
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
name: "name-register",
|
|
165
|
+
access: "public",
|
|
166
|
+
args: [
|
|
167
|
+
{ name: "namespace", type: { buff: { length: 20 } } },
|
|
168
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
169
|
+
{ name: "salt", type: { buff: { length: 20 } } }
|
|
170
|
+
],
|
|
171
|
+
outputs: { response: { ok: "uint128", error: "uint128" } }
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
name: "name-claim-fast",
|
|
175
|
+
access: "public",
|
|
176
|
+
args: [
|
|
177
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
178
|
+
{ name: "namespace", type: { buff: { length: 20 } } },
|
|
179
|
+
{ name: "send-to", type: "principal" }
|
|
180
|
+
],
|
|
181
|
+
outputs: { response: { ok: "uint128", error: "uint128" } }
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
name: "name-renewal",
|
|
185
|
+
access: "public",
|
|
186
|
+
args: [
|
|
187
|
+
{ name: "namespace", type: { buff: { length: 20 } } },
|
|
188
|
+
{ name: "name", type: { buff: { length: 48 } } }
|
|
189
|
+
],
|
|
190
|
+
outputs: { response: { ok: "bool", error: "uint128" } }
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: "transfer",
|
|
194
|
+
access: "public",
|
|
195
|
+
args: [
|
|
196
|
+
{ name: "id", type: "uint128" },
|
|
197
|
+
{ name: "owner", type: "principal" },
|
|
198
|
+
{ name: "recipient", type: "principal" }
|
|
199
|
+
],
|
|
200
|
+
outputs: { response: { ok: "bool", error: "uint128" } }
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: "set-primary-name",
|
|
204
|
+
access: "public",
|
|
205
|
+
args: [{ name: "primary-name-id", type: "uint128" }],
|
|
206
|
+
outputs: { response: { ok: "bool", error: "uint128" } }
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
non_fungible_tokens: [{ name: "BNS-V2", type: "uint128" }]
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
// src/bns/zonefile-abi.ts
|
|
213
|
+
var ZONEFILE_RESOLVER_ABI = {
|
|
214
|
+
functions: [
|
|
215
|
+
{
|
|
216
|
+
name: "resolve-name",
|
|
217
|
+
access: "read-only",
|
|
218
|
+
args: [
|
|
219
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
220
|
+
{ name: "namespace", type: { buff: { length: 20 } } }
|
|
221
|
+
],
|
|
222
|
+
outputs: {
|
|
223
|
+
response: {
|
|
224
|
+
ok: { optional: { buff: { length: 8192 } } },
|
|
225
|
+
error: "uint128"
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: "update-zonefile",
|
|
231
|
+
access: "public",
|
|
232
|
+
args: [
|
|
233
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
234
|
+
{ name: "namespace", type: { buff: { length: 20 } } },
|
|
235
|
+
{ name: "new-zonefile", type: { optional: { buff: { length: 8192 } } } }
|
|
236
|
+
],
|
|
237
|
+
outputs: { response: { ok: "bool", error: "uint128" } }
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
name: "revoke-name",
|
|
241
|
+
access: "public",
|
|
242
|
+
args: [
|
|
243
|
+
{ name: "name", type: { buff: { length: 48 } } },
|
|
244
|
+
{ name: "namespace", type: { buff: { length: 20 } } }
|
|
245
|
+
],
|
|
246
|
+
outputs: { response: { ok: "bool", error: "uint128" } }
|
|
247
|
+
}
|
|
248
|
+
]
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
// src/bns/constants.ts
|
|
252
|
+
var BNS_CONTRACTS = {
|
|
253
|
+
mainnet: {
|
|
254
|
+
address: "SP2QEZ06AGJ3RKJPBV14SY1V5BBFNAW33D96YPGZF",
|
|
255
|
+
name: "BNS-V2"
|
|
256
|
+
},
|
|
257
|
+
testnet: {
|
|
258
|
+
address: "ST2QEZ06AGJ3RKJPBV14SY1V5BBFNAW33D9SZJQ0M",
|
|
259
|
+
name: "BNS-V2"
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
var ZONEFILE_RESOLVER_CONTRACTS = {
|
|
263
|
+
mainnet: {
|
|
264
|
+
address: "SP2QEZ06AGJ3RKJPBV14SY1V5BBFNAW33D96YPGZF",
|
|
265
|
+
name: "zonefile-resolver"
|
|
266
|
+
},
|
|
267
|
+
testnet: {
|
|
268
|
+
address: "ST2QEZ06AGJ3RKJPBV14SY1V5BBFNAW33D9SZJQ0M",
|
|
269
|
+
name: "zonefile-resolver"
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
var DEFAULT_NAMESPACE = "btc";
|
|
273
|
+
|
|
274
|
+
// src/bns/utils.ts
|
|
275
|
+
function parseFQN(fqn) {
|
|
276
|
+
const parts = fqn.split(".");
|
|
277
|
+
if (parts.length === 1) {
|
|
278
|
+
return {
|
|
279
|
+
name: parts[0],
|
|
280
|
+
namespace: DEFAULT_NAMESPACE
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
if (parts.length === 2) {
|
|
284
|
+
return {
|
|
285
|
+
name: parts[0],
|
|
286
|
+
namespace: parts[1]
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
throw new Error(`Invalid fully qualified name: ${fqn}. Expected format: "name.namespace" or "name"`);
|
|
290
|
+
}
|
|
291
|
+
function formatFQN(name, namespace) {
|
|
292
|
+
return `${name}.${namespace}`;
|
|
293
|
+
}
|
|
294
|
+
function validateName(name) {
|
|
295
|
+
if (name.length < 1 || name.length > 48)
|
|
296
|
+
return false;
|
|
297
|
+
const regex = /^[a-z0-9]([a-z0-9_-]*[a-z0-9])?$/;
|
|
298
|
+
return regex.test(name);
|
|
299
|
+
}
|
|
300
|
+
function validateNamespace(namespace) {
|
|
301
|
+
if (namespace.length < 1 || namespace.length > 20)
|
|
302
|
+
return false;
|
|
303
|
+
const regex = /^[a-z0-9]+$/;
|
|
304
|
+
return regex.test(namespace);
|
|
305
|
+
}
|
|
306
|
+
function validateFQN(fqn) {
|
|
307
|
+
try {
|
|
308
|
+
const { name, namespace } = parseFQN(fqn);
|
|
309
|
+
return validateName(name) && validateNamespace(namespace);
|
|
310
|
+
} catch {
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
function generateSalt() {
|
|
315
|
+
const salt = new Uint8Array(20);
|
|
316
|
+
crypto.getRandomValues(salt);
|
|
317
|
+
return salt;
|
|
318
|
+
}
|
|
319
|
+
function hashPreorder(name, namespace, salt) {
|
|
320
|
+
const nameBytes = new TextEncoder().encode(name);
|
|
321
|
+
const namespaceBytes = new TextEncoder().encode(namespace);
|
|
322
|
+
const combined = new Uint8Array(nameBytes.length + namespaceBytes.length + salt.length);
|
|
323
|
+
combined.set(nameBytes, 0);
|
|
324
|
+
combined.set(namespaceBytes, nameBytes.length);
|
|
325
|
+
combined.set(salt, nameBytes.length + namespaceBytes.length);
|
|
326
|
+
return hash160(combined);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// src/bns/actions.ts
|
|
330
|
+
function getBnsContract(client) {
|
|
331
|
+
if (!client.chain) {
|
|
332
|
+
throw new Error("Client must have a chain configured");
|
|
333
|
+
}
|
|
334
|
+
const network = client.chain.network;
|
|
335
|
+
const contract = network === "mainnet" ? BNS_CONTRACTS.mainnet : BNS_CONTRACTS.testnet;
|
|
336
|
+
return getContract({
|
|
337
|
+
client,
|
|
338
|
+
address: contract.address,
|
|
339
|
+
name: contract.name,
|
|
340
|
+
abi: BNS_ABI
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
function getZonefileContract(client) {
|
|
344
|
+
if (!client.chain) {
|
|
345
|
+
throw new Error("Client must have a chain configured");
|
|
346
|
+
}
|
|
347
|
+
const network = client.chain.network;
|
|
348
|
+
const contract = network === "mainnet" ? ZONEFILE_RESOLVER_CONTRACTS.mainnet : ZONEFILE_RESOLVER_CONTRACTS.testnet;
|
|
349
|
+
return getContract({
|
|
350
|
+
client,
|
|
351
|
+
address: contract.address,
|
|
352
|
+
name: contract.name,
|
|
353
|
+
abi: ZONEFILE_RESOLVER_ABI
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
function stringToBytes(str) {
|
|
357
|
+
return new TextEncoder().encode(str);
|
|
358
|
+
}
|
|
359
|
+
async function resolveName(client, nameOrFQN) {
|
|
360
|
+
if (!validateFQN(nameOrFQN)) {
|
|
361
|
+
throw new Error(`Invalid name format: ${nameOrFQN}`);
|
|
362
|
+
}
|
|
363
|
+
const { name, namespace } = parseFQN(nameOrFQN);
|
|
364
|
+
const bns = getBnsContract(client);
|
|
365
|
+
const owner = await bns.read["get-owner-name"]({
|
|
366
|
+
name: stringToBytes(name),
|
|
367
|
+
namespace: stringToBytes(namespace)
|
|
368
|
+
});
|
|
369
|
+
return owner;
|
|
370
|
+
}
|
|
371
|
+
async function getPrimaryName(client, address) {
|
|
372
|
+
const bns = getBnsContract(client);
|
|
373
|
+
const result = await bns.read["get-primary"]({
|
|
374
|
+
owner: address
|
|
375
|
+
});
|
|
376
|
+
if (result === null)
|
|
377
|
+
return null;
|
|
378
|
+
const name = new TextDecoder().decode(result.name);
|
|
379
|
+
const namespace = new TextDecoder().decode(result.namespace);
|
|
380
|
+
return formatFQN(name, namespace);
|
|
381
|
+
}
|
|
382
|
+
async function canRegister(client, nameOrFQN) {
|
|
383
|
+
if (!validateFQN(nameOrFQN)) {
|
|
384
|
+
throw new Error(`Invalid name format: ${nameOrFQN}`);
|
|
385
|
+
}
|
|
386
|
+
const { name, namespace } = parseFQN(nameOrFQN);
|
|
387
|
+
const bns = getBnsContract(client);
|
|
388
|
+
try {
|
|
389
|
+
await bns.read["can-resolve-name"]({
|
|
390
|
+
namespace: stringToBytes(namespace),
|
|
391
|
+
name: stringToBytes(name)
|
|
392
|
+
});
|
|
393
|
+
return false;
|
|
394
|
+
} catch {
|
|
395
|
+
return true;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
async function getNamePrice(client, nameOrFQN) {
|
|
399
|
+
if (!validateFQN(nameOrFQN)) {
|
|
400
|
+
throw new Error(`Invalid name format: ${nameOrFQN}`);
|
|
401
|
+
}
|
|
402
|
+
const { name, namespace } = parseFQN(nameOrFQN);
|
|
403
|
+
const bns = getBnsContract(client);
|
|
404
|
+
const result = await bns.read["get-name-price"]({
|
|
405
|
+
namespace: stringToBytes(namespace),
|
|
406
|
+
name: stringToBytes(name)
|
|
407
|
+
});
|
|
408
|
+
if ("ok" in result)
|
|
409
|
+
return result.ok;
|
|
410
|
+
throw new Error(`Failed to get name price for ${nameOrFQN}`);
|
|
411
|
+
}
|
|
412
|
+
async function getNameId(client, nameOrFQN) {
|
|
413
|
+
if (!validateFQN(nameOrFQN)) {
|
|
414
|
+
throw new Error(`Invalid name format: ${nameOrFQN}`);
|
|
415
|
+
}
|
|
416
|
+
const { name, namespace } = parseFQN(nameOrFQN);
|
|
417
|
+
const bns = getBnsContract(client);
|
|
418
|
+
return await bns.read["get-id-from-bns"]({
|
|
419
|
+
name: stringToBytes(name),
|
|
420
|
+
namespace: stringToBytes(namespace)
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
async function preorder(client, params) {
|
|
424
|
+
const { name: nameInput, namespace: namespaceInput, salt: providedSalt } = params;
|
|
425
|
+
const fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;
|
|
426
|
+
if (!validateFQN(fqn)) {
|
|
427
|
+
throw new Error(`Invalid name format: ${fqn}`);
|
|
428
|
+
}
|
|
429
|
+
const { name, namespace } = parseFQN(fqn);
|
|
430
|
+
const available = await canRegister(client, fqn);
|
|
431
|
+
if (!available) {
|
|
432
|
+
throw new Error(`Name ${fqn} is not available for registration`);
|
|
433
|
+
}
|
|
434
|
+
const price = await getNamePrice(client, fqn);
|
|
435
|
+
const salt = providedSalt ?? generateSalt();
|
|
436
|
+
const hashedSaltedFqn = hashPreorder(name, namespace, salt);
|
|
437
|
+
const bns = getBnsContract(client);
|
|
438
|
+
const txid = await bns.call["name-preorder"]({
|
|
439
|
+
hashedSaltedFqn,
|
|
440
|
+
stxToBurn: price
|
|
441
|
+
}, {
|
|
442
|
+
postConditions: [Pc.principal(client.account.address).willSendLte(price).ustx()]
|
|
443
|
+
});
|
|
444
|
+
return { txid, salt };
|
|
445
|
+
}
|
|
446
|
+
async function register(client, params) {
|
|
447
|
+
const { name: nameInput, namespace: namespaceInput, salt } = params;
|
|
448
|
+
const fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;
|
|
449
|
+
if (!validateFQN(fqn)) {
|
|
450
|
+
throw new Error(`Invalid name format: ${fqn}`);
|
|
451
|
+
}
|
|
452
|
+
const { name, namespace } = parseFQN(fqn);
|
|
453
|
+
const bns = getBnsContract(client);
|
|
454
|
+
return bns.call["name-register"]({
|
|
455
|
+
name: stringToBytes(name),
|
|
456
|
+
namespace: stringToBytes(namespace),
|
|
457
|
+
salt
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
async function claimFast(client, params) {
|
|
461
|
+
const { name: nameInput, namespace: namespaceInput, recipient } = params;
|
|
462
|
+
const fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;
|
|
463
|
+
if (!validateFQN(fqn)) {
|
|
464
|
+
throw new Error(`Invalid name format: ${fqn}`);
|
|
465
|
+
}
|
|
466
|
+
const { name, namespace } = parseFQN(fqn);
|
|
467
|
+
const available = await canRegister(client, fqn);
|
|
468
|
+
if (!available) {
|
|
469
|
+
throw new Error(`Name ${fqn} is not available for registration`);
|
|
470
|
+
}
|
|
471
|
+
const price = await getNamePrice(client, fqn);
|
|
472
|
+
const bns = getBnsContract(client);
|
|
473
|
+
return bns.call["name-claim-fast"]({
|
|
474
|
+
name: stringToBytes(name),
|
|
475
|
+
namespace: stringToBytes(namespace),
|
|
476
|
+
sendTo: recipient
|
|
477
|
+
}, {
|
|
478
|
+
postConditions: [Pc.principal(recipient).willSendLte(price).ustx()]
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
async function transfer(client, params) {
|
|
482
|
+
const { name: nameInput, namespace: namespaceInput, recipient } = params;
|
|
483
|
+
const fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;
|
|
484
|
+
if (!validateFQN(fqn)) {
|
|
485
|
+
throw new Error(`Invalid name format: ${fqn}`);
|
|
486
|
+
}
|
|
487
|
+
const id = await getNameId(client, fqn);
|
|
488
|
+
if (id === null) {
|
|
489
|
+
throw new Error(`Name ${fqn} does not exist`);
|
|
490
|
+
}
|
|
491
|
+
const currentOwner = await resolveName(client, fqn);
|
|
492
|
+
if (!currentOwner) {
|
|
493
|
+
throw new Error(`Cannot determine owner of ${fqn}`);
|
|
494
|
+
}
|
|
495
|
+
const bns = getBnsContract(client);
|
|
496
|
+
if (!client.chain) {
|
|
497
|
+
throw new Error("Client must have a chain configured");
|
|
498
|
+
}
|
|
499
|
+
const network = client.chain.network;
|
|
500
|
+
const contract = network === "mainnet" ? BNS_CONTRACTS.mainnet : BNS_CONTRACTS.testnet;
|
|
501
|
+
return bns.call.transfer({
|
|
502
|
+
id,
|
|
503
|
+
owner: currentOwner,
|
|
504
|
+
recipient
|
|
505
|
+
}, {
|
|
506
|
+
postConditions: [
|
|
507
|
+
Pc.principal(currentOwner).willSendAsset().nft(`${contract.address}.${contract.name}::BNS-V2`, Cl.uint(id))
|
|
508
|
+
]
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
async function setPrimary(client, params) {
|
|
512
|
+
const { name: nameInput, namespace: namespaceInput } = params;
|
|
513
|
+
const fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;
|
|
514
|
+
if (!validateFQN(fqn)) {
|
|
515
|
+
throw new Error(`Invalid name format: ${fqn}`);
|
|
516
|
+
}
|
|
517
|
+
const id = await getNameId(client, fqn);
|
|
518
|
+
if (id === null) {
|
|
519
|
+
throw new Error(`Name ${fqn} does not exist`);
|
|
520
|
+
}
|
|
521
|
+
const bns = getBnsContract(client);
|
|
522
|
+
return bns.call["set-primary-name"]({ primaryNameId: id });
|
|
523
|
+
}
|
|
524
|
+
async function getZonefile(client, nameOrFQN) {
|
|
525
|
+
if (!validateFQN(nameOrFQN)) {
|
|
526
|
+
throw new Error(`Invalid name format: ${nameOrFQN}`);
|
|
527
|
+
}
|
|
528
|
+
const { name, namespace } = parseFQN(nameOrFQN);
|
|
529
|
+
const zonefile = getZonefileContract(client);
|
|
530
|
+
try {
|
|
531
|
+
const result = await zonefile.read["resolve-name"]({
|
|
532
|
+
name: stringToBytes(name),
|
|
533
|
+
namespace: stringToBytes(namespace)
|
|
534
|
+
});
|
|
535
|
+
return result;
|
|
536
|
+
} catch {
|
|
537
|
+
return null;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
async function updateZonefile(client, params) {
|
|
541
|
+
const { name: nameInput, namespace: namespaceInput, zonefile } = params;
|
|
542
|
+
const fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;
|
|
543
|
+
if (!validateFQN(fqn)) {
|
|
544
|
+
throw new Error(`Invalid name format: ${fqn}`);
|
|
545
|
+
}
|
|
546
|
+
const { name, namespace } = parseFQN(fqn);
|
|
547
|
+
const currentOwner = await resolveName(client, fqn);
|
|
548
|
+
if (!currentOwner) {
|
|
549
|
+
throw new Error(`Name ${fqn} does not exist`);
|
|
550
|
+
}
|
|
551
|
+
const zonefileContract = getZonefileContract(client);
|
|
552
|
+
let zonefileBytes = null;
|
|
553
|
+
if (zonefile !== null) {
|
|
554
|
+
zonefileBytes = typeof zonefile === "string" ? new TextEncoder().encode(zonefile) : zonefile;
|
|
555
|
+
if (zonefileBytes.length > 8192) {
|
|
556
|
+
throw new Error(`Zonefile too large: ${zonefileBytes.length} bytes (max 8192)`);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
return zonefileContract.call["update-zonefile"]({
|
|
560
|
+
name: stringToBytes(name),
|
|
561
|
+
namespace: stringToBytes(namespace),
|
|
562
|
+
newZonefile: zonefileBytes
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
async function revokeZonefile(client, nameOrFQN) {
|
|
566
|
+
if (!validateFQN(nameOrFQN)) {
|
|
567
|
+
throw new Error(`Invalid name format: ${nameOrFQN}`);
|
|
568
|
+
}
|
|
569
|
+
const { name, namespace } = parseFQN(nameOrFQN);
|
|
570
|
+
const zonefileContract = getZonefileContract(client);
|
|
571
|
+
return zonefileContract.call["revoke-name"]({
|
|
572
|
+
name: stringToBytes(name),
|
|
573
|
+
namespace: stringToBytes(namespace)
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// src/bns/index.ts
|
|
578
|
+
function bns() {
|
|
579
|
+
return (client) => ({
|
|
580
|
+
bns: {
|
|
581
|
+
resolveName: (name) => resolveName(client, name),
|
|
582
|
+
getPrimaryName: (address) => getPrimaryName(client, address),
|
|
583
|
+
canRegister: (name) => canRegister(client, name),
|
|
584
|
+
getNamePrice: (name) => getNamePrice(client, name),
|
|
585
|
+
getNameId: (name) => getNameId(client, name),
|
|
586
|
+
preorder: (params) => preorder(client, params),
|
|
587
|
+
register: (params) => register(client, params),
|
|
588
|
+
claimFast: (params) => claimFast(client, params),
|
|
589
|
+
transfer: (params) => transfer(client, params),
|
|
590
|
+
setPrimary: (params) => setPrimary(client, params),
|
|
591
|
+
getZonefile: (name) => getZonefile(client, name),
|
|
592
|
+
updateZonefile: (params) => updateZonefile(client, params),
|
|
593
|
+
revokeZonefile: (name) => revokeZonefile(client, name)
|
|
594
|
+
}
|
|
595
|
+
});
|
|
596
|
+
}
|
|
597
|
+
export {
|
|
598
|
+
validateNamespace,
|
|
599
|
+
validateName,
|
|
600
|
+
validateFQN,
|
|
601
|
+
parseFQN,
|
|
602
|
+
hashPreorder,
|
|
603
|
+
generateSalt,
|
|
604
|
+
formatFQN,
|
|
605
|
+
bns,
|
|
606
|
+
ZONEFILE_RESOLVER_CONTRACTS,
|
|
607
|
+
BNS_CONTRACTS
|
|
608
|
+
};
|
|
609
|
+
|
|
610
|
+
//# debugId=0D633A7E4933680A64756E2164756E21
|
|
611
|
+
//# sourceMappingURL=index.js.map
|