viem 2.54.5 → 2.54.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/_cjs/clients/createClient.js +3 -5
- package/_cjs/clients/createClient.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/tempo/actions/token.js +46 -25
- package/_cjs/tempo/actions/token.js.map +1 -1
- package/_cjs/tempo/internal/utils.js +8 -2
- package/_cjs/tempo/internal/utils.js.map +1 -1
- package/_esm/clients/createClient.js +8 -5
- package/_esm/clients/createClient.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/tempo/actions/token.js +68 -52
- package/_esm/tempo/actions/token.js.map +1 -1
- package/_esm/tempo/internal/utils.js +17 -3
- package/_esm/tempo/internal/utils.js.map +1 -1
- package/_types/clients/createClient.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/tempo/actions/token.d.ts +43 -47
- package/_types/tempo/actions/token.d.ts.map +1 -1
- package/_types/tempo/internal/utils.d.ts +21 -2
- package/_types/tempo/internal/utils.d.ts.map +1 -1
- package/clients/createClient.ts +7 -3
- package/errors/version.ts +1 -1
- package/package.json +1 -1
- package/tempo/actions/token.ts +74 -71
- package/tempo/internal/utils.ts +42 -4
package/clients/createClient.ts
CHANGED
|
@@ -371,9 +371,13 @@ export function bindActionDecorators(
|
|
|
371
371
|
if (Object.hasOwn(action, key)) {
|
|
372
372
|
const helper = action[key]
|
|
373
373
|
wrapped[key] = (args: any = {}) => {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
374
|
+
// Single-parameter helpers are client-less (e.g. `dex.buy.call(args)`).
|
|
375
|
+
// Everything else is called with `(client, args)`: two-parameter
|
|
376
|
+
// helpers, rest-parameter helpers that accept `(client, args)` or
|
|
377
|
+
// `(args)` (`length === 0`, e.g. `token.transfer.call`), and
|
|
378
|
+
// zero-argument helpers, which ignore the extra arguments.
|
|
379
|
+
if (helper.length === 1) return helper(args)
|
|
380
|
+
return helper(client, args)
|
|
377
381
|
}
|
|
378
382
|
}
|
|
379
383
|
for (const key of ['extractEvent', 'extractEvents'] as const)
|
package/errors/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '2.54.
|
|
1
|
+
export const version = '2.54.6'
|
package/package.json
CHANGED
package/tempo/actions/token.ts
CHANGED
|
@@ -46,9 +46,11 @@ import type {
|
|
|
46
46
|
WriteParameters,
|
|
47
47
|
} from '../internal/types.js'
|
|
48
48
|
import {
|
|
49
|
+
type CallParameters,
|
|
49
50
|
defineCall,
|
|
50
51
|
findDeclaredToken,
|
|
51
52
|
pickWriteParameters,
|
|
53
|
+
resolveCallParameters,
|
|
52
54
|
resolveToken,
|
|
53
55
|
resolveTokenWithDecimals,
|
|
54
56
|
} from '../internal/utils.js'
|
|
@@ -130,15 +132,14 @@ export namespace approve {
|
|
|
130
132
|
* `address`; `amount.decimals` is inferred from the client's declared
|
|
131
133
|
* `tokens` when omitted.
|
|
132
134
|
*
|
|
133
|
-
* @param
|
|
134
|
-
* @param parameters - Parameters.
|
|
135
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
135
136
|
* @returns The call.
|
|
136
137
|
*/
|
|
137
138
|
export function call<chain extends Chain | undefined>(
|
|
138
|
-
|
|
139
|
-
parameters: Args,
|
|
139
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
140
140
|
) {
|
|
141
|
-
const
|
|
141
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
142
|
+
const { amount, spender, token } = args
|
|
142
143
|
const { address, decimals } = resolveToken(client, { token })
|
|
143
144
|
return defineCall({
|
|
144
145
|
address,
|
|
@@ -389,13 +390,13 @@ export namespace burnBlocked {
|
|
|
389
390
|
*
|
|
390
391
|
* `amount.decimals` is inferred from the client's declared `tokens` when omitted.
|
|
391
392
|
*
|
|
392
|
-
* @param
|
|
393
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
393
394
|
* @returns The call.
|
|
394
395
|
*/
|
|
395
396
|
export function call<chain extends Chain | undefined>(
|
|
396
|
-
|
|
397
|
-
args: Args,
|
|
397
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
398
398
|
) {
|
|
399
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
399
400
|
const { from, amount, token } = args
|
|
400
401
|
const { address, decimals } = resolveToken(client, { token })
|
|
401
402
|
return defineCall({
|
|
@@ -598,13 +599,13 @@ export namespace burn {
|
|
|
598
599
|
*
|
|
599
600
|
* `amount.decimals` is inferred from the client's declared `tokens` when omitted.
|
|
600
601
|
*
|
|
601
|
-
* @param
|
|
602
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
602
603
|
* @returns The call.
|
|
603
604
|
*/
|
|
604
605
|
export function call<chain extends Chain | undefined>(
|
|
605
|
-
|
|
606
|
-
args: Args,
|
|
606
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
607
607
|
) {
|
|
608
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
608
609
|
const { amount, memo, token } = args
|
|
609
610
|
const { address, decimals } = resolveToken(client, { token })
|
|
610
611
|
const value = internal_Token.toBaseUnits(amount, decimals)
|
|
@@ -812,13 +813,13 @@ export namespace changeTransferPolicy {
|
|
|
812
813
|
* })
|
|
813
814
|
* ```
|
|
814
815
|
*
|
|
815
|
-
* @param
|
|
816
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
816
817
|
* @returns The call.
|
|
817
818
|
*/
|
|
818
819
|
export function call<chain extends Chain | undefined>(
|
|
819
|
-
|
|
820
|
-
args: Args,
|
|
820
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
821
821
|
) {
|
|
822
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
822
823
|
const { token, policyId } = args
|
|
823
824
|
return defineCall({
|
|
824
825
|
address: resolveToken(client, { token }).address,
|
|
@@ -1049,13 +1050,13 @@ export namespace create {
|
|
|
1049
1050
|
* })
|
|
1050
1051
|
* ```
|
|
1051
1052
|
*
|
|
1052
|
-
* @param
|
|
1053
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
1053
1054
|
* @returns The call.
|
|
1054
1055
|
*/
|
|
1055
1056
|
export function call<chain extends Chain | undefined>(
|
|
1056
|
-
|
|
1057
|
-
args: Args,
|
|
1057
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
1058
1058
|
) {
|
|
1059
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
1059
1060
|
const {
|
|
1060
1061
|
name,
|
|
1061
1062
|
symbol,
|
|
@@ -1247,14 +1248,13 @@ export namespace getAllowance {
|
|
|
1247
1248
|
* other action that accepts a contract call. The token is selected by `token`,
|
|
1248
1249
|
* which is either a TIP20 token id or a contract address.
|
|
1249
1250
|
*
|
|
1250
|
-
* @param
|
|
1251
|
-
* @param args - Arguments.
|
|
1251
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
1252
1252
|
* @returns The call.
|
|
1253
1253
|
*/
|
|
1254
1254
|
export function call<chain extends Chain | undefined>(
|
|
1255
|
-
|
|
1256
|
-
args: Args,
|
|
1255
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
1257
1256
|
) {
|
|
1257
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
1258
1258
|
return defineCall({
|
|
1259
1259
|
address: resolveToken(client, args).address,
|
|
1260
1260
|
abi: Abis.tip20,
|
|
@@ -1333,15 +1333,20 @@ export namespace getBalance {
|
|
|
1333
1333
|
* other action that accepts a contract call. The token is selected by `token`,
|
|
1334
1334
|
* which is either a TIP20 token id or a contract address.
|
|
1335
1335
|
*
|
|
1336
|
-
* @param
|
|
1337
|
-
* @param args - Arguments.
|
|
1336
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
1338
1337
|
* @returns The call.
|
|
1339
1338
|
*/
|
|
1340
1339
|
export function call<
|
|
1341
1340
|
chain extends Chain | undefined,
|
|
1342
1341
|
account extends Account | undefined,
|
|
1343
|
-
>(
|
|
1344
|
-
|
|
1342
|
+
>(
|
|
1343
|
+
...parameters: CallParameters<
|
|
1344
|
+
Args<account>,
|
|
1345
|
+
Client<Transport, chain, account>
|
|
1346
|
+
>
|
|
1347
|
+
) {
|
|
1348
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
1349
|
+
const account_ = args.account ?? client?.account
|
|
1345
1350
|
if (!account_) throw new AccountNotFoundError()
|
|
1346
1351
|
const account = parseAccount(account_).address
|
|
1347
1352
|
return defineCall({
|
|
@@ -1658,14 +1663,13 @@ export namespace getTotalSupply {
|
|
|
1658
1663
|
* other action that accepts a contract call. The token is selected by `token`,
|
|
1659
1664
|
* which is either a TIP20 token id or a contract address.
|
|
1660
1665
|
*
|
|
1661
|
-
* @param
|
|
1662
|
-
* @param args - Arguments.
|
|
1666
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
1663
1667
|
* @returns The call.
|
|
1664
1668
|
*/
|
|
1665
1669
|
export function call<chain extends Chain | undefined>(
|
|
1666
|
-
|
|
1667
|
-
args: Args,
|
|
1670
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
1668
1671
|
) {
|
|
1672
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
1669
1673
|
return defineCall({
|
|
1670
1674
|
address: resolveToken(client, args).address,
|
|
1671
1675
|
abi: Abis.tip20,
|
|
@@ -1728,13 +1732,13 @@ export namespace getRoleAdmin {
|
|
|
1728
1732
|
/**
|
|
1729
1733
|
* Defines a call to the `getRoleAdmin` function.
|
|
1730
1734
|
*
|
|
1731
|
-
* @param
|
|
1735
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
1732
1736
|
* @returns The call.
|
|
1733
1737
|
*/
|
|
1734
1738
|
export function call<chain extends Chain | undefined>(
|
|
1735
|
-
|
|
1736
|
-
args: Args,
|
|
1739
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
1737
1740
|
) {
|
|
1741
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
1738
1742
|
const { role, token } = args
|
|
1739
1743
|
return defineCall({
|
|
1740
1744
|
address: resolveToken(client, { token }).address,
|
|
@@ -1809,13 +1813,13 @@ export namespace hasRole {
|
|
|
1809
1813
|
/**
|
|
1810
1814
|
* Defines a call to the `hasRole` function.
|
|
1811
1815
|
*
|
|
1812
|
-
* @param
|
|
1816
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
1813
1817
|
* @returns The call.
|
|
1814
1818
|
*/
|
|
1815
1819
|
export function call<chain extends Chain | undefined>(
|
|
1816
|
-
|
|
1817
|
-
args: Args,
|
|
1820
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
1818
1821
|
) {
|
|
1822
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
1819
1823
|
const { account, role, token } = args
|
|
1820
1824
|
return defineCall({
|
|
1821
1825
|
address: resolveToken(client, { token }).address,
|
|
@@ -1939,13 +1943,13 @@ export namespace grantRoles {
|
|
|
1939
1943
|
* })
|
|
1940
1944
|
* ```
|
|
1941
1945
|
*
|
|
1942
|
-
* @param
|
|
1946
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
1943
1947
|
* @returns The call.
|
|
1944
1948
|
*/
|
|
1945
1949
|
export function call<chain extends Chain | undefined>(
|
|
1946
|
-
|
|
1947
|
-
args: Args,
|
|
1950
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
1948
1951
|
) {
|
|
1952
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
1949
1953
|
const { token, to, role } = args
|
|
1950
1954
|
const roleHash = TokenRole.serialize(role)
|
|
1951
1955
|
return defineCall({
|
|
@@ -2149,13 +2153,13 @@ export namespace mint {
|
|
|
2149
2153
|
*
|
|
2150
2154
|
* `amount.decimals` is inferred from the client's declared `tokens` when omitted.
|
|
2151
2155
|
*
|
|
2152
|
-
* @param
|
|
2156
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
2153
2157
|
* @returns The call.
|
|
2154
2158
|
*/
|
|
2155
2159
|
export function call<chain extends Chain | undefined>(
|
|
2156
|
-
|
|
2157
|
-
args: Args,
|
|
2160
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
2158
2161
|
) {
|
|
2162
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
2159
2163
|
const { to, amount, memo, token } = args
|
|
2160
2164
|
const { address, decimals } = resolveToken(client, { token })
|
|
2161
2165
|
const value = internal_Token.toBaseUnits(amount, decimals)
|
|
@@ -2360,13 +2364,13 @@ export namespace pause {
|
|
|
2360
2364
|
* })
|
|
2361
2365
|
* ```
|
|
2362
2366
|
*
|
|
2363
|
-
* @param
|
|
2367
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
2364
2368
|
* @returns The call.
|
|
2365
2369
|
*/
|
|
2366
2370
|
export function call<chain extends Chain | undefined>(
|
|
2367
|
-
|
|
2368
|
-
args: Args,
|
|
2371
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
2369
2372
|
) {
|
|
2373
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
2370
2374
|
const { token } = args
|
|
2371
2375
|
return defineCall({
|
|
2372
2376
|
address: resolveToken(client, { token }).address,
|
|
@@ -2566,13 +2570,13 @@ export namespace renounceRoles {
|
|
|
2566
2570
|
* })
|
|
2567
2571
|
* ```
|
|
2568
2572
|
*
|
|
2569
|
-
* @param
|
|
2573
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
2570
2574
|
* @returns The call.
|
|
2571
2575
|
*/
|
|
2572
2576
|
export function call<chain extends Chain | undefined>(
|
|
2573
|
-
|
|
2574
|
-
args: Args,
|
|
2577
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
2575
2578
|
) {
|
|
2579
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
2576
2580
|
const { token, role } = args
|
|
2577
2581
|
const roleHash = TokenRole.serialize(role)
|
|
2578
2582
|
return defineCall({
|
|
@@ -2782,13 +2786,13 @@ export namespace revokeRoles {
|
|
|
2782
2786
|
* })
|
|
2783
2787
|
* ```
|
|
2784
2788
|
*
|
|
2785
|
-
* @param
|
|
2789
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
2786
2790
|
* @returns The call.
|
|
2787
2791
|
*/
|
|
2788
2792
|
export function call<chain extends Chain | undefined>(
|
|
2789
|
-
|
|
2790
|
-
args: Args,
|
|
2793
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
2791
2794
|
) {
|
|
2795
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
2792
2796
|
const { token, from, role } = args
|
|
2793
2797
|
const roleHash = TokenRole.serialize(role)
|
|
2794
2798
|
return defineCall({
|
|
@@ -2986,13 +2990,13 @@ export namespace setSupplyCap {
|
|
|
2986
2990
|
* })
|
|
2987
2991
|
* ```
|
|
2988
2992
|
*
|
|
2989
|
-
* @param
|
|
2993
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
2990
2994
|
* @returns The call.
|
|
2991
2995
|
*/
|
|
2992
2996
|
export function call<chain extends Chain | undefined>(
|
|
2993
|
-
|
|
2994
|
-
args: Args,
|
|
2997
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
2995
2998
|
) {
|
|
2999
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
2996
3000
|
const { token, supplyCap } = args
|
|
2997
3001
|
return defineCall({
|
|
2998
3002
|
address: resolveToken(client, { token }).address,
|
|
@@ -3189,13 +3193,13 @@ export namespace setRoleAdmin {
|
|
|
3189
3193
|
* })
|
|
3190
3194
|
* ```
|
|
3191
3195
|
*
|
|
3192
|
-
* @param
|
|
3196
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
3193
3197
|
* @returns The call.
|
|
3194
3198
|
*/
|
|
3195
3199
|
export function call<chain extends Chain | undefined>(
|
|
3196
|
-
|
|
3197
|
-
args: Args,
|
|
3200
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
3198
3201
|
) {
|
|
3202
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
3199
3203
|
const { token, role, adminRole } = args
|
|
3200
3204
|
const roleHash = TokenRole.serialize(role)
|
|
3201
3205
|
const adminRoleHash = TokenRole.serialize(adminRole)
|
|
@@ -3371,17 +3375,16 @@ export namespace transfer {
|
|
|
3371
3375
|
* `address`; `amount.decimals` is inferred from the client's declared
|
|
3372
3376
|
* `tokens` when omitted.
|
|
3373
3377
|
*
|
|
3374
|
-
* @param
|
|
3375
|
-
* @param parameters - Parameters.
|
|
3378
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
3376
3379
|
* @returns The call.
|
|
3377
3380
|
*/
|
|
3378
3381
|
export function call<chain extends Chain | undefined>(
|
|
3379
|
-
|
|
3380
|
-
parameters: Args,
|
|
3382
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
3381
3383
|
) {
|
|
3382
|
-
const
|
|
3384
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
3385
|
+
const { from, memo, to, token } = args
|
|
3383
3386
|
const { address, decimals } = resolveToken(client, { token })
|
|
3384
|
-
const value = internal_Token.toBaseUnits(
|
|
3387
|
+
const value = internal_Token.toBaseUnits(args.amount, decimals)
|
|
3385
3388
|
const callArgs = (() => {
|
|
3386
3389
|
if (memo && from)
|
|
3387
3390
|
return {
|
|
@@ -3645,13 +3648,13 @@ export namespace unpause {
|
|
|
3645
3648
|
* })
|
|
3646
3649
|
* ```
|
|
3647
3650
|
*
|
|
3648
|
-
* @param
|
|
3651
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
3649
3652
|
* @returns The call.
|
|
3650
3653
|
*/
|
|
3651
3654
|
export function call<chain extends Chain | undefined>(
|
|
3652
|
-
|
|
3653
|
-
args: Args,
|
|
3655
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
3654
3656
|
) {
|
|
3657
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
3655
3658
|
const { token } = args
|
|
3656
3659
|
return defineCall({
|
|
3657
3660
|
address: resolveToken(client, { token }).address,
|
|
@@ -3843,13 +3846,13 @@ export namespace prepareUpdateQuoteToken {
|
|
|
3843
3846
|
* })
|
|
3844
3847
|
* ```
|
|
3845
3848
|
*
|
|
3846
|
-
* @param
|
|
3849
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
3847
3850
|
* @returns The call.
|
|
3848
3851
|
*/
|
|
3849
3852
|
export function call<chain extends Chain | undefined>(
|
|
3850
|
-
|
|
3851
|
-
args: Args,
|
|
3853
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
3852
3854
|
) {
|
|
3855
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
3853
3856
|
const { token, quoteToken } = args
|
|
3854
3857
|
return defineCall({
|
|
3855
3858
|
address: resolveToken(client, { token }).address,
|
|
@@ -4043,13 +4046,13 @@ export namespace updateQuoteToken {
|
|
|
4043
4046
|
* })
|
|
4044
4047
|
* ```
|
|
4045
4048
|
*
|
|
4046
|
-
* @param
|
|
4049
|
+
* @param parameters - Client (optional), followed by the call arguments.
|
|
4047
4050
|
* @returns The call.
|
|
4048
4051
|
*/
|
|
4049
4052
|
export function call<chain extends Chain | undefined>(
|
|
4050
|
-
|
|
4051
|
-
args: Args,
|
|
4053
|
+
...parameters: CallParameters<Args, Client<Transport, chain>>
|
|
4052
4054
|
) {
|
|
4055
|
+
const [client, args] = resolveCallParameters(parameters)
|
|
4053
4056
|
const { token } = args
|
|
4054
4057
|
return defineCall({
|
|
4055
4058
|
address: resolveToken(client, { token }).address,
|
package/tempo/internal/utils.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Abi, AbiStateMutability, Address } from 'abitype'
|
|
2
2
|
import { TokenId } from 'ox/tempo'
|
|
3
|
+
import type { Account } from '../../accounts/types.js'
|
|
3
4
|
import { readContract } from '../../actions/public/readContract.js'
|
|
4
5
|
import type { Client } from '../../clients/createClient.js'
|
|
5
6
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
|
@@ -26,17 +27,21 @@ import * as Abis from '../Abis.js'
|
|
|
26
27
|
* from the client's declared `tokens` when the address matches a declared token,
|
|
27
28
|
* otherwise taken from the explicit `decimals`.
|
|
28
29
|
*
|
|
29
|
-
*
|
|
30
|
+
* When `client` is omitted, `token` must be a token id or address (symbols
|
|
31
|
+
* cannot be resolved), and `decimals` is only taken from the explicit
|
|
32
|
+
* `decimals`.
|
|
33
|
+
*
|
|
34
|
+
* @param client - Client (optional).
|
|
30
35
|
* @param parameters - Parameters.
|
|
31
36
|
* @returns The resolved `address` and `decimals`.
|
|
32
37
|
*/
|
|
33
38
|
export function resolveToken(
|
|
34
|
-
client: Client<Transport, Chain | undefined
|
|
39
|
+
client: Client<Transport, Chain | undefined> | undefined,
|
|
35
40
|
parameters: resolveToken.Parameters,
|
|
36
41
|
): { address: Address; decimals: number | undefined } {
|
|
37
42
|
const { decimals, token } = parameters
|
|
38
43
|
|
|
39
|
-
if (typeof token === 'string') {
|
|
44
|
+
if (client && typeof token === 'string') {
|
|
40
45
|
const declared = findDeclaredTokenBySymbol(client, token)
|
|
41
46
|
if (declared)
|
|
42
47
|
return {
|
|
@@ -48,7 +53,7 @@ export function resolveToken(
|
|
|
48
53
|
const address = TokenId.toAddress(token as TokenId.TokenIdOrAddress)
|
|
49
54
|
return {
|
|
50
55
|
address,
|
|
51
|
-
decimals: decimals ?? inferDecimals(client, address),
|
|
56
|
+
decimals: decimals ?? (client ? inferDecimals(client, address) : undefined),
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
|
|
@@ -211,6 +216,39 @@ export function pickWriteParameters(parameters: Record<string, unknown>) {
|
|
|
211
216
|
}
|
|
212
217
|
}
|
|
213
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Parameters of an action's `.call` builder: the call arguments, optionally
|
|
221
|
+
* preceded by a Client. The Client is used to resolve token symbols declared
|
|
222
|
+
* on its `tokens` array and to infer token `decimals`. When the Client is
|
|
223
|
+
* omitted, `token` must be a TIP20 token id or contract `address`, and
|
|
224
|
+
* formatted `amount` values must carry explicit `decimals`.
|
|
225
|
+
*/
|
|
226
|
+
export type CallParameters<
|
|
227
|
+
args,
|
|
228
|
+
client extends Client<
|
|
229
|
+
Transport,
|
|
230
|
+
Chain | undefined,
|
|
231
|
+
Account | undefined
|
|
232
|
+
> = Client<Transport, Chain | undefined>,
|
|
233
|
+
// Note: mutable (non-`readonly`) tuples, so bound decorator helpers can
|
|
234
|
+
// pattern-match these parameters (see `BoundHelper` in `../Decorator.ts`).
|
|
235
|
+
> = [client: client, args: args] | [args: args]
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Splits {@link CallParameters} into `[client, args]`, with an `undefined`
|
|
239
|
+
* client when the caller omitted it.
|
|
240
|
+
* @internal
|
|
241
|
+
*/
|
|
242
|
+
export function resolveCallParameters<
|
|
243
|
+
args,
|
|
244
|
+
client extends Client<Transport, Chain | undefined, Account | undefined>,
|
|
245
|
+
>(
|
|
246
|
+
parameters: CallParameters<args, client>,
|
|
247
|
+
): readonly [client: client | undefined, args: args] {
|
|
248
|
+
if (parameters.length === 2) return parameters
|
|
249
|
+
return [undefined, parameters[0]]
|
|
250
|
+
}
|
|
251
|
+
|
|
214
252
|
export function defineCall<
|
|
215
253
|
const abi extends Abi,
|
|
216
254
|
const functionName extends ContractFunctionName<abi, AbiStateMutability>,
|