@bitgo-beta/sdk-coin-apt 0.0.0-semantic-release-managed
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/.eslintignore +4 -0
- package/.mocharc.yml +8 -0
- package/CHANGELOG.md +330 -0
- package/LICENSE +191 -0
- package/README.md +30 -0
- package/dist/src/apt.d.ts +44 -0
- package/dist/src/apt.d.ts.map +1 -0
- package/dist/src/apt.js +212 -0
- package/dist/src/aptNFTCollection.d.ts +18 -0
- package/dist/src/aptNFTCollection.d.ts.map +1 -0
- package/dist/src/aptNFTCollection.js +52 -0
- package/dist/src/aptToken.d.ts +19 -0
- package/dist/src/aptToken.d.ts.map +1 -0
- package/dist/src/aptToken.js +52 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +23 -0
- package/dist/src/lib/constants.d.ts +21 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +24 -0
- package/dist/src/lib/iface.d.ts +108 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +3 -0
- package/dist/src/lib/index.d.ts +16 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +65 -0
- package/dist/src/lib/keyPair.d.ts +18 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +44 -0
- package/dist/src/lib/transaction/customTransaction.d.ts +54 -0
- package/dist/src/lib/transaction/customTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/customTransaction.js +228 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.d.ts +10 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.d.ts.map +1 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.js +45 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts +12 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts.map +1 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.js +73 -0
- package/dist/src/lib/transaction/transaction.d.ts +81 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transaction.js +332 -0
- package/dist/src/lib/transaction/transferTransaction.d.ts +12 -0
- package/dist/src/lib/transaction/transferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transferTransaction.js +63 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts +64 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.js +127 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts +14 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.js +55 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.js +61 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +68 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +169 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts +13 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.js +56 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +39 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +99 -0
- package/dist/src/lib/types.d.ts +9 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +3 -0
- package/dist/src/lib/utils/validation.d.ts +32 -0
- package/dist/src/lib/utils/validation.d.ts.map +1 -0
- package/dist/src/lib/utils/validation.js +99 -0
- package/dist/src/lib/utils.d.ts +42 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +150 -0
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +19 -0
- package/dist/src/tapt.d.ts +17 -0
- package/dist/src/tapt.d.ts.map +1 -0
- package/dist/src/tapt.js +30 -0
- package/package.json +55 -0
package/dist/src/apt.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.Apt = void 0;
|
|
40
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
41
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
42
|
+
const lib_1 = require("./lib");
|
|
43
|
+
const utils_1 = __importDefault(require("./lib/utils"));
|
|
44
|
+
const _ = __importStar(require("lodash"));
|
|
45
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
46
|
+
const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
|
|
47
|
+
class Apt extends sdk_core_1.BaseCoin {
|
|
48
|
+
constructor(bitgo, staticsCoin) {
|
|
49
|
+
super(bitgo);
|
|
50
|
+
if (!staticsCoin) {
|
|
51
|
+
throw new Error('missing required constructor parameter staticsCoin');
|
|
52
|
+
}
|
|
53
|
+
this._staticsCoin = staticsCoin;
|
|
54
|
+
}
|
|
55
|
+
static createInstance(bitgo, staticsCoin) {
|
|
56
|
+
return new Apt(bitgo, staticsCoin);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Factor between the coin's base unit and its smallest subdivison
|
|
60
|
+
*/
|
|
61
|
+
getBaseFactor() {
|
|
62
|
+
return 1e8;
|
|
63
|
+
}
|
|
64
|
+
getChain() {
|
|
65
|
+
return 'apt';
|
|
66
|
+
}
|
|
67
|
+
getFamily() {
|
|
68
|
+
return 'apt';
|
|
69
|
+
}
|
|
70
|
+
getFullName() {
|
|
71
|
+
return 'Aptos';
|
|
72
|
+
}
|
|
73
|
+
/** @inheritDoc */
|
|
74
|
+
supportsTss() {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
/** inherited doc */
|
|
78
|
+
getDefaultMultisigType() {
|
|
79
|
+
return sdk_core_1.multisigTypes.tss;
|
|
80
|
+
}
|
|
81
|
+
getMPCAlgorithm() {
|
|
82
|
+
return 'eddsa';
|
|
83
|
+
}
|
|
84
|
+
allowsAccountConsolidations() {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
async verifyTransaction(params) {
|
|
88
|
+
const { txPrebuild: txPrebuild, txParams: txParams } = params;
|
|
89
|
+
const txHex = txPrebuild.txHex;
|
|
90
|
+
if (!txHex) {
|
|
91
|
+
throw new Error('missing required tx prebuild property txHex');
|
|
92
|
+
}
|
|
93
|
+
const explainedTx = await this.explainTransaction({ txHex });
|
|
94
|
+
if (!explainedTx) {
|
|
95
|
+
throw new Error('failed to explain transaction');
|
|
96
|
+
}
|
|
97
|
+
if (txParams.recipients !== undefined) {
|
|
98
|
+
const filteredRecipients = txParams.recipients?.map((recipient) => {
|
|
99
|
+
return {
|
|
100
|
+
address: recipient.address,
|
|
101
|
+
amount: BigInt(recipient.amount),
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
const filteredOutputs = explainedTx.outputs.map((output) => {
|
|
105
|
+
return {
|
|
106
|
+
address: output.address,
|
|
107
|
+
amount: BigInt(output.amount),
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
if (!_.isEqual(filteredOutputs, filteredRecipients)) {
|
|
111
|
+
throw new Error('Tx outputs does not match with expected txParams recipients');
|
|
112
|
+
}
|
|
113
|
+
let totalAmount = new bignumber_js_1.default(0);
|
|
114
|
+
for (const recipients of txParams.recipients) {
|
|
115
|
+
totalAmount = totalAmount.plus(recipients.amount);
|
|
116
|
+
}
|
|
117
|
+
if (!totalAmount.isEqualTo(explainedTx.outputAmount)) {
|
|
118
|
+
throw new Error('Tx total amount does not match with expected total amount field');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
async isWalletAddress(params) {
|
|
124
|
+
const { address: newAddress } = params;
|
|
125
|
+
if (!this.isValidAddress(newAddress)) {
|
|
126
|
+
throw new sdk_core_1.InvalidAddressError(`invalid address: ${newAddress}`);
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
async parseTransaction(params) {
|
|
131
|
+
const transactionExplanation = await this.explainTransaction({ txHex: params.txHex });
|
|
132
|
+
if (!transactionExplanation) {
|
|
133
|
+
throw new Error('Invalid transaction');
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
inputs: [
|
|
137
|
+
{
|
|
138
|
+
address: transactionExplanation.sender,
|
|
139
|
+
amount: transactionExplanation.outputAmount,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
outputs: [
|
|
143
|
+
{
|
|
144
|
+
address: transactionExplanation.outputs[0].address,
|
|
145
|
+
amount: transactionExplanation.outputs[0].amount,
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Explain a Apt transaction
|
|
152
|
+
* @param params
|
|
153
|
+
*/
|
|
154
|
+
async explainTransaction(params) {
|
|
155
|
+
let rebuiltTransaction;
|
|
156
|
+
try {
|
|
157
|
+
rebuiltTransaction = await this.rebuildTransaction(params.txHex);
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
return rebuiltTransaction.explainTransaction();
|
|
163
|
+
}
|
|
164
|
+
generateKeyPair(seed) {
|
|
165
|
+
const keyPair = seed ? new lib_1.KeyPair({ seed }) : new lib_1.KeyPair();
|
|
166
|
+
const keys = keyPair.getKeys();
|
|
167
|
+
if (!keys.prv) {
|
|
168
|
+
throw new Error('Missing prv in key generation.');
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
pub: keys.pub,
|
|
172
|
+
prv: keys.prv,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
isValidPub(pub) {
|
|
176
|
+
return utils_1.default.isValidPublicKey(pub);
|
|
177
|
+
}
|
|
178
|
+
isValidAddress(address) {
|
|
179
|
+
return utils_1.default.isValidAddress(address);
|
|
180
|
+
}
|
|
181
|
+
signTransaction(params) {
|
|
182
|
+
throw new Error('Method not implemented.');
|
|
183
|
+
}
|
|
184
|
+
getTxBuilderFactory() {
|
|
185
|
+
return new lib_1.TransactionBuilderFactory(statics_1.coins.get(this.getChain()));
|
|
186
|
+
}
|
|
187
|
+
async rebuildTransaction(txHex) {
|
|
188
|
+
const txBuilderFactory = this.getTxBuilderFactory();
|
|
189
|
+
try {
|
|
190
|
+
const txBuilder = txBuilderFactory.from(txHex);
|
|
191
|
+
return txBuilder.getRebuiltTransaction();
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
throw new Error('Failed to rebuild transaction');
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/** @inheritDoc */
|
|
198
|
+
auditDecryptedKey({ multiSigType, prv, publicKey }) {
|
|
199
|
+
if (multiSigType !== 'tss') {
|
|
200
|
+
throw new Error('Unsupported multiSigType');
|
|
201
|
+
}
|
|
202
|
+
(0, sdk_lib_mpc_1.auditEddsaPrivateKey)(prv, publicKey ?? '');
|
|
203
|
+
}
|
|
204
|
+
setCoinSpecificFieldsInIntent(intent, params) {
|
|
205
|
+
// Handle custom transaction parameters for Aptos
|
|
206
|
+
if (params.aptosCustomTransactionParams) {
|
|
207
|
+
intent.aptosCustomTransactionParams = params.aptosCustomTransactionParams;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.Apt = Apt;
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFrQjhCO0FBQzlCLGlEQUF5RTtBQUN6RSwrQkFBeUU7QUFDekUsd0RBQWdDO0FBQ2hDLDBDQUE0QjtBQUM1QixnRUFBcUM7QUFHckMseURBQStEO0FBTS9ELE1BQWEsR0FBSSxTQUFRLG1CQUFRO0lBRS9CLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsc0JBQXNCO1FBQ3BCLE9BQU8sd0JBQWEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsMkJBQTJCO1FB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QUE0QixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQztRQUM1RSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBMUxELGtCQTBMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zLFxuICBCYXNlQ29pbixcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBCaXRHb0Jhc2UsXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgTXVsdGlzaWdUeXBlLFxuICBtdWx0aXNpZ1R5cGVzLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFBvcHVsYXRlZEludGVudCxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBBcHRLZXlQYWlyLCBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMgfSBmcm9tICcuL2xpYi90eXBlcyc7XG5pbXBvcnQgeyBBcHRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi9saWIvaWZhY2UnO1xuaW1wb3J0IHsgYXVkaXRFZGRzYVByaXZhdGVLZXkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXB0UGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHQgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBBcHQoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3IgYmV0d2VlbiB0aGUgY29pbidzIGJhc2UgdW5pdCBhbmQgaXRzIHNtYWxsZXN0IHN1YmRpdmlzb25cbiAgICovXG4gIHB1YmxpYyBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDFlODtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnYXB0JztcbiAgfVxuXG4gIHB1YmxpYyBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2FwdCc7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0FwdG9zJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VkZHNhJztcbiAgfVxuXG4gIGFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkLCB0eFBhcmFtczogdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCB0eEhleCA9IHR4UHJlYnVpbGQudHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgfVxuICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gYXdhaXQgdGhpcy5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleCB9KTtcbiAgICBpZiAoIWV4cGxhaW5lZFR4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBleHBsYWluIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkUmVjaXBpZW50cyA9IHR4UGFyYW1zLnJlY2lwaWVudHM/Lm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiBCaWdJbnQocmVjaXBpZW50LmFtb3VudCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHMubWFwKChvdXRwdXQpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQ6IEJpZ0ludChvdXRwdXQuYW1vdW50KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgaWYgKCFfLmlzRXF1YWwoZmlsdGVyZWRPdXRwdXRzLCBmaWx0ZXJlZFJlY2lwaWVudHMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICAgIH1cbiAgICAgIGxldCB0b3RhbEFtb3VudCA9IG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgICBmb3IgKGNvbnN0IHJlY2lwaWVudHMgb2YgdHhQYXJhbXMucmVjaXBpZW50cykge1xuICAgICAgICB0b3RhbEFtb3VudCA9IHRvdGFsQW1vdW50LnBsdXMocmVjaXBpZW50cy5hbW91bnQpO1xuICAgICAgfVxuICAgICAgaWYgKCF0b3RhbEFtb3VudC5pc0VxdWFsVG8oZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBhZGRyZXNzOiBuZXdBZGRyZXNzIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MobmV3QWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7bmV3QWRkcmVzc31gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogQXB0UGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IGF3YWl0IHRoaXMuZXhwbGFpblRyYW5zYWN0aW9uKHsgdHhIZXg6IHBhcmFtcy50eEhleCB9KTtcbiAgICBpZiAoIXRyYW5zYWN0aW9uRXhwbGFuYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uLnNlbmRlcixcbiAgICAgICAgICBhbW91bnQ6IHRyYW5zYWN0aW9uRXhwbGFuYXRpb24ub3V0cHV0QW1vdW50LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IHRyYW5zYWN0aW9uRXhwbGFuYXRpb24ub3V0cHV0c1swXS5hZGRyZXNzLFxuICAgICAgICAgIGFtb3VudDogdHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5vdXRwdXRzWzBdLmFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgQXB0IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPEFwdFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgcmVidWlsdFRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb247XG4gICAgdHJ5IHtcbiAgICAgIHJlYnVpbHRUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMucmVidWlsZFRyYW5zYWN0aW9uKHBhcmFtcy50eEhleCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gcmVidWlsdFRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBBcHRLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBBcHRLZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHB1Yik7XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUeEJ1aWxkZXJGYWN0b3J5KCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVidWlsZFRyYW5zYWN0aW9uKHR4SGV4OiBzdHJpbmcpOiBQcm9taXNlPEJhc2VUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4QnVpbGRlckZhY3RvcnkgPSB0aGlzLmdldFR4QnVpbGRlckZhY3RvcnkoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gdHhCdWlsZGVyRmFjdG9yeS5mcm9tKHR4SGV4KTtcbiAgICAgIHJldHVybiB0eEJ1aWxkZXIuZ2V0UmVidWlsdFRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byByZWJ1aWxkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgbXVsdGlTaWdUeXBlLCBwcnYsIHB1YmxpY0tleSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyk6IHZvaWQge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgIT09ICd0c3MnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpU2lnVHlwZScpO1xuICAgIH1cbiAgICBhdWRpdEVkZHNhUHJpdmF0ZUtleShwcnYsIHB1YmxpY0tleSA/PyAnJyk7XG4gIH1cblxuICBzZXRDb2luU3BlY2lmaWNGaWVsZHNJbkludGVudChpbnRlbnQ6IFBvcHVsYXRlZEludGVudCwgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMpOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgY3VzdG9tIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgZm9yIEFwdG9zXG4gICAgaWYgKHBhcmFtcy5hcHRvc0N1c3RvbVRyYW5zYWN0aW9uUGFyYW1zKSB7XG4gICAgICBpbnRlbnQuYXB0b3NDdXN0b21UcmFuc2FjdGlvblBhcmFtcyA9IHBhcmFtcy5hcHRvc0N1c3RvbVRyYW5zYWN0aW9uUGFyYW1zO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Apt } from './apt';
|
|
2
|
+
import { BitGoBase, CoinConstructor, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { AptNFTCollectionConfig } from '@bitgo-beta/statics';
|
|
4
|
+
export declare class AptNFTCollection extends Apt {
|
|
5
|
+
readonly nftCollectionConfig: AptNFTCollectionConfig;
|
|
6
|
+
constructor(bitgo: BitGoBase, nftCollectionConfig: AptNFTCollectionConfig);
|
|
7
|
+
static createNFTCollectionConstructor(config: AptNFTCollectionConfig): CoinConstructor;
|
|
8
|
+
static createNFTCollectionConstructors(nftCollectionConfigs?: AptNFTCollectionConfig[]): NamedCoinConstructor[];
|
|
9
|
+
get name(): string;
|
|
10
|
+
get coin(): string;
|
|
11
|
+
get network(): string;
|
|
12
|
+
get nftCollectionId(): string;
|
|
13
|
+
getChain(): string;
|
|
14
|
+
getBaseChain(): string;
|
|
15
|
+
getFullName(): string;
|
|
16
|
+
getBaseFactor(): number;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=aptNFTCollection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aptNFTCollection.d.ts","sourceRoot":"","sources":["../../src/aptNFTCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,sBAAsB,EAAiB,MAAM,qBAAqB,CAAC;AAE5E,qBAAa,gBAAiB,SAAQ,GAAG;IACvC,SAAgB,mBAAmB,EAAE,sBAAsB,CAAC;gBAEhD,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,sBAAsB;IAMzE,MAAM,CAAC,8BAA8B,CAAC,MAAM,EAAE,sBAAsB,GAAG,eAAe;IAGtF,MAAM,CAAC,+BAA+B,CACpC,oBAAoB,GAAE,sBAAsB,EAG3C,GACA,oBAAoB,EAAE;IASzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;CAGxB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AptNFTCollection = void 0;
|
|
4
|
+
const apt_1 = require("./apt");
|
|
5
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
6
|
+
class AptNFTCollection extends apt_1.Apt {
|
|
7
|
+
constructor(bitgo, nftCollectionConfig) {
|
|
8
|
+
const staticsCoin = nftCollectionConfig.network === 'Mainnet' ? statics_1.coins.get('apt') : statics_1.coins.get('tapt');
|
|
9
|
+
super(bitgo, staticsCoin);
|
|
10
|
+
this.nftCollectionConfig = nftCollectionConfig;
|
|
11
|
+
}
|
|
12
|
+
static createNFTCollectionConstructor(config) {
|
|
13
|
+
return (bitgo) => new AptNFTCollection(bitgo, config);
|
|
14
|
+
}
|
|
15
|
+
static createNFTCollectionConstructors(nftCollectionConfigs = [
|
|
16
|
+
...statics_1.tokens.bitcoin.apt.nftCollections,
|
|
17
|
+
...statics_1.tokens.testnet.apt.nftCollections,
|
|
18
|
+
]) {
|
|
19
|
+
const nftCollectionCtors = [];
|
|
20
|
+
for (const config of nftCollectionConfigs) {
|
|
21
|
+
const nftCollectionConstructor = AptNFTCollection.createNFTCollectionConstructor(config);
|
|
22
|
+
nftCollectionCtors.push({ name: config.type, coinConstructor: nftCollectionConstructor });
|
|
23
|
+
}
|
|
24
|
+
return nftCollectionCtors;
|
|
25
|
+
}
|
|
26
|
+
get name() {
|
|
27
|
+
return this.nftCollectionConfig.name;
|
|
28
|
+
}
|
|
29
|
+
get coin() {
|
|
30
|
+
return this.nftCollectionConfig.coin;
|
|
31
|
+
}
|
|
32
|
+
get network() {
|
|
33
|
+
return this.nftCollectionConfig.network;
|
|
34
|
+
}
|
|
35
|
+
get nftCollectionId() {
|
|
36
|
+
return this.nftCollectionConfig.nftCollectionId;
|
|
37
|
+
}
|
|
38
|
+
getChain() {
|
|
39
|
+
return this.nftCollectionConfig.type;
|
|
40
|
+
}
|
|
41
|
+
getBaseChain() {
|
|
42
|
+
return this.coin;
|
|
43
|
+
}
|
|
44
|
+
getFullName() {
|
|
45
|
+
return 'Apt NFT Collection';
|
|
46
|
+
}
|
|
47
|
+
getBaseFactor() {
|
|
48
|
+
return Math.pow(10, this.nftCollectionConfig.decimalPlaces);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.AptNFTCollection = AptNFTCollection;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXB0TkZUQ29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHRORlRDb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE0QjtBQUU1QixpREFBNEU7QUFFNUUsTUFBYSxnQkFBaUIsU0FBUSxTQUFHO0lBR3ZDLFlBQVksS0FBZ0IsRUFBRSxtQkFBMkM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxDQUFDLDhCQUE4QixDQUFDLE1BQThCO1FBQ2xFLE9BQU8sQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLCtCQUErQixDQUNwQyx1QkFBaUQ7UUFDL0MsR0FBRyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYztRQUNwQyxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO0tBQ3JDO1FBRUQsTUFBTSxrQkFBa0IsR0FBMkIsRUFBRSxDQUFDO1FBQ3RELEtBQUssTUFBTSxNQUFNLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUMxQyxNQUFNLHdCQUF3QixHQUFHLGdCQUFnQixDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBekRELDRDQXlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwdCB9IGZyb20gJy4vYXB0JztcbmltcG9ydCB7IEJpdEdvQmFzZSwgQ29pbkNvbnN0cnVjdG9yLCBOYW1lZENvaW5Db25zdHJ1Y3RvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEFwdE5GVENvbGxlY3Rpb25Db25maWcsIGNvaW5zLCB0b2tlbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIEFwdE5GVENvbGxlY3Rpb24gZXh0ZW5kcyBBcHQge1xuICBwdWJsaWMgcmVhZG9ubHkgbmZ0Q29sbGVjdGlvbkNvbmZpZzogQXB0TkZUQ29sbGVjdGlvbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBuZnRDb2xsZWN0aW9uQ29uZmlnOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnKSB7XG4gICAgY29uc3Qgc3RhdGljc0NvaW4gPSBuZnRDb2xsZWN0aW9uQ29uZmlnLm5ldHdvcmsgPT09ICdNYWlubmV0JyA/IGNvaW5zLmdldCgnYXB0JykgOiBjb2lucy5nZXQoJ3RhcHQnKTtcbiAgICBzdXBlcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICAgIHRoaXMubmZ0Q29sbGVjdGlvbkNvbmZpZyA9IG5mdENvbGxlY3Rpb25Db25maWc7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTkZUQ29sbGVjdGlvbkNvbnN0cnVjdG9yKGNvbmZpZzogQXB0TkZUQ29sbGVjdGlvbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgQXB0TkZUQ29sbGVjdGlvbihiaXRnbywgY29uZmlnKTtcbiAgfVxuICBzdGF0aWMgY3JlYXRlTkZUQ29sbGVjdGlvbkNvbnN0cnVjdG9ycyhcbiAgICBuZnRDb2xsZWN0aW9uQ29uZmlnczogQXB0TkZUQ29sbGVjdGlvbkNvbmZpZ1tdID0gW1xuICAgICAgLi4udG9rZW5zLmJpdGNvaW4uYXB0Lm5mdENvbGxlY3Rpb25zLFxuICAgICAgLi4udG9rZW5zLnRlc3RuZXQuYXB0Lm5mdENvbGxlY3Rpb25zLFxuICAgIF1cbiAgKTogTmFtZWRDb2luQ29uc3RydWN0b3JbXSB7XG4gICAgY29uc3QgbmZ0Q29sbGVjdGlvbkN0b3JzOiBOYW1lZENvaW5Db25zdHJ1Y3RvcltdID0gW107XG4gICAgZm9yIChjb25zdCBjb25maWcgb2YgbmZ0Q29sbGVjdGlvbkNvbmZpZ3MpIHtcbiAgICAgIGNvbnN0IG5mdENvbGxlY3Rpb25Db25zdHJ1Y3RvciA9IEFwdE5GVENvbGxlY3Rpb24uY3JlYXRlTkZUQ29sbGVjdGlvbkNvbnN0cnVjdG9yKGNvbmZpZyk7XG4gICAgICBuZnRDb2xsZWN0aW9uQ3RvcnMucHVzaCh7IG5hbWU6IGNvbmZpZy50eXBlLCBjb2luQ29uc3RydWN0b3I6IG5mdENvbGxlY3Rpb25Db25zdHJ1Y3RvciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5mdENvbGxlY3Rpb25DdG9ycztcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmZ0Q29sbGVjdGlvbkNvbmZpZy5uYW1lO1xuICB9XG5cbiAgZ2V0IGNvaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uZnRDb2xsZWN0aW9uQ29uZmlnLmNvaW47XG4gIH1cblxuICBnZXQgbmV0d29yaygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5mdENvbGxlY3Rpb25Db25maWcubmV0d29yaztcbiAgfVxuXG4gIGdldCBuZnRDb2xsZWN0aW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uZnRDb2xsZWN0aW9uQ29uZmlnLm5mdENvbGxlY3Rpb25JZDtcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmZ0Q29sbGVjdGlvbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29pbjtcbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdBcHQgTkZUIENvbGxlY3Rpb24nO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5uZnRDb2xsZWN0aW9uQ29uZmlnLmRlY2ltYWxQbGFjZXMpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Apt } from './apt';
|
|
2
|
+
import { BitGoBase, CoinConstructor, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { AptTokenConfig } from '@bitgo-beta/statics';
|
|
4
|
+
export declare class AptToken extends Apt {
|
|
5
|
+
readonly tokenConfig: AptTokenConfig;
|
|
6
|
+
constructor(bitgo: BitGoBase, tokenConfig: AptTokenConfig);
|
|
7
|
+
static createTokenConstructor(config: AptTokenConfig): CoinConstructor;
|
|
8
|
+
static createTokenConstructors(tokenConfigs?: AptTokenConfig[]): NamedCoinConstructor[];
|
|
9
|
+
get name(): string;
|
|
10
|
+
get coin(): string;
|
|
11
|
+
get network(): string;
|
|
12
|
+
get assetId(): string;
|
|
13
|
+
get decimalPlaces(): number;
|
|
14
|
+
getChain(): string;
|
|
15
|
+
getBaseChain(): string;
|
|
16
|
+
getFullName(): string;
|
|
17
|
+
getBaseFactor(): number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=aptToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aptToken.d.ts","sourceRoot":"","sources":["../../src/aptToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAEpE,qBAAa,QAAS,SAAQ,GAAG;IAC/B,SAAgB,WAAW,EAAE,cAAc,CAAC;gBAEhC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc;IAMzD,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAGtE,MAAM,CAAC,uBAAuB,CAC5B,YAAY,GAAE,cAAc,EAAiE,GAC5F,oBAAoB,EAAE;IASzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;CAGxB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AptToken = void 0;
|
|
4
|
+
const apt_1 = require("./apt");
|
|
5
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
6
|
+
class AptToken extends apt_1.Apt {
|
|
7
|
+
constructor(bitgo, tokenConfig) {
|
|
8
|
+
const staticsCoin = tokenConfig.network === 'Mainnet' ? statics_1.coins.get('apt') : statics_1.coins.get('tapt');
|
|
9
|
+
super(bitgo, staticsCoin);
|
|
10
|
+
this.tokenConfig = tokenConfig;
|
|
11
|
+
}
|
|
12
|
+
static createTokenConstructor(config) {
|
|
13
|
+
return (bitgo) => new AptToken(bitgo, config);
|
|
14
|
+
}
|
|
15
|
+
static createTokenConstructors(tokenConfigs = [...statics_1.tokens.bitcoin.apt.tokens, ...statics_1.tokens.testnet.apt.tokens]) {
|
|
16
|
+
const tokensCtors = [];
|
|
17
|
+
for (const token of tokenConfigs) {
|
|
18
|
+
const tokenConstructor = AptToken.createTokenConstructor(token);
|
|
19
|
+
tokensCtors.push({ name: token.type, coinConstructor: tokenConstructor });
|
|
20
|
+
}
|
|
21
|
+
return tokensCtors;
|
|
22
|
+
}
|
|
23
|
+
get name() {
|
|
24
|
+
return this.tokenConfig.name;
|
|
25
|
+
}
|
|
26
|
+
get coin() {
|
|
27
|
+
return this.tokenConfig.coin;
|
|
28
|
+
}
|
|
29
|
+
get network() {
|
|
30
|
+
return this.tokenConfig.network;
|
|
31
|
+
}
|
|
32
|
+
get assetId() {
|
|
33
|
+
return this.tokenConfig.assetId;
|
|
34
|
+
}
|
|
35
|
+
get decimalPlaces() {
|
|
36
|
+
return this.tokenConfig.decimalPlaces;
|
|
37
|
+
}
|
|
38
|
+
getChain() {
|
|
39
|
+
return this.tokenConfig.type;
|
|
40
|
+
}
|
|
41
|
+
getBaseChain() {
|
|
42
|
+
return this.coin;
|
|
43
|
+
}
|
|
44
|
+
getFullName() {
|
|
45
|
+
return 'Apt Token';
|
|
46
|
+
}
|
|
47
|
+
getBaseFactor() {
|
|
48
|
+
return Math.pow(10, this.tokenConfig.decimalPlaces);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.AptToken = AptToken;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXB0VG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXB0VG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQTRCO0FBRTVCLGlEQUFvRTtBQUVwRSxNQUFhLFFBQVMsU0FBUSxTQUFHO0lBRy9CLFlBQVksS0FBZ0IsRUFBRSxXQUEyQjtRQUN2RCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RixLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBc0I7UUFDbEQsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixlQUFpQyxDQUFDLEdBQUcsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFFN0YsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUMvQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUExREQsNEJBMERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXB0IH0gZnJvbSAnLi9hcHQnO1xuaW1wb3J0IHsgQml0R29CYXNlLCBDb2luQ29uc3RydWN0b3IsIE5hbWVkQ29pbkNvbnN0cnVjdG9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXB0VG9rZW5Db25maWcsIGNvaW5zLCB0b2tlbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIEFwdFRva2VuIGV4dGVuZHMgQXB0IHtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuQ29uZmlnOiBBcHRUb2tlbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogQXB0VG9rZW5Db25maWcpIHtcbiAgICBjb25zdCBzdGF0aWNzQ29pbiA9IHRva2VuQ29uZmlnLm5ldHdvcmsgPT09ICdNYWlubmV0JyA/IGNvaW5zLmdldCgnYXB0JykgOiBjb2lucy5nZXQoJ3RhcHQnKTtcbiAgICBzdXBlcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICAgIHRoaXMudG9rZW5Db25maWcgPSB0b2tlbkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9yKGNvbmZpZzogQXB0VG9rZW5Db25maWcpOiBDb2luQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiAoYml0Z286IEJpdEdvQmFzZSkgPT4gbmV3IEFwdFRva2VuKGJpdGdvLCBjb25maWcpO1xuICB9XG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhcbiAgICB0b2tlbkNvbmZpZ3M6IEFwdFRva2VuQ29uZmlnW10gPSBbLi4udG9rZW5zLmJpdGNvaW4uYXB0LnRva2VucywgLi4udG9rZW5zLnRlc3RuZXQuYXB0LnRva2Vuc11cbiAgKTogTmFtZWRDb2luQ29uc3RydWN0b3JbXSB7XG4gICAgY29uc3QgdG9rZW5zQ3RvcnM6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2VuQ29uZmlncykge1xuICAgICAgY29uc3QgdG9rZW5Db25zdHJ1Y3RvciA9IEFwdFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW4pO1xuICAgICAgdG9rZW5zQ3RvcnMucHVzaCh7IG5hbWU6IHRva2VuLnR5cGUsIGNvaW5Db25zdHJ1Y3RvcjogdG9rZW5Db25zdHJ1Y3RvciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRva2Vuc0N0b3JzO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uYW1lO1xuICB9XG5cbiAgZ2V0IGNvaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5jb2luO1xuICB9XG5cbiAgZ2V0IG5ldHdvcmsoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uZXR3b3JrO1xuICB9XG5cbiAgZ2V0IGFzc2V0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5hc3NldElkO1xuICB9XG5cbiAgZ2V0IGRlY2ltYWxQbGFjZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5kZWNpbWFsUGxhY2VzO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29pbjtcbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdBcHQgVG9rZW4nO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy50b2tlbkNvbmZpZy5kZWNpbWFsUGxhY2VzKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./lib"), exports);
|
|
18
|
+
__exportStar(require("./register"), exports);
|
|
19
|
+
__exportStar(require("./apt"), exports);
|
|
20
|
+
__exportStar(require("./tapt"), exports);
|
|
21
|
+
__exportStar(require("./aptToken"), exports);
|
|
22
|
+
__exportStar(require("./aptNFTCollection"), exports);
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0Qiw2Q0FBMkI7QUFDM0Isd0NBQXNCO0FBQ3RCLHlDQUF1QjtBQUN2Qiw2Q0FBMkI7QUFDM0IscURBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG5leHBvcnQgKiBmcm9tICcuL2FwdCc7XG5leHBvcnQgKiBmcm9tICcuL3RhcHQnO1xuZXhwb3J0ICogZnJvbSAnLi9hcHRUb2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2FwdE5GVENvbGxlY3Rpb24nO1xuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const APT_ADDRESS_LENGTH = 64;
|
|
2
|
+
export declare const APT_TRANSACTION_ID_LENGTH = 64;
|
|
3
|
+
export declare const APT_BLOCK_ID_LENGTH = 64;
|
|
4
|
+
export declare const APT_SIGNATURE_LENGTH = 128;
|
|
5
|
+
export declare const UNAVAILABLE_TEXT = "UNAVAILABLE";
|
|
6
|
+
export declare const DEFAULT_GAS_UNIT_PRICE = 100;
|
|
7
|
+
export declare const SECONDS_PER_WEEK: number;
|
|
8
|
+
export declare const ADDRESS_BYTES_LENGTH = 32;
|
|
9
|
+
export declare const AMOUNT_BYTES_LENGTH = 8;
|
|
10
|
+
export declare const DIGITAL_ASSET_TRANSFER_AMOUNT = "1";
|
|
11
|
+
export declare const FUNGIBLE_ASSET_TRANSFER_FUNCTION = "0x1::primary_fungible_store::transfer";
|
|
12
|
+
export declare const FUNGIBLE_ASSET_BATCH_TRANSFER_FUNCTION = "0x1::aptos_account::batch_transfer_fungible_assets";
|
|
13
|
+
export declare const COIN_TRANSFER_FUNCTION = "0x1::aptos_account::transfer_coins";
|
|
14
|
+
export declare const COIN_BATCH_TRANSFER_FUNCTION = "0x1::aptos_account::batch_transfer_coins";
|
|
15
|
+
export declare const DIGITAL_ASSET_TRANSFER_FUNCTION = "0x1::object::transfer";
|
|
16
|
+
export declare const APTOS_COIN = "0x1::aptos_coin::AptosCoin";
|
|
17
|
+
export declare const FUNGIBLE_ASSET_TYPE_ARGUMENT = "0x1::fungible_asset::Metadata";
|
|
18
|
+
export declare const DIGITAL_ASSET_TYPE_ARGUMENT = "0x4::token::Token";
|
|
19
|
+
export declare const FUNBIGLE_ASSET_TYPE_TAG = "0x1::object::Object";
|
|
20
|
+
export declare const BATCH_FUNGIBLE_ASSET_TYPE_TAG = "0x1::object::Object<0x1::fungible_asset::Metadata>";
|
|
21
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AACjD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,eAAO,MAAM,gCAAgC,0CAA0C,CAAC;AACxF,eAAO,MAAM,sCAAsC,uDAAuD,CAAC;AAC3G,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAC3E,eAAO,MAAM,4BAA4B,6CAA6C,CAAC;AACvF,eAAO,MAAM,+BAA+B,0BAA0B,CAAC;AAEvE,eAAO,MAAM,UAAU,+BAA+B,CAAC;AACvD,eAAO,MAAM,4BAA4B,kCAAkC,CAAC;AAC5E,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAE/D,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,6BAA6B,uDAAuD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BATCH_FUNGIBLE_ASSET_TYPE_TAG = exports.FUNBIGLE_ASSET_TYPE_TAG = exports.DIGITAL_ASSET_TYPE_ARGUMENT = exports.FUNGIBLE_ASSET_TYPE_ARGUMENT = exports.APTOS_COIN = exports.DIGITAL_ASSET_TRANSFER_FUNCTION = exports.COIN_BATCH_TRANSFER_FUNCTION = exports.COIN_TRANSFER_FUNCTION = exports.FUNGIBLE_ASSET_BATCH_TRANSFER_FUNCTION = exports.FUNGIBLE_ASSET_TRANSFER_FUNCTION = exports.DIGITAL_ASSET_TRANSFER_AMOUNT = exports.AMOUNT_BYTES_LENGTH = exports.ADDRESS_BYTES_LENGTH = exports.SECONDS_PER_WEEK = exports.DEFAULT_GAS_UNIT_PRICE = exports.UNAVAILABLE_TEXT = exports.APT_SIGNATURE_LENGTH = exports.APT_BLOCK_ID_LENGTH = exports.APT_TRANSACTION_ID_LENGTH = exports.APT_ADDRESS_LENGTH = void 0;
|
|
4
|
+
exports.APT_ADDRESS_LENGTH = 64;
|
|
5
|
+
exports.APT_TRANSACTION_ID_LENGTH = 64;
|
|
6
|
+
exports.APT_BLOCK_ID_LENGTH = 64;
|
|
7
|
+
exports.APT_SIGNATURE_LENGTH = 128;
|
|
8
|
+
exports.UNAVAILABLE_TEXT = 'UNAVAILABLE';
|
|
9
|
+
exports.DEFAULT_GAS_UNIT_PRICE = 100;
|
|
10
|
+
exports.SECONDS_PER_WEEK = 7 * 24 * 60 * 60; // Days * Hours * Minutes * Seconds
|
|
11
|
+
exports.ADDRESS_BYTES_LENGTH = 32;
|
|
12
|
+
exports.AMOUNT_BYTES_LENGTH = 8;
|
|
13
|
+
exports.DIGITAL_ASSET_TRANSFER_AMOUNT = '1';
|
|
14
|
+
exports.FUNGIBLE_ASSET_TRANSFER_FUNCTION = '0x1::primary_fungible_store::transfer';
|
|
15
|
+
exports.FUNGIBLE_ASSET_BATCH_TRANSFER_FUNCTION = '0x1::aptos_account::batch_transfer_fungible_assets';
|
|
16
|
+
exports.COIN_TRANSFER_FUNCTION = '0x1::aptos_account::transfer_coins';
|
|
17
|
+
exports.COIN_BATCH_TRANSFER_FUNCTION = '0x1::aptos_account::batch_transfer_coins';
|
|
18
|
+
exports.DIGITAL_ASSET_TRANSFER_FUNCTION = '0x1::object::transfer';
|
|
19
|
+
exports.APTOS_COIN = '0x1::aptos_coin::AptosCoin';
|
|
20
|
+
exports.FUNGIBLE_ASSET_TYPE_ARGUMENT = '0x1::fungible_asset::Metadata';
|
|
21
|
+
exports.DIGITAL_ASSET_TYPE_ARGUMENT = '0x4::token::Token';
|
|
22
|
+
exports.FUNBIGLE_ASSET_TYPE_TAG = '0x1::object::Object';
|
|
23
|
+
exports.BATCH_FUNGIBLE_ASSET_TYPE_TAG = '0x1::object::Object<0x1::fungible_asset::Metadata>';
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDeEIsUUFBQSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDL0IsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFDekIsUUFBQSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDM0IsUUFBQSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDakMsUUFBQSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDN0IsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxtQ0FBbUM7QUFDeEUsUUFBQSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDMUIsUUFBQSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFFeEIsUUFBQSw2QkFBNkIsR0FBRyxHQUFHLENBQUM7QUFFcEMsUUFBQSxnQ0FBZ0MsR0FBRyx1Q0FBdUMsQ0FBQztBQUMzRSxRQUFBLHNDQUFzQyxHQUFHLG9EQUFvRCxDQUFDO0FBQzlGLFFBQUEsc0JBQXNCLEdBQUcsb0NBQW9DLENBQUM7QUFDOUQsUUFBQSw0QkFBNEIsR0FBRywwQ0FBMEMsQ0FBQztBQUMxRSxRQUFBLCtCQUErQixHQUFHLHVCQUF1QixDQUFDO0FBRTFELFFBQUEsVUFBVSxHQUFHLDRCQUE0QixDQUFDO0FBQzFDLFFBQUEsNEJBQTRCLEdBQUcsK0JBQStCLENBQUM7QUFDL0QsUUFBQSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQztBQUVsRCxRQUFBLHVCQUF1QixHQUFHLHFCQUFxQixDQUFDO0FBQ2hELFFBQUEsNkJBQTZCLEdBQUcsb0RBQW9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVBUX0FERFJFU1NfTEVOR1RIID0gNjQ7XG5leHBvcnQgY29uc3QgQVBUX1RSQU5TQUNUSU9OX0lEX0xFTkdUSCA9IDY0O1xuZXhwb3J0IGNvbnN0IEFQVF9CTE9DS19JRF9MRU5HVEggPSA2NDtcbmV4cG9ydCBjb25zdCBBUFRfU0lHTkFUVVJFX0xFTkdUSCA9IDEyODtcbmV4cG9ydCBjb25zdCBVTkFWQUlMQUJMRV9URVhUID0gJ1VOQVZBSUxBQkxFJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0dBU19VTklUX1BSSUNFID0gMTAwO1xuZXhwb3J0IGNvbnN0IFNFQ09ORFNfUEVSX1dFRUsgPSA3ICogMjQgKiA2MCAqIDYwOyAvLyBEYXlzICogSG91cnMgKiBNaW51dGVzICogU2Vjb25kc1xuZXhwb3J0IGNvbnN0IEFERFJFU1NfQllURVNfTEVOR1RIID0gMzI7XG5leHBvcnQgY29uc3QgQU1PVU5UX0JZVEVTX0xFTkdUSCA9IDg7XG5cbmV4cG9ydCBjb25zdCBESUdJVEFMX0FTU0VUX1RSQU5TRkVSX0FNT1VOVCA9ICcxJztcblxuZXhwb3J0IGNvbnN0IEZVTkdJQkxFX0FTU0VUX1RSQU5TRkVSX0ZVTkNUSU9OID0gJzB4MTo6cHJpbWFyeV9mdW5naWJsZV9zdG9yZTo6dHJhbnNmZXInO1xuZXhwb3J0IGNvbnN0IEZVTkdJQkxFX0FTU0VUX0JBVENIX1RSQU5TRkVSX0ZVTkNUSU9OID0gJzB4MTo6YXB0b3NfYWNjb3VudDo6YmF0Y2hfdHJhbnNmZXJfZnVuZ2libGVfYXNzZXRzJztcbmV4cG9ydCBjb25zdCBDT0lOX1RSQU5TRkVSX0ZVTkNUSU9OID0gJzB4MTo6YXB0b3NfYWNjb3VudDo6dHJhbnNmZXJfY29pbnMnO1xuZXhwb3J0IGNvbnN0IENPSU5fQkFUQ0hfVFJBTlNGRVJfRlVOQ1RJT04gPSAnMHgxOjphcHRvc19hY2NvdW50OjpiYXRjaF90cmFuc2Zlcl9jb2lucyc7XG5leHBvcnQgY29uc3QgRElHSVRBTF9BU1NFVF9UUkFOU0ZFUl9GVU5DVElPTiA9ICcweDE6Om9iamVjdDo6dHJhbnNmZXInO1xuXG5leHBvcnQgY29uc3QgQVBUT1NfQ09JTiA9ICcweDE6OmFwdG9zX2NvaW46OkFwdG9zQ29pbic7XG5leHBvcnQgY29uc3QgRlVOR0lCTEVfQVNTRVRfVFlQRV9BUkdVTUVOVCA9ICcweDE6OmZ1bmdpYmxlX2Fzc2V0OjpNZXRhZGF0YSc7XG5leHBvcnQgY29uc3QgRElHSVRBTF9BU1NFVF9UWVBFX0FSR1VNRU5UID0gJzB4NDo6dG9rZW46OlRva2VuJztcblxuZXhwb3J0IGNvbnN0IEZVTkJJR0xFX0FTU0VUX1RZUEVfVEFHID0gJzB4MTo6b2JqZWN0OjpPYmplY3QnO1xuZXhwb3J0IGNvbnN0IEJBVENIX0ZVTkdJQkxFX0FTU0VUX1RZUEVfVEFHID0gJzB4MTo6b2JqZWN0OjpPYmplY3Q8MHgxOjpmdW5naWJsZV9hc3NldDo6TWV0YWRhdGE+JztcbiJdfQ==
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { TransactionExplanation as BaseTransactionExplanation, TransactionRecipient, TransactionType as BitGoTransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { EntryFunctionABI, EntryFunctionArgumentTypes, SimpleEntryFunctionArgumentTypes } from '@aptos-labs/ts-sdk';
|
|
3
|
+
export interface AptTransactionExplanation extends BaseTransactionExplanation {
|
|
4
|
+
sender?: string;
|
|
5
|
+
type?: BitGoTransactionType;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The transaction data returned from the toJson() function of a transaction
|
|
9
|
+
*/
|
|
10
|
+
export interface TxData {
|
|
11
|
+
id: string;
|
|
12
|
+
sender: string;
|
|
13
|
+
/** @deprecated - use `recipients`. */
|
|
14
|
+
recipient: TransactionRecipient;
|
|
15
|
+
recipients: TransactionRecipient[];
|
|
16
|
+
sequenceNumber: number;
|
|
17
|
+
maxGasAmount: number;
|
|
18
|
+
gasUnitPrice: number;
|
|
19
|
+
gasUsed: number;
|
|
20
|
+
expirationTime: number;
|
|
21
|
+
feePayer: string;
|
|
22
|
+
assetId: string;
|
|
23
|
+
}
|
|
24
|
+
export interface RecipientsValidationResult {
|
|
25
|
+
recipients: {
|
|
26
|
+
deserializedAddresses: string[];
|
|
27
|
+
deserializedAmounts: Uint8Array[];
|
|
28
|
+
};
|
|
29
|
+
isValid: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Parameters for custom Aptos entry function transactions.
|
|
33
|
+
*
|
|
34
|
+
* Enables calling any Aptos entry function while maintaining compatibility with existing BitGo SDK patterns.
|
|
35
|
+
* Entry functions are the standard way to interact with Aptos smart contracts and system functions.
|
|
36
|
+
*
|
|
37
|
+
* @example Basic APT coin transfer (equivalent to standard transfer):
|
|
38
|
+
* ```typescript
|
|
39
|
+
* {
|
|
40
|
+
* moduleName: "0x1::aptos_account",
|
|
41
|
+
* functionName: "transfer_coins",
|
|
42
|
+
* typeArguments: ["0x1::aptos_coin::AptosCoin"],
|
|
43
|
+
* functionArguments: ["0x123...", 1000000] // [recipient, amount]
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example Custom smart contract call:
|
|
48
|
+
* ```typescript
|
|
49
|
+
* {
|
|
50
|
+
* moduleName: "0x867ed1f6bf916171b1de3ee92849b8978b7d1b9e0a8cc982a3d19d535dfd9c0c::aptos_names_v1",
|
|
51
|
+
* functionName: "register_domain",
|
|
52
|
+
* typeArguments: [],
|
|
53
|
+
* functionArguments: ["mydomain", 1] // [domain_name, years]
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* - The `abi` field is optional but provides type validation when present
|
|
59
|
+
* - ABI must match the exact function signature of the target entry function
|
|
60
|
+
*/
|
|
61
|
+
export interface CustomTransactionParams {
|
|
62
|
+
/**
|
|
63
|
+
* Fully qualified module name in format "address::module_name"
|
|
64
|
+
*
|
|
65
|
+
* @example "0x1::aptos_account" (system module)
|
|
66
|
+
* @example "0x867ed1f6bf916171b1de3ee92849b8978b7d1b9e0a8cc982a3d19d535dfd9c0c::aptos_names_v1" (custom contract)
|
|
67
|
+
*/
|
|
68
|
+
moduleName: string;
|
|
69
|
+
/**
|
|
70
|
+
* Entry function name to call within the specified module
|
|
71
|
+
*
|
|
72
|
+
* @example "transfer_coins", "register_domain", "create_account"
|
|
73
|
+
*/
|
|
74
|
+
functionName: string;
|
|
75
|
+
/**
|
|
76
|
+
* Type arguments for generic functions (optional)
|
|
77
|
+
*
|
|
78
|
+
* Used for functions that accept generic types like Coin<T>.
|
|
79
|
+
*
|
|
80
|
+
* @example ["0x1::aptos_coin::AptosCoin"] for coin transfers
|
|
81
|
+
* @example [] for functions without generic parameters
|
|
82
|
+
*/
|
|
83
|
+
typeArguments?: string[];
|
|
84
|
+
/**
|
|
85
|
+
* Function arguments in the order expected by the entry function (optional)
|
|
86
|
+
*
|
|
87
|
+
* Arguments are automatically serialized based on their JavaScript types.
|
|
88
|
+
* Use appropriate types: strings for addresses, numbers/BigInts for amounts.
|
|
89
|
+
*
|
|
90
|
+
* @example [recipient_address, amount] for transfers
|
|
91
|
+
* @example [domain_name, duration] for domain registration
|
|
92
|
+
*/
|
|
93
|
+
functionArguments?: Array<EntryFunctionArgumentTypes | SimpleEntryFunctionArgumentTypes>;
|
|
94
|
+
/**
|
|
95
|
+
* Entry function ABI for type validation and safety (optional)
|
|
96
|
+
*
|
|
97
|
+
* When provided:
|
|
98
|
+
* - Validates argument count matches expected parameters
|
|
99
|
+
* - Performs type checking during transaction building
|
|
100
|
+
* - Improves error messages for invalid calls
|
|
101
|
+
*
|
|
102
|
+
* @remarks
|
|
103
|
+
* - Providing incorrect ABI will cause transaction building to fail
|
|
104
|
+
* - Must match the exact function signature of the target entry function
|
|
105
|
+
*/
|
|
106
|
+
abi?: EntryFunctionABI;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=iface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,IAAI,0BAA0B,EACpD,oBAAoB,EACpB,eAAe,IAAI,oBAAoB,EACxC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEpH,MAAM,WAAW,yBAA0B,SAAQ,0BAA0B;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,SAAS,EAAE,oBAAoB,CAAC;IAChC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE;QACV,qBAAqB,EAAE,MAAM,EAAE,CAAC;QAChC,mBAAmB,EAAE,UAAU,EAAE,CAAC;KACnC,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,0BAA0B,GAAG,gCAAgC,CAAC,CAAC;IAEzF;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlIGFzIEJpdEdvVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBFbnRyeUZ1bmN0aW9uQUJJLCBFbnRyeUZ1bmN0aW9uQXJndW1lbnRUeXBlcywgU2ltcGxlRW50cnlGdW5jdGlvbkFyZ3VtZW50VHlwZXMgfSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwdFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIHNlbmRlcj86IHN0cmluZztcbiAgdHlwZT86IEJpdEdvVHJhbnNhY3Rpb25UeXBlO1xufVxuXG4vKipcbiAqIFRoZSB0cmFuc2FjdGlvbiBkYXRhIHJldHVybmVkIGZyb20gdGhlIHRvSnNvbigpIGZ1bmN0aW9uIG9mIGEgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeERhdGEge1xuICBpZDogc3RyaW5nO1xuICBzZW5kZXI6IHN0cmluZztcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIGByZWNpcGllbnRzYC4gKi9cbiAgcmVjaXBpZW50OiBUcmFuc2FjdGlvblJlY2lwaWVudDtcbiAgcmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgc2VxdWVuY2VOdW1iZXI6IG51bWJlcjtcbiAgbWF4R2FzQW1vdW50OiBudW1iZXI7XG4gIGdhc1VuaXRQcmljZTogbnVtYmVyO1xuICBnYXNVc2VkOiBudW1iZXI7XG4gIGV4cGlyYXRpb25UaW1lOiBudW1iZXI7XG4gIGZlZVBheWVyOiBzdHJpbmc7XG4gIGFzc2V0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNpcGllbnRzVmFsaWRhdGlvblJlc3VsdCB7XG4gIHJlY2lwaWVudHM6IHtcbiAgICBkZXNlcmlhbGl6ZWRBZGRyZXNzZXM6IHN0cmluZ1tdO1xuICAgIGRlc2VyaWFsaXplZEFtb3VudHM6IFVpbnQ4QXJyYXlbXTtcbiAgfTtcbiAgaXNWYWxpZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciBjdXN0b20gQXB0b3MgZW50cnkgZnVuY3Rpb24gdHJhbnNhY3Rpb25zLlxuICpcbiAqIEVuYWJsZXMgY2FsbGluZyBhbnkgQXB0b3MgZW50cnkgZnVuY3Rpb24gd2hpbGUgbWFpbnRhaW5pbmcgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIEJpdEdvIFNESyBwYXR0ZXJucy5cbiAqIEVudHJ5IGZ1bmN0aW9ucyBhcmUgdGhlIHN0YW5kYXJkIHdheSB0byBpbnRlcmFjdCB3aXRoIEFwdG9zIHNtYXJ0IGNvbnRyYWN0cyBhbmQgc3lzdGVtIGZ1bmN0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyBBUFQgY29pbiB0cmFuc2ZlciAoZXF1aXZhbGVudCB0byBzdGFuZGFyZCB0cmFuc2Zlcik6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB7XG4gKiAgIG1vZHVsZU5hbWU6IFwiMHgxOjphcHRvc19hY2NvdW50XCIsXG4gKiAgIGZ1bmN0aW9uTmFtZTogXCJ0cmFuc2Zlcl9jb2luc1wiLFxuICogICB0eXBlQXJndW1lbnRzOiBbXCIweDE6OmFwdG9zX2NvaW46OkFwdG9zQ29pblwiXSxcbiAqICAgZnVuY3Rpb25Bcmd1bWVudHM6IFtcIjB4MTIzLi4uXCIsIDEwMDAwMDBdIC8vIFtyZWNpcGllbnQsIGFtb3VudF1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEN1c3RvbSBzbWFydCBjb250cmFjdCBjYWxsOlxuICogYGBgdHlwZXNjcmlwdFxuICoge1xuICogICBtb2R1bGVOYW1lOiBcIjB4ODY3ZWQxZjZiZjkxNjE3MWIxZGUzZWU5Mjg0OWI4OTc4YjdkMWI5ZTBhOGNjOTgyYTNkMTlkNTM1ZGZkOWMwYzo6YXB0b3NfbmFtZXNfdjFcIixcbiAqICAgZnVuY3Rpb25OYW1lOiBcInJlZ2lzdGVyX2RvbWFpblwiLFxuICogICB0eXBlQXJndW1lbnRzOiBbXSxcbiAqICAgZnVuY3Rpb25Bcmd1bWVudHM6IFtcIm15ZG9tYWluXCIsIDFdIC8vIFtkb21haW5fbmFtZSwgeWVhcnNdXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcmVtYXJrc1xuICogLSBUaGUgYGFiaWAgZmllbGQgaXMgb3B0aW9uYWwgYnV0IHByb3ZpZGVzIHR5cGUgdmFsaWRhdGlvbiB3aGVuIHByZXNlbnRcbiAqIC0gQUJJIG11c3QgbWF0Y2ggdGhlIGV4YWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiB0aGUgdGFyZ2V0IGVudHJ5IGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMge1xuICAvKipcbiAgICogRnVsbHkgcXVhbGlmaWVkIG1vZHVsZSBuYW1lIGluIGZvcm1hdCBcImFkZHJlc3M6Om1vZHVsZV9uYW1lXCJcbiAgICpcbiAgICogQGV4YW1wbGUgXCIweDE6OmFwdG9zX2FjY291bnRcIiAoc3lzdGVtIG1vZHVsZSlcbiAgICogQGV4YW1wbGUgXCIweDg2N2VkMWY2YmY5MTYxNzFiMWRlM2VlOTI4NDliODk3OGI3ZDFiOWUwYThjYzk4MmEzZDE5ZDUzNWRmZDljMGM6OmFwdG9zX25hbWVzX3YxXCIgKGN1c3RvbSBjb250cmFjdClcbiAgICovXG4gIG1vZHVsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW50cnkgZnVuY3Rpb24gbmFtZSB0byBjYWxsIHdpdGhpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZVxuICAgKlxuICAgKiBAZXhhbXBsZSBcInRyYW5zZmVyX2NvaW5zXCIsIFwicmVnaXN0ZXJfZG9tYWluXCIsIFwiY3JlYXRlX2FjY291bnRcIlxuICAgKi9cbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgYXJndW1lbnRzIGZvciBnZW5lcmljIGZ1bmN0aW9ucyAob3B0aW9uYWwpXG4gICAqXG4gICAqIFVzZWQgZm9yIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdCBnZW5lcmljIHR5cGVzIGxpa2UgQ29pbjxUPi5cbiAgICpcbiAgICogQGV4YW1wbGUgW1wiMHgxOjphcHRvc19jb2luOjpBcHRvc0NvaW5cIl0gZm9yIGNvaW4gdHJhbnNmZXJzXG4gICAqIEBleGFtcGxlIFtdIGZvciBmdW5jdGlvbnMgd2l0aG91dCBnZW5lcmljIHBhcmFtZXRlcnNcbiAgICovXG4gIHR5cGVBcmd1bWVudHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gYXJndW1lbnRzIGluIHRoZSBvcmRlciBleHBlY3RlZCBieSB0aGUgZW50cnkgZnVuY3Rpb24gKG9wdGlvbmFsKVxuICAgKlxuICAgKiBBcmd1bWVudHMgYXJlIGF1dG9tYXRpY2FsbHkgc2VyaWFsaXplZCBiYXNlZCBvbiB0aGVpciBKYXZhU2NyaXB0IHR5cGVzLlxuICAgKiBVc2UgYXBwcm9wcmlhdGUgdHlwZXM6IHN0cmluZ3MgZm9yIGFkZHJlc3NlcywgbnVtYmVycy9CaWdJbnRzIGZvciBhbW91bnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZSBbcmVjaXBpZW50X2FkZHJlc3MsIGFtb3VudF0gZm9yIHRyYW5zZmVyc1xuICAgKiBAZXhhbXBsZSBbZG9tYWluX25hbWUsIGR1cmF0aW9uXSBmb3IgZG9tYWluIHJlZ2lzdHJhdGlvblxuICAgKi9cbiAgZnVuY3Rpb25Bcmd1bWVudHM/OiBBcnJheTxFbnRyeUZ1bmN0aW9uQXJndW1lbnRUeXBlcyB8IFNpbXBsZUVudHJ5RnVuY3Rpb25Bcmd1bWVudFR5cGVzPjtcblxuICAvKipcbiAgICogRW50cnkgZnVuY3Rpb24gQUJJIGZvciB0eXBlIHZhbGlkYXRpb24gYW5kIHNhZmV0eSAob3B0aW9uYWwpXG4gICAqXG4gICAqIFdoZW4gcHJvdmlkZWQ6XG4gICAqIC0gVmFsaWRhdGVzIGFyZ3VtZW50IGNvdW50IG1hdGNoZXMgZXhwZWN0ZWQgcGFyYW1ldGVyc1xuICAgKiAtIFBlcmZvcm1zIHR5cGUgY2hlY2tpbmcgZHVyaW5nIHRyYW5zYWN0aW9uIGJ1aWxkaW5nXG4gICAqIC0gSW1wcm92ZXMgZXJyb3IgbWVzc2FnZXMgZm9yIGludmFsaWQgY2FsbHNcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogLSBQcm92aWRpbmcgaW5jb3JyZWN0IEFCSSB3aWxsIGNhdXNlIHRyYW5zYWN0aW9uIGJ1aWxkaW5nIHRvIGZhaWxcbiAgICogLSBNdXN0IG1hdGNoIHRoZSBleGFjdCBmdW5jdGlvbiBzaWduYXR1cmUgb2YgdGhlIHRhcmdldCBlbnRyeSBmdW5jdGlvblxuICAgKi9cbiAgYWJpPzogRW50cnlGdW5jdGlvbkFCSTtcbn1cbiJdfQ==
|