@tari-project/tarijs 0.9.0 → 0.10.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tari-docs",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "docusaurus": "docusaurus",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/tarijs",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "keywords": [],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/tarijs-builders",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/indexer-provider",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/metamask-signer",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/tari-permissions",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/tari-provider",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/tari-signer",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/tari-universe-signer",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/tarijs-all",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -2,7 +2,14 @@ import { MetaMaskInpageProvider } from "@metamask/providers";
2
2
  import { TariSigner } from "@tari-project/tari-signer";
3
3
  import { TariProvider } from "@tari-project/tari-provider";
4
4
  import { MetamaskTariSigner } from "@tari-project/metamask-signer";
5
- import { WalletDaemonTariSigner, WalletDaemonParameters, TariPermissions } from "@tari-project/wallet-daemon-signer";
5
+ import {
6
+ WalletDaemonTariSigner,
7
+ WalletDaemonParameters,
8
+ WalletDaemonFetchParameters,
9
+ WalletDaemonBaseParameters,
10
+ TariPermissions,
11
+ WalletDaemonTariProvider,
12
+ } from "@tari-project/wallet-daemon-signer";
6
13
  import { TariUniverseSigner, TariUniverseSignerParameters } from "@tari-project/tari-universe-signer";
7
14
  import { WalletConnectTariSigner } from "@tari-project/wallet-connect-signer";
