@super-protocol/sdk-js 3.2.4 → 3.2.5

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 (37) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.js +2 -1
  3. package/dist/cjs/models/Order.js +3 -3
  4. package/dist/cjs/staticModels/SuperproToken.d.ts +11 -4
  5. package/dist/cjs/staticModels/SuperproToken.js +20 -10
  6. package/dist/cjs/tee/OrderReportService.d.ts +11 -7
  7. package/dist/cjs/tee/OrderReportService.js +83 -15
  8. package/dist/cjs/tee/QuoteValidator.d.ts +3 -9
  9. package/dist/cjs/tee/QuoteValidator.js +9 -59
  10. package/dist/cjs/tee/TeeCertificateService.d.ts +2 -0
  11. package/dist/cjs/tee/TeeCertificateService.js +16 -1
  12. package/dist/cjs/tee/TeeSignatureVerifier.d.ts +23 -0
  13. package/dist/cjs/tee/TeeSignatureVerifier.js +91 -0
  14. package/dist/cjs/tee/types.d.ts +5 -0
  15. package/dist/cjs/utils/tokens/get-tokens-info.d.ts +8 -0
  16. package/dist/cjs/utils/tokens/get-tokens-info.js +30 -0
  17. package/dist/cjs/utils/tokens/index.d.ts +1 -0
  18. package/dist/cjs/utils/tokens/index.js +18 -0
  19. package/dist/mjs/index.d.ts +1 -0
  20. package/dist/mjs/index.js +2 -1
  21. package/dist/mjs/models/Order.js +3 -3
  22. package/dist/mjs/staticModels/SuperproToken.d.ts +11 -4
  23. package/dist/mjs/staticModels/SuperproToken.js +20 -10
  24. package/dist/mjs/tee/OrderReportService.d.ts +11 -7
  25. package/dist/mjs/tee/OrderReportService.js +84 -16
  26. package/dist/mjs/tee/QuoteValidator.d.ts +3 -9
  27. package/dist/mjs/tee/QuoteValidator.js +8 -58
  28. package/dist/mjs/tee/TeeCertificateService.d.ts +2 -0
  29. package/dist/mjs/tee/TeeCertificateService.js +16 -1
  30. package/dist/mjs/tee/TeeSignatureVerifier.d.ts +23 -0
  31. package/dist/mjs/tee/TeeSignatureVerifier.js +84 -0
  32. package/dist/mjs/tee/types.d.ts +5 -0
  33. package/dist/mjs/utils/tokens/get-tokens-info.d.ts +8 -0
  34. package/dist/mjs/utils/tokens/get-tokens-info.js +23 -0
  35. package/dist/mjs/utils/tokens/index.d.ts +1 -0
  36. package/dist/mjs/utils/tokens/index.js +2 -0
  37. package/package.json +3 -2
@@ -11,4 +11,6 @@ export declare class TeeCertificateService {
11
11
  parseAndValidateCertificate(certificatePem: string | Buffer, sgxApiUrl: string): Promise<ParseTlsCertificateResult>;
12
12
  fromRawToPem(data: Uint8Array): string;
13
13
  splitPemCerts(certs: string): string[];
14
+ validateCertChain(certsPem: string, caPem: string): boolean;
15
+ getExtensionValue(certPem: string, oid: string): string | undefined;
14
16
  }
@@ -35,5 +35,20 @@ export class TeeCertificateService {
35
35
  const pemRegex = /(-----BEGIN CERTIFICATE-----[\s\S]*?-----END CERTIFICATE-----)/g;
36
36
  return certs.match(pemRegex) || [];
37
37
  }
