cardano-hw-interop-lib 0.1.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/LICENSE +16 -0
- package/README.md +55 -0
- package/dist/src/errors/index.d.ts +3 -0
- package/dist/src/errors/index.d.ts.map +1 -0
- package/dist/src/errors/index.js +15 -0
- package/dist/src/errors/parseError.d.ts +58 -0
- package/dist/src/errors/parseError.d.ts.map +1 -0
- package/dist/src/errors/parseError.js +66 -0
- package/dist/src/errors/validationError.d.ts +24 -0
- package/dist/src/errors/validationError.d.ts.map +1 -0
- package/dist/src/errors/validationError.js +47 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +65 -0
- package/dist/src/parsers.d.ts +39 -0
- package/dist/src/parsers.d.ts.map +1 -0
- package/dist/src/parsers.js +98 -0
- package/dist/src/txParsers.d.ts +15 -0
- package/dist/src/txParsers.d.ts.map +1 -0
- package/dist/src/txParsers.js +161 -0
- package/dist/src/txSerializers.d.ts +5 -0
- package/dist/src/txSerializers.d.ts.map +1 -0
- package/dist/src/txSerializers.js +97 -0
- package/dist/src/txTransformers.d.ts +5 -0
- package/dist/src/txTransformers.d.ts.map +1 -0
- package/dist/src/txTransformers.js +50 -0
- package/dist/src/txValidators.d.ts +5 -0
- package/dist/src/txValidators.d.ts.map +1 -0
- package/dist/src/txValidators.js +129 -0
- package/dist/src/types.d.ts +192 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +45 -0
- package/dist/src/utils.d.ts +8 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +36 -0
- package/dist/test/integration/__fixtures__/encode.d.ts +9 -0
- package/dist/test/integration/__fixtures__/encode.d.ts.map +1 -0
- package/dist/test/integration/__fixtures__/encode.js +203 -0
- package/dist/test/integration/__fixtures__/parse.d.ts +21 -0
- package/dist/test/integration/__fixtures__/parse.d.ts.map +1 -0
- package/dist/test/integration/__fixtures__/parse.js +238 -0
- package/dist/test/integration/encode.test.d.ts +2 -0
- package/dist/test/integration/encode.test.d.ts.map +1 -0
- package/dist/test/integration/encode.test.js +16 -0
- package/dist/test/integration/parse.test.d.ts +2 -0
- package/dist/test/integration/parse.test.d.ts.map +1 -0
- package/dist/test/integration/parse.test.js +53 -0
- package/dist/test/test_utils.d.ts +24 -0
- package/dist/test/test_utils.d.ts.map +1 -0
- package/dist/test/test_utils.js +40 -0
- package/dist/test/unit/certificates.test.d.ts +1 -0
- package/dist/test/unit/certificates.test.d.ts.map +1 -0
- package/dist/test/unit/certificates.test.js +2 -0
- package/dist/test/unit/inputs.test.d.ts +2 -0
- package/dist/test/unit/inputs.test.d.ts.map +1 -0
- package/dist/test/unit/inputs.test.js +57 -0
- package/dist/test/unit/mint.test.d.ts +2 -0
- package/dist/test/unit/mint.test.d.ts.map +1 -0
- package/dist/test/unit/mint.test.js +74 -0
- package/dist/test/unit/outputs.test.d.ts +2 -0
- package/dist/test/unit/outputs.test.d.ts.map +1 -0
- package/dist/test/unit/outputs.test.js +77 -0
- package/dist/test/unit/withdrawals.test.d.ts +2 -0
- package/dist/test/unit/withdrawals.test.d.ts.map +1 -0
- package/dist/test/unit/withdrawals.test.js +48 -0
- package/package.json +50 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRawTx = exports.parseTx = exports.parseTxBody = exports.parseMint = exports.parseValidityIntervalStart = exports.parseMetadataHash = exports.parseCertificates = exports.parseTtl = exports.parseFee = exports.parseOutputs = exports.parseInputs = exports.parseWithdrawals = void 0;
|
|
4
|
+
const cbor_1 = require("cbor");
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
const parsers_1 = require("./parsers");
|
|
7
|
+
const parsers_2 = require("./parsers");
|
|
8
|
+
const parsers_3 = require("./parsers");
|
|
9
|
+
const types_1 = require("./types");
|
|
10
|
+
const types_2 = require("./types");
|
|
11
|
+
const types_3 = require("./types");
|
|
12
|
+
const dontParse = (data) => data;
|
|
13
|
+
const parseRewardAccount = (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_1.REWARD_ACCOUNT_LENGTH, errors_1.ParseErrorReason.INVALID_REWARD_ACCOUNT);
|
|
14
|
+
const parseCoin = (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_COIN);
|
|
15
|
+
const parseEpoch = (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_COIN);
|
|
16
|
+
const parsePolicyId = (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.SCRIPT_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_POLICY_ID);
|
|
17
|
+
const parseAssetName = (0, parsers_3.createParser)(parsers_3.parseBufferOfMaxLength, types_3.ASSET_NAME_MAX_LENGTH, errors_1.ParseErrorReason.INVALID_ASSET_NAME);
|
|
18
|
+
const parseMultiasset = (unparsedMultiasset, parseAssetValue, errMsg) => {
|
|
19
|
+
const multiassetMap = (0, parsers_3.parseMap)(unparsedMultiasset, parsePolicyId, (0, parsers_3.createParser)(parsers_3.parseMap, parseAssetName, parseAssetValue, errMsg), errMsg);
|
|
20
|
+
return Array.from(multiassetMap).map(([policyId, tokens]) => ({
|
|
21
|
+
policyId,
|
|
22
|
+
tokens: Array.from(tokens).map(([assetName, amount]) => ({ assetName, amount })),
|
|
23
|
+
}));
|
|
24
|
+
};
|
|
25
|
+
const parseTxInput = (unparsedTxInput) => {
|
|
26
|
+
const [transactionId, index] = (0, parsers_3.parseTuple)(unparsedTxInput, errors_1.ParseErrorReason.INVALID_TX_INPUTS, (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.TX_ID_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_TRANSACTION_ID), (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_TX_INPUT_INDEX));
|
|
27
|
+
return { transactionId, index };
|
|
28
|
+
};
|
|
29
|
+
const parseAmountWithMultiasset = (unparsedAmount) => {
|
|
30
|
+
const [coin, multiasset] = (0, parsers_3.parseTuple)(unparsedAmount, errors_1.ParseErrorReason.INVALID_OUTPUT_AMOUNT, (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_OUTPUT_AMOUNT), (0, parsers_3.createParser)(parseMultiasset, (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_OUTPUT_MULTIASSET), errors_1.ParseErrorReason.INVALID_OUTPUT_MULTIASSET));
|
|
31
|
+
return { type: types_2.AmountType.WITH_MULTIASSET, coin, multiasset };
|
|
32
|
+
};
|
|
33
|
+
const parseAmountWithoutMultiasset = (unparsedAmount) => ({
|
|
34
|
+
type: types_2.AmountType.WITHOUT_MULTIASSET,
|
|
35
|
+
coin: (0, parsers_3.parseUint)(unparsedAmount, errors_1.ParseErrorReason.INVALID_OUTPUT_AMOUNT),
|
|
36
|
+
});
|
|
37
|
+
const parseAmount = (unparsedAmount) => (0, parsers_1.isUint)(unparsedAmount)
|
|
38
|
+
? parseAmountWithoutMultiasset(unparsedAmount)
|
|
39
|
+
: parseAmountWithMultiasset(unparsedAmount);
|
|
40
|
+
const parseTxOutput = (unparsedTxOutput) => {
|
|
41
|
+
const [address, amount] = (0, parsers_3.parseTuple)(unparsedTxOutput, errors_1.ParseErrorReason.INVALID_TX_OUTPUT, (0, parsers_3.createParser)(parsers_3.parseBuffer, errors_1.ParseErrorReason.INVALID_OUTPUT_ADDRESS), parseAmount);
|
|
42
|
+
return { address, amount };
|
|
43
|
+
};
|
|
44
|
+
const parseWithdrawals = (unparsedWithdrawals) => {
|
|
45
|
+
const withdrawalsMap = (0, parsers_3.parseMap)(unparsedWithdrawals, parseRewardAccount, (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_WITHDRAWAL_AMOUNT), errors_1.ParseErrorReason.INVALID_TX_WITHDRAWALS);
|
|
46
|
+
return Array.from(withdrawalsMap).map(([rewardAccount, amount]) => ({ rewardAccount, amount }));
|
|
47
|
+
};
|
|
48
|
+
exports.parseWithdrawals = parseWithdrawals;
|
|
49
|
+
const parseStakeCredentialType = (unparsedStakeCredentialType) => {
|
|
50
|
+
(0, parsers_3.validate)((0, parsers_3.isNumber)(unparsedStakeCredentialType), errors_1.ParseErrorReason.INVALID_STAKE_CREDENTIAL_TYPE);
|
|
51
|
+
(0, parsers_3.validate)(unparsedStakeCredentialType in types_3.StakeCredentialType, errors_1.ParseErrorReason.INVALID_STAKE_CREDENTIAL_TYPE);
|
|
52
|
+
return unparsedStakeCredentialType;
|
|
53
|
+
};
|
|
54
|
+
const parseStakeCredentialKey = (data) => ({
|
|
55
|
+
hash: (0, parsers_3.parseBufferOfLength)(data[0], types_3.KEY_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_STAKE_CREDENTIAL_KEY_HASH),
|
|
56
|
+
});
|
|
57
|
+
const parseStakeCredentialScript = (data) => ({
|
|
58
|
+
hash: (0, parsers_3.parseBufferOfLength)(data[0], types_3.SCRIPT_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_STAKE_CREDENTIAL_SCRIPT_HASH),
|
|
59
|
+
});
|
|
60
|
+
const parseStakeCredential = (0, parsers_3.createParser)(parsers_3.parseBasedOnType, errors_1.ParseErrorReason.INVALID_STAKE_CREDENTIAL, parseStakeCredentialType, parseStakeCredentialKey, parseStakeCredentialScript);
|
|
61
|
+
const parsePoolKeyHash = (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.POOL_KEY_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_POOL_KEY_HASH);
|
|
62
|
+
const parseUnitInterval = (0, parsers_3.createParser)(parsers_3.parseTuple, errors_1.ParseErrorReason.INVALID_UNIT_INTERVAL, (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_UNIT_INTERVAL_START), (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_UNIT_INTERVAL_END));
|
|
63
|
+
const parsePort = (data) => {
|
|
64
|
+
(0, parsers_3.validate)((0, parsers_2.isUintOfMaxSize)(data, types_1.PORT_MAX_SIZE), errors_1.ParseErrorReason.INVALID_RELAY_PORT);
|
|
65
|
+
return data;
|
|
66
|
+
};
|
|
67
|
+
const parseDnsName = (0, parsers_3.createParser)(parsers_3.parseStringOfMaxLength, types_3.DNS_NAME_MAX_LENGTH, errors_1.ParseErrorReason.INVALID_RELAY_DNS_NAME);
|
|
68
|
+
const parseRelayType = (unparsedRelayType) => {
|
|
69
|
+
(0, parsers_3.validate)((0, parsers_3.isNumber)(unparsedRelayType), errors_1.ParseErrorReason.INVALID_RELAY_TYPE);
|
|
70
|
+
(0, parsers_3.validate)(unparsedRelayType in types_3.RelayType, errors_1.ParseErrorReason.INVALID_RELAY_TYPE);
|
|
71
|
+
return unparsedRelayType;
|
|
72
|
+
};
|
|
73
|
+
const parseRelaySingleHostAddress = (data) => ({
|
|
74
|
+
port: (0, parsers_3.parseNullable)(data[0], parsePort),
|
|
75
|
+
ipv4: (0, parsers_3.parseNullable)(data[1], (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.IPV4_LENGTH, errors_1.ParseErrorReason.INVALID_RELAY_IPV4)),
|
|
76
|
+
ipv6: (0, parsers_3.parseNullable)(data[2], (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.IPV6_LENGTH, errors_1.ParseErrorReason.INVALID_RELAY_IPV6)),
|
|
77
|
+
});
|
|
78
|
+
const parseRelaySingleHostName = (data) => ({
|
|
79
|
+
port: (0, parsers_3.parseNullable)(data[0], parsePort),
|
|
80
|
+
dnsName: parseDnsName(data[1]),
|
|
81
|
+
});
|
|
82
|
+
const parseRelayMultiHostName = (data) => ({
|
|
83
|
+
dnsName: parseDnsName(data[0]),
|
|
84
|
+
});
|
|
85
|
+
const parseRelay = (0, parsers_3.createParser)(parsers_3.parseBasedOnType, errors_1.ParseErrorReason.INVALID_RELAY, parseRelayType, parseRelaySingleHostAddress, parseRelaySingleHostName, parseRelayMultiHostName);
|
|
86
|
+
const parsePoolMetadata = (unparsedPoolMetadata) => {
|
|
87
|
+
const [url, metadataHash] = (0, parsers_3.parseTuple)(unparsedPoolMetadata, errors_1.ParseErrorReason.INVALID_POOL_METADATA, (0, parsers_3.createParser)(parsers_3.parseStringOfMaxLength, types_3.URL_MAX_LENGTH, errors_1.ParseErrorReason.INVALID_POOL_METADATA_URL), (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.METADATA_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_POOL_METADATA_METADATA_HASH));
|
|
88
|
+
return { url, metadataHash };
|
|
89
|
+
};
|
|
90
|
+
const parsePoolParams = (unparsedPoolParams) => {
|
|
91
|
+
const [operator, vrfKeyHash, pledge, cost, margin, rewardAccount, poolOwners, relays, poolMetadata] = (0, parsers_3.parseTuple)(unparsedPoolParams, errors_1.ParseErrorReason.INVALID_POOL_PARAMS, parsePoolKeyHash, (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.VRF_KEY_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_VRF_KEY_HASH), parseCoin, parseCoin, parseUnitInterval, parseRewardAccount, (0, parsers_3.createParser)(parsers_3.parseArray, (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.KEY_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_POOL_OWNER), errors_1.ParseErrorReason.INVALID_POOL_OWNERS), (0, parsers_3.createParser)(parsers_3.parseArray, parseRelay, errors_1.ParseErrorReason.INVALID_RELAYS), (0, parsers_3.createParser)(parsers_3.parseNullable, parsePoolMetadata));
|
|
92
|
+
return { operator, vrfKeyHash, pledge, cost, margin, rewardAccount, poolOwners, relays, poolMetadata };
|
|
93
|
+
};
|
|
94
|
+
const parseCertificateType = (unparsedCertificateType) => {
|
|
95
|
+
(0, parsers_3.validate)((0, parsers_3.isNumber)(unparsedCertificateType), errors_1.ParseErrorReason.INVALID_CERTIFICATE_TYPE);
|
|
96
|
+
(0, parsers_3.validate)(unparsedCertificateType in types_3.CertificateType, errors_1.ParseErrorReason.INVALID_CERTIFICATE_TYPE);
|
|
97
|
+
return unparsedCertificateType;
|
|
98
|
+
};
|
|
99
|
+
const parseStakeRegistrationCertificate = (data) => ({
|
|
100
|
+
stakeCredential: parseStakeCredential(data[0]),
|
|
101
|
+
});
|
|
102
|
+
const parseStakeDeregistrationCertificate = (data) => ({
|
|
103
|
+
stakeCredential: parseStakeCredential(data[0]),
|
|
104
|
+
});
|
|
105
|
+
const parseStakeDelegationCertificate = (data) => ({
|
|
106
|
+
stakeCredential: parseStakeCredential(data[0]),
|
|
107
|
+
poolKeyHash: parsePoolKeyHash(data[1]),
|
|
108
|
+
});
|
|
109
|
+
const parsePoolRegistrationCertificate = (data) => ({
|
|
110
|
+
poolParams: parsePoolParams(data),
|
|
111
|
+
});
|
|
112
|
+
const parsePoolRetirementCertificate = (data) => ({
|
|
113
|
+
poolKeyHash: parsePoolKeyHash(data[0]),
|
|
114
|
+
epoch: parseEpoch(data[1]),
|
|
115
|
+
});
|
|
116
|
+
const parseGenesisKeyDelegation = (data) => ({
|
|
117
|
+
restOfData: data,
|
|
118
|
+
});
|
|
119
|
+
const parseMoveInstantaneousRewardsCertificate = (data) => ({
|
|
120
|
+
restOfData: data,
|
|
121
|
+
});
|
|
122
|
+
const parseCertificate = (0, parsers_3.createParser)(parsers_3.parseBasedOnType, errors_1.ParseErrorReason.INVALID_CERTIFICATE, parseCertificateType, parseStakeRegistrationCertificate, parseStakeDeregistrationCertificate, parseStakeDelegationCertificate, parsePoolRegistrationCertificate, parsePoolRetirementCertificate, parseGenesisKeyDelegation, parseMoveInstantaneousRewardsCertificate);
|
|
123
|
+
exports.parseInputs = (0, parsers_3.createParser)(parsers_3.parseArray, parseTxInput, errors_1.ParseErrorReason.INVALID_TX_INPUTS);
|
|
124
|
+
exports.parseOutputs = (0, parsers_3.createParser)(parsers_3.parseArray, parseTxOutput, errors_1.ParseErrorReason.INVALID_TX_OUTPUTS);
|
|
125
|
+
exports.parseFee = (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_TX_FEE);
|
|
126
|
+
exports.parseTtl = (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_TX_TTL);
|
|
127
|
+
exports.parseCertificates = (0, parsers_3.createParser)(parsers_3.parseArray, parseCertificate, errors_1.ParseErrorReason.INVALID_TX_CERTIFICATES);
|
|
128
|
+
exports.parseMetadataHash = (0, parsers_3.createParser)(parsers_3.parseBufferOfLength, types_3.METADATA_HASH_LENGTH, errors_1.ParseErrorReason.INVALID_TX_METADATA_HASH);
|
|
129
|
+
exports.parseValidityIntervalStart = (0, parsers_3.createParser)(parsers_3.parseUint, errors_1.ParseErrorReason.INVALID_TX_VALIDITY_INTERVAL_START);
|
|
130
|
+
exports.parseMint = (0, parsers_3.createParser)(parseMultiasset, (0, parsers_3.createParser)(parsers_3.parseInt, errors_1.ParseErrorReason.INVALID_MINT_AMOUNT), errors_1.ParseErrorReason.INVALID_TX_MINT);
|
|
131
|
+
const parseTxBody = (unparsedTxBody) => {
|
|
132
|
+
(0, parsers_3.validate)((0, parsers_3.isMapWithKeysOfType)(unparsedTxBody, parsers_3.isNumber), errors_1.ParseErrorReason.INVALID_TX_BODY_CBOR);
|
|
133
|
+
return {
|
|
134
|
+
inputs: (0, exports.parseInputs)(unparsedTxBody.get(0)),
|
|
135
|
+
outputs: (0, exports.parseOutputs)(unparsedTxBody.get(1)),
|
|
136
|
+
fee: (0, exports.parseFee)(unparsedTxBody.get(2)),
|
|
137
|
+
ttl: (0, parsers_3.parseOptional)(unparsedTxBody.get(3), exports.parseTtl),
|
|
138
|
+
certificates: (0, parsers_3.parseOptional)(unparsedTxBody.get(4), exports.parseCertificates),
|
|
139
|
+
withdrawals: (0, parsers_3.parseOptional)(unparsedTxBody.get(5), exports.parseWithdrawals),
|
|
140
|
+
update: unparsedTxBody.get(6),
|
|
141
|
+
metadataHash: (0, parsers_3.parseOptional)(unparsedTxBody.get(7), exports.parseMetadataHash),
|
|
142
|
+
validityIntervalStart: (0, parsers_3.parseOptional)(unparsedTxBody.get(8), exports.parseValidityIntervalStart),
|
|
143
|
+
mint: (0, parsers_3.parseOptional)(unparsedTxBody.get(9), exports.parseMint),
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
exports.parseTxBody = parseTxBody;
|
|
147
|
+
const parseTx = (unparsedTx) => {
|
|
148
|
+
const [body, witnessSet, auxiliaryData] = (0, parsers_3.parseTuple)(unparsedTx, errors_1.ParseErrorReason.INVALID_TX_CBOR, exports.parseTxBody, dontParse, dontParse);
|
|
149
|
+
return { body, witnessSet, auxiliaryData };
|
|
150
|
+
};
|
|
151
|
+
exports.parseTx = parseTx;
|
|
152
|
+
const parseRawTx = (unparsedRawTx) => {
|
|
153
|
+
const [body, item1, item2] = (0, parsers_3.parseTuple)(unparsedRawTx, errors_1.ParseErrorReason.INVALID_RAW_TX_CBOR, exports.parseTxBody, dontParse, dontParse);
|
|
154
|
+
if (item2 === undefined) {
|
|
155
|
+
return { body, scriptWitnesses: undefined, auxiliaryData: item1 };
|
|
156
|
+
}
|
|
157
|
+
item1.encodeCBOR = cbor_1.Encoder.encodeIndefinite;
|
|
158
|
+
return { body, scriptWitnesses: item1, auxiliaryData: item2 };
|
|
159
|
+
};
|
|
160
|
+
exports.parseRawTx = parseRawTx;
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhQYXJzZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4UGFyc2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBOEI7QUFFOUIscUNBQTJDO0FBRTNDLHVDQUFrQztBQUNsQyx1Q0FBMkM7QUFDM0MsdUNBQTBRO0FBRTFRLG1DQUE4RDtBQUM5RCxtQ0FBb0M7QUFDcEMsbUNBQXdSO0FBRXhSLE1BQU0sU0FBUyxHQUFxQixDQUFDLElBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFBO0FBRTNELE1BQU0sa0JBQWtCLEdBQUcsSUFBQSxzQkFBWSxFQUFDLDZCQUFtQixFQUFFLDZCQUFxQixFQUFFLHlCQUFnQixDQUFDLHNCQUFzQixDQUFDLENBQUE7QUFDNUgsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQkFBWSxFQUFDLG1CQUFTLEVBQUUseUJBQWdCLENBQUMsWUFBWSxDQUFDLENBQUE7QUFDeEUsTUFBTSxVQUFVLEdBQUcsSUFBQSxzQkFBWSxFQUFDLG1CQUFTLEVBQUUseUJBQWdCLENBQUMsWUFBWSxDQUFDLENBQUE7QUFFekUsTUFBTSxhQUFhLEdBQUcsSUFBQSxzQkFBWSxFQUFDLDZCQUFtQixFQUFFLDBCQUFrQixFQUFFLHlCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUE7QUFDL0csTUFBTSxjQUFjLEdBQUcsSUFBQSxzQkFBWSxFQUFDLGdDQUFzQixFQUFFLDZCQUFxQixFQUFFLHlCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUE7QUFFdkgsTUFBTSxlQUFlLEdBQUcsQ0FBSSxrQkFBMkIsRUFBRSxlQUEwQixFQUFFLE1BQXdCLEVBQWlCLEVBQUU7SUFDNUgsTUFBTSxhQUFhLEdBQUcsSUFBQSxrQkFBUSxFQUMxQixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLElBQUEsc0JBQVksRUFDUixrQkFBUSxFQUNSLGNBQWMsRUFDZCxlQUFlLEVBQ2YsTUFBTSxDQUNULEVBQ0QsTUFBTSxDQUNULENBQUE7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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RawTransaction, Transaction, TransactionBody } from './types';
|
|
2
|
+
export declare const serializeTxBody: (txBody: TransactionBody) => Map<number, unknown>;
|
|
3
|
+
export declare const serializeTx: (tx: Transaction) => unknown[];
|
|
4
|
+
export declare const serializeRawTx: (rawTx: RawTransaction) => unknown[];
|
|
5
|
+
//# sourceMappingURL=txSerializers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txSerializers.d.ts","sourceRoot":"","sources":["../../src/txSerializers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwF,cAAc,EAAyC,WAAW,EAAE,eAAe,EAAmD,MAAM,SAAS,CAAA;AA6EzP,eAAO,MAAM,eAAe,WAAY,eAAe,yBAWe,CAAA;AAEtE,eAAO,MAAM,WAAW,OAAQ,WAAW,cAI1C,CAAA;AAED,eAAO,MAAM,cAAc,UAAW,cAAc,cAanD,CAAA"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeRawTx = exports.serializeTx = exports.serializeTxBody = void 0;
|
|
4
|
+
const cbor_1 = require("cbor");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
const identity = (x) => x;
|
|
7
|
+
const serializeTxInput = (input) => [input.transactionId, input.index];
|
|
8
|
+
const serializeMultiasset = (multiasset) => new Map(multiasset.map(({ policyId, tokens }) => [
|
|
9
|
+
policyId,
|
|
10
|
+
new Map(tokens.map(({ assetName, amount }) => [assetName, amount])),
|
|
11
|
+
]));
|
|
12
|
+
const serializeAmount = (amount) => {
|
|
13
|
+
switch (amount.type) {
|
|
14
|
+
case types_1.AmountType.WITHOUT_MULTIASSET:
|
|
15
|
+
return amount.coin;
|
|
16
|
+
case types_1.AmountType.WITH_MULTIASSET:
|
|
17
|
+
return [amount.coin, serializeMultiasset(amount.multiasset)];
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const serializeTxOutput = (output) => [output.address, serializeAmount(output.amount)];
|
|
21
|
+
const serializeWithdrawals = (withdrawals) => new Map(withdrawals.map(({ rewardAccount, amount }) => [rewardAccount, amount]));
|
|
22
|
+
const serializeRelay = (relay) => {
|
|
23
|
+
switch (relay.type) {
|
|
24
|
+
case types_1.RelayType.SINGLE_HOST_ADDRESS:
|
|
25
|
+
return [relay.type, relay.port, relay.ipv4, relay.ipv6];
|
|
26
|
+
case types_1.RelayType.SINGLE_HOST_NAME:
|
|
27
|
+
return [relay.type, relay.port, relay.dnsName];
|
|
28
|
+
case types_1.RelayType.MULTI_HOST_NAME:
|
|
29
|
+
return [relay.type, relay.dnsName];
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const serializePoolMetadata = (poolMetadata) => [poolMetadata.url, poolMetadata.metadataHash];
|
|
33
|
+
const serializePoolParams = (poolParams) => [
|
|
34
|
+
poolParams.operator,
|
|
35
|
+
poolParams.vrfKeyHash,
|
|
36
|
+
poolParams.pledge,
|
|
37
|
+
poolParams.cost,
|
|
38
|
+
new cbor_1.Tagged(30, poolParams.margin),
|
|
39
|
+
poolParams.rewardAccount,
|
|
40
|
+
poolParams.poolOwners,
|
|
41
|
+
poolParams.relays.map(serializeRelay),
|
|
42
|
+
poolParams.poolMetadata && serializePoolMetadata(poolParams.poolMetadata),
|
|
43
|
+
];
|
|
44
|
+
const serializeStakeCredential = (stakeCredential) => [stakeCredential.type, stakeCredential.hash];
|
|
45
|
+
const serializeTxCertificate = (certificate) => {
|
|
46
|
+
switch (certificate.type) {
|
|
47
|
+
case types_1.CertificateType.STAKE_REGISTRATION:
|
|
48
|
+
case types_1.CertificateType.STAKE_DEREGISTRATION:
|
|
49
|
+
return [certificate.type, serializeStakeCredential(certificate.stakeCredential)];
|
|
50
|
+
case types_1.CertificateType.STAKE_DELEGATION:
|
|
51
|
+
return [certificate.type, serializeStakeCredential(certificate.stakeCredential), certificate.poolKeyHash];
|
|
52
|
+
case types_1.CertificateType.POOL_REGISTRATION:
|
|
53
|
+
return [certificate.type, ...serializePoolParams(certificate.poolParams)];
|
|
54
|
+
case types_1.CertificateType.POOL_RETIREMENT:
|
|
55
|
+
return [certificate.type, certificate.poolKeyHash, certificate.epoch];
|
|
56
|
+
case types_1.CertificateType.GENESIS_KEY_DELEGATION:
|
|
57
|
+
case types_1.CertificateType.MOVE_INSTANTANEOUS_REWARDS_CERT:
|
|
58
|
+
return [certificate.type, ...certificate.restOfData];
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const serializeTxBody = (txBody) => {
|
|
62
|
+
var _a;
|
|
63
|
+
return new Map(([
|
|
64
|
+
[0, txBody.inputs.map(serializeTxInput)],
|
|
65
|
+
[1, txBody.outputs.map(serializeTxOutput)],
|
|
66
|
+
[2, identity(txBody.fee)],
|
|
67
|
+
[3, identity(txBody.ttl)],
|
|
68
|
+
[4, (_a = txBody.certificates) === null || _a === void 0 ? void 0 : _a.map(serializeTxCertificate)],
|
|
69
|
+
[5, txBody.withdrawals && serializeWithdrawals(txBody.withdrawals)],
|
|
70
|
+
[6, identity(txBody.update)],
|
|
71
|
+
[7, identity(txBody.metadataHash)],
|
|
72
|
+
[8, identity(txBody.validityIntervalStart)],
|
|
73
|
+
[9, txBody.mint && serializeMultiasset(txBody.mint)],
|
|
74
|
+
]).filter(([_, value]) => value !== undefined));
|
|
75
|
+
};
|
|
76
|
+
exports.serializeTxBody = serializeTxBody;
|
|
77
|
+
const serializeTx = (tx) => [
|
|
78
|
+
(0, exports.serializeTxBody)(tx.body),
|
|
79
|
+
tx.witnessSet,
|
|
80
|
+
tx.auxiliaryData,
|
|
81
|
+
];
|
|
82
|
+
exports.serializeTx = serializeTx;
|
|
83
|
+
const serializeRawTx = (rawTx) => {
|
|
84
|
+
if (rawTx.scriptWitnesses === undefined) {
|
|
85
|
+
return [
|
|
86
|
+
(0, exports.serializeTxBody)(rawTx.body),
|
|
87
|
+
rawTx.auxiliaryData,
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
return [
|
|
91
|
+
(0, exports.serializeTxBody)(rawTx.body),
|
|
92
|
+
rawTx.scriptWitnesses,
|
|
93
|
+
rawTx.auxiliaryData,
|
|
94
|
+
];
|
|
95
|
+
};
|
|
96
|
+
exports.serializeRawTx = serializeRawTx;
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhTZXJpYWxpemVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eFNlcmlhbGl6ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE2QjtBQUc3QixtQ0FBZ0U7QUFFaEUsTUFBTSxRQUFRLEdBQUcsQ0FBSSxDQUFJLEVBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVsQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQ2pELENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7QUFFdEMsTUFBTSxtQkFBbUIsR0FBRyxDQUFJLFVBQXlCLEVBQW9DLEVBQUUsQ0FDM0YsSUFBSSxHQUFHLENBQ0gsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxFQUFFLEVBQUUsQ0FBQztJQUNuQyxRQUFRO0lBQ1IsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0NBQ3BFLENBQUMsQ0FDTCxDQUFBO0FBRUwsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUN2QyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDckIsS0FBSyxrQkFBVSxDQUFDLGtCQUFrQjtZQUM5QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFDdEIsS0FBSyxrQkFBVSxDQUFDLGVBQWU7WUFDM0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7S0FDL0Q7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBeUIsRUFBRSxFQUFFLENBQ3BELENBQUMsTUFB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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RawTransaction, Transaction, TransactionBody } from './types';
|
|
2
|
+
export declare const transformTxBody: (txBody: TransactionBody) => TransactionBody;
|
|
3
|
+
export declare const transformTx: (tx: Transaction) => Transaction;
|
|
4
|
+
export declare const transformRawTx: (rawTx: RawTransaction) => RawTransaction;
|
|
5
|
+
//# sourceMappingURL=txTransformers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txTransformers.d.ts","sourceRoot":"","sources":["../../src/txTransformers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAE,WAAW,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAA;AA4ClH,eAAO,MAAM,eAAe,WAAY,eAAe,KAAG,eAKxD,CAAA;AAEF,eAAO,MAAM,WAAW,OAAQ,WAAW,KAAG,WAG5C,CAAA;AAEF,eAAO,MAAM,cAAc,UAAW,cAAc,KAAG,cAGrD,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformRawTx = exports.transformTx = exports.transformTxBody = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
const transformOptionalList = (optionalList) => (optionalList === null || optionalList === void 0 ? void 0 : optionalList.length) === 0 ? undefined : optionalList;
|
|
6
|
+
const transformMultiasset = (multiasset) => multiasset === undefined ? undefined : transformOptionalList(multiasset
|
|
7
|
+
.map(({ policyId, tokens }) => ({ policyId, tokens: transformOptionalList(tokens) }))
|
|
8
|
+
.filter(({ tokens }) => tokens !== undefined));
|
|
9
|
+
const transformAmount = (amount) => {
|
|
10
|
+
switch (amount.type) {
|
|
11
|
+
case types_1.AmountType.WITHOUT_MULTIASSET:
|
|
12
|
+
return amount;
|
|
13
|
+
case types_1.AmountType.WITH_MULTIASSET: {
|
|
14
|
+
const multiasset = transformMultiasset(amount.multiasset);
|
|
15
|
+
if (multiasset === undefined) {
|
|
16
|
+
return {
|
|
17
|
+
type: types_1.AmountType.WITHOUT_MULTIASSET,
|
|
18
|
+
coin: amount.coin,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
type: types_1.AmountType.WITH_MULTIASSET,
|
|
23
|
+
coin: amount.coin,
|
|
24
|
+
multiasset,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const transformOutputs = (txOutputs) => txOutputs.map(({ address, amount }) => ({
|
|
30
|
+
address,
|
|
31
|
+
amount: transformAmount(amount),
|
|
32
|
+
}));
|
|
33
|
+
const transformTxBody = (txBody) => ({
|
|
34
|
+
...txBody,
|
|
35
|
+
outputs: transformOutputs(txBody.outputs),
|
|
36
|
+
certificates: transformOptionalList(txBody.certificates),
|
|
37
|
+
withdrawals: transformOptionalList(txBody.withdrawals),
|
|
38
|
+
});
|
|
39
|
+
exports.transformTxBody = transformTxBody;
|
|
40
|
+
const transformTx = (tx) => ({
|
|
41
|
+
...tx,
|
|
42
|
+
body: (0, exports.transformTxBody)(tx.body),
|
|
43
|
+
});
|
|
44
|
+
exports.transformTx = transformTx;
|
|
45
|
+
const transformRawTx = (rawTx) => ({
|
|
46
|
+
...rawTx,
|
|
47
|
+
body: (0, exports.transformTxBody)(rawTx.body),
|
|
48
|
+
});
|
|
49
|
+
exports.transformRawTx = transformRawTx;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhUcmFuc2Zvcm1lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhUcmFuc2Zvcm1lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUNBQW9DO0FBRXBDLE1BQU0scUJBQXFCLEdBQUcsQ0FBSSxZQUFrQixFQUFtQixFQUFFLENBQ3JFLENBQUEsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLE1BQU0sTUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFBO0FBRXpELE1BQU0sbUJBQW1CLEdBQUcsQ0FBSSxVQUEwQixFQUE2QixFQUFFLENBQ3JGLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQ3hELFVBQVU7S0FDTCxHQUFHLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0tBQ2hGLE1BQU0sQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQWtCLENBQ25FLENBQUE7QUFFTCxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQWMsRUFBVSxFQUFFO0lBQy9DLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNyQixLQUFLLGtCQUFVLENBQUMsa0JBQWtCO1lBQzlCLE9BQU8sTUFBTSxDQUFBO1FBQ2pCLEtBQUssa0JBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUc3QixNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7WUFFekQsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO2dCQUMxQixPQUFPO29CQUNILElBQUksRUFBRSxrQkFBVSxDQUFDLGtCQUFrQjtvQkFDbkMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2lCQUNwQixDQUFBO2FBQ0o7WUFFRCxPQUFPO2dCQUNILElBQUksRUFBRSxrQkFBVSxDQUFDLGVBQWU7Z0JBQ2hDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsVUFBVTthQUNiLENBQUE7U0FDSjtLQUNBO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFNBQThCLEVBQXVCLEVBQUUsQ0FDN0UsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLE9BQU87SUFDUCxNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQztDQUNsQyxDQUFDLENBQUMsQ0FBQTtBQUVBLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBdUIsRUFBbUIsRUFBRSxDQUFDLENBQUM7SUFDMUUsR0FBRyxNQUFNO0lBQ1QsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDekMsWUFBWSxFQUFFLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDeEQsV0FBVyxFQUFFLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekQsQ0FBQyxDQUFBO0FBTFcsUUFBQSxlQUFlLG1CQUsxQjtBQUVLLE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBZSxFQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzFELEdBQUcsRUFBRTtJQUNMLElBQUksRUFBRSxJQUFBLHVCQUFlLEVBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztDQUNqQyxDQUFDLENBQUE7QUFIVyxRQUFBLFdBQVcsZUFHdEI7QUFFSyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQXFCLEVBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLEdBQUcsS0FBSztJQUNSLElBQUksRUFBRSxJQUFBLHVCQUFlLEVBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztDQUNwQyxDQUFDLENBQUE7QUFIVyxRQUFBLGNBQWMsa0JBR3pCIn0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { ValidationError } from './errors';
|
|
3
|
+
import type { TransactionBody } from './types';
|
|
4
|
+
export declare const validateTxCommon: (inputCbor: Buffer, canonicalCbor: Buffer, txBody: TransactionBody) => ValidationError[];
|
|
5
|
+
//# sourceMappingURL=txValidators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txValidators.d.ts","sourceRoot":"","sources":["../../src/txValidators.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAC,MAAM,UAAU,CAAA;AAE9C,OAAO,KAAK,EAAqJ,eAAe,EAAyD,MAAM,SAAS,CAAA;AAqMxP,eAAO,MAAM,gBAAgB,cAAe,MAAM,iBAAiB,MAAM,UAAU,eAAe,KAAG,eAAe,EAIlH,CAAA"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateTxCommon = void 0;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const UINT16_MAX = 65535;
|
|
8
|
+
const MAX_UINT_64_STR = "18446744073709551615";
|
|
9
|
+
const MIN_INT_64_STR = "-9223372036854775808";
|
|
10
|
+
const MAX_INT_64_STR = "9223372036854775807";
|
|
11
|
+
function* validate(cond, err) {
|
|
12
|
+
if (!cond)
|
|
13
|
+
yield err;
|
|
14
|
+
}
|
|
15
|
+
function* validateOptional(x, validateFn) {
|
|
16
|
+
x === undefined || x === null ? x : yield* validateFn(x);
|
|
17
|
+
}
|
|
18
|
+
function* validateListConstraints(list, position) {
|
|
19
|
+
yield* validate(list.length > 0, (0, errors_1.err)(errors_1.ValidationErrorReason.OPTIONAL_EMPTY_LISTS_AND_MAPS_MUST_NOT_BE_INCLUDED, position));
|
|
20
|
+
yield* validate(list.length <= UINT16_MAX, (0, errors_1.err)(errors_1.ValidationErrorReason.NUMBER_OF_ELEMENTS_EXCEEDS_UINT16, position));
|
|
21
|
+
}
|
|
22
|
+
const validateUint64 = (n, position) => validate(n >= 0 && n <= BigInt(MAX_UINT_64_STR), (0, errors_1.err)(errors_1.ValidationErrorReason.UNSIGNED_INTEGER_NOT_UINT64, position));
|
|
23
|
+
const validateInt64 = (n, position) => validate(n >= BigInt(MIN_INT_64_STR) && n <= BigInt(MAX_INT_64_STR), (0, errors_1.err)(errors_1.ValidationErrorReason.INTEGER_NOT_INT64, position));
|
|
24
|
+
function* validateTxInputs(txInputs) {
|
|
25
|
+
yield* validateListConstraints(txInputs, 'transaction_body.inputs');
|
|
26
|
+
for (const [index, input] of txInputs.entries()) {
|
|
27
|
+
yield* validateUint64(input.index, `transaction_body.inputs[${index}].index`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function* validateMultiasset(multiasset, validateAmount, position) {
|
|
31
|
+
yield* validateListConstraints(multiasset, position);
|
|
32
|
+
for (const { policyId, tokens } of multiasset) {
|
|
33
|
+
yield* validateListConstraints(tokens, `${position}[${policyId.toString('hex')}]`);
|
|
34
|
+
for (const { assetName, amount } of tokens) {
|
|
35
|
+
yield* validateAmount(amount, `${position}[${policyId.toString('hex')}][${assetName.toString('hex')}]`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function* validateTxOutputs(txOutputs) {
|
|
40
|
+
yield* validateListConstraints(txOutputs, 'transaction_body.outputs');
|
|
41
|
+
for (const [index, { amount }] of txOutputs.entries()) {
|
|
42
|
+
switch (amount.type) {
|
|
43
|
+
case types_1.AmountType.WITHOUT_MULTIASSET:
|
|
44
|
+
yield* validateUint64(amount.coin, `transaction_body.outputs[${index}].amount`);
|
|
45
|
+
break;
|
|
46
|
+
case types_1.AmountType.WITH_MULTIASSET:
|
|
47
|
+
yield* validateUint64(amount.coin, `transaction_body.outputs[${index}].amount`);
|
|
48
|
+
yield* validate(amount.multiasset.length > 0, (0, errors_1.err)(errors_1.ValidationErrorReason.OUTPUT_WITHOUT_TOKENS_MUST_BE_A_SIMPLE_TUPLE, `transaction_body.outputs[${index}].amount`));
|
|
49
|
+
yield* validateMultiasset(amount.multiasset, validateUint64, `transaction_body.ouputs[${index}]`);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function* validateCertificates(certificates) {
|
|
55
|
+
yield* validateListConstraints(certificates, 'transaction_body.certificates');
|
|
56
|
+
for (const [index, certificate] of certificates.entries()) {
|
|
57
|
+
switch (certificate.type) {
|
|
58
|
+
case types_1.CertificateType.POOL_REGISTRATION:
|
|
59
|
+
yield* validateUint64(certificate.poolParams.pledge, `transaction_body.certificates[${index}].pool_params.pledge`);
|
|
60
|
+
yield* validateUint64(certificate.poolParams.cost, `transaction_body.certificates[${index}].pool_params.cost`);
|
|
61
|
+
yield* validateUint64(certificate.poolParams.margin[0], `transaction_body.certificates[${index}].pool_params.margin[0]`);
|
|
62
|
+
yield* validateUint64(certificate.poolParams.margin[1], `transaction_body.certificates[${index}].pool_params.margin[1]`);
|
|
63
|
+
break;
|
|
64
|
+
case types_1.CertificateType.POOL_RETIREMENT:
|
|
65
|
+
yield* validateUint64(certificate.epoch, `transaction_body.certificates[${index}].epoch`);
|
|
66
|
+
break;
|
|
67
|
+
case types_1.CertificateType.GENESIS_KEY_DELEGATION:
|
|
68
|
+
yield* validate(false, (0, errors_1.err)(errors_1.ValidationErrorReason.UNSUPPORTED_CERTIFICATE_GENESIS_KEY_DELEGATION, `transaction_body.certificates[${index}]`));
|
|
69
|
+
break;
|
|
70
|
+
case types_1.CertificateType.MOVE_INSTANTANEOUS_REWARDS_CERT:
|
|
71
|
+
yield* validate(false, (0, errors_1.err)(errors_1.ValidationErrorReason.UNSUPPORTED_CERTIFICATE_MOVE_INSTANTANEOUS_REWARDS_CERT, `transaction_body.certificates[${index}]`));
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function* validateWithdrawals(withdrawals) {
|
|
79
|
+
yield* validateListConstraints(withdrawals, 'transaction_body.withdrawals');
|
|
80
|
+
for (const { rewardAccount, amount } of withdrawals) {
|
|
81
|
+
yield* validateUint64(amount, `transaction_body.withdrawals[${rewardAccount.toString('hex')}]`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function* validateStakeCredentials(certificates, withdrawals) {
|
|
85
|
+
const certificateStakeCredentialTypes = new Set();
|
|
86
|
+
const withdrawalStakeCredentialTypes = new Set();
|
|
87
|
+
if (certificates) {
|
|
88
|
+
const certificatesWithStakeCredentials = certificates.filter(({ type }) => (type === types_1.CertificateType.STAKE_REGISTRATION
|
|
89
|
+
|| type === types_1.CertificateType.STAKE_DEREGISTRATION
|
|
90
|
+
|| type === types_1.CertificateType.STAKE_DELEGATION));
|
|
91
|
+
certificatesWithStakeCredentials.forEach(({ stakeCredential }) => certificateStakeCredentialTypes.add(stakeCredential.type));
|
|
92
|
+
yield* validate(certificateStakeCredentialTypes.size <= 1, (0, errors_1.err)(errors_1.ValidationErrorReason.WITHDRAWALS_MUST_HAVE_THE_SAME_TYPE_OF_STAKE_CREDENTIAL, 'transaction_body.certificates'));
|
|
93
|
+
}
|
|
94
|
+
if (withdrawals) {
|
|
95
|
+
withdrawals.forEach(({ rewardAccount }) => withdrawalStakeCredentialTypes.add((0, utils_1.getRewardAccountStakeCredentialType)(rewardAccount)));
|
|
96
|
+
yield* validate(withdrawalStakeCredentialTypes.size <= 1, (0, errors_1.err)(errors_1.ValidationErrorReason.WITHDRAWALS_MUST_HAVE_THE_SAME_TYPE_OF_STAKE_CREDENTIAL, 'transaction_body.withdrawals'));
|
|
97
|
+
}
|
|
98
|
+
if (certificateStakeCredentialTypes.size === 1 && withdrawalStakeCredentialTypes.size === 1) {
|
|
99
|
+
yield* validate([...certificateStakeCredentialTypes][0] === [...withdrawalStakeCredentialTypes][0], (0, errors_1.err)(errors_1.ValidationErrorReason.CERTIFICATES_AND_WITHDRAWALS_STAKE_CREDENTIAL_TYPES_MUST_BE_CONSISTENT, 'transaction_body'));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const validateMint = (mint) => validateMultiasset(mint, validateInt64, 'transaction_body.mint');
|
|
103
|
+
function* validatePoolRegistrationTransaction(txBody) {
|
|
104
|
+
if (!txBody.certificates || txBody.certificates.find(({ type }) => type === types_1.CertificateType.POOL_REGISTRATION) === undefined) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
yield* validate(txBody.certificates.length === 1, (0, errors_1.err)(errors_1.ValidationErrorReason.POOL_REGISTRATION_CERTIFICATE_WITH_OTHER_CERTIFICATES, 'transaction_body.certificates'));
|
|
108
|
+
yield* validate(!txBody.withdrawals || txBody.withdrawals.length === 0, (0, errors_1.err)(errors_1.ValidationErrorReason.POOL_REGISTRATION_CERTIFICATE_WITH_WITHDRAWALS, 'transaction_body.withdrawals'));
|
|
109
|
+
yield* validate(!txBody.mint || txBody.mint.length === 0 || txBody.mint.every(({ tokens }) => tokens.length === 0), (0, errors_1.err)(errors_1.ValidationErrorReason.POOL_REGISTRATION_CERTIFICATE_WITH_MINT_ENTRY, 'transaction_body.mint'));
|
|
110
|
+
}
|
|
111
|
+
function* validateTxBody(txBody) {
|
|
112
|
+
yield* validateTxInputs(txBody.inputs);
|
|
113
|
+
yield* validateTxOutputs(txBody.outputs);
|
|
114
|
+
yield* validateUint64(txBody.fee, 'transaction_body.fee');
|
|
115
|
+
yield* validateOptional(txBody.ttl, (0, utils_1.bind)(validateUint64, 'transaction_body.ttl'));
|
|
116
|
+
yield* validateOptional(txBody.certificates, validateCertificates);
|
|
117
|
+
yield* validateOptional(txBody.withdrawals, validateWithdrawals);
|
|
118
|
+
yield* validateStakeCredentials(txBody.certificates, txBody.withdrawals);
|
|
119
|
+
yield* validate(txBody.update === undefined, (0, errors_1.err)(errors_1.ValidationErrorReason.UNSUPPORTED_TX_UPDATE, 'transaction_body.update'));
|
|
120
|
+
yield* validateOptional(txBody.validityIntervalStart, (0, utils_1.bind)(validateUint64, 'transaction_body.validity_interval_start'));
|
|
121
|
+
yield* validateOptional(txBody.mint, validateMint);
|
|
122
|
+
yield* validatePoolRegistrationTransaction(txBody);
|
|
123
|
+
}
|
|
124
|
+
const validateTxCommon = (inputCbor, canonicalCbor, txBody) => ([
|
|
125
|
+
...validate(inputCbor.equals(canonicalCbor), (0, errors_1.err)(errors_1.ValidationErrorReason.CBOR_IS_NOT_CANONICAL, 'transaction')),
|
|
126
|
+
...validateTxBody(txBody),
|
|
127
|
+
]);
|
|
128
|
+
exports.validateTxCommon = validateTxCommon;
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhWYWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4VmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FBcUQ7QUFFckQsbUNBQXFEO0FBQ3JELG1DQUFtRTtBQUVuRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUE7QUFDeEIsTUFBTSxlQUFlLEdBQUcsc0JBQXNCLENBQUE7QUFDOUMsTUFBTSxjQUFjLEdBQUcsc0JBQXNCLENBQUE7QUFDN0MsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUE7QUFTNUMsUUFBUyxDQUFDLENBQUEsUUFBUSxDQUFDLElBQWEsRUFBRSxHQUFvQjtJQUNsRCxJQUFJLENBQUMsSUFBSTtRQUFFLE1BQU0sR0FBRyxDQUFBO0FBQ3hCLENBQUM7QUFLRCxRQUFTLENBQUMsQ0FBQSxnQkFBZ0IsQ0FBSSxDQUF1QixFQUFFLFVBQXlDO0lBQzVGLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDNUQsQ0FBQztBQU9ELFFBQVMsQ0FBQyxDQUFBLHVCQUF1QixDQUFDLElBQVcsRUFBRSxRQUFnQjtJQUMzRCxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBQSxZQUFHLEVBQUMsOEJBQXFCLENBQUMsa0RBQWtELEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUN6SCxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxVQUFVLEVBQUUsSUFBQSxZQUFHLEVBQUMsOEJBQXFCLENBQUMsaUNBQWlDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtBQUN0SCxDQUFDO0FBRUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFPLEVBQUUsUUFB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
|