8
15
  import {
@@ -52,7 +59,10 @@ export {
52
59
  TemplateDefinition,
53
60
  MetamaskTariSigner,
54
61
  WalletDaemonTariSigner,
62
+ WalletDaemonTariProvider,
55
63
  WalletDaemonParameters,
64
+ WalletDaemonFetchParameters,
65
+ WalletDaemonBaseParameters,
56
66
  TariUniverseSigner,
57
67
  TariUniverseSignerParameters,
58
68
  TariPermissions,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/tarijs-types",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -7,3 +7,24 @@ export enum TransactionStatus {
7
7
  InvalidTransaction = "InvalidTransaction",
8
8
  OnlyFeeAccepted = "OnlyFeeAccepted",
9
9
  }
10
+
11
+ export function transactionStatusFromStr(s: string): TransactionStatus {
12
+ switch (s) {
13
+ case "New":
14
+ return TransactionStatus.New;
15
+ case "DryRun":
16
+ return TransactionStatus.DryRun;
17
+ case "Pending":
18
+ return TransactionStatus.Pending;
19
+ case "Accepted":
20
+ return TransactionStatus.Accepted;
21
+ case "Rejected":
22
+ return TransactionStatus.Rejected;
23
+ case "InvalidTransaction":
24
+ return TransactionStatus.InvalidTransaction;
25
+ case "OnlyFeeAccepted":
26
+ return TransactionStatus.OnlyFeeAccepted;
27
+ default:
28
+ throw new Error(`Unknown transaction status: ${s}`);
29
+ }
30
+ }
@@ -11,7 +11,7 @@ export {
11
11
  SubmitTransactionResponse,
12
12
  } from "./TransactionResult";
13
13
  export { TransactionSignature } from "./TransactionSignature";
14
- export { TransactionStatus } from "./TransactionStatus";
14
+ export { TransactionStatus, transactionStatusFromStr } from "./TransactionStatus";
15
15
  export { WorkspaceArg } from "./Workspace";
16
16
  export { ListAccountNftFromBalancesRequest } from "./ListAccountNftFromBalancesRequest";
17
17
  export { Network } from "./network";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/wallet-daemon-signer",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -15,6 +15,7 @@
15
15
  "dependencies": {
16
16
  "@tari-project/tari-permissions": "workspace:^",
17
17
  "@tari-project/tari-signer": "workspace:^",
18
+ "@tari-project/tari-provider": "workspace:^",
18
19
  "@tari-project/tarijs-types": "workspace:^",
19
20
  "@tari-project/typescript-bindings": "catalog:",
20
21
  "@tari-project/wallet_jrpc_client": "catalog:"
@@ -3,3 +3,4 @@ export { TariConnection } from "./webrtc";
3
3
 
4
4
  export * from "@tari-project/tari-permissions";
5
5
  export * from "./signer";
6
+ export * from "./provider";
@@ -0,0 +1,131 @@
1
+ import { TariProvider } from "@tari-project/tari-provider";
2
+ import {
3
+ GetSubstateRequest,
4
+ GetTransactionResultResponse,
5
+ ListSubstatesRequest,
6
+ ListSubstatesResponse,
7
+ Substate, SubstateMetadata,
8
+ transactionStatusFromStr,
9
+ } from "@tari-project/tarijs-types";
10
+ import {
11
+ GetTemplateDefinitionResponse,
12
+ ListTemplatesResponse,
13
+ SubstateId,
14
+ substateIdToString,
15
+ } from "@tari-project/typescript-bindings";
16
+ import { WalletDaemonClient } from "@tari-project/wallet_jrpc_client";
17
+ import { TariConnection } from "./webrtc";
18
+ import { WebRtcRpcTransport } from "./webrtc_transport";
19
+ import { WalletDaemonBaseParameters, WalletDaemonFetchParameters, WalletDaemonParameters } from "./signer";
20
+ import { TariPermissions } from "@tari-project/tari-permissions";
21
+
22
+ export class WalletDaemonTariProvider implements TariProvider {
23
+ providerName: string = "WalletDaemonTariProvider";
24
+ params: WalletDaemonParameters;
25
+ client: WalletDaemonClient;
26
+
27
+ private constructor(params: WalletDaemonParameters, connection: WalletDaemonClient) {
28
+ this.params = params;
29
+ this.client = connection;
30
+ }
31
+
32
+ static async buildWebRtc(params: WalletDaemonParameters): Promise<WalletDaemonTariProvider> {
33
+ const allPermissions = WalletDaemonTariProvider.buildPermissions(params);
34
+ let connection = new TariConnection(params.signalingServerUrl, params.webRtcConfig);
35
+ const client = WalletDaemonClient.new(WebRtcRpcTransport.new(connection));
36
+ await connection.init(allPermissions, (conn) => {
37
+ params.onConnection?.();
38
+ if (conn.token) {
39
+ client.setToken(conn.token);
40
+ }
41
+ });
42
+ return new WalletDaemonTariProvider(params, client);
43
+ }
44
+
45
+
46
+ static async buildFetch(params: WalletDaemonFetchParameters) {
47
+ const allPermissions = WalletDaemonTariProvider.buildPermissions(params);
48
+ const client = WalletDaemonClient.usingFetchTransport(params.serverUrl);
49
+
50
+ const plainPermissions = allPermissions.toJSON().flatMap((p) => (typeof p === "string" ? [p] : []));
51
+ const authResponse = await client.authRequest(plainPermissions);
52
+ await client.authAccept(authResponse, "WalletDaemon");
53
+
54
+ params.onConnection?.();
55
+ return new WalletDaemonTariProvider(params, client);
56
+ }
57
+
58
+ private static buildPermissions(params: WalletDaemonBaseParameters): TariPermissions {
59
+ const allPermissions = new TariPermissions();
60
+ allPermissions.addPermissions(params.permissions);
61
+ if (params.optionalPermissions) {
62
+ allPermissions.addPermissions(params.optionalPermissions);
63
+ }
64
+ return allPermissions;
65
+ }
66
+
67
+ private getWebRtcTransport(): WebRtcRpcTransport | undefined {
68
+ const transport = this.client.getTransport();
69
+ return transport instanceof WebRtcRpcTransport ? transport : undefined;
70
+ }
71
+
72
+ isConnected(): boolean {
73
+ return this.getWebRtcTransport()?.isConnected() || true;
74
+ }
75
+
76
+ async getSubstate(req: GetSubstateRequest): Promise<Substate> {
77
+ // TODO: Substate address cannot be converted to SubstateId directly - Perhaps we need to change the provider interface
78
+ const {
79
+ record,
80
+ value,
81
+ } = await this.client.substatesGet({ substate_id: req.substate_address as unknown as SubstateId });
82
+
83
+ return {
84
+ value,
85
+ address: {
86
+ substate_id: substateIdToString(record.substate_id),
87
+ version: record.version,
88
+ },
89
+ };
90
+ }
91
+
92
+ async getTemplateDefinition(template_address: string): Promise<GetTemplateDefinitionResponse> {
93
+ const { template_definition: definition } = await this.client.templatesGet({ template_address });
94
+
95
+ return {
96
+ // TODO: return module name from the wallet?
97
+ name: "<Unknown>",
98
+ definition,
99
+ };
100
+ }
101
+
102
+ async getTransactionResult(transactionId: string): Promise<GetTransactionResultResponse> {
103
+ const resp = await this.client.getTransactionResult({ transaction_id: transactionId });
104
+
105
+ return {
106
+ transaction_id: resp.transaction_id,
107
+ status: transactionStatusFromStr(resp.status),
108
+ result: resp.result || null,
109
+ };
110
+ }
111
+
112
+ async listSubstates(req: ListSubstatesRequest): Promise<ListSubstatesResponse> {
113
+ const resp = await this.client.substatesList(req);
114
+
115
+ return {
116
+ substates: resp.substates.map((s) => ({
117
+ substate_id: substateIdToString(s.substate_id),
118
+ module_name: s.module_name,
119
+ version: s.version,
120
+ template_address: s.template_address,
121
+ } as SubstateMetadata)),
122
+ };
123
+ }
124
+
125
+ listTemplates(_limit?: number): Promise<ListTemplatesResponse> {
126
+ // const resp = await this.client.templatesListAuthored({});
127
+ throw new Error("Listing all templates is not supported by WalletDaemonTariProvider.");
128
+ }
129
+
130
+
131
+ }
@@ -17,7 +17,6 @@ import {
17
17
  } from "@tari-project/tarijs-types";
18
18
  import {
19
19
  ConfidentialViewVaultBalanceRequest,
20
- Instruction,
21
20
  KeyBranch,
22
21
  ListAccountNftRequest,
23
22
  ListAccountNftResponse,
@@ -14,6 +14,9 @@
14
14
  {
15
15
  "path": "../tari_permissions"
16
16
  },
17
+ {
18
+ "path": "../tari_provider"
19
+ },
17
20
  {
18
21
  "path": "../tari_signer"
19
22
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tari-project/wallet-connect-signer",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -8,8 +8,8 @@ catalog:
8
8
  vitest: ^3.0.4
9
9
  vite: ^6.1.0
10
10
  "@types/node": ^22.13.1
11
- "@tari-project/typescript-bindings": ">=1.9.1"
12
- "@tari-project/wallet_jrpc_client": ^1.6.0
11
+ "@tari-project/typescript-bindings": ">=1.10.2"
12
+ "@tari-project/wallet_jrpc_client": ^1.6.2
13
13
  "@metamask/providers": ^18.2.0
14
14
  "@walletconnect/universal-provider": ^2.13.3
15
15
  "@walletconnect/modal": ^2.6.2