@tradestack/paymaster 1.0.22

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/README.md +276 -0
  2. package/dist/backend/config/chains.d.ts +18 -0
  3. package/dist/backend/config/chains.d.ts.map +1 -0
  4. package/dist/backend/config/chains.js +45 -0
  5. package/dist/backend/config/chains.js.map +1 -0
  6. package/dist/backend/config/constants.d.ts +58 -0
  7. package/dist/backend/config/constants.d.ts.map +1 -0
  8. package/dist/backend/config/constants.js +165 -0
  9. package/dist/backend/config/constants.js.map +1 -0
  10. package/dist/backend/config/db.context.d.ts +5 -0
  11. package/dist/backend/config/db.context.d.ts.map +1 -0
  12. package/dist/backend/config/db.context.js +63 -0
  13. package/dist/backend/config/db.context.js.map +1 -0
  14. package/dist/backend/config/db.d.ts +5 -0
  15. package/dist/backend/config/db.d.ts.map +1 -0
  16. package/dist/backend/config/db.js +35 -0
  17. package/dist/backend/config/db.js.map +1 -0
  18. package/dist/backend/config/index.d.ts +16 -0
  19. package/dist/backend/config/index.d.ts.map +1 -0
  20. package/dist/backend/config/index.js +44 -0
  21. package/dist/backend/config/index.js.map +1 -0
  22. package/dist/backend/contract/abi/ERC20Abi.json +413 -0
  23. package/dist/backend/contract/abi/HalalPaymasterAbi.json +544 -0
  24. package/dist/backend/contract/abi/entryPointAbi.json +166 -0
  25. package/dist/backend/contract/constant.d.ts +4 -0
  26. package/dist/backend/contract/constant.d.ts.map +1 -0
  27. package/dist/backend/contract/constant.js +7 -0
  28. package/dist/backend/contract/constant.js.map +1 -0
  29. package/dist/backend/contract/contract.d.ts +11 -0
  30. package/dist/backend/contract/contract.d.ts.map +1 -0
  31. package/dist/backend/contract/contract.js +34 -0
  32. package/dist/backend/contract/contract.js.map +1 -0
  33. package/dist/backend/helper/hotwallet.d.ts +4 -0
  34. package/dist/backend/helper/hotwallet.d.ts.map +1 -0
  35. package/dist/backend/helper/hotwallet.js +25 -0
  36. package/dist/backend/helper/hotwallet.js.map +1 -0
  37. package/dist/backend/services/chains/evm.service.d.ts +5760 -0
  38. package/dist/backend/services/chains/evm.service.d.ts.map +1 -0
  39. package/dist/backend/services/chains/evm.service.js +263 -0
  40. package/dist/backend/services/chains/evm.service.js.map +1 -0
  41. package/dist/backend/services/chains/solana.service.d.ts +15 -0
  42. package/dist/backend/services/chains/solana.service.d.ts.map +1 -0
  43. package/dist/backend/services/chains/solana.service.js +192 -0
  44. package/dist/backend/services/chains/solana.service.js.map +1 -0
  45. package/dist/backend/services/chains/tron.service.d.ts +14 -0
  46. package/dist/backend/services/chains/tron.service.d.ts.map +1 -0
  47. package/dist/backend/services/chains/tron.service.js +255 -0
  48. package/dist/backend/services/chains/tron.service.js.map +1 -0
  49. package/dist/backend/services/paymaster.service.d.ts +3 -0
  50. package/dist/backend/services/paymaster.service.d.ts.map +1 -0
  51. package/dist/backend/services/paymaster.service.js +55 -0
  52. package/dist/backend/services/paymaster.service.js.map +1 -0
  53. package/dist/backend/services/sweep.service.d.ts +14 -0
  54. package/dist/backend/services/sweep.service.d.ts.map +1 -0
  55. package/dist/backend/services/sweep.service.js +103 -0
  56. package/dist/backend/services/sweep.service.js.map +1 -0
  57. package/dist/backend/services/sweep.worker.d.ts +11 -0
  58. package/dist/backend/services/sweep.worker.d.ts.map +1 -0
  59. package/dist/backend/services/sweep.worker.js +163 -0
  60. package/dist/backend/services/sweep.worker.js.map +1 -0
  61. package/dist/backend/services/sweeper/evm.sweep.service.d.ts +13 -0
  62. package/dist/backend/services/sweeper/evm.sweep.service.d.ts.map +1 -0
  63. package/dist/backend/services/sweeper/evm.sweep.service.js +61 -0
  64. package/dist/backend/services/sweeper/evm.sweep.service.js.map +1 -0
  65. package/dist/backend/services/sweeper/solana.sweep.service.d.ts +13 -0
  66. package/dist/backend/services/sweeper/solana.sweep.service.d.ts.map +1 -0
  67. package/dist/backend/services/sweeper/solana.sweep.service.js +45 -0
  68. package/dist/backend/services/sweeper/solana.sweep.service.js.map +1 -0
  69. package/dist/backend/services/sweeper/tron.sweep.service.d.ts +13 -0
  70. package/dist/backend/services/sweeper/tron.sweep.service.d.ts.map +1 -0
  71. package/dist/backend/services/sweeper/tron.sweep.service.js +45 -0
  72. package/dist/backend/services/sweeper/tron.sweep.service.js.map +1 -0
  73. package/dist/sdk/db/adapter.d.ts +25 -0
  74. package/dist/sdk/db/adapter.d.ts.map +1 -0
  75. package/dist/sdk/db/adapter.js +145 -0
  76. package/dist/sdk/db/adapter.js.map +1 -0
  77. package/dist/sdk/index.d.ts +27 -0
  78. package/dist/sdk/index.d.ts.map +1 -0
  79. package/dist/sdk/index.js +274 -0
  80. package/dist/sdk/index.js.map +1 -0
  81. package/dist/sdk/types.d.ts +66 -0
  82. package/dist/sdk/types.d.ts.map +1 -0
  83. package/dist/sdk/types.js +3 -0
  84. package/dist/sdk/types.js.map +1 -0
  85. package/package.json +55 -0
