@super-protocol/sdk-js 3.15.2 → 3.15.3-beta.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/cjs/RIGenerator.js +2 -2
- package/dist/cjs/TIIGenerator.js +4 -4
- package/dist/cjs/TeeInputGeneratorBase.d.ts +2 -2
- package/dist/cjs/TeeInputGeneratorBase.js +5 -5
- package/dist/cjs/contracts/abi.d.ts +799 -708
- package/dist/cjs/contracts/abi.js +966 -854
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/index.js +3 -5
- package/dist/cjs/models/Provider.d.ts +0 -1
- package/dist/cjs/models/Provider.js +1 -7
- package/dist/cjs/models/TCB.d.ts +1 -28
- package/dist/cjs/models/TCB.js +1 -61
- package/dist/cjs/models/TeeOffer.d.ts +3 -18
- package/dist/cjs/models/TeeOffer.js +14 -100
- package/dist/cjs/staticModels/Consensus.d.ts +5 -16
- package/dist/cjs/staticModels/Consensus.js +16 -86
- package/dist/cjs/staticModels/TeeOffers.d.ts +0 -6
- package/dist/cjs/staticModels/TeeOffers.js +3 -14
- package/dist/cjs/tee/TeeBlockVerifier.d.ts +7 -2
- package/dist/cjs/tee/TeeBlockVerifier.js +6 -18
- package/dist/cjs/tee/statuses.d.ts +0 -7
- package/dist/cjs/tee/statuses.js +2 -10
- package/dist/cjs/types/Consensus.d.ts +5 -31
- package/dist/cjs/types/Consensus.js +2 -10
- package/dist/cjs/utils/helper.d.ts +3 -5
- package/dist/cjs/utils/helper.js +94 -34
- package/dist/mjs/RIGenerator.js +2 -2
- package/dist/mjs/TIIGenerator.js +4 -4
- package/dist/mjs/TeeInputGeneratorBase.d.ts +2 -2
- package/dist/mjs/TeeInputGeneratorBase.js +5 -5
- package/dist/mjs/contracts/abi.d.ts +799 -708
- package/dist/mjs/contracts/abi.js +964 -852
- package/dist/mjs/index.d.ts +0 -1
- package/dist/mjs/index.js +1 -2
- package/dist/mjs/models/Provider.d.ts +0 -1
- package/dist/mjs/models/Provider.js +1 -7
- package/dist/mjs/models/TCB.d.ts +1 -28
- package/dist/mjs/models/TCB.js +2 -62
- package/dist/mjs/models/TeeOffer.d.ts +3 -18
- package/dist/mjs/models/TeeOffer.js +9 -95
- package/dist/mjs/staticModels/Consensus.d.ts +5 -16
- package/dist/mjs/staticModels/Consensus.js +17 -87
- package/dist/mjs/staticModels/TeeOffers.d.ts +0 -6
- package/dist/mjs/staticModels/TeeOffers.js +4 -15
- package/dist/mjs/tee/TeeBlockVerifier.d.ts +7 -2
- package/dist/mjs/tee/TeeBlockVerifier.js +6 -18
- package/dist/mjs/tee/statuses.d.ts +0 -7
- package/dist/mjs/tee/statuses.js +1 -9
- package/dist/mjs/types/Consensus.d.ts +5 -31
- package/dist/mjs/types/Consensus.js +1 -9
- package/dist/mjs/utils/helper.d.ts +3 -5
- package/dist/mjs/utils/helper.js +93 -31
- package/package.json +2 -2
- package/dist/cjs/tee/QuoteValidator.d.ts +0 -46
- package/dist/cjs/tee/QuoteValidator.js +0 -456
- package/dist/cjs/tee/TcbSerializer.d.ts +0 -20
- package/dist/cjs/tee/TcbSerializer.js +0 -27
- package/dist/mjs/tee/QuoteValidator.d.ts +0 -46
- package/dist/mjs/tee/QuoteValidator.js +0 -449
- package/dist/mjs/tee/TcbSerializer.d.ts +0 -20
- package/dist/mjs/tee/TcbSerializer.js +0 -23
package/dist/cjs/index.d.ts
CHANGED
|
@@ -77,7 +77,6 @@ import './polyfills.js';
|
|
|
77
77
|
export * from './tee/errors.js';
|
|
78
78
|
export { QuoteType } from './tee/types.js';
|
|
79
79
|
export { TeeSgxParser, TeeTdxParser, TeeParser } from './tee/QuoteParser.js';
|
|
80
|
-
export { QuoteValidator } from './tee/QuoteValidator.js';
|
|
81
80
|
export * from './tee/statuses.js';
|
|
82
81
|
export { TeeBlockVerifier } from './tee/TeeBlockVerifier.js';
|
|
83
82
|
export { TeeCertificateService } from './tee/TeeCertificateService.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -29,8 +29,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
29
29
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
30
|
};
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.
|
|
33
|
-
exports.TeeSignatureVerifier = exports.ResourceLoaderUtils = exports.FetchTransport = exports.AxiosTransport = exports.BrowserEventProvider = exports.NodeEventProvider = exports.Analytics =
|
|
32
|
+
exports.OrderReportService = exports.TeeCertificateService = exports.TeeBlockVerifier = exports.TeeParser = exports.TeeTdxParser = exports.TeeSgxParser = exports.QuoteType = exports.Web3TransactionRevertedByEvmError = exports.InsufficientFundsError = exports.constants = exports.helpers = exports.StorjCredentialsManager = exports.CredentialsPermissions = exports.parseStorageCredentials = exports.getStorageProvider = exports.ContentWriterType = exports.StorageContentWriter = exports.CacheEvents = exports.StorageAdapter = exports.StorageKeyValueAdapter = exports.StorageMetadataReader = exports.StorjAdapter = exports.ChunkedStorageProvider = exports.TCB = exports.Offer = exports.TeeOffer = exports.Provider = exports.Order = exports.SecretRequests = exports.OffersStorageRequests = exports.OffersStorageAllocated = exports.OfferResources = exports.LoaderSecretsAccessPublicKeys = exports.LoaderSessions = exports.Deposits = exports.Marks = exports.Superpro = exports.SuperproToken = exports.ProviderRegistry = exports.TeeOffers = exports.Offers = exports.ActiveOffers = exports.ActiveOrders = exports.Orders = exports.Consensus = exports.RIGenerator = exports.TIIGenerator = exports.Crypto = exports.BlockchainEventsListener = exports.BlockchainConnector = void 0;
|
|
33
|
+
exports.TeeSignatureVerifier = exports.ResourceLoaderUtils = exports.FetchTransport = exports.AxiosTransport = exports.BrowserEventProvider = exports.NodeEventProvider = exports.Analytics = void 0;
|
|
34
34
|
var BlockchainConnector_js_1 = require("./connectors/BlockchainConnector.js");
|
|
35
35
|
Object.defineProperty(exports, "BlockchainConnector", { enumerable: true, get: function () { return __importDefault(BlockchainConnector_js_1).default; } });
|
|
36
36
|
__exportStar(require("./connectors/BlockchainConnector.js"), exports);
|
|
@@ -148,8 +148,6 @@ var QuoteParser_js_1 = require("./tee/QuoteParser.js");
|
|
|
148
148
|
Object.defineProperty(exports, "TeeSgxParser", { enumerable: true, get: function () { return QuoteParser_js_1.TeeSgxParser; } });
|
|
149
149
|
Object.defineProperty(exports, "TeeTdxParser", { enumerable: true, get: function () { return QuoteParser_js_1.TeeTdxParser; } });
|
|
150
150
|
Object.defineProperty(exports, "TeeParser", { enumerable: true, get: function () { return QuoteParser_js_1.TeeParser; } });
|
|
151
|
-
var QuoteValidator_js_1 = require("./tee/QuoteValidator.js");
|
|
152
|
-
Object.defineProperty(exports, "QuoteValidator", { enumerable: true, get: function () { return QuoteValidator_js_1.QuoteValidator; } });
|
|
153
151
|
__exportStar(require("./tee/statuses.js"), exports);
|
|
154
152
|
var TeeBlockVerifier_js_1 = require("./tee/TeeBlockVerifier.js");
|
|
155
153
|
Object.defineProperty(exports, "TeeBlockVerifier", { enumerable: true, get: function () { return TeeBlockVerifier_js_1.TeeBlockVerifier; } });
|
|
@@ -178,4 +176,4 @@ __exportStar(require("./utils/schema-utils/index.js"), exports);
|
|
|
178
176
|
exports.ResourceLoaderUtils = __importStar(require("./utils/resourceLoaders/index.js"));
|
|
179
177
|
var TeeSignatureVerifier_js_1 = require("./tee/TeeSignatureVerifier.js");
|
|
180
178
|
Object.defineProperty(exports, "TeeSignatureVerifier", { enumerable: true, get: function () { return TeeSignatureVerifier_js_1.TeeSignatureVerifier; } });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEVBQXFGO0FBQTVFLDhJQUFBLE9BQU8sT0FBdUI7QUFFdkMsc0VBQW9EO0FBSXBELHdGQUErRjtBQUF0Rix3SkFBQSxPQUFPLE9BQTRCO0FBRTVDLDhDQUFzRDtBQUE3QyxtSEFBQSxPQUFPLE9BQVU7QUFDMUIsb0RBQWtDO0FBRWxDLDBEQUF3QztBQUV4QyxxREFBNEQ7QUFBbkQsZ0lBQUEsT0FBTyxPQUFnQjtBQUNoQyxvREFBa0M7QUFFbEMsbURBQTBEO0FBQWpELDhIQUFBLE9BQU8sT0FBZTtBQUMvQixvREFBa0M7QUFFbEMsNERBQW1FO0FBQTFELDBIQUFBLE9BQU8sT0FBYTtBQUM3Qiw4REFBNEM7QUFFNUMsc0RBQTZEO0FBQXBELG9IQUFBLE9BQU8sT0FBVTtBQUMxQiwyREFBeUM7QUFFekMsa0VBQXlFO0FBQWhFLGdJQUFBLE9BQU8sT0FBZ0I7QUFDaEMsaUVBQStDO0FBRS9DLGtFQUF5RTtBQUFoRSxnSUFBQSxPQUFPLE9BQWdCO0FBQ2hDLGlFQUErQztBQUUvQyxzREFBNkQ7QUFBcEQsb0hBQUEsT0FBTyxPQUFVO0FBQzFCLDJEQUF5QztBQUV6Qyw0REFBbUU7QUFBMUQsMEhBQUEsT0FBTyxPQUFhO0FBQzdCLDhEQUE0QztBQUU1QywwRUFBaUY7QUFBeEUsd0lBQUEsT0FBTyxPQUFvQjtBQUNwQyxxRUFBbUQ7QUFFbkQsb0VBQTJFO0FBQWxFLGtJQUFBLE9BQU8sT0FBaUI7QUFDakMsa0VBQWdEO0FBRWhELDBEQUFpRTtBQUF4RCx3SEFBQSxPQUFPLE9BQVk7QUFDNUIsNkRBQTJDO0FBRTNDLG9EQUEyRDtBQUFsRCxrSEFBQSxPQUFPLE9BQVM7QUFDekIsMERBQXdDO0FBRXhDLDBEQUFpRTtBQUF4RCx3SEFBQSxPQUFPLE9BQVk7QUFD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
|
|
@@ -44,7 +44,6 @@ declare class Provider {
|
|
|
44
44
|
* Fetch provider security deposit by provider authority account
|
|
45
45
|
*/
|
|
46
46
|
getSecurityDeposit(providerDepositToken?: string): Promise<TokenAmount>;
|
|
47
|
-
isProviderBanned(): Promise<boolean>;
|
|
48
47
|
getTcbLockedProfitList(): Promise<BlockchainId[]>;
|
|
49
48
|
}
|
|
50
49
|
export default Provider;
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const helper_js_1 = require("../utils/helper.js");
|
|
7
7
|
const index_js_1 = require("../connectors/index.js");
|
|
8
8
|
const TxManager_js_1 = __importDefault(require("../utils/TxManager.js"));
|
|
9
|
-
const Consensus_js_1 = __importDefault(require("../staticModels/Consensus.js"));
|
|
10
9
|
class Provider {
|
|
11
10
|
static contract;
|
|
12
11
|
providerInfo;
|
|
@@ -102,11 +101,6 @@ class Provider {
|
|
|
102
101
|
.getProviderSecurityDeposit(this.providerId, providerDepositToken)
|
|
103
102
|
.call());
|
|
104
103
|
}
|
|
105
|
-
async isProviderBanned() {
|
|
106
|
-
const violationRate = await this.getViolationRate();
|
|
107
|
-
const { CONSENSUS_MAX_PENALTIES } = await Consensus_js_1.default.getConstants();
|
|
108
|
-
return Number(violationRate) >= Number(CONSENSUS_MAX_PENALTIES);
|
|
109
|
-
}
|
|
110
104
|
getTcbLockedProfitList() {
|
|
111
105
|
return Provider.contract.methods
|
|
112
106
|
.getTcbLockedProfitList(this.providerId)
|
|
@@ -115,4 +109,4 @@ class Provider {
|
|
|
115
109
|
}
|
|
116
110
|
}
|
|
117
111
|
exports.default = Provider;
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL1Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsa0RBSTRCO0FBUTVCLHFEQUE2RDtBQUM3RCx5RUFBOEM7QUFFOUMsTUFBTSxRQUFRO0lBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBdUI7SUFFdkMsWUFBWSxDQUFnQjtJQUM1QixhQUFhLENBQW1CO0lBQ2hDLFdBQVcsQ0FBa0I7SUFDN0IsU0FBUyxDQUFrQjtJQUMzQixPQUFPLENBQVc7SUFDbEIsVUFBVSxDQUFTO0lBRTFCLFlBQVksVUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QixRQUFRLENBQUMsUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FDakIsWUFBMEIsRUFDMUIsa0JBQXVDO1FBRXZDLElBQUEsMkNBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxNQUFNLHNCQUFTLENBQUMsT0FBTyxDQUNyQixRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQ3RELGtCQUFrQixDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTzthQUN2RCxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNoQyxJQUFJLEVBQUU7YUFDTixJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUEseUJBQWEsRUFBQyxZQUFZLENBQWlCLENBQUMsQ0FB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
|
package/dist/cjs/models/TCB.d.ts
CHANGED
|
@@ -1,31 +1,8 @@
|
|
|
1
|
-
import { BlockchainId, TcbData,
|
|
2
|
-
import { ConsensusBenchmark } from '@super-protocol/dto-js';
|
|
1
|
+
import { BlockchainId, TcbData, TcbUtilityData, TransactionOptions } from '../types/index.js';
|
|
3
2
|
declare class TCB {
|
|
4
|
-
private static readonly logger;
|
|
5
3
|
tcbId: BlockchainId;
|
|
6
4
|
private static contract;
|
|
7
5
|
constructor(tcbId: BlockchainId);
|
|
8
|
-
private applyTcbMarks;
|
|
9
|
-
private setTcbData;
|
|
10
|
-
/**
|
|
11
|
-
* Add data to TeeConfirmationBlock and push it to Consensus
|
|
12
|
-
* @param pb - struct of 'processed' data
|
|
13
|
-
* @param quote - data generated from Enclave
|
|
14
|
-
* @param marks - list of marks
|
|
15
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
16
|
-
*/
|
|
17
|
-
private addToSupply;
|
|
18
|
-
apply(publicData: TcbPublicData, benchmark: ConsensusBenchmark, quote: string, publicKey: string, transactionOptions?: TransactionOptions): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Assign TCB from SuspiciousBlocks table to check
|
|
21
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
22
|
-
*/
|
|
23
|
-
assignSuspiciousBlocksToCheck(transactionOptions?: TransactionOptions): Promise<void>;
|
|
24
|
-
/**
|
|
25
|
-
* Assign TCB from LastBlocks table to check
|
|
26
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
27
|
-
*/
|
|
28
|
-
assignLastBlocksToCheck(transactionOptions?: TransactionOptions): Promise<void>;
|
|
29
6
|
/**
|
|
30
7
|
* Function stake and lock TCB's reward
|
|
31
8
|
* @param tcbId - TEE Offer's completed and valid TCB contract
|
|
@@ -43,10 +20,6 @@ declare class TCB {
|
|
|
43
20
|
* Function for fetching all TCB data
|
|
44
21
|
*/
|
|
45
22
|
get(): Promise<TcbData>;
|
|
46
|
-
/**
|
|
47
|
-
* Function for fetching Public Data from TCB
|
|
48
|
-
*/
|
|
49
|
-
getPublicData(): Promise<TcbPublicData>;
|
|
50
23
|
/**
|
|
51
24
|
* Function for fetching Public Data from TCB
|
|
52
25
|
*/
|
package/dist/cjs/models/TCB.js
CHANGED
|
@@ -7,10 +7,8 @@ const TxManager_js_1 = __importDefault(require("../utils/TxManager.js"));
|
|
|
7
7
|
const index_js_1 = require("../connectors/index.js");
|
|
8
8
|
const helper_js_1 = require("../utils/helper.js");
|
|
9
9
|
const Consensus_js_1 = __importDefault(require("../staticModels/Consensus.js"));
|
|
10
|
-
const logger_js_1 = __importDefault(require("../logger.js"));
|
|
11
10
|
const ProviderRewards_js_1 = __importDefault(require("../staticModels/ProviderRewards.js"));
|
|
12
11
|
class TCB {
|
|
13
|
-
static logger = logger_js_1.default.child({ className: 'TCB' });
|
|
14
12
|
tcbId;
|
|
15
13
|
static contract;
|
|
16
14
|
constructor(tcbId) {
|
|
@@ -19,57 +17,6 @@ class TCB {
|
|
|
19
17
|
TCB.contract = index_js_1.BlockchainConnector.getInstance().getContract();
|
|
20
18
|
}
|
|
21
19
|
}
|
|
22
|
-
applyTcbMarks(marks, transactionOptions) {
|
|
23
|
-
return TxManager_js_1.default.execute(TCB.contract.methods.applyTcbMarks(marks, this.tcbId), transactionOptions);
|
|
24
|
-
}
|
|
25
|
-
setTcbData(publicData, benchmark, quote, publicKey, transactionOptions) {
|
|
26
|
-
(0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
|
|
27
|
-
const formattedDeviceId = (0, helper_js_1.packDeviceId)(publicData.deviceId);
|
|
28
|
-
return TxManager_js_1.default.execute(TCB.contract.methods.setTcbData(this.tcbId, (0, helper_js_1.formatBenchmarkTo)(benchmark), publicData.properties, formattedDeviceId, quote, publicKey), transactionOptions);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Add data to TeeConfirmationBlock and push it to Consensus
|
|
32
|
-
* @param pb - struct of 'processed' data
|
|
33
|
-
* @param quote - data generated from Enclave
|
|
34
|
-
* @param marks - list of marks
|
|
35
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
36
|
-
*/
|
|
37
|
-
addToSupply(transactionOptions) {
|
|
38
|
-
(0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
|
|
39
|
-
return TxManager_js_1.default.execute(TCB.contract.methods.addTcbToSupply(this.tcbId), transactionOptions);
|
|
40
|
-
}
|
|
41
|
-
async apply(publicData, benchmark, quote, publicKey, transactionOptions) {
|
|
42
|
-
const logger = TCB.logger.child({
|
|
43
|
-
deviceId: publicData.deviceId,
|
|
44
|
-
method: 'apply',
|
|
45
|
-
});
|
|
46
|
-
try {
|
|
47
|
-
logger.debug('apply tcb marks');
|
|
48
|
-
await this.applyTcbMarks(publicData.checkingTcbMarks, transactionOptions);
|
|
49
|
-
logger.debug('set tcb data');
|
|
50
|
-
await this.setTcbData(publicData, benchmark, quote, publicKey, transactionOptions);
|
|
51
|
-
logger.debug('add to supply');
|
|
52
|
-
await this.addToSupply(transactionOptions);
|
|
53
|
-
logger.debug('apply is done');
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
logger.error({ err }, 'Failed to add TCB to blockchain');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Assign TCB from SuspiciousBlocks table to check
|
|
61
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
62
|
-
*/
|
|
63
|
-
async assignSuspiciousBlocksToCheck(transactionOptions) {
|
|
64
|
-
await TxManager_js_1.default.execute(TCB.contract.methods.assignSuspiciousBlocksToCheck(this.tcbId), transactionOptions);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Assign TCB from LastBlocks table to check
|
|
68
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
69
|
-
*/
|
|
70
|
-
async assignLastBlocksToCheck(transactionOptions) {
|
|
71
|
-
await TxManager_js_1.default.execute(TCB.contract.methods.assignLastBlocksToCheck(this.tcbId), transactionOptions);
|
|
72
|
-
}
|
|
73
20
|
/**
|
|
74
21
|
* Function stake and lock TCB's reward
|
|
75
22
|
* @param tcbId - TEE Offer's completed and valid TCB contract
|
|
@@ -103,13 +50,6 @@ class TCB {
|
|
|
103
50
|
const tcb = (0, helper_js_1.cleanWeb3Data)(await TCB.contract.methods.getTcbById(this.tcbId).call());
|
|
104
51
|
return tcb;
|
|
105
52
|
}
|
|
106
|
-
/**
|
|
107
|
-
* Function for fetching Public Data from TCB
|
|
108
|
-
*/
|
|
109
|
-
async getPublicData() {
|
|
110
|
-
const publicData = await Consensus_js_1.default.getTcbsPublicData([this.tcbId]);
|
|
111
|
-
return publicData[this.tcbId];
|
|
112
|
-
}
|
|
113
53
|
/**
|
|
114
54
|
* Function for fetching Public Data from TCB
|
|
115
55
|
*/
|
|
@@ -127,4 +67,4 @@ class TCB {
|
|
|
127
67
|
}
|
|
128
68
|
}
|
|
129
69
|
exports.default = TCB;
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVENCLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVscy9UQ0IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx5RUFBOEM7QUFDOUMscURBQTZEO0FBUTdELGtEQUFvRjtBQUNwRixnRkFBcUQ7QUFDckQsNEZBQWlFO0FBRWpFLE1BQU0sR0FBRztJQUNBLEtBQUssQ0FBZTtJQUNuQixNQUFNLENBQUMsUUFBUSxDQUF1QjtJQUU5QyxZQUFZLEtBQW1CO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsR0FBRyxDQUFDLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsWUFBWSxDQUFDLGtCQUF1QztRQUMvRCxJQUFBLDJDQUErQixHQUFFLENBQUM7UUFDbEMsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxzQkFBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEYsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFxQjtZQUM3QixVQUFVLEVBQUUsVUFBVTtZQUN0QixPQUFPLEVBQUUsVUFBVTtZQUNuQiw2QkFBNkIsRUFBRSxDQUFDO1NBQ2pDLENBQUM7UUFDRixNQUFNLDRCQUFlLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsa0JBQXVDO1FBQ2hFLElBQUEsMkNBQStCLEdBQUUsQ0FBQztRQUVsQyxNQUFNLHNCQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsR0FBRztRQUNkLE1BQU0sR0FBRyxHQUFZLElBQUEseUJBQWEsRUFBQyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3RixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLE1BQU0sc0JBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZUFBZTtRQUMxQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxNQUFNLHNCQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFFLENBQUM7Q0FDRjtBQUVELGtCQUFlLEdBQUcsQ0FBQyJ9
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { TeeOfferInfo, TransactionOptions, OfferType, Origins, BlockchainId, TokenAmount, OfferVersionInfo, OfferVersion, TeeOfferSubtype, TeeOfferAggregatedInfo } from '../types/index.js';
|
|
2
|
-
import {
|
|
3
|
-
import { GetTcbRequest } from '@super-protocol/dto-js';
|
|
2
|
+
import { TeeOfferOption, TeeOfferSlot, OptionInfo, SlotUsage, SlotInfo } from '../types/index.js';
|
|
4
3
|
declare class TeeOffer {
|
|
5
4
|
private static contract;
|
|
6
5
|
id: BlockchainId;
|
|
@@ -69,15 +68,6 @@ declare class TeeOffer {
|
|
|
69
68
|
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
70
69
|
*/
|
|
71
70
|
deleteOption(optionId: BlockchainId, transactionOptions?: TransactionOptions): Promise<void>;
|
|
72
|
-
private initializeTcb;
|
|
73
|
-
private initializeTcbAndAssignBlocks;
|
|
74
|
-
/**
|
|
75
|
-
* Function initialize TCB and returns list of anothers' TCB for their checking
|
|
76
|
-
* @param deviceId - id of TEE offer
|
|
77
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
78
|
-
* @returns tcbId and lists of anothers' TCB for their checking
|
|
79
|
-
*/
|
|
80
|
-
getListsForVerification(deviceId: string, transactionOptions?: TransactionOptions): Promise<GetTcbRequest>;
|
|
81
71
|
/**
|
|
82
72
|
* Returns the offer version info.
|
|
83
73
|
*/
|
|
@@ -142,11 +132,7 @@ declare class TeeOffer {
|
|
|
142
132
|
* @returns Promise<BlockchainId> Promise that resolves to the actual TCB ID
|
|
143
133
|
*/
|
|
144
134
|
getActualTcbId(): Promise<BlockchainId>;
|
|
145
|
-
|
|
146
|
-
* Function return last initialized TCB of TEE offer
|
|
147
|
-
*/
|
|
148
|
-
getInitializedTcbId(): Promise<BlockchainId>;
|
|
149
|
-
isTcbCreationAvailable(deviceId: string): Promise<boolean>;
|
|
135
|
+
isTcbCreationAvailable(pubKey: string): Promise<boolean>;
|
|
150
136
|
/**
|
|
151
137
|
* Function for fetching TEE offer provider authority account from blockchain
|
|
152
138
|
*/
|
|
@@ -159,7 +145,6 @@ declare class TeeOffer {
|
|
|
159
145
|
* Fetch offer subtype from blockchain (TEE only)
|
|
160
146
|
*/
|
|
161
147
|
getSubtype(): Promise<TeeOfferSubtype>;
|
|
162
|
-
isTeeOfferVerifying(): Promise<boolean>;
|
|
163
148
|
/**
|
|
164
149
|
* Function for fetching violationRate for this TEE offer
|
|
165
150
|
*/
|
|
@@ -185,7 +170,7 @@ declare class TeeOffer {
|
|
|
185
170
|
* @param newHardwareInfo - new offer hardware info
|
|
186
171
|
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
187
172
|
*/
|
|
188
|
-
|
|
173
|
+
setTeeOfferHardwareOptionInfo(optionInfo: OptionInfo, transactionOptions?: TransactionOptions): Promise<void>;
|
|
189
174
|
/**
|
|
190
175
|
* Updates description in offer info
|
|
191
176
|
* @param description - new description
|
|
@@ -18,12 +18,10 @@ const index_js_2 = require("../connectors/index.js");
|
|
|
18
18
|
const TxManager_js_1 = __importDefault(require("../utils/TxManager.js"));
|
|
19
19
|
const utils_js_1 = require("ethers/lib/utils.js");
|
|
20
20
|
const TeeOffers_js_1 = __importDefault(require("../staticModels/TeeOffers.js"));
|
|
21
|
-
const index_js_3 = require("../models/index.js");
|
|
22
21
|
const dto_js_1 = require("@super-protocol/dto-js");
|
|
23
|
-
const
|
|
24
|
-
const index_js_4 = require("../utils/schema-utils/index.js");
|
|
22
|
+
const index_js_3 = require("../utils/schema-utils/index.js");
|
|
25
23
|
const utils_js_2 = require("../errors/utils.js");
|
|
26
|
-
const
|
|
24
|
+
const index_js_4 = require("../errors/index.js");
|
|
27
25
|
const StaticModel_js_1 = __importDefault(require("../staticModels/StaticModel.js"));
|
|
28
26
|
class TeeOffer {
|
|
29
27
|
static contract;
|
|
@@ -186,54 +184,6 @@ class TeeOffer {
|
|
|
186
184
|
(0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
|
|
187
185
|
await TxManager_js_1.default.execute(TeeOffer.contract.methods.deleteOption(this.id, optionId), transactionOptions);
|
|
188
186
|
}
|
|
189
|
-
async initializeTcb(deviceId, transactionOptions) {
|
|
190
|
-
(0, helper_js_1.checkIfActionAccountInitialized)();
|
|
191
|
-
await TxManager_js_1.default.execute(TeeOffer.contract.methods.initializeTcb(this.id, deviceId), transactionOptions);
|
|
192
|
-
}
|
|
193
|
-
async initializeTcbAndAssignBlocks(deviceId, transactionOptions) {
|
|
194
|
-
await this.initializeTcb(deviceId, transactionOptions);
|
|
195
|
-
const tcbId = await this.getInitializedTcbId();
|
|
196
|
-
const tcb = new index_js_3.TCB(tcbId);
|
|
197
|
-
await tcb.assignLastBlocksToCheck(transactionOptions);
|
|
198
|
-
await tcb.assignSuspiciousBlocksToCheck(transactionOptions);
|
|
199
|
-
return tcb;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Function initialize TCB and returns list of anothers' TCB for their checking
|
|
203
|
-
* @param deviceId - id of TEE offer
|
|
204
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
205
|
-
* @returns tcbId and lists of anothers' TCB for their checking
|
|
206
|
-
*/
|
|
207
|
-
async getListsForVerification(deviceId, transactionOptions) {
|
|
208
|
-
(0, helper_js_1.checkIfActionAccountInitialized)();
|
|
209
|
-
deviceId = (0, helper_js_1.packDeviceId)(deviceId);
|
|
210
|
-
const tcb = await this.initializeTcbAndAssignBlocks(deviceId, transactionOptions);
|
|
211
|
-
const { checkingTcbIds } = await tcb.getPublicData();
|
|
212
|
-
const tcbsPublicData = await Consensus_js_1.default.getTcbsPublicData(checkingTcbIds);
|
|
213
|
-
const tcbsUtilityData = await Consensus_js_1.default.getTcbsUtilityData(checkingTcbIds);
|
|
214
|
-
const teeOfferIds = [];
|
|
215
|
-
for (const tcbId of checkingTcbIds) {
|
|
216
|
-
teeOfferIds.push(tcbsUtilityData[tcbId].teeOfferId);
|
|
217
|
-
}
|
|
218
|
-
const benchmarks = await Consensus_js_1.default.getBenchmarksByTcbIds(checkingTcbIds, teeOfferIds);
|
|
219
|
-
const tcbsForVerification = [];
|
|
220
|
-
for (const checkingTcbId of checkingTcbIds) {
|
|
221
|
-
const { checkingTcbMarks, ...otherPublicData } = tcbsPublicData[checkingTcbId];
|
|
222
|
-
const { quote, pubKey } = tcbsUtilityData[checkingTcbId];
|
|
223
|
-
tcbsForVerification.push({
|
|
224
|
-
...otherPublicData,
|
|
225
|
-
benchmark: benchmarks[checkingTcbId],
|
|
226
|
-
checkingTcbId,
|
|
227
|
-
checkingTcbMarks: checkingTcbMarks.map((mark) => mark),
|
|
228
|
-
pubKey,
|
|
229
|
-
quote,
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
return {
|
|
233
|
-
tcbId: tcb.tcbId.toString(),
|
|
234
|
-
tcbsForVerification,
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
187
|
/**
|
|
238
188
|
* Returns the offer version info.
|
|
239
189
|
*/
|
|
@@ -249,10 +199,10 @@ class TeeOffer {
|
|
|
249
199
|
metadata: JSON.parse(cleanedTeeOfferVersion.info.metadata),
|
|
250
200
|
}),
|
|
251
201
|
...(cleanedTeeOfferVersion.info.signatureKeyHash && {
|
|
252
|
-
signatureKeyHash: (0,
|
|
202
|
+
signatureKeyHash: (0, index_js_3.deserializeBySchema)(cleanedTeeOfferVersion.info.signatureKeyHash, dto_js_1.HashSchema),
|
|
253
203
|
}),
|
|
254
204
|
...(cleanedTeeOfferVersion.info.hash && {
|
|
255
|
-
hash: (0,
|
|
205
|
+
hash: (0, index_js_3.deserializeBySchema)(cleanedTeeOfferVersion.info.hash, dto_js_1.HashSchema),
|
|
256
206
|
}),
|
|
257
207
|
},
|
|
258
208
|
};
|
|
@@ -350,9 +300,9 @@ class TeeOffer {
|
|
|
350
300
|
async setNewVersion(newVersion, versionInfo, transactionOptions) {
|
|
351
301
|
(0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
|
|
352
302
|
const transactionCall = TeeOffer.contract.methods.setOfferNewVersion(this.id, newVersion, {
|
|
353
|
-
hash: versionInfo.hash ? (0,
|
|
303
|
+
hash: versionInfo.hash ? (0, index_js_3.serializeBySchema)(versionInfo.hash, dto_js_1.HashSchema) : '',
|
|
354
304
|
signatureKeyHash: versionInfo.signatureKeyHash
|
|
355
|
-
? (0,
|
|
305
|
+
? (0, index_js_3.serializeBySchema)(versionInfo.signatureKeyHash, dto_js_1.HashSchema)
|
|
356
306
|
: '',
|
|
357
307
|
metadata: versionInfo.metadata ? JSON.stringify(versionInfo.metadata) : '',
|
|
358
308
|
});
|
|
@@ -375,16 +325,8 @@ class TeeOffer {
|
|
|
375
325
|
getActualTcbId() {
|
|
376
326
|
return TeeOffer.contract.methods.getActualTcbId(this.id).call();
|
|
377
327
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
*/
|
|
381
|
-
getInitializedTcbId() {
|
|
382
|
-
return TeeOffer.contract.methods.getInitializedTcbId(this.id).call();
|
|
383
|
-
}
|
|
384
|
-
async isTcbCreationAvailable(deviceId) {
|
|
385
|
-
const { offerNotBlocked, newEpochStarted, halfEpochPassed, benchmarkVerified } = (0, helper_js_1.cleanWeb3Data)(await TeeOffer.contract.methods
|
|
386
|
-
.isTcbCreationAvailable(this.id, (0, helper_js_1.packDeviceId)(deviceId))
|
|
387
|
-
.call());
|
|
328
|
+
async isTcbCreationAvailable(pubKey) {
|
|
329
|
+
const { offerNotBlocked, newEpochStarted, halfEpochPassed, benchmarkVerified } = (0, helper_js_1.cleanWeb3Data)(await TeeOffer.contract.methods.isTcbCreationAvailable(this.id, pubKey).call());
|
|
388
330
|
return offerNotBlocked && newEpochStarted && halfEpochPassed && benchmarkVerified;
|
|
389
331
|
}
|
|
390
332
|
/**
|
|
@@ -410,9 +352,6 @@ class TeeOffer {
|
|
|
410
352
|
this.type = await TeeOffer.contract.methods.getTeeOfferSubtype(this.id).call();
|
|
411
353
|
return this.type.toString();
|
|
412
354
|
}
|
|
413
|
-
isTeeOfferVerifying() {
|
|
414
|
-
return TeeOffer.contract.methods.isTeeOfferVerified(this.id).call();
|
|
415
|
-
}
|
|
416
355
|
/**
|
|
417
356
|
* Function for fetching violationRate for this TEE offer
|
|
418
357
|
*/
|
|
@@ -451,8 +390,8 @@ class TeeOffer {
|
|
|
451
390
|
*/
|
|
452
391
|
async setInfo(newInfo, transactionOptions) {
|
|
453
392
|
(0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
|
|
454
|
-
const { hardwareInfo, subType, ...offerInfo } = newInfo;
|
|
455
|
-
await this.
|
|
393
|
+
const { hardwareInfo: { optionInfo }, subType, ...offerInfo } = newInfo;
|
|
394
|
+
await this.setTeeOfferHardwareOptionInfo(optionInfo, transactionOptions);
|
|
456
395
|
await TxManager_js_1.default.execute(TeeOffer.contract.methods.setTeeOfferInfo(this.id, {
|
|
457
396
|
...offerInfo,
|
|
458
397
|
subtype: subType,
|
|
@@ -465,10 +404,9 @@ class TeeOffer {
|
|
|
465
404
|
* @param newHardwareInfo - new offer hardware info
|
|
466
405
|
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
467
406
|
*/
|
|
468
|
-
async
|
|
407
|
+
async setTeeOfferHardwareOptionInfo(optionInfo, transactionOptions) {
|
|
469
408
|
(0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
|
|
470
|
-
|
|
471
|
-
await TxManager_js_1.default.execute(TeeOffer.contract.methods.setTeeOfferHardwareInfo(this.id, newHardwareInfo.slotInfo, (0, helper_js_1.convertOptionInfoToRaw)(newHardwareInfo.optionInfo)), transactionOptions);
|
|
409
|
+
await TxManager_js_1.default.execute(TeeOffer.contract.methods.setTeeOfferHardwareOptionInfo(this.id, (0, helper_js_1.convertOptionInfoToRaw)(optionInfo)), transactionOptions);
|
|
472
410
|
}
|
|
473
411
|
/**
|
|
474
412
|
* Updates description in offer info
|
|
@@ -526,7 +464,7 @@ class TeeOffer {
|
|
|
526
464
|
catch (err) {
|
|
527
465
|
const message = (0, utils_js_2.getBcErrorMessage)(err);
|
|
528
466
|
if (message.includes('Offer not found')) {
|
|
529
|
-
throw new
|
|
467
|
+
throw new index_js_4.NotFoundError(`Offer ${this.id} not found`);
|
|
530
468
|
}
|
|
531
469
|
throw err;
|
|
532
470
|
}
|
|
@@ -580,24 +518,6 @@ __decorate([
|
|
|
580
518
|
__metadata("design:paramtypes", [String, Object]),
|
|
581
519
|
__metadata("design:returntype", Promise)
|
|
582
520
|
], TeeOffer.prototype, "deleteOption", null);
|
|
583
|
-
__decorate([
|
|
584
|
-
(0, helper_js_1.incrementMethodCall)(),
|
|
585
|
-
__metadata("design:type", Function),
|
|
586
|
-
__metadata("design:paramtypes", [String, Object]),
|
|
587
|
-
__metadata("design:returntype", Promise)
|
|
588
|
-
], TeeOffer.prototype, "initializeTcb", null);
|
|
589
|
-
__decorate([
|
|
590
|
-
(0, helper_js_1.incrementMethodCall)(),
|
|
591
|
-
__metadata("design:type", Function),
|
|
592
|
-
__metadata("design:paramtypes", [String, Object]),
|
|
593
|
-
__metadata("design:returntype", Promise)
|
|
594
|
-
], TeeOffer.prototype, "initializeTcbAndAssignBlocks", null);
|
|
595
|
-
__decorate([
|
|
596
|
-
(0, helper_js_1.incrementMethodCall)(),
|
|
597
|
-
__metadata("design:type", Function),
|
|
598
|
-
__metadata("design:paramtypes", [String, Object]),
|
|
599
|
-
__metadata("design:returntype", Promise)
|
|
600
|
-
], TeeOffer.prototype, "getListsForVerification", null);
|
|
601
521
|
__decorate([
|
|
602
522
|
(0, helper_js_1.incrementMethodCall)(),
|
|
603
523
|
__metadata("design:type", Function),
|
|
@@ -658,12 +578,6 @@ __decorate([
|
|
|
658
578
|
__metadata("design:paramtypes", []),
|
|
659
579
|
__metadata("design:returntype", Promise)
|
|
660
580
|
], TeeOffer.prototype, "getSubtype", null);
|
|
661
|
-
__decorate([
|
|
662
|
-
(0, helper_js_1.incrementMethodCall)(),
|
|
663
|
-
__metadata("design:type", Function),
|
|
664
|
-
__metadata("design:paramtypes", []),
|
|
665
|
-
__metadata("design:returntype", Promise)
|
|
666
|
-
], TeeOffer.prototype, "isTeeOfferVerifying", null);
|
|
667
581
|
__decorate([
|
|
668
582
|
(0, helper_js_1.incrementMethodCall)(),
|
|
669
583
|
__metadata("design:type", Function),
|
|
@@ -677,4 +591,4 @@ __decorate([
|
|
|
677
591
|
__metadata("design:returntype", Promise)
|
|
678
592
|
], TeeOffer.prototype, "setSubtype", null);
|
|
679
593
|
exports.default = TeeOffer;
|
|
680
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlT2ZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL1RlZU9mZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBRUEsa0RBYzRCO0FBQzVCLGdEQWdCMkI7QUFDM0IscURBQTZEO0FBQzdELHlFQUE4QztBQVM5QyxrREFBMEQ7QUFDMUQsZ0ZBQXFEO0FBQ3JELGlEQUF5QztBQUN6QyxtREFLZ0M7QUFDaEMsZ0ZBQXFEO0FBQ3JELDZEQUF3RjtBQUN4RixpREFBdUQ7QUFDdkQsaURBQW1EO0FBQ25ELG9GQUF5RDtBQUV6RCxNQUFNLFFBQVE7SUFDSixNQUFNLENBQUMsUUFBUSxDQUF1QjtJQUV2QyxFQUFFLENBQWU7SUFFakIsYUFBYSxDQUFtQjtJQUNoQyxXQUFXLENBQWU7SUFDMUIsU0FBUyxDQUFnQjtJQUV6QixJQUFJLENBQWE7SUFDakIsaUJBQWlCLENBQVU7SUFDM0IsUUFBUSxDQUFVO0lBQ2xCLE9BQU8sQ0FBVztJQUNsQixHQUFHLENBQVU7SUFDYixZQUFZLENBQVU7SUFDdEIsWUFBWSxDQUFVO0lBQ3RCLE9BQU8sQ0FBVztJQUNsQixZQUFZLENBQVc7SUFDdkIsVUFBVSxDQUFlO0lBRWhDLFlBQVksT0FBcUI7UUFDL0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QixRQUFRLENBQUMsUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFFSSxTQUFTO1FBQ2QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFHWSxBQUFOLEtBQUssQ0FBQyxhQUFh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
|
|
594
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlT2ZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL1RlZU9mZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBRUEsa0RBYTRCO0FBQzVCLGdEQWdCMkI7QUFDM0IscURBQTZEO0FBQzdELHlFQUE4QztBQUU5QyxrREFBMEQ7QUFDMUQsZ0ZBQXFEO0FBQ3JELG1EQUFvRDtBQUNwRCw2REFBd0Y7QUFDeEYsaURBQXVEO0FBQ3ZELGlEQUFtRDtBQUNuRCxvRkFBeUQ7QUFFekQsTUFBTSxRQUFRO0lBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBdUI7SUFFdkMsRUFBRSxDQUFlO0lBRWpCLGFBQWEsQ0FBbUI7SUFDaEMsV0FBVyxDQUFlO0lBQzFCLFNBQVMsQ0FBZ0I7SUFFekIsSUFBSSxDQUFhO0lBQ2pCLGlCQUFpQixDQUFVO0lBQzNCLFFBQVEsQ0FBVTtJQUNsQixPQUFPLENBQVc7SUFDbEIsR0FBRyxDQUFVO0lBQ2IsWUFBWSxDQUFVO0lBQ3RCLFlBQVksQ0FBVTtJQUN0QixPQUFPLENBQVc7SUFDbEIsWUFBWSxDQUFXO0lBQ3ZCLFVBQVUsQ0FBZTtJQUVoQyxZQUFZLE9BQXFCO1FBQy9CLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkIsUUFBUSxDQUFDLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBRUksU0FBUztRQUNkLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBR1ksQUFBTixLQUFLLENBQUMsYUFBYSxDQUN4QixNQUFvQixFQUNwQixTQUFpQixF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
|