@spacesops/wdk-react-native-core 1.0.0-beta.65 → 1.0.0-beta.67

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.
@@ -34,6 +34,44 @@ describe('validation', () => {
34
34
  };
35
35
  expect(() => validateTokenConfigs(validConfigs)).not.toThrow();
36
36
  });
37
+ it('should accept non-EVM token contract addresses', () => {
38
+ const configs = {
39
+ ton: {
40
+ native: { symbol: 'TON', name: 'Toncoin', decimals: 9, address: null },
41
+ tokens: [
42
+ {
43
+ address: 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs',
44
+ symbol: 'USDT',
45
+ name: 'Tether USD',
46
+ decimals: 6,
47
+ },
48
+ ],
49
+ },
50
+ tron: {
51
+ native: { symbol: 'TRX', name: 'TRON', decimals: 6, address: null },
52
+ tokens: [
53
+ {
54
+ address: 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',
55
+ symbol: 'USDT',
56
+ name: 'Tether USD',
57
+ decimals: 6,
58
+ },
59
+ ],
60
+ },
61
+ solana: {
62
+ native: { symbol: 'SOL', name: 'Solana', decimals: 9, address: null },
63
+ tokens: [
64
+ {
65
+ address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
66
+ symbol: 'USDT',
67
+ name: 'Tether USD',
68
+ decimals: 6,
69
+ },
70
+ ],
71
+ },
72
+ };
73
+ expect(() => validateTokenConfigs(configs)).not.toThrow();
74
+ });
37
75
  it('should throw for invalid token configs', () => {
38
76
  expect(() => validateTokenConfigs({})).toThrow();
39
77
  expect(() => validateTokenConfigs(null)).toThrow();
@@ -100,6 +138,9 @@ describe('validation', () => {
100
138
  expect(() => validateTokenAddress(null)).not.toThrow();
101
139
  expect(() => validateTokenAddress('0x1234567890123456789012345678901234567890')).not.toThrow();
102
140
  expect(() => validateTokenAddress('0xABCDEFabcdef1234567890123456789012345678')).not.toThrow();
141
+ expect(() => validateTokenAddress('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t')).not.toThrow();
142
+ expect(() => validateTokenAddress('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB')).not.toThrow();
143
+ expect(() => validateTokenAddress('EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs')).not.toThrow();
103
144
  });
104
145
  it('should throw for invalid token addresses', () => {
105
146
  expect(() => validateTokenAddress('invalid')).toThrow();
@@ -1 +1 @@
1
- {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/validation.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/validation.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAG/B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,YAAY,GAAmB;gBACnC,QAAQ,EAAE;oBACR,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,UAAU;iBACvB;aACF,CAAA;YACD,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAClE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,EAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YACpE,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,IAAiC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YACjF,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,EAA+B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACjF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,YAAY,GAAiB;gBACjC,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,MAAM,EAAE,KAAK;wBACb,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,EAAE;wBACZ,OAAO,EAAE,IAAI;qBACd;oBACD,MAAM,EAAE,EAAE;iBACX;aACF,CAAA;YACD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAChE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,OAAO,GAAiB;gBAC5B,GAAG,EAAE;oBACH,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;oBACtE,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,kDAAkD;4BAC3D,MAAM,EAAE,MAAM;4BACd,IAAI,EAAE,YAAY;4BAClB,QAAQ,EAAE,CAAC;yBACZ;qBACF;iBACF;gBACD,IAAI,EAAE;oBACJ,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;oBACnE,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,oCAAoC;4BAC7C,MAAM,EAAE,MAAM;4BACd,IAAI,EAAE,YAAY;4BAClB,QAAQ,EAAE,CAAC;yBACZ;qBACF;iBACF;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;oBACrE,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,8CAA8C;4BACvD,MAAM,EAAE,MAAM;4BACd,IAAI,EAAE,YAAY;4BAClB,QAAQ,EAAE,CAAC;yBACZ;qBACF;iBACF;aACF,CAAA;YACD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC3D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAChE,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAA+B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAC7E,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAA6B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QAC7E,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAChE,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QACvE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAChE,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,MAA2B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACrF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,GAAG,GAAG;gBACV,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;gBAClB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;aACnB,CAAA;YACD,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAChG,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,GAAG,GAAG;gBACV,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;aACnB,CAAA;YACD,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAC1F,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAChF,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACtF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAClE,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC9D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAClE,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QAChE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACtD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,4CAA4C,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC9F,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,4CAA4C,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC9F,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,oCAAoC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACtF,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,8CAA8C,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAChG,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,kDAAkD,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QACtG,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YACvD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YACrD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,2CAA2C,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YACzF,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QAClD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACpD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -17,7 +17,7 @@ export type { UseWalletManagerResult, WalletInfo } from './hooks/useWalletManage
17
17
  export { useBalance, useBalancesForWallet, useBalancesForWallets, useRefreshBalance, balanceQueryKeys } from './hooks/useBalance';
18
18
  export type { AccountInfo } from './store/walletStore';
19
19
  export { validateNetworkConfigs, validateTokenConfigs, validateBalanceRefreshInterval, validateAccountIndex, validateTokenAddress, } from './utils/validation';
20
- export { networkConfigSchema, networkConfigsSchema, tokenConfigSchema, tokenConfigsSchema, walletAddressesSchema, walletBalancesSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, ethereumAddressSchema, sparkAddressSchema, bitcoinAddressSchema, addressSchema, } from './utils/schemas';
20
+ export { networkConfigSchema, networkConfigsSchema, tokenConfigSchema, tokenConfigsSchema, walletAddressesSchema, walletBalancesSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, ethereumAddressSchema, tokenContractAddressSchema, sparkAddressSchema, bitcoinAddressSchema, addressSchema, } from './utils/schemas';
21
21
  export { isNetworkConfigs, isTokenConfigs, isEthereumAddress, isValidAccountIndex, isValidNetworkName, } from './utils/typeGuards';
22
22
  export { WorkletLifecycleService } from './services/workletLifecycleService';
23
23
  export { AddressService } from './services/addressService';
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ export { useBalance, useBalancesForWallet, useBalancesForWallets, useRefreshBala
16
16
  // Validation Utilities (for validating configs before use)
17
17
  export { validateNetworkConfigs, validateTokenConfigs, validateBalanceRefreshInterval, validateAccountIndex, validateTokenAddress, } from './utils/validation';
18
18
  // Zod Schemas (for runtime validation)
19
- export { networkConfigSchema, networkConfigsSchema, tokenConfigSchema, tokenConfigsSchema, walletAddressesSchema, walletBalancesSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, ethereumAddressSchema, sparkAddressSchema, bitcoinAddressSchema, addressSchema, } from './utils/schemas';
19
+ export { networkConfigSchema, networkConfigsSchema, tokenConfigSchema, tokenConfigsSchema, walletAddressesSchema, walletBalancesSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, ethereumAddressSchema, tokenContractAddressSchema, sparkAddressSchema, bitcoinAddressSchema, addressSchema, } from './utils/schemas';
20
20
  // Type Guards (for runtime type checking)
21
21
  export { isNetworkConfigs, isTokenConfigs, isEthereumAddress, isValidAccountIndex, isValidNetworkName, } from './utils/typeGuards';
22
22
  // Services
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7D,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,qBAAqB;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGjI,2DAA2D;AAC3D,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAE3B,uCAAuC;AACvC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,0CAA0C;AAC1C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAE3B,WAAW;AACX,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAE1E,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACnG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAIxG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEhE,+BAA+B;AAC/B,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7D,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,qBAAqB;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGjI,2DAA2D;AAC3D,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAE3B,uCAAuC;AACvC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,0CAA0C;AAC1C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAE3B,WAAW;AACX,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAE1E,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACnG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAIxG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEhE,+BAA+B;AAC/B,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,6BAA6B,CAAA"}
@@ -9,6 +9,11 @@ import { z } from 'zod';
9
9
  * Ethereum address schema (0x followed by 40 hex characters)
10
10
  */
11
11
  export declare const ethereumAddressSchema: z.ZodString;
12
+ /**
13
+ * Token contract address schema — EVM, TON, Tron, Solana, and other worklet-supported formats.
14
+ * Wallet receive addresses use {@link addressSchema}; token mint/contract IDs are chain-specific.
15
+ */
16
+ export declare const tokenContractAddressSchema: z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>;
12
17
  /**
13
18
  * Spark address schema (Bech32 format: spark1/sparkt1/sparkrt1 followed by base32 characters)
14
19
  */
@@ -108,7 +113,7 @@ export declare const tokenConfigSchema: z.ZodObject<{
108
113
  symbol: z.ZodString;
109
114
  name: z.ZodString;
110
115
  decimals: z.ZodNumber;
111
- address: z.ZodUnion<[z.ZodString, z.ZodNull]>;
116
+ address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
112
117
  }, "strip", z.ZodTypeAny, {
113
118
  symbol: string;
114
119
  name: string;
@@ -128,7 +133,7 @@ export declare const networkTokensSchema: z.ZodObject<{
128
133
  symbol: z.ZodString;
129
134
  name: z.ZodString;
130
135
  decimals: z.ZodNumber;
131
- address: z.ZodUnion<[z.ZodString, z.ZodNull]>;
136
+ address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
132
137
  }, "strip", z.ZodTypeAny, {
133
138
  symbol: string;
134
139
  name: string;
@@ -144,7 +149,7 @@ export declare const networkTokensSchema: z.ZodObject<{
144
149
  symbol: z.ZodString;
145
150
  name: z.ZodString;
146
151
  decimals: z.ZodNumber;
147
- address: z.ZodUnion<[z.ZodString, z.ZodNull]>;
152
+ address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
148
153
  }, "strip", z.ZodTypeAny, {
149
154
  symbol: string;
150
155
  name: string;
@@ -191,7 +196,7 @@ export declare const tokenConfigsSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z
191
196
  symbol: z.ZodString;
192
197
  name: z.ZodString;
193
198
  decimals: z.ZodNumber;
194
- address: z.ZodUnion<[z.ZodString, z.ZodNull]>;
199
+ address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
195
200
  }, "strip", z.ZodTypeAny, {
196
201
  symbol: string;
197
202
  name: string;
@@ -207,7 +212,7 @@ export declare const tokenConfigsSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z
207
212
  symbol: z.ZodString;
208
213
  name: z.ZodString;
209
214
  decimals: z.ZodNumber;
210
- address: z.ZodUnion<[z.ZodString, z.ZodNull]>;
215
+ address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
211
216
  }, "strip", z.ZodTypeAny, {
212
217
  symbol: string;
213
218
  name: string;
@@ -306,7 +311,7 @@ export declare const balanceFetchResultSchema: z.ZodObject<{
306
311
  success: z.ZodBoolean;
307
312
  network: z.ZodString;
308
313
  accountIndex: z.ZodNumber;
309
- tokenAddress: z.ZodUnion<[z.ZodString, z.ZodNull]>;
314
+ tokenAddress: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
310
315
  balance: z.ZodUnion<[z.ZodString, z.ZodNull]>;
311
316
  error: z.ZodOptional<z.ZodString>;
312
317
  }, "strip", z.ZodTypeAny, {
@@ -11,6 +11,22 @@ import { z } from 'zod';
11
11
  export const ethereumAddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/, {
12
12
  message: 'Must be a valid Ethereum address (0x followed by 40 hex characters)',
13
13
  });
14
+ /**
15
+ * Token contract address schema — EVM, TON, Tron, Solana, and other worklet-supported formats.
16
+ * Wallet receive addresses use {@link addressSchema}; token mint/contract IDs are chain-specific.
17
+ */
18
+ export const tokenContractAddressSchema = z.union([
19
+ ethereumAddressSchema,
20
+ z.string().regex(/^T[1-9A-HJ-NP-Za-km-z]{33}$/, {
21
+ message: 'Must be a valid Tron token contract address',
22
+ }),
23
+ z.string().regex(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/, {
24
+ message: 'Must be a valid Solana token mint address',
25
+ }),
26
+ z.string().regex(/^(EQ|UQ)[A-Za-z0-9_-]{46}$/, {
27
+ message: 'Must be a valid TON jetton master address',
28
+ }),
29
+ ]);
14
30
  /**
15
31
  * Spark address schema (Bech32 format: spark1/sparkt1/sparkrt1 followed by base32 characters)
16
32
  */
@@ -55,7 +71,7 @@ export const tokenConfigSchema = z.object({
55
71
  symbol: z.string().min(1),
56
72
  name: z.string().min(1),
57
73
  decimals: z.number().int().min(0).max(18),
58
- address: z.union([ethereumAddressSchema, z.null()]),
74
+ address: z.union([tokenContractAddressSchema, z.null()]),
59
75
  });
60
76
  /**
61
77
  * Network tokens schema
@@ -120,7 +136,7 @@ export const balanceFetchResultSchema = z.object({
120
136
  success: z.boolean(),
121
137
  network: networkNameSchema,
122
138
  accountIndex: accountIndexSchema,
123
- tokenAddress: z.union([ethereumAddressSchema, z.null()]),
139
+ tokenAddress: z.union([tokenContractAddressSchema, z.null()]),
124
140
  balance: z.union([balanceStringSchema, z.null()]),
125
141
  error: z.string().optional(),
126
142
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Core Type Definitions
3
+ *
4
+ * All network, token, and wallet type definitions for the WDK React Native Core library.
5
+ */
6
+ export {};
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Zod Schemas for Runtime Validation
3
+ *
4
+ * Provides Zod schemas for all WDK types to replace manual if/else type guards.
5
+ * These schemas provide better error messages and are easier to maintain.
6
+ */
7
+ import { z } from 'zod';
8
+ /**
9
+ * Ethereum address schema (0x followed by 40 hex characters)
10
+ */
11
+ export const ethereumAddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/, {
12
+ message: 'Must be a valid Ethereum address (0x followed by 40 hex characters)',
13
+ });
14
+ /**
15
+ * Token contract address schema — EVM, TON, Tron, Solana, and other worklet-supported formats.
16
+ * Wallet receive addresses use {@link addressSchema}; token mint/contract IDs are chain-specific.
17
+ */
18
+ export const tokenContractAddressSchema = z.union([
19
+ ethereumAddressSchema,
20
+ z.string().regex(/^T[1-9A-HJ-NP-Za-km-z]{33}$/, {
21
+ message: 'Must be a valid Tron token contract address',
22
+ }),
23
+ z.string().regex(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/, {
24
+ message: 'Must be a valid Solana token mint address',
25
+ }),
26
+ z.string().regex(/^(EQ|UQ)[A-Za-z0-9_-]{46}$/, {
27
+ message: 'Must be a valid TON jetton master address',
28
+ }),
29
+ ]);
30
+ /**
31
+ * Spark address schema (Bech32 format: spark1/sparkt1/sparkrt1 followed by base32 characters)
32
+ */
33
+ export const sparkAddressSchema = z.string().regex(/^spark(1|t1|rt1|test1)[a-z0-9]+$/, {
34
+ message: 'Must be a valid Spark address (spark1/sparkt1/sparkrt1 followed by base32 characters)',
35
+ }).min(14).max(90);
36
+ /**
37
+ * Bitcoin address schema — mainnet/testnet/regtest bech32 (bc1/tb1/bcrt1) and legacy Base58.
38
+ */
39
+ export const bitcoinAddressSchema = z.string().regex(/^(bc1[qp][a-z0-9]{11,71}|tb1[qp][a-z0-9]{11,71}|bcrt1[qp][a-z0-9]{11,71}|[13][a-km-zA-HJ-NP-Z1-9]{25,34}|[mn2][a-km-zA-HJ-NP-Z1-9]{25,34})$/, {
40
+ message: 'Must be a valid Bitcoin address (bech32 bc1/tb1/bcrt1 or legacy Base58)',
41
+ });
42
+ /**
43
+ * Address schema (Ethereum, Spark, or Bitcoin)
44
+ */
45
+ export const addressSchema = z.union([ethereumAddressSchema, sparkAddressSchema, bitcoinAddressSchema]);
46
+ /**
47
+ * Network configuration schema
48
+ */
49
+ export const networkConfigSchema = z.object({
50
+ chainId: z.number().int().positive(),
51
+ blockchain: z.string().min(1),
52
+ provider: z.string().min(1).optional(),
53
+ bundlerUrl: z.string().min(1).optional(),
54
+ paymasterUrl: z.string().min(1).optional(),
55
+ paymasterAddress: ethereumAddressSchema.optional(),
56
+ entryPointAddress: ethereumAddressSchema.optional(),
57
+ transferMaxFee: z.number().nonnegative().optional(),
58
+ });
59
+ /**
60
+ * Network configurations schema
61
+ */
62
+ export const networkConfigsSchema = z.record(z.string().regex(/^[a-zA-Z0-9_-]+$/, {
63
+ message: 'Network name must contain only alphanumeric characters, hyphens, and underscores',
64
+ }), networkConfigSchema).refine((configs) => Object.keys(configs).length > 0, {
65
+ message: 'NetworkConfigs must contain at least one network',
66
+ });
67
+ /**
68
+ * Token configuration schema
69
+ */
70
+ export const tokenConfigSchema = z.object({
71
+ symbol: z.string().min(1),
72
+ name: z.string().min(1),
73
+ decimals: z.number().int().min(0).max(18),
74
+ address: z.union([tokenContractAddressSchema, z.null()]),
75
+ });
76
+ /**
77
+ * Network tokens schema
78
+ */
79
+ export const networkTokensSchema = z.object({
80
+ native: tokenConfigSchema,
81
+ tokens: z.array(tokenConfigSchema),
82
+ });
83
+ /**
84
+ * Token configurations schema
85
+ */
86
+ export const tokenConfigsSchema = z.record(z.string().min(1), networkTokensSchema).refine((configs) => Object.keys(configs).length > 0, {
87
+ message: 'TokenConfigs must contain at least one network',
88
+ });
89
+ /**
90
+ * Account index schema
91
+ */
92
+ export const accountIndexSchema = z.number().int().nonnegative();
93
+ /**
94
+ * Network name schema
95
+ */
96
+ export const networkNameSchema = z.string().regex(/^[a-zA-Z0-9_-]+$/, {
97
+ message: 'Network name must contain only alphanumeric characters, hyphens, and underscores',
98
+ }).min(1);
99
+ /**
100
+ * Balance string schema (valid number string)
101
+ */
102
+ export const balanceStringSchema = z.string().regex(/^-?\d+(\.\d+)?$/, {
103
+ message: 'Balance must be a valid number string',
104
+ });
105
+ /**
106
+ * Wallet addresses schema
107
+ * Maps network -> accountIndex -> address
108
+ */
109
+ export const walletAddressesSchema = z.record(networkNameSchema, z.record(z.string().transform((val) => {
110
+ const num = parseInt(val, 10);
111
+ if (isNaN(num) || num < 0) {
112
+ throw new Error('Account index must be a non-negative integer');
113
+ }
114
+ return num;
115
+ }), addressSchema));
116
+ /**
117
+ * Wallet balances schema
118
+ * Maps network -> accountIndex -> tokenAddress -> balance
119
+ */
120
+ export const walletBalancesSchema = z.record(networkNameSchema, z.record(z.string().transform((val) => {
121
+ const num = parseInt(val, 10);
122
+ if (isNaN(num) || num < 0) {
123
+ throw new Error('Account index must be a non-negative integer');
124
+ }
125
+ return num;
126
+ }), z.record(z.string(), balanceStringSchema)));
127
+ /**
128
+ * Balance loading states schema
129
+ * Maps "network-accountIndex-tokenAddress" -> boolean
130
+ */
131
+ export const balanceLoadingStatesSchema = z.record(z.string(), z.boolean());
132
+ /**
133
+ * Balance fetch result schema
134
+ */
135
+ export const balanceFetchResultSchema = z.object({
136
+ success: z.boolean(),
137
+ network: networkNameSchema,
138
+ accountIndex: accountIndexSchema,
139
+ tokenAddress: z.union([tokenContractAddressSchema, z.null()]),
140
+ balance: z.union([balanceStringSchema, z.null()]),
141
+ error: z.string().optional(),
142
+ });
143
+ /**
144
+ * Wallet schema
145
+ */
146
+ export const walletSchema = z.object({
147
+ accountIndex: accountIndexSchema,
148
+ identifier: z.string().min(1),
149
+ name: z.string().min(1),
150
+ createdAt: z.number().int().nonnegative(),
151
+ updatedAt: z.number().int().nonnegative(),
152
+ });
153
+ /**
154
+ * Worklet response schemas for runtime validation
155
+ */
156
+ export const workletResponseSchema = z.object({
157
+ result: z.string(),
158
+ error: z.string().optional(),
159
+ });
160
+ /**
161
+ * Balance response schema (numeric string)
162
+ */
163
+ export const balanceResponseSchema = z.string().regex(/^\d+$/, {
164
+ message: 'Balance must be a numeric string',
165
+ });
166
+ /**
167
+ * Account method response schema (union of possible return types)
168
+ */
169
+ export const accountMethodResponseSchema = z.union([
170
+ balanceResponseSchema,
171
+ z.string(), // For addresses
172
+ z.object({}).passthrough(), // For other responses (objects)
173
+ ]);
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Validation utilities for WDK provider props and inputs
3
+ *
4
+ * These functions throw errors for invalid inputs.
5
+ * Uses Zod schemas for validation with better error messages.
6
+ * For type guards (boolean returns), see typeGuards.ts
7
+ */
8
+ import { z } from 'zod';
9
+ import { networkConfigsSchema, tokenConfigsSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, tokenContractAddressSchema, } from './schemas';
10
+ /**
11
+ * Extract error message from Zod error
12
+ */
13
+ function getZodErrorMessage(error) {
14
+ if (error instanceof z.ZodError) {
15
+ // Get the first error message for simplicity
16
+ const firstIssue = error.issues[0];
17
+ if (firstIssue) {
18
+ return firstIssue.message;
19
+ }
20
+ return 'Validation failed';
21
+ }
22
+ if (error instanceof Error) {
23
+ return error.message;
24
+ }
25
+ return String(error);
26
+ }
27
+ /**
28
+ * Validate network configuration
29
+ */
30
+ export function validateNetworkConfigs(networkConfigs) {
31
+ try {
32
+ networkConfigsSchema.parse(networkConfigs);
33
+ }
34
+ catch (error) {
35
+ throw new Error(`Invalid networkConfigs: ${getZodErrorMessage(error)}`);
36
+ }
37
+ }
38
+ /**
39
+ * Validate token configuration
40
+ */
41
+ export function validateTokenConfigs(tokenConfigs) {
42
+ try {
43
+ tokenConfigsSchema.parse(tokenConfigs);
44
+ }
45
+ catch (error) {
46
+ throw new Error(`Invalid tokenConfigs: ${getZodErrorMessage(error)}`);
47
+ }
48
+ }
49
+ /**
50
+ * Validate balance refresh interval
51
+ */
52
+ export function validateBalanceRefreshInterval(interval) {
53
+ if (interval !== undefined) {
54
+ if (typeof interval !== 'number') {
55
+ throw new Error('balanceRefreshInterval must be a number');
56
+ }
57
+ if (interval < 0) {
58
+ throw new Error('balanceRefreshInterval must be a non-negative number');
59
+ }
60
+ if (!Number.isFinite(interval)) {
61
+ throw new Error('balanceRefreshInterval must be a finite number');
62
+ }
63
+ }
64
+ }
65
+ /**
66
+ * Validate that an object has required methods
67
+ *
68
+ * @param obj - Object to validate
69
+ * @param requiredMethods - Array of required method names
70
+ * @param objectName - Name of the object for error messages
71
+ */
72
+ export function validateRequiredMethods(obj, requiredMethods, objectName) {
73
+ if (!obj || typeof obj !== 'object') {
74
+ throw new Error(`${objectName} must be an object`);
75
+ }
76
+ for (const methodName of requiredMethods) {
77
+ if (typeof obj[methodName] !== 'function') {
78
+ throw new Error(`${objectName} must have a ${methodName} method`);
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * Validate account index
84
+ */
85
+ export function validateAccountIndex(accountIndex) {
86
+ try {
87
+ accountIndexSchema.parse(accountIndex);
88
+ }
89
+ catch (error) {
90
+ const message = getZodErrorMessage(error);
91
+ throw new Error(`Invalid accountIndex: ${message}`);
92
+ }
93
+ }
94
+ /**
95
+ * Validate network name
96
+ */
97
+ export function validateNetworkName(network) {
98
+ try {
99
+ networkNameSchema.parse(network);
100
+ }
101
+ catch (error) {
102
+ const message = getZodErrorMessage(error);
103
+ // Provide a fallback message if Zod error doesn't have a clear message
104
+ if (message === 'Validation failed' || !message) {
105
+ throw new Error('network must be a non-empty string containing only alphanumeric characters, hyphens, and underscores');
106
+ }
107
+ throw new Error(`Invalid network name: ${message}`);
108
+ }
109
+ }
110
+ /**
111
+ * Validate token address (can be null for native tokens)
112
+ */
113
+ export function validateTokenAddress(tokenAddress) {
114
+ if (tokenAddress === null) {
115
+ return;
116
+ }
117
+ try {
118
+ tokenContractAddressSchema.parse(tokenAddress);
119
+ }
120
+ catch (error) {
121
+ const message = getZodErrorMessage(error);
122
+ throw new Error(`Invalid tokenAddress: ${message}`);
123
+ }
124
+ }
125
+ /**
126
+ * Validate balance string
127
+ */
128
+ export function validateBalance(balance) {
129
+ try {
130
+ balanceStringSchema.parse(balance);
131
+ }
132
+ catch (error) {
133
+ const message = getZodErrorMessage(error);
134
+ throw new Error(`Invalid balance: ${message}`);
135
+ }
136
+ }
137
+ /**
138
+ * Validate wallet parameters (network, accountIndex, optional tokenAddress)
139
+ * Convenience function to validate common wallet operation parameters
140
+ *
141
+ * @param network - Network name
142
+ * @param accountIndex - Account index
143
+ * @param tokenAddress - Optional token address (null for native tokens)
144
+ */
145
+ export function validateWalletParams(network, accountIndex, tokenAddress) {
146
+ validateNetworkName(network);
147
+ validateAccountIndex(accountIndex);
148
+ if (tokenAddress !== undefined) {
149
+ validateTokenAddress(tokenAddress);
150
+ }
151
+ }
@@ -6,7 +6,7 @@
6
6
  * For type guards (boolean returns), see typeGuards.ts
7
7
  */
8
8
  import { z } from 'zod';
9
- import { networkConfigsSchema, tokenConfigsSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, ethereumAddressSchema, } from './schemas';
9
+ import { networkConfigsSchema, tokenConfigsSchema, accountIndexSchema, networkNameSchema, balanceStringSchema, tokenContractAddressSchema, } from './schemas';
10
10
  /**
11
11
  * Extract error message from Zod error
12
12
  */
@@ -115,7 +115,7 @@ export function validateTokenAddress(tokenAddress) {
115
115
  return;
116
116
  }
117
117
  try {
118
- ethereumAddressSchema.parse(tokenAddress);
118
+ tokenContractAddressSchema.parse(tokenAddress);
119
119
  }
120
120
  catch (error) {
121
121
  const message = getZodErrorMessage(error);
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spacesops/wdk-react-native-core",
3
- "version": "1.0.0-beta.65",
3
+ "version": "1.0.0-beta.67",
4
4
  "description": "Core functionality for React Native wallets - wallet management, balance fetching, and worklet operations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,6 +13,7 @@ import {
13
13
  isValidAccountIndex,
14
14
  isValidNetworkName,
15
15
  isValidBalanceString,
16
+ isValidAddress,
16
17
  } from '../../utils/typeGuards'
17
18
  import type { NetworkConfig, NetworkConfigs, TokenConfig, TokenConfigs } from '../../types'
18
19
 
@@ -160,6 +161,14 @@ describe('typeGuards', () => {
160
161
  })
161
162
  })
162
163
 
164
+ describe('isValidAddress', () => {
165
+ it('should accept TON, Tron, and Solana wallet addresses', () => {
166
+ expect(isValidAddress('UQCt4XDZ_rgMu14lE5ENox6yqHxx3c9df-gHLynhEEKbTRV0')).toBe(true)
167
+ expect(isValidAddress('TVKDsaESudgCQReXPNvStw2n2BXnmodyeC')).toBe(true)
168
+ expect(isValidAddress('Ed9f9Koh6rqMvFXccVJp5bNuxFs8rYdbVibW9JXRskLU')).toBe(true)
169
+ })
170
+ })
171
+
163
172
  describe('isValidAccountIndex', () => {
164
173
  it('should return true for valid account indices', () => {
165
174
  expect(isValidAccountIndex(0)).toBe(true)
@@ -49,6 +49,45 @@ describe('validation', () => {
49
49
  expect(() => validateTokenConfigs(validConfigs)).not.toThrow()
50
50
  })
51
51
 
52
+ it('should accept non-EVM token contract addresses', () => {
53
+ const configs: TokenConfigs = {
54
+ ton: {
55
+ native: { symbol: 'TON', name: 'Toncoin', decimals: 9, address: null },
56
+ tokens: [
57
+ {
58
+ address: 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs',
59
+ symbol: 'USDT',
60
+ name: 'Tether USD',
61
+ decimals: 6,
62
+ },
63
+ ],
64
+ },
65
+ tron: {
66
+ native: { symbol: 'TRX', name: 'TRON', decimals: 6, address: null },
67
+ tokens: [
68
+ {
69
+ address: 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',
70
+ symbol: 'USDT',
71
+ name: 'Tether USD',
72
+ decimals: 6,
73
+ },
74
+ ],
75
+ },
76
+ solana: {
77
+ native: { symbol: 'SOL', name: 'Solana', decimals: 9, address: null },
78
+ tokens: [
79
+ {
80
+ address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
81
+ symbol: 'USDT',
82
+ name: 'Tether USD',
83
+ decimals: 6,
84
+ },
85
+ ],
86
+ },
87
+ }
88
+ expect(() => validateTokenConfigs(configs)).not.toThrow()
89
+ })
90
+
52
91
  it('should throw for invalid token configs', () => {
53
92
  expect(() => validateTokenConfigs({} as TokenConfigs)).toThrow()
54
93
  expect(() => validateTokenConfigs(null as unknown as TokenConfigs)).toThrow()
@@ -124,6 +163,9 @@ describe('validation', () => {
124
163
  expect(() => validateTokenAddress(null)).not.toThrow()
125
164
  expect(() => validateTokenAddress('0x1234567890123456789012345678901234567890')).not.toThrow()
126
165
  expect(() => validateTokenAddress('0xABCDEFabcdef1234567890123456789012345678')).not.toThrow()
166
+ expect(() => validateTokenAddress('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t')).not.toThrow()
167
+ expect(() => validateTokenAddress('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB')).not.toThrow()
168
+ expect(() => validateTokenAddress('EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs')).not.toThrow()
127
169
  })
128
170
 
129
171
  it('should throw for invalid token addresses', () => {
package/src/index.ts CHANGED
@@ -61,6 +61,10 @@ export {
61
61
  networkNameSchema,
62
62
  balanceStringSchema,
63
63
  ethereumAddressSchema,
64
+ tokenContractAddressSchema,
65
+ tonAddressSchema,
66
+ tronAddressSchema,
67
+ solanaAddressSchema,
64
68
  sparkAddressSchema,
65
69
  bitcoinAddressSchema,
66
70
  addressSchema,
@@ -14,6 +14,23 @@ export const ethereumAddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/, {
14
14
  message: 'Must be a valid Ethereum address (0x followed by 40 hex characters)',
15
15
  })
16
16
 
17
+ /**
18
+ * Token contract address schema — EVM, TON, Tron, Solana, and other worklet-supported formats.
19
+ * Wallet receive addresses use {@link addressSchema}; token mint/contract IDs are chain-specific.
20
+ */
21
+ export const tokenContractAddressSchema = z.union([
22
+ ethereumAddressSchema,
23
+ z.string().regex(/^T[1-9A-HJ-NP-Za-km-z]{33}$/, {
24
+ message: 'Must be a valid Tron token contract address',
25
+ }),
26
+ z.string().regex(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/, {
27
+ message: 'Must be a valid Solana token mint address',
28
+ }),
29
+ z.string().regex(/^(EQ|UQ)[A-Za-z0-9_-]{46}$/, {
30
+ message: 'Must be a valid TON jetton master address',
31
+ }),
32
+ ])
33
+
17
34
  /**
18
35
  * Spark address schema (Bech32 format: spark1/sparkt1/sparkrt1 followed by base32 characters)
19
36
  */
@@ -32,9 +49,37 @@ export const bitcoinAddressSchema = z.string().regex(
32
49
  )
33
50
 
34
51
  /**
35
- * Address schema (Ethereum, Spark, or Bitcoin)
52
+ * TON user-friendly wallet address (EQ/UQ + base64url).
53
+ */
54
+ export const tonAddressSchema = z.string().regex(/^(EQ|UQ)[A-Za-z0-9_-]{46}$/, {
55
+ message: 'Must be a valid TON address (EQ/UQ user-friendly format)',
56
+ })
57
+
58
+ /**
59
+ * Tron Base58Check wallet address.
60
+ */
61
+ export const tronAddressSchema = z.string().regex(/^T[1-9A-HJ-NP-Za-km-z]{33}$/, {
62
+ message: 'Must be a valid Tron address',
63
+ })
64
+
65
+ /**
66
+ * Solana Base58 wallet address.
36
67
  */
37
- export const addressSchema = z.union([ethereumAddressSchema, sparkAddressSchema, bitcoinAddressSchema])
68
+ export const solanaAddressSchema = z.string().regex(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/, {
69
+ message: 'Must be a valid Solana address',
70
+ })
71
+
72
+ /**
73
+ * Address schema (Ethereum, Spark, Bitcoin, TON, Tron, or Solana)
74
+ */
75
+ export const addressSchema = z.union([
76
+ ethereumAddressSchema,
77
+ sparkAddressSchema,
78
+ bitcoinAddressSchema,
79
+ tonAddressSchema,
80
+ tronAddressSchema,
81
+ solanaAddressSchema,
82
+ ])
38
83
 
39
84
  /**
40
85
  * Network configuration schema
@@ -69,7 +114,7 @@ export const tokenConfigSchema = z.object({
69
114
  symbol: z.string().min(1),
70
115
  name: z.string().min(1),
71
116
  decimals: z.number().int().min(0).max(18),
72
- address: z.union([ethereumAddressSchema, z.null()]),
117
+ address: z.union([tokenContractAddressSchema, z.null()]),
73
118
  })
74
119
 
75
120
  /**
@@ -158,7 +203,7 @@ export const balanceFetchResultSchema = z.object({
158
203
  success: z.boolean(),
159
204
  network: networkNameSchema,
160
205
  accountIndex: accountIndexSchema,
161
- tokenAddress: z.union([ethereumAddressSchema, z.null()]),
206
+ tokenAddress: z.union([tokenContractAddressSchema, z.null()]),
162
207
  balance: z.union([balanceStringSchema, z.null()]),
163
208
  error: z.string().optional(),
164
209
  })
@@ -21,6 +21,7 @@ import {
21
21
  accountIndexSchema,
22
22
  networkNameSchema,
23
23
  balanceStringSchema,
24
+ addressSchema,
24
25
  } from './schemas'
25
26
  import type {
26
27
  NetworkConfig,
@@ -104,10 +105,10 @@ export function isBitcoinAddress(value: unknown): value is string {
104
105
  }
105
106
 
106
107
  /**
107
- * Type guard to check if a value is a valid address (Ethereum, Spark, or Bitcoin)
108
+ * Type guard to check if a value is a valid address (Ethereum, Spark, Bitcoin, TON, Tron, or Solana)
108
109
  */
109
110
  export function isValidAddress(value: unknown): value is string {
110
- return isEthereumAddress(value) || isSparkAddress(value) || isBitcoinAddress(value)
111
+ return addressSchema.safeParse(value).success
111
112
  }
112
113
 
113
114
  /**
@@ -13,7 +13,7 @@ import {
13
13
  accountIndexSchema,
14
14
  networkNameSchema,
15
15
  balanceStringSchema,
16
- ethereumAddressSchema,
16
+ tokenContractAddressSchema,
17
17
  } from './schemas'
18
18
  import type { NetworkConfigs, TokenConfigs } from '../types'
19
19
 
@@ -133,7 +133,7 @@ export function validateTokenAddress(tokenAddress: string | null): void {
133
133
  return
134
134
  }
135
135
  try {
136
- ethereumAddressSchema.parse(tokenAddress)
136
+ tokenContractAddressSchema.parse(tokenAddress)
137
137
  } catch (error) {
138
138
  const message = getZodErrorMessage(error)
139
139
  throw new Error(`Invalid tokenAddress: ${message}`)