@@ -0,0 +1,5 @@
1
+ import { Pool } from "pg";
2
+ declare const pool: Pool;
3
+ export declare const connectDB: () => Promise<void>;
4
+ export default pool;
5
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/backend/config/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG1B,QAAA,MAAM,IAAI,MAKR,CAAC;AAWH,eAAO,MAAM,SAAS,qBASrB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.connectDB = void 0;
7
+ const pg_1 = require("pg");
8
+ const index_1 = __importDefault(require("./index"));
9
+ const pool = new pg_1.Pool({
10
+ connectionString: index_1.default.databaseUrl,
11
+ max: 20,
12
+ idleTimeoutMillis: 30000,
13
+ connectionTimeoutMillis: 2000,
14
+ });
15
+ pool.on("connect", () => {
16
+ console.log("PostgreSQL connected");
17
+ });
18
+ pool.on("error", (err) => {
19
+ console.error("PostgreSQL pool error:", err);
20
+ process.exit(1);
21
+ });
22
+ const connectDB = async () => {
23
+ try {
24
+ const client = await pool.connect();
25
+ console.log("PostgreSQL connection established");
26
+ client.release();
27
+ }
28
+ catch (err) {
29
+ console.error("Failed to connect to PostgreSQL:", err);
30
+ process.exit(1);
31
+ }
32
+ };
33
+ exports.connectDB = connectDB;
34
+ exports.default = pool;
35
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/backend/config/db.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA0B;AAC1B,oDAA6B;AAE7B,MAAM,IAAI,GAAG,IAAI,SAAI,CAAC;IACpB,gBAAgB,EAAE,eAAM,CAAC,WAAW;IACpC,GAAG,EAAE,EAAE;IACP,iBAAiB,EAAE,KAAK;IACxB,uBAAuB,EAAE,IAAI;CAC9B,CAAC,CAAC;AAEH,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEI,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AATW,QAAA,SAAS,aASpB;AAEF,kBAAe,IAAI,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare const config: {
2
+ port: string | number;
3
+ nodeEnv: string;
4
+ signerPrivateKey: string;
5
+ hotWalletAddress: string;
6
+ databaseUrl: string;
7
+ maxGasPerOp: string;
8
+ signatureExpirySeconds: number;
9
+ sweepThresholdUsd: number;
10
+ sweepIntervalMs: number;
11
+ reserveAlertThreshold: number;
12
+ paymasterLowBalanceThreshold: string;
13
+ reserveMonitorIntervalMs: number;
14
+ };
15
+ export default config;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/config/index.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,MAAM;;;;;;;;;;;;;CA2BX,CAAC;AAgBF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const dotenv_1 = __importDefault(require("dotenv"));
7
+ const constants_1 = require("./constants");
8
+ dotenv_1.default.config();
9
+ const config = {
10
+ // server
11
+ port: process.env.PORT || 3000,
12
+ nodeEnv: process.env.NODE_ENV || "development",
13
+ // blockchain
14
+ signerPrivateKey: process.env.SIGNER_PRIVATE_KEY,
15
+ hotWalletAddress: constants_1.HOT_WALLET_ADDRESS_EVM,
16
+ // database
17
+ databaseUrl: process.env.DATABASE_URL,
18
+ // internal api
19
+ // internalApiKey: process.env.INTERNAL_API_KEY!,
20
+ // paymaster
21
+ maxGasPerOp: constants_1.MAX_GAS_PER_OP,
22
+ signatureExpirySeconds: constants_1.SIGNATURE_EXPIRY_SECONDS,
23
+ // sweep
24
+ sweepThresholdUsd: constants_1.SWEEP_THRESHOLD_USD,
25
+ sweepIntervalMs: constants_1.SWEEP_INTERVAL_MS,
26
+ // monitoring
27
+ reserveAlertThreshold: constants_1.RESERVE_ALERT_THRESHOLD,
28
+ paymasterLowBalanceThreshold: constants_1.PAYMASTER_LOW_BALANCE_THRESHOLD,
29
+ reserveMonitorIntervalMs: constants_1.RESERVE_MONITOR_INTERVAL_MS,
30
+ };
31
+ const required = [
32
+ "SIGNER_PRIVATE_KEY",
33
+ "DATABASE_URL",
34
+ // "INTERNAL_API_KEY",
35
+ "PIMLICO_API_KEY",
36
+ // "HD_MNEMONIC",
37
+ ];
38
+ for (const key of required) {
39
+ if (!process.env[key]) {
40
+ throw new Error(`Missing required environment variable: ${key}`);
41
+ }
42
+ }
43
+ exports.default = config;
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/backend/config/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,2CASqB;AAErB,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,MAAM,GAAG;IACb,SAAS;IACT,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;IAC9B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;IAE9C,aAAa;IACb,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAmB;IACjD,gBAAgB,EAAE,kCAAsB;IAExC,WAAW;IACX,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAa;IAEtC,eAAe;IACf,iDAAiD;IAEjD,YAAY;IACZ,WAAW,EAAE,0BAAc;IAC3B,sBAAsB,EAAE,oCAAwB;IAEhD,QAAQ;IACR,iBAAiB,EAAE,+BAAmB;IACtC,eAAe,EAAE,6BAAiB;IAElC,aAAa;IACb,qBAAqB,EAAE,mCAAuB;IAC9C,4BAA4B,EAAE,2CAA+B;IAC7D,wBAAwB,EAAE,uCAA2B;CACtD,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf,oBAAoB;IACpB,cAAc;IACd,sBAAsB;IACtB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,413 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ {
5
+ "internalType": "address",
6
+ "name": "spender",
7
+ "type": "address"
8
+ },
9
+ {
10
+ "internalType": "uint256",
11
+ "name": "value",
12
+ "type": "uint256"
13
+ }
14
+ ],
15
+ "name": "approve",
16
+ "outputs": [
17
+ {
18
+ "internalType": "bool",
19
+ "name": "",
20
+ "type": "bool"
21
+ }
22
+ ],
23
+ "stateMutability": "nonpayable",
24
+ "type": "function"
25
+ },
26
+ {
27
+ "inputs": [
28
+ {
29
+ "internalType": "address",
30
+ "name": "owner",
31
+ "type": "address"
32
+ }
33
+ ],
34
+ "stateMutability": "nonpayable",
35
+ "type": "constructor"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "address",
41
+ "name": "spender",
42
+ "type": "address"
43
+ },
44
+ {
45
+ "internalType": "uint256",
46
+ "name": "allowance",
47
+ "type": "uint256"
48
+ },
49
+ {
50
+ "internalType": "uint256",
51
+ "name": "needed",
52
+ "type": "uint256"
53
+ }
54
+ ],
55
+ "name": "ERC20InsufficientAllowance",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [
60
+ {
61
+ "internalType": "address",
62
+ "name": "sender",
63
+ "type": "address"
64
+ },
65
+ {
66
+ "internalType": "uint256",
67
+ "name": "balance",
68
+ "type": "uint256"
69
+ },
70
+ {
71
+ "internalType": "uint256",
72
+ "name": "needed",
73
+ "type": "uint256"
74
+ }
75
+ ],
76
+ "name": "ERC20InsufficientBalance",
77
+ "type": "error"
78
+ },
79
+ {
80
+ "inputs": [
81
+ {
82
+ "internalType": "address",
83
+ "name": "approver",
84
+ "type": "address"
85
+ }
86
+ ],
87
+ "name": "ERC20InvalidApprover",
88
+ "type": "error"
89
+ },
90
+ {
91
+ "inputs": [
92
+ {
93
+ "internalType": "address",
94
+ "name": "receiver",
95
+ "type": "address"
96
+ }
97
+ ],
98
+ "name": "ERC20InvalidReceiver",
99
+ "type": "error"
100
+ },
101
+ {
102
+ "inputs": [
103
+ {
104
+ "internalType": "address",
105
+ "name": "sender",
106
+ "type": "address"
107
+ }
108
+ ],
109
+ "name": "ERC20InvalidSender",
110
+ "type": "error"
111
+ },
112
+ {
113
+ "inputs": [
114
+ {
115
+ "internalType": "address",
116
+ "name": "spender",
117
+ "type": "address"
118
+ }
119
+ ],
120
+ "name": "ERC20InvalidSpender",
121
+ "type": "error"
122
+ },
123
+ {
124
+ "inputs": [
125
+ {
126
+ "internalType": "address",
127
+ "name": "to",
128
+ "type": "address"
129
+ },
130
+ {
131
+ "internalType": "uint256",
132
+ "name": "amount",
133
+ "type": "uint256"
134
+ }
135
+ ],
136
+ "name": "mint",
137
+ "outputs": [],
138
+ "stateMutability": "nonpayable",
139
+ "type": "function"
140
+ },
141
+ {
142
+ "inputs": [
143
+ {
144
+ "internalType": "address",
145
+ "name": "owner",
146
+ "type": "address"
147
+ }
148
+ ],
149
+ "name": "OwnableInvalidOwner",
150
+ "type": "error"
151
+ },
152
+ {
153
+ "inputs": [
154
+ {
155
+ "internalType": "address",
156
+ "name": "account",
157
+ "type": "address"
158
+ }
159
+ ],
160
+ "name": "OwnableUnauthorizedAccount",
161
+ "type": "error"
162
+ },
163
+ {
164
+ "anonymous": false,
165
+ "inputs": [
166
+ {
167
+ "indexed": true,
168
+ "internalType": "address",
169
+ "name": "owner",
170
+ "type": "address"
171
+ },
172
+ {
173
+ "indexed": true,
174
+ "internalType": "address",
175
+ "name": "spender",
176
+ "type": "address"
177
+ },
178
+ {
179
+ "indexed": false,
180
+ "internalType": "uint256",
181
+ "name": "value",
182
+ "type": "uint256"
183
+ }
184
+ ],
185
+ "name": "Approval",
186
+ "type": "event"
187
+ },
188
+ {
189
+ "anonymous": false,
190
+ "inputs": [
191
+ {
192
+ "indexed": true,
193
+ "internalType": "address",
194
+ "name": "previousOwner",
195
+ "type": "address"
196
+ },
197
+ {
198
+ "indexed": true,
199
+ "internalType": "address",
200
+ "name": "newOwner",
201
+ "type": "address"
202
+ }
203
+ ],
204
+ "name": "OwnershipTransferred",
205
+ "type": "event"
206
+ },
207
+ {
208
+ "inputs": [],
209
+ "name": "renounceOwnership",
210
+ "outputs": [],
211
+ "stateMutability": "nonpayable",
212
+ "type": "function"
213
+ },
214
+ {
215
+ "inputs": [
216
+ {
217
+ "internalType": "address",
218
+ "name": "to",
219
+ "type": "address"
220
+ },
221
+ {
222
+ "internalType": "uint256",
223
+ "name": "value",
224
+ "type": "uint256"
225
+ }
226
+ ],
227
+ "name": "transfer",
228
+ "outputs": [
229
+ {
230
+ "internalType": "bool",
231
+ "name": "",
232
+ "type": "bool"
233
+ }
234
+ ],
235
+ "stateMutability": "nonpayable",
236
+ "type": "function"
237
+ },
238
+ {
239
+ "anonymous": false,
240
+ "inputs": [
241
+ {
242
+ "indexed": true,
243
+ "internalType": "address",
244
+ "name": "from",
245
+ "type": "address"
246
+ },
247
+ {
248
+ "indexed": true,
249
+ "internalType": "address",
250
+ "name": "to",
251
+ "type": "address"
252
+ },
253
+ {
254
+ "indexed": false,
255
+ "internalType": "uint256",
256
+ "name": "value",
257
+ "type": "uint256"
258
+ }
259
+ ],
260
+ "name": "Transfer",
261
+ "type": "event"
262
+ },
263
+ {
264
+ "inputs": [
265
+ {
266
+ "internalType": "address",
267
+ "name": "from",
268
+ "type": "address"
269
+ },
270
+ {
271
+ "internalType": "address",
272
+ "name": "to",
273
+ "type": "address"
274
+ },
275
+ {
276
+ "internalType": "uint256",
277
+ "name": "value",
278
+ "type": "uint256"
279
+ }
280
+ ],
281
+ "name": "transferFrom",
282
+ "outputs": [
283
+ {
284
+ "internalType": "bool",
285
+ "name": "",
286
+ "type": "bool"
287
+ }
288
+ ],
289
+ "stateMutability": "nonpayable",
290
+ "type": "function"
291
+ },
292
+ {
293
+ "inputs": [
294
+ {
295
+ "internalType": "address",
296
+ "name": "newOwner",
297
+ "type": "address"
298
+ }
299
+ ],
300
+ "name": "transferOwnership",
301
+ "outputs": [],
302
+ "stateMutability": "nonpayable",
303
+ "type": "function"
304
+ },
305
+ {
306
+ "inputs": [
307
+ {
308
+ "internalType": "address",
309
+ "name": "owner",
310
+ "type": "address"
311
+ },
312
+ {
313
+ "internalType": "address",
314
+ "name": "spender",
315
+ "type": "address"
316
+ }
317
+ ],
318
+ "name": "allowance",
319
+ "outputs": [
320
+ {
321
+ "internalType": "uint256",
322
+ "name": "",
323
+ "type": "uint256"
324
+ }
325
+ ],
326
+ "stateMutability": "view",
327
+ "type": "function"
328
+ },
329
+ {
330
+ "inputs": [
331
+ {
332
+ "internalType": "address",
333
+ "name": "account",
334
+ "type": "address"
335
+ }
336
+ ],
337
+ "name": "balanceOf",
338
+ "outputs": [
339
+ {
340
+ "internalType": "uint256",
341
+ "name": "",
342
+ "type": "uint256"
343
+ }
344
+ ],
345
+ "stateMutability": "view",
346
+ "type": "function"
347
+ },
348
+ {
349
+ "inputs": [],
350
+ "name": "decimals",
351
+ "outputs": [
352
+ {
353
+ "internalType": "uint8",
354
+ "name": "",
355
+ "type": "uint8"
356
+ }
357
+ ],
358
+ "stateMutability": "view",
359
+ "type": "function"
360
+ },
361
+ {
362
+ "inputs": [],
363
+ "name": "name",
364
+ "outputs": [
365
+ {
366
+ "internalType": "string",
367
+ "name": "",
368
+ "type": "string"
369
+ }
370
+ ],
371
+ "stateMutability": "view",
372
+ "type": "function"
373
+ },
374
+ {
375
+ "inputs": [],
376
+ "name": "owner",
377
+ "outputs": [
378
+ {
379
+ "internalType": "address",
380
+ "name": "",
381
+ "type": "address"
382
+ }
383
+ ],
384
+ "stateMutability": "view",
385
+ "type": "function"
386
+ },
387
+ {
388
+ "inputs": [],
389
+ "name": "symbol",
390
+ "outputs": [
391
+ {
392
+ "internalType": "string",
393
+ "name": "",
394
+ "type": "string"
395
+ }
396
+ ],
397
+ "stateMutability": "view",
398
+ "type": "function"
399
+ },
400
+ {
401
+ "inputs": [],
402
+ "name": "totalSupply",
403
+ "outputs": [
404
+ {
405
+ "internalType": "uint256",
406
+ "name": "",
407
+ "type": "uint256"
408
+ }
409
+ ],
410
+ "stateMutability": "view",
411
+ "type": "function"
412
+ }
413
+ ]