@tari-project/tarijs 0.4.2 → 0.5.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.
Files changed (91) hide show
  1. package/Dockerfile +52 -0
  2. package/README.md +37 -2
  3. package/TODO.md +0 -8
  4. package/docusaurus/tari-docs/docs/index.md +10 -5
  5. package/docusaurus/tari-docs/docs/installation.md +1 -1
  6. package/docusaurus/tari-docs/docs/providers/_category_.json +2 -2
  7. package/docusaurus/tari-docs/docs/providers/indexer-provider.md +32 -0
  8. package/docusaurus/tari-docs/docs/signers/_category_.json +8 -0
  9. package/docusaurus/tari-docs/docs/{providers → signers}/tari-universe.md +5 -5
  10. package/docusaurus/tari-docs/docs/{providers → signers}/wallet-connect.md +6 -7
  11. package/docusaurus/tari-docs/docs/{providers → signers}/wallet-daemon.md +7 -7
  12. package/docusaurus/tari-docs/docs/wallet/_category_.json +1 -1
  13. package/docusaurus/tari-docs/docs/wallet/list-substates.md +2 -3
  14. package/docusaurus/tari-docs/package.json +1 -1
  15. package/docusaurus/tari-docs/tsconfig.json +3 -1
  16. package/package.json +1 -1
  17. package/packages/builders/package.json +4 -5
  18. package/packages/builders/src/helpers/submitTransaction.ts +12 -12
  19. package/packages/builders/src/transaction/TransactionBuilder.ts +6 -7
  20. package/packages/builders/src/transaction/TransactionRequest.ts +10 -20
  21. package/packages/builders/tsconfig.json +2 -4
  22. package/packages/indexer_provider/package.json +31 -0
  23. package/packages/indexer_provider/src/index.ts +2 -0
  24. package/packages/indexer_provider/src/provider.ts +105 -0
  25. package/packages/indexer_provider/src/transports/IndexerProviderClient.ts +144 -0
  26. package/packages/indexer_provider/src/transports/fetch.ts +46 -0
  27. package/packages/indexer_provider/src/transports/index.ts +3 -0
  28. package/packages/indexer_provider/src/transports/rpc.ts +19 -0
  29. package/packages/indexer_provider/tsconfig.json +22 -0
  30. package/packages/metamask_signer/moon.yml +55 -0
  31. package/packages/{metamask_provider → metamask_signer}/package.json +3 -3
  32. package/packages/{metamask_provider → metamask_signer}/src/index.ts +42 -30
  33. package/packages/metamask_signer/tsconfig.json +19 -0
  34. package/packages/tari_permissions/package.json +2 -3
  35. package/packages/tari_permissions/src/helpers.ts +33 -0
  36. package/packages/tari_permissions/src/index.ts +2 -1
  37. package/packages/tari_permissions/src/tari_permissions.ts +59 -42
  38. package/packages/tari_provider/package.json +3 -2
  39. package/packages/tari_provider/src/TariProvider.ts +10 -25
  40. package/packages/tari_provider/src/index.ts +1 -3
  41. package/packages/tari_provider/tsconfig.json +9 -2
  42. package/packages/tari_signer/moon.yml +55 -0
  43. package/packages/tari_signer/package.json +28 -0
  44. package/packages/tari_signer/src/TariSigner.ts +30 -0
  45. package/packages/tari_signer/src/index.ts +1 -0
  46. package/packages/{metamask_provider → tari_signer}/tsconfig.json +0 -3
  47. package/packages/tari_universe/package.json +3 -3
  48. package/packages/tari_universe/src/index.ts +1 -1
  49. package/packages/tari_universe/src/{provider.ts → signer.ts} +45 -36
  50. package/packages/tari_universe/src/types.ts +10 -10
  51. package/packages/tari_universe/src/utils.ts +8 -8
  52. package/packages/tari_universe/tsconfig.json +2 -4
  53. package/packages/tarijs/integration-tests/wallet_daemon/json_rpc_provider.spec.ts +44 -44
  54. package/packages/tarijs/package.json +8 -6
  55. package/packages/tarijs/src/index.ts +39 -28
  56. package/packages/tarijs/tsconfig.json +7 -1
  57. package/packages/tarijs_types/package.json +1 -1
  58. package/packages/tarijs_types/src/ConfidentialOutput.ts +1 -1
  59. package/packages/tarijs_types/src/ConfidentialWithdrawProof.ts +1 -1
  60. package/packages/tarijs_types/src/GetTransactionResultResponse.ts +8 -0
  61. package/packages/tarijs_types/src/Instruction.ts +8 -5
  62. package/packages/tarijs_types/src/ListAccountNftFromBalancesRequest.ts +5 -0
  63. package/packages/tarijs_types/src/Transaction.ts +1 -1
  64. package/packages/tarijs_types/src/TransactionArg.ts +2 -0
  65. package/packages/tarijs_types/src/TransactionResult.ts +1 -10
  66. package/packages/tarijs_types/src/TransactionStatus.ts +9 -0
  67. package/packages/tarijs_types/src/UnsignedTransaction.ts +1 -2
  68. package/packages/tarijs_types/src/helpers/index.ts +69 -0
  69. package/packages/tarijs_types/src/index.ts +40 -11
  70. package/packages/{tari_provider/src/types.ts → tarijs_types/src/signer.ts} +17 -28
  71. package/packages/wallet_daemon/package.json +4 -3
  72. package/packages/wallet_daemon/src/index.ts +1 -1
  73. package/packages/wallet_daemon/src/{provider.ts → signer.ts} +59 -60
  74. package/packages/wallet_daemon/tsconfig.json +4 -1
  75. package/packages/walletconnect/package.json +4 -3
  76. package/packages/walletconnect/src/index.ts +56 -57
  77. package/packages/walletconnect/tsconfig.json +4 -1
  78. package/pnpm-workspace.yaml +3 -3
  79. package/tsconfig.json +8 -2
  80. package/packages/tarijs_types/src/Arg.ts +0 -3
  81. package/packages/tarijs_types/src/ComponentAddress.ts +0 -3
  82. package/packages/tarijs_types/src/ConfidentialOutputStatement.ts +0 -10
  83. package/packages/tarijs_types/src/ConfidentialStatement.ts +0 -9
  84. package/packages/tarijs_types/src/ElgamalVerifiableBalance.ts +0 -4
  85. package/packages/tarijs_types/src/Epoch.ts +0 -3
  86. package/packages/tarijs_types/src/ResourceAddress.ts +0 -3
  87. package/packages/tarijs_types/src/TemplateAddress.ts +0 -3
  88. package/packages/tarijs_types/src/TransactionId.ts +0 -4
  89. package/packages/tarijs_types/src/ViewableBalanceProof.ts +0 -12
  90. /package/packages/{metamask_provider → indexer_provider}/moon.yml +0 -0
  91. /package/packages/{metamask_provider → metamask_signer}/src/utils.ts +0 -0
@@ -1,25 +1,54 @@
1
- export { TemplateAddress } from "./TemplateAddress";
1
+ export { ComponentAddress, ResourceAddress, PublishedTemplateAddress, Epoch } from "@tari-project/typescript-bindings";
2
2
  export { Amount } from "./Amount";
3
- export { Arg } from "./Arg";
4
- export { ComponentAddress } from "./ComponentAddress";
3
+ export { TransactionArg } from "./TransactionArg";
5
4
  export { ConfidentialClaim } from "./ConfidentialClaim";
6
5
  export { ConfidentialOutput } from "./ConfidentialOutput";
7
- export { ConfidentialOutputStatement } from "./ConfidentialOutputStatement";
8
- export { ConfidentialStatement } from "./ConfidentialStatement";
9
6
  export { ConfidentialWithdrawProof } from "./ConfidentialWithdrawProof";
10
- export { Epoch } from "./Epoch";
11
7
  export {
12
- FinalizeResult, FinalizeResultStatus, TxResultAccept, TxResultAcceptFeeRejectRest, TxResultReject,
8
+ FinalizeResult,
9
+ FinalizeResultStatus,
10
+ TxResultAccept,
11
+ TxResultAcceptFeeRejectRest,
12
+ TxResultReject,
13
13
  } from "./FinalizeResult";
14
- export { ResourceAddress } from "./ResourceAddress";
14
+ export { GetTransactionResultResponse } from "./GetTransactionResultResponse";
15
15
  export { Instruction } from "./Instruction";
16
16
  export { Transaction } from "./Transaction";
17
17
  export { SubstateDiff, DownSubstates, UpSubstates } from "./SubstateDiff";
18
18
  export { SubstateRequirement } from "./SubstateRequirement";
19
- export { TransactionId } from "./TransactionId";
20
- export { TransactionResult, TransactionStatus, SubmitTxResult, SubmitTransactionResponse } from "./TransactionResult";
19
+ export { TransactionResult, SubmitTxResult, SubmitTransactionResponse } from "./TransactionResult";
21
20
  export { TransactionSignature } from "./TransactionSignature";
21
+ export { TransactionStatus } from "./TransactionStatus";
22
22
  export { UnsignedTransaction } from "./UnsignedTransaction";
23
23
  export { VersionedSubstateId } from "./VersionedSubstateId";
24
- export { ViewableBalanceProof } from "./ViewableBalanceProof";
25
24
  export { WorkspaceArg } from "./Workspace";
25
+ export { ListAccountNftFromBalancesRequest } from "./ListAccountNftFromBalancesRequest";
26
+ export {
27
+ AccountData,
28
+ ListSubstatesRequest,
29
+ ListSubstatesResponse,
30
+ SubmitTransactionRequest,
31
+ Substate,
32
+ SubstateMetadata,
33
+ ReqSubstate,
34
+ TemplateDefinition,
35
+ VaultBalances,
36
+ VaultData,
37
+ GetSubstateRequest,
38
+ } from "./signer";
39
+
40
+ export {
41
+ convertHexStringToU256Array,
42
+ convertStringToTransactionStatus,
43
+ convertU256ToHexString,
44
+ createNftAddressFromResource,
45
+ createNftAddressFromToken,
46
+ getRejectReasonFromTransactionResult,
47
+ getSubstateDiffFromTransactionResult,
48
+ jrpcPermissionToString,
49
+ rejectReasonToString,
50
+ shortenString,
51
+ shortenSubstateId,
52
+ stringToSubstateId,
53
+ substateIdToString,
54
+ } from "./helpers";
@@ -1,4 +1,4 @@
1
- import { FinalizeResult } from "@tari-project/typescript-bindings";
1
+ import { SubstateType, TemplateDef } from "@tari-project/typescript-bindings";
2
2
 
3
3
  export type SubstateMetadata = {
4
4
  substate_id: string;
@@ -7,7 +7,7 @@ export type SubstateMetadata = {
7
7
  template_address: string | null;
8
8
  };
9
9
 
10
- export type SubstateRequirement = {
10
+ export type ReqSubstate = {
11
11
  substate_id: string;
12
12
  version?: number | null;
13
13
  };
@@ -19,7 +19,7 @@ export type SubmitTransactionRequest = {
19
19
  fee_instructions: object[];
20
20
  inputs: object[];
21
21
  input_refs: object[];
22
- required_substates: SubstateRequirement[];
22
+ required_substates: ReqSubstate[];
23
23
  is_dry_run: boolean;
24
24
  min_epoch: number | null;
25
25
  max_epoch: number | null;
@@ -27,27 +27,7 @@ export type SubmitTransactionRequest = {
27
27
  detect_inputs_use_unversioned: boolean;
28
28
  };
29
29
 
30
- export type SubmitTransactionResponse = {
31
- transaction_id: string;
32
- };
33
-
34
- export type TransactionResult = {
35
- transaction_id: string;
36
- status: TransactionStatus;
37
- result: FinalizeResult | null;
38
- };
39
-
40
- export enum TransactionStatus {
41
- New,
42
- DryRun,
43
- Pending,
44
- Accepted,
45
- Rejected,
46
- InvalidTransaction,
47
- OnlyFeeAccepted,
48
- }
49
-
50
- export interface Account {
30
+ export interface AccountData {
51
31
  account_id: number;
52
32
  address: string;
53
33
  public_key: string;
@@ -66,10 +46,7 @@ export interface VaultBalances {
66
46
  balances: Map<string, number | null>;
67
47
  }
68
48
 
69
- export interface TemplateDefinition {
70
- // TODO: Define this type
71
- [key: string]: any;
72
- }
49
+ export type TemplateDefinition = TemplateDef;
73
50
 
74
51
  export interface Substate {
75
52
  value: any;
@@ -82,3 +59,15 @@ export interface Substate {
82
59
  export type ListSubstatesResponse = {
83
60
  substates: Array<SubstateMetadata>;
84
61
  };
62
+
63
+ export type ListSubstatesRequest = {
64
+ filter_by_template: string | null;
65
+ filter_by_type: SubstateType | null;
66
+ limit: number | null;
67
+ offset: number | null;
68
+ };
69
+
70
+ export type GetSubstateRequest = {
71
+ substate_address: string;
72
+ version: number | null;
73
+ };
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "@tari-project/wallet-daemon-provider",
3
- "version": "0.4.0",
2
+ "name": "@tari-project/wallet-daemon-signer",
3
+ "version": "0.5.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -14,7 +14,8 @@
14
14
  "license": "ISC",
15
15
  "dependencies": {
16
16
  "@tari-project/tari-permissions": "workspace:^",
17
- "@tari-project/tari-provider": "workspace:^",
17
+ "@tari-project/tari-signer": "workspace:^",
18
+ "@tari-project/tarijs-types": "workspace:^",
18
19
  "@tari-project/wallet_jrpc_client": "catalog:"
19
20
  },
20
21
  "devDependencies": {
@@ -2,4 +2,4 @@ export { TariConnection } from "./webrtc";
2
2
 
3
3
 
4
4
  export * from "@tari-project/tari-permissions";
5
- export * from "./provider";
5
+ export * from "./signer";
@@ -1,47 +1,52 @@
1
1
  import { TariPermissions } from "@tari-project/tari-permissions";
2
2
  import { TariConnection } from "./webrtc";
3
- import { TariProvider } from "@tari-project/tari-provider";
4
- import {
5
- SubmitTransactionRequest,
6
- TransactionResult,
7
- TransactionStatus,
8
- SubmitTransactionResponse,
9
- VaultBalances, TemplateDefinition, Substate,
10
- ListSubstatesResponse,
11
- } from "@tari-project/tari-provider";
12
- import { Account } from "@tari-project/tari-provider";
3
+ import { TariSigner } from "@tari-project/tari-signer";
13
4
  import {
14
5
  WalletDaemonClient,
15
6
  substateIdToString,
16
7
  Instruction,
17
- SubstateType,
18
8
  SubstatesListRequest,
19
9
  KeyBranch,
20
10
  SubstateId,
11
+ ListAccountNftRequest,
12
+ ListAccountNftResponse,
13
+ ConfidentialViewVaultBalanceRequest,
21
14
  } from "@tari-project/wallet_jrpc_client";
22
15
  import { WebRtcRpcTransport } from "./webrtc_transport";
16
+ import {
17
+ AccountData,
18
+ convertStringToTransactionStatus,
19
+ GetTransactionResultResponse,
20
+ SubmitTransactionRequest,
21
+ SubmitTransactionResponse,
22
+ VaultBalances,
23
+ TemplateDefinition,
24
+ Substate,
25
+ ListSubstatesResponse,
26
+ ListSubstatesRequest,
27
+ } from "@tari-project/tarijs-types";
23
28
 
24
29
  export const WalletDaemonNotConnected = "WALLET_DAEMON_NOT_CONNECTED";
25
30
  export const Unsupported = "UNSUPPORTED";
26
31
 
27
32
  export interface WalletDaemonBaseParameters {
28
- permissions: TariPermissions,
29
- optionalPermissions?: TariPermissions,
30
- onConnection?: () => void
33
+ permissions: TariPermissions;
34
+ optionalPermissions?: TariPermissions;
35
+ onConnection?: () => void;
31
36
  }
32
37
 
33
38
  export interface WalletDaemonParameters extends WalletDaemonBaseParameters {
34
- signalingServerUrl?: string,
35
- webRtcConfig?: RTCConfiguration,
36
- name?: string,
37
- };
39
+ signalingServerUrl?: string;
40
+ webRtcConfig?: RTCConfiguration;
41
+ name?: string;
42
+ }
38
43
 
39
44
  export interface WalletDaemonFetchParameters extends WalletDaemonBaseParameters {
40
- serverUrl: string,
45
+ serverUrl: string;
41
46
  }
42
47
 
43
- export class WalletDaemonTariProvider implements TariProvider {
44
- public providerName = "WalletDaemon";
48
+ export class WalletDaemonTariSigner implements TariSigner {
49
+ public signerName = "WalletDaemon";
45
50
  params: WalletDaemonParameters;
46
51
  client: WalletDaemonClient;
47
52
 
@@ -50,8 +55,8 @@ export class WalletDaemonTariProvider implements TariProvider {
50
55
  this.client = connection;
51
56
  }
52
57
 
53
- static async build(params: WalletDaemonParameters): Promise<WalletDaemonTariProvider> {
54
- const allPermissions = WalletDaemonTariProvider.buildPermissions(params);
58
+ static async build(params: WalletDaemonParameters): Promise<WalletDaemonTariSigner> {
59
+ const allPermissions = WalletDaemonTariSigner.buildPermissions(params);
55
60
  let connection = new TariConnection(params.signalingServerUrl, params.webRtcConfig);
56
61
  const client = WalletDaemonClient.new(WebRtcRpcTransport.new(connection));
57
62
  await connection.init(allPermissions, (conn) => {
@@ -60,19 +65,19 @@ export class WalletDaemonTariProvider implements TariProvider {
60
65
  client.setToken(conn.token);
61
66
  }
62
67
  });
63
- return new WalletDaemonTariProvider(params, client);
68
+ return new WalletDaemonTariSigner(params, client);
64
69
  }
65
70
 
66
- static async buildFetchProvider(params: WalletDaemonFetchParameters) {
67
- const allPermissions = WalletDaemonTariProvider.buildPermissions(params);
71
+ static async buildFetchSigner(params: WalletDaemonFetchParameters) {
72
+ const allPermissions = WalletDaemonTariSigner.buildPermissions(params);
68
73
  const client = WalletDaemonClient.usingFetchTransport(params.serverUrl);
69
74
 
70
- const plainPermissions = allPermissions.toJSON().flatMap((p) => typeof (p) === "string" ? [p] : []);
75
+ const plainPermissions = allPermissions.toJSON().flatMap((p) => (typeof p === "string" ? [p] : []));
71
76
  const authResponse = await client.authRequest(plainPermissions);
72
77
  await client.authAccept(authResponse, "WalletDaemon");
73
78
 
74
79
  params.onConnection?.();
75
- return new WalletDaemonTariProvider(params, client);
80
+ return new WalletDaemonTariSigner(params, client);
76
81
  }
77
82
 
78
83
  private static buildPermissions(params: WalletDaemonBaseParameters): TariPermissions {
@@ -98,7 +103,7 @@ export class WalletDaemonTariProvider implements TariProvider {
98
103
  return undefined;
99
104
  }
100
105
 
101
- const name = this.params.name && encodeURIComponent(this.params.name) || "";
106
+ const name = (this.params.name && encodeURIComponent(this.params.name)) || "";
102
107
  const token = this.token;
103
108
  const permissions = JSON.stringify(this.params.permissions);
104
109
  const optionalPermissions = JSON.stringify(this.params.optionalPermissions);
@@ -110,7 +115,7 @@ export class WalletDaemonTariProvider implements TariProvider {
110
115
  return this.getWebRtcTransport()?.isConnected() || true;
111
116
  }
112
117
 
113
- public async createFreeTestCoins(): Promise<Account> {
118
+ public async createFreeTestCoins(): Promise<AccountData> {
114
119
  const res = await this.client.createFreeTestCoins({
115
120
  account: { Name: "template_web" },
116
121
  amount: 1000000,
@@ -125,8 +130,8 @@ export class WalletDaemonTariProvider implements TariProvider {
125
130
  };
126
131
  }
127
132
 
128
- public async getAccount(): Promise<Account> {
129
- const { account, public_key } = await this.client.accountsGetDefault({}) as any;
133
+ public async getAccount(): Promise<AccountData> {
134
+ const { account, public_key } = (await this.client.accountsGetDefault({})) as any;
130
135
  const address = typeof account.address === "object" ? account.address.Component : account.address;
131
136
  const { balances } = await this.client.accountsGetBalances({
132
137
  account: { ComponentAddress: address },
@@ -142,7 +147,8 @@ export class WalletDaemonTariProvider implements TariProvider {
142
147
  type: b.resource_type,
143
148
  resource_address: b.resource_address,
144
149
  balance: b.balance + b.confidential_balance,
145
- vault_id: (typeof (b.vault_address) === "object" && "Vault" in b.vault_address) ? b.vault_address.Vault : b.vault_address,
150
+ vault_id:
151
+ typeof b.vault_address === "object" && "Vault" in b.vault_address ? b.vault_address.Vault : b.vault_address,
146
152
  token_symbol: b.token_symbol,
147
153
  })),
148
154
  };
@@ -192,7 +198,7 @@ export class WalletDaemonTariProvider implements TariProvider {
192
198
  return { transaction_id: res.transaction_id };
193
199
  }
194
200
 
195
- public async getTransactionResult(transactionId: string): Promise<TransactionResult> {
201
+ public async getTransactionResult(transactionId: string): Promise<GetTransactionResultResponse> {
196
202
  const res = await this.client.getTransactionResult({ transaction_id: transactionId });
197
203
 
198
204
  return {
@@ -212,17 +218,27 @@ export class WalletDaemonTariProvider implements TariProvider {
212
218
  return resp.template_definition as TemplateDefinition;
213
219
  }
214
220
 
215
- public async getConfidentialVaultBalances(viewKeyId: number, vaultId: string, min: number | null = null, max: number | null = null): Promise<VaultBalances> {
221
+ public async getConfidentialVaultBalances({
222
+ vault_id,
223
+ view_key_id,
224
+ maximum_expected_value = null,
225
+ minimum_expected_value = null,
226
+ }: ConfidentialViewVaultBalanceRequest): Promise<VaultBalances> {
216
227
  const res = await this.client.viewVaultBalance({
217
- view_key_id: viewKeyId,
218
- vault_id: vaultId,
219
- minimum_expected_value: min,
220
- maximum_expected_value: max,
228
+ view_key_id,
229
+ vault_id,
230
+ minimum_expected_value,
231
+ maximum_expected_value,
221
232
  });
222
233
  return { balances: res.balances as unknown as Map<string, number | null> };
223
234
  }
224
235
 
225
- public async listSubstates(filter_by_template: string | null, filter_by_type: SubstateType | null, limit: number | null, offset: number | null): Promise<ListSubstatesResponse> {
236
+ public async listSubstates({
237
+ filter_by_template,
238
+ filter_by_type,
239
+ limit,
240
+ offset,
241
+ }: ListSubstatesRequest): Promise<ListSubstatesResponse> {
226
242
  const resp = await this.client.substatesList({
227
243
  filter_by_template,
228
244
  filter_by_type,
@@ -239,25 +255,8 @@ export class WalletDaemonTariProvider implements TariProvider {
239
255
 
240
256
  return { substates };
241
257
  }
242
- }
243
258
 
244
- function convertStringToTransactionStatus(status: string): TransactionStatus {
245
- switch (status) {
246
- case "New":
247
- return TransactionStatus.New;
248
- case "DryRun":
249
- return TransactionStatus.DryRun;
250
- case "Pending":
251
- return TransactionStatus.Pending;
252
- case "Accepted":
253
- return TransactionStatus.Accepted;
254
- case "Rejected":
255
- return TransactionStatus.Rejected;
256
- case "InvalidTransaction":
257
- return TransactionStatus.InvalidTransaction;
258
- case "OnlyFeeAccepted":
259
- return TransactionStatus.OnlyFeeAccepted;
260
- default:
261
- throw new Error(`Unknown status: ${status}`);
259
+ public async getNftsList(req: ListAccountNftRequest): Promise<ListAccountNftResponse> {
260
+ return await this.client.nftsList(req);
262
261
  }
263
- }
262
+ }
@@ -15,7 +15,10 @@
15
15
  "path": "../tari_permissions"
16
16
  },
17
17
  {
18
- "path": "../tari_provider"
18
+ "path": "../tari_signer"
19
+ },
20
+ {
21
+ "path": "../tarijs_types"
19
22
  }
20
23
  ]
21
24
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "@tari-project/wallet-connect-provider",
3
- "version": "0.4.0",
2
+ "name": "@tari-project/wallet-connect-signer",
3
+ "version": "0.5.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -13,8 +13,9 @@
13
13
  "author": "",
14
14
  "license": "ISC",
15
15
  "dependencies": {
16
- "@tari-project/tari-provider": "workspace:^",
16
+ "@tari-project/tari-signer": "workspace:^",
17
17
  "@tari-project/tarijs-builders": "workspace:^",
18
+ "@tari-project/tarijs-types": "workspace:^",
18
19
  "@tari-project/typescript-bindings": "catalog:",
19
20
  "@tari-project/wallet_jrpc_client": "catalog:",
20
21
  "@walletconnect/modal": "catalog:",
@@ -1,24 +1,27 @@
1
- import {
2
- TariProvider, SubmitTransactionRequest,
3
- TransactionResult,
4
- SubmitTransactionResponse,
5
- VaultBalances, TemplateDefinition, Substate,
6
- Account,
7
- ListSubstatesResponse,
8
- } from "@tari-project/tari-provider";
9
- import {
10
- TransactionStatus,
11
- } from "@tari-project/tarijs-builders";
1
+ import { TariSigner } from "@tari-project/tari-signer";
12
2
  import UniversalProvider from "@walletconnect/universal-provider";
13
3
  import { WalletConnectModal } from "@walletconnect/modal";
14
4
  import {
5
+ ConfidentialViewVaultBalanceRequest,
15
6
  Instruction,
16
7
  KeyBranch,
17
- stringToSubstateId,
8
+ ListAccountNftRequest,
9
+ ListAccountNftResponse,
18
10
  substateIdToString,
19
- SubstateType,
20
11
  TransactionSubmitRequest,
21
12
  } from "@tari-project/wallet_jrpc_client";
13
+ import {
14
+ convertStringToTransactionStatus,
15
+ GetTransactionResultResponse,
16
+ SubmitTransactionRequest,
17
+ SubmitTransactionResponse,
18
+ VaultBalances,
19
+ TemplateDefinition,
20
+ Substate,
21
+ AccountData,
22
+ ListSubstatesResponse,
23
+ ListSubstatesRequest,
24
+ } from "@tari-project/tarijs-types";
22
25
 
23
26
  const walletConnectParams = {
24
27
  requiredNamespaces: {
@@ -34,17 +37,16 @@ const walletConnectParams = {
34
37
  "tari_viewConfidentialVaultBalance",
35
38
  "tari_createFreeTestCoins",
36
39
  "tari_listSubstates",
40
+ "tari_getNftsList",
37
41
  ],
38
- chains: [
39
- "tari:devnet",
40
- ],
41
- events: ["chainChanged\", \"accountsChanged"],
42
+ chains: ["tari:devnet"],
43
+ events: ['chainChanged", "accountsChanged'],
42
44
  },
43
45
  },
44
46
  };
45
47
 
46
- export class WalletConnectTariProvider implements TariProvider {
47
- public providerName = "WalletConnect";
48
+ export class WalletConnectTariSigner implements TariSigner {
49
+ public signerName = "WalletConnect";
48
50
  projectId: string;
49
51
  wcProvider: UniversalProvider | null;
50
52
  wcSession: any | null;
@@ -56,8 +58,7 @@ export class WalletConnectTariProvider implements TariProvider {
56
58
  }
57
59
 
58
60
  async connect(): Promise<void> {
59
- if (this.wcProvider && this.wcSession)
60
- return;
61
+ if (this.wcProvider && this.wcSession) return;
61
62
 
62
63
  // initialize WalletConnect
63
64
  const projectId = this.projectId;
@@ -109,19 +110,17 @@ export class WalletConnectTariProvider implements TariProvider {
109
110
  return requestResult;
110
111
  }
111
112
 
112
-
113
113
  isConnected(): boolean {
114
114
  // TODO: check status in the session
115
115
  return this.wcSession !== null;
116
116
  }
117
117
 
118
- async getAccount(): Promise<Account> {
118
+ async getAccount(): Promise<AccountData> {
119
119
  const { account, public_key } = await this.sendRequest("tari_getDefaultAccount", {});
120
- const { balances } = await this.sendRequest(
121
- "tari_getAccountBalances",
122
- {
123
- account: { ComponentAddress: account.address }, refresh: false,
124
- });
120
+ const { balances } = await this.sendRequest("tari_getAccountBalances", {
121
+ account: { ComponentAddress: account.address },
122
+ refresh: false,
123
+ });
125
124
 
126
125
  return {
127
126
  account_id: account.key_index,
@@ -132,7 +131,8 @@ export class WalletConnectTariProvider implements TariProvider {
132
131
  type: b.resource_type,
133
132
  resource_address: b.resource_address,
134
133
  balance: b.balance + b.confidential_balance,
135
- vault_id: (typeof (b.vault_address) === "object" && "Vault" in b.vault_address) ? b.vault_address.Vault : b.vault_address,
134
+ vault_id:
135
+ typeof b.vault_address === "object" && "Vault" in b.vault_address ? b.vault_address.Vault : b.vault_address,
136
136
  token_symbol: b.token_symbol,
137
137
  })),
138
138
  };
@@ -151,7 +151,12 @@ export class WalletConnectTariProvider implements TariProvider {
151
151
  };
152
152
  }
153
153
 
154
- public async listSubstates(filter_by_template: string | null, filter_by_type: SubstateType | null, limit: number | null, offset: number | null): Promise<ListSubstatesResponse> {
154
+ public async listSubstates({
155
+ filter_by_template,
156
+ filter_by_type,
157
+ limit,
158
+ offset,
159
+ }: ListSubstatesRequest): Promise<ListSubstatesResponse> {
155
160
  const method = "tari_listSubstates";
156
161
  const params = {
157
162
  filter_by_template,
@@ -170,7 +175,7 @@ export class WalletConnectTariProvider implements TariProvider {
170
175
  return { substates };
171
176
  }
172
177
 
173
- public async createFreeTestCoins(): Promise<Account> {
178
+ public async createFreeTestCoins(): Promise<AccountData> {
174
179
  const method = "tari_createFreeTestCoins";
175
180
  const params = {
176
181
  account: { Name: "template_web" },
@@ -217,7 +222,7 @@ export class WalletConnectTariProvider implements TariProvider {
217
222
  return { transaction_id: res.transaction_id };
218
223
  }
219
224
 
220
- async getTransactionResult(transactionId: string): Promise<TransactionResult> {
225
+ async getTransactionResult(transactionId: string): Promise<GetTransactionResultResponse> {
221
226
  const res = await this.sendRequest("tari_getTransactionResult", { transaction_id: transactionId });
222
227
 
223
228
  return {
@@ -237,38 +242,32 @@ export class WalletConnectTariProvider implements TariProvider {
237
242
  return res.public_key;
238
243
  }
239
244
 
240
- async getConfidentialVaultBalances(viewKeyId: number, vaultId: string, min: number | null, max: number | null): Promise<VaultBalances> {
245
+ async getConfidentialVaultBalances({
246
+ vault_id,
247
+ view_key_id,
248
+ maximum_expected_value = null,
249
+ minimum_expected_value = null,
250
+ }: ConfidentialViewVaultBalanceRequest): Promise<VaultBalances> {
241
251
  const method = "tari_viewConfidentialVaultBalance";
242
252
  const params = {
243
- view_key_id: viewKeyId,
244
- vault_id: vaultId,
245
- minimum_expected_value: min,
246
- maximum_expected_value: max,
253
+ view_key_id,
254
+ vault_id,
255
+ minimum_expected_value,
256
+ maximum_expected_value,
247
257
  };
248
258
 
249
259
  const res = await this.sendRequest(method, params);
250
260
  return { balances: res.balances as unknown as Map<string, number | null> };
251
261
  }
252
262
 
253
- }
254
-
255
- function convertStringToTransactionStatus(status: string): TransactionStatus {
256
- switch (status) {
257
- case "New":
258
- return TransactionStatus.New;
259
- case "DryRun":
260
- return TransactionStatus.DryRun;
261
- case "Pending":
262
- return TransactionStatus.Pending;
263
- case "Accepted":
264
- return TransactionStatus.Accepted;
265
- case "Rejected":
266
- return TransactionStatus.Rejected;
267
- case "InvalidTransaction":
268
- return TransactionStatus.InvalidTransaction;
269
- case "OnlyFeeAccepted":
270
- return TransactionStatus.OnlyFeeAccepted;
271
- default:
272
- throw new Error(`Unknown status: ${status}`);
263
+ public async getNftsList(req: ListAccountNftRequest): Promise<ListAccountNftResponse> {
264
+ const method = "tari_getNftsList";
265
+ const params = {
266
+ account: req.account,
267
+ limit: req.limit,
268
+ offset: req.offset,
269
+ };
270
+ const res = await this.sendRequest(method, params);
271
+ return res as ListAccountNftResponse;
273
272
  }
274
273
  }
@@ -15,7 +15,10 @@
15
15
  "path": "../builders"
16
16
  },
17
17
  {
18
- "path": "../tari_provider"
18
+ "path": "../tari_signer"
19
+ },
20
+ {
21
+ "path": "../tarijs_types"
19
22
  }
20
23
  ]
21
24
  }
@@ -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.4.0
12
- "@tari-project/wallet_jrpc_client": ^1.4.0
11
+ "@tari-project/typescript-bindings": ^1.5.1
12
+ "@tari-project/wallet_jrpc_client": ^1.5.1
13
13
  "@metamask/providers": ^18.2.0
14
14
  "@walletconnect/universal-provider": ^2.13.3
15
- "@walletconnect/modal": ^2.6.2
15
+ "@walletconnect/modal": ^2.6.2
package/tsconfig.json CHANGED
@@ -15,7 +15,10 @@
15
15
  "path": "packages/builders"
16
16
  },
17
17
  {
18
- "path": "packages/metamask_provider"
18
+ "path": "packages/indexer_provider"
19
+ },
20
+ {
21
+ "path": "packages/metamask_signer"
19
22
  },
20
23
  {
21
24
  "path": "packages/tari_permissions"
@@ -23,6 +26,9 @@
23
26
  {
24
27
  "path": "packages/tari_provider"
25
28
  },
29
+ {
30
+ "path": "packages/tari_signer"
31
+ },
26
32
  {
27
33
  "path": "packages/tari_universe"
28
34
  },
@@ -33,7 +39,7 @@
33
39
  "path": "packages/tarijs_types"
34
40
  },
35
41
  {
36
- "path": "packages/types"
42
+ "path": "packages/tarijs_types"
37
43
  },
38
44
  {
39
45
  "path": "packages/wallet_daemon"