Skip to content

Commit 5841a7a

Browse files
author
Enrique A
committed
Upgrade to 1.0.0 which is ready for the Registry V2
1 parent cb169be commit 5841a7a

File tree

9 files changed

+606
-128
lines changed

9 files changed

+606
-128
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
All notable changes to this project will be documented in this file. See
44
[standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
55

6+
### [1.0.0] (2026-01-01)
7+
8+
This is a full upgrade and it's not compatible with the Registry V1.
9+
10+
### Change
11+
12+
- Full migration of the SDK to work with the new Registry V2
13+
- The `parseDomain` method has been replaced by `generateNode`
14+
615
### [0.6.0] (2025-09-03)
716

817
### Change

deno.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@creit-tech/sorobandomains-sdk",
3-
"version": "0.6.0",
4-
"description": "An SDK to easily fetch domains from the sorobandomains.org protocol",
3+
"version": "1.0.0",
4+
"description": "An SDK to easily fetch and interact with domains from the sorobandomains.org protocol",
55
"license": "MIT",
66
"author": {
77
"name": "Creit Technologies LLP",
@@ -11,10 +11,6 @@
1111
"type": "git",
1212
"url": "https://github.com/Creit-Tech/sorobandomains-sdk-js.git"
1313
},
14-
"tasks": {
15-
"dev": "deno run --watch main.ts",
16-
"test": "deno test --allow-net"
17-
},
1814
"fmt": {
1915
"lineWidth": 120
2016
},
@@ -24,9 +20,13 @@
2420
"@std/crypto": "jsr:@std/crypto@^1.0.4",
2521
"@std/encoding": "jsr:@std/encoding@^1.0.8",
2622
"@std/testing": "jsr:@std/testing@^1.0.10",
27-
"@stellar/stellar-sdk": "npm:@stellar/stellar-sdk@^14.1.1"
23+
"@stellar/stellar-sdk": "npm:@stellar/stellar-sdk@^14.1.1",
24+
"buffer": "npm:buffer@^6.0.3"
25+
},
26+
"exports": {
27+
".": "./src/mod.ts",
28+
"./apis": "./src/apis/mod.ts"
2829
},
29-
"exports": "./src/mod.ts",
3030
"exclude": [
3131
".idea",
3232
".github"

deno.lock

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/apis/mod.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "./registry-v2.bindings.ts";

src/apis/registry-v2.bindings.ts

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
import { Buffer } from "buffer";
2+
import type { Option, u32, u64 } from "@stellar/stellar-sdk/contract";
3+
import {
4+
type AssembledTransaction,
5+
Client as ContractClient,
6+
type ClientOptions as ContractClientOptions,
7+
type MethodOptions,
8+
type Result,
9+
Spec as ContractSpec,
10+
} from "@stellar/stellar-sdk/contract";
11+
12+
export * from "@stellar/stellar-sdk";
13+
export * as contract from "@stellar/stellar-sdk/contract";
14+
export * as rpc from "@stellar/stellar-sdk/rpc";
15+
16+
if (typeof window !== "undefined") {
17+
//@ts-ignore Buffer exists
18+
globalThis.Buffer = globalThis.Buffer || Buffer;
19+
}
20+
21+
export const RegistryV2Errors = {
22+
300: { message: "UnexpectedError" },
23+
301: { message: "InvalidDomain" },
24+
302: { message: "InvalidSubDomain" },
25+
303: { message: "UnsupportedTLD" },
26+
304: { message: "DomainAlreadyExist" },
27+
305: { message: "PaymentFailed" },
28+
306: { message: "MintingTokenFailed" },
29+
307: { message: "RecordDoesntExist" },
30+
308: { message: "RecordIsExpired" },
31+
309: { message: "BurningTokenFailed" },
32+
310: { message: "RecordCantBeClaimedYet" },
33+
311: { message: "V1DomainRegistered" },
34+
312: { message: "InvalidV1Domain" },
35+
313: { message: "V1DomainMigrationExpired" },
36+
};
37+
38+
export interface Domain {
39+
address: string;
40+
domain: Buffer;
41+
exp_date: u64;
42+
node: Buffer;
43+
snapshot: u64;
44+
tld: Buffer;
45+
token_id: u32;
46+
}
47+
48+
export type RecordKey = { tag: "Domain"; values: readonly [Buffer] } | {
49+
tag: "SubDomain";
50+
values: readonly [Buffer];
51+
};
52+
53+
export interface SubDomain {
54+
address: string;
55+
domain: Buffer;
56+
node: Buffer;
57+
parent: Buffer;
58+
root: Buffer;
59+
snapshot: u64;
60+
}
61+
62+
export type RegistryStorageKeys =
63+
| { tag: "Index"; values: void }
64+
| { tag: "Admin"; values: void }
65+
| { tag: "Oracle"; values: void }
66+
| { tag: "PayingAsset"; values: void }
67+
| { tag: "TLDs"; values: void }
68+
| { tag: "NFD"; values: void }
69+
| { tag: "Domain"; values: readonly [Buffer] }
70+
| { tag: "SubDomain"; values: readonly [Buffer] }
71+
| { tag: "Treasury"; values: void }
72+
| { tag: "V1Registry"; values: void }
73+
| { tag: "V1MaxSnapshot"; values: void }
74+
| { tag: "V1Deadline"; values: void };
75+
76+
export interface RegistryV2Client {
77+
/**
78+
* Construct and simulate a claim transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
79+
*/
80+
claim: (
81+
{ caller, node, address, periods }: { caller: string; node: Buffer; address: string; periods: u64 },
82+
options?: MethodOptions,
83+
) => Promise<AssembledTransaction<Result<Domain>>>;
84+
85+
/**
86+
* Construct and simulate a evict transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
87+
*/
88+
evict: ({ node }: { node: Buffer }, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>;
89+
90+
/**
91+
* Construct and simulate a renew transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
92+
*/
93+
renew: (
94+
{ caller, node, periods }: { caller: string; node: Buffer; periods: u64 },
95+
options?: MethodOptions,
96+
) => Promise<AssembledTransaction<Result<Domain>>>;
97+
98+
/**
99+
* Construct and simulate a record transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
100+
*/
101+
record: (
102+
{ record_key }: { record_key: RecordKey },
103+
options?: MethodOptions,
104+
) => Promise<AssembledTransaction<Result<readonly [Domain, Option<SubDomain>]>>>;
105+
106+
/**
107+
* Construct and simulate a migrate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
108+
*/
109+
migrate: (
110+
{ new_domain, tld }: { new_domain: Buffer; tld: Buffer },
111+
options?: MethodOptions,
112+
) => Promise<AssembledTransaction<Result<Domain>>>;
113+
114+
/**
115+
* Construct and simulate a upgrade transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
116+
*/
117+
upgrade: ({ hash }: { hash: Buffer }, options?: MethodOptions) => Promise<AssembledTransaction<null>>;
118+
119+
/**
120+
* Construct and simulate a register transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
121+
*/
122+
register: (
123+
{ new_domain, tld, owner, address, periods }: {
124+
new_domain: Buffer;
125+
tld: Buffer;
126+
owner: string;
127+
address: string;
128+
periods: u64;
129+
},
130+
options?: MethodOptions,
131+
) => Promise<AssembledTransaction<Result<Domain>>>;
132+
133+
/**
134+
* Construct and simulate a withdraw transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
135+
*/
136+
withdraw: (options?: MethodOptions) => Promise<AssembledTransaction<null>>;
137+
138+
/**
139+
* Construct and simulate a parse_domain transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
140+
*/
141+
parse_domain: (
142+
{ domain, tld }: { domain: Buffer; tld: Buffer },
143+
options?: MethodOptions,
144+
) => Promise<AssembledTransaction<Buffer>>;
145+
146+
/**
147+
* Construct and simulate a register_sub transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
148+
*/
149+
register_sub: (
150+
{ parent, new_subdomain, address }: { parent: RecordKey; new_subdomain: Buffer; address: string },
151+
options?: MethodOptions,
152+
) => Promise<AssembledTransaction<Result<SubDomain>>>;
153+
154+
/**
155+
* Construct and simulate a update_address transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
156+
*/
157+
update_address: (
158+
{ record_key, new_address }: { record_key: RecordKey; new_address: string },
159+
options?: MethodOptions,
160+
) => Promise<AssembledTransaction<Result<void>>>;
161+
162+
/**
163+
* Construct and simulate a update_treasury transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
164+
*/
165+
update_treasury: (
166+
{ new_treasury }: { new_treasury: string },
167+
options?: MethodOptions,
168+
) => Promise<AssembledTransaction<null>>;
169+
}
170+
171+
export class RegistryV2Client extends ContractClient {
172+
// deno-lint-ignore require-await
173+
static override async deploy<T = RegistryV2Client>(
174+
/** Constructor/Initialization Args for the contract's `__constructor` method */
175+
{ new_admin, new_oracle, new_paying_asset, new_tlds, new_nfd, v1_registry }: {
176+
new_admin: string;
177+
new_oracle: string;
178+
new_paying_asset: string;
179+
new_tlds: Array<Buffer>;
180+
new_nfd: string;
181+
v1_registry: string;
182+
},
183+
/** Options for initializing a Client as well as for calling a method, with extras specific to deploying. */
184+
options:
185+
& MethodOptions
186+
& Omit<ContractClientOptions, "contractId">
187+
& {
188+
/** The hash of the Wasm blob, which must already be installed on-chain. */
189+
wasmHash: Buffer | string;
190+
/** Salt used to generate the contract's ID. Passed through to {@link Operation.createCustomContract}. Default: random. */
191+
salt?: Buffer | Uint8Array;
192+
/** The format used to decode `wasmHash`, if it's provided as a string. */
193+
format?: "hex" | "base64";
194+
},
195+
): Promise<AssembledTransaction<T>> {
196+
return ContractClient.deploy({ new_admin, new_oracle, new_paying_asset, new_tlds, new_nfd, v1_registry }, options);
197+
}
198+
199+
constructor(public override readonly options: ContractClientOptions) {
200+
super(
201+
new ContractSpec([
202+
"AAAABAAAAAAAAAAAAAAAEFJlZ2lzdHJ5VjJFcnJvcnMAAAAOAAAAAAAAAA9VbmV4cGVjdGVkRXJyb3IAAAABLAAAAAAAAAANSW52YWxpZERvbWFpbgAAAAAAAS0AAAAAAAAAEEludmFsaWRTdWJEb21haW4AAAEuAAAAAAAAAA5VbnN1cHBvcnRlZFRMRAAAAAABLwAAAAAAAAASRG9tYWluQWxyZWFkeUV4aXN0AAAAAAEwAAAAAAAAAA1QYXltZW50RmFpbGVkAAAAAAABMQAAAAAAAAASTWludGluZ1Rva2VuRmFpbGVkAAAAAAEyAAAAAAAAABFSZWNvcmREb2VzbnRFeGlzdAAAAAAAATMAAAAAAAAAD1JlY29yZElzRXhwaXJlZAAAAAE0AAAAAAAAABJCdXJuaW5nVG9rZW5GYWlsZWQAAAAAATUAAAAAAAAAFlJlY29yZENhbnRCZUNsYWltZWRZZXQAAAAAATYAAAAAAAAAElYxRG9tYWluUmVnaXN0ZXJlZAAAAAABNwAAAAAAAAAPSW52YWxpZFYxRG9tYWluAAAAATgAAAAAAAAAGFYxRG9tYWluTWlncmF0aW9uRXhwaXJlZAAAATk=",
203+
"AAAABQAAAAAAAAAAAAAAC0NsYWltUmVjb3JkAAAAAAIAAAAFQ0xBSU0AAAAAAAAGRE9NQUlOAAAAAAAFAAAAAAAAAARub2RlAAAD7gAAACAAAAABAAAAAAAAAAhyZWdpc3RlcgAAABMAAAAAAAAAAAAAAAdhZGRyZXNzAAAAABMAAAAAAAAAAAAAAAhleHBfZGF0ZQAAAAYAAAAAAAAAAAAAAAthbW91bnRfcGFpZAAAAAAKAAAAAAAAAAI=",
204+
"AAAABQAAAAAAAAAAAAAAC1JlbmV3RG9tYWluAAAAAAIAAAAFUkVORVcAAAAAAAAGRE9NQUlOAAAAAAAEAAAAAAAAAARub2RlAAAD7gAAACAAAAABAAAAAAAAAAVwYXllcgAAAAAAABMAAAAAAAAAAAAAAAthbW91bnRfcGFpZAAAAAAKAAAAAAAAAAAAAAAIZXhwX2RhdGUAAAAGAAAAAAAAAAI=",
205+
"AAAABQAAAAAAAAAAAAAADFVwZGF0ZVJlY29yZAAAAAIAAAAGVVBEQVRFAAAAAAAGUkVDT1JEAAAAAAADAAAAAAAAAARub2RlAAAD7gAAACAAAAABAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAI=",
206+
"AAAABQAAAAAAAAAAAAAADURvbWFpbkV2aWN0ZWQAAAAAAAACAAAABUVWSUNUAAAAAAAABkRPTUFJTgAAAAAAAQAAAAAAAAAEbm9kZQAAA+4AAAAgAAAAAQAAAAI=",
207+
"AAAABQAAAAAAAAAAAAAADlJlZ2lzdHJ5RG9tYWluAAAAAAACAAAACFJFR0lTVFJZAAAABkRPTUFJTgAAAAAABgAAAAAAAAAIcmVnaXN0ZXIAAAATAAAAAAAAAAAAAAAGZG9tYWluAAAAAAAOAAAAAAAAAAAAAAADdGxkAAAAAA4AAAAAAAAAAAAAAAdhZGRyZXNzAAAAABMAAAAAAAAAAAAAAAhleHBfZGF0ZQAAAAYAAAAAAAAAAAAAAAthbW91bnRfcGFpZAAAAAAKAAAAAAAAAAI=",
208+
"AAAABQAAAAAAAAAAAAAAEVJlZ2lzdHJ5U3ViRG9tYWluAAAAAAAAAgAAAAhSRUdJU1RSWQAAAAlTVUJET01BSU4AAAAAAAADAAAAAAAAAAZkb21haW4AAAAAAA4AAAAAAAAAAAAAAAZwYXJlbnQAAAAAA+4AAAAgAAAAAAAAAAAAAAAHYWRkcmVzcwAAAAATAAAAAAAAAAI=",
209+
"AAAAAQAAAAAAAAAAAAAABkRvbWFpbgAAAAAABwAAAAAAAAAHYWRkcmVzcwAAAAATAAAAAAAAAAZkb21haW4AAAAAAA4AAAAAAAAACGV4cF9kYXRlAAAABgAAAAAAAAAEbm9kZQAAA+4AAAAgAAAAAAAAAAhzbmFwc2hvdAAAAAYAAAAAAAAAA3RsZAAAAAAOAAAAAAAAAAh0b2tlbl9pZAAAAAQ=",
210+
"AAAAAgAAAAAAAAAAAAAACVJlY29yZEtleQAAAAAAAAIAAAABAAAAAAAAAAZEb21haW4AAAAAAAEAAAPuAAAAIAAAAAEAAAAAAAAACVN1YkRvbWFpbgAAAAAAAAEAAAPuAAAAIA==",
211+
"AAAAAQAAAAAAAAAAAAAACVN1YkRvbWFpbgAAAAAAAAYAAAAAAAAAB2FkZHJlc3MAAAAAEwAAAAAAAAAGZG9tYWluAAAAAAAOAAAAAAAAAARub2RlAAAD7gAAACAAAAAAAAAABnBhcmVudAAAAAAD7gAAACAAAAAAAAAABHJvb3QAAAPuAAAAIAAAAAAAAAAIc25hcHNob3QAAAAG",
212+
"AAAAAgAAAAAAAAAAAAAAE1JlZ2lzdHJ5U3RvcmFnZUtleXMAAAAADAAAAAAAAAAAAAAABUluZGV4AAAAAAAAAAAAAAAAAAAFQWRtaW4AAAAAAAAAAAAAAAAAAAZPcmFjbGUAAAAAAAAAAAAAAAAAC1BheWluZ0Fzc2V0AAAAAAAAAAAAAAAABFRMRHMAAAAAAAAAAAAAAANORkQAAAAAAQAAAAAAAAAGRG9tYWluAAAAAAABAAAD7gAAACAAAAABAAAAAAAAAAlTdWJEb21haW4AAAAAAAABAAAD7gAAACAAAAAAAAAAAAAAAAhUcmVhc3VyeQAAAAAAAAAAAAAAClYxUmVnaXN0cnkAAAAAAAAAAAAAAAAADVYxTWF4U25hcHNob3QAAAAAAAAAAAAAAAAAAApWMURlYWRsaW5lAAA=",
213+
"AAAAAAAAAAAAAAAFY2xhaW0AAAAAAAAEAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAABG5vZGUAAAPuAAAAIAAAAAAAAAAHYWRkcmVzcwAAAAATAAAAAAAAAAdwZXJpb2RzAAAAAAYAAAABAAAD6QAAB9AAAAAGRG9tYWluAAAAAAfQAAAAEFJlZ2lzdHJ5VjJFcnJvcnM=",
214+
"AAAAAAAAAAAAAAAFZXZpY3QAAAAAAAABAAAAAAAAAARub2RlAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAH0AAAABBSZWdpc3RyeVYyRXJyb3Jz",
215+
"AAAAAAAAAAAAAAAFcmVuZXcAAAAAAAADAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAABG5vZGUAAAPuAAAAIAAAAAAAAAAHcGVyaW9kcwAAAAAGAAAAAQAAA+kAAAfQAAAABkRvbWFpbgAAAAAH0AAAABBSZWdpc3RyeVYyRXJyb3Jz",
216+
"AAAAAAAAAAAAAAAGcmVjb3JkAAAAAAABAAAAAAAAAApyZWNvcmRfa2V5AAAAAAfQAAAACVJlY29yZEtleQAAAAAAAAEAAAPpAAAD7QAAAAIAAAfQAAAABkRvbWFpbgAAAAAD6AAAB9AAAAAJU3ViRG9tYWluAAAAAAAH0AAAABBSZWdpc3RyeVYyRXJyb3Jz",
217+
"AAAAAAAAAAAAAAAHbWlncmF0ZQAAAAACAAAAAAAAAApuZXdfZG9tYWluAAAAAAAOAAAAAAAAAAN0bGQAAAAADgAAAAEAAAPpAAAH0AAAAAZEb21haW4AAAAAB9AAAAAQUmVnaXN0cnlWMkVycm9ycw==",
218+
"AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAARoYXNoAAAD7gAAACAAAAAA",
219+
"AAAAAAAAAAAAAAAIcmVnaXN0ZXIAAAAFAAAAAAAAAApuZXdfZG9tYWluAAAAAAAOAAAAAAAAAAN0bGQAAAAADgAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAAdhZGRyZXNzAAAAABMAAAAAAAAAB3BlcmlvZHMAAAAABgAAAAEAAAPpAAAH0AAAAAZEb21haW4AAAAAB9AAAAAQUmVnaXN0cnlWMkVycm9ycw==",
220+
"AAAAAAAAAAAAAAAId2l0aGRyYXcAAAAAAAAAAA==",
221+
"AAAAAAAAAAAAAAAMcGFyc2VfZG9tYWluAAAAAgAAAAAAAAAGZG9tYWluAAAAAAAOAAAAAAAAAAN0bGQAAAAADgAAAAEAAAPuAAAAIA==",
222+
"AAAAAAAAAAAAAAAMcmVnaXN0ZXJfc3ViAAAAAwAAAAAAAAAGcGFyZW50AAAAAAfQAAAACVJlY29yZEtleQAAAAAAAAAAAAANbmV3X3N1YmRvbWFpbgAAAAAAAA4AAAAAAAAAB2FkZHJlc3MAAAAAEwAAAAEAAAPpAAAH0AAAAAlTdWJEb21haW4AAAAAAAfQAAAAEFJlZ2lzdHJ5VjJFcnJvcnM=",
223+
"AAAAAAAAAAAAAAANX19jb25zdHJ1Y3RvcgAAAAAAAAYAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAAAAAACm5ld19vcmFjbGUAAAAAABMAAAAAAAAAEG5ld19wYXlpbmdfYXNzZXQAAAATAAAAAAAAAAhuZXdfdGxkcwAAA+oAAAAOAAAAAAAAAAduZXdfbmZkAAAAABMAAAAAAAAAC3YxX3JlZ2lzdHJ5AAAAABMAAAAA",
224+
"AAAAAAAAAAAAAAAOdXBkYXRlX2FkZHJlc3MAAAAAAAIAAAAAAAAACnJlY29yZF9rZXkAAAAAB9AAAAAJUmVjb3JkS2V5AAAAAAAAAAAAAAtuZXdfYWRkcmVzcwAAAAATAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAQUmVnaXN0cnlWMkVycm9ycw==",
225+
"AAAAAAAAAAAAAAAPdXBkYXRlX3RyZWFzdXJ5AAAAAAEAAAAAAAAADG5ld190cmVhc3VyeQAAABMAAAAA",
226+
]),
227+
options,
228+
);
229+
}
230+
231+
public readonly fromJSON: object = {
232+
claim: this.txFromJSON<Result<Domain>>,
233+
evict: this.txFromJSON<Result<void>>,
234+
renew: this.txFromJSON<Result<Domain>>,
235+
record: this.txFromJSON<Result<readonly [Domain, Option<SubDomain>]>>,
236+
migrate: this.txFromJSON<Result<Domain>>,
237+
upgrade: this.txFromJSON<null>,
238+
register: this.txFromJSON<Result<Domain>>,
239+
withdraw: this.txFromJSON<null>,
240+
parse_domain: this.txFromJSON<Buffer>,
241+
register_sub: this.txFromJSON<Result<SubDomain>>,
242+
update_address: this.txFromJSON<Result<void>>,
243+
update_treasury: this.txFromJSON<null>,
244+
};
245+
}

0 commit comments

Comments
 (0)