@gitmyabi/publx 1.0.0

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.
@@ -0,0 +1,856 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PUBLX_json = exports.PUBLX_jsonAbi = void 0;
4
+ const viem_1 = require("viem");
5
+ /**
6
+ * PUBLX_json ABI
7
+ *
8
+ * This ABI is typed using viem's type system for full type safety.
9
+ */
10
+ exports.PUBLX_jsonAbi = [
11
+ {
12
+ "constant": true,
13
+ "inputs": [],
14
+ "name": "name",
15
+ "outputs": [
16
+ {
17
+ "name": "",
18
+ "type": "string"
19
+ }
20
+ ],
21
+ "payable": false,
22
+ "stateMutability": "view",
23
+ "type": "function"
24
+ },
25
+ {
26
+ "constant": false,
27
+ "inputs": [
28
+ {
29
+ "name": "spender",
30
+ "type": "address"
31
+ },
32
+ {
33
+ "name": "value",
34
+ "type": "uint256"
35
+ }
36
+ ],
37
+ "name": "approve",
38
+ "outputs": [
39
+ {
40
+ "name": "",
41
+ "type": "bool"
42
+ }
43
+ ],
44
+ "payable": false,
45
+ "stateMutability": "nonpayable",
46
+ "type": "function"
47
+ },
48
+ {
49
+ "constant": true,
50
+ "inputs": [],
51
+ "name": "totalSupply",
52
+ "outputs": [
53
+ {
54
+ "name": "",
55
+ "type": "uint256"
56
+ }
57
+ ],
58
+ "payable": false,
59
+ "stateMutability": "view",
60
+ "type": "function"
61
+ },
62
+ {
63
+ "constant": false,
64
+ "inputs": [
65
+ {
66
+ "name": "from",
67
+ "type": "address"
68
+ },
69
+ {
70
+ "name": "to",
71
+ "type": "address"
72
+ },
73
+ {
74
+ "name": "value",
75
+ "type": "uint256"
76
+ }
77
+ ],
78
+ "name": "transferFrom",
79
+ "outputs": [
80
+ {
81
+ "name": "",
82
+ "type": "bool"
83
+ }
84
+ ],
85
+ "payable": false,
86
+ "stateMutability": "nonpayable",
87
+ "type": "function"
88
+ },
89
+ {
90
+ "constant": true,
91
+ "inputs": [],
92
+ "name": "INITIAL_SUPPLY",
93
+ "outputs": [
94
+ {
95
+ "name": "",
96
+ "type": "uint256"
97
+ }
98
+ ],
99
+ "payable": false,
100
+ "stateMutability": "view",
101
+ "type": "function"
102
+ },
103
+ {
104
+ "constant": true,
105
+ "inputs": [],
106
+ "name": "decimals",
107
+ "outputs": [
108
+ {
109
+ "name": "",
110
+ "type": "uint8"
111
+ }
112
+ ],
113
+ "payable": false,
114
+ "stateMutability": "view",
115
+ "type": "function"
116
+ },
117
+ {
118
+ "constant": false,
119
+ "inputs": [
120
+ {
121
+ "name": "spender",
122
+ "type": "address"
123
+ },
124
+ {
125
+ "name": "addedValue",
126
+ "type": "uint256"
127
+ }
128
+ ],
129
+ "name": "increaseAllowance",
130
+ "outputs": [
131
+ {
132
+ "name": "success",
133
+ "type": "bool"
134
+ }
135
+ ],
136
+ "payable": false,
137
+ "stateMutability": "nonpayable",
138
+ "type": "function"
139
+ },
140
+ {
141
+ "constant": false,
142
+ "inputs": [],
143
+ "name": "unpause",
144
+ "outputs": [],
145
+ "payable": false,
146
+ "stateMutability": "nonpayable",
147
+ "type": "function"
148
+ },
149
+ {
150
+ "constant": true,
151
+ "inputs": [
152
+ {
153
+ "name": "account",
154
+ "type": "address"
155
+ }
156
+ ],
157
+ "name": "isPauser",
158
+ "outputs": [
159
+ {
160
+ "name": "",
161
+ "type": "bool"
162
+ }
163
+ ],
164
+ "payable": false,
165
+ "stateMutability": "view",
166
+ "type": "function"
167
+ },
168
+ {
169
+ "constant": true,
170
+ "inputs": [],
171
+ "name": "paused",
172
+ "outputs": [
173
+ {
174
+ "name": "",
175
+ "type": "bool"
176
+ }
177
+ ],
178
+ "payable": false,
179
+ "stateMutability": "view",
180
+ "type": "function"
181
+ },
182
+ {
183
+ "constant": false,
184
+ "inputs": [],
185
+ "name": "renouncePauser",
186
+ "outputs": [],
187
+ "payable": false,
188
+ "stateMutability": "nonpayable",
189
+ "type": "function"
190
+ },
191
+ {
192
+ "constant": true,
193
+ "inputs": [
194
+ {
195
+ "name": "owner",
196
+ "type": "address"
197
+ }
198
+ ],
199
+ "name": "balanceOf",
200
+ "outputs": [
201
+ {
202
+ "name": "",
203
+ "type": "uint256"
204
+ }
205
+ ],
206
+ "payable": false,
207
+ "stateMutability": "view",
208
+ "type": "function"
209
+ },
210
+ {
211
+ "constant": false,
212
+ "inputs": [
213
+ {
214
+ "name": "account",
215
+ "type": "address"
216
+ }
217
+ ],
218
+ "name": "addPauser",
219
+ "outputs": [],
220
+ "payable": false,
221
+ "stateMutability": "nonpayable",
222
+ "type": "function"
223
+ },
224
+ {
225
+ "constant": false,
226
+ "inputs": [],
227
+ "name": "pause",
228
+ "outputs": [],
229
+ "payable": false,
230
+ "stateMutability": "nonpayable",
231
+ "type": "function"
232
+ },
233
+ {
234
+ "constant": true,
235
+ "inputs": [],
236
+ "name": "symbol",
237
+ "outputs": [
238
+ {
239
+ "name": "",
240
+ "type": "string"
241
+ }
242
+ ],
243
+ "payable": false,
244
+ "stateMutability": "view",
245
+ "type": "function"
246
+ },
247
+ {
248
+ "constant": false,
249
+ "inputs": [
250
+ {
251
+ "name": "spender",
252
+ "type": "address"
253
+ },
254
+ {
255
+ "name": "subtractedValue",
256
+ "type": "uint256"
257
+ }
258
+ ],
259
+ "name": "decreaseAllowance",
260
+ "outputs": [
261
+ {
262
+ "name": "success",
263
+ "type": "bool"
264
+ }
265
+ ],
266
+ "payable": false,
267
+ "stateMutability": "nonpayable",
268
+ "type": "function"
269
+ },
270
+ {
271
+ "constant": false,
272
+ "inputs": [
273
+ {
274
+ "name": "to",
275
+ "type": "address"
276
+ },
277
+ {
278
+ "name": "value",
279
+ "type": "uint256"
280
+ }
281
+ ],
282
+ "name": "transfer",
283
+ "outputs": [
284
+ {
285
+ "name": "",
286
+ "type": "bool"
287
+ }
288
+ ],
289
+ "payable": false,
290
+ "stateMutability": "nonpayable",
291
+ "type": "function"
292
+ },
293
+ {
294
+ "constant": true,
295
+ "inputs": [
296
+ {
297
+ "name": "owner",
298
+ "type": "address"
299
+ },
300
+ {
301
+ "name": "spender",
302
+ "type": "address"
303
+ }
304
+ ],
305
+ "name": "allowance",
306
+ "outputs": [
307
+ {
308
+ "name": "",
309
+ "type": "uint256"
310
+ }
311
+ ],
312
+ "payable": false,
313
+ "stateMutability": "view",
314
+ "type": "function"
315
+ },
316
+ {
317
+ "inputs": [
318
+ {
319
+ "name": "reserveAddress",
320
+ "type": "address"
321
+ }
322
+ ],
323
+ "payable": false,
324
+ "stateMutability": "nonpayable",
325
+ "type": "constructor"
326
+ },
327
+ {
328
+ "anonymous": false,
329
+ "inputs": [
330
+ {
331
+ "indexed": false,
332
+ "name": "account",
333
+ "type": "address"
334
+ }
335
+ ],
336
+ "name": "Paused",
337
+ "type": "event"
338
+ },
339
+ {
340
+ "anonymous": false,
341
+ "inputs": [
342
+ {
343
+ "indexed": false,
344
+ "name": "account",
345
+ "type": "address"
346
+ }
347
+ ],
348
+ "name": "Unpaused",
349
+ "type": "event"
350
+ },
351
+ {
352
+ "anonymous": false,
353
+ "inputs": [
354
+ {
355
+ "indexed": true,
356
+ "name": "account",
357
+ "type": "address"
358
+ }
359
+ ],
360
+ "name": "PauserAdded",
361
+ "type": "event"
362
+ },
363
+ {
364
+ "anonymous": false,
365
+ "inputs": [
366
+ {
367
+ "indexed": true,
368
+ "name": "account",
369
+ "type": "address"
370
+ }
371
+ ],
372
+ "name": "PauserRemoved",
373
+ "type": "event"
374
+ },
375
+ {
376
+ "anonymous": false,
377
+ "inputs": [
378
+ {
379
+ "indexed": true,
380
+ "name": "from",
381
+ "type": "address"
382
+ },
383
+ {
384
+ "indexed": true,
385
+ "name": "to",
386
+ "type": "address"
387
+ },
388
+ {
389
+ "indexed": false,
390
+ "name": "value",
391
+ "type": "uint256"
392
+ }
393
+ ],
394
+ "name": "Transfer",
395
+ "type": "event"
396
+ },
397
+ {
398
+ "anonymous": false,
399
+ "inputs": [
400
+ {
401
+ "indexed": true,
402
+ "name": "owner",
403
+ "type": "address"
404
+ },
405
+ {
406
+ "indexed": true,
407
+ "name": "spender",
408
+ "type": "address"
409
+ },
410
+ {
411
+ "indexed": false,
412
+ "name": "value",
413
+ "type": "uint256"
414
+ }
415
+ ],
416
+ "name": "Approval",
417
+ "type": "event"
418
+ }
419
+ ];
420
+ /**
421
+ * PUBLX_json Contract Class
422
+ *
423
+ * Provides a class-based API similar to TypeChain for interacting with the contract.
424
+ *
425
+ * @example
426
+ * ```typescript
427
+ * import { createPublicClient, createWalletClient, http } from 'viem';
428
+ * import { mainnet } from 'viem/chains';
429
+ * import { PUBLX_json } from 'PUBLX_json';
430
+ *
431
+ * const publicClient = createPublicClient({ chain: mainnet, transport: http() });
432
+ * const walletClient = createWalletClient({ chain: mainnet, transport: http() });
433
+ *
434
+ * const contract = new PUBLX_json('0x...', { publicClient, walletClient });
435
+ *
436
+ * // Read functions
437
+ * const result = await contract.balanceOf('0x...');
438
+ *
439
+ * // Write functions
440
+ * const hash = await contract.transfer('0x...', 1000n);
441
+ *
442
+ * // Simulate transactions (dry-run)
443
+ * const simulation = await contract.simulate.transfer('0x...', 1000n);
444
+ * console.log('Gas estimate:', simulation.request.gas);
445
+ *
446
+ * // Watch events
447
+ * const unwatch = contract.watch.Transfer((event) => {
448
+ * console.log('Transfer event:', event);
449
+ * });
450
+ * ```
451
+ */
452
+ class PUBLX_json {
453
+ constructor(address, clients) {
454
+ this.contractAddress = address;
455
+ this.publicClient = clients.publicClient;
456
+ this.contract = (0, viem_1.getContract)({
457
+ address,
458
+ abi: exports.PUBLX_jsonAbi,
459
+ client: {
460
+ public: clients.publicClient,
461
+ wallet: clients.walletClient,
462
+ },
463
+ });
464
+ }
465
+ /**
466
+ * Get the contract address
467
+ */
468
+ get address() {
469
+ return this.contractAddress;
470
+ }
471
+ /**
472
+ * Get the underlying viem contract instance
473
+ */
474
+ getContract() {
475
+ return this.contract;
476
+ }
477
+ /**
478
+ * name
479
+ * view
480
+ */
481
+ async name() {
482
+ return this.contract.read.name();
483
+ }
484
+ /**
485
+ * totalSupply
486
+ * view
487
+ */
488
+ async totalSupply() {
489
+ return this.contract.read.totalSupply();
490
+ }
491
+ /**
492
+ * INITIAL_SUPPLY
493
+ * view
494
+ */
495
+ async INITIAL_SUPPLY() {
496
+ return this.contract.read.INITIAL_SUPPLY();
497
+ }
498
+ /**
499
+ * decimals
500
+ * view
501
+ */
502
+ async decimals() {
503
+ return this.contract.read.decimals();
504
+ }
505
+ /**
506
+ * isPauser
507
+ * view
508
+ */
509
+ async isPauser(account) {
510
+ return this.contract.read.isPauser([account]);
511
+ }
512
+ /**
513
+ * paused
514
+ * view
515
+ */
516
+ async paused() {
517
+ return this.contract.read.paused();
518
+ }
519
+ /**
520
+ * balanceOf
521
+ * view
522
+ */
523
+ async balanceOf(owner) {
524
+ return this.contract.read.balanceOf([owner]);
525
+ }
526
+ /**
527
+ * symbol
528
+ * view
529
+ */
530
+ async symbol() {
531
+ return this.contract.read.symbol();
532
+ }
533
+ /**
534
+ * allowance
535
+ * view
536
+ */
537
+ async allowance(owner, spender) {
538
+ return this.contract.read.allowance([owner, spender]);
539
+ }
540
+ /**
541
+ * approve
542
+ * nonpayable
543
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
544
+ */
545
+ async approve(spender, value, options) {
546
+ if (!this.contract.write) {
547
+ throw new Error('Wallet client is required for write operations');
548
+ }
549
+ return this.contract.write.approve([spender, value], options);
550
+ }
551
+ /**
552
+ * transferFrom
553
+ * nonpayable
554
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
555
+ */
556
+ async transferFrom(from, to, value, options) {
557
+ if (!this.contract.write) {
558
+ throw new Error('Wallet client is required for write operations');
559
+ }
560
+ return this.contract.write.transferFrom([from, to, value], options);
561
+ }
562
+ /**
563
+ * increaseAllowance
564
+ * nonpayable
565
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
566
+ */
567
+ async increaseAllowance(spender, addedValue, options) {
568
+ if (!this.contract.write) {
569
+ throw new Error('Wallet client is required for write operations');
570
+ }
571
+ return this.contract.write.increaseAllowance([spender, addedValue], options);
572
+ }
573
+ /**
574
+ * unpause
575
+ * nonpayable
576
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
577
+ */
578
+ async unpause(options) {
579
+ if (!this.contract.write) {
580
+ throw new Error('Wallet client is required for write operations');
581
+ }
582
+ return this.contract.write.unpause(options);
583
+ }
584
+ /**
585
+ * renouncePauser
586
+ * nonpayable
587
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
588
+ */
589
+ async renouncePauser(options) {
590
+ if (!this.contract.write) {
591
+ throw new Error('Wallet client is required for write operations');
592
+ }
593
+ return this.contract.write.renouncePauser(options);
594
+ }
595
+ /**
596
+ * addPauser
597
+ * nonpayable
598
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
599
+ */
600
+ async addPauser(account, options) {
601
+ if (!this.contract.write) {
602
+ throw new Error('Wallet client is required for write operations');
603
+ }
604
+ return this.contract.write.addPauser([account], options);
605
+ }
606
+ /**
607
+ * pause
608
+ * nonpayable
609
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
610
+ */
611
+ async pause(options) {
612
+ if (!this.contract.write) {
613
+ throw new Error('Wallet client is required for write operations');
614
+ }
615
+ return this.contract.write.pause(options);
616
+ }
617
+ /**
618
+ * decreaseAllowance
619
+ * nonpayable
620
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
621
+ */
622
+ async decreaseAllowance(spender, subtractedValue, options) {
623
+ if (!this.contract.write) {
624
+ throw new Error('Wallet client is required for write operations');
625
+ }
626
+ return this.contract.write.decreaseAllowance([spender, subtractedValue], options);
627
+ }
628
+ /**
629
+ * transfer
630
+ * nonpayable
631
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
632
+ */
633
+ async transfer(to, value, options) {
634
+ if (!this.contract.write) {
635
+ throw new Error('Wallet client is required for write operations');
636
+ }
637
+ return this.contract.write.transfer([to, value], options);
638
+ }
639
+ /**
640
+ * Simulate contract write operations (dry-run without sending transaction)
641
+ *
642
+ * @example
643
+ * const result = await contract.simulate.transfer('0x...', 1000n);
644
+ * console.log('Gas estimate:', result.request.gas);
645
+ * console.log('Would succeed:', result.result);
646
+ */
647
+ get simulate() {
648
+ const contract = this.contract;
649
+ if (!contract.simulate) {
650
+ throw new Error('Public client is required for simulation');
651
+ }
652
+ return {
653
+ /**
654
+ * Simulate approve
655
+ * Returns gas estimate and result without sending transaction
656
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
657
+ */
658
+ async approve(spender, value, options) {
659
+ return contract.simulate.approve([spender, value], options);
660
+ },
661
+ /**
662
+ * Simulate transferFrom
663
+ * Returns gas estimate and result without sending transaction
664
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
665
+ */
666
+ async transferFrom(from, to, value, options) {
667
+ return contract.simulate.transferFrom([from, to, value], options);
668
+ },
669
+ /**
670
+ * Simulate increaseAllowance
671
+ * Returns gas estimate and result without sending transaction
672
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
673
+ */
674
+ async increaseAllowance(spender, addedValue, options) {
675
+ return contract.simulate.increaseAllowance([spender, addedValue], options);
676
+ },
677
+ /**
678
+ * Simulate unpause
679
+ * Returns gas estimate and result without sending transaction
680
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
681
+ */
682
+ async unpause(options) {
683
+ return contract.simulate.unpause(options);
684
+ },
685
+ /**
686
+ * Simulate renouncePauser
687
+ * Returns gas estimate and result without sending transaction
688
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
689
+ */
690
+ async renouncePauser(options) {
691
+ return contract.simulate.renouncePauser(options);
692
+ },
693
+ /**
694
+ * Simulate addPauser
695
+ * Returns gas estimate and result without sending transaction
696
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
697
+ */
698
+ async addPauser(account, options) {
699
+ return contract.simulate.addPauser([account], options);
700
+ },
701
+ /**
702
+ * Simulate pause
703
+ * Returns gas estimate and result without sending transaction
704
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
705
+ */
706
+ async pause(options) {
707
+ return contract.simulate.pause(options);
708
+ },
709
+ /**
710
+ * Simulate decreaseAllowance
711
+ * Returns gas estimate and result without sending transaction
712
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
713
+ */
714
+ async decreaseAllowance(spender, subtractedValue, options) {
715
+ return contract.simulate.decreaseAllowance([spender, subtractedValue], options);
716
+ },
717
+ /**
718
+ * Simulate transfer
719
+ * Returns gas estimate and result without sending transaction
720
+ * @param options Optional transaction parameters (value, gas, nonce, etc.)
721
+ */
722
+ async transfer(to, value, options) {
723
+ return contract.simulate.transfer([to, value], options);
724
+ }
725
+ };
726
+ }
727
+ /**
728
+ * Watch contract events
729
+ *
730
+ * @example
731
+ * // Watch all Transfer events
732
+ * const unwatch = contract.watch.Transfer((event) => {
733
+ * console.log('Transfer:', event);
734
+ * });
735
+ *
736
+ * // Stop watching
737
+ * unwatch();
738
+ */
739
+ get watch() {
740
+ return {
741
+ /**
742
+ * Watch Paused events
743
+ * @param callback Function to call when event is emitted
744
+ * @param filter Optional filter for indexed parameters
745
+ * @returns Unwatch function to stop listening
746
+ */
747
+ Paused: (callback) => {
748
+ return this.publicClient.watchContractEvent({
749
+ address: this.contractAddress,
750
+ abi: exports.PUBLX_jsonAbi,
751
+ eventName: 'Paused',
752
+ onLogs: (logs) => {
753
+ logs.forEach((log) => {
754
+ callback(log.args);
755
+ });
756
+ },
757
+ });
758
+ },
759
+ /**
760
+ * Watch Unpaused events
761
+ * @param callback Function to call when event is emitted
762
+ * @param filter Optional filter for indexed parameters
763
+ * @returns Unwatch function to stop listening
764
+ */
765
+ Unpaused: (callback) => {
766
+ return this.publicClient.watchContractEvent({
767
+ address: this.contractAddress,
768
+ abi: exports.PUBLX_jsonAbi,
769
+ eventName: 'Unpaused',
770
+ onLogs: (logs) => {
771
+ logs.forEach((log) => {
772
+ callback(log.args);
773
+ });
774
+ },
775
+ });
776
+ },
777
+ /**
778
+ * Watch PauserAdded events
779
+ * @param callback Function to call when event is emitted
780
+ * @param filter Optional filter for indexed parameters
781
+ * @returns Unwatch function to stop listening
782
+ */
783
+ PauserAdded: (callback, filter) => {
784
+ return this.publicClient.watchContractEvent({
785
+ address: this.contractAddress,
786
+ abi: exports.PUBLX_jsonAbi,
787
+ eventName: 'PauserAdded',
788
+ args: filter,
789
+ onLogs: (logs) => {
790
+ logs.forEach((log) => {
791
+ callback(log.args);
792
+ });
793
+ },
794
+ });
795
+ },
796
+ /**
797
+ * Watch PauserRemoved events
798
+ * @param callback Function to call when event is emitted
799
+ * @param filter Optional filter for indexed parameters
800
+ * @returns Unwatch function to stop listening
801
+ */
802
+ PauserRemoved: (callback, filter) => {
803
+ return this.publicClient.watchContractEvent({
804
+ address: this.contractAddress,
805
+ abi: exports.PUBLX_jsonAbi,
806
+ eventName: 'PauserRemoved',
807
+ args: filter,
808
+ onLogs: (logs) => {
809
+ logs.forEach((log) => {
810
+ callback(log.args);
811
+ });
812
+ },
813
+ });
814
+ },
815
+ /**
816
+ * Watch Transfer events
817
+ * @param callback Function to call when event is emitted
818
+ * @param filter Optional filter for indexed parameters
819
+ * @returns Unwatch function to stop listening
820
+ */
821
+ Transfer: (callback, filter) => {
822
+ return this.publicClient.watchContractEvent({
823
+ address: this.contractAddress,
824
+ abi: exports.PUBLX_jsonAbi,
825
+ eventName: 'Transfer',
826
+ args: filter,
827
+ onLogs: (logs) => {
828
+ logs.forEach((log) => {
829
+ callback(log.args);
830
+ });
831
+ },
832
+ });
833
+ },
834
+ /**
835
+ * Watch Approval events
836
+ * @param callback Function to call when event is emitted
837
+ * @param filter Optional filter for indexed parameters
838
+ * @returns Unwatch function to stop listening
839
+ */
840
+ Approval: (callback, filter) => {
841
+ return this.publicClient.watchContractEvent({
842
+ address: this.contractAddress,
843
+ abi: exports.PUBLX_jsonAbi,
844
+ eventName: 'Approval',
845
+ args: filter,
846
+ onLogs: (logs) => {
847
+ logs.forEach((log) => {
848
+ callback(log.args);
849
+ });
850
+ },
851
+ });
852
+ }
853
+ };
854
+ }
855
+ }
856
+ exports.PUBLX_json = PUBLX_json;