@bitgo/sdk-coin-canton 1.9.0 → 1.10.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/src/canton.d.ts +3 -1
- package/dist/src/canton.d.ts.map +1 -1
- package/dist/src/canton.js +26 -3
- package/dist/src/lib/iface.d.ts +14 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +4 -2
- package/dist/src/lib/transaction/transaction.d.ts +5 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +38 -6
- package/dist/src/lib/transactionBuilderFactory.d.ts +2 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +8 -1
- package/dist/src/lib/transferBuilder.d.ts +76 -2
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +150 -2
- package/dist/src/lib/utils.d.ts +10 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +93 -48
- package/dist/test/integration/canton.integration.js +33 -3
- package/dist/test/resources.d.ts +21 -0
- package/dist/test/resources.d.ts.map +1 -1
- package/dist/test/resources.js +25 -4
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +2 -1
- package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transfer/transferBuilder.js +63 -0
- package/dist/test/unit/utils.js +29 -7
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1,12 +1,86 @@
|
|
|
1
1
|
import { PublicKey, TransactionType } from '@bitgo/sdk-core';
|
|
2
2
|
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
3
|
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
-
import {
|
|
4
|
+
import { Transaction } from './transaction/transaction';
|
|
5
|
+
import { CantonPrepareCommandResponse, CantonTransferRequest } from './iface';
|
|
5
6
|
export declare class TransferBuilder extends TransactionBuilder {
|
|
7
|
+
private _commandId;
|
|
8
|
+
private _senderId;
|
|
9
|
+
private _receiverId;
|
|
10
|
+
private _amount;
|
|
11
|
+
private _sendOneStep;
|
|
12
|
+
private _expiryEpoch;
|
|
13
|
+
private _memoId;
|
|
6
14
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
7
|
-
|
|
15
|
+
initBuilder(tx: Transaction): void;
|
|
16
|
+
get transactionType(): TransactionType;
|
|
17
|
+
setTransactionType(): void;
|
|
8
18
|
setTransaction(transaction: CantonPrepareCommandResponse): void;
|
|
9
19
|
/** @inheritDoc */
|
|
10
20
|
addSignature(publicKey: PublicKey, signature: Buffer): void;
|
|
21
|
+
/**
|
|
22
|
+
* Sets the unique id for the transfer
|
|
23
|
+
* Also sets the _id of the transaction
|
|
24
|
+
*
|
|
25
|
+
* @param id - A uuid
|
|
26
|
+
* @returns The current builder instance for chaining.
|
|
27
|
+
* @throws Error if id is empty.
|
|
28
|
+
*/
|
|
29
|
+
commandId(id: string): this;
|
|
30
|
+
/**
|
|
31
|
+
* Sets the sender party id for the transfer
|
|
32
|
+
* @param id - sender address (party id)
|
|
33
|
+
* @returns The current builder instance for chaining.
|
|
34
|
+
* @throws Error if id is empty.
|
|
35
|
+
*/
|
|
36
|
+
senderId(id: string): this;
|
|
37
|
+
/**
|
|
38
|
+
* Sets the receiver party id for the transfer
|
|
39
|
+
* @param id - receiver address (party id)
|
|
40
|
+
* @returns The current builder instance for chaining.
|
|
41
|
+
* @throws Error if id is empty.
|
|
42
|
+
*/
|
|
43
|
+
receiverId(id: string): this;
|
|
44
|
+
/**
|
|
45
|
+
* Sets the transfer amount
|
|
46
|
+
* @param amount - transfer amount
|
|
47
|
+
* @returns The current builder instance for chaining.
|
|
48
|
+
* @throws Error if amount not present or negative
|
|
49
|
+
*/
|
|
50
|
+
amount(amount: number): this;
|
|
51
|
+
/**
|
|
52
|
+
* Sets the 1-step enablement flag to send via 1-step, works only if recipient
|
|
53
|
+
* enabled the 1-step, defaults to `false`
|
|
54
|
+
* @param flag boolean value
|
|
55
|
+
* @returns The current builder for chaining
|
|
56
|
+
*/
|
|
57
|
+
sendOneStep(flag: boolean): this;
|
|
58
|
+
/**
|
|
59
|
+
* Sets the transfer expiry
|
|
60
|
+
* @param epoch - the expiry for 2-step transfer, defaults to 90 days and
|
|
61
|
+
* not applicable if sending via 1-step
|
|
62
|
+
* @returns The current builder for chaining
|
|
63
|
+
* @throws Error if the expiry value is invalid
|
|
64
|
+
*/
|
|
65
|
+
expiryEpoch(epoch: number): this;
|
|
66
|
+
/**
|
|
67
|
+
* Sets the optional memoId if present
|
|
68
|
+
* @param id - memoId of the recipient
|
|
69
|
+
* @returns The current builder for chaining
|
|
70
|
+
* @throws Error if the memoId value is invalid
|
|
71
|
+
*/
|
|
72
|
+
memoId(id: string): this;
|
|
73
|
+
/**
|
|
74
|
+
* Get the canton transfer request object
|
|
75
|
+
* @returns CantonTransferRequest
|
|
76
|
+
* @throws Error if any required params are missing
|
|
77
|
+
*/
|
|
78
|
+
toRequestObject(): CantonTransferRequest;
|
|
79
|
+
/**
|
|
80
|
+
* Method to validate the required fields
|
|
81
|
+
* @throws Error if required fields are not set
|
|
82
|
+
* @private
|
|
83
|
+
*/
|
|
84
|
+
private validate;
|
|
11
85
|
}
|
|
12
86
|
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG9E,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;gBACZ,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3D;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAU3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKhC;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQhC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQxB;;;;OAIG;IACH,eAAe,IAAI,qBAAqB;IAgBxC;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CAOjB"}
|
|
@@ -1,22 +1,170 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.TransferBuilder = void 0;
|
|
4
7
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
8
|
const transactionBuilder_1 = require("./transactionBuilder");
|
|
9
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
6
10
|
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
7
11
|
constructor(_coinConfig) {
|
|
8
12
|
super(_coinConfig);
|
|
13
|
+
this._sendOneStep = false;
|
|
14
|
+
}
|
|
15
|
+
initBuilder(tx) {
|
|
16
|
+
super.initBuilder(tx);
|
|
17
|
+
this.setTransactionType();
|
|
9
18
|
}
|
|
10
19
|
get transactionType() {
|
|
11
20
|
return sdk_core_1.TransactionType.Send;
|
|
12
21
|
}
|
|
22
|
+
setTransactionType() {
|
|
23
|
+
this.transaction.transactionType = sdk_core_1.TransactionType.Send;
|
|
24
|
+
}
|
|
13
25
|
setTransaction(transaction) {
|
|
14
26
|
this.transaction.prepareCommand = transaction;
|
|
15
27
|
}
|
|
16
28
|
/** @inheritDoc */
|
|
17
29
|
addSignature(publicKey, signature) {
|
|
18
|
-
|
|
30
|
+
if (!this.transaction) {
|
|
31
|
+
throw new sdk_core_1.InvalidTransactionError('transaction is empty!');
|
|
32
|
+
}
|
|
33
|
+
this._signatures.push({ publicKey, signature });
|
|
34
|
+
const pubKeyBase64 = utils_1.default.getBase64FromHex(publicKey.pub);
|
|
35
|
+
this.transaction.signerFingerprint = utils_1.default.getAddressFromPublicKey(pubKeyBase64);
|
|
36
|
+
this.transaction.signatures = signature.toString('base64');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sets the unique id for the transfer
|
|
40
|
+
* Also sets the _id of the transaction
|
|
41
|
+
*
|
|
42
|
+
* @param id - A uuid
|
|
43
|
+
* @returns The current builder instance for chaining.
|
|
44
|
+
* @throws Error if id is empty.
|
|
45
|
+
*/
|
|
46
|
+
commandId(id) {
|
|
47
|
+
if (!id || !id.trim()) {
|
|
48
|
+
throw new Error('commandId must be a non-empty string');
|
|
49
|
+
}
|
|
50
|
+
this._commandId = id.trim();
|
|
51
|
+
// also set the transaction _id
|
|
52
|
+
this.transaction.id = id.trim();
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Sets the sender party id for the transfer
|
|
57
|
+
* @param id - sender address (party id)
|
|
58
|
+
* @returns The current builder instance for chaining.
|
|
59
|
+
* @throws Error if id is empty.
|
|
60
|
+
*/
|
|
61
|
+
senderId(id) {
|
|
62
|
+
if (!id || !id.trim()) {
|
|
63
|
+
throw new Error('senderId must be a non-empty string');
|
|
64
|
+
}
|
|
65
|
+
this._senderId = id.trim();
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Sets the receiver party id for the transfer
|
|
70
|
+
* @param id - receiver address (party id)
|
|
71
|
+
* @returns The current builder instance for chaining.
|
|
72
|
+
* @throws Error if id is empty.
|
|
73
|
+
*/
|
|
74
|
+
receiverId(id) {
|
|
75
|
+
if (!id || !id.trim()) {
|
|
76
|
+
throw new Error('receiverId must be a non-empty string');
|
|
77
|
+
}
|
|
78
|
+
this._receiverId = id.trim();
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Sets the transfer amount
|
|
83
|
+
* @param amount - transfer amount
|
|
84
|
+
* @returns The current builder instance for chaining.
|
|
85
|
+
* @throws Error if amount not present or negative
|
|
86
|
+
*/
|
|
87
|
+
amount(amount) {
|
|
88
|
+
if (!amount || amount < 0) {
|
|
89
|
+
throw new Error('amount must be a positive number');
|
|
90
|
+
}
|
|
91
|
+
this._amount = amount;
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Sets the 1-step enablement flag to send via 1-step, works only if recipient
|
|
96
|
+
* enabled the 1-step, defaults to `false`
|
|
97
|
+
* @param flag boolean value
|
|
98
|
+
* @returns The current builder for chaining
|
|
99
|
+
*/
|
|
100
|
+
sendOneStep(flag) {
|
|
101
|
+
this._sendOneStep = flag;
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Sets the transfer expiry
|
|
106
|
+
* @param epoch - the expiry for 2-step transfer, defaults to 90 days and
|
|
107
|
+
* not applicable if sending via 1-step
|
|
108
|
+
* @returns The current builder for chaining
|
|
109
|
+
* @throws Error if the expiry value is invalid
|
|
110
|
+
*/
|
|
111
|
+
expiryEpoch(epoch) {
|
|
112
|
+
if (!epoch || epoch < 0) {
|
|
113
|
+
throw new Error('epoch must be a positive number');
|
|
114
|
+
}
|
|
115
|
+
this._expiryEpoch = epoch;
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Sets the optional memoId if present
|
|
120
|
+
* @param id - memoId of the recipient
|
|
121
|
+
* @returns The current builder for chaining
|
|
122
|
+
* @throws Error if the memoId value is invalid
|
|
123
|
+
*/
|
|
124
|
+
memoId(id) {
|
|
125
|
+
if (!id || !id.trim()) {
|
|
126
|
+
throw new Error('memoId must be a non-empty string');
|
|
127
|
+
}
|
|
128
|
+
this._memoId = id.trim();
|
|
129
|
+
return this;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the canton transfer request object
|
|
133
|
+
* @returns CantonTransferRequest
|
|
134
|
+
* @throws Error if any required params are missing
|
|
135
|
+
*/
|
|
136
|
+
toRequestObject() {
|
|
137
|
+
this.validate();
|
|
138
|
+
const data = {
|
|
139
|
+
commandId: this._commandId,
|
|
140
|
+
senderPartyId: this._senderId,
|
|
141
|
+
receiverPartyId: this._receiverId,
|
|
142
|
+
amount: this._amount,
|
|
143
|
+
expiryEpoch: this._expiryEpoch,
|
|
144
|
+
sendViaOneStep: this._sendOneStep,
|
|
145
|
+
};
|
|
146
|
+
if (this._memoId) {
|
|
147
|
+
data.memoId = this._memoId;
|
|
148
|
+
}
|
|
149
|
+
return data;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Method to validate the required fields
|
|
153
|
+
* @throws Error if required fields are not set
|
|
154
|
+
* @private
|
|
155
|
+
*/
|
|
156
|
+
validate() {
|
|
157
|
+
if (!this._commandId)
|
|
158
|
+
throw new Error('commandId is missing');
|
|
159
|
+
if (!this._senderId)
|
|
160
|
+
throw new Error('senderId is missing');
|
|
161
|
+
if (!this._receiverId)
|
|
162
|
+
throw new Error('receiverId is missing');
|
|
163
|
+
if (!this._amount)
|
|
164
|
+
throw new Error('amount is missing');
|
|
165
|
+
if (!this._expiryEpoch)
|
|
166
|
+
throw new Error('expiryEpoch is missing');
|
|
19
167
|
}
|
|
20
168
|
}
|
|
21
169
|
exports.TransferBuilder = TransferBuilder;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQTZEO0FBRTdELDZEQUEwRDtBQUcxRCxNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBQ3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXlDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztJQUNoRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQWlCO1FBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFqQkQsMENBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVibGljS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnByZXBhcmVDb21tYW5kID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cbiJdfQ==
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXNGO0FBRXRGLDZEQUEwRDtBQUcxRCxvREFBNEI7QUFFNUIsTUFBYSxlQUFnQixTQUFRLHVDQUFrQjtJQVFyRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUpiLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSzdCLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsSUFBSSxDQUFDO0lBQzFELENBQUM7SUFFRCxjQUFjLENBQUMsV0FBeUM7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO0lBQ2hELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWSxDQUFDLFNBQW9CLEVBQUUsU0FBaUI7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksa0NBQXVCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUks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LEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDakMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3BCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUM5QixjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDbEMsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFFBQVE7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDRjtBQTdLRCwwQ0E2S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgUHVibGljS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlLCBDYW50b25UcmFuc2ZlclJlcXVlc3QgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2NvbW1hbmRJZDogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXJJZDogc3RyaW5nO1xuICBwcml2YXRlIF9yZWNlaXZlcklkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Ftb3VudDogbnVtYmVyO1xuICBwcml2YXRlIF9zZW5kT25lU3RlcCA9IGZhbHNlO1xuICBwcml2YXRlIF9leHBpcnlFcG9jaDogbnVtYmVyO1xuICBwcml2YXRlIF9tZW1vSWQ6IHN0cmluZztcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKCk7XG4gIH1cblxuICBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucHJlcGFyZUNvbW1hbmQgPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uIGlzIGVtcHR5IScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9KTtcbiAgICBjb25zdCBwdWJLZXlCYXNlNjQgPSB1dGlscy5nZXRCYXNlNjRGcm9tSGV4KHB1YmxpY0tleS5wdWIpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmVyRmluZ2VycHJpbnQgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXlCYXNlNjQpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlcyA9IHNpZ25hdHVyZS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdW5pcXVlIGlkIGZvciB0aGUgdHJhbnNmZXJcbiAgICogQWxzbyBzZXRzIHRoZSBfaWQgb2YgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIEEgdXVpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIGNvbW1hbmRJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbW1hbmRJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb21tYW5kSWQgPSBpZC50cmltKCk7XG4gICAgLy8gYWxzbyBzZXQgdGhlIHRyYW5zYWN0aW9uIF9pZFxuICAgIHRoaXMudHJhbnNhY3Rpb24uaWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VuZGVyIHBhcnR5IGlkIGZvciB0aGUgdHJhbnNmZXJcbiAgICogQHBhcmFtIGlkIC0gc2VuZGVyIGFkZHJlc3MgKHBhcnR5IGlkKVxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHNlbmRlcklkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2VuZGVySWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fc2VuZGVySWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcmVjZWl2ZXIgcGFydHkgaWQgZm9yIHRoZSB0cmFuc2ZlclxuICAgKiBAcGFyYW0gaWQgLSByZWNlaXZlciBhZGRyZXNzIChwYXJ0eSBpZClcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICByZWNlaXZlcklkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVjZWl2ZXJJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9yZWNlaXZlcklkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyYW5zZmVyIGFtb3VudFxuICAgKiBAcGFyYW0gYW1vdW50IC0gdHJhbnNmZXIgYW1vdW50XG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGFtb3VudCBub3QgcHJlc2VudCBvciBuZWdhdGl2ZVxuICAgKi9cbiAgYW1vdW50KGFtb3VudDogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKCFhbW91bnQgfHwgYW1vdW50IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgMS1zdGVwIGVuYWJsZW1lbnQgZmxhZyB0byBzZW5kIHZpYSAxLXN0ZXAsIHdvcmtzIG9ubHkgaWYgcmVjaXBpZW50XG4gICAqIGVuYWJsZWQgdGhlIDEtc3RlcCwgZGVmYXVsdHMgdG8gYGZhbHNlYFxuICAgKiBAcGFyYW0gZmxhZyBib29sZWFuIHZhbHVlXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqL1xuICBzZW5kT25lU3RlcChmbGFnOiBib29sZWFuKTogdGhpcyB7XG4gICAgdGhpcy5fc2VuZE9uZVN0ZXAgPSBmbGFnO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyYW5zZmVyIGV4cGlyeVxuICAgKiBAcGFyYW0gZXBvY2ggLSB0aGUgZXhwaXJ5IGZvciAyLXN0ZXAgdHJhbnNmZXIsIGRlZmF1bHRzIHRvIDkwIGRheXMgYW5kXG4gICAqIG5vdCBhcHBsaWNhYmxlIGlmIHNlbmRpbmcgdmlhIDEtc3RlcFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGZvciBjaGFpbmluZ1xuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBleHBpcnkgdmFsdWUgaXMgaW52YWxpZFxuICAgKi9cbiAgZXhwaXJ5RXBvY2goZXBvY2g6IG51bWJlcik6IHRoaXMge1xuICAgIGlmICghZXBvY2ggfHwgZXBvY2ggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Vwb2NoIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG4gICAgdGhpcy5fZXhwaXJ5RXBvY2ggPSBlcG9jaDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvcHRpb25hbCBtZW1vSWQgaWYgcHJlc2VudFxuICAgKiBAcGFyYW0gaWQgLSBtZW1vSWQgb2YgdGhlIHJlY2lwaWVudFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGZvciBjaGFpbmluZ1xuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBtZW1vSWQgdmFsdWUgaXMgaW52YWxpZFxuICAgKi9cbiAgbWVtb0lkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWVtb0lkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX21lbW9JZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNhbnRvbiB0cmFuc2ZlciByZXF1ZXN0IG9iamVjdFxuICAgKiBAcmV0dXJucyBDYW50b25UcmFuc2ZlclJlcXVlc3RcbiAgICogQHRocm93cyBFcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1zIGFyZSBtaXNzaW5nXG4gICAqL1xuICB0b1JlcXVlc3RPYmplY3QoKTogQ2FudG9uVHJhbnNmZXJSZXF1ZXN0IHtcbiAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgY29uc3QgZGF0YTogQ2FudG9uVHJhbnNmZXJSZXF1ZXN0ID0ge1xuICAgICAgY29tbWFuZElkOiB0aGlzLl9jb21tYW5kSWQsXG4gICAgICBzZW5kZXJQYXJ0eUlkOiB0aGlzLl9zZW5kZXJJZCxcbiAgICAgIHJlY2VpdmVyUGFydHlJZDogdGhpcy5fcmVjZWl2ZXJJZCxcbiAgICAgIGFtb3VudDogdGhpcy5fYW1vdW50LFxuICAgICAgZXhwaXJ5RXBvY2g6IHRoaXMuX2V4cGlyeUVwb2NoLFxuICAgICAgc2VuZFZpYU9uZVN0ZXA6IHRoaXMuX3NlbmRPbmVTdGVwLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX21lbW9JZCkge1xuICAgICAgZGF0YS5tZW1vSWQgPSB0aGlzLl9tZW1vSWQ7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB2YWxpZGF0ZSB0aGUgcmVxdWlyZWQgZmllbGRzXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBub3Qgc2V0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29tbWFuZElkKSB0aHJvdyBuZXcgRXJyb3IoJ2NvbW1hbmRJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXJJZCkgdGhyb3cgbmV3IEVycm9yKCdzZW5kZXJJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9yZWNlaXZlcklkKSB0aHJvdyBuZXcgRXJyb3IoJ3JlY2VpdmVySWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fYW1vdW50KSB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9leHBpcnlFcG9jaCkgdGhyb3cgbmV3IEVycm9yKCdleHBpcnlFcG9jaCBpcyBtaXNzaW5nJyk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseUtils } from '@bitgo/sdk-core';
|
|
1
|
+
import { BaseUtils, TransactionType } from '@bitgo/sdk-core';
|
|
2
2
|
import { PreparedTxnParsedInfo } from './iface';
|
|
3
3
|
export declare class Utils implements BaseUtils {
|
|
4
4
|
/** @inheritdoc */
|
|
@@ -34,9 +34,10 @@ export declare class Utils implements BaseUtils {
|
|
|
34
34
|
/**
|
|
35
35
|
* Method to parse raw canton transaction & get required data
|
|
36
36
|
* @param {String} rawData base64 encoded string
|
|
37
|
+
* @param {TransactionType} txType the transaction type
|
|
37
38
|
* @returns {PreparedTxnParsedInfo}
|
|
38
39
|
*/
|
|
39
|
-
parseRawCantonTransactionData(rawData: string): PreparedTxnParsedInfo;
|
|
40
|
+
parseRawCantonTransactionData(rawData: string, txType: TransactionType): PreparedTxnParsedInfo;
|
|
40
41
|
/**
|
|
41
42
|
* Computes the topology hash from the API response of the 'create party' endpoint.
|
|
42
43
|
*
|
|
@@ -113,6 +114,13 @@ export declare class Utils implements BaseUtils {
|
|
|
113
114
|
* @returns {Buffer} A 4-byte buffer representing the integer in big-endian format
|
|
114
115
|
*/
|
|
115
116
|
private encodeInt32;
|
|
117
|
+
/**
|
|
118
|
+
* Convert to canton raw units
|
|
119
|
+
* @param {BigNumber} value
|
|
120
|
+
* @returns {String} the converted raw canton units
|
|
121
|
+
* @private
|
|
122
|
+
*/
|
|
123
|
+
private convertAmountToLowestUnit;
|
|
116
124
|
}
|
|
117
125
|
declare const utils: Utils;
|
|
118
126
|
export default utils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAA2B,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMtF,OAAO,EAA+C,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG7F,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKxC;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;OAIG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAMlD;;;;;OAKG;IACH,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,qBAAqB;IA2G9F;;;;;OAKG;IACH,kCAAkC,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM;IAKpE,wCAAwC,CAAC,yBAAyB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlG;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kCAAkC;IAO1C;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAOnB;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAKjC;;;;;;;;OAQG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;CAGlC;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
|