38
+ validateCertChain(certsPem, caPem) {
39
+ const certs = this.splitPemCerts(certsPem).map((cert) => forge.pki.certificateFromPem(cert));
40
+ const ca = forge.pki.certificateFromPem(caPem);
41
+ try {
42
+ return forge.pki.verifyCertificateChain(forge.pki.createCaStore([ca]), certs);
43
+ }
44
+ catch (err) {
45
+ return false;
46
+ }
47
+ }
48
+ getExtensionValue(certPem, oid) {
49
+ const cert = forge.pki.certificateFromPem(certPem);
50
+ const extension = cert.extensions.find((ext) => ext.id === oid);
51
+ return extension?.value;
52
+ }
38
53
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQ2VydGlmaWNhdGVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlZS9UZWVDZXJ0aWZpY2F0ZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTckQsTUFBTSxPQUFPLHFCQUFxQjtJQUNmLFlBQVksR0FBRyw0QkFBNEIsQ0FBQztJQUVyRCx1QkFBdUIsQ0FBQyxXQUFrQztRQUNoRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSTthQUM1QixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3ZELFFBQVEsRUFBRSxDQUFDO1FBRWQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLDJCQUEyQixDQUMvQixjQUErQixFQUMvQixTQUFpQjtRQUVqQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUN6RixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFFMUMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFbkYsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRELE9BQU87WUFDTCxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNsRCxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ3hDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDdEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFnQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxPQUFPLGdDQUFnQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUM7SUFDM0csQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLGlFQUFpRSxDQUFDO1FBQ25GLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQ2VydGlmaWNhdGVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlZS9UZWVDZXJ0aWZpY2F0ZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTckQsTUFBTSxPQUFPLHFCQUFxQjtJQUNmLFlBQVksR0FBRyw0QkFBNEIsQ0FBQztJQUVyRCx1QkFBdUIsQ0FBQyxXQUFrQztRQUNoRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSTthQUM1QixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3ZELFFBQVEsRUFBRSxDQUFDO1FBRWQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLDJCQUEyQixDQUMvQixjQUErQixFQUMvQixTQUFpQjtRQUVqQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUN6RixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFFMUMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENB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
@@ -0,0 +1,23 @@
1
+ /// <reference types="node" />
2
+ import { BinaryType, GetTdxSignatureOptions } from './types.js';
3
+ export type GetMrEnclaveSignatureFn = (mrEnclave: Buffer) => Promise<Buffer>;
4
+ export type CheckSignatureOptions = {
5
+ getMrEnclaveSignature: GetMrEnclaveSignatureFn;
6
+ };
7
+ export declare class TeeSignatureVerifier {
8
+ /**
9
+ * Validates tee signature for SGX
10
+ * @param mrSigner Buffer
11
+ * @throws Error If signature validation fails
12
+ */
13
+ static validateSignatureSgx(mrSigner: BinaryType): void;
14
+ /**
15
+ * Validates TDX TEE signature by verifying the MRENCLAVE
16
+ * @param mrEnclave - Binary measurement of the TEE environment to verify
17
+ * @param options - Configuration for signature validation
18
+ * @param options.getMrEnclaveSignature - Function to retrieve signature for verification (defaults to TeeSignatureVerifier.getSignature)
19
+ * @throws Error If signature validation fails or signature cannot be retrieved
20
+ */
21
+ static validateSignatureTdx(mrEnclave: BinaryType, options?: CheckSignatureOptions): Promise<void>;
22
+ static getSignature(mrEnclave: Buffer, options?: GetTdxSignatureOptions): Promise<Buffer>;
23
+ }
@@ -0,0 +1,84 @@
1
+ import axios from 'axios';
2
+ import forge from 'node-forge';
3
+ import { TEE_LOADER_TRUSTED_CERTIFICATE, TEE_LOADER_TRUSTED_MRSIGNER } from '../constants.js';
4
+ import { InvalidSignatureError } from '../index.js';
5
+ import { tryWithInterval } from '../utils/helpers/index.js';
6
+ export class TeeSignatureVerifier {
7
+ /**
8
+ * Validates tee signature for SGX
9
+ * @param mrSigner Buffer
10
+ * @throws Error If signature validation fails
11
+ */
12
+ static validateSignatureSgx(mrSigner) {
13
+ if (mrSigner.toString('hex') !== TEE_LOADER_TRUSTED_MRSIGNER.toString('hex')) {
14
+ throw new InvalidSignatureError('Quote has an invalid MR signer');
15
+ }
16
+ }
17
+ /**
18
+ * Validates TDX TEE signature by verifying the MRENCLAVE
19
+ * @param mrEnclave - Binary measurement of the TEE environment to verify
20
+ * @param options - Configuration for signature validation
21
+ * @param options.getMrEnclaveSignature - Function to retrieve signature for verification (defaults to TeeSignatureVerifier.getSignature)
22
+ * @throws Error If signature validation fails or signature cannot be retrieved
23
+ */
24
+ static async validateSignatureTdx(mrEnclave, options = { getMrEnclaveSignature: TeeSignatureVerifier.getSignature }) {
25
+ const { getMrEnclaveSignature } = options;
26
+ const cert = forge.pki.certificateFromPem(TEE_LOADER_TRUSTED_CERTIFICATE);
27
+ const isCertValid = forge.pki.verifyCertificateChain(forge.pki.createCaStore([cert]), [cert]);
28
+ if (!isCertValid) {
29
+ throw new Error('Trusted cert is invalid');
30
+ }
31
+ const publicKey = cert.publicKey;
32
+ if (!Object.prototype.hasOwnProperty.call(publicKey, 'n') ||
33
+ !Object.prototype.hasOwnProperty.call(publicKey, 'e')) {
34
+ throw new InvalidSignatureError('Expected RSA private key inside certificate');
35
+ }
36
+ const digest = forge.md.sha256
37
+ .create()
38
+ .update(String.fromCharCode(...mrEnclave))
39
+ .digest();
40
+ const signature = await getMrEnclaveSignature(Buffer.from(mrEnclave));
41
+ const isSignatureValid = publicKey.verify(digest.bytes(), String.fromCharCode(...signature));
42
+ if (!isSignatureValid) {
43
+ throw new InvalidSignatureError('TDX signature is invalid');
44
+ }
45
+ }
46
+ static async getSignature(mrEnclave, options) {
47
+ const baseURL = options?.baseURL ?? 'https://raw.githubusercontent.com/Super-Protocol/sp-vm';
48
+ const retryMax = options?.retryMax ?? 3;
49
+ const retryInterval = options?.retryInterval ?? 1000;
50
+ const mrenclaveHex = mrEnclave.toString('hex');
51
+ const axiosInstance = axios.create({
52
+ baseURL,
53
+ });
54
+ try {
55
+ const response = await tryWithInterval({
56
+ checkResult(response) {
57
+ return { isResultOk: response.status === 200 };
58
+ },
59
+ handler() {
60
+ return axiosInstance.get(`/main/signatures/mrenclave-${mrenclaveHex}.sign`, {
61
+ responseType: 'arraybuffer',
62
+ });
63
+ },
64
+ checkError(err) {
65
+ if (axios.isAxiosError(err) && err.response) {
66
+ const status = err.response.status;
67
+ return { retryable: status < 400 || status >= 500 };
68
+ }
69
+ return { retryable: axios.isAxiosError(err) };
70
+ },
71
+ retryInterval,
72
+ retryMax,
73
+ });
74
+ return Buffer.from(response.data);
75
+ }
76
+ catch (err) {
77
+ if (axios.isAxiosError(err) && err.response?.status === 404) {
78
+ throw new InvalidSignatureError(`TDX signature is missing for mrEnclave ${mrenclaveHex}`);
79
+ }
80
+ throw err;
81
+ }
82
+ }
83
+ }
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlU2lnbmF0dXJlVmVyaWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVlL1RlZVNpZ25hdHVyZVZlcmlmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPNUQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQW9CO1FBQzlDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3RSxNQUFNLElBQUkscUJBQXFCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQy9CLFNBQXFCLEVBQ3JCLFVBQWlDLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxFQUFFO1FBRTdGLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMxQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDMUUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUs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
@@ -119,3 +119,8 @@ export type TeeTdxBodyType = {
119
119
  reportData: BinaryType;
120
120
  dataHash: BinaryType;
121
121
  };
122
+ export type GetTdxSignatureOptions = {
123
+ baseURL?: string;
124
+ retryMax?: number;
125
+ retryInterval?: number;
126
+ };
@@ -0,0 +1,8 @@
1
+ import { TokenInfo } from '../../types/index.js';
2
+ type ExtendedTokenInfo = Omit<TokenInfo, 'tokenAddress'> & {
3
+ index: number;
4
+ address: string;
5
+ symbol: string;
6
+ };
7
+ export declare const getTokensInfo: () => Promise<ExtendedTokenInfo[]>;
8
+ export {};
@@ -0,0 +1,23 @@
1
+ import logger from '../../logger.js';
2
+ import Superpro from '../../staticModels/Superpro.js';
3
+ import SuperproToken from '../../staticModels/SuperproToken.js';
4
+ export const getTokensInfo = async () => {
5
+ const tokens = await Superpro.getTokens();
6
+ const output = [];
7
+ for (const token of tokens) {
8
+ const contract = SuperproToken.createContract(token.tokenInfo.tokenAddress);
9
+ const symbol = await SuperproToken.symbol(contract).catch((err) => {
10
+ logger.error(err, `Failed to get token symbol (tokenAddress=${token.tokenInfo.tokenAddress})`);
11
+ throw err;
12
+ });
13
+ output.push({
14
+ index: Number(token.index),
15
+ address: token.tokenInfo.tokenAddress,
16
+ symbol,
17
+ isPrimary: token.tokenInfo.isPrimary,
18
+ protocolCommissionPercent: token.tokenInfo.protocolCommissionPercent,
19
+ });
20
+ }
21
+ return output;
22
+ };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRva2Vucy1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Rva2Vucy9nZXQtdG9rZW5zLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxRQUFRLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEQsT0FBTyxhQUFhLE1BQU0scUNBQXFDLENBQUM7QUFTaEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssSUFBa0MsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO0lBRXZDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoRSxNQUFNLENBQUMsS0FBSyxDQUNWLEdBQUcsRUFDSCw0Q0FBNEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsQ0FDNUUsQ0FBQztZQUNGLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVk7WUFDckMsTUFBTTtZQUNOLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVM7WUFDcEMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUI7U0FDckUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ export * from './get-tokens-info.js';
@@ -0,0 +1,2 @@
1
+ export * from './get-tokens-info.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@super-protocol/sdk-js",
3
- "version": "3.2.4",
3
+ "version": "3.2.5",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/mjs/index.js",
6
6
  "exports": {
@@ -61,7 +61,8 @@
61
61
  "@fidm/x509": "^1.2.1",
62
62
  "@msgpack/msgpack": "^2.8.0",
63
63
  "@sinclair/typebox": "0.33.17",
64
- "@super-protocol/dto-js": "1.0.0",
64
+ "@super-protocol/dto-js": "1.0.2",
65
+ "@super-protocol/pki-common": "^1.5.3",
65
66
  "@super-protocol/tee-lib": "^0.1.2",
66
67
  "@super-protocol/uplink-nodejs": "^1.2.20",
67
68
  "asn1js": "^3.0.5",