@chipi-stack/backend 11.5.0 → 11.7.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.
- package/dist/index.d.mts +104 -14
- package/dist/index.d.ts +104 -14
- package/dist/index.js +275 -83
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +275 -86
- package/dist/index.mjs.map +1 -1
- package/dist/skuTransactions.d.mts +24 -0
- package/dist/skuTransactions.d.ts +24 -0
- package/dist/skuTransactions.js +311 -0
- package/dist/skuTransactions.js.map +1 -0
- package/dist/skuTransactions.mjs +305 -0
- package/dist/skuTransactions.mjs.map +1 -0
- package/dist/skus.d.mts +8 -1
- package/dist/skus.d.ts +8 -1
- package/dist/skus.js +16 -0
- package/dist/skus.js.map +1 -1
- package/dist/skus.mjs +16 -0
- package/dist/skus.mjs.map +1 -1
- package/dist/transactions.d.mts +7 -6
- package/dist/transactions.d.ts +7 -6
- package/dist/transactions.js +50 -30
- package/dist/transactions.js.map +1 -1
- package/dist/transactions.mjs +50 -30
- package/dist/transactions.mjs.map +1 -1
- package/package.json +19 -5
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ var shared = require('@chipi-stack/shared');
|
|
|
4
4
|
var CryptoES = require('crypto-es');
|
|
5
5
|
var starknet = require('starknet');
|
|
6
6
|
var types = require('@chipi-stack/types');
|
|
7
|
+
var crypto = require('crypto');
|
|
7
8
|
|
|
8
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
10
|
|
|
@@ -297,9 +298,14 @@ var ChipiWallets = class {
|
|
|
297
298
|
return getBalanceResponse;
|
|
298
299
|
}
|
|
299
300
|
};
|
|
300
|
-
var executePaymasterTransaction = async (
|
|
301
|
+
var executePaymasterTransaction = async ({
|
|
302
|
+
params,
|
|
303
|
+
bearerToken,
|
|
304
|
+
apiPublicKey,
|
|
305
|
+
backendUrl
|
|
306
|
+
}) => {
|
|
301
307
|
try {
|
|
302
|
-
const { encryptKey, wallet, calls
|
|
308
|
+
const { encryptKey, wallet, calls } = params;
|
|
303
309
|
const privateKeyDecrypted = decryptPrivateKey(
|
|
304
310
|
wallet.encryptedPrivateKey,
|
|
305
311
|
encryptKey
|
|
@@ -380,9 +386,13 @@ var ChipiTransactions = class {
|
|
|
380
386
|
/**
|
|
381
387
|
* Execute a gasless transaction using paymaster
|
|
382
388
|
*/
|
|
383
|
-
async executeTransaction(
|
|
389
|
+
async executeTransaction({
|
|
390
|
+
params,
|
|
391
|
+
bearerToken
|
|
392
|
+
}) {
|
|
384
393
|
return executePaymasterTransaction({
|
|
385
|
-
|
|
394
|
+
params,
|
|
395
|
+
bearerToken,
|
|
386
396
|
backendUrl: this.client.baseUrl,
|
|
387
397
|
apiPublicKey: this.client.getApiPublicKey()
|
|
388
398
|
});
|
|
@@ -407,16 +417,18 @@ var ChipiTransactions = class {
|
|
|
407
417
|
}
|
|
408
418
|
const formattedAmount = shared.formatAmount(amount, decimals);
|
|
409
419
|
return this.executeTransaction({
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
+
params: {
|
|
421
|
+
encryptKey,
|
|
422
|
+
wallet,
|
|
423
|
+
calls: [
|
|
424
|
+
{
|
|
425
|
+
contractAddress,
|
|
426
|
+
entrypoint: "transfer",
|
|
427
|
+
calldata: [recipient, formattedAmount, "0x0"]
|
|
428
|
+
}
|
|
429
|
+
]
|
|
430
|
+
},
|
|
431
|
+
bearerToken
|
|
420
432
|
});
|
|
421
433
|
}
|
|
422
434
|
/**
|
|
@@ -425,27 +437,36 @@ var ChipiTransactions = class {
|
|
|
425
437
|
async approve(params) {
|
|
426
438
|
const formattedAmount = shared.formatAmount(params.amount, params.decimals);
|
|
427
439
|
return this.executeTransaction({
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
440
|
+
params: {
|
|
441
|
+
encryptKey: params.encryptKey,
|
|
442
|
+
wallet: params.wallet,
|
|
443
|
+
calls: [
|
|
444
|
+
{
|
|
445
|
+
contractAddress: params.contractAddress,
|
|
446
|
+
entrypoint: "approve",
|
|
447
|
+
calldata: [params.spender, formattedAmount, "0x0"]
|
|
448
|
+
}
|
|
449
|
+
]
|
|
450
|
+
},
|
|
451
|
+
bearerToken: params.bearerToken
|
|
438
452
|
});
|
|
439
453
|
}
|
|
440
454
|
/**
|
|
441
455
|
* Call any contract method
|
|
442
456
|
*/
|
|
443
|
-
|
|
457
|
+
// {
|
|
458
|
+
// encryptKey: string;
|
|
459
|
+
// wallet: any;
|
|
460
|
+
// calls: any[];
|
|
461
|
+
// bearerToken: string;
|
|
462
|
+
// }
|
|
463
|
+
async callAnyContract({
|
|
464
|
+
params,
|
|
465
|
+
bearerToken
|
|
466
|
+
}) {
|
|
444
467
|
return this.executeTransaction({
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
bearerToken: params.bearerToken,
|
|
448
|
-
calls: params.calls
|
|
468
|
+
params,
|
|
469
|
+
bearerToken
|
|
449
470
|
});
|
|
450
471
|
}
|
|
451
472
|
/**
|
|
@@ -463,12 +484,119 @@ var ChipiTransactions = class {
|
|
|
463
484
|
return response;
|
|
464
485
|
}
|
|
465
486
|
};
|
|
466
|
-
|
|
467
|
-
|
|
487
|
+
var ChipiSkuTransactions = class {
|
|
488
|
+
constructor(client) {
|
|
489
|
+
this.client = client;
|
|
490
|
+
this.transactions = new ChipiTransactions(client);
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Creates a SKU transaction with gasless execution
|
|
494
|
+
* @param params - Transaction parameters including amount, SKU ID, wallet, etc.
|
|
495
|
+
* @param bearerToken - Authentication token for API calls
|
|
496
|
+
* @returns Promise<SkuTransaction> - The created transaction record
|
|
497
|
+
*/
|
|
498
|
+
async createSkuTransaction(params, bearerToken) {
|
|
499
|
+
const { mxnAmount, skuId, wallet, reference, externalUserId } = params;
|
|
500
|
+
this.client.baseUrl;
|
|
501
|
+
const usdAmount = await shared.getUsdAmount(mxnAmount, bearerToken, this.client);
|
|
502
|
+
const tokenAddress = types.STARKNET_CONTRACTS.USDC.contractAddress;
|
|
503
|
+
if (usdAmount <= 0) {
|
|
504
|
+
throw new Error(`Invalid USD amount: ${usdAmount}. Amount must be positive.`);
|
|
505
|
+
}
|
|
506
|
+
const minUsdAmount = Math.max(usdAmount, 1e-6);
|
|
507
|
+
const parsedAmount = shared.formatAmount(minUsdAmount.toString(), types.STARKNET_CONTRACTS.USDC.decimals);
|
|
508
|
+
const calls = [
|
|
509
|
+
{
|
|
510
|
+
contractAddress: tokenAddress,
|
|
511
|
+
entrypoint: "approve",
|
|
512
|
+
calldata: starknet.CallData.compile({
|
|
513
|
+
spender: shared.SKU_CONTRACTS.RECHARGER_WITH_STRK_MAINNET,
|
|
514
|
+
amount: starknet.cairo.uint256(parsedAmount)
|
|
515
|
+
})
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
contractAddress: shared.SKU_CONTRACTS.RECHARGER_WITH_STRK_MAINNET,
|
|
519
|
+
entrypoint: "newRecharge",
|
|
520
|
+
calldata: starknet.CallData.compile({
|
|
521
|
+
token_address: tokenAddress,
|
|
522
|
+
amount: starknet.cairo.uint256(parsedAmount),
|
|
523
|
+
rechargeId: crypto.createHash("sha256").update(crypto.randomUUID()).digest("hex").slice(0, 20),
|
|
524
|
+
productId: skuId,
|
|
525
|
+
carrierId: shared.CARRIER_IDS.CHIPI_PAY
|
|
526
|
+
})
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
contractAddress: shared.SKU_CONTRACTS.CHIPI_BILL_SERVICE,
|
|
530
|
+
entrypoint: "mint_item",
|
|
531
|
+
calldata: starknet.CallData.compile({
|
|
532
|
+
recipient: wallet.publicKey,
|
|
533
|
+
metadata: {
|
|
534
|
+
service_type: shared.SERVICE_TYPES.BUY_SERVICE,
|
|
535
|
+
timestamp: Date.now(),
|
|
536
|
+
chipi_user_id: starknet.hash.starknetKeccak(externalUserId || "0x0").toString(),
|
|
537
|
+
kyc: true,
|
|
538
|
+
amount: starknet.cairo.uint256(parsedAmount)
|
|
539
|
+
}
|
|
540
|
+
})
|
|
541
|
+
}
|
|
542
|
+
];
|
|
543
|
+
const transactionHash = await this.transactions.executeTransaction({
|
|
544
|
+
params: {
|
|
545
|
+
encryptKey: params.encryptKey,
|
|
546
|
+
wallet,
|
|
547
|
+
calls
|
|
548
|
+
},
|
|
549
|
+
bearerToken
|
|
550
|
+
});
|
|
551
|
+
const input = {
|
|
552
|
+
walletAddress: wallet.publicKey,
|
|
553
|
+
skuId,
|
|
554
|
+
chain: shared.CHAIN_TYPES.STARKNET,
|
|
555
|
+
chainToken: shared.CHAIN_TOKEN_TYPES.USDC,
|
|
556
|
+
mxnAmount,
|
|
557
|
+
reference,
|
|
558
|
+
transactionHash,
|
|
559
|
+
usdAmount: minUsdAmount
|
|
560
|
+
};
|
|
561
|
+
const response = await this.client.post({
|
|
562
|
+
endpoint: `${shared.API_ENDPOINTS.SKU_TRANSACTIONS}`,
|
|
563
|
+
bearerToken,
|
|
564
|
+
body: input
|
|
565
|
+
});
|
|
566
|
+
return response;
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Get a SKU transaction by transaction id
|
|
570
|
+
* @param id - The SKU transaction id
|
|
571
|
+
* @param bearerToken - Authentication token for API calls
|
|
572
|
+
* @returns Promise<SkuTransaction> - Single SKU transaction
|
|
573
|
+
*/
|
|
574
|
+
async getSkuTransactionById(id, bearerToken) {
|
|
575
|
+
const response = await this.client.get({
|
|
576
|
+
endpoint: `${shared.API_ENDPOINTS.SKU_TRANSACTIONS}/${id}`,
|
|
577
|
+
bearerToken
|
|
578
|
+
});
|
|
579
|
+
return response;
|
|
580
|
+
}
|
|
581
|
+
};
|
|
468
582
|
var ChipiSkus = class {
|
|
469
583
|
constructor(client) {
|
|
470
584
|
this.client = client;
|
|
471
585
|
}
|
|
586
|
+
/**
|
|
587
|
+
* Get available SKUs for purchase with pagination
|
|
588
|
+
* @param bearerToken - Authentication token for API calls
|
|
589
|
+
* @param query - Pagination query parameters
|
|
590
|
+
* @returns Promise<PaginatedResponse<Sku>> - Paginated list of available SKUs
|
|
591
|
+
*/
|
|
592
|
+
async getSkus(bearerToken, query) {
|
|
593
|
+
const response = await this.client.get({
|
|
594
|
+
endpoint: `${shared.API_ENDPOINTS.SKUS}/available`,
|
|
595
|
+
params: query,
|
|
596
|
+
bearerToken
|
|
597
|
+
});
|
|
598
|
+
return response;
|
|
599
|
+
}
|
|
472
600
|
};
|
|
473
601
|
|
|
474
602
|
// src/chipi-sdk.ts
|
|
@@ -476,8 +604,10 @@ var ChipiSDK = class {
|
|
|
476
604
|
constructor(config) {
|
|
477
605
|
this.client = new ChipiClient(config);
|
|
478
606
|
this.nodeUrl = config.nodeUrl || shared.STARKNET_NETWORKS.MAINNET;
|
|
607
|
+
this.apiSecretKey = config.apiSecretKey;
|
|
479
608
|
this.wallets = new ChipiWallets(this.client);
|
|
480
609
|
this.transactions = new ChipiTransactions(this.client);
|
|
610
|
+
this.skuTransactions = new ChipiSkuTransactions(this.client);
|
|
481
611
|
this.skus = new ChipiSkus(this.client);
|
|
482
612
|
this.executeTransaction = this.executeTransaction.bind(this);
|
|
483
613
|
this.transfer = this.transfer.bind(this);
|
|
@@ -487,12 +617,31 @@ var ChipiSDK = class {
|
|
|
487
617
|
this.callAnyContract = this.callAnyContract.bind(this);
|
|
488
618
|
this.createWallet = this.createWallet.bind(this);
|
|
489
619
|
this.recordSendTransaction = this.recordSendTransaction.bind(this);
|
|
620
|
+
this.createSkuTransaction = this.createSkuTransaction.bind(this);
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Resolve bearer token - uses provided token or falls back to apiSecretKey
|
|
624
|
+
*/
|
|
625
|
+
resolveBearerToken(bearerToken) {
|
|
626
|
+
const token = bearerToken ?? this.apiSecretKey;
|
|
627
|
+
if (!token) {
|
|
628
|
+
throw new Error(
|
|
629
|
+
"Authentication required: either pass a bearerToken or configure the SDK with an apiSecretKey"
|
|
630
|
+
);
|
|
631
|
+
}
|
|
632
|
+
return token;
|
|
490
633
|
}
|
|
491
634
|
/**
|
|
492
635
|
* Execute a gasless transaction
|
|
493
636
|
*/
|
|
494
|
-
async executeTransaction(
|
|
495
|
-
|
|
637
|
+
async executeTransaction({
|
|
638
|
+
params,
|
|
639
|
+
bearerToken
|
|
640
|
+
}) {
|
|
641
|
+
return this.transactions.executeTransaction({
|
|
642
|
+
params,
|
|
643
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
644
|
+
});
|
|
496
645
|
}
|
|
497
646
|
/**
|
|
498
647
|
* Transfer tokens
|
|
@@ -503,28 +652,30 @@ var ChipiSDK = class {
|
|
|
503
652
|
}) {
|
|
504
653
|
return this.transactions.transfer({
|
|
505
654
|
params,
|
|
506
|
-
bearerToken
|
|
655
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
507
656
|
});
|
|
508
657
|
}
|
|
509
658
|
/**
|
|
510
|
-
|
|
511
|
-
|
|
659
|
+
* Approve token spending
|
|
660
|
+
*/
|
|
512
661
|
async approve({
|
|
513
662
|
params,
|
|
514
663
|
bearerToken
|
|
515
664
|
}) {
|
|
516
665
|
const { encryptKey, wallet, contractAddress, spender, amount, decimals } = params;
|
|
517
666
|
return this.executeTransaction({
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
667
|
+
params: {
|
|
668
|
+
encryptKey,
|
|
669
|
+
wallet,
|
|
670
|
+
calls: [
|
|
671
|
+
{
|
|
672
|
+
contractAddress,
|
|
673
|
+
entrypoint: "approve",
|
|
674
|
+
calldata: [spender, shared.formatAmount(amount, decimals), "0x0"]
|
|
675
|
+
}
|
|
676
|
+
]
|
|
677
|
+
},
|
|
678
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
528
679
|
});
|
|
529
680
|
}
|
|
530
681
|
/**
|
|
@@ -537,25 +688,27 @@ var ChipiSDK = class {
|
|
|
537
688
|
const { encryptKey, wallet, amount, receiverWallet } = params;
|
|
538
689
|
const formattedAmount = shared.formatAmount(amount, 6);
|
|
539
690
|
return this.executeTransaction({
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
691
|
+
params: {
|
|
692
|
+
encryptKey,
|
|
693
|
+
wallet,
|
|
694
|
+
calls: [
|
|
695
|
+
{
|
|
696
|
+
contractAddress: shared.CONTRACT_ADDRESSES.USDC_MAINNET,
|
|
697
|
+
entrypoint: "approve",
|
|
698
|
+
calldata: [
|
|
699
|
+
shared.CONTRACT_ADDRESSES.VESU_USDC_MAINNET,
|
|
700
|
+
formattedAmount,
|
|
701
|
+
"0x0"
|
|
702
|
+
]
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
contractAddress: shared.CONTRACT_ADDRESSES.VESU_USDC_MAINNET,
|
|
706
|
+
entrypoint: "deposit",
|
|
707
|
+
calldata: [formattedAmount, "0x0", receiverWallet]
|
|
708
|
+
}
|
|
709
|
+
]
|
|
710
|
+
},
|
|
711
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
559
712
|
});
|
|
560
713
|
}
|
|
561
714
|
/**
|
|
@@ -568,16 +721,18 @@ var ChipiSDK = class {
|
|
|
568
721
|
const { encryptKey, wallet, amount, recipient } = params;
|
|
569
722
|
const formattedAmount = shared.formatAmount(amount, 6);
|
|
570
723
|
return this.executeTransaction({
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
724
|
+
params: {
|
|
725
|
+
encryptKey,
|
|
726
|
+
wallet,
|
|
727
|
+
calls: [
|
|
728
|
+
{
|
|
729
|
+
contractAddress: shared.CONTRACT_ADDRESSES.VESU_USDC_MAINNET,
|
|
730
|
+
entrypoint: "withdraw",
|
|
731
|
+
calldata: [formattedAmount, recipient, "0x0"]
|
|
732
|
+
}
|
|
733
|
+
]
|
|
734
|
+
},
|
|
735
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
581
736
|
});
|
|
582
737
|
}
|
|
583
738
|
/**
|
|
@@ -589,10 +744,12 @@ var ChipiSDK = class {
|
|
|
589
744
|
}) {
|
|
590
745
|
const { encryptKey, wallet, calls } = params;
|
|
591
746
|
return this.executeTransaction({
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
747
|
+
params: {
|
|
748
|
+
encryptKey,
|
|
749
|
+
wallet,
|
|
750
|
+
calls
|
|
751
|
+
},
|
|
752
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
596
753
|
});
|
|
597
754
|
}
|
|
598
755
|
/**
|
|
@@ -604,7 +761,7 @@ var ChipiSDK = class {
|
|
|
604
761
|
}) {
|
|
605
762
|
return this.wallets.createWallet({
|
|
606
763
|
...params,
|
|
607
|
-
bearerToken
|
|
764
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
608
765
|
});
|
|
609
766
|
}
|
|
610
767
|
async recordSendTransaction({
|
|
@@ -613,22 +770,57 @@ var ChipiSDK = class {
|
|
|
613
770
|
}) {
|
|
614
771
|
return this.transactions.recordSendTransaction({
|
|
615
772
|
params,
|
|
616
|
-
bearerToken
|
|
773
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
617
774
|
});
|
|
618
775
|
}
|
|
619
776
|
async getWallet(params, bearerToken) {
|
|
620
|
-
return this.wallets.getWallet(params, bearerToken);
|
|
777
|
+
return this.wallets.getWallet(params, this.resolveBearerToken(bearerToken));
|
|
621
778
|
}
|
|
622
779
|
async getTokenBalance(params, bearerToken) {
|
|
623
780
|
return this.wallets.getTokenBalance({
|
|
624
781
|
params,
|
|
625
|
-
bearerToken
|
|
782
|
+
bearerToken: this.resolveBearerToken(bearerToken)
|
|
626
783
|
});
|
|
627
784
|
}
|
|
785
|
+
/**
|
|
786
|
+
* Create a SKU transaction
|
|
787
|
+
*/
|
|
788
|
+
async createSkuTransaction({
|
|
789
|
+
params,
|
|
790
|
+
bearerToken
|
|
791
|
+
}) {
|
|
792
|
+
return this.skuTransactions.createSkuTransaction(params, bearerToken);
|
|
793
|
+
}
|
|
794
|
+
};
|
|
795
|
+
|
|
796
|
+
// src/chipi-server-sdk.ts
|
|
797
|
+
var ChipiServerSDK = class extends ChipiSDK {
|
|
798
|
+
constructor(config) {
|
|
799
|
+
if (!config.apiSecretKey) {
|
|
800
|
+
throw new Error(
|
|
801
|
+
"apiSecretKey is required for ChipiServerSDK. Use ChipiBrowserSDK for client-side applications."
|
|
802
|
+
);
|
|
803
|
+
}
|
|
804
|
+
super(config);
|
|
805
|
+
}
|
|
806
|
+
// All methods are inherited from ChipiSDK
|
|
807
|
+
// The apiSecretKey from config is automatically used via resolveBearerToken()
|
|
808
|
+
};
|
|
809
|
+
|
|
810
|
+
// src/chipi-browser-sdk.ts
|
|
811
|
+
var ChipiBrowserSDK = class extends ChipiSDK {
|
|
812
|
+
constructor(config) {
|
|
813
|
+
super(config);
|
|
814
|
+
}
|
|
815
|
+
// All methods are inherited from ChipiSDK
|
|
816
|
+
// bearerToken parameter is required for each authenticated request
|
|
628
817
|
};
|
|
629
818
|
|
|
819
|
+
exports.ChipiBrowserSDK = ChipiBrowserSDK;
|
|
630
820
|
exports.ChipiClient = ChipiClient;
|
|
631
821
|
exports.ChipiSDK = ChipiSDK;
|
|
822
|
+
exports.ChipiServerSDK = ChipiServerSDK;
|
|
823
|
+
exports.ChipiSkuTransactions = ChipiSkuTransactions;
|
|
632
824
|
exports.ChipiSkus = ChipiSkus;
|
|
633
825
|
exports.ChipiTransactions = ChipiTransactions;
|
|
634
826
|
exports.ChipiWallets = ChipiWallets;
|