@midnames/sdk 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core.d.ts +1 -0
- package/dist/core.js +1 -1
- package/dist/holographic-card.css +536 -0
- package/dist/managed/index.d.ts +4 -4
- package/dist/managed/index.js +2 -2
- package/dist/managed/index.js.map +1 -0
- package/dist/managed/leaf.compact +258 -0
- package/dist/managed/{leaf → managed/leaf}/contract/index.cjs +126 -76
- package/dist/managed/managed/leaf/contract/index.cjs.map +8 -0
- package/dist/managed/{leaf → managed/leaf}/contract/index.d.cts +5 -1
- package/dist/managed/witnesses.js.map +1 -0
- package/dist/react/DomainProfileWidget.d.ts +26 -1
- package/dist/react/DomainProfileWidget.js +71 -6
- package/dist/react/HolographicCard.d.ts +36 -0
- package/dist/react/HolographicCard.js +191 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.js +2 -0
- package/dist/styles.css +45 -0
- package/package.json +4 -4
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
pragma language_version 0.17;
|
|
2
|
+
/// # Unshielded Nameservice
|
|
3
|
+
///
|
|
4
|
+
/// Example:
|
|
5
|
+
/// The `domain.mid` register would be deployed with
|
|
6
|
+
/// - parent_domain: "mid"
|
|
7
|
+
/// - parent_resolver: "mid" resolver
|
|
8
|
+
/// - target: arbitrary
|
|
9
|
+
/// - domain: "domain"
|
|
10
|
+
/// - fields for the `domain.mid` domain.
|
|
11
|
+
/// The `sub.domain.mid` register would be deployed with
|
|
12
|
+
/// - parent_domain: "domain"
|
|
13
|
+
/// - parent_resolver: "domain" resolver
|
|
14
|
+
/// - target: arbitrary
|
|
15
|
+
/// - domain: "sub"
|
|
16
|
+
/// - fields for the `sub.domain.mid` domain.
|
|
17
|
+
/// The `hyper.sub.domain.mid` register would be deployed with
|
|
18
|
+
/// - parent_domain: "sub"
|
|
19
|
+
/// - parent_resolver: "sub" resolver
|
|
20
|
+
/// - target: arbitrary
|
|
21
|
+
/// - domain: "hyper"
|
|
22
|
+
/// - fields for the `hyper.sub.domain.mid` domain.
|
|
23
|
+
///
|
|
24
|
+
///
|
|
25
|
+
import CompactStandardLibrary;
|
|
26
|
+
|
|
27
|
+
// This is sealed. If the domain is sold in the parent contract
|
|
28
|
+
// The new owner should deploy a new resolver.
|
|
29
|
+
export sealed ledger PARENT_DOMAIN: Maybe<Opaque<'string'>>;
|
|
30
|
+
export sealed ledger PARENT_RESOLVER: ContractAddress;
|
|
31
|
+
export sealed ledger DOMAIN: Maybe<Opaque<'string'>>;
|
|
32
|
+
|
|
33
|
+
export ledger DOMAIN_OWNER: ZswapCoinPublicKey;
|
|
34
|
+
// This domain could target either a wallet or a contract
|
|
35
|
+
export ledger DOMAIN_TARGET: Either<ZswapCoinPublicKey, ContractAddress>;
|
|
36
|
+
|
|
37
|
+
// Map<domain, (owner, resolver)>.
|
|
38
|
+
export ledger domains: Map<Opaque<'string'>, DomainData>;
|
|
39
|
+
|
|
40
|
+
// Set of domains saved here owned by address.
|
|
41
|
+
export ledger domains_owned: Map<ZswapCoinPublicKey, Set<Opaque<'string'>>>;
|
|
42
|
+
|
|
43
|
+
export ledger fields: Map<Opaque<'string'>, Opaque<'string'>>;
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
export { DomainData, Either, Maybe, CoinInfo }
|
|
47
|
+
struct DomainData {
|
|
48
|
+
owner: ZswapCoinPublicKey,
|
|
49
|
+
resolver: ContractAddress
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
constructor(
|
|
54
|
+
parent_domain: Maybe<Opaque<'string'>>,
|
|
55
|
+
parent_resolver: ContractAddress,
|
|
56
|
+
target: Either<ZswapCoinPublicKey, ContractAddress>,
|
|
57
|
+
domain: Maybe<Opaque<'string'>>,
|
|
58
|
+
coin_color: Bytes<32>,
|
|
59
|
+
domain_cost: Uint<64>,
|
|
60
|
+
kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>
|
|
61
|
+
) {
|
|
62
|
+
DOMAIN_OWNER = ownPublicKey();
|
|
63
|
+
PARENT_DOMAIN = disclose(parent_domain);
|
|
64
|
+
PARENT_RESOLVER = disclose(parent_resolver);
|
|
65
|
+
DOMAIN_TARGET = disclose(target);
|
|
66
|
+
DOMAIN = disclose(domain);
|
|
67
|
+
COIN_COLOR = disclose(coin_color);
|
|
68
|
+
DOMAIN_COST = disclose(domain_cost);
|
|
69
|
+
for (const kv of kvs) {
|
|
70
|
+
if (disclose(kv) == none<[Opaque<'string'>, Opaque<'string'>]>()) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ===========================================
|
|
78
|
+
// Circuits
|
|
79
|
+
// ===========================================
|
|
80
|
+
|
|
81
|
+
export ledger COIN_COLOR: Bytes<32>;
|
|
82
|
+
export ledger DOMAIN_COST: Uint<64>;
|
|
83
|
+
|
|
84
|
+
export circuit update_color(c: Bytes<32>) : [] {
|
|
85
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the owner");
|
|
86
|
+
COIN_COLOR = disclose(c);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export circuit update_cost(c: Uint<64>) : [] {
|
|
90
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the owner");
|
|
91
|
+
DOMAIN_COST = disclose(c);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export circuit update_target_and_fields(
|
|
95
|
+
new_target: Either<ZswapCoinPublicKey, ContractAddress>,
|
|
96
|
+
kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>
|
|
97
|
+
) : [] {
|
|
98
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
99
|
+
for (const kv of kvs) {
|
|
100
|
+
if (disclose(kv) == none<[Opaque<'string'>, Opaque<'string'>]>()) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
104
|
+
}
|
|
105
|
+
DOMAIN_TARGET = disclose(new_target);
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export circuit buy_domain_for(owner: ZswapCoinPublicKey, domain: Opaque<'string'>, resolver: ContractAddress, payment: CoinInfo): [] {
|
|
110
|
+
assert(!domains.member(disclose(domain)), "Domain already exists");
|
|
111
|
+
|
|
112
|
+
const d_payment = disclose(payment);
|
|
113
|
+
assert(d_payment.value == DOMAIN_COST, "Wrong amount");
|
|
114
|
+
assert(d_payment.color == COIN_COLOR, "Wrong coin");
|
|
115
|
+
receive(d_payment);
|
|
116
|
+
sendImmediate(d_payment, left<ZswapCoinPublicKey, ContractAddress>(DOMAIN_OWNER), DOMAIN_COST);
|
|
117
|
+
|
|
118
|
+
const d_owner = disclose(owner);
|
|
119
|
+
|
|
120
|
+
const domain_data = DomainData {
|
|
121
|
+
d_owner,
|
|
122
|
+
disclose(resolver)
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
domains.insert(disclose(domain), disclose(domain_data));
|
|
126
|
+
|
|
127
|
+
// Track domains owned by address
|
|
128
|
+
if (!domains_owned.member(d_owner)) {
|
|
129
|
+
domains_owned.insert(d_owner, default<Set<Opaque<'string'>>>);
|
|
130
|
+
}
|
|
131
|
+
domains_owned.lookup(d_owner).insert(disclose(domain));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export circuit add_multiple_fields(kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>) : [] {
|
|
135
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
136
|
+
for (const kv of kvs) {
|
|
137
|
+
if (disclose(kv) == none<[Opaque<'string'>, Opaque<'string'>]>()) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export circuit insert_field(k: Opaque<'string'>, v: Opaque<'string'>) : [] {
|
|
145
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
146
|
+
fields.insert(disclose(k),disclose(v));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export circuit clear_field(k: Opaque<'string'>): [] {
|
|
150
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
151
|
+
fields.remove(disclose(k));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export circuit clear_all_fields(domain: Opaque<'string'>): [] {
|
|
155
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
156
|
+
fields.resetToDefault();
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export circuit register_domain_for(owner: ZswapCoinPublicKey, domain: Opaque<'string'>, resolver: ContractAddress): [] {
|
|
160
|
+
assert(!domains.member(disclose(domain)), "Domain already exists");
|
|
161
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
162
|
+
|
|
163
|
+
const d_owner = disclose(owner);
|
|
164
|
+
const domain_data = DomainData {
|
|
165
|
+
d_owner,
|
|
166
|
+
disclose(resolver)
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
domains.insert(disclose(domain), disclose(domain_data));
|
|
170
|
+
|
|
171
|
+
// Track domains owned by address
|
|
172
|
+
if (!domains_owned.member(d_owner)) {
|
|
173
|
+
domains_owned.insert(d_owner, default<Set<Opaque<'string'>>>);
|
|
174
|
+
}
|
|
175
|
+
domains_owned.lookup(d_owner).insert(disclose(domain));
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export circuit set_resolver(domain: Opaque<'string'>, resolver: ContractAddress): [] {
|
|
179
|
+
assert(domains.member(disclose(domain)), "Domain does not exist");
|
|
180
|
+
|
|
181
|
+
const current_data = domains.lookup(disclose(domain));
|
|
182
|
+
assert(current_data.owner == ownPublicKey(), "Not the domain owner");
|
|
183
|
+
|
|
184
|
+
const new_data = DomainData {
|
|
185
|
+
current_data.owner,
|
|
186
|
+
disclose(resolver)
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
domains.insert(disclose(domain), disclose(new_data));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export circuit update_domain_target(new_target: Either<ZswapCoinPublicKey, ContractAddress>): [] {
|
|
193
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the contract owner");
|
|
194
|
+
|
|
195
|
+
DOMAIN_TARGET = disclose(new_target);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export circuit transfer_domain(domain: Opaque<'string'>, new_owner: ZswapCoinPublicKey): [] {
|
|
199
|
+
assert(domains.member(disclose(domain)), "Domain does not exist");
|
|
200
|
+
|
|
201
|
+
const current_data = domains.lookup(disclose(domain));
|
|
202
|
+
assert(current_data.owner == ownPublicKey(), "Not the domain owner");
|
|
203
|
+
|
|
204
|
+
const new_data = DomainData {
|
|
205
|
+
disclose(new_owner),
|
|
206
|
+
current_data.resolver
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
domains.insert(disclose(domain), disclose(new_data));
|
|
210
|
+
|
|
211
|
+
// Update ownership tracking
|
|
212
|
+
domains_owned.lookup(ownPublicKey()).remove(disclose(domain));
|
|
213
|
+
if (!domains_owned.member(disclose(new_owner))) {
|
|
214
|
+
domains_owned.insert(disclose(new_owner), default<Set<Opaque<'string'>>>);
|
|
215
|
+
}
|
|
216
|
+
domains_owned.lookup(disclose(new_owner)).insert(disclose(domain));
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
export circuit change_owner(new_owner: ZswapCoinPublicKey) : [] {
|
|
221
|
+
assert(DOMAIN_OWNER == ownPublicKey(), "Not the contract owner");
|
|
222
|
+
DOMAIN_OWNER = disclose(new_owner);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
/*
|
|
227
|
+
Read only, but not pure, so let's not use those
|
|
228
|
+
export circuit resolve(domain: Opaque<'string'>): DomainData {
|
|
229
|
+
assert(domains.member(disclose(domain)), "Domain does not exist");
|
|
230
|
+
return domains.lookup(disclose(domain));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export circuit get_parent_domain(): Maybe<Opaque<'string'>> {
|
|
234
|
+
return PARENT_DOMAIN;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
export circuit get_contract_owner(): ZswapCoinPublicKey {
|
|
238
|
+
return DOMAIN_OWNER;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export circuit get_domain(): Maybe<Opaque<'string'>> {
|
|
242
|
+
return DOMAIN;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export circuit get_domain_target(): Either<ZswapCoinPublicKey, ContractAddress> {
|
|
246
|
+
return DOMAIN_TARGET;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export circuit get_parent_resolver(): ContractAddress {
|
|
250
|
+
return PARENT_RESOLVER;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export circuit addr_owns_domain(addr: ZswapCoinPublicKey, domain: Opaque<'string'>): Boolean {
|
|
254
|
+
assert(domains_owned.member(disclose(addr)), "Address does not own domains in this register");
|
|
255
|
+
return domains_owned.lookup(disclose(addr)).member(disclose(domain));
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
*/
|