swtc-chains
Version:
swtc chain information
1,059 lines • 29.5 kB
JavaScript
const REQUIRED = 0;
const OPTIONAL = 1;
const DEFAULT = 2;
const BASE = [
["TransactionType", REQUIRED],
["Flags", OPTIONAL],
["SourceTag", OPTIONAL],
["LastLedgerSequence", OPTIONAL],
["Account", REQUIRED],
["Sequence", OPTIONAL],
["Fee", REQUIRED],
["OperationLimit", OPTIONAL],
["SigningPubKey", OPTIONAL],
["TxnSignature", OPTIONAL]
];
const TRANSACTION_TYPES = {
AccountSet: [
3,
...BASE,
...[
["EmailHash", OPTIONAL],
["WalletLocator", OPTIONAL],
["WalletSize", OPTIONAL],
["MessageKey", OPTIONAL],
["Domain", OPTIONAL],
["TransferRate", OPTIONAL]
]
],
TrustSet: [
20,
...BASE,
...[
["LimitAmount", OPTIONAL],
["QualityIn", OPTIONAL],
["QualityOut", OPTIONAL]
]
],
RelationSet: [
21,
...BASE,
...[
["Target", REQUIRED],
["RelationType", REQUIRED],
["LimitAmount", OPTIONAL]
]
],
RelationDel: [
22,
...BASE,
...[
["Target", REQUIRED],
["RelationType", REQUIRED],
["LimitAmount", OPTIONAL]
]
],
OfferCreate: [
7,
...BASE,
...[
["TakerPays", REQUIRED],
["TakerGets", REQUIRED],
["AppType", OPTIONAL],
["Expiration", OPTIONAL]
]
],
OfferCancel: [8, ...BASE, ...[["OfferSequence", REQUIRED]]],
SetRegularKey: [5, ...BASE, ...[["RegularKey", REQUIRED]]],
Payment: [
0,
...BASE,
...[
["Destination", REQUIRED],
["Amount", REQUIRED],
["SendMax", OPTIONAL],
["Paths", DEFAULT],
["InvoiceID", OPTIONAL],
["DestinationTag", OPTIONAL]
]
],
Contract: [
9,
...BASE,
...[
["Expiration", REQUIRED],
["BondAmount", REQUIRED],
["StampEscrow", REQUIRED],
["JingtumEscrow", REQUIRED],
["CreateCode", OPTIONAL],
["FundCode", OPTIONAL],
["RemoveCode", OPTIONAL],
["ExpireCode", OPTIONAL]
]
],
RemoveContract: [10, ...BASE, ...[["Target", REQUIRED]]],
EnableFeature: [100, ...BASE, ...[["Feature", REQUIRED]]],
SetFee: [
101,
...BASE,
...[
["Features", REQUIRED],
["BaseFee", REQUIRED],
["ReferenceFeeUnits", REQUIRED],
["ReserveBase", REQUIRED],
["ReserveIncrement", REQUIRED]
]
],
ConfigContract: [
30,
...BASE,
...[
["Method", REQUIRED],
["Payload", OPTIONAL],
["Destination", OPTIONAL],
["Amount", OPTIONAL],
["Contracttype", OPTIONAL],
["ContractMethod", OPTIONAL],
["Args", OPTIONAL]
]
],
AlethContract: [
31,
...BASE,
...[
["Method", REQUIRED],
["Contracttype", OPTIONAL],
["ContractMethod", OPTIONAL],
["Amount", OPTIONAL],
["Payload", OPTIONAL],
["Args", OPTIONAL],
["Destination", OPTIONAL]
]
],
Brokerage: [
205,
...BASE,
...[
["OfferFeeRateNum", REQUIRED],
["OfferFeeRateDen", REQUIRED],
["AppType", REQUIRED],
["Amount", REQUIRED]
]
],
SignerListSet: [
207,
...BASE,
...[
["SignerQuorum", REQUIRED],
["SignerEntries", OPTIONAL]
]
]
};
const SLE_BASE = [
["LedgerIndex", OPTIONAL],
["LedgerEntryType", REQUIRED],
["Flags", REQUIRED]
];
const LEDGER_ENTRY_TYPES = {
AccountRoot: [
97,
...SLE_BASE,
...[
["Sequence", REQUIRED],
["PreviousTxnLgrSeq", REQUIRED],
["TransferRate", OPTIONAL],
["WalletSize", OPTIONAL],
["OwnerCount", REQUIRED],
["EmailHash", OPTIONAL],
["PreviousTxnID", REQUIRED],
["AccountTxnID", OPTIONAL],
["WalletLocator", OPTIONAL],
["Balance", REQUIRED],
["MessageKey", OPTIONAL],
["Domain", OPTIONAL],
["Account", REQUIRED],
["RegularKey", OPTIONAL]
]
],
Contract: [
99,
...SLE_BASE,
...[
["PreviousTxnLgrSeq", REQUIRED],
["Expiration", REQUIRED],
["BondAmount", REQUIRED],
["PreviousTxnID", REQUIRED],
["Balance", REQUIRED],
["FundCode", OPTIONAL],
["RemoveCode", OPTIONAL],
["ExpireCode", OPTIONAL],
["CreateCode", OPTIONAL],
["Account", REQUIRED],
["Owner", REQUIRED],
["Issuer", REQUIRED]
]
],
DirectoryNode: [
100,
...SLE_BASE,
...[
["IndexNext", OPTIONAL],
["IndexPrevious", OPTIONAL],
["ExchangeRate", OPTIONAL],
["RootIndex", REQUIRED],
["Owner", OPTIONAL],
["TakerPaysCurrency", OPTIONAL],
["TakerPaysIssuer", OPTIONAL],
["TakerGetsCurrency", OPTIONAL],
["TakerGetsIssuer", OPTIONAL],
["Indexes", REQUIRED]
]
],
EnabledFeatures: [102, ...SLE_BASE, ...[["Features", REQUIRED]]],
FeeSettings: [
115,
...SLE_BASE,
...[
["ReferenceFeeUnits", REQUIRED],
["ReserveBase", REQUIRED],
["ReserveIncrement", REQUIRED],
["BaseFee", REQUIRED],
["LedgerIndex", OPTIONAL]
]
],
GeneratorMap: [103, ...SLE_BASE, ...[["Generator", REQUIRED]]],
LedgerHashes: [
104,
...SLE_BASE,
...[
["LedgerEntryType", REQUIRED],
["Flags", REQUIRED],
["FirstLedgerSequence", OPTIONAL],
["LastLedgerSequence", OPTIONAL],
["LedgerIndex", OPTIONAL],
["Hashes", REQUIRED]
]
],
Nickname: [
110,
...SLE_BASE,
...[
["LedgerEntryType", REQUIRED],
["Flags", REQUIRED],
["LedgerIndex", OPTIONAL],
["MinimumOffer", OPTIONAL],
["Account", REQUIRED]
]
],
Offer: [
111,
...SLE_BASE,
...[
["LedgerEntryType", REQUIRED],
["Flags", REQUIRED],
["Sequence", REQUIRED],
["PreviousTxnLgrSeq", REQUIRED],
["Expiration", OPTIONAL],
["BookNode", REQUIRED],
["OwnerNode", REQUIRED],
["PreviousTxnID", REQUIRED],
["LedgerIndex", OPTIONAL],
["BookDirectory", REQUIRED],
["TakerPays", REQUIRED],
["TakerGets", REQUIRED],
["Account", REQUIRED]
]
],
SkywellState: [
114,
...SLE_BASE,
...[
["LedgerEntryType", REQUIRED],
["Flags", REQUIRED],
["PreviousTxnLgrSeq", REQUIRED],
["HighQualityIn", OPTIONAL],
["HighQualityOut", OPTIONAL],
["LowQualityIn", OPTIONAL],
["LowQualityOut", OPTIONAL],
["LowNode", OPTIONAL],
["HighNode", OPTIONAL],
["PreviousTxnID", REQUIRED],
["LedgerIndex", OPTIONAL],
["Balance", REQUIRED],
["LowLimit", REQUIRED],
["HighLimit", REQUIRED]
]
]
};
const METADATA = [
["TransactionIndex", REQUIRED],
["TransactionResult", REQUIRED],
["AffectedNodes", REQUIRED]
];
const TYPES_MAP = [
void 0,
"Int16",
"Int32",
"Int64",
"Hash128",
"Hash256",
"Amount",
"VL",
"Account",
void 0,
void 0,
void 0,
void 0,
void 0,
"Object",
"Array",
"Int8",
"Hash160",
"PathSet",
"Vector256"
];
const FIELDS_MAP = {
1: {
1: "LedgerEntryType",
2: "TransactionType",
3: "SignerWeight"
},
2: {
2: "Flags",
3: "SourceTag",
4: "Sequence",
5: "PreviousTxnLgrSeq",
6: "LedgerSequence",
7: "CloseTime",
8: "ParentCloseTime",
9: "SigningTime",
10: "Expiration",
11: "TransferRate",
12: "WalletSize",
13: "OwnerCount",
14: "DestinationTag",
15: "Timestamp",
16: "HighQualityIn",
17: "HighQualityOut",
18: "LowQualityIn",
19: "LowQualityOut",
20: "QualityIn",
21: "QualityOut",
22: "StampEscrow",
23: "BondAmount",
24: "LoadFee",
25: "OfferSequence",
26: "FirstLedgerSequence",
27: "LastLedgerSequence",
28: "TransactionIndex",
29: "OperationLimit",
30: "ReferenceFeeUnits",
31: "ReserveBase",
32: "ReserveIncrement",
33: "SetFlag",
34: "ClearFlag",
35: "RelationType",
36: "Method",
37: "AppType",
38: "SignerQuorum",
39: "Contracttype"
},
3: {
1: "IndexNext",
2: "IndexPrevious",
3: "BookNode",
4: "OwnerNode",
5: "BaseFee",
6: "ExchangeRate",
7: "LowNode",
8: "HighNode",
9: "OfferFeeRateNum",
10: "OfferFeeRateDen"
},
4: {
1: "EmailHash"
},
5: {
1: "LedgerHash",
2: "ParentHash",
3: "TransactionHash",
4: "AccountHash",
5: "PreviousTxnID",
6: "LedgerIndex",
7: "WalletLocator",
8: "RootIndex",
9: "AccountTxnID",
16: "BookDirectory",
17: "InvoiceID",
18: "Nickname",
19: "Amendment",
20: "TicketID"
},
6: {
1: "Amount",
2: "Balance",
3: "LimitAmount",
4: "TakerPays",
5: "TakerGets",
6: "LowLimit",
7: "HighLimit",
8: "Fee",
9: "SendMax",
16: "MinimumOffer",
17: "JingtumEscrow",
18: "DeliveredAmount"
},
7: {
1: "PublicKey",
2: "MessageKey",
3: "SigningPubKey",
4: "TxnSignature",
5: "Generator",
6: "Signature",
7: "Domain",
8: "FundCode",
9: "RemoveCode",
10: "ExpireCode",
11: "CreateCode",
12: "MemoType",
13: "MemoData",
14: "MemoFormat",
15: "Payload",
17: "ContractMethod",
18: "Parameter",
20: "MethodSignature"
},
8: {
1: "Account",
2: "Owner",
3: "Destination",
4: "Issuer",
7: "Target",
8: "RegularKey",
9: "FeeAccountID",
13: "Platform"
},
14: {
1: void 0,
2: "TransactionMetaData",
3: "CreatedNode",
4: "DeletedNode",
5: "ModifiedNode",
6: "PreviousFields",
7: "FinalFields",
8: "NewFields",
9: "TemplateEntry",
10: "Memo",
11: "Arg",
12: "SignerEntry",
13: "Signer"
},
15: {
1: void 0,
2: "SigningAccounts",
3: "TxnSignatures",
4: "Signatures",
5: "Template",
6: "Necessary",
7: "Sufficient",
8: "AffectedNodes",
9: "Memos",
10: "Args",
11: "SignerEntries",
12: "Signers"
},
16: {
1: "CloseResolution",
2: "TemplateEntryType",
3: "TransactionResult",
4: "ContractParamsType"
},
17: {
1: "TakerPaysCurrency",
2: "TakerPaysIssuer",
3: "TakerGetsCurrency",
4: "TakerGetsIssuer"
},
18: {
1: "Paths"
},
19: {
1: "Indexes",
2: "Hashes",
3: "Amendments"
}
};
const INVERSE_FIELDS_MAP = {
Flags: [2, 2],
LedgerEntryType: [1, 1],
TransactionType: [1, 2],
SignerWeight: [1, 3],
SourceTag: [2, 3],
Sequence: [2, 4],
PreviousTxnLgrSeq: [2, 5],
LedgerSequence: [2, 6],
CloseTime: [2, 7],
ParentCloseTime: [2, 8],
SigningTime: [2, 9],
Expiration: [2, 10],
TransferRate: [2, 11],
WalletSize: [2, 12],
OwnerCount: [2, 13],
DestinationTag: [2, 14],
Timestamp: [2, 15],
HighQualityIn: [2, 16],
HighQualityOut: [2, 17],
LowQualityIn: [2, 18],
LowQualityOut: [2, 19],
QualityIn: [2, 20],
QualityOut: [2, 21],
StampEscrow: [2, 22],
BondAmount: [2, 23],
LoadFee: [2, 24],
OfferSequence: [2, 25],
FirstLedgerSequence: [2, 26],
LastLedgerSequence: [2, 27],
TransactionIndex: [2, 28],
OperationLimit: [2, 29],
ReferenceFeeUnits: [2, 30],
ReserveBase: [2, 31],
ReserveIncrement: [2, 32],
SetFlag: [2, 33],
ClearFlag: [2, 34],
RelationType: [2, 35],
Method: [2, 36],
AppType: [2, 37],
SignerQuorum: [2, 38],
Contracttype: [2, 39],
IndexNext: [3, 1],
IndexPrevious: [3, 2],
BookNode: [3, 3],
OwnerNode: [3, 4],
BaseFee: [3, 5],
ExchangeRate: [3, 6],
LowNode: [3, 7],
HighNode: [3, 8],
OfferFeeRateNum: [3, 9],
OfferFeeRateDen: [3, 10],
EmailHash: [4, 1],
LedgerHash: [5, 1],
ParentHash: [5, 2],
TransactionHash: [5, 3],
AccountHash: [5, 4],
PreviousTxnID: [5, 5],
LedgerIndex: [5, 6],
WalletLocator: [5, 7],
RootIndex: [5, 8],
AccountTxnID: [5, 9],
BookDirectory: [5, 16],
InvoiceID: [5, 17],
Nickname: [5, 18],
Amendment: [5, 19],
TicketID: [5, 20],
Amount: [6, 1],
Balance: [6, 2],
LimitAmount: [6, 3],
TakerPays: [6, 4],
TakerGets: [6, 5],
LowLimit: [6, 6],
HighLimit: [6, 7],
Fee: [6, 8],
SendMax: [6, 9],
MinimumOffer: [6, 16],
JingtumEscrow: [6, 17],
DeliveredAmount: [6, 18],
PublicKey: [7, 1],
MessageKey: [7, 2],
SigningPubKey: [7, 3],
TxnSignature: [7, 4],
Generator: [7, 5],
Signature: [7, 6],
Domain: [7, 7],
FundCode: [7, 8],
RemoveCode: [7, 9],
ExpireCode: [7, 10],
CreateCode: [7, 11],
MemoType: [7, 12],
MemoData: [7, 13],
MemoFormat: [7, 14],
Payload: [7, 15],
ContractMethod: [7, 17],
Parameter: [7, 18],
MethodSignature: [7, 20],
Account: [8, 1],
Owner: [8, 2],
Destination: [8, 3],
Issuer: [8, 4],
Target: [8, 7],
RegularKey: [8, 8],
FeeAccountID: [8, 9],
Platform: [8, 13],
undefined: [15, 1],
TransactionMetaData: [14, 2],
CreatedNode: [14, 3],
DeletedNode: [14, 4],
ModifiedNode: [14, 5],
PreviousFields: [14, 6],
FinalFields: [14, 7],
NewFields: [14, 8],
TemplateEntry: [14, 9],
Memo: [14, 10],
Arg: [14, 11],
SignerEntry: [14, 12],
Signer: [14, 13],
SigningAccounts: [15, 2],
TxnSignatures: [15, 3],
Signatures: [15, 4],
Template: [15, 5],
Necessary: [15, 6],
Sufficient: [15, 7],
AffectedNodes: [15, 8],
Memos: [15, 9],
Args: [15, 10],
SignerEntries: [15, 11],
Signers: [15, 12],
CloseResolution: [16, 1],
TemplateEntryType: [16, 2],
TransactionResult: [16, 3],
ContractParamsType: [16, 4],
TakerPaysCurrency: [17, 1],
TakerPaysIssuer: [17, 2],
TakerGetsCurrency: [17, 3],
TakerGetsIssuer: [17, 4],
Paths: [18, 1],
Indexes: [19, 1],
Hashes: [19, 2],
Amendments: [19, 3]
};
const MIN_CURRENCY_LEN = 3;
const MAX_CURRENCY_LEN = 6;
const TUM_NAME_LEN = 40;
const AMOUNT_CONSTS = {
currency_one: 1,
currency_xns: 0,
xns_precision: 6,
bi_5: 5,
bi_7: 7,
bi_10: 10,
bi_1e14: 1e14,
bi_1e16: 1e16,
bi_1e17: 1e17,
bi_1e32: 1e32,
bi_man_max_value: 9999999999999999,
bi_man_min_value: 1e15,
bi_xns_max: 9e18,
bi_xns_min: -9e18,
bi_xns_unit: 1e6,
cMinOffset: -96,
cMaxOffset: 80,
max_value: "9999999999999999e80",
min_value: "-1000000000000000e-96"
};
export { REQUIRED, TRANSACTION_TYPES, LEDGER_ENTRY_TYPES, METADATA, TYPES_MAP, FIELDS_MAP, INVERSE_FIELDS_MAP, MIN_CURRENCY_LEN, MAX_CURRENCY_LEN, TUM_NAME_LEN, AMOUNT_CONSTS };
const allNumeric = (text) => {
const numbers = /^[0-9]+$/;
return Boolean(String(text).match(numbers));
};
const isFloat = (val) => {
const floatRegex = /^-?\d+(?:[.,]\d*?)?$/;
return Boolean(floatRegex.test(val) && !Number.isNaN(parseFloat(val)));
};
const isLetterNumer = (str) => {
const numbers = /^[0-9A-Z]+$/i;
return Boolean(String(str).match(numbers));
};
const isCurrency = (code) => {
return (typeof code === "string" &&
Boolean(code && code.length >= MIN_CURRENCY_LEN && code.length <= MAX_CURRENCY_LEN));
};
const isCustomTum = (code) => {
return isLetterNumer(code) && String(code).length === TUM_NAME_LEN;
};
const isTumCode = (code) => {
return typeof code === "string" && (isCurrency(code) || isCustomTum(code));
};
const isRelation = (str) => {
return typeof str === "string" && (str === "freeze" || str === "autorize");
};
export { allNumeric, isCustomTum, isRelation, isTumCode, isCurrency, isFloat, isLetterNumer };
const get_transaction_type = (structure) => {
let output;
switch (typeof structure) {
case "number":
switch (structure) {
case 0:
output = "Payment";
break;
case 3:
output = "AccountSet";
break;
case 5:
output = "SetRegularKey";
break;
case 7:
output = "OfferCreate";
break;
case 8:
output = "OfferCancel";
break;
case 9:
output = "Contract";
break;
case 10:
output = "RemoveContract";
break;
case 20:
output = "TrustSet";
break;
case 21:
output = "RelationSet";
break;
case 22:
output = "RelationDel";
break;
case 30:
output = "ConfigContract";
break;
case 100:
output = "EnableFeature";
break;
case 101:
output = "SetFee";
break;
case 205:
output = "Brokerage";
break;
default:
throw new Error("Invalid transaction type!");
}
break;
case "string":
switch (structure) {
case "Payment":
output = 0;
break;
case "AccountSet":
output = 3;
break;
case "SetRegularKey":
output = 5;
break;
case "OfferCreate":
output = 7;
break;
case "OfferCancel":
output = 8;
break;
case "Contract":
output = 9;
break;
case "RemoveContract":
output = 10;
break;
case "TrustSet":
output = 20;
break;
case "RelationSet":
output = 21;
break;
case "RelationDel":
output = 22;
break;
case "ConfigContract":
output = 30;
break;
case "EnableFeature":
output = 100;
break;
case "SetFee":
output = 101;
break;
case "Brokerage":
output = 205;
break;
default:
throw new Error("Invalid transaction type!");
}
break;
default:
throw new Error("Invalid input type for transaction type!");
}
return output;
};
const get_transaction_result = (structure) => {
let output;
switch (typeof structure) {
case "number":
switch (structure) {
case 0:
output = "tesSUCCESS";
break;
case 100:
output = "tecCLAIM";
break;
case 101:
output = "tecPATH_PARTIAL";
break;
case 102:
output = "tecUNFUNDED_ADD";
break;
case 103:
output = "tecUNFUNDED_OFFER";
break;
case 104:
output = "tecUNFUNDED_PAYMENT";
break;
case 105:
output = "tecFAILED_PROCESSING";
break;
case 121:
output = "tecDIR_FULL";
break;
case 122:
output = "tecINSUF_RESERVE_LINE";
break;
case 141:
output = "tecINSUFFICIENT_RESERVE";
break;
default:
throw new Error("Invalid transaction result!");
}
break;
case "string":
switch (structure) {
case "tesSUCCESS":
output = 0;
break;
case "tecCLAIM":
output = 100;
break;
case "tecPATH_PARTIAL":
output = 101;
break;
case "tecUNFUNDED_ADD":
output = 102;
break;
case "tecUNFUNDED_OFFER":
output = 103;
break;
case "tecUNFUNDED_PAYMENT":
output = 104;
break;
case "tecFAILED_PROCESSING":
output = 105;
break;
case "tecDIR_FULL":
output = 121;
break;
case "tecINSUF_RESERVE_LINE":
output = 122;
break;
case "tecINSUFFICIENT_RESERVE":
output = 141;
break;
default:
throw new Error("Invalid transaction result!");
}
break;
default:
throw new Error("Invalid input type for transaction result!");
}
return output;
};
const get_ledger_entry_type = (structure) => {
let output;
switch (typeof structure) {
case "number":
switch (structure) {
case 97:
output = "AccountRoot";
break;
case 99:
output = "Contract";
break;
case 100:
output = "DirectoryNode";
break;
case 102:
output = "EnabledFeatures";
break;
case 115:
output = "FeeSettings";
break;
case 103:
output = "GeneratorMap";
break;
case 104:
output = "LedgerHashes";
break;
case 110:
output = "Nickname";
break;
case 111:
output = "Offer";
break;
case 114:
output = "SkywellState";
break;
default:
throw new Error("Invalid input type for ransaction result!");
}
break;
case "string":
switch (structure) {
case "AccountRoot":
output = 97;
break;
case "Contract":
output = 99;
break;
case "DirectoryNode":
output = 100;
break;
case "EnabledFeatures":
output = 102;
break;
case "FeeSettings":
output = 115;
break;
case "GeneratorMap":
output = 103;
break;
case "LedgerHashes":
output = 104;
break;
case "Nickname":
output = 110;
break;
case "Offer":
output = 111;
break;
case "SkywellState":
output = 114;
break;
default:
output = 0;
}
break;
default:
output = "UndefinedLedgerEntry";
}
return output;
};
const get_dec_from_hexchar = (in_char) => {
if (in_char.length > 1) {
return 0;
}
const asc_code = in_char.charCodeAt(0);
if (asc_code > 48 && asc_code < 58) {
return asc_code - 48;
}
else if (asc_code > 64 && asc_code < 91) {
return asc_code - 55;
}
else if (asc_code > 96 && asc_code < 123) {
return asc_code - 87;
}
return 0;
};
const hex_str_to_byte_array = (in_str) => {
let i;
const out = [];
const str = in_str.replace(/\s|0x/g, "");
for (i = 0; i < str.length; i += 2) {
if (i + 1 === str.length) {
out.push(get_dec_from_hexchar(str.charAt(i)) * 16);
}
else {
out.push(get_dec_from_hexchar(str.charAt(i)) * 16 +
get_dec_from_hexchar(str.charAt(i + 1)));
}
}
return out;
};
const get_char_from_num = (in_num) => {
if (in_num >= 0 && in_num < 10) {
return in_num + 48;
}
if (in_num >= 10 && in_num < 16) {
return in_num + 55;
}
};
const readAndSum = (so, bytes) => {
let sum = 0;
if (bytes > 4) {
throw new Error("This function only supports up to four bytes.");
}
for (let i = 0; i < bytes; i++) {
const byte = so.read(1)[0];
sum += byte << (8 * (bytes - i - 1));
}
return sum >>> 0;
};
const isNumber = val => {
return typeof val === "number" && isFinite(val);
};
const convertIntegerToByteArray = (val, bytes) => {
if (!isNumber(val)) {
throw new Error("Value is not a number " + bytes);
}
if (val < 0 || val >= Math.pow(256, bytes)) {
throw new Error("Value out of bounds");
}
const newBytes = [];
for (let i = 0; i < bytes; i++) {
newBytes.unshift((val >>> (i * 8)) & 0xff);
}
return newBytes;
};
const convertStringToHex = in_str => {
const str = unescape(encodeURIComponent(in_str));
let out_str = "";
let i;
for (i = 0; i < str.length; i++) {
out_str += (" 00" + Number(str.charCodeAt(i)).toString(16)).substr(-2);
}
return out_str.toUpperCase();
};
const convertHexToString = hexString => {
let out_str = "";
let i;
for (i = 0; i < hexString.length; i += 2) {
const tmp = "0x" + hexString.slice(i, i + 2);
out_str += String.fromCharCode(parseInt(tmp, 16));
}
return decodeURIComponent(escape(out_str));
};
const sort_fields = keys => {
function sort_field_compare(a, b) {
const a_field_coordinates = INVERSE_FIELDS_MAP[a];
const a_type_bits = a_field_coordinates[0];
const a_field_bits = a_field_coordinates[1];
const b_field_coordinates = INVERSE_FIELDS_MAP[b];
const b_type_bits = b_field_coordinates[0];
const b_field_bits = b_field_coordinates[1];
return a_type_bits !== b_type_bits
? a_type_bits - b_type_bits
: a_field_bits - b_field_bits;
}
return keys.sort(sort_field_compare);
};
const isString = (val) => {
return typeof val === "string";
};
const convertByteArrayToHex = byte_array => {
return byte_array
.map(byteValue => {
const hex = byteValue.toString(16).toUpperCase();
return hex.length > 1 ? hex : "0" + hex;
})
.join("");
};
const isHexInt64String = val => {
return isString(val) && /^[0-9A-F]{0,16}$/i.test(val);
};
const isHexHASH256String = val => {
return isString(val) && /^[0-9A-F]{0,64}$/i.test(val);
};
export { convertByteArrayToHex, convertIntegerToByteArray, convertHexToString, convertStringToHex, get_char_from_num, get_dec_from_hexchar, get_transaction_type, get_transaction_result, get_ledger_entry_type, hex_str_to_byte_array, isHexInt64String, isHexHASH256String, isNumber, isString, readAndSum, sort_fields };
//# sourceMappingURL=serializer.js.map