@kasarlabs/erc20-mcp 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,19 @@
1
1
  import { z } from 'zod';
2
- export const assetSchema = z.object({
3
- assetType: z
4
- .enum(['SYMBOL', 'ADDRESS'])
5
- .describe('The type of the asset concerned by the allowance: SYMBOL or ADDRESS'),
6
- assetValue: z
2
+ export const assetSchema = z
3
+ .object({
4
+ assetAddress: z
7
5
  .string()
8
- .describe('The symbol (e.g., "ETH", "USDC") or the contract address of the token'),
9
- });
6
+ .optional()
7
+ .describe('The contract address of the ERC20 token'),
8
+ assetSymbol: z
9
+ .string()
10
+ .optional()
11
+ .describe('The symbol of the ERC20 token'),
12
+ })
13
+ .refine((data) => data.assetAddress || data.assetSymbol, {
14
+ message: 'Either assetAddress or assetSymbol must be provided',
15
+ })
16
+ .describe('The asset information (symbol or contract address)');
10
17
  export const getAllowanceSchema = z.object({
11
18
  ownerAddress: z
12
19
  .string()
@@ -14,69 +21,69 @@ export const getAllowanceSchema = z.object({
14
21
  spenderAddress: z
15
22
  .string()
16
23
  .describe('The starknet address of the account allowed to spend the tokens'),
17
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
24
+ asset: assetSchema,
18
25
  });
19
26
  export const getMyGivenAllowanceSchema = z.object({
20
27
  spenderAddress: z
21
28
  .string()
22
29
  .describe('The starknet address of the account allowed to spend the tokens'),
23
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
30
+ asset: assetSchema,
24
31
  });
25
32
  export const getAllowanceGivenToMeSchema = z.object({
26
33
  ownerAddress: z
27
34
  .string()
28
35
  .describe('The starknet address of the account allowed to spend the tokens'),
29
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
36
+ asset: assetSchema,
30
37
  });
31
38
  export const getTotalSupplySchema = z.object({
32
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
39
+ asset: assetSchema,
33
40
  });
34
41
  export const transferFromSchema = z.object({
35
42
  fromAddress: z.string().describe('The address to transfer tokens from'),
36
43
  toAddress: z.string().describe('The address to transfer tokens to'),
37
44
  amount: z.string().describe('The amount of tokens to transfer'),
38
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
45
+ asset: assetSchema,
39
46
  });
40
47
  export const transferFromSignatureSchema = z.object({
41
48
  fromAddress: z.string().describe('The address to transfer tokens from'),
42
49
  toAddress: z.string().describe('The address to transfer tokens to'),
43
50
  amount: z.string().describe('The amount of tokens to transfer'),
44
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
51
+ asset: assetSchema,
45
52
  });
46
53
  export const getBalanceSchema = z.object({
47
54
  accountAddress: z.string().describe('The address to check the balance for'),
48
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
55
+ asset: assetSchema,
49
56
  });
50
57
  export const getOwnBalanceSchema = z.object({
51
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
58
+ asset: assetSchema,
52
59
  });
53
60
  export const getBalanceSignatureSchema = z.object({
54
61
  accountAddress: z.string().describe('The address to check the balance for'),
55
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
62
+ asset: assetSchema,
56
63
  });
57
64
  export const approveSchema = z.object({
58
65
  spenderAddress: z
59
66
  .string()
60
67
  .describe('The address being approved to spend tokens'),
61
68
  amount: z.string().describe('The amount of tokens being approved'),
62
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
69
+ asset: assetSchema,
63
70
  });
64
71
  export const approveSignatureSchema = z.object({
65
72
  spenderAddress: z
66
73
  .string()
67
74
  .describe('The address being approved to spend tokens'),
68
75
  amount: z.string().describe('The amount of tokens being approved'),
69
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
76
+ asset: assetSchema,
70
77
  });
71
78
  export const transferSchema = z.object({
72
79
  recipientAddress: z.string().describe('The address to receive the tokens'),
73
80
  amount: z.string().describe('The amount of tokens to transfer'),
74
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
81
+ asset: assetSchema,
75
82
  });
76
83
  export const transferSignatureSchema = z.object({
77
84
  recipientAddress: z.string().describe('The address to receive the tokens'),
78
85
  amount: z.string().describe('The amount of tokens to transfer'),
79
- asset: assetSchema.describe('The asset information (symbol or contract address)'),
86
+ asset: assetSchema,
80
87
  });
81
88
  export const deployERC20Schema = z.object({
82
89
  name: z.string().describe('The name of the token'),
@@ -85,4 +92,9 @@ export const deployERC20Schema = z.object({
85
92
  .string()
86
93
  .describe('The total supply to mint at the deployment time'),
87
94
  });
95
+ export const getSymbolSchema = z.object({
96
+ assetAddress: z
97
+ .string()
98
+ .describe('The contract address of the ERC20 token to get the symbol for'),
99
+ });
88
100
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@ import { approveSchema } from '../schemas/index.js';
4
4
  export declare const approve: (env: onchainWrite, params: z.infer<typeof approveSchema>) => Promise<{
5
5
  status: string;
6
6
  amount: string;
7
- symbol: string;
8
7
  spender_address: string;
9
8
  transactionHash: string;
10
9
  error?: undefined;
@@ -14,7 +13,6 @@ export declare const approve: (env: onchainWrite, params: z.infer<typeof approve
14
13
  error: string;
15
14
  step: string;
16
15
  amount?: undefined;
17
- symbol?: undefined;
18
16
  spender_address?: undefined;
19
17
  transactionHash?: undefined;
20
18
  }>;
@@ -1,11 +1,10 @@
1
1
  import { Contract } from 'starknet';
2
- import { validateAndFormatParams, executeV3Transaction, validateToken, detectAbiType, extractAssetInfo, } from '../lib/utils/utils.js';
2
+ import { validateAndFormatParams, executeV3Transaction, validateToken, detectAbiType, } from '../lib/utils/utils.js';
3
3
  export const approve = async (env, params) => {
4
4
  try {
5
5
  const provider = env.provider;
6
6
  const account = env.account;
7
- const { assetSymbol, assetAddress } = extractAssetInfo(params.asset);
8
- const token = await validateToken(provider, assetSymbol, assetAddress);
7
+ const token = await validateToken(provider, params.asset.assetAddress, params.asset.assetSymbol);
9
8
  const abi = await detectAbiType(token.address, provider);
10
9
  const { address, amount } = validateAndFormatParams(params.spenderAddress, params.amount, token.decimals);
11
10
  const spenderAddress = address;
@@ -19,7 +18,6 @@ export const approve = async (env, params) => {
19
18
  return {
20
19
  status: 'success',
21
20
  amount: params.amount,
22
- symbol: token.symbol,
23
21
  spender_address: spenderAddress,
24
22
  transactionHash: txH,
25
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/tools/approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAA0B,MAAM,UAAU,CAAC;AAErE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAY/B,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,GAAiB,EACjB,MAAqC,EACrC,EAAE;IACF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE5B,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,uBAAuB,CACjD,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,MAAM,EACb,KAAK,CAAC,QAAQ,CACf,CAAC;QAEF,MAAM,cAAc,GAAG,OAAO,CAAC;QAE/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAExE,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC;YACrC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,eAAe,EAAE,cAAc;YAC/B,eAAe,EAAE,GAAG;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAC/D,IAAI,EAAE,oBAAoB;SAC3B,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/tools/approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAA0B,MAAM,UAAU,CAAC;AAErE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,uBAAuB,CAAC;AAY/B,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,GAAiB,EACjB,MAAqC,EACrC,EAAE;IACF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE5B,MAAM,KAAK,GAAG,MAAM,aAAa,CAC/B,QAAQ,EACR,MAAM,CAAC,KAAK,CAAC,YAAY,EACzB,MAAM,CAAC,KAAK,CAAC,WAAW,CACzB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,uBAAuB,CACjD,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,MAAM,EACb,KAAK,CAAC,QAAQ,CACf,CAAC;QAEF,MAAM,cAAc,GAAG,OAAO,CAAC;QAE/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAExE,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC;YACrC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,eAAe,EAAE,cAAc;YAC/B,eAAe,EAAE,GAAG;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAC/D,IAAI,EAAE,oBAAoB;SAC3B,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
@@ -1,12 +1,11 @@
1
- import { onchainWrite } from '@kasarlabs/ask-starknet-core';
1
+ import { onchainRead, onchainWrite } from '@kasarlabs/ask-starknet-core';
2
2
  import { z } from 'zod';
3
3
  import { getAllowanceSchema, getMyGivenAllowanceSchema, getAllowanceGivenToMeSchema } from '../schemas/index.js';
4
- export declare const getAllowance: (env: onchainWrite, params: z.infer<typeof getAllowanceSchema>) => Promise<{
4
+ export declare const getAllowance: (env: onchainRead, params: z.infer<typeof getAllowanceSchema>) => Promise<{
5
5
  status: string;
6
6
  owner: string;
7
7
  spender: string;
8
8
  allowance: string;
9
- symbol: string;
10
9
  error?: undefined;
11
10
  } | {
12
11
  status: string;
@@ -14,14 +13,12 @@ export declare const getAllowance: (env: onchainWrite, params: z.infer<typeof ge
14
13
  owner?: undefined;
15
14
  spender?: undefined;
16
15
  allowance?: undefined;
17
- symbol?: undefined;
18
16
  }>;
19
17
  export declare const getMyGivenAllowance: (env: onchainWrite, params: z.infer<typeof getMyGivenAllowanceSchema>) => Promise<{
20
18
  status: string;
21
19
  owner: string;
22
20
  spender: string;
23
21
  allowance: string;
24
- symbol: string;
25
22
  error?: undefined;
26
23
  } | {
27
24
  status: string;
@@ -29,14 +26,12 @@ export declare const getMyGivenAllowance: (env: onchainWrite, params: z.infer<ty
29
26
  owner?: undefined;
30
27
  spender?: undefined;
31
28
  allowance?: undefined;
32
- symbol?: undefined;
33
29
  }>;
34
30
  export declare const getAllowanceGivenToMe: (env: onchainWrite, params: z.infer<typeof getAllowanceGivenToMeSchema>) => Promise<{
35
31
  status: string;
36
32
  owner: string;
37
33
  spender: string;
38
34
  allowance: string;
39
- symbol: string;
40
35
  error?: undefined;
41
36
  } | {
42
37
  status: string;
@@ -44,5 +39,4 @@ export declare const getAllowanceGivenToMe: (env: onchainWrite, params: z.infer<
44
39
  owner?: undefined;
45
40
  spender?: undefined;
46
41
  allowance?: undefined;
47
- symbol?: undefined;
48
42
  }>;
@@ -1,19 +1,49 @@
1
- import { Contract } from 'starknet';
2
- import { formatBalance, validateToken, detectAbiType, extractAssetInfo, } from '../lib/utils/utils.js';
1
+ import { validateAndParseAddress } from 'starknet';
2
+ import { formatBalance, validateToken, uint256HexToBigInt, } from '../lib/utils/utils.js';
3
+ async function readAllowanceRaw(provider, tokenAddress, ownerAddress, spenderAddress) {
4
+ const contractAddress = validateAndParseAddress(tokenAddress);
5
+ const owner = validateAndParseAddress(ownerAddress);
6
+ const spender = validateAndParseAddress(spenderAddress);
7
+ const entrypoints = [
8
+ 'allowance',
9
+ 'get_allowance',
10
+ ];
11
+ let lastErr = null;
12
+ for (const entrypoint of entrypoints) {
13
+ try {
14
+ const res = await provider.callContract({
15
+ contractAddress,
16
+ entrypoint,
17
+ calldata: [owner, spender],
18
+ });
19
+ const out = Array.isArray(res?.result)
20
+ ? res.result
21
+ : Array.isArray(res)
22
+ ? res
23
+ : [];
24
+ if (out.length >= 2)
25
+ return uint256HexToBigInt(out[0], out[1]);
26
+ if (out.length === 1)
27
+ return BigInt(out[0]);
28
+ }
29
+ catch (e) {
30
+ lastErr = e;
31
+ }
32
+ }
33
+ throw new Error(`Failed to read allowance on ${contractAddress} for owner ${owner} and spender ${spender}` +
34
+ (lastErr instanceof Error ? ` (last error: ${lastErr.message})` : ''));
35
+ }
3
36
  export const getAllowance = async (env, params) => {
4
37
  try {
5
38
  const provider = env.provider;
6
- const { assetSymbol, assetAddress } = extractAssetInfo(params.asset);
7
- const token = await validateToken(provider, assetSymbol || undefined, assetAddress || undefined);
8
- const abi = await detectAbiType(token.address, provider);
9
- const tokenContract = new Contract(abi, token.address, provider);
10
- const allowanceResponse = await tokenContract.allowance(params.ownerAddress, params.spenderAddress);
39
+ const token = await validateToken(provider, params.asset.assetAddress, params.asset.assetSymbol);
40
+ const raw = await readAllowanceRaw(provider, token.address, params.ownerAddress, params.spenderAddress);
41
+ const formatted = formatBalance(raw, token.decimals);
11
42
  return {
12
43
  status: 'success',
13
44
  owner: params.ownerAddress,
14
45
  spender: params.spenderAddress,
15
- allowance: formatBalance(allowanceResponse, token.decimals),
16
- symbol: token.symbol,
46
+ allowance: formatted,
17
47
  };
18
48
  }
19
49
  catch (error) {
@@ -26,18 +56,17 @@ export const getAllowance = async (env, params) => {
26
56
  export const getMyGivenAllowance = async (env, params) => {
27
57
  try {
28
58
  const provider = env.provider;
29
- const ownerAddress = env.account.address;
30
- const { assetSymbol, assetAddress } = extractAssetInfo(params.asset);
31
- const token = await validateToken(provider, assetSymbol || undefined, assetAddress || undefined);
32
- const abi = await detectAbiType(token.address, provider);
33
- const tokenContract = new Contract(abi, token.address, provider);
34
- const allowanceResponse = await tokenContract.allowance(ownerAddress, params.spenderAddress);
59
+ const owner = env.account.address;
60
+ if (!owner)
61
+ throw new Error('Wallet address not configured');
62
+ const token = await validateToken(provider, params.asset.assetAddress, params.asset.assetSymbol);
63
+ const raw = await readAllowanceRaw(provider, token.address, owner, params.spenderAddress);
64
+ const formatted = formatBalance(raw, token.decimals);
35
65
  return {
36
66
  status: 'success',
37
- owner: ownerAddress,
67
+ owner,
38
68
  spender: params.spenderAddress,
39
- allowance: formatBalance(allowanceResponse, token.decimals),
40
- symbol: token.symbol,
69
+ allowance: formatted,
41
70
  };
42
71
  }
43
72
  catch (error) {
@@ -50,18 +79,17 @@ export const getMyGivenAllowance = async (env, params) => {
50
79
  export const getAllowanceGivenToMe = async (env, params) => {
51
80
  try {
52
81
  const provider = env.provider;
53
- const spenderAddress = env.account.address;
54
- const { assetSymbol, assetAddress } = extractAssetInfo(params.asset);
55
- const token = await validateToken(provider, assetSymbol || undefined, assetAddress || undefined);
56
- const abi = await detectAbiType(token.address, provider);
57
- const tokenContract = new Contract(abi, token.address, provider);
58
- const allowanceResponse = await tokenContract.allowance(params.ownerAddress, spenderAddress);
82
+ const spender = env.account.address;
83
+ if (!spender)
84
+ throw new Error('Wallet address not configured');
85
+ const token = await validateToken(provider, params.asset.assetAddress, params.asset.assetSymbol);
86
+ const raw = await readAllowanceRaw(provider, token.address, params.ownerAddress, spender);
87
+ const formatted = formatBalance(raw, token.decimals);
59
88
  return {
60
89
  status: 'success',
61
90
  owner: params.ownerAddress,
62
- spender: spenderAddress,
63
- allowance: formatBalance(allowanceResponse, token.decimals),
64
- symbol: token.symbol,
91
+ spender,
92
+ allowance: formatted,
65
93
  };
66
94
  }
67
95
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"getAllowance.js","sourceRoot":"","sources":["../../src/tools/getAllowance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getAllowance.js","sourceRoot":"","sources":["../../src/tools/getAllowance.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,21 @@
1
- import { onchainWrite } from '@kasarlabs/ask-starknet-core';
1
+ import { onchainRead, onchainWrite } from '@kasarlabs/ask-starknet-core';
2
2
  import { z } from 'zod';
3
3
  import { getBalanceSchema, getOwnBalanceSchema } from '../schemas/index.js';
4
4
  export declare const getOwnBalance: (env: onchainWrite, params: z.infer<typeof getOwnBalanceSchema>) => Promise<{
5
5
  status: string;
6
6
  balance: string;
7
- symbol: string;
8
7
  error?: undefined;
9
8
  } | {
10
9
  status: string;
11
10
  error: string;
12
11
  balance?: undefined;
13
- symbol?: undefined;
14
12
  }>;
15
- export declare const getBalance: (env: onchainWrite, params: z.infer<typeof getBalanceSchema>) => Promise<{
13
+ export declare const getBalance: (env: onchainRead, params: z.infer<typeof getBalanceSchema>) => Promise<{
16
14
  status: string;
17
15
  balance: string;
18
- symbol: string;
19
16
  error?: undefined;
20
17
  } | {
21
18
  status: string;
22
19
  error: string;
23
20
  balance?: undefined;
24
- symbol?: undefined;
25
21
  }>;
@@ -1,27 +1,53 @@
1
- import { Contract } from 'starknet';
2
- import { detectAbiType } from '../lib/utils/utils.js';
3
- import { formatBalance, validateToken, extractAssetInfo, } from '../lib/utils/utils.js';
1
+ import { validateAndParseAddress } from 'starknet';
2
+ import { formatBalance, validateToken, uint256HexToBigInt, } from '../lib/utils/utils.js';
3
+ async function getBalanceRaw(provider, tokenAddress, accountAddress) {
4
+ const contractAddress = validateAndParseAddress(tokenAddress);
5
+ const account = validateAndParseAddress(accountAddress);
6
+ const entrypoints = [
7
+ 'balanceOf',
8
+ 'balance_of',
9
+ 'get_balance',
10
+ ];
11
+ let lastErr = null;
12
+ for (const entrypoint of entrypoints) {
13
+ try {
14
+ const res = await provider.callContract({
15
+ contractAddress,
16
+ entrypoint,
17
+ calldata: [account],
18
+ });
19
+ const out = Array.isArray(res?.result)
20
+ ? res.result
21
+ : Array.isArray(res)
22
+ ? res
23
+ : [];
24
+ if (out.length >= 2) {
25
+ return uint256HexToBigInt(out[0], out[1]);
26
+ }
27
+ if (out.length === 1) {
28
+ return BigInt(out[0]);
29
+ }
30
+ }
31
+ catch (e) {
32
+ lastErr = e;
33
+ }
34
+ }
35
+ throw new Error(`Failed to read balance on ${contractAddress} for ${account}` +
36
+ (lastErr instanceof Error ? ` (last error: ${lastErr.message})` : ''));
37
+ }
4
38
  export const getOwnBalance = async (env, params) => {
5
39
  try {
6
40
  const provider = env.provider;
7
41
  const account = env.account;
8
42
  const accountAddress = account.address;
9
- const { assetSymbol, assetAddress } = extractAssetInfo(params.asset);
10
- const token = await validateToken(provider, assetSymbol, assetAddress);
11
- const abi = await detectAbiType(token.address, provider);
12
- if (!accountAddress) {
43
+ if (!accountAddress)
13
44
  throw new Error('Wallet address not configured');
14
- }
15
- const tokenContract = new Contract(abi, token.address, provider);
16
- const balanceResponse = await tokenContract.balance_of(accountAddress);
17
- if (balanceResponse === undefined || balanceResponse === null) {
18
- throw new Error('No balance value received from contract');
19
- }
20
- const formattedBalance = formatBalance(balanceResponse, token.decimals);
45
+ const token = await validateToken(provider, params.asset.assetAddress, params.asset.assetSymbol);
46
+ const rawBalance = await getBalanceRaw(provider, token.address, accountAddress);
47
+ const formattedBalance = formatBalance(rawBalance, token.decimals);
21
48
  return {
22
49
  status: 'success',
23
50
  balance: formattedBalance,
24
- symbol: token.symbol,
25
51
  };
26
52
  }
27
53
  catch (error) {
@@ -34,22 +60,15 @@ export const getOwnBalance = async (env, params) => {
34
60
  export const getBalance = async (env, params) => {
35
61
  try {
36
62
  if (!params?.accountAddress) {
37
- throw new Error('Account address are required');
63
+ throw new Error('Account address is required');
38
64
  }
39
65
  const provider = env.provider;
40
- const { assetSymbol, assetAddress } = extractAssetInfo(params.asset);
41
- const token = await validateToken(provider, assetSymbol, assetAddress);
42
- const abi = await detectAbiType(token.address, provider);
43
- const tokenContract = new Contract(abi, token.address, provider);
44
- const balanceResponse = await tokenContract.balanceOf(params.accountAddress);
45
- const balanceValue = typeof balanceResponse === 'object' && 'balance' in balanceResponse
46
- ? balanceResponse.balance
47
- : balanceResponse;
48
- const formattedBalance = formatBalance(balanceValue, token.decimals);
66
+ const token = await validateToken(provider, params.asset.assetAddress, params.asset.assetSymbol);
67
+ const rawBalance = await getBalanceRaw(provider, token.address, params.accountAddress);
68
+ const formattedBalance = formatBalance(rawBalance, token.decimals);
49
69
  return {
50
70
  status: 'success',
51
71
  balance: formattedBalance,
52
- symbol: token.symbol,
53
72
  };
54
73
  }
55
74
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"getBalance.js","sourceRoot":"","sources":["../../src/tools/getBalance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getBalance.js","sourceRoot":"","sources":["../../src/tools/getBalance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { onchainRead } from '@kasarlabs/ask-starknet-core';
2
+ import { z } from 'zod';
3
+ import { getSymbolSchema } from '../schemas/index.js';
4
+ export declare const getSymbol: (env: onchainRead, params: z.infer<typeof getSymbolSchema>) => Promise<{
5
+ status: string;
6
+ symbol: string;
7
+ error?: undefined;
8
+ } | {
9
+ status: string;
10
+ error: string;
11
+ symbol?: undefined;
12
+ }>;