@thalalabs/surf 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.
Files changed (122) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/build/cjs/core/Client.js +80 -0
  4. package/build/cjs/core/Client.js.map +1 -0
  5. package/build/cjs/core/WalletClient.js +52 -0
  6. package/build/cjs/core/WalletClient.js.map +1 -0
  7. package/build/cjs/core/createEntryPayload.js +91 -0
  8. package/build/cjs/core/createEntryPayload.js.map +1 -0
  9. package/build/cjs/core/createViewPayload.js +78 -0
  10. package/build/cjs/core/createViewPayload.js.map +1 -0
  11. package/build/cjs/core/index.js +13 -0
  12. package/build/cjs/core/index.js.map +1 -0
  13. package/build/cjs/ensureTypes.js +40 -0
  14. package/build/cjs/ensureTypes.js.map +1 -0
  15. package/build/cjs/hooks/index.js +8 -0
  16. package/build/cjs/hooks/index.js.map +1 -0
  17. package/build/cjs/hooks/useSubmitTransaction.js +88 -0
  18. package/build/cjs/hooks/useSubmitTransaction.js.map +1 -0
  19. package/build/cjs/hooks/useWalletClient.js +14 -0
  20. package/build/cjs/hooks/useWalletClient.js.map +1 -0
  21. package/build/cjs/index.js +8 -0
  22. package/build/cjs/index.js.map +1 -0
  23. package/build/cjs/package.json +1 -0
  24. package/build/cjs/types/abi.js +3 -0
  25. package/build/cjs/types/abi.js.map +1 -0
  26. package/build/cjs/types/abiClient.js +3 -0
  27. package/build/cjs/types/abiClient.js.map +1 -0
  28. package/build/cjs/types/client.js +3 -0
  29. package/build/cjs/types/client.js.map +1 -0
  30. package/build/cjs/types/common.js +3 -0
  31. package/build/cjs/types/common.js.map +1 -0
  32. package/build/cjs/types/index.js +3 -0
  33. package/build/cjs/types/index.js.map +1 -0
  34. package/build/cjs/types/walletClient.js +3 -0
  35. package/build/cjs/types/walletClient.js.map +1 -0
  36. package/build/esm/core/Client.js +75 -0
  37. package/build/esm/core/Client.js.map +1 -0
  38. package/build/esm/core/WalletClient.js +48 -0
  39. package/build/esm/core/WalletClient.js.map +1 -0
  40. package/build/esm/core/createEntryPayload.js +87 -0
  41. package/build/esm/core/createEntryPayload.js.map +1 -0
  42. package/build/esm/core/createViewPayload.js +74 -0
  43. package/build/esm/core/createViewPayload.js.map +1 -0
  44. package/build/esm/core/index.js +5 -0
  45. package/build/esm/core/index.js.map +1 -0
  46. package/build/esm/ensureTypes.js +34 -0
  47. package/build/esm/ensureTypes.js.map +1 -0
  48. package/build/esm/hooks/index.js +3 -0
  49. package/build/esm/hooks/index.js.map +1 -0
  50. package/build/esm/hooks/useSubmitTransaction.js +84 -0
  51. package/build/esm/hooks/useSubmitTransaction.js.map +1 -0
  52. package/build/esm/hooks/useWalletClient.js +10 -0
  53. package/build/esm/hooks/useWalletClient.js.map +1 -0
  54. package/build/esm/index.js +2 -0
  55. package/build/esm/index.js.map +1 -0
  56. package/build/esm/package.json +1 -0
  57. package/build/esm/types/abi.js +2 -0
  58. package/build/esm/types/abi.js.map +1 -0
  59. package/build/esm/types/abiClient.js +2 -0
  60. package/build/esm/types/abiClient.js.map +1 -0
  61. package/build/esm/types/client.js +2 -0
  62. package/build/esm/types/client.js.map +1 -0
  63. package/build/esm/types/common.js +2 -0
  64. package/build/esm/types/common.js.map +1 -0
  65. package/build/esm/types/index.js +2 -0
  66. package/build/esm/types/index.js.map +1 -0
  67. package/build/esm/types/walletClient.js +2 -0
  68. package/build/esm/types/walletClient.js.map +1 -0
  69. package/build/types/core/Client.d.ts +20 -0
  70. package/build/types/core/Client.d.ts.map +1 -0
  71. package/build/types/core/WalletClient.d.ts +17 -0
  72. package/build/types/core/WalletClient.d.ts.map +1 -0
  73. package/build/types/core/createEntryPayload.d.ts +4 -0
  74. package/build/types/core/createEntryPayload.d.ts.map +1 -0
  75. package/build/types/core/createViewPayload.d.ts +4 -0
  76. package/build/types/core/createViewPayload.d.ts.map +1 -0
  77. package/build/types/core/index.d.ts +5 -0
  78. package/build/types/core/index.d.ts.map +1 -0
  79. package/build/types/ensureTypes.d.ts +4 -0
  80. package/build/types/ensureTypes.d.ts.map +1 -0
  81. package/build/types/hooks/index.d.ts +3 -0
  82. package/build/types/hooks/index.d.ts.map +1 -0
  83. package/build/types/hooks/useSubmitTransaction.d.ts +19 -0
  84. package/build/types/hooks/useSubmitTransaction.d.ts.map +1 -0
  85. package/build/types/hooks/useWalletClient.d.ts +8 -0
  86. package/build/types/hooks/useWalletClient.d.ts.map +1 -0
  87. package/build/types/index.d.ts +3 -0
  88. package/build/types/index.d.ts.map +1 -0
  89. package/build/types/types/abi.d.ts +31 -0
  90. package/build/types/types/abi.d.ts.map +1 -0
  91. package/build/types/types/abiClient.d.ts +18 -0
  92. package/build/types/types/abiClient.d.ts.map +1 -0
  93. package/build/types/types/client.d.ts +24 -0
  94. package/build/types/types/client.d.ts.map +1 -0
  95. package/build/types/types/common.d.ts +60 -0
  96. package/build/types/types/common.d.ts.map +1 -0
  97. package/build/types/types/index.d.ts +5 -0
  98. package/build/types/types/index.d.ts.map +1 -0
  99. package/build/types/types/walletClient.d.ts +9 -0
  100. package/build/types/types/walletClient.d.ts.map +1 -0
  101. package/package.json +78 -0
  102. package/src/core/Client.ts +120 -0
  103. package/src/core/WalletClient.ts +64 -0
  104. package/src/core/__tests__/createEntryPayload.test.ts +262 -0
  105. package/src/core/__tests__/createViewPayload.test.ts +297 -0
  106. package/src/core/__tests__/submitTransaction.test.ts +112 -0
  107. package/src/core/__tests__/useABI.test.ts +139 -0
  108. package/src/core/__tests__/view.test.ts +145 -0
  109. package/src/core/createEntryPayload.ts +128 -0
  110. package/src/core/createViewPayload.ts +100 -0
  111. package/src/core/index.ts +4 -0
  112. package/src/ensureTypes.ts +42 -0
  113. package/src/hooks/index.ts +2 -0
  114. package/src/hooks/useSubmitTransaction.ts +117 -0
  115. package/src/hooks/useWalletClient.ts +10 -0
  116. package/src/index.ts +10 -0
  117. package/src/types/abi.ts +35 -0
  118. package/src/types/abiClient.ts +19 -0
  119. package/src/types/client.ts +32 -0
  120. package/src/types/common.ts +157 -0
  121. package/src/types/index.ts +9 -0
  122. package/src/types/walletClient.ts +10 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Thala Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,196 @@
1
+ <br/>
2
+
3
+ <h1 align="center">
4
+ Surf
5
+ </h1>
6
+
7
+ <p align="center">
8
+ <strong>Surf</strong> provides TypeScript Interfaces & React Hooks for seamlessly interacting with Aptos Smart Contracts with full type-safety.
9
+ <p>
10
+
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/viem">
13
+ <picture>
14
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/viem?colorA=21262d&colorB=21262d&style=flat">
15
+ <img src="https://img.shields.io/npm/v/viem?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Version">
16
+ </picture>
17
+ </a>
18
+ <a href="https://app.codecov.io/gh/wagmi-dev/viem">
19
+ <picture>
20
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/codecov/c/github/wagmi-dev/viem?colorA=21262d&colorB=21262d&style=flat">
21
+ <img src="https://img.shields.io/codecov/c/github/wagmi-dev/viem?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Code coverage">
22
+ </picture>
23
+ </a>
24
+ <a href="https://github.com/ThalaLabs/surf/blob/main/LICENSE">
25
+ <picture>
26
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/l/viem?colorA=21262d&colorB=21262d&style=flat">
27
+ <img src="https://img.shields.io/npm/l/viem?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="MIT License">
28
+ </picture>
29
+ </a>
30
+ <a href="https://bestofjs.org/projects/viem">
31
+ <picture>
32
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/endpoint?colorA=21262d&colorB=21262d&style=flat&url=https://bestofjs-serverless.now.sh/api/project-badge?fullName=wagmi-dev%2Fviem%26since=daily">
33
+ <img src="https://img.shields.io/endpoint?colorA=f6f8fa&colorB=f6f8fa&style=flat&url=https://bestofjs-serverless.now.sh/api/project-badge?fullName=wagmi-dev%2Fviem%26since=daily" alt="Best of JS">
34
+ </picture>
35
+ </a>
36
+ </p>
37
+
38
+ <br>
39
+
40
+ ## Features
41
+
42
+ - **No code-generation**: Interact with smart contracts using fully typed APIs based on static type inference.
43
+ - **Get rid of encoding/decoding**: Surf takes care of the complexities within the APIs, so you don't have to.
44
+ - **Linting and Auto-Completion**: Enjoy a better development experience with type safety. No more guesswork for input and output.
45
+ - **Both TypeScript Interfaces & React Hooks**: Easy to use, whether working with wallets or private keys.
46
+ - **Low runtime cost & small bundle size**: Modular, tree-shakable, [100kb]().
47
+
48
+ ## Overview
49
+
50
+ ```TypeScript
51
+ const client = createClient({
52
+ nodeUrl: 'https://fullnode.testnet.aptoslabs.com/v1',
53
+ });
54
+
55
+ await client.useABI(COIN_ABI).entry.transfer({
56
+ arguments: ['0x1', 1],
57
+ type_arguments: ['0x1::aptos_coin::AptosCoin'],
58
+ account,
59
+ });
60
+
61
+ const [balance] = await client.useABI(COIN_ABI).view.balance({
62
+ arguments: ['0x1'],
63
+ type_arguments: ['0x1::aptos_coin::AptosCoin'],
64
+ });
65
+ ```
66
+
67
+ When you input `client.useABI(COIN_ABI).view.` into your IDE, the auto-completion show as below. You could also see the input and output types for the function, all of which are statically inferred from the ABI.
68
+ ![surf-useABI.png](./images/surf-useABI.png)
69
+
70
+ ## Quick Start
71
+
72
+ ### Installation
73
+
74
+ ```shell
75
+ npm i @thalalabs/surf aptos
76
+ ```
77
+
78
+ If you want to use the React Hooks, install the `@aptos-labs/wallet-adapter-react` additionally. Those React Hooks will be moved to a separate package in near future.
79
+
80
+ ### Start
81
+
82
+ Create the client:
83
+
84
+ ```TypeScript
85
+ import { createClient } from '@thalalabs/surf';
86
+
87
+ const client = createClient({
88
+ nodeUrl: 'https://fullnode.testnet.aptoslabs.com/v1',
89
+ });
90
+ ```
91
+
92
+ Surf infers types from ABI to give you the end-to-end type-safety from your Move contract to your frontend. So firstly, you need to prepare the ABI json object of your contract in TypeScript:
93
+
94
+ ```TypeScript
95
+ const abi = {…} as const;
96
+ ```
97
+
98
+ If type inference isn't working, it's likely you forgot to add the const assertion for the object. And make sure that you set `strict` to `true` in your `tsconfig.json` compiler options.
99
+
100
+ ### Call View functions
101
+
102
+ There are two ways to call a view function with the client:
103
+
104
+ ```typescript
105
+ // Option 1. Use the `useABI` interface
106
+ const [balance] = await client.useABI(COIN_ABI).view.balance({
107
+ arguments: ['0x1'],
108
+ type_arguments: ['0x1::aptos_coin::AptosCoin'],
109
+ });
110
+
111
+ // Option 2. Create payload and use the `view` interface
112
+ import { createViewPayload } from "@thalalabs/surf";
113
+ const viewPayload = createViewPayload(COIN_ABI, {
114
+ function: 'balance',
115
+ arguments: ['0x1'],
116
+ type_arguments: ['0x1::aptos_coin::AptosCoin'],
117
+ });
118
+ const [balance] = await client.view(viewPayload);
119
+ ```
120
+
121
+ Both of the interfaces can provide type safety.
122
+
123
+ Calling `useABI` returns an object without any ABI parsing, so that the runtime cost is low.
124
+
125
+ ### Submit Transaction
126
+
127
+ Similar to the `view` function, there are also two ways to submit transactions.
128
+
129
+ ```typescript
130
+ // prepare your AptosAccount
131
+ const account = /* your AptosAccount */;
132
+
133
+ // Option 1. Use the `useABI` interface
134
+ const { hash } = await client.useABI(COIN_ABI).entry.transfer({
135
+ arguments: ['0x1', 1],
136
+ type_arguments: ['0x1::aptos_coin::AptosCoin'],
137
+ account,
138
+ });
139
+
140
+ // Option 2. Create payload and use the `submitTransaction` interface
141
+ import { createEntryPayload } from "@thalalabs/surf";
142
+ const entryPayload = createEntryPayload(COIN_ABI, {
143
+ function: 'transfer',
144
+ arguments: ['0x1', 1],
145
+ type_arguments: ['0x1::aptos_coin::AptosCoin'],
146
+ });
147
+
148
+ const { hash } = await client.submitTransaction(
149
+ entryPayload,
150
+ { account },
151
+ );
152
+ ```
153
+
154
+ You can also simulate a transaction:
155
+
156
+ ```typescript
157
+ // prepare your AptosAccount
158
+ const account = /* your AptosAccount */;
159
+
160
+ // Option 1. Use the `useABI` interface
161
+ const { hash } = await client.useABI(COIN_ABI).entry.transfer({
162
+ arguments: ['0x1', 1],
163
+ type_arguments: ['0x1::aptos_coin::AptosCoin'],
164
+ account,
165
+ isSimulation: true,
166
+ });
167
+
168
+ // Option 2. Create payload and use the `simulateTransaction` interface
169
+ import { createEntryPayload } from "@thalalabs/surf";
170
+ const entryPayload = createEntryPayload(COIN_ABI, {
171
+ function: 'transfer',
172
+ arguments: ['0x1', 1],
173
+ type_arguments: ['0x1::aptos_coin::AptosCoin'],
174
+ });
175
+
176
+ const { hash } = await client.simulateTransaction(
177
+ entryPayload,
178
+ { account }
179
+ );
180
+ ```
181
+
182
+ ### Hooks
183
+
184
+ Surf currently offers two React Hooks: `useWalletClient` and `useSubmitTransaction`. Both require the `@aptos-labs/wallet-adapter-react`. Check out our [example NextJS package](https://github.com/ThalaLabs/surf/blob/main/example/app/page.tsx) for more information.
185
+
186
+ ## Motivation
187
+
188
+ WIP
189
+
190
+ ## Contributing
191
+
192
+ WIP
193
+
194
+ ## License
195
+
196
+ Released under [MIT](/LICENSE) by [@ThalaLabs](https://github.com/ThalaLabs).
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Client = exports.createClient = void 0;
4
+ const aptos_1 = require("aptos");
5
+ const createViewPayload_1 = require("./createViewPayload");
6
+ const createEntryPayload_1 = require("./createEntryPayload");
7
+ function createClient(options) {
8
+ return new Client(new aptos_1.AptosClient(options.nodeUrl));
9
+ }
10
+ exports.createClient = createClient;
11
+ class Client {
12
+ client;
13
+ constructor(client) {
14
+ this.client = client;
15
+ }
16
+ async view(payload, options) {
17
+ const result = await this.client.view(payload.viewRequest, options?.ledger_version);
18
+ return result.map((value, i) => payload.decoders[i] ?
19
+ payload.decoders[i](value) :
20
+ value);
21
+ }
22
+ async submitTransaction(payload, options) {
23
+ const rawTxn = await this.generateRawTxn(payload, options);
24
+ const bcsTxn = aptos_1.AptosClient.generateBCSTransaction(options.account, rawTxn);
25
+ const transactionRes = await this.client.submitSignedBCSTransaction(bcsTxn);
26
+ await this.client.waitForTransaction(transactionRes.hash, {
27
+ timeoutSecs: 120,
28
+ checkSuccess: true,
29
+ });
30
+ return transactionRes;
31
+ }
32
+ async simulateTransaction(payload, options) {
33
+ const rawTxn = await this.generateRawTxn(payload, options);
34
+ const transactionRes = (await this.client.simulateTransaction(options.account, rawTxn))[0];
35
+ if (!transactionRes) {
36
+ throw new Error("Failed to simulate transaction");
37
+ }
38
+ return transactionRes;
39
+ }
40
+ useABI(abi) {
41
+ return {
42
+ view: new Proxy({}, {
43
+ get: (_, prop) => {
44
+ const functionName = prop.toString();
45
+ return (...args) => {
46
+ const payload = (0, createViewPayload_1.createViewPayload)(abi, {
47
+ function: functionName,
48
+ type_arguments: args[0].type_arguments,
49
+ arguments: args[0].arguments,
50
+ });
51
+ return this.view(payload);
52
+ };
53
+ }
54
+ }),
55
+ entry: new Proxy({}, {
56
+ get: (_, prop) => {
57
+ const functionName = prop.toString();
58
+ return (...args) => {
59
+ const payload = (0, createEntryPayload_1.createEntryPayload)(abi, {
60
+ function: functionName,
61
+ type_arguments: args[0].type_arguments,
62
+ arguments: args[0].arguments,
63
+ });
64
+ return args[0].isSimulation ?
65
+ this.simulateTransaction(payload, { account: args[0].account }) :
66
+ this.submitTransaction(payload, { account: args[0].account });
67
+ };
68
+ }
69
+ })
70
+ };
71
+ }
72
+ async generateRawTxn(payload, options) {
73
+ const { account } = options;
74
+ const entryFunctionPayload = new aptos_1.TxnBuilderTypes.TransactionPayloadEntryFunction(payload.entryRequest);
75
+ const rawTxn = await this.client.generateRawTransaction(account.address(), entryFunctionPayload);
76
+ return rawTxn;
77
+ }
78
+ }
79
+ exports.Client = Client;
80
+ //# sourceMappingURL=Client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/core/Client.ts"],"names":[],"mappings":";;;AAAA,iCAAqD;AACrD,2DAAwD;AACxD,6DAA0D;AAK1D,SAAgB,YAAY,CAAC,OAA4B;IACrD,OAAO,IAAI,MAAM,CACb,IAAI,mBAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CACnC,CAAC;AACN,CAAC;AAJD,oCAIC;AAED,MAAa,MAAM;IACP,MAAM,CAAc;IAE5B,YAAY,MAAmB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI,CACb,OAA6B,EAC7B,OAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,OAAO,CAAC,WAAW,EACnB,OAAO,EAAE,cAAc,CAC1B,CAAC;QAIF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7B,KAAK,CACD,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC1B,OAAqB,EACrB,OAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAG3D,MAAM,MAAM,GAAG,mBAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAG3E,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAC/D,MAAM,CACT,CAAC;QAIF,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,EAAE;YACtD,WAAW,EAAE,GAAG;YAChB,YAAY,EAAE,IAAI;SACrB,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC5B,OAAqB,EACrB,OAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE3D,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,cAAc,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACrD;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAoB,GAAM;QACnC,OAAO;YACH,IAAI,EAAE,IAAI,KAAK,CAAC,EAAsB,EAAE;gBACpC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;oBACb,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACrC,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE;wBACf,MAAM,OAAO,GAAG,IAAA,qCAAiB,EAAC,GAAG,EAAE;4BACnC,QAAQ,EAAE,YAAY;4BACtB,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc;4BACtC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;yBAC/B,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC,CAAC;gBACN,CAAC;aACJ,CAAC;YACF,KAAK,EAAE,IAAI,KAAK,CAAC,EAAuB,EAAE;gBACtC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;oBACb,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACrC,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE;wBACf,MAAM,OAAO,GAAG,IAAA,uCAAkB,EAAC,GAAG,EAAE;4BACpC,QAAQ,EAAE,YAAY;4BACtB,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc;4BACtC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;yBAC/B,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;4BACzB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;4BACjE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACtE,CAAC,CAAC;gBACN,CAAC;aACJ,CAAC;SACL,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAqB,EAAE,OAAqB;QACrE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC5B,MAAM,oBAAoB,GAAG,IAAI,uBAAe,CAAC,+BAA+B,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAGvG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,CACnD,OAAO,CAAC,OAAO,EAAE,EACjB,oBAAoB,CACvB,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA1GD,wBA0GC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WalletClient = void 0;
4
+ const aptos_1 = require("aptos");
5
+ const createEntryPayload_1 = require("./createEntryPayload");
6
+ class WalletClient {
7
+ wallet;
8
+ client;
9
+ constructor({ wallet, nodeUrl }) {
10
+ this.wallet = wallet;
11
+ this.client = new aptos_1.AptosClient(nodeUrl);
12
+ }
13
+ async submitTransaction(payload, _ = undefined) {
14
+ const request = payload.rawPayload;
15
+ const { hash } = await this.wallet.signAndSubmitTransaction({
16
+ type: "entry_function_payload",
17
+ ...request,
18
+ arguments: request.arguments.map((arg) => {
19
+ if (Array.isArray(arg)) {
20
+ return arg.map((item) => item.toString());
21
+ }
22
+ else if (typeof arg === "object") {
23
+ throw new Error(`a value of struct type: ${arg} is not supported`);
24
+ }
25
+ else {
26
+ return arg.toString();
27
+ }
28
+ }),
29
+ });
30
+ const result = (await this.client.waitForTransactionWithResult(hash, {
31
+ checkSuccess: true,
32
+ }));
33
+ return result;
34
+ }
35
+ useABI(abi) {
36
+ return new Proxy({}, {
37
+ get: (_, prop) => {
38
+ const functionName = prop.toString();
39
+ return (...args) => {
40
+ const payload = (0, createEntryPayload_1.createEntryPayload)(abi, {
41
+ function: functionName,
42
+ type_arguments: args[0].type_arguments,
43
+ arguments: args[0].arguments,
44
+ });
45
+ return this.submitTransaction(payload);
46
+ };
47
+ }
48
+ });
49
+ }
50
+ }
51
+ exports.WalletClient = WalletClient;
52
+ //# sourceMappingURL=WalletClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletClient.js","sourceRoot":"","sources":["../../../src/core/WalletClient.ts"],"names":[],"mappings":";;;AACA,iCAA2C;AAC3C,6DAA0D;AAK1D,MAAa,YAAY;IACb,MAAM,CAAS;IACf,MAAM,CAAc;IAE5B,YAAY,EAAE,MAAM,EAAE,OAAO,EAG5B;QACG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC1B,OAAqB,EACrB,IAA8B,SAAS;QAEvC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;QAGnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;YACxD,IAAI,EAAE,wBAAwB;YAC9B,GAAG,OAAO;YACV,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;gBAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAEpB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAClD;qBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;oBAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,mBAAmB,CAAC,CAAC;iBACtE;qBAAM;oBACH,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;iBACzB;YACL,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,EAAE;YACjE,YAAY,EAAE,IAAI;SACrB,CAAC,CAAsC,CAAC;QAEzC,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,MAAM,CAAoB,GAAM;QACnC,OAAO,IAAI,KAAK,CAAC,EAAwB,EAAE;YACvC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;gBACb,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE;oBACf,MAAM,OAAO,GAAG,IAAA,uCAAkB,EAAC,GAAG,EAAE;wBACpC,QAAQ,EAAE,YAAY;wBACtB,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc;wBACtC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;qBAC/B,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC,CAAC;YACN,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ;AAxDD,oCAwDC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEntryPayload = void 0;
4
+ const aptos_1 = require("aptos");
5
+ const ensureTypes_1 = require("../ensureTypes");
6
+ function createEntryPayload(abi, payload) {
7
+ const fnAbi = abi.exposed_functions.filter(f => f.name === payload.function)[0];
8
+ const typeArguments = payload.type_arguments;
9
+ const valArguments = payload.arguments;
10
+ const abiArgs = fnAbi.params[0] === '&signer'
11
+ ? fnAbi.params.slice(1)
12
+ : fnAbi.params;
13
+ if (fnAbi === undefined)
14
+ throw new Error(`Function ${payload.function} not found in ABI`);
15
+ if (abiArgs.length !== valArguments.length)
16
+ throw new Error(`Function ${payload.function} expects ${fnAbi.params.length} arguments, but ${payload.arguments.length} were provided`);
17
+ if (fnAbi.generic_type_params.length !== typeArguments.length)
18
+ throw new Error(`Function ${payload.function} expects ${fnAbi.generic_type_params.length} type arguments, but ${payload.type_arguments.length} were provided`);
19
+ return {
20
+ rawPayload: {
21
+ ...payload,
22
+ function: `${abi.address}::${abi.name}::${payload.function}`,
23
+ },
24
+ entryRequest: aptos_1.TxnBuilderTypes.EntryFunction.natural(`${abi.address}::${abi.name}`, payload.function, typeArguments
25
+ .map((arg) => {
26
+ const typeTagStruct = new aptos_1.TypeTagParser(arg).parseTypeTag();
27
+ return new aptos_1.TxnBuilderTypes.TypeTagStruct(new aptos_1.TxnBuilderTypes.StructTag(typeTagStruct.value.address, typeTagStruct.value.module_name, typeTagStruct.value.name, typeTagStruct.value.type_args));
28
+ }), valArguments.map((arg, i) => {
29
+ const type = abiArgs[i];
30
+ const serializer = new aptos_1.BCS.Serializer();
31
+ argToBCS(type, arg, serializer);
32
+ return serializer.getBytes();
33
+ }))
34
+ };
35
+ }
36
+ exports.createEntryPayload = createEntryPayload;
37
+ function argToBCS(type, arg, serializer) {
38
+ const regex = /vector<([^]+)>/;
39
+ const match = type.match(regex);
40
+ if (match) {
41
+ const innerType = match[1];
42
+ if (innerType === 'u8') {
43
+ if (arg instanceof Uint8Array) {
44
+ serializer.serializeBytes(arg);
45
+ return;
46
+ }
47
+ if (typeof arg === "string") {
48
+ serializer.serializeStr(arg);
49
+ return;
50
+ }
51
+ }
52
+ if (!Array.isArray(arg)) {
53
+ throw new Error("Invalid vector args.");
54
+ }
55
+ serializer.serializeU32AsUleb128(arg.length);
56
+ arg.forEach((arg) => argToBCS(innerType, arg, serializer));
57
+ return;
58
+ }
59
+ switch (type) {
60
+ case 'bool':
61
+ serializer.serializeBool((0, ensureTypes_1.ensureBoolean)(arg));
62
+ break;
63
+ case 'address':
64
+ aptos_1.TxnBuilderTypes.AccountAddress.fromHex(arg).serialize(serializer);
65
+ break;
66
+ case 'u8':
67
+ serializer.serializeU8((0, ensureTypes_1.ensureNumber)(arg));
68
+ break;
69
+ case 'u16':
70
+ serializer.serializeU16((0, ensureTypes_1.ensureNumber)(arg));
71
+ break;
72
+ case 'u32':
73
+ serializer.serializeU32((0, ensureTypes_1.ensureNumber)(arg));
74
+ break;
75
+ case 'u64':
76
+ serializer.serializeU64((0, ensureTypes_1.ensureBigInt)(arg));
77
+ break;
78
+ case 'u128':
79
+ serializer.serializeU128((0, ensureTypes_1.ensureBigInt)(arg));
80
+ break;
81
+ case 'u256':
82
+ serializer.serializeU256((0, ensureTypes_1.ensureBigInt)(arg));
83
+ break;
84
+ case '0x1::string::String':
85
+ serializer.serializeStr(arg);
86
+ break;
87
+ default:
88
+ throw new Error(`type "${type}" not supported`);
89
+ }
90
+ }
91
+ //# sourceMappingURL=createEntryPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEntryPayload.js","sourceRoot":"","sources":["../../../src/core/createEntryPayload.ts"],"names":[],"mappings":";;;AAAA,iCAA4D;AAC5D,gDAA2E;AAI3E,SAAgB,kBAAkB,CAI9B,GAAM,EACN,OAA0C;IAG1C,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAa,OAAO,CAAC,cAAuB,CAAC;IAChE,MAAM,YAAY,GAAU,OAAO,CAAC,SAAkB,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;QACzC,CAAC,CAAE,KAAK,CAAC,MAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,KAAK,CAAC,MAAkB,CAAC;IAG/B,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,QAAQ,mBAAmB,CAAC,CAAC;IAC1F,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,QAAQ,YAAY,KAAK,CAAC,MAAM,CAAC,MAAM,mBAAmB,OAAO,CAAC,SAAS,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACpL,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,QAAQ,YAAY,KAAK,CAAC,mBAAmB,CAAC,MAAM,wBAAwB,OAAO,CAAC,cAAc,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAG9N,OAAO;QACH,UAAU,EAAE;YACR,GAAG,OAAO;YACV,QAAQ,EAAE,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE;SACxD;QACR,YAAY,EAAE,uBAAe,CAAC,aAAa,CAAC,OAAO,CAC/C,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,IAAI,EAAE,EAC7B,OAAO,CAAC,QAAQ,EAChB,aAAa;aACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAQT,MAAM,aAAa,GAAG,IAAI,qBAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAmC,CAAC;YAG7F,OAAO,IAAI,uBAAe,CAAC,aAAa,CAAC,IAAI,uBAAe,CAAC,SAAS,CAClE,aAAa,CAAC,KAAK,CAAC,OAAO,EAC3B,aAAa,CAAC,KAAK,CAAC,WAAW,EAC/B,aAAa,CAAC,KAAK,CAAC,IAAI,EACxB,aAAa,CAAC,KAAK,CAAC,SAAS,CAChC,CAAC,CAAC;QACP,CAAC,CAAC,EACN,YAAY,CAAC,GAAG,CACZ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACP,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,WAAG,CAAC,UAAU,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAChC,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CACJ,CACJ;KACJ,CAAC;AACN,CAAC;AA1DD,gDA0DC;AAGD,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAQ,EAAE,UAA0B;IAEhE,MAAM,KAAK,GAAG,gBAAgB,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,EAAE;QACP,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,SAAS,KAAK,IAAI,EAAE;YACpB,IAAI,GAAG,YAAY,UAAU,EAAE;gBAC3B,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC/B,OAAO;aACV;YAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBACzB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC7B,OAAO;aACV;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SAC3C;QAED,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE7C,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;QAC3D,OAAO;KACV;IAID,QAAQ,IAAI,EAAE;QACV,KAAK,MAAM;YACP,UAAU,CAAC,aAAa,CAAC,IAAA,2BAAa,EAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,MAAM;QACV,KAAK,SAAS;YACV,uBAAe,CAAC,cAAc,CAAC,OAAO,CAAC,GAAa,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5E,MAAM;QACV,KAAK,IAAI;YACL,UAAU,CAAC,WAAW,CAAC,IAAA,0BAAY,EAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,MAAM;QACV,KAAK,KAAK;YACN,UAAU,CAAC,YAAY,CAAC,IAAA,0BAAY,EAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,MAAM;QACV,KAAK,KAAK;YACN,UAAU,CAAC,YAAY,CAAC,IAAA,0BAAY,EAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,MAAM;QACV,KAAK,KAAK;YACN,UAAU,CAAC,YAAY,CAAC,IAAA,0BAAY,EAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,MAAM;QACV,KAAK,MAAM;YACP,UAAU,CAAC,aAAa,CAAC,IAAA,0BAAY,EAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,MAAM;QACV,KAAK,MAAM;YACP,UAAU,CAAC,aAAa,CAAC,IAAA,0BAAY,EAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,MAAM;QACV,KAAK,qBAAqB;YACtB,UAAU,CAAC,YAAY,CAAC,GAAa,CAAC,CAAC;YACvC,MAAM;QACV;YACI,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC;KACvD;AACL,CAAC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createViewPayload = void 0;
4
+ const aptos_1 = require("aptos");
5
+ const ensureTypes_1 = require("../ensureTypes");
6
+ function createViewPayload(abi, payload) {
7
+ const fnAbi = abi.exposed_functions.filter(f => f.name === payload.function)[0];
8
+ const type_arguments = payload.type_arguments;
9
+ const val_arguments = payload.arguments;
10
+ if (fnAbi === undefined)
11
+ throw new Error(`Function ${payload.function} not found in ABI`);
12
+ if (fnAbi.params.length !== val_arguments.length)
13
+ throw new Error(`Function ${payload.function} expects ${fnAbi.params.length} arguments, but ${payload.arguments.length} were provided`);
14
+ if (fnAbi.generic_type_params.length !== type_arguments.length)
15
+ throw new Error(`Function ${payload.function} expects ${fnAbi.generic_type_params.length} type arguments, but ${payload.type_arguments.length} were provided`);
16
+ const args = fnAbi.params.map((type, i) => {
17
+ if (['u8', 'u16', 'u32'].includes(type)) {
18
+ return (0, ensureTypes_1.ensureNumber)(payload.arguments[i]);
19
+ }
20
+ else if (['u64', 'u128', 'u256'].includes(type)) {
21
+ return payload.arguments[i].toString();
22
+ }
23
+ else if (type.includes("vector")) {
24
+ return encodeVector(type, payload.arguments[i]);
25
+ }
26
+ else {
27
+ return payload.arguments[i];
28
+ }
29
+ });
30
+ const decoders = fnAbi.return.map((type) => {
31
+ if (['u64', 'u128', 'u256'].includes(type)) {
32
+ return decodeBigint;
33
+ }
34
+ else {
35
+ return null;
36
+ }
37
+ });
38
+ return {
39
+ viewRequest: {
40
+ function: `${abi.address}::${abi.name}::${payload.function}`,
41
+ arguments: args,
42
+ type_arguments: payload.type_arguments,
43
+ },
44
+ decoders,
45
+ };
46
+ }
47
+ exports.createViewPayload = createViewPayload;
48
+ function decodeBigint(value) {
49
+ return BigInt(value);
50
+ }
51
+ function encodeVector(type, value) {
52
+ const regex = /vector<([^]+)>/;
53
+ const match = type.match(regex);
54
+ if (!match) {
55
+ throw new Error(`Unsupported type: ${type}`);
56
+ }
57
+ if (match[1] === "u8") {
58
+ return aptos_1.HexString.fromUint8Array(new Uint8Array(value.map((v) => {
59
+ const result = (0, ensureTypes_1.ensureNumber)(v);
60
+ if (result < 0 || result > 255)
61
+ throw new Error(`Invalid u8 value: ${result}`);
62
+ return result;
63
+ }))).hexString;
64
+ }
65
+ else if (["u16", "u32"].includes(match[1])) {
66
+ return value;
67
+ }
68
+ else if (["u64", "u128", "u256"].includes(match[1])) {
69
+ return value.map((v) => v.toString());
70
+ }
71
+ else if (match[1] === "bool") {
72
+ return value;
73
+ }
74
+ else {
75
+ return value;
76
+ }
77
+ }
78
+ //# sourceMappingURL=createViewPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createViewPayload.js","sourceRoot":"","sources":["../../../src/core/createViewPayload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEntryPayload = exports.createViewPayload = exports.createClient = exports.MoveTsClient = exports.MoveTsWalletClient = void 0;
4
+ var WalletClient_1 = require("./WalletClient");
5
+ Object.defineProperty(exports, "MoveTsWalletClient", { enumerable: true, get: function () { return WalletClient_1.WalletClient; } });
6
+ var Client_1 = require("./Client");
7
+ Object.defineProperty(exports, "MoveTsClient", { enumerable: true, get: function () { return Client_1.Client; } });
8
+ Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return Client_1.createClient; } });
9
+ var createViewPayload_1 = require("./createViewPayload");
10
+ Object.defineProperty(exports, "createViewPayload", { enumerable: true, get: function () { return createViewPayload_1.createViewPayload; } });
11
+ var createEntryPayload_1 = require("./createEntryPayload");
12
+ Object.defineProperty(exports, "createEntryPayload", { enumerable: true, get: function () { return createEntryPayload_1.createEntryPayload; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,+CAAoE;AAA3D,kHAAA,YAAY,OAAsB;AAC3C,mCAAgE;AAAvD,sGAAA,MAAM,OAAgB;AAAE,sGAAA,YAAY,OAAA;AAC7C,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensureBigInt = exports.ensureNumber = exports.ensureBoolean = void 0;
4
+ function assertType(val, types, message) {
5
+ if (!types?.includes(typeof val)) {
6
+ throw new Error(message || `Invalid arg: ${val} type should be ${types instanceof Array ? types.join(" or ") : types}`);
7
+ }
8
+ }
9
+ function ensureBoolean(val) {
10
+ assertType(val, ["boolean", "string"]);
11
+ if (typeof val === "boolean") {
12
+ return val;
13
+ }
14
+ if (val === "true") {
15
+ return true;
16
+ }
17
+ if (val === "false") {
18
+ return false;
19
+ }
20
+ throw new Error("Invalid boolean string.");
21
+ }
22
+ exports.ensureBoolean = ensureBoolean;
23
+ function ensureNumber(val) {
24
+ assertType(val, ["number", "string"]);
25
+ if (typeof val === "number") {
26
+ return val;
27
+ }
28
+ const res = Number.parseInt(val, 10);
29
+ if (Number.isNaN(res)) {
30
+ throw new Error("Invalid number string.");
31
+ }
32
+ return res;
33
+ }
34
+ exports.ensureNumber = ensureNumber;
35
+ function ensureBigInt(val) {
36
+ assertType(val, ["number", "bigint", "string"]);
37
+ return BigInt(val);
38
+ }
39
+ exports.ensureBigInt = ensureBigInt;
40
+ //# sourceMappingURL=ensureTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureTypes.js","sourceRoot":"","sources":["../../src/ensureTypes.ts"],"names":[],"mappings":";;;AAAA,SAAS,UAAU,CAAC,GAAQ,EAAE,KAAwB,EAAE,OAAgB;IACpE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE;QAC9B,MAAM,IAAI,KAAK,CACX,OAAO,IAAI,gBAAgB,GAAG,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CACzG,CAAC;KACL;AACL,CAAC;AAED,SAAgB,aAAa,CAAC,GAAqB;IAC/C,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;QAC1B,OAAO,GAAG,CAAC;KACd;IAED,IAAI,GAAG,KAAK,MAAM,EAAE;QAChB,OAAO,IAAI,CAAC;KACf;IACD,IAAI,GAAG,KAAK,OAAO,EAAE;QACjB,OAAO,KAAK,CAAC;KAChB;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC/C,CAAC;AAdD,sCAcC;AAED,SAAgB,YAAY,CAAC,GAAoB;IAC7C,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QACzB,OAAO,GAAG,CAAC;KACd;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC7C;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAZD,oCAYC;AAED,SAAgB,YAAY,CAAC,GAA6B;IACtD,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAHD,oCAGC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWalletClient = exports.useSubmitTransaction = void 0;
4
+ var useSubmitTransaction_1 = require("./useSubmitTransaction");
5
+ Object.defineProperty(exports, "useSubmitTransaction", { enumerable: true, get: function () { return useSubmitTransaction_1.useSubmitTransaction; } });
6
+ var useWalletClient_1 = require("./useWalletClient");
7
+ Object.defineProperty(exports, "useWalletClient", { enumerable: true, get: function () { return useWalletClient_1.useWalletClient; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;AAAA,+DAAwF;AAArD,4HAAA,oBAAoB,OAAA;AACvD,qDAAoD;AAA3C,kHAAA,eAAe,OAAA"}