@dappworks/kit 0.5.41 → 0.5.43

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 (85) hide show
  1. package/dist/{PromiseState-e64b3707.d.ts → PromiseState-8EAu4Zv4.d.mts} +1 -1
  2. package/dist/{StorageState-cfd942cb.d.ts → StorageState-qapaHguM.d.mts} +1 -1
  3. package/dist/aiem.d.mts +14 -15
  4. package/dist/aiem.mjs +5 -5
  5. package/dist/aiem.mjs.map +1 -1
  6. package/dist/{chunk-ISV4OEKJ.mjs → chunk-2B3FO5P6.mjs} +5 -5
  7. package/dist/chunk-2B3FO5P6.mjs.map +1 -0
  8. package/dist/{chunk-M5Y3VYMJ.mjs → chunk-6HA5WR5H.mjs} +9 -15
  9. package/dist/chunk-6HA5WR5H.mjs.map +1 -0
  10. package/dist/{chunk-FJHGIW3I.mjs → chunk-AFXQRBS6.mjs} +3 -3
  11. package/dist/chunk-AFXQRBS6.mjs.map +1 -0
  12. package/dist/chunk-GKAU4P5I.mjs +1 -1
  13. package/dist/chunk-GKAU4P5I.mjs.map +1 -1
  14. package/dist/{chunk-SL5OV6OR.mjs → chunk-GPPSD2BO.mjs} +5 -7
  15. package/dist/chunk-GPPSD2BO.mjs.map +1 -0
  16. package/dist/chunk-IMOLRP7I.mjs +1 -1
  17. package/dist/chunk-IMOLRP7I.mjs.map +1 -1
  18. package/dist/chunk-K7LFG5BA.mjs +2 -2
  19. package/dist/chunk-K7LFG5BA.mjs.map +1 -1
  20. package/dist/{chunk-3XIPR2M3.mjs → chunk-L5VZQRXB.mjs} +7 -8
  21. package/dist/chunk-L5VZQRXB.mjs.map +1 -0
  22. package/dist/{chunk-2N4HH4ZF.mjs → chunk-NCGC2KDE.mjs} +4 -6
  23. package/dist/chunk-NCGC2KDE.mjs.map +1 -0
  24. package/dist/chunk-ONVPCAMQ.mjs +1 -1
  25. package/dist/chunk-ONVPCAMQ.mjs.map +1 -1
  26. package/dist/{chunk-C5BPNLKH.mjs → chunk-TEVYTENF.mjs} +4 -4
  27. package/dist/chunk-TEVYTENF.mjs.map +1 -0
  28. package/dist/{chunk-4F33QAJ4.mjs → chunk-WNK4WSTE.mjs} +31 -56
  29. package/dist/chunk-WNK4WSTE.mjs.map +1 -0
  30. package/dist/{chunk-IDKGZ5T4.mjs → chunk-XSGTWROT.mjs} +8 -8
  31. package/dist/chunk-XSGTWROT.mjs.map +1 -0
  32. package/dist/{chunk-R4N52NI2.mjs → chunk-YBLCIJW4.mjs} +37 -31
  33. package/dist/chunk-YBLCIJW4.mjs.map +1 -0
  34. package/dist/{chunk-6F7H4PAA.mjs → chunk-YOSPWY5K.mjs} +2 -2
  35. package/dist/chunk-YOSPWY5K.mjs.map +1 -0
  36. package/dist/dev.d.mts +1 -1
  37. package/dist/dev.mjs +6 -8
  38. package/dist/dev.mjs.map +1 -1
  39. package/dist/experimental.d.mts +4 -4
  40. package/dist/experimental.mjs +7 -9
  41. package/dist/experimental.mjs.map +1 -1
  42. package/dist/form.d.mts +6 -6
  43. package/dist/form.mjs +16 -20
  44. package/dist/form.mjs.map +1 -1
  45. package/dist/{index-38be834f.d.ts → index-CUKoRIdy.d.mts} +1 -1
  46. package/dist/index.d.mts +5 -5
  47. package/dist/index.mjs +9 -9
  48. package/dist/index.mjs.map +1 -1
  49. package/dist/inspector.d.mts +1 -1
  50. package/dist/inspector.mjs +3 -4
  51. package/dist/inspector.mjs.map +1 -1
  52. package/dist/jsoncomponent.d.mts +5 -5
  53. package/dist/jsoncomponent.mjs +2 -2
  54. package/dist/jsoncomponent.mjs.map +1 -1
  55. package/dist/jsontable.d.mts +2 -2
  56. package/dist/jsontable.mjs +5 -5
  57. package/dist/jsontable.mjs.map +1 -1
  58. package/dist/metrics.d.mts +1 -1
  59. package/dist/metrics.mjs +6 -6
  60. package/dist/metrics.mjs.map +1 -1
  61. package/dist/plugins.d.mts +7 -7
  62. package/dist/plugins.mjs +6 -6
  63. package/dist/plugins.mjs.map +1 -1
  64. package/dist/{root-218afa4f.d.ts → root-BPMUmS6H.d.mts} +1 -1
  65. package/dist/ui.mjs +5 -6
  66. package/dist/ui.mjs.map +1 -1
  67. package/dist/utils.d.mts +105 -22
  68. package/dist/utils.mjs +4 -4
  69. package/dist/utils.mjs.map +1 -1
  70. package/dist/wallet.d.mts +6 -4
  71. package/dist/wallet.mjs +59 -17
  72. package/dist/wallet.mjs.map +1 -1
  73. package/package.json +4 -3
  74. package/dist/chunk-2N4HH4ZF.mjs.map +0 -1
  75. package/dist/chunk-3XIPR2M3.mjs.map +0 -1
  76. package/dist/chunk-4F33QAJ4.mjs.map +0 -1
  77. package/dist/chunk-6F7H4PAA.mjs.map +0 -1
  78. package/dist/chunk-C5BPNLKH.mjs.map +0 -1
  79. package/dist/chunk-FJHGIW3I.mjs.map +0 -1
  80. package/dist/chunk-IDKGZ5T4.mjs.map +0 -1
  81. package/dist/chunk-ISV4OEKJ.mjs.map +0 -1
  82. package/dist/chunk-M5Y3VYMJ.mjs.map +0 -1
  83. package/dist/chunk-R4N52NI2.mjs.map +0 -1
  84. package/dist/chunk-SL5OV6OR.mjs.map +0 -1
  85. /package/dist/{PaginationState-c19e621a.d.ts → PaginationState-Bmrrw0ky.d.mts} +0 -0
package/dist/utils.d.mts CHANGED
@@ -1,6 +1,7 @@
1
1
  import DataLoader from 'dataloader';
2
2
  import { Table } from 'dexie';
3
3
  import BigNumber from 'bignumber.js';
4
+ import * as lodash from 'lodash';
4
5
 
5
6
  declare class DexieCache {
6
7
  kv: Table<{
@@ -53,9 +54,10 @@ declare const cache: DexieCache;
53
54
 
54
55
  declare const helper: {
55
56
  env: {
56
- isIopayMobile: () => boolean;
57
- isBrowser: () => boolean;
58
- onBrowser(func: any): void;
57
+ isBrower: boolean;
58
+ isIopayMobile: boolean;
59
+ isPc(): boolean;
60
+ isInIframe(): boolean;
59
61
  };
60
62
  promise: {
61
63
  sleep(ms: any): Promise<unknown>;
@@ -124,25 +126,106 @@ declare const helper: {
124
126
  };
125
127
 
126
128
  declare const _: {
127
- throttle: any;
128
- debounce: any;
129
- each: any;
130
- flattenDeep: any;
131
- omitBy: any;
132
- isNil: any;
133
- keyBy: any;
134
- mergeWith: any;
135
- cloneDeep: any;
136
- groupBy: any;
137
- get: any;
138
- set: any;
139
- remove: any;
140
- merge: any;
141
- isEqual: any;
142
- uniqWith: any;
143
- orderBy: any;
144
- map: any;
145
- zip: any;
129
+ throttle: {
130
+ <T extends (...args: any) => any>(func: T, wait?: number, options?: lodash.ThrottleSettingsLeading): lodash.DebouncedFuncLeading<T>;
131
+ <T_1 extends (...args: any) => any>(func: T_1, wait?: number, options?: lodash.ThrottleSettings): lodash.DebouncedFunc<T_1>;
132
+ };
133
+ debounce: {
134
+ <T_2 extends (...args: any) => any>(func: T_2, wait: number, options: lodash.DebounceSettingsLeading): lodash.DebouncedFuncLeading<T_2>;
135
+ <T_3 extends (...args: any) => any>(func: T_3, wait?: number, options?: lodash.DebounceSettings): lodash.DebouncedFunc<T_3>;
136
+ };
137
+ each: {
138
+ <T_4>(collection: T_4[], iteratee?: lodash.ArrayIterator<T_4, any>): T_4[];
139
+ (collection: string, iteratee?: lodash.StringIterator<any>): string;
140
+ <T_5>(collection: lodash.List<T_5>, iteratee?: lodash.ListIterator<T_5, any>): lodash.List<T_5>;
141
+ <T_6 extends object>(collection: T_6, iteratee?: lodash.ObjectIterator<T_6, any>): T_6;
142
+ <T_7, TArray extends T_7[]>(collection: TArray & T_7[], iteratee?: lodash.ArrayIterator<T_7, any>): TArray;
143
+ <TString extends string>(collection: TString, iteratee?: lodash.StringIterator<any>): TString;
144
+ <T_8, TList extends lodash.List<T_8>>(collection: TList & lodash.List<T_8>, iteratee?: lodash.ListIterator<T_8, any>): TList;
145
+ <T_9 extends object>(collection: T_9, iteratee?: lodash.ObjectIterator<T_9, any>): T_9;
146
+ };
147
+ flattenDeep: <T_10>(array: lodash.ListOfRecursiveArraysOrValues<T_10>) => lodash.Flat<T_10>[];
148
+ omitBy: {
149
+ <T_11>(object: lodash.Dictionary<T_11>, predicate?: lodash.ValueKeyIteratee<T_11>): lodash.Dictionary<T_11>;
150
+ <T_12>(object: lodash.NumericDictionary<T_12>, predicate?: lodash.ValueKeyIteratee<T_12>): lodash.NumericDictionary<T_12>;
151
+ <T_13 extends object>(object: T_13, predicate: lodash.ValueKeyIteratee<T_13[keyof T_13]>): Partial<T_13>;
152
+ };
153
+ isNil: (value: any) => value is null;
154
+ keyBy: {
155
+ <T_14>(collection: lodash.List<T_14>, iteratee?: lodash.ValueIterateeCustom<T_14, lodash.PropertyName>): lodash.Dictionary<T_14>;
156
+ <T_15 extends object>(collection: T_15, iteratee?: lodash.ValueIterateeCustom<T_15[keyof T_15], lodash.PropertyName>): lodash.Dictionary<T_15[keyof T_15]>;
157
+ };
158
+ mergeWith: {
159
+ <TObject, TSource>(object: TObject, source: TSource, customizer: (value: any, srcValue: any, key: string, object: any, source: any, stack: any) => any): TObject & TSource;
160
+ <TObject_1, TSource1, TSource2>(object: TObject_1, source1: TSource1, source2: TSource2, customizer: (value: any, srcValue: any, key: string, object: any, source: any, stack: any) => any): TObject_1 & TSource1 & TSource2;
161
+ <TObject_2, TSource1_1, TSource2_1, TSource3>(object: TObject_2, source1: TSource1_1, source2: TSource2_1, source3: TSource3, customizer: (value: any, srcValue: any, key: string, object: any, source: any, stack: any) => any): TObject_2 & TSource1_1 & TSource2_1 & TSource3;
162
+ <TObject_3, TSource1_2, TSource2_2, TSource3_1, TSource4>(object: TObject_3, source1: TSource1_2, source2: TSource2_2, source3: TSource3_1, source4: TSource4, customizer: (value: any, srcValue: any, key: string, object: any, source: any, stack: any) => any): TObject_3 & TSource1_2 & TSource2_2 & TSource3_1 & TSource4;
163
+ (object: any, ...otherArgs: any[]): any;
164
+ };
165
+ cloneDeep: <T_16>(value: T_16) => T_16;
166
+ groupBy: {
167
+ <T_17>(collection: lodash.List<T_17>, iteratee?: lodash.ValueIteratee<T_17>): lodash.Dictionary<T_17[]>;
168
+ <T_18 extends object>(collection: T_18, iteratee?: lodash.ValueIteratee<T_18[keyof T_18]>): lodash.Dictionary<T_18[keyof T_18][]>;
169
+ };
170
+ get: {
171
+ <TObject_4 extends object, TKey extends keyof TObject_4>(object: TObject_4, path: TKey | [TKey]): TObject_4[TKey];
172
+ <TObject_5 extends object, TKey_1 extends keyof TObject_5>(object: TObject_5, path: TKey_1 | [TKey_1]): TObject_5[TKey_1];
173
+ <TObject_6 extends object, TKey_2 extends keyof TObject_6, TDefault>(object: TObject_6, path: TKey_2 | [TKey_2], defaultValue: TDefault): TDefault | Exclude<TObject_6[TKey_2], undefined>;
174
+ <TObject_7 extends object, TKey1 extends keyof TObject_7, TKey2 extends keyof TObject_7[TKey1]>(object: TObject_7, path: [TKey1, TKey2]): TObject_7[TKey1][TKey2];
175
+ <TObject_8 extends object, TKey1_1 extends keyof TObject_8, TKey2_1 extends keyof NonNullable<TObject_8[TKey1_1]>>(object: TObject_8, path: [TKey1_1, TKey2_1]): NonNullable<TObject_8[TKey1_1]>[TKey2_1];
176
+ <TObject_9 extends object, TKey1_2 extends keyof TObject_9, TKey2_2 extends keyof NonNullable<TObject_9[TKey1_2]>, TDefault_1>(object: TObject_9, path: [TKey1_2, TKey2_2], defaultValue: TDefault_1): TDefault_1 | Exclude<NonNullable<TObject_9[TKey1_2]>[TKey2_2], undefined>;
177
+ <TObject_10 extends object, TKey1_3 extends keyof TObject_10, TKey2_3 extends keyof TObject_10[TKey1_3], TKey3 extends keyof TObject_10[TKey1_3][TKey2_3]>(object: TObject_10, path: [TKey1_3, TKey2_3, TKey3]): TObject_10[TKey1_3][TKey2_3][TKey3];
178
+ <TObject_11 extends object, TKey1_4 extends keyof TObject_11, TKey2_4 extends keyof NonNullable<TObject_11[TKey1_4]>, TKey3_1 extends keyof NonNullable<NonNullable<TObject_11[TKey1_4]>[TKey2_4]>>(object: TObject_11, path: [TKey1_4, TKey2_4, TKey3_1]): NonNullable<NonNullable<TObject_11[TKey1_4]>[TKey2_4]>[TKey3_1];
179
+ <TObject_12 extends object, TKey1_5 extends keyof TObject_12, TKey2_5 extends keyof NonNullable<TObject_12[TKey1_5]>, TKey3_2 extends keyof NonNullable<NonNullable<TObject_12[TKey1_5]>[TKey2_5]>, TDefault_2>(object: TObject_12, path: [TKey1_5, TKey2_5, TKey3_2], defaultValue: TDefault_2): TDefault_2 | Exclude<NonNullable<NonNullable<TObject_12[TKey1_5]>[TKey2_5]>[TKey3_2], undefined>;
180
+ <TObject_13 extends object, TKey1_6 extends keyof TObject_13, TKey2_6 extends keyof TObject_13[TKey1_6], TKey3_3 extends keyof TObject_13[TKey1_6][TKey2_6], TKey4 extends keyof TObject_13[TKey1_6][TKey2_6][TKey3_3]>(object: TObject_13, path: [TKey1_6, TKey2_6, TKey3_3, TKey4]): TObject_13[TKey1_6][TKey2_6][TKey3_3][TKey4];
181
+ <TObject_14 extends object, TKey1_7 extends keyof TObject_14, TKey2_7 extends keyof NonNullable<TObject_14[TKey1_7]>, TKey3_4 extends keyof NonNullable<NonNullable<TObject_14[TKey1_7]>[TKey2_7]>, TKey4_1 extends keyof NonNullable<NonNullable<NonNullable<TObject_14[TKey1_7]>[TKey2_7]>[TKey3_4]>>(object: TObject_14, path: [TKey1_7, TKey2_7, TKey3_4, TKey4_1]): NonNullable<NonNullable<NonNullable<TObject_14[TKey1_7]>[TKey2_7]>[TKey3_4]>[TKey4_1];
182
+ <TObject_15 extends object, TKey1_8 extends keyof TObject_15, TKey2_8 extends keyof NonNullable<TObject_15[TKey1_8]>, TKey3_5 extends keyof NonNullable<NonNullable<TObject_15[TKey1_8]>[TKey2_8]>, TKey4_2 extends keyof NonNullable<NonNullable<NonNullable<TObject_15[TKey1_8]>[TKey2_8]>[TKey3_5]>, TDefault_3>(object: TObject_15, path: [TKey1_8, TKey2_8, TKey3_5, TKey4_2], defaultValue: TDefault_3): TDefault_3 | Exclude<NonNullable<NonNullable<NonNullable<TObject_15[TKey1_8]>[TKey2_8]>[TKey3_5]>[TKey4_2], undefined>;
183
+ <T_19>(object: lodash.NumericDictionary<T_19>, path: number): T_19;
184
+ <T_20>(object: lodash.NumericDictionary<T_20>, path: number): T_20;
185
+ <T_21, TDefault_4>(object: lodash.NumericDictionary<T_21>, path: number, defaultValue: TDefault_4): T_21 | TDefault_4;
186
+ <TDefault_5>(object: null, path: lodash.PropertyPath, defaultValue: TDefault_5): TDefault_5;
187
+ (object: null, path: lodash.PropertyPath): undefined;
188
+ <TObject_16, TPath extends string>(data: TObject_16, path: TPath): string extends TPath ? any : lodash.GetFieldType<TObject_16, TPath, "Path">;
189
+ <TObject_17, TPath_1 extends string, TDefault_6 = lodash.GetFieldType<TObject_17, TPath_1, "Path">>(data: TObject_17, path: TPath_1, defaultValue: TDefault_6): TDefault_6 | Exclude<lodash.GetFieldType<TObject_17, TPath_1, "Path">, null>;
190
+ (object: any, path: lodash.PropertyPath, defaultValue?: any): any;
191
+ };
192
+ set: {
193
+ <T_22 extends object>(object: T_22, path: lodash.PropertyPath, value: any): T_22;
194
+ <TResult>(object: object, path: lodash.PropertyPath, value: any): TResult;
195
+ };
196
+ remove: <TList_1 extends lodash.MutableList<any>>(array: ((<X>() => X extends { [K in keyof TList_1]: TList_1[K]; } ? 1 : 2) extends <X_1>() => X_1 extends { -readonly [K_1 in keyof TList_1]: TList_1[K_1]; } ? 1 : 2 ? true : false) extends true ? TList_1 : never, predicate?: lodash.ListIteratee<TList_1[0]>) => TList_1[0][];
197
+ merge: {
198
+ <TObject_18, TSource_1>(object: TObject_18, source: TSource_1): TObject_18 & TSource_1;
199
+ <TObject_19, TSource1_3, TSource2_3>(object: TObject_19, source1: TSource1_3, source2: TSource2_3): TObject_19 & TSource1_3 & TSource2_3;
200
+ <TObject_20, TSource1_4, TSource2_4, TSource3_2>(object: TObject_20, source1: TSource1_4, source2: TSource2_4, source3: TSource3_2): TObject_20 & TSource1_4 & TSource2_4 & TSource3_2;
201
+ <TObject_21, TSource1_5, TSource2_5, TSource3_3, TSource4_1>(object: TObject_21, source1: TSource1_5, source2: TSource2_5, source3: TSource3_3, source4: TSource4_1): TObject_21 & TSource1_5 & TSource2_5 & TSource3_3 & TSource4_1;
202
+ (object: any, ...otherArgs: any[]): any;
203
+ };
204
+ isEqual: (value: any, other: any) => boolean;
205
+ uniqWith: <T_23>(array: lodash.List<T_23>, comparator?: lodash.Comparator<T_23>) => T_23[];
206
+ orderBy: {
207
+ <T_24>(collection: lodash.List<T_24>, iteratees?: lodash.Many<lodash.ListIterator<T_24, unknown>>, orders?: lodash.Many<boolean | "desc" | "asc">): T_24[];
208
+ <T_25>(collection: lodash.List<T_25>, iteratees?: lodash.Many<lodash.ListIteratee<T_25>>, orders?: lodash.Many<boolean | "desc" | "asc">): T_25[];
209
+ <T_26 extends object>(collection: T_26, iteratees?: lodash.Many<lodash.ObjectIterator<T_26, unknown>>, orders?: lodash.Many<boolean | "desc" | "asc">): T_26[keyof T_26][];
210
+ <T_27 extends object>(collection: T_27, iteratees?: lodash.Many<lodash.ObjectIteratee<T_27>>, orders?: lodash.Many<boolean | "desc" | "asc">): T_27[keyof T_27][];
211
+ };
212
+ map: {
213
+ <T_28 extends readonly [unknown, ...unknown[]], TResult_1>(collection: T_28, iteratee: lodash.TupleIterator<T_28, TResult_1>): { [K_2 in keyof T_28]: TResult_1; };
214
+ <T_29, TResult_2>(collection: T_29[], iteratee: lodash.ArrayIterator<T_29, TResult_2>): TResult_2[];
215
+ <T_30, TResult_3>(collection: lodash.List<T_30>, iteratee: lodash.ListIterator<T_30, TResult_3>): TResult_3[];
216
+ <T_31>(collection: lodash.Dictionary<T_31> | lodash.NumericDictionary<T_31>): T_31[];
217
+ <T_32 extends object, TResult_4>(collection: T_32, iteratee: lodash.ObjectIterator<T_32, TResult_4>): TResult_4[];
218
+ <T_33, K_3 extends keyof T_33>(collection: lodash.Dictionary<T_33> | lodash.NumericDictionary<T_33>, iteratee: K_3): T_33[K_3][];
219
+ <T_34>(collection: lodash.Dictionary<T_34> | lodash.NumericDictionary<T_34>, iteratee?: string): any[];
220
+ <T_35>(collection: lodash.Dictionary<T_35> | lodash.NumericDictionary<T_35>, iteratee?: object): boolean[];
221
+ };
222
+ zip: {
223
+ <T1, T2>(arrays1: lodash.List<T1>, arrays2: lodash.List<T2>): [T1, T2][];
224
+ <T1_1, T2_1, T3>(arrays1: lodash.List<T1_1>, arrays2: lodash.List<T2_1>, arrays3: lodash.List<T3>): [T1_1, T2_1, T3][];
225
+ <T1_2, T2_2, T3_1, T4>(arrays1: lodash.List<T1_2>, arrays2: lodash.List<T2_2>, arrays3: lodash.List<T3_1>, arrays4: lodash.List<T4>): [T1_2, T2_2, T3_1, T4][];
226
+ <T1_3, T2_3, T3_2, T4_1, T5>(arrays1: lodash.List<T1_3>, arrays2: lodash.List<T2_3>, arrays3: lodash.List<T3_2>, arrays4: lodash.List<T4_1>, arrays5: lodash.List<T5>): [T1_3, T2_3, T3_2, T4_1, T5][];
227
+ <T_36>(...arrays: lodash.List<T_36>[]): T_36[][];
228
+ };
146
229
  };
147
230
 
148
231
  export { _, cache, helper };
package/dist/utils.mjs CHANGED
@@ -1,6 +1,6 @@
1
- export { cache } from './chunk-2N4HH4ZF.mjs';
2
- export { helper } from './chunk-R4N52NI2.mjs';
1
+ export { cache } from './chunk-NCGC2KDE.mjs';
2
+ export { helper } from './chunk-YBLCIJW4.mjs';
3
3
  export { _ } from './chunk-K7LFG5BA.mjs';
4
- import './chunk-6F7H4PAA.mjs';
5
- //# sourceMappingURL=out.js.map
4
+ import './chunk-YOSPWY5K.mjs';
5
+ //# sourceMappingURL=utils.mjs.map
6
6
  //# sourceMappingURL=utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"utils.mjs"}
package/dist/wallet.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Chain } from 'viem/chains';
3
- import { a as PromiseHookData, S as StorageState } from './StorageState-cfd942cb.js';
4
- import { S as Store } from './root-218afa4f.js';
3
+ import { a as PromiseHookData, S as StorageState } from './StorageState-qapaHguM.mjs';
4
+ import { S as Store } from './root-BPMUmS6H.mjs';
5
5
  import { WalletClient, PublicClient, HttpTransport, TransactionReceipt } from 'viem';
6
6
  import EventEmitter from 'events';
7
7
  import { SwitchChainMutateAsync } from 'wagmi/query';
@@ -14,7 +14,7 @@ import 'typed-emitter';
14
14
 
15
15
  declare const WalletProvider: (({ children, theme, appName, supportedChains, compatibleMode, rainbowKitProps, projectId }: {
16
16
  children: React.ReactNode;
17
- theme?: "dark" | "light";
17
+ theme?: 'dark' | 'light';
18
18
  appName?: string;
19
19
  supportedChains?: Chain[];
20
20
  compatibleMode?: boolean;
@@ -25,6 +25,8 @@ declare const WalletProvider: (({ children, theme, appName, supportedChains, com
25
25
  displayName: string;
26
26
  };
27
27
 
28
+ declare const AutoConnectIopayWallet: () => any;
29
+
28
30
  type NetworkObject = {
29
31
  name: string;
30
32
  chainId: number;
@@ -193,4 +195,4 @@ declare const RpcList: (() => React.JSX.Element) & {
193
195
  declare const ConnectLedger: () => Promise<void>;
194
196
  declare const DisconnectLedger: () => void;
195
197
 
196
- export { AddressMode, ConnectLedger, DisconnectLedger, NetworkObject, RpcList, WalletConfigStore, WalletHistoryStore, WalletProvider, WalletRpcStore, WalletStore, WalletTransactionHistoryType, iotex, iotexTestnet };
198
+ export { type AddressMode, AutoConnectIopayWallet, ConnectLedger, DisconnectLedger, type NetworkObject, RpcList, WalletConfigStore, WalletHistoryStore, WalletProvider, WalletRpcStore, WalletStore, type WalletTransactionHistoryType, iotex, iotexTestnet };
package/dist/wallet.mjs CHANGED
@@ -1,20 +1,20 @@
1
- import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-4F33QAJ4.mjs';
2
- export { ConnectLedger, DisconnectLedger, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-4F33QAJ4.mjs';
3
- import './chunk-SL5OV6OR.mjs';
4
- import './chunk-3XIPR2M3.mjs';
5
- import './chunk-2N4HH4ZF.mjs';
6
- import './chunk-C5BPNLKH.mjs';
1
+ import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-WNK4WSTE.mjs';
2
+ export { ConnectLedger, DisconnectLedger, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-WNK4WSTE.mjs';
3
+ import './chunk-GPPSD2BO.mjs';
4
+ import './chunk-L5VZQRXB.mjs';
5
+ import './chunk-NCGC2KDE.mjs';
6
+ import './chunk-TEVYTENF.mjs';
7
7
  import { ToastPlugin } from './chunk-IMOLRP7I.mjs';
8
8
  import './chunk-GKAU4P5I.mjs';
9
- import { RootStore } from './chunk-IDKGZ5T4.mjs';
10
- import './chunk-R4N52NI2.mjs';
9
+ import { RootStore } from './chunk-XSGTWROT.mjs';
10
+ import { helper } from './chunk-YBLCIJW4.mjs';
11
11
  import './chunk-ONVPCAMQ.mjs';
12
12
  import './chunk-K7LFG5BA.mjs';
13
- import { __spreadValues } from './chunk-6F7H4PAA.mjs';
13
+ import { __spreadValues } from './chunk-YOSPWY5K.mjs';
14
14
  import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';
15
15
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
16
- import React2, { useEffect } from 'react';
17
- import { WagmiProvider } from 'wagmi';
16
+ import React2, { useEffect, useState, useMemo, useCallback } from 'react';
17
+ import { WagmiProvider, useAccount, useConnect } from 'wagmi';
18
18
  import { iotex as iotex$1, iotexTestnet as iotexTestnet$1 } from 'viem/chains';
19
19
  import SafeAppsSDK from '@safe-global/safe-apps-sdk';
20
20
  import { observer } from 'mobx-react-lite';
@@ -27,6 +27,49 @@ var iotex = __spreadValues({
27
27
  var iotexTestnet = __spreadValues({
28
28
  iconUrl: "https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png"
29
29
  }, iotexTestnet$1);
30
+ var AutoConnectIopayWallet = () => {
31
+ const { isConnected } = useAccount();
32
+ const { connect, connectors } = useConnect();
33
+ const [hasTriedAutoConnect, setHasTriedAutoConnect] = useState(false);
34
+ const isIopayEnvironment = useMemo(() => {
35
+ if (typeof window === "undefined") return false;
36
+ return helper.env.isIopayMobile && !!window.ethereum;
37
+ }, []);
38
+ const iopayConnector = useMemo(() => {
39
+ return connectors.find(
40
+ (connector) => {
41
+ var _a, _b;
42
+ return ((_a = connector.id) == null ? void 0 : _a.toLowerCase().includes("iopay")) || ((_b = connector.name) == null ? void 0 : _b.toLowerCase().includes("iopay"));
43
+ }
44
+ );
45
+ }, [connectors]);
46
+ const attemptAutoConnect = useCallback(async () => {
47
+ if (!iopayConnector || !isIopayEnvironment) {
48
+ return;
49
+ }
50
+ try {
51
+ await connect({ connector: iopayConnector });
52
+ } catch (error) {
53
+ console.debug("Auto connect iopayWallet failed:", error);
54
+ }
55
+ }, [connect, iopayConnector, isIopayEnvironment]);
56
+ useEffect(() => {
57
+ if (hasTriedAutoConnect || isConnected || !isIopayEnvironment || !iopayConnector) {
58
+ if (!hasTriedAutoConnect && (!isIopayEnvironment || !iopayConnector)) {
59
+ setHasTriedAutoConnect(true);
60
+ }
61
+ return;
62
+ }
63
+ const timer = setTimeout(async () => {
64
+ await attemptAutoConnect();
65
+ setHasTriedAutoConnect(true);
66
+ }, 500);
67
+ return () => clearTimeout(timer);
68
+ }, [hasTriedAutoConnect, isConnected, isIopayEnvironment, iopayConnector, attemptAutoConnect]);
69
+ return null;
70
+ };
71
+
72
+ // module/Wallet/provider.tsx
30
73
  var queryClient = new QueryClient({
31
74
  defaultOptions: {
32
75
  queries: {
@@ -35,7 +78,7 @@ var queryClient = new QueryClient({
35
78
  }
36
79
  }
37
80
  });
38
- var WalletProvider = observer(({
81
+ var WalletProvider = observer((({
39
82
  children,
40
83
  theme,
41
84
  appName,
@@ -64,8 +107,8 @@ var WalletProvider = observer(({
64
107
  }
65
108
  });
66
109
  }, []);
67
- return /* @__PURE__ */ React2.createElement(WagmiProvider, { config: walletConfig.rainbowKitConfig, reconnectOnMount: walletConfig.reconnectOnMount }, /* @__PURE__ */ React2.createElement(QueryClientProvider, { client: queryClient }, /* @__PURE__ */ React2.createElement(RainbowKitProvider, __spreadValues({ locale: "en", theme: theme == "dark" ? darkTheme() : lightTheme() }, rainbowKitProps), children, compatibleMode ? /* @__PURE__ */ React2.createElement(WalletConnectcompatibleMode, null) : /* @__PURE__ */ React2.createElement(WalletConnect, null))));
68
- });
110
+ return /* @__PURE__ */ React2.createElement(WagmiProvider, { config: walletConfig.rainbowKitConfig, reconnectOnMount: walletConfig.reconnectOnMount }, /* @__PURE__ */ React2.createElement(QueryClientProvider, { client: queryClient }, /* @__PURE__ */ React2.createElement(RainbowKitProvider, __spreadValues({ locale: "en", theme: theme == "dark" ? darkTheme() : lightTheme() }, rainbowKitProps), children, /* @__PURE__ */ React2.createElement(AutoConnectIopayWallet, null), compatibleMode ? /* @__PURE__ */ React2.createElement(WalletConnectcompatibleMode, null) : /* @__PURE__ */ React2.createElement(WalletConnect, null))));
111
+ }));
69
112
  var WalletConnectcompatibleMode = () => {
70
113
  const wallet = RootStore.Get(WalletStore);
71
114
  wallet.use();
@@ -79,7 +122,6 @@ var WalletConnect = () => {
79
122
  };
80
123
  var RpcList = observer(() => {
81
124
  var _a, _b;
82
- RootStore.Get(WalletStore);
83
125
  const rpcStore = RootStore.Get(WalletRpcStore);
84
126
  useEffect(() => {
85
127
  rpcStore.testRpc();
@@ -121,6 +163,6 @@ var RpcList = observer(() => {
121
163
  ));
122
164
  });
123
165
 
124
- export { RpcList, WalletProvider, iotex, iotexTestnet };
125
- //# sourceMappingURL=out.js.map
166
+ export { AutoConnectIopayWallet, RpcList, WalletProvider, iotex, iotexTestnet };
167
+ //# sourceMappingURL=wallet.mjs.map
126
168
  //# sourceMappingURL=wallet.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../module/Wallet/provider.tsx","../module/Wallet/type.ts","../module/Wallet/RpcList/index.tsx"],"names":["observer","React","useEffect"],"mappings":"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","sourcesContent":["import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useReconnect, useWalletClient, WagmiProvider } from 'wagmi';\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from '.';\nimport { WalletConfigStore } from './walletConfigStore'\nimport { reaction } from 'mobx';\nimport { type Chain } from \"viem/chains\";\nimport { iotex } from './type';\nimport SafeAppsSDK from '@safe-global/safe-apps-sdk';\nimport { observer } from 'mobx-react-lite';\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchInterval: 2500,\n refetchIntervalInBackground: false,\n },\n },\n});\nexport const WalletProvider = observer((({\n children,\n theme,\n appName,\n supportedChains,\n compatibleMode = true,\n rainbowKitProps,\n projectId\n}: {\n children: React.ReactNode,\n theme?: 'dark' | 'light',\n appName?: string,\n supportedChains?: Chain[],\n compatibleMode?: boolean,\n debug?: boolean,\n rainbowKitProps?: any,\n projectId?: string\n}) => {\n //@ts-ignore\n const walletConfig = RootStore.Get(WalletConfigStore, { args: { supportedChains: supportedChains ?? [iotex] } });\n useEffect(() => {\n if (appName) {\n walletConfig.appName = appName\n }\n if (compatibleMode != undefined) {\n walletConfig.compatibleMode = compatibleMode\n }\n if (projectId) {\n walletConfig.projectId = projectId\n }\n }, [appName, compatibleMode, projectId])\n useEffect(() => {\n const sdk = new SafeAppsSDK()\n sdk.safe.getEnvironmentInfo().then(({ origin }) => {\n if (origin) {\n walletConfig.isInSafeApp = true\n }\n })\n }, [])\n return (\n <WagmiProvider config={walletConfig.rainbowKitConfig} reconnectOnMount={walletConfig.reconnectOnMount}>\n <QueryClientProvider client={queryClient} >\n <RainbowKitProvider locale=\"en\" theme={theme == 'dark' ? darkTheme() : lightTheme()} {...rainbowKitProps}>\n {children}\n {\n compatibleMode ? <WalletConnectcompatibleMode /> : <WalletConnect />\n }\n </RainbowKitProvider>\n </QueryClientProvider>\n </WagmiProvider>\n );\n}));\n\n//There are problems with safeWallet calls in compatibility mode\nexport const WalletConnectcompatibleMode = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.use();\n return <></>;\n};\n\nexport const WalletConnect = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.useWalletClientWithoutCompatibleMode();\n wallet.use();\n return <></>;\n};\n","import { iotex as _iotex, iotexTestnet as _iotexTestnet, type Chain } from \"viem/chains\";\n\nexport type NetworkObject = {\n name: string;\n chainId: number;\n rpcUrl: string;\n logoUrl: string;\n explorerUrl: string;\n explorerName: string;\n nativeCoin: string;\n type: 'mainnet' | 'testnet';\n};\n\nexport type WalletTransactionHistoryType = {\n chainId: number;\n tx?: string;\n msg: string;\n timestamp: number;\n type: string;\n status: 'loading' | 'success' | 'fail';\n};\n\nexport type AddressMode = 'io' | '0x';\n\nexport const iotex = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotex,\n} as Chain;\nexport const iotexTestnet = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotexTestnet,\n} as Chain;;","import { Icon } from '@iconify/react';\nimport { Button, Checkbox, Chip, Input, Listbox, ListboxItem, Popover, PopoverContent, PopoverTrigger, Radio, RadioGroup, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';\nimport { observer, useLocalObservable } from 'mobx-react-lite';\nimport React from 'react';\nimport { useEffect } from 'react';\nimport { RootStore } from \"../../../store\";\nimport { WalletStore } from \"..\";\nimport { WalletRpcStore } from '../walletPluginStore';\nimport { ToastPlugin } from '../../Toast/Toast';\n\n\nconst RpcList = observer(() => {\n const wallet = RootStore.Get(WalletStore)\n const rpcStore = RootStore.Get(WalletRpcStore)\n useEffect(() => {\n rpcStore.testRpc()\n }, [])\n\n return (\n <div className='mb-3 mt-4'>\n <div className='w-full flex mb-2 mt-2'>\n <div className='flex items-center justify-center gap-2'>\n <Checkbox size='sm' isSelected={rpcStore.isAutoSelectRpc.value} onValueChange={e => rpcStore.isAutoSelectRpc.save(e)}>Auto select rpc</Checkbox>\n <Tooltip content={<div className='w-[300px]'>Once selected, if the current RPC cannot send a request, an available RPC will be automatically chosen.</div>}>\n <Icon icon=\"ph:question\" width=\"18\" height=\"18\" className='text-gray-500' />\n </Tooltip>\n </div>\n\n <Button startContent={<Icon icon=\"tabler:test-pipe\" width=\"18\" height=\"18\" />} className='ml-auto' onClick={e => {\n rpcStore.testRpc()\n }}>Test</Button>\n <Popover placement=\"bottom\" offset={20} showArrow isOpen={rpcStore.showCustomRpc} onOpenChange={(open) => rpcStore.showCustomRpc = (open)}>\n <PopoverTrigger>\n <Button color=\"primary\" startContent={<Icon icon=\"basil:add-solid\" width=\"18\" height=\"18\" />} className='ml-4'>Add custom rpc</Button>\n </PopoverTrigger>\n <PopoverContent>\n <div className=\"px-1 py-2\">\n <Input\n type=\"url\"\n className='mb-4'\n placeholder=\"https://rpc.com\"\n value={rpcStore.customRpc}\n onValueChange={(value) => {\n rpcStore.customRpc = value;\n }}\n />\n <Button color='primary' isDisabled={!rpcStore.customRpc} onClick={e => rpcStore.addCustomRpc()}>Save</Button>\n </div>\n </PopoverContent>\n </Popover>\n\n </div>\n\n <Table\n color=\"success\"\n selectionMode=\"single\"\n defaultSelectedKeys={[rpcStore.curRpc.value]}\n aria-label=\"Example static collection table\"\n >\n <TableHeader>\n <TableColumn>RPC Server Address</TableColumn>\n <TableColumn align='center'>Score</TableColumn>\n <TableColumn align='center'>Height</TableColumn>\n <TableColumn align='center'>Latency</TableColumn>\n <TableColumn align='center'>Action</TableColumn>\n </TableHeader>\n <TableBody >\n {\n rpcStore.rpcList?.value?.map((item, index) => {\n return <TableRow className='cursor-pointer' key={item.name} onClick={e => {\n rpcStore.curRpc.save(item.name)\n RootStore.Get(ToastPlugin).success('Set rpc success')\n }} >\n <TableCell >{item.name}</TableCell>\n <TableCell >{rpcStore.scoreIcon(item.latency)}</TableCell>\n <TableCell>{item.height}</TableCell>\n <TableCell className={rpcStore.latencyColor(item.latency)}>{item.latency}s</TableCell>\n <TableCell>\n <div className=\"relative flex items-center gap-2\">\n <Tooltip content=\"Add to metamask\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.addToMetamask(item.name)\n }}>\n <Icon icon=\"logos:metamask-icon\" width=\"18\" height=\"18\" />\n </span>\n </Tooltip>\n {\n item.custom && <Tooltip content=\"Remove\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.removeRpc(item.name)\n }}>\n <Icon icon=\"solar:trash-bin-minimalistic-broken\" width=\"20\" height=\"20\" />\n </span>\n </Tooltip>\n }\n </div>\n </TableCell>\n </TableRow>\n })\n }\n </TableBody>\n </Table>\n </div>\n );\n});\n\nexport { RpcList };\n"]}
1
+ {"version":3,"sources":["../module/Wallet/type.ts","../module/Wallet/AutoConnectIopayWallet.tsx","../module/Wallet/provider.tsx","../module/Wallet/RpcList/index.tsx"],"names":["_iotex","_iotexTestnet","useEffect","React","observer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAwBO,IAAM,KAAA,GAAQ,cAAA,CAAA;AAAA,EACnB,OAAA,EAAS;AAAA,CAAA,EACNA,OAAA;AAEE,IAAM,YAAA,GAAe,cAAA,CAAA;AAAA,EAC1B,OAAA,EAAS;AAAA,CAAA,EACNC,cAAA;ACzBE,IAAM,yBAAyB,MAAM;AAC1C,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,UAAA,EAAW;AACnC,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAW,GAAI,UAAA,EAAW;AAC3C,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,SAAS,KAAK,CAAA;AAGpE,EAAA,MAAM,kBAAA,GAAqB,QAAQ,MAAM;AACvC,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,KAAA;AAC1C,IAAA,OAAO,MAAA,CAAO,GAAA,CAAI,aAAA,IAAiB,CAAC,CAAC,MAAA,CAAO,QAAA;AAAA,EAC9C,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM;AACnC,IAAA,OAAO,UAAA,CAAW,IAAA;AAAA,MAChB,CAAC,SAAA,KAAW;AAnBlB,QAAA,IAAA,EAAA,EAAA,EAAA;AAoBQ,QAAA,OAAA,CAAA,CAAA,EAAA,GAAA,SAAA,CAAU,EAAA,KAAV,mBAAc,WAAA,EAAA,CAAc,QAAA,CAAS,eACrC,EAAA,GAAA,SAAA,CAAU,IAAA,KAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,WAAA,EAAA,CAAc,QAAA,CAAS,OAAA,CAAA,CAAA;AAAA,MAAA;AAAA,KAC3C;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAGf,EAAA,MAAM,kBAAA,GAAqB,YAAY,YAAY;AACjD,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,kBAAA,EAAoB;AAC1C,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,CAAQ,EAAE,SAAA,EAAW,cAAA,EAAgB,CAAA;AAAA,IAC7C,SAAS,KAAA,EAAO;AAEd,MAAA,OAAA,CAAQ,KAAA,CAAM,oCAAoC,KAAK,CAAA;AAAA,IACzD;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,cAAA,EAAgB,kBAAkB,CAAC,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,mBAAA,IAAuB,WAAA,IAAe,CAAC,kBAAA,IAAsB,CAAC,cAAA,EAAgB;AAChF,MAAA,IAAI,CAAC,mBAAA,KAAwB,CAAC,kBAAA,IAAsB,CAAC,cAAA,CAAA,EAAiB;AACpE,QAAA,sBAAA,CAAuB,IAAI,CAAA;AAAA,MAC7B;AACA,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,KAAA,GAAQ,WAAW,YAAY;AACnC,MAAA,MAAM,kBAAA,EAAmB;AACzB,MAAA,sBAAA,CAAuB,IAAI,CAAA;AAAA,IAC7B,GAAG,GAAG,CAAA;AAEN,IAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,EACjC,GAAG,CAAC,mBAAA,EAAqB,aAAa,kBAAA,EAAoB,cAAA,EAAgB,kBAAkB,CAAC,CAAA;AAE7F,EAAA,OAAO,IAAA;AACT;;;AC7CA,IAAM,WAAA,GAAc,IAAI,WAAA,CAAY;AAAA,EAClC,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS;AAAA,MACP,eAAA,EAAiB,IAAA;AAAA,MACjB,2BAAA,EAA6B;AAAA;AAC/B;AAEJ,CAAC,CAAA;AAEM,IAAM,cAAA,GAAiB,UAAU,CAAC;AAAA,EACvC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA,GAAiB,IAAA;AAAA,EACjB,eAAA;AAAA,EACA;AACF,CAAA,KASM;AAEJ,EAAA,MAAM,YAAA,GAAe,SAAA,CAAU,GAAA,CAAI,iBAAA,EAAmB,EAAE,IAAA,EAAM,EAAE,eAAA,EAAiB,eAAA,IAAA,IAAA,GAAA,eAAA,GAAmB,CAAC,KAAK,CAAA,IAAK,CAAA;AAC/G,EAAAC,UAAU,MAAM;AACd,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,YAAA,CAAa,OAAA,GAAU,OAAA;AAAA,IACzB;AACA,IAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,MAAA,YAAA,CAAa,cAAA,GAAiB,cAAA;AAAA,IAChC;AACA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,YAAA,CAAa,SAAA,GAAY,SAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,cAAA,EAAgB,SAAS,CAAC,CAAA;AACvC,EAAAA,UAAU,MAAM;AACd,IAAA,MAAM,GAAA,GAAM,IAAI,WAAA,EAAY;AAC5B,IAAA,GAAA,CAAI,KAAK,kBAAA,EAAmB,CAAE,KAAK,CAAC,EAAE,QAAO,KAAM;AACjD,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,YAAA,CAAa,WAAA,GAAc,IAAA;AAAA,MAC7B;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,4CACG,aAAA,EAAA,EAAc,MAAA,EAAQ,YAAA,CAAa,gBAAA,EAAkB,kBAAkB,YAAA,CAAa,gBAAA,EAAA,kBACnFC,MAAA,CAAA,aAAA,CAAC,mBAAA,EAAA,EAAoB,QAAQ,WAAA,EAAA,kBAC3BA,MAAA,CAAA,aAAA,CAAC,kBAAA,EAAA,cAAA,CAAA,EAAmB,MAAA,EAAO,MAAK,KAAA,EAAO,KAAA,IAAS,MAAA,GAAS,SAAA,KAAc,UAAA,EAAW,EAAA,EAAO,eAAA,CAAA,EACtF,QAAA,uCACA,sBAAA,EAAA,IAAuB,CAAA,EAEtB,cAAA,mBAAiBA,MAAA,CAAA,aAAA,CAAC,iCAA4B,CAAA,mBAAKA,MAAA,CAAA,aAAA,CAAC,aAAA,EAAA,IAAc,CAEtE,CACF,CACF,CAAA;AAEJ,CAAA;AAGO,IAAM,8BAA8B,MAAM;AAC/C,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,CAAI,WAAW,CAAA;AACxC,EAAA,MAAA,CAAO,GAAA,EAAI;AACX,EAAA,uBAAOA,MAAA,CAAA,aAAA,CAAAA,MAAA,CAAA,QAAA,EAAA,IAAE,CAAA;AACX,CAAA;AAEO,IAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,CAAI,WAAW,CAAA;AACxC,EAAA,MAAA,CAAO,oCAAA,EAAqC;AAC5C,EAAA,MAAA,CAAO,GAAA,EAAI;AACX,EAAA,uBAAOA,MAAA,CAAA,aAAA,CAAAA,MAAA,CAAA,QAAA,EAAA,IAAE,CAAA;AACX,CAAA;AC7EA,IAAM,OAAA,GAAUC,SAAS,MAAM;AAX/B,EAAA,IAAA,EAAA,EAAA,EAAA;AAYE,EAAA,MAAM,QAAA,GAAW,SAAA,CAAU,GAAA,CAAI,cAAc,CAAA;AAC7C,EAAAF,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,OAAA,EAAQ;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACEC,MAAAA,CAAA,aAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EAAA,kBACbA,MAAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CACbA,MAAAA,CAAA,cAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DACbA,MAAAA,CAAA,aAAA,CAAC,QAAA,EAAA,EAAS,MAAK,IAAA,EAAK,UAAA,EAAY,SAAS,eAAA,CAAgB,KAAA,EAAO,eAAe,CAAA,CAAA,KAAK,QAAA,CAAS,eAAA,CAAgB,IAAA,CAAK,CAAC,CAAA,EAAA,EAAG,iBAAe,mBACrIA,MAAAA,CAAA,cAAC,OAAA,EAAA,EAAQ,OAAA,kBAASA,MAAAA,CAAA,cAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAY,yGAAuG,CAAA,EAAA,kBAClJA,MAAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,eAAc,KAAA,EAAM,IAAA,EAAK,QAAO,IAAA,EAAK,SAAA,EAAU,iBAAgB,CAC5E,CACF,CAAA,kBAEAA,OAAA,aAAA,CAAC,MAAA,EAAA,EAAO,8BAAcA,MAAAA,CAAA,cAAC,IAAA,EAAA,EAAK,IAAA,EAAK,kBAAA,EAAmB,KAAA,EAAM,MAAK,MAAA,EAAO,IAAA,EAAK,GAAI,SAAA,EAAU,SAAA,EAAU,SAAS,CAAA,CAAA,KAAK;AAC/G,IAAA,QAAA,CAAS,OAAA,EAAQ;AAAA,EACnB,CAAA,EAAA,EAAG,MAAI,CAAA,kBACPA,MAAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,QAAA,EAAS,MAAA,EAAQ,EAAA,EAAI,SAAA,EAAS,IAAA,EAAC,MAAA,EAAQ,QAAA,CAAS,aAAA,EAAe,YAAA,EAAc,CAAC,IAAA,KAAS,QAAA,CAAS,aAAA,GAAiB,IAAA,EAAA,kBAClIA,MAAAA,CAAA,aAAA,CAAC,cAAA,EAAA,IAAA,kBACCA,MAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAO,KAAA,EAAM,SAAA,EAAU,YAAA,kBAAcA,MAAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,iBAAA,EAAkB,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,CAAA,EAAI,SAAA,EAAU,MAAA,EAAA,EAAO,gBAAc,CAC/H,CAAA,kBACAA,MAAAA,CAAA,aAAA,CAAC,cAAA,EAAA,IAAA,kBACCA,MAAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EAAA,kBACbA,MAAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,KAAA;AAAA,MACL,SAAA,EAAU,MAAA;AAAA,MACV,WAAA,EAAY,iBAAA;AAAA,MACZ,OAAO,QAAA,CAAS,SAAA;AAAA,MAChB,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,QAAA,QAAA,CAAS,SAAA,GAAY,KAAA;AAAA,MACvB;AAAA;AAAA,GACF,kBACAA,MAAAA,CAAA,aAAA,CAAC,UAAO,KAAA,EAAM,SAAA,EAAU,UAAA,EAAY,CAAC,QAAA,CAAS,SAAA,EAAW,SAAS,CAAA,CAAA,KAAK,QAAA,CAAS,YAAA,EAAa,EAAA,EAAG,MAAI,CACtG,CACF,CACF,CAEF,CAAA,kBAEAA,MAAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,SAAA;AAAA,MACN,aAAA,EAAc,QAAA;AAAA,MACd,mBAAA,EAAqB,CAAC,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AAAA,MAC3C,YAAA,EAAW;AAAA,KAAA;AAAA,oBAEXA,MAAAA,CAAA,aAAA,CAAC,mCACCA,MAAAA,CAAA,cAAC,WAAA,EAAA,IAAA,EAAY,oBAAkB,CAAA,kBAC/BA,OAAA,aAAA,CAAC,WAAA,EAAA,EAAY,OAAM,QAAA,EAAA,EAAS,OAAK,mBACjCA,MAAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,OAAM,QAAA,EAAA,EAAS,QAAM,mBAClCA,MAAAA,CAAA,cAAC,WAAA,EAAA,EAAY,KAAA,EAAM,YAAS,SAAO,CAAA,kBACnCA,MAAAA,CAAA,aAAA,CAAC,eAAY,KAAA,EAAM,QAAA,EAAA,EAAS,QAAM,CACpC,CAAA;AAAA,oBACAA,MAAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,EAAA,CAEG,EAAA,GAAA,CAAA,EAAA,GAAA,QAAA,CAAS,OAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,KAAA,KAAlB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC5C,MAAA,uBAAOA,MAAAA,CAAA,aAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,kBAAiB,GAAA,EAAK,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,CAAA,CAAA,KAAK;AACxE,QAAA,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA;AAC9B,QAAA,SAAA,CAAU,GAAA,CAAI,WAAW,CAAA,CAAE,OAAA,CAAQ,iBAAiB,CAAA;AAAA,MACtD,CAAA,EAAA,kBACEA,MAAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,EAAY,IAAA,CAAK,IAAK,CAAA,kBACvBA,MAAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,EAAY,QAAA,CAAS,SAAA,CAAU,IAAA,CAAK,OAAO,CAAE,CAAA,kBAC9CA,MAAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,EAAW,IAAA,CAAK,MAAO,CAAA,kBACxBA,MAAAA,CAAA,aAAA,CAAC,aAAU,SAAA,EAAW,QAAA,CAAS,YAAA,CAAa,IAAA,CAAK,OAAO,CAAA,EAAA,EAAI,IAAA,CAAK,OAAA,EAAQ,GAAC,CAAA,kBAC1EA,MAAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,kBACCA,MAAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EAAA,kBACbA,MAAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAQ,iBAAA,EAAA,kBACfA,MAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sDAAA,EAAuD,SAAS,CAAA,CAAA,KAAK;AACnF,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,QAAA,CAAS,aAAA,CAAc,KAAK,IAAI,CAAA;AAAA,MAClC,CAAA,EAAA,kBACEA,MAAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,qBAAA,EAAsB,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,CAC1D,CACF,CAAA,EAEE,IAAA,CAAK,MAAA,oBAAUA,MAAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAQ,QAAA,EAAA,kBAC9BA,MAAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sDAAA,EAAuD,SAAS,CAAA,CAAA,KAAK;AACnF,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,QAAA,CAAS,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,MAC9B,CAAA,EAAA,kBACEA,MAAAA,CAAA,aAAA,CAAC,QAAK,IAAA,EAAK,qCAAA,EAAsC,KAAA,EAAM,IAAA,EAAK,QAAO,IAAA,EAAK,CAC1E,CACF,CAEJ,CACF,CACF,CAAA;AAAA,IACF,CAAA,CAEJ;AAAA,GAEJ,CAAA;AAEJ,CAAC","file":"wallet.mjs","sourcesContent":["import { iotex as _iotex, iotexTestnet as _iotexTestnet, type Chain } from \"viem/chains\";\n\nexport type NetworkObject = {\n name: string;\n chainId: number;\n rpcUrl: string;\n logoUrl: string;\n explorerUrl: string;\n explorerName: string;\n nativeCoin: string;\n type: 'mainnet' | 'testnet';\n};\n\nexport type WalletTransactionHistoryType = {\n chainId: number;\n tx?: string;\n msg: string;\n timestamp: number;\n type: string;\n status: 'loading' | 'success' | 'fail';\n};\n\nexport type AddressMode = 'io' | '0x';\n\nexport const iotex = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotex,\n} as Chain;\nexport const iotexTestnet = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotexTestnet,\n} as Chain;;","import { useEffect, useState, useCallback, useMemo } from 'react';\nimport { useConnect, useAccount } from 'wagmi';\nimport { helper } from '../../utils';\n\n// Auto connect iopayWallet when available\nexport const AutoConnectIopayWallet = () => {\n const { isConnected } = useAccount();\n const { connect, connectors } = useConnect();\n const [hasTriedAutoConnect, setHasTriedAutoConnect] = useState(false);\n\n // Memoize iopay detection to avoid repeated calculations\n const isIopayEnvironment = useMemo(() => {\n if (typeof window === 'undefined') return false;\n return helper.env.isIopayMobile && !!window.ethereum;\n }, []);\n\n // Memoize iopay connector lookup\n const iopayConnector = useMemo(() => {\n return connectors.find(\n (connector) =>\n connector.id?.toLowerCase().includes('iopay') ||\n connector.name?.toLowerCase().includes('iopay')\n );\n }, [connectors]);\n\n // Memoized auto connect function\n const attemptAutoConnect = useCallback(async () => {\n if (!iopayConnector || !isIopayEnvironment) {\n return;\n }\n\n try {\n await connect({ connector: iopayConnector });\n } catch (error) {\n // Silently handle connection failures (user rejection, etc.)\n console.debug('Auto connect iopayWallet failed:', error);\n }\n }, [connect, iopayConnector, isIopayEnvironment]);\n\n useEffect(() => {\n // Skip if already tried, already connected, or conditions not met\n if (hasTriedAutoConnect || isConnected || !isIopayEnvironment || !iopayConnector) {\n if (!hasTriedAutoConnect && (!isIopayEnvironment || !iopayConnector)) {\n setHasTriedAutoConnect(true);\n }\n return;\n }\n\n // Small delay to ensure wallet is fully initialized\n const timer = setTimeout(async () => {\n await attemptAutoConnect();\n setHasTriedAutoConnect(true);\n }, 500);\n\n return () => clearTimeout(timer);\n }, [hasTriedAutoConnect, isConnected, isIopayEnvironment, iopayConnector, attemptAutoConnect]);\n\n return null;\n};\n\n","import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect } from 'react';\nimport { WagmiProvider } from 'wagmi';\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from '.';\nimport { WalletConfigStore } from './walletConfigStore'\nimport { type Chain } from \"viem/chains\";\nimport { iotex } from './type';\nimport SafeAppsSDK from '@safe-global/safe-apps-sdk';\nimport { observer } from 'mobx-react-lite';\nimport { AutoConnectIopayWallet } from './AutoConnectIopayWallet';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchInterval: 2500,\n refetchIntervalInBackground: false,\n },\n },\n});\n\nexport const WalletProvider = observer((({\n children,\n theme,\n appName,\n supportedChains,\n compatibleMode = true,\n rainbowKitProps,\n projectId\n}: {\n children: React.ReactNode,\n theme?: 'dark' | 'light',\n appName?: string,\n supportedChains?: Chain[],\n compatibleMode?: boolean,\n debug?: boolean,\n rainbowKitProps?: any,\n projectId?: string\n}) => {\n // @ts-ignore\n const walletConfig = RootStore.Get(WalletConfigStore, { args: { supportedChains: supportedChains ?? [iotex] } });\n useEffect(() => {\n if (appName) {\n walletConfig.appName = appName\n }\n if (compatibleMode != undefined) {\n walletConfig.compatibleMode = compatibleMode\n }\n if (projectId) {\n walletConfig.projectId = projectId\n }\n }, [appName, compatibleMode, projectId])\n useEffect(() => {\n const sdk = new SafeAppsSDK()\n sdk.safe.getEnvironmentInfo().then(({ origin }) => {\n if (origin) {\n walletConfig.isInSafeApp = true\n }\n })\n }, [])\n return (\n <WagmiProvider config={walletConfig.rainbowKitConfig} reconnectOnMount={walletConfig.reconnectOnMount}>\n <QueryClientProvider client={queryClient} >\n <RainbowKitProvider locale=\"en\" theme={theme == 'dark' ? darkTheme() : lightTheme()} {...rainbowKitProps}>\n {children}\n <AutoConnectIopayWallet />\n {\n compatibleMode ? <WalletConnectcompatibleMode /> : <WalletConnect />\n }\n </RainbowKitProvider>\n </QueryClientProvider>\n </WagmiProvider>\n );\n}));\n\n//There are problems with safeWallet calls in compatibility mode\nexport const WalletConnectcompatibleMode = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.use();\n return <></>;\n};\n\nexport const WalletConnect = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.useWalletClientWithoutCompatibleMode();\n wallet.use();\n return <></>;\n};\n","import { Icon } from '@iconify/react';\nimport { Button, Checkbox, Input, Popover, PopoverContent, PopoverTrigger, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useEffect } from 'react';\nimport { RootStore } from \"../../../store\";\nimport { WalletStore } from \"..\";\nimport { WalletRpcStore } from '../walletPluginStore';\nimport { ToastPlugin } from '../../Toast/Toast';\n\n\nconst RpcList = observer(() => {\n const rpcStore = RootStore.Get(WalletRpcStore)\n useEffect(() => {\n rpcStore.testRpc()\n }, [])\n\n return (\n <div className='mb-3 mt-4'>\n <div className='w-full flex mb-2 mt-2'>\n <div className='flex items-center justify-center gap-2'>\n <Checkbox size='sm' isSelected={rpcStore.isAutoSelectRpc.value} onValueChange={e => rpcStore.isAutoSelectRpc.save(e)}>Auto select rpc</Checkbox>\n <Tooltip content={<div className='w-[300px]'>Once selected, if the current RPC cannot send a request, an available RPC will be automatically chosen.</div>}>\n <Icon icon=\"ph:question\" width=\"18\" height=\"18\" className='text-gray-500' />\n </Tooltip>\n </div>\n\n <Button startContent={<Icon icon=\"tabler:test-pipe\" width=\"18\" height=\"18\" />} className='ml-auto' onClick={e => {\n rpcStore.testRpc()\n }}>Test</Button>\n <Popover placement=\"bottom\" offset={20} showArrow isOpen={rpcStore.showCustomRpc} onOpenChange={(open) => rpcStore.showCustomRpc = (open)}>\n <PopoverTrigger>\n <Button color=\"primary\" startContent={<Icon icon=\"basil:add-solid\" width=\"18\" height=\"18\" />} className='ml-4'>Add custom rpc</Button>\n </PopoverTrigger>\n <PopoverContent>\n <div className=\"px-1 py-2\">\n <Input\n type=\"url\"\n className='mb-4'\n placeholder=\"https://rpc.com\"\n value={rpcStore.customRpc}\n onValueChange={(value) => {\n rpcStore.customRpc = value;\n }}\n />\n <Button color='primary' isDisabled={!rpcStore.customRpc} onClick={e => rpcStore.addCustomRpc()}>Save</Button>\n </div>\n </PopoverContent>\n </Popover>\n\n </div>\n\n <Table\n color=\"success\"\n selectionMode=\"single\"\n defaultSelectedKeys={[rpcStore.curRpc.value]}\n aria-label=\"Example static collection table\"\n >\n <TableHeader>\n <TableColumn>RPC Server Address</TableColumn>\n <TableColumn align='center'>Score</TableColumn>\n <TableColumn align='center'>Height</TableColumn>\n <TableColumn align='center'>Latency</TableColumn>\n <TableColumn align='center'>Action</TableColumn>\n </TableHeader>\n <TableBody >\n {\n rpcStore.rpcList?.value?.map((item, index) => {\n return <TableRow className='cursor-pointer' key={item.name} onClick={e => {\n rpcStore.curRpc.save(item.name)\n RootStore.Get(ToastPlugin).success('Set rpc success')\n }} >\n <TableCell >{item.name}</TableCell>\n <TableCell >{rpcStore.scoreIcon(item.latency)}</TableCell>\n <TableCell>{item.height}</TableCell>\n <TableCell className={rpcStore.latencyColor(item.latency)}>{item.latency}s</TableCell>\n <TableCell>\n <div className=\"relative flex items-center gap-2\">\n <Tooltip content=\"Add to metamask\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.addToMetamask(item.name)\n }}>\n <Icon icon=\"logos:metamask-icon\" width=\"18\" height=\"18\" />\n </span>\n </Tooltip>\n {\n item.custom && <Tooltip content=\"Remove\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.removeRpc(item.name)\n }}>\n <Icon icon=\"solar:trash-bin-minimalistic-broken\" width=\"20\" height=\"20\" />\n </span>\n </Tooltip>\n }\n </div>\n </TableCell>\n </TableRow>\n })\n }\n </TableBody>\n </Table>\n </div>\n );\n});\n\nexport { RpcList };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dappworks/kit",
3
- "version": "0.5.41",
3
+ "version": "0.5.43",
4
4
  "description": "",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.mts",
@@ -158,7 +158,8 @@
158
158
  "license": "ISC",
159
159
  "devDependencies": {
160
160
  "currency.js": "^2.0.4",
161
- "tsup": "7.2.0"
161
+ "tsup": "^8.0.0",
162
+ "typescript": "5.4.5"
162
163
  },
163
164
  "publishConfig": {
164
165
  "access": "public",
@@ -172,4 +173,4 @@
172
173
  "reflect-metadata": "^0.2.2",
173
174
  "virtua": "0.33.7"
174
175
  }
175
- }
176
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../lib/dexie.ts"],"names":[],"mappings":";AAAA,OAAO,gBAAgB;AACvB,SAAS,aAAyB;AAE3B,IAAM,eAAN,cAA2B,MAAM;AAAA,EAGtC,cAAc;AACZ,UAAM,OAAO;AACb,SAAK,QAAQ,CAAC,EAAE,OAAO;AAAA,MACrB,IAAI;AAAA,IACN,CAAC;AAAA,EACH;AACF;AACO,IAAM,QAAQ,IAAI,aAAa;AAE/B,IAAM,aAAN,MAAiB;AAAA,EAAjB;AACL,cAAK,MAAM;AACX,kBAAS,IAAI;AAAA,MACX,OAAO,QAAkB;AACvB,cAAM,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG;AACrC,eAAO,IAAI,IAAI,CAAC,MAAM,uBAAG,KAAK;AAAA,MAChC;AAAA,MACA,EAAE,OAAO,MAAM;AAAA,IACjB;AACA,kBAAS,IAAI;AAAA,MACX,OAAO,QAAoD;AACzD,cAAM,MAAM,oBAAI,KAAK;AACrB,cAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,OAAO,EAAE,OAAO,YAAY,IAAI,QAAQ,IAAI,QAAQ,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AACjI,eAAO;AAAA,MACT;AAAA,MACA,EAAE,OAAO,MAAM;AAAA,IACjB;AACA,mBAAU;AAAA,MACR,KAAK,KAAK;AAAA,MACV,QAAQ;AAAA,IACV;AAAA;AAAA,EAEA,MAAM,IAAI,MAAM;AACd,UAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,YAAQ,KAAK,SAAS,GAAG;AACzB,UAAM,MAAM,MAAM,KAAK,OAAO,KAAK,GAAG;AACtC,YAAQ,QAAQ,SAAS,GAAG;AAC5B,UAAM,OAAO,2BAAK;AAClB,QAAI,CAAC;AAAM;AACX,WAAO,6BAAM;AAAA,EACf;AAAA,EAEA,MAAM,OAAO,MAAM;AACjB,UAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,YAAQ,KAAK,SAAS,GAAG;AACzB,UAAM,MAAM,MAAM,KAAK,OAAO,KAAK,GAAG;AACtC,YAAQ,QAAQ,SAAS,GAAG;AAC5B,UAAM,OAAO,2BAAK;AAClB,QAAI,CAAC;AAAM;AACX,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,MAAM,OAAO,SAA4B;AACjD,UAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,SAAK,OAAO,KAAK,EAAE,KAAK,OAAO,MAAK,mCAAS,QAAO,KAAK,QAAQ,IAAI,CAAC;AAEtE,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,KAAK;AAEhB;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ;AAAA,EAAC;AAAA,EAEf,MAAM,KAAoE,KAAK,IAAO,MAAmE;AACvJ,QAAI,OAAO,MAAM,KAAK,OAAO,KAAK,GAAG;AACrC,SAAI,6BAAM,eAAc,IAAI,KAAK,KAAK,UAAU,KAAK,oBAAI,KAAK,GAAG;AAG/D,UAAI,6BAAM,WAAW;AACnB,WAAG,EACA,KAAK,CAAC,UAAU;AACf,eAAK,OAAO,KAAK,EAAE,KAAK,OAAO,MAAK,6BAAM,QAAO,KAAK,QAAQ,IAAI,CAAC;AAAA,QACrE,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,kBAAQ,MAAM,GAAG;AAAA,QACnB,CAAC;AAAA,MACL,OAAO;AAEL,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,CAAC,MAAM;AAET,YAAM,QAAQ,MAAM,GAAG;AACvB,WAAK,OAAO,KAAK,EAAE,KAAK,OAAO,MAAK,6BAAM,QAAO,KAAK,QAAQ,IAAI,CAAC;AACnE,aAAO;AAAA,IACT;AACA,WAAO,KAAK;AAAA,EACd;AACF;AAEO,IAAM,QAAQ,IAAI,WAAW","sourcesContent":["import DataLoader from \"dataloader\";\nimport { Dexie, type Table } from \"dexie\";\n\nexport class DexieStorage extends Dexie {\n kv: Table<{ key: string; value: { value: any; expiration: number } }>;\n\n constructor() {\n super(\"cache\");\n this.version(1).stores({\n kv: \"key, value\",\n });\n }\n}\nexport const dexie = new DexieStorage();\n\nexport class DexieCache {\n kv = dexie.kv;\n kv_get = new DataLoader(\n async (ids: string[]) => {\n const res = await this.kv.bulkGet(ids);\n return res.map((i) => i?.value);\n },\n { cache: false },\n );\n kv_set = new DataLoader(\n async (ids: { key: string; value: any; ttl: number }[]) => {\n const now = new Date();\n await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));\n return ids;\n },\n { cache: false },\n );\n options = {\n ttl: 60 * 1000,\n prefix: \"\",\n };\n\n async get(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data?.value;\n }\n\n async getRaw(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data;\n }\n\n async set(_key, value, options?: { ttl?: number }) {\n const key = this.options.prefix + _key;\n this.kv_set.load({ key, value, ttl: options?.ttl || this.options.ttl });\n\n return this;\n }\n\n async delete(key) {\n // return this.dataloader.load(['del', key]);\n return;\n }\n\n async clear() {}\n\n async wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>(key, fn: T, args?: { ttl?: number; alowStale?: boolean }): Promise<Awaited<U>> {\n let data = await this.kv_get.load(key);\n if (data?.expiration && new Date(data.expiration) <= new Date()) {\n // console.log(\"cache expired\", key)\n\n if (args?.alowStale) {\n fn()\n .then((value) => {\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n })\n .catch((err) => {\n console.error(err);\n });\n } else {\n //@ts-ignore\n data = null;\n }\n }\n if (!data) {\n // console.log(\"miss cache\", key)\n const value = await fn();\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n return value;\n }\n return data.value;\n }\n}\n\nexport const cache = new DexieCache();\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../aiem.ts","../lib/decorators.ts","../constants/abi.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Chain,\n type GetContractReturnType,\n type Abi,\n type PublicClient,\n type HttpTransport,\n type WalletClient,\n type Transport,\n type Account,\n type MulticallBatchOptions,\n encodeFunctionData,\n http,\n getContract,\n createPublicClient,\n defineChain,\n} from \"viem\";\nimport { iotex, mainnet, bsc, polygon, iotexTestnet } from \"viem/chains\";\nimport TTLCache from \"@isaacs/ttlcache\";\nimport { ClassType } from \"./lib/interface\";\nimport { getFieldMetadata } from \"./lib/decorators\";\nimport { helper } from \"./utils\";\nimport BigNumber from \"bignumber.js\";\nimport { ERC20ABI } from \"./constants/abi\";\n\n//@ts-ignore\nBigInt.prototype.toJSON = function () {\n return this.toString();\n};\n\n(iotexTestnet.contracts = {\n multicall3: {\n //@ts-ignore\n address: \"0xb5cecd6894c6f473ec726a176f1512399a2e355d\",\n blockCreated: 24347592,\n },\n}),\n //@ts-ignore\n (mainnet.rpcUrls.default.http = [\"https://rpc.ankr.com/eth\"]);\n//@ts-ignore\nmainnet.rpcUrls.default.webSocket = [\"wss://ethereum-rpc.publicnode.com\"];\n//@ts-ignore\nexport const iotexBabelNightly = /*#__PURE__*/ defineChain({\n id: 4_691,\n name: \"IoTeX Babel Nightly\",\n network: \"iotex-babel-nightly\",\n nativeCurrency: {\n decimals: 18,\n name: \"IoTeX\",\n symbol: \"IOTX\",\n },\n iconUrl: \"https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png\",\n rpcUrls: {\n default: {\n http: [\"https://babel-nightly.iotex.io\"],\n webSocket: [\"wss://babel-nightly.iotex.io\"],\n },\n },\n blockExplorers: {\n default: { name: \"IoTeXScan\", url: \"https://testnet.iotexscan.io\" },\n },\n // contracts: {\n // multicall3: {\n // address: '0xb5cecD6894c6f473Ec726A176f1512399A2e355d',\n // },\n // },\n testnet: true,\n});\n\nexport { Fields } from \"./lib/decorators\";\n\nexport class Cache {\n kv = new TTLCache<string, any>({ max: 10000, ttl: 1000 * 60 });\n\n wrap<T>(key: string, fn: () => T | Promise<T>, config: TTLCache.Options<any, any> = {}): T | Promise<T> {\n if (this.kv.has(key)) {\n // console.log(`load ${key} from cache`)\n return this.kv.get(key);\n }\n\n const result = fn();\n if (result instanceof Promise) {\n const promiseResult = result.then((res) => {\n this.kv.set(key, res, config);\n return res;\n });\n this.kv.set(key, promiseResult, config);\n return promiseResult;\n } else {\n this.kv.set(key, result, config);\n return result;\n }\n }\n}\n\nexport type GetOptions = {\n multicall?: boolean | MulticallBatchOptions;\n rpcUrls?: Chain[\"rpcUrls\"];\n pollingInterval?: number;\n};\n\nexport class AIem<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }> {\n static cache?: Cache = new Cache();\n cache?: Cache = new Cache();\n contractMap?: Contracts;\n //@ts-ignore\n chainMap?: Chains = {\n [iotex.id]: iotex,\n [mainnet.id]: mainnet,\n [bsc.id]: bsc,\n [polygon.id]: polygon,\n [iotexTestnet.id]: iotexTestnet,\n [iotexBabelNightly.id]: iotexBabelNightly,\n };\n nameMap?: Addrs;\n contracts: {\n [K in keyof Addrs & keyof Contracts]: {\n //@ts-ignore\n [KK in keyof Addrs[K]]: GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>, any, any>;\n };\n };\n static defaultFuncMap = {\n totalSupply: { ttl: 15 * 1000 },\n symbol: { ttl: 60 * 1000 },\n name: { ttl: 60 * 1000 },\n decimals: { ttl: 60 * 1000 },\n balanceOf: { ttl: 5 * 1000 },\n };\n funcMap?: { [key: string]: { ttl?: number } } = {};\n\n get _cache() {\n return AIem.cache;\n }\n\n //@ts-ignore\n getWallet?: () => WalletClient;\n\n static Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }>(\n args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\">,\n ) {\n return this.init().Set(args);\n }\n\n Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }>(\n args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\">,\n ): AIem<Contracts, Chains, Addrs> {\n const { chainMap = {}, contractMap = {}, funcMap, ...rest } = args || {};\n //@ts-ignore\n this.chainMap = Object.assign({}, this.chainMap || {}, chainMap);\n //@ts-ignore\n this.contractMap = Object.assign({}, this.contractMap || {}, contractMap);\n //@ts-ignore\n this.funcMap = Object.assign({}, this.funcMap || {}, funcMap);\n\n Object.assign(this, rest);\n return this as any;\n }\n\n constructor(args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\"> = {}) {\n this.Set(args);\n\n this.contracts = new Proxy(\n {},\n {\n //@ts-ignore\n get: (target: any, contractName: keyof Addrs & keyof Contracts) => {\n if (target[contractName]) return target[contractName];\n\n if (!this.nameMap[contractName]) {\n throw new Error(`Contract ${String(contractName)} not found`);\n }\n\n target[contractName] = new Proxy(\n {},\n {\n //@ts-ignore\n get: (innerTarget: any, contractAlias: keyof Addrs[keyof Addrs]) => {\n const addressStr = this.nameMap[contractName]?.[contractAlias];\n if (!addressStr) {\n throw new Error(`Alias ${String(contractAlias)} for contract ${String(contractName)} not found`);\n }\n const [chainId, address] = addressStr.split(\"-\");\n\n // Assuming getContractInstance is a function that retrieves a contract instance\n return this.Get(contractName, String(chainId), address as `0x${string}`);\n },\n },\n );\n return target[contractName];\n },\n },\n ) as any;\n }\n\n // WsClient<C extends keyof Chains>(chainId: C): PublicClient<WebSocketTransport, Chain, any, any> {\n // //@ts-ignore\n // return this.cache.wrap(`wsClient-${String(chainId)}`, () => {\n // // const wsUrl = this.chainMap[chainId]?.rpcUrls?.default?.webSocket?.[0]\n // // if (!wsUrl) throw new Error(`rpcUrls.default.webSocket[0] is not defined for chainId ${String(chainId)}`)\n // // //@ts-ignore\n // return createPublicClient({\n // //@ts-ignore\n // chain: this.chainMap[chainId],\n // transport: webSocket()\n // }) as PublicClient<WebSocketTransport, Chain, any, any>\n // })\n // }\n\n static PubClient(chainId: string, options: GetOptions = { multicall: true }): PublicClient<HttpTransport, Chain, any, any> {\n //@ts-ignore\n return this.init().PubClient(chainId, options);\n }\n\n PubClient<C extends keyof Chains>(chainId: C, options: GetOptions = { multicall: true }): PublicClient<HttpTransport, Chain, any, any> {\n const chain = this.chainMap[chainId];\n if (options.rpcUrls) {\n chain.rpcUrls = options.rpcUrls;\n }\n //@ts-ignore\n return this._cache.wrap(`publicClient-${String(chainId)}-${chain.rpcUrls.default.http}-${JSON.stringify(options?.multicall)}-${options?.pollingInterval}`, () => {\n //@ts-ignore\n return createPublicClient({\n //@ts-ignore\n chain,\n ...(options?.multicall\n ? {\n batch: {\n multicall: typeof options.multicall === \"boolean\" ? true : options.multicall,\n },\n }\n : {}),\n ...(options?.pollingInterval\n ? {\n pollingInterval: options.pollingInterval,\n }\n : {\n pollingInterval: 2500,\n }),\n //@ts-ignore\n transport: http(),\n });\n });\n }\n\n //@ts-ignore\n static Get<TAbi extends Abi = any, ReturnType extends GetContractReturnType<TAbi, WalletClient<Transport, Chain, Account>>>(\n abi: TAbi,\n chainId: any,\n address: any,\n wallet?: WalletClient,\n //@ts-ignore\n options?: GetOptions = { multicall: true },\n //@ts-ignore\n ): ReturnType & { encode: ReturnType[\"write\"] } {\n const aiem = this.init();\n if (!wallet) {\n wallet = aiem.getWallet ? aiem.getWallet() : null;\n }\n\n const cacheKey = `contract ${chainId}-${address}-${wallet ? wallet.account.address : null}`;\n return aiem._cache.wrap(cacheKey, () => {\n //@ts-ignore\n const pubClient = aiem.PubClient(chainId, options);\n\n //@ts-ignore\n return aiem.getContract({\n client: {\n //@ts-ignore\n public: pubClient,\n //@ts-ignore\n wallet,\n },\n address,\n abi,\n });\n }) as any;\n }\n\n //@ts-ignore\n Get<K extends keyof Contracts, C extends keyof Chains, Addr extends `0x${string}`>(\n contractName: K,\n chainId: C,\n address: Addr,\n options: GetOptions = { multicall: true },\n //@ts-ignore\n ): GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>> & { encode: GetContractReturnType<Contracts[K], WalletClient<HttpTransport, Chain, Account, any>>[\"write\"] } {\n const wallet = this.getWallet ? this.getWallet() : null;\n //@ts-ignore\n const cacheKey = `contract ${chainId}-${address}-${wallet ? wallet.account.address : null}`;\n return this._cache.wrap(cacheKey, () => {\n //@ts-ignore\n const contract = this.contractMap[contractName];\n //@ts-ignore\n const pubClient = this.PubClient(chainId, options);\n\n //@ts-ignore\n return this.getContract({\n client: {\n //@ts-ignore\n public: pubClient,\n //@ts-ignore\n wallet,\n },\n address,\n abi: contract,\n });\n }) as any;\n }\n\n getContract({\n client,\n address,\n abi,\n }: {\n client: {\n public: PublicClient<HttpTransport, Chain, any, any>;\n wallet?: WalletClient;\n };\n address: `0x${string}`;\n abi: any;\n }) {\n const handler = {\n get: (target: any, funcName: any) => {\n if (funcName == \"encode\") {\n return new Proxy(\n {},\n {\n get(t1, f1) {\n return async (args: any) => {\n // @ts-ignore\n return encodeFunctionData({\n abi,\n functionName: f1,\n args,\n });\n };\n },\n },\n );\n }\n\n if (typeof target[funcName] === \"function\") {\n return async (...args: any[]) => {\n const methodConfig = this.funcMap?.[funcName as string];\n // const cacheKey = `method:${client.public.chain.id}-${address}-${String(funcName)}-${JSON.stringify(args)}`;\n const cacheKey = `call ${client.public.chain.id}-${address}-${funcName}-${JSON.stringify(args)}`;\n\n if (methodConfig) {\n return this.cache.wrap(\n cacheKey,\n () => {\n return target[funcName](...args);\n },\n methodConfig,\n );\n }\n\n return target[funcName](...args);\n };\n }\n return new Proxy(target[funcName], handler);\n },\n };\n\n //@ts-ignore\n const contract = getContract({\n //@ts-ignore\n client,\n address,\n abi,\n });\n return new Proxy(contract, handler) as any;\n }\n\n static init(): AIem<any, any, any> {\n if (!globalThis.aiem) {\n //@ts-ignore\n globalThis.aiem = new AIem();\n }\n\n return globalThis.aiem;\n }\n\n static async getPrice({ chainId = \"4689\", address }: { chainId?: string; address: string }) {\n const priceMap = await this.cache.wrap(\n `token-price`,\n async () => {\n const res = await (await fetch(\"https://api.iopay.me/api/rest/price\")).json();\n return Object.values(res)\n .flat()\n .reduce((p, c: { platforms: string; current_price: number }) => {\n p[`${4689}-${c.platforms.toLowerCase()}`] = c.current_price;\n return p;\n }, {});\n },\n { ttl: 1000 * 60 },\n );\n return priceMap[`${chainId}-${address}`];\n }\n\n static utils = {\n autoFormat: async ({ value, decimals, chainId, address }: { value: string; decimals?: number; chainId: string; address: string }) => {\n if (!decimals) {\n //@ts-ignore\n decimals = await this.cache.wrap(`${chainId}-${address}-decimals`, async () => {\n //@ts-ignore\n return this.Get(ERC20ABI, chainId, address).read.decimals();\n });\n }\n const wrap = helper.number.warpBigNumber(value, decimals, { format: \"0,0.000000\", fallback: \"\" });\n const price = await this.getPrice({ chainId, address: address.toLowerCase() });\n const usd = new BigNumber(wrap.originFormat).multipliedBy(price || 0).toFixed(2);\n return { ...wrap, usd, price };\n },\n };\n\n static QueryMany<E, S extends QuerySelect<E>>(entity: ClassType<E>, select: S) {\n return async (_entities: Partial<E>[]): Promise<QueryReturnType<E, S>[]> => {\n //@ts-ignore\n return this.Query(entity, select)(_entities) as any;\n };\n }\n\n static Query<E, S extends QuerySelect<E>>(entity: ClassType<E>, select: S) {\n return async (entities: Partial<E>): Promise<QueryReturnType<E, S>> => {\n const isArrayInput = Array.isArray(entities);\n\n try {\n const results: Array<QueryReturnType<E, S>> = [];\n\n if (!isArrayInput) {\n //@ts-ignore\n entities = [entities];\n }\n //@ts-ignore\n for (const entityData of entities) {\n const instance = Object.assign(new entity(), entityData);\n // const result: any = {};\n\n const fetchFields = async (obj: any, sel: any) => {\n const promises = [];\n for (const key in sel) {\n // return console.log(key, getFieldMetadata(obj, key))\n // Check if the property is annotated with @Fields.read(), @Fields.custom(), or @Fields.contract()\n const fieldMetadata = getFieldMetadata(obj, key);\n let call: any;\n //@ts-ignore\n const enableMulticall = entity.multicall == false ? false : true;\n // console.log(key, fieldMetadata, instance)\n if (sel[key] == false) {\n call = async () => null;\n } else {\n switch (fieldMetadata?.type) {\n case \"read\":\n if (Array.isArray(sel[key])) {\n //@ts-ignore\n call = () => this.Get(entity.abi, instance.chainId, instance.address, null, { multicall: enableMulticall }).read[key](sel[key]);\n } else {\n //@ts-ignore\n call = () => this.Get(entity.abi, instance.chainId, instance.address, null, { multicall: enableMulticall }).read[key]();\n }\n break;\n case \"write\":\n // @ts-ignore\n obj[key] = encodeFunctionData({\n //@ts-ignore\n abi: entity.abi,\n functionName: key,\n args: sel[key],\n });\n\n break;\n case \"custom\":\n const func = fieldMetadata.func;\n call = () => func(instance);\n break;\n case \"entity\":\n const targetMetadata = getFieldMetadata(instance, fieldMetadata.targetKey);\n\n if (typeof fieldMetadata.targetKey == \"string\") {\n if (targetMetadata?.options?.ttl) {\n //@ts-ignore\n const cacheKey = `call ${instance.chainId}-${instance.address}-${fieldMetadata.targetKey}`;\n //@ts-ignore\n call = () =>\n new Promise(async (resolve) => {\n //@ts-ignore\n const address = await this.cache.wrap(cacheKey, async () =>\n //@ts-ignore\n this.Get(entity.abi, instance.chainId, instance.address, null, { multicall: enableMulticall }).read[fieldMetadata.targetKey](),\n );\n //@ts-ignore\n resolve(this.Query(fieldMetadata.entity(), sel[key])({ address, chainId: instance.chainId }));\n });\n } else {\n call = () =>\n //@ts-ignore\n this.Get(entity.abi, instance.chainId, instance.address, null, { multicall: enableMulticall })\n //@ts-ignore\n .read[fieldMetadata.targetKey]()\n .then((address: any) => {\n // console.log({ address, sel: sel[key] })\n //@ts-ignore\n return this.Query(fieldMetadata.entity(), sel[key])({ address, chainId: instance.chainId });\n });\n }\n } else {\n //@ts-ignore\n call = () =>\n fieldMetadata.targetKey(instance).then((args) => {\n // console.log(args)\n return Array.isArray(args) ? this.QueryMany(fieldMetadata.entity(), sel[key])(args) : this.Query(fieldMetadata.entity(), sel[key])(args);\n });\n }\n break;\n default:\n if (typeof obj[key] == \"function\") {\n call = () => obj[key](...(Array.isArray(sel[key]) ? sel[key] : []));\n }\n break;\n }\n }\n\n if (call) {\n if (fieldMetadata?.options?.ttl) {\n //@ts-ignore\n const cacheKey = `call ${instance.chainId}-${instance.address}-${key}-${JSON.stringify(sel[key])}`;\n promises.push(\n new Promise(async (resolve) => {\n const value = await this.cache.wrap(cacheKey, async () => call().catch((i) => null), fieldMetadata.options);\n obj[key] = value;\n resolve(value);\n }),\n );\n } else {\n promises.push(\n call()\n .then((value) => {\n obj[key] = value;\n })\n .catch((i) => (obj[key] = null)),\n );\n }\n }\n }\n\n await Promise.all(promises);\n };\n\n await fetchFields(instance, select);\n //@ts-ignore\n results.push(instance);\n }\n\n if (isArrayInput) {\n return results as any;\n } else {\n return results[0] as any;\n }\n } catch (error) {\n if (isArrayInput) {\n return [] as any;\n } else {\n return null as any;\n }\n }\n };\n }\n}\nexport type Item<T> = T extends (infer U)[] ? U : T;\n\n// export type QueryResult<E, S extends QuerySelect<E>> =\n// E extends Array<any> ? Promise<Array<QueryReturnType<E[number], S>>> :\n// E extends object ? Promise<QueryReturnType<E, S>> :\n// never;\n\ntype QuerySelect<E> = {\n [K in keyof E]?: E[K] extends (...args: any[]) => any ? Parameters<E[K]> | boolean : E[K] extends object ? QuerySelect<Item<E[K]>> | boolean : boolean;\n};\n\n// type FunctionReturn<T> = T extends (...args: any[]) => any ? Awaited<ReturnType<T>> : T;\n// type NestedReturn<E, S> = E extends object ? S extends object ? QueryReturnType<E, S> : E : E;\n\nexport type QueryReturnType<E, S extends QuerySelect<E>> = {\n [K in keyof E]: K extends keyof S\n ? E[K] extends (...args: any[]) => any\n ? Awaited<ReturnType<E[K]>>\n : E[K] extends object\n ? S[K] extends object\n ? QueryReturnType<E[K], S[K]>\n : E[K]\n : E[K]\n : E[K];\n};\n","import \"reflect-metadata\";\nimport { ClassType } from \"./interface\";\n\nexport const FIELD_KEY = Symbol(\"aiem_field\");\n\nexport interface FieldParams {\n ttl?: number;\n}\n\nexport type ContractParams<T extends any = any, K extends keyof T = keyof T> = K;\n\nconst metadataCache = new WeakMap<any, Map<any, any>>();\n\nexport class Fields {\n static hide(options: any = {}) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"hide\", options });\n };\n }\n\n static read(options: any = {}) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"read\", options });\n };\n }\n\n static write(options: any = {}) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"write\", options });\n };\n }\n\n static custom(func: any = {}) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"custom\", func });\n };\n }\n\n static relation<T = any, R = any>(entity: () => ClassType<R>, options: ((e: T) => Promise<Partial<R> | Partial<R>[]>) | string) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"entity\", entity, targetKey: options });\n };\n }\n\n static contract<T = any, R = any>(entity: () => ClassType<R>, options: ((e: T) => Promise<Partial<R> | Partial<R>[]>) | string) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"entity\", entity, targetKey: options });\n };\n }\n private static setMetadata(target: any, propertyKey: any, metadata: any) {\n let targetMetadata = metadataCache.get(target);\n if (!targetMetadata) {\n targetMetadata = new Map<any, any>();\n metadataCache.set(target, targetMetadata);\n }\n targetMetadata.set(propertyKey, metadata);\n // @ts-ignore \n Reflect.defineMetadata(FIELD_KEY, metadata, target, propertyKey);\n }\n}\n\nexport function getFieldMetadata(target: any, propertyKey: string) {\n const targetMetadata = metadataCache.get(target);\n if (targetMetadata) {\n return targetMetadata.get(propertyKey);\n }\n // @ts-ignore \n return Reflect.getMetadata(FIELD_KEY, target, propertyKey);\n}\n","export const ERC20ABI = [{ \"inputs\": [{ \"internalType\": \"string\", \"name\": \"name\", \"type\": \"string\" }, { \"internalType\": \"string\", \"name\": \"symbol\", \"type\": \"string\" }, { \"internalType\": \"uint256\", \"name\": \"initialSupply\", \"type\": \"uint256\" }, { \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }], \"stateMutability\": \"nonpayable\", \"type\": \"constructor\" }, { \"anonymous\": false, \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }, { \"indexed\": true, \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }, { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" }], \"name\": \"Approval\", \"type\": \"event\" }, { \"anonymous\": false, \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"from\", \"type\": \"address\" }, { \"indexed\": true, \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" }, { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" }], \"name\": \"Transfer\", \"type\": \"event\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }, { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }], \"name\": \"allowance\", \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"approve\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }], \"name\": \"balanceOf\", \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"burn\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"burnFrom\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"decimals\", \"outputs\": [{ \"internalType\": \"uint8\", \"name\": \"\", \"type\": \"uint8\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"subtractedValue\", \"type\": \"uint256\" }], \"name\": \"decreaseAllowance\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"addedValue\", \"type\": \"uint256\" }], \"name\": \"increaseAllowance\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"name\", \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"symbol\", \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"totalSupply\", \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"recipient\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"transfer\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" }, { \"internalType\": \"address\", \"name\": \"recipient\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"transferFrom\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }] as const;"]}