@meshsdk/core-csl 1.6.0-alpha.1

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.
Files changed (74) hide show
  1. package/README.md +9 -0
  2. package/dist/cjs/core/builder.d.ts +38 -0
  3. package/dist/cjs/core/builder.js +389 -0
  4. package/dist/cjs/core/index.d.ts +1 -0
  5. package/dist/cjs/core/index.js +17 -0
  6. package/dist/cjs/deser/builder.d.ts +18 -0
  7. package/dist/cjs/deser/builder.js +130 -0
  8. package/dist/cjs/deser/constants.d.ts +12 -0
  9. package/dist/cjs/deser/constants.js +15 -0
  10. package/dist/cjs/deser/converter.d.ts +27 -0
  11. package/dist/cjs/deser/converter.js +352 -0
  12. package/dist/cjs/deser/csl.d.ts +1 -0
  13. package/dist/cjs/deser/csl.js +27 -0
  14. package/dist/cjs/deser/deserializer.d.ts +19 -0
  15. package/dist/cjs/deser/deserializer.js +40 -0
  16. package/dist/cjs/deser/index.d.ts +6 -0
  17. package/dist/cjs/deser/index.js +22 -0
  18. package/dist/cjs/deser/types.d.ts +146 -0
  19. package/dist/cjs/deser/types.js +2 -0
  20. package/dist/cjs/index.d.ts +3 -0
  21. package/dist/cjs/index.js +19 -0
  22. package/dist/cjs/utils/address.d.ts +12 -0
  23. package/dist/cjs/utils/address.js +60 -0
  24. package/dist/cjs/utils/aiken.d.ts +2 -0
  25. package/dist/cjs/utils/aiken.js +20 -0
  26. package/dist/cjs/utils/credentials.d.ts +1 -0
  27. package/dist/cjs/utils/credentials.js +10 -0
  28. package/dist/cjs/utils/datum.d.ts +4 -0
  29. package/dist/cjs/utils/datum.js +18 -0
  30. package/dist/cjs/utils/index.d.ts +7 -0
  31. package/dist/cjs/utils/index.js +23 -0
  32. package/dist/cjs/utils/scripts.d.ts +1 -0
  33. package/dist/cjs/utils/scripts.js +6 -0
  34. package/dist/cjs/utils/staking.d.ts +3 -0
  35. package/dist/cjs/utils/staking.js +25 -0
  36. package/dist/cjs/utils/transaction.d.ts +2 -0
  37. package/dist/cjs/utils/transaction.js +15 -0
  38. package/dist/mjs/core/builder.d.ts +38 -0
  39. package/dist/mjs/core/builder.js +380 -0
  40. package/dist/mjs/core/index.d.ts +1 -0
  41. package/dist/mjs/core/index.js +1 -0
  42. package/dist/mjs/deser/builder.d.ts +18 -0
  43. package/dist/mjs/deser/builder.js +118 -0
  44. package/dist/mjs/deser/constants.d.ts +12 -0
  45. package/dist/mjs/deser/constants.js +12 -0
  46. package/dist/mjs/deser/converter.d.ts +27 -0
  47. package/dist/mjs/deser/converter.js +321 -0
  48. package/dist/mjs/deser/csl.d.ts +1 -0
  49. package/dist/mjs/deser/csl.js +1 -0
  50. package/dist/mjs/deser/deserializer.d.ts +19 -0
  51. package/dist/mjs/deser/deserializer.js +20 -0
  52. package/dist/mjs/deser/index.d.ts +6 -0
  53. package/dist/mjs/deser/index.js +6 -0
  54. package/dist/mjs/deser/types.d.ts +146 -0
  55. package/dist/mjs/deser/types.js +1 -0
  56. package/dist/mjs/index.d.ts +3 -0
  57. package/dist/mjs/index.js +3 -0
  58. package/dist/mjs/utils/address.d.ts +12 -0
  59. package/dist/mjs/utils/address.js +50 -0
  60. package/dist/mjs/utils/aiken.d.ts +2 -0
  61. package/dist/mjs/utils/aiken.js +15 -0
  62. package/dist/mjs/utils/credentials.d.ts +1 -0
  63. package/dist/mjs/utils/credentials.js +6 -0
  64. package/dist/mjs/utils/datum.d.ts +4 -0
  65. package/dist/mjs/utils/datum.js +13 -0
  66. package/dist/mjs/utils/index.d.ts +7 -0
  67. package/dist/mjs/utils/index.js +7 -0
  68. package/dist/mjs/utils/scripts.d.ts +1 -0
  69. package/dist/mjs/utils/scripts.js +2 -0
  70. package/dist/mjs/utils/staking.d.ts +3 -0
  71. package/dist/mjs/utils/staking.js +18 -0
  72. package/dist/mjs/utils/transaction.d.ts +2 -0
  73. package/dist/mjs/utils/transaction.js +10 -0
  74. package/package.json +53 -0
@@ -0,0 +1,321 @@
1
+ // import { POLICY_ID_LENGTH } from '@meshsdk/core';
2
+ import { csl } from './csl';
3
+ import { LANGUAGE_VERSIONS, REDEEMER_TAGS, POLICY_ID_LENGTH } from './constants';
4
+ import { deserializeDataHash, deserializeEd25519KeyHash, deserializePlutusData, deserializePlutusScript, deserializeScriptHash, deserializeScriptRef, deserializeTxHash, } from './deserializer';
5
+ /* -----------------[ Address ]----------------- */
6
+ export const toAddress = (bech32) => csl.Address.from_bech32(bech32);
7
+ export const toBaseAddress = (bech32) => csl.BaseAddress.from_address(toAddress(bech32));
8
+ export const toEnterpriseAddress = (bech32) => csl.EnterpriseAddress.from_address(toAddress(bech32));
9
+ export const toRewardAddress = (bech32) => csl.RewardAddress.from_address(toAddress(bech32));
10
+ /* -----------------[ Bytes ]----------------- */
11
+ export const fromBytes = (bytes) => Buffer.from(bytes).toString('hex');
12
+ export const toBytes = (hex) => {
13
+ if (hex.length % 2 === 0 && /^[0-9A-F]*$/i.test(hex))
14
+ return Buffer.from(hex, 'hex');
15
+ return Buffer.from(hex, 'utf-8');
16
+ };
17
+ /* -----------------[ Lovelace ]----------------- */
18
+ export const fromLovelace = (lovelace) => lovelace / 1_000_000;
19
+ export const toLovelace = (ada) => ada * 1_000_000;
20
+ /* -----------------[ NativeScript ]----------------- */
21
+ export const fromNativeScript = (script) => {
22
+ const fromNativeScripts = (scripts) => {
23
+ const nativeScripts = new Array();
24
+ for (let index = 0; index < scripts.len(); index += 1) {
25
+ nativeScripts.push(fromNativeScript(scripts.get(index)));
26
+ }
27
+ return nativeScripts;
28
+ };
29
+ switch (script.kind()) {
30
+ case csl.NativeScriptKind.ScriptAll: {
31
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
32
+ const scriptAll = script.as_script_all();
33
+ return {
34
+ type: 'all',
35
+ scripts: fromNativeScripts(scriptAll.native_scripts()),
36
+ };
37
+ }
38
+ case csl.NativeScriptKind.ScriptAny: {
39
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
40
+ const scriptAny = script.as_script_any();
41
+ return {
42
+ type: 'any',
43
+ scripts: fromNativeScripts(scriptAny.native_scripts()),
44
+ };
45
+ }
46
+ case csl.NativeScriptKind.ScriptNOfK: {
47
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
48
+ const scriptNOfK = script.as_script_n_of_k();
49
+ return {
50
+ type: 'atLeast',
51
+ required: scriptNOfK.n(),
52
+ scripts: fromNativeScripts(scriptNOfK.native_scripts()),
53
+ };
54
+ }
55
+ case csl.NativeScriptKind.TimelockStart: {
56
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
57
+ const timelockStart = script.as_timelock_start();
58
+ return {
59
+ type: 'after',
60
+ slot: timelockStart.slot_bignum().to_str(),
61
+ };
62
+ }
63
+ case csl.NativeScriptKind.TimelockExpiry: {
64
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
65
+ const timelockExpiry = script.as_timelock_expiry();
66
+ return {
67
+ type: 'before',
68
+ slot: timelockExpiry.slot_bignum().to_str(),
69
+ };
70
+ }
71
+ case csl.NativeScriptKind.ScriptPubkey: {
72
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
73
+ const scriptPubkey = script.as_script_pubkey();
74
+ return {
75
+ type: 'sig',
76
+ keyHash: scriptPubkey.addr_keyhash().to_hex(),
77
+ };
78
+ }
79
+ default:
80
+ throw new Error(`Script Kind: ${script.kind()}, is not supported`);
81
+ }
82
+ };
83
+ export const toNativeScript = (script) => {
84
+ const toNativeScripts = (scripts) => {
85
+ const nativeScripts = csl.NativeScripts.new();
86
+ scripts.forEach((scriptItem) => {
87
+ nativeScripts.add(toNativeScript(scriptItem));
88
+ });
89
+ return nativeScripts;
90
+ };
91
+ switch (script.type) {
92
+ case 'all':
93
+ return csl.NativeScript.new_script_all(csl.ScriptAll.new(toNativeScripts(script.scripts)));
94
+ case 'any':
95
+ return csl.NativeScript.new_script_any(csl.ScriptAny.new(toNativeScripts(script.scripts)));
96
+ case 'atLeast':
97
+ return csl.NativeScript.new_script_n_of_k(csl.ScriptNOfK.new(script.required, toNativeScripts(script.scripts)));
98
+ case 'after':
99
+ return csl.NativeScript.new_timelock_start(csl.TimelockStart.new_timelockstart(csl.BigNum.from_str(script.slot)));
100
+ case 'before':
101
+ return csl.NativeScript.new_timelock_expiry(csl.TimelockExpiry.new_timelockexpiry(csl.BigNum.from_str(script.slot)));
102
+ case 'sig':
103
+ return csl.NativeScript.new_script_pubkey(csl.ScriptPubkey.new(deserializeEd25519KeyHash(script.keyHash)));
104
+ }
105
+ };
106
+ /* -----------------[ PlutusData ]----------------- */
107
+ export const fromPlutusData = (plutusData) => {
108
+ const fromPlutusList = (plutusList) => {
109
+ const dataList = [];
110
+ for (let index = 0; index < plutusList.len(); index += 1) {
111
+ dataList.push(fromPlutusData(plutusList.get(index)));
112
+ }
113
+ return dataList;
114
+ };
115
+ const fromPlutusMap = (plutusMap) => {
116
+ const dataMap = new Map();
117
+ for (let index = 0; index < plutusMap.len(); index += 1) {
118
+ const key = plutusMap.keys().get(index);
119
+ const value = plutusMap.get(key) ??
120
+ csl.PlutusData.from_hex(fromUTF8('NO_ITEM_FOUND_INSIDE_GOLD_ROOM'));
121
+ dataMap.set(fromPlutusData(key), fromPlutusData(value));
122
+ }
123
+ return dataMap;
124
+ };
125
+ switch (plutusData.kind()) {
126
+ case csl.PlutusDataKind.Bytes:
127
+ return fromBytes(plutusData.as_bytes() ?? new Uint8Array());
128
+ case csl.PlutusDataKind.Integer:
129
+ return parseInt(plutusData.as_integer()?.to_str() ?? '0', 10);
130
+ case csl.PlutusDataKind.List:
131
+ return fromPlutusList(plutusData.as_list() ?? csl.PlutusList.new());
132
+ case csl.PlutusDataKind.Map:
133
+ return fromPlutusMap(plutusData.as_map() ?? csl.PlutusMap.new());
134
+ case csl.PlutusDataKind.ConstrPlutusData:
135
+ return {
136
+ alternative: parseInt(plutusData.as_constr_plutus_data()?.alternative().to_str() ?? '0', 10),
137
+ fields: fromPlutusList(plutusData.as_constr_plutus_data()?.data() ?? csl.PlutusList.new()),
138
+ };
139
+ default:
140
+ throw new Error(`PlutusData Kind: ${plutusData.kind()}, is not supported`);
141
+ }
142
+ };
143
+ export const toPlutusData = (data) => {
144
+ const toPlutusList = (dataArray) => {
145
+ const plutusList = csl.PlutusList.new();
146
+ dataArray.forEach((element) => {
147
+ plutusList.add(toPlutusData(element));
148
+ });
149
+ return plutusList;
150
+ };
151
+ switch (typeof data) {
152
+ case 'string':
153
+ return csl.PlutusData.new_bytes(toBytes(data));
154
+ case 'number':
155
+ return csl.PlutusData.new_integer(csl.BigInt.from_str(data.toString()));
156
+ case 'bigint':
157
+ return csl.PlutusData.new_integer(csl.BigInt.from_str(data.toString()));
158
+ case 'object':
159
+ if (data instanceof Array) {
160
+ const plutusList = toPlutusList(data);
161
+ return csl.PlutusData.new_list(plutusList);
162
+ }
163
+ if (data instanceof Map) {
164
+ const plutusMap = csl.PlutusMap.new();
165
+ data.forEach((value, key) => {
166
+ plutusMap.insert(toPlutusData(key), toPlutusData(value));
167
+ });
168
+ return csl.PlutusData.new_map(plutusMap);
169
+ }
170
+ return csl.PlutusData.new_constr_plutus_data(csl.ConstrPlutusData.new(csl.BigNum.from_str(data.alternative.toString()), toPlutusList(data.fields)));
171
+ }
172
+ };
173
+ /* -----------------[ PoolParams ]----------------- */
174
+ export const toPoolParams = (params) => {
175
+ const relays = csl.Relays.new();
176
+ params.relays.forEach((relay) => {
177
+ relays.add(toRelay(relay));
178
+ });
179
+ throw new Error('toPoolParams not implemented.');
180
+ };
181
+ /* -----------------[ Redeemer ]----------------- */
182
+ export const toRedeemer = (action) => {
183
+ const lookupRedeemerTag = (key) => REDEEMER_TAGS[key];
184
+ return csl.Redeemer.new(lookupRedeemerTag(action.tag), csl.BigNum.from_str(action.index.toString()), toPlutusData(action.data), csl.ExUnits.new(csl.BigNum.from_str(action.budget.mem.toString()), csl.BigNum.from_str(action.budget.steps.toString())));
185
+ };
186
+ /* -----------------[ Relay ]----------------- */
187
+ export const toRelay = (relay) => {
188
+ switch (relay.type) {
189
+ case 'SingleHostAddr': {
190
+ const IPV4 = relay.IPV4
191
+ ? csl.Ipv4.new(new Uint8Array(relay.IPV4.split('.').map((b) => parseInt(b))))
192
+ : undefined;
193
+ const IPV6 = relay.IPV6
194
+ ? csl.Ipv6.new(toBytes(relay.IPV6.replaceAll(':', '')))
195
+ : undefined;
196
+ return csl.Relay.new_single_host_addr(csl.SingleHostAddr.new(relay.port, IPV4, IPV6));
197
+ }
198
+ case 'SingleHostName':
199
+ return csl.Relay.new_single_host_name(csl.SingleHostName.new(relay.port, csl.DNSRecordAorAAAA.new(relay.domainName)));
200
+ case 'MultiHostName':
201
+ return csl.Relay.new_multi_host_name(csl.MultiHostName.new(csl.DNSRecordSRV.new(relay.domainName)));
202
+ }
203
+ };
204
+ /* -----------------[ ScriptRef ]----------------- */
205
+ export const fromScriptRef = (scriptRef) => {
206
+ if (scriptRef.is_plutus_script()) {
207
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
208
+ const plutusScript = scriptRef.plutus_script();
209
+ return {
210
+ code: plutusScript.to_hex(),
211
+ version: Object.keys(LANGUAGE_VERSIONS).find((key) => LANGUAGE_VERSIONS[key].to_hex() ===
212
+ plutusScript.language_version().to_hex()),
213
+ };
214
+ }
215
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
216
+ const nativeScript = scriptRef.native_script();
217
+ return fromNativeScript(nativeScript);
218
+ };
219
+ export const toScriptRef = (script) => {
220
+ if ('code' in script) {
221
+ const plutusScript = deserializePlutusScript(script.code, script.version);
222
+ return csl.ScriptRef.new_plutus_script(plutusScript);
223
+ }
224
+ return csl.ScriptRef.new_native_script(toNativeScript(script));
225
+ };
226
+ /* -----------------[ TransactionUnspentOutput ]----------------- */
227
+ export const fromTxUnspentOutput = (txUnspentOutput) => {
228
+ const dataHash = txUnspentOutput.output().has_data_hash()
229
+ ? txUnspentOutput.output().data_hash()?.to_hex()
230
+ : undefined;
231
+ const plutusData = txUnspentOutput.output().has_plutus_data()
232
+ ? txUnspentOutput.output().plutus_data()?.to_hex()
233
+ : undefined;
234
+ const scriptRef = txUnspentOutput.output().has_script_ref()
235
+ ? txUnspentOutput.output().script_ref()?.to_hex()
236
+ : undefined;
237
+ return {
238
+ input: {
239
+ outputIndex: txUnspentOutput.input().index(),
240
+ txHash: txUnspentOutput.input().transaction_id().to_hex(),
241
+ },
242
+ output: {
243
+ address: txUnspentOutput.output().address().to_bech32(),
244
+ amount: fromValue(txUnspentOutput.output().amount()),
245
+ dataHash,
246
+ plutusData,
247
+ scriptRef,
248
+ },
249
+ };
250
+ };
251
+ export const toTxUnspentOutput = (utxo) => {
252
+ const txInput = csl.TransactionInput.new(deserializeTxHash(utxo.input.txHash), utxo.input.outputIndex);
253
+ const txOutput = csl.TransactionOutput.new(toAddress(utxo.output.address), toValue(utxo.output.amount));
254
+ if (utxo.output.dataHash !== undefined) {
255
+ txOutput.set_data_hash(deserializeDataHash(utxo.output.dataHash));
256
+ }
257
+ if (utxo.output.plutusData !== undefined) {
258
+ txOutput.set_plutus_data(deserializePlutusData(utxo.output.plutusData));
259
+ }
260
+ if (utxo.output.scriptRef !== undefined) {
261
+ txOutput.set_script_ref(deserializeScriptRef(utxo.output.scriptRef));
262
+ }
263
+ return csl.TransactionUnspentOutput.new(txInput, txOutput);
264
+ };
265
+ /* -----------------[ UnitInterval ]----------------- */
266
+ export const toUnitInterval = (float) => {
267
+ const decimal = float.split('.')[1] ?? '0';
268
+ const numerator = `${parseInt(decimal, 10)}`;
269
+ const denominator = `1${'0'.repeat(decimal.length)}`;
270
+ return csl.UnitInterval.new(csl.BigNum.from_str(numerator), csl.BigNum.from_str(denominator));
271
+ };
272
+ /* -----------------[ UTF-8 ]----------------- */
273
+ export const fromUTF8 = (utf8) => {
274
+ if (utf8.length % 2 === 0 && /^[0-9A-F]*$/i.test(utf8))
275
+ return utf8;
276
+ return fromBytes(Buffer.from(utf8, 'utf-8'));
277
+ };
278
+ export const toUTF8 = (hex) => Buffer.from(hex, 'hex').toString('utf-8');
279
+ /* -----------------[ Value ]----------------- */
280
+ export const fromValue = (value) => {
281
+ const assets = [{ unit: 'lovelace', quantity: value.coin().to_str() }];
282
+ const multiAsset = value.multiasset();
283
+ if (multiAsset !== undefined) {
284
+ const policies = multiAsset.keys();
285
+ for (let i = 0; i < policies.len(); i += 1) {
286
+ const policyId = policies.get(i);
287
+ const policyAssets = multiAsset.get(policyId);
288
+ if (policyAssets !== undefined) {
289
+ const policyAssetNames = policyAssets.keys();
290
+ for (let j = 0; j < policyAssetNames.len(); j += 1) {
291
+ const assetName = policyAssetNames.get(j);
292
+ const quantity = policyAssets.get(assetName) ?? csl.BigNum.from_str('0');
293
+ const assetId = policyId.to_hex() + fromBytes(assetName.name());
294
+ assets.push({ unit: assetId, quantity: quantity.to_str() });
295
+ }
296
+ }
297
+ }
298
+ }
299
+ return assets;
300
+ };
301
+ export const toValue = (assets) => {
302
+ const lovelace = assets.find((asset) => asset.unit === 'lovelace');
303
+ const policies = Array.from(new Set(assets
304
+ .filter((asset) => asset.unit !== 'lovelace')
305
+ .map((asset) => asset.unit.slice(0, POLICY_ID_LENGTH))));
306
+ const multiAsset = csl.MultiAsset.new();
307
+ policies.forEach((policyId) => {
308
+ const policyAssets = csl.Assets.new();
309
+ assets
310
+ .filter((asset) => asset.unit.slice(0, POLICY_ID_LENGTH) === policyId)
311
+ .forEach((asset) => {
312
+ policyAssets.insert(csl.AssetName.new(toBytes(asset.unit.slice(POLICY_ID_LENGTH))), csl.BigNum.from_str(asset.quantity));
313
+ });
314
+ multiAsset.insert(deserializeScriptHash(policyId), policyAssets);
315
+ });
316
+ const value = csl.Value.new(csl.BigNum.from_str(lovelace ? lovelace.quantity : '0'));
317
+ if (assets.length > 1 || !lovelace) {
318
+ value.set_multiasset(multiAsset);
319
+ }
320
+ return value;
321
+ };
@@ -0,0 +1 @@
1
+ export * as csl from '@sidan-lab/sidan-csl-rs-nodejs';
@@ -0,0 +1 @@
1
+ export * as csl from '@sidan-lab/sidan-csl-rs-nodejs';
@@ -0,0 +1,19 @@
1
+ import { LanguageVersion } from '@meshsdk/core';
2
+ import { csl } from './csl';
3
+ export declare const deserializeAddress: (address: string) => csl.Address;
4
+ export declare const deserializeBip32PrivateKey: (bip32PrivateKey: string) => csl.Bip32PrivateKey;
5
+ export declare const deserializeDataHash: (dataHash: string) => csl.DataHash;
6
+ export declare const deserializeEd25519KeyHash: (ed25519KeyHash: string) => csl.Ed25519KeyHash;
7
+ export declare const deserializeEd25519Signature: (ed25519Signature: string) => csl.Ed25519Signature;
8
+ export declare const deserializeNativeScript: (nativeScript: string) => csl.NativeScript;
9
+ export declare const deserializePublicKey: (publicKey: string) => csl.PublicKey;
10
+ export declare const deserializePlutusData: (plutusData: string) => csl.PlutusData;
11
+ export declare const deserializePlutusScript: (plutusScript: string, version: LanguageVersion) => csl.PlutusScript;
12
+ export declare const deserializeScriptRef: (scriptRef: string) => csl.ScriptRef;
13
+ export declare const deserializeScriptHash: (scriptHash: string) => csl.ScriptHash;
14
+ export declare const deserializeTx: (tx: string) => csl.Transaction;
15
+ export declare const deserializeTxBody: (txBody: string) => csl.TransactionBody;
16
+ export declare const deserializeTxHash: (txHash: string) => csl.TransactionHash;
17
+ export declare const deserializeTxUnspentOutput: (txUnspentOutput: string) => csl.TransactionUnspentOutput;
18
+ export declare const deserializeTxWitnessSet: (txWitnessSet: string) => csl.TransactionWitnessSet;
19
+ export declare const deserializeValue: (value: string) => csl.Value;
@@ -0,0 +1,20 @@
1
+ import { LANGUAGE_VERSIONS } from './constants';
2
+ import { csl } from './csl';
3
+ import { toBytes } from './converter';
4
+ export const deserializeAddress = (address) => csl.Address.from_bytes(toBytes(address));
5
+ export const deserializeBip32PrivateKey = (bip32PrivateKey) => csl.Bip32PrivateKey.from_bytes(toBytes(bip32PrivateKey));
6
+ export const deserializeDataHash = (dataHash) => csl.DataHash.from_bytes(toBytes(dataHash));
7
+ export const deserializeEd25519KeyHash = (ed25519KeyHash) => csl.Ed25519KeyHash.from_bytes(toBytes(ed25519KeyHash));
8
+ export const deserializeEd25519Signature = (ed25519Signature) => csl.Ed25519Signature.from_bytes(toBytes(ed25519Signature));
9
+ export const deserializeNativeScript = (nativeScript) => csl.NativeScript.from_bytes(toBytes(nativeScript));
10
+ export const deserializePublicKey = (publicKey) => csl.PublicKey.from_bytes(toBytes(publicKey));
11
+ export const deserializePlutusData = (plutusData) => csl.PlutusData.from_bytes(toBytes(plutusData));
12
+ export const deserializePlutusScript = (plutusScript, version) => csl.PlutusScript.from_bytes_with_version(toBytes(plutusScript), LANGUAGE_VERSIONS[version]);
13
+ export const deserializeScriptRef = (scriptRef) => csl.ScriptRef.from_bytes(toBytes(scriptRef));
14
+ export const deserializeScriptHash = (scriptHash) => csl.ScriptHash.from_bytes(toBytes(scriptHash));
15
+ export const deserializeTx = (tx) => csl.Transaction.from_bytes(toBytes(tx));
16
+ export const deserializeTxBody = (txBody) => csl.TransactionBody.from_bytes(toBytes(txBody));
17
+ export const deserializeTxHash = (txHash) => csl.TransactionHash.from_bytes(toBytes(txHash));
18
+ export const deserializeTxUnspentOutput = (txUnspentOutput) => csl.TransactionUnspentOutput.from_bytes(toBytes(txUnspentOutput));
19
+ export const deserializeTxWitnessSet = (txWitnessSet) => csl.TransactionWitnessSet.from_bytes(toBytes(txWitnessSet));
20
+ export const deserializeValue = (value) => csl.Value.from_bytes(toBytes(value));
@@ -0,0 +1,6 @@
1
+ export * from './types';
2
+ export * from './deserializer';
3
+ export * from './converter';
4
+ export * from './csl';
5
+ export * from './constants';
6
+ export * from './builder';
@@ -0,0 +1,6 @@
1
+ export * from './types';
2
+ export * from './deserializer';
3
+ export * from './converter';
4
+ export * from './csl';
5
+ export * from './constants';
6
+ export * from './builder';
@@ -0,0 +1,146 @@
1
+ import { csl } from './csl';
2
+ export type Address = InstanceType<typeof csl.Address>;
3
+ export type AssetName = InstanceType<typeof csl.AssetName>;
4
+ export type AssetNames = InstanceType<typeof csl.AssetNames>;
5
+ export type Assets = InstanceType<typeof csl.Assets>;
6
+ export type AuxiliaryData = InstanceType<typeof csl.AuxiliaryData>;
7
+ export type AuxiliaryDataHash = InstanceType<typeof csl.AuxiliaryDataHash>;
8
+ export type AuxiliaryDataSet = InstanceType<typeof csl.AuxiliaryDataSet>;
9
+ export type BaseAddress = InstanceType<typeof csl.BaseAddress>;
10
+ export type BigInt = InstanceType<typeof csl.BigInt>;
11
+ export type BigNum = InstanceType<typeof csl.BigNum>;
12
+ export type Bip32PrivateKey = InstanceType<typeof csl.Bip32PrivateKey>;
13
+ export type Bip32PublicKey = InstanceType<typeof csl.Bip32PublicKey>;
14
+ export type Block = InstanceType<typeof csl.Block>;
15
+ export type BlockHash = InstanceType<typeof csl.BlockHash>;
16
+ export type BootstrapWitness = InstanceType<typeof csl.BootstrapWitness>;
17
+ export type BootstrapWitnesses = InstanceType<typeof csl.BootstrapWitnesses>;
18
+ export type ByronAddress = InstanceType<typeof csl.ByronAddress>;
19
+ export type Certificate = InstanceType<typeof csl.Certificate>;
20
+ export type Certificates = InstanceType<typeof csl.Certificates>;
21
+ export type ConstrPlutusData = InstanceType<typeof csl.ConstrPlutusData>;
22
+ export type CostModel = InstanceType<typeof csl.CostModel>;
23
+ export type Costmdls = InstanceType<typeof csl.Costmdls>;
24
+ export type DNSRecordAorAAAA = InstanceType<typeof csl.DNSRecordAorAAAA>;
25
+ export type DNSRecordSRV = InstanceType<typeof csl.DNSRecordSRV>;
26
+ export type DataCost = InstanceType<typeof csl.DataCost>;
27
+ export type DataHash = InstanceType<typeof csl.DataHash>;
28
+ export type DatumSource = InstanceType<typeof csl.DatumSource>;
29
+ export type Ed25519KeyHash = InstanceType<typeof csl.Ed25519KeyHash>;
30
+ export type Ed25519KeyHashes = InstanceType<typeof csl.Ed25519KeyHashes>;
31
+ export type Ed25519Signature = InstanceType<typeof csl.Ed25519Signature>;
32
+ export type EnterpriseAddress = InstanceType<typeof csl.EnterpriseAddress>;
33
+ export type ExUnitPrices = InstanceType<typeof csl.ExUnitPrices>;
34
+ export type ExUnits = InstanceType<typeof csl.ExUnits>;
35
+ export type GeneralTransactionMetadata = InstanceType<typeof csl.GeneralTransactionMetadata>;
36
+ export type GenesisDelegateHash = InstanceType<typeof csl.GenesisDelegateHash>;
37
+ export type GenesisHash = InstanceType<typeof csl.GenesisHash>;
38
+ export type GenesisHashes = InstanceType<typeof csl.GenesisHashes>;
39
+ export type GenesisKeyDelegation = InstanceType<typeof csl.GenesisKeyDelegation>;
40
+ export type Header = InstanceType<typeof csl.Header>;
41
+ export type HeaderBody = InstanceType<typeof csl.HeaderBody>;
42
+ export type Int = InstanceType<typeof csl.Int>;
43
+ export type Ipv4 = InstanceType<typeof csl.Ipv4>;
44
+ export type Ipv6 = InstanceType<typeof csl.Ipv6>;
45
+ export type KESSignature = InstanceType<typeof csl.KESSignature>;
46
+ export type KESVKey = InstanceType<typeof csl.KESVKey>;
47
+ export type Language = InstanceType<typeof csl.Language>;
48
+ export type Languages = InstanceType<typeof csl.Languages>;
49
+ export type LegacyDaedalusPrivateKey = InstanceType<typeof csl.LegacyDaedalusPrivateKey>;
50
+ export type LinearFee = InstanceType<typeof csl.LinearFee>;
51
+ export type MIRToStakeCredentials = InstanceType<typeof csl.MIRToStakeCredentials>;
52
+ export type MetadataList = InstanceType<typeof csl.MetadataList>;
53
+ export type MetadataMap = InstanceType<typeof csl.MetadataMap>;
54
+ export type Mint = InstanceType<typeof csl.Mint>;
55
+ export type MintAssets = InstanceType<typeof csl.MintAssets>;
56
+ export type MintBuilder = InstanceType<typeof csl.MintBuilder>;
57
+ export type MintWitness = InstanceType<typeof csl.MintWitness>;
58
+ export type MintsAssets = InstanceType<typeof csl.MintsAssets>;
59
+ export type MoveInstantaneousReward = InstanceType<typeof csl.MoveInstantaneousReward>;
60
+ export type MoveInstantaneousRewardsCert = InstanceType<typeof csl.MoveInstantaneousRewardsCert>;
61
+ export type MultiAsset = InstanceType<typeof csl.MultiAsset>;
62
+ export type MultiHostName = InstanceType<typeof csl.MultiHostName>;
63
+ export type NativeScript = InstanceType<typeof csl.NativeScript>;
64
+ export type NativeScripts = InstanceType<typeof csl.NativeScripts>;
65
+ export type NetworkId = InstanceType<typeof csl.NetworkId>;
66
+ export type NetworkInfo = InstanceType<typeof csl.NetworkInfo>;
67
+ export type Nonce = InstanceType<typeof csl.Nonce>;
68
+ export type OperationalCert = InstanceType<typeof csl.OperationalCert>;
69
+ export type PlutusData = InstanceType<typeof csl.PlutusData>;
70
+ export type PlutusList = InstanceType<typeof csl.PlutusList>;
71
+ export type PlutusMap = InstanceType<typeof csl.PlutusMap>;
72
+ export type PlutusScript = InstanceType<typeof csl.PlutusScript>;
73
+ export type PlutusScripts = InstanceType<typeof csl.PlutusScripts>;
74
+ export type PlutusScriptSource = InstanceType<typeof csl.PlutusScriptSource>;
75
+ export type PlutusWitness = InstanceType<typeof csl.PlutusWitness>;
76
+ export type PlutusWitnesses = InstanceType<typeof csl.PlutusWitnesses>;
77
+ export type Pointer = InstanceType<typeof csl.Pointer>;
78
+ export type PointerAddress = InstanceType<typeof csl.PointerAddress>;
79
+ export type PoolMetadata = InstanceType<typeof csl.PoolMetadata>;
80
+ export type PoolMetadataHash = InstanceType<typeof csl.PoolMetadataHash>;
81
+ export type PoolParams = InstanceType<typeof csl.PoolParams>;
82
+ export type PoolRegistration = InstanceType<typeof csl.PoolRegistration>;
83
+ export type PoolRetirement = InstanceType<typeof csl.PoolRetirement>;
84
+ export type PrivateKey = InstanceType<typeof csl.PrivateKey>;
85
+ export type ProposedProtocolParameterUpdates = InstanceType<typeof csl.ProposedProtocolParameterUpdates>;
86
+ export type ProtocolParamUpdate = InstanceType<typeof csl.ProtocolParamUpdate>;
87
+ export type ProtocolVersion = InstanceType<typeof csl.ProtocolVersion>;
88
+ export type PublicKey = InstanceType<typeof csl.PublicKey>;
89
+ export type PublicKeys = InstanceType<typeof csl.PublicKeys>;
90
+ export type Redeemer = InstanceType<typeof csl.Redeemer>;
91
+ export type RedeemerTag = InstanceType<typeof csl.RedeemerTag>;
92
+ export type Redeemers = InstanceType<typeof csl.Redeemers>;
93
+ export type Relay = InstanceType<typeof csl.Relay>;
94
+ export type Relays = InstanceType<typeof csl.Relays>;
95
+ export type RewardAddress = InstanceType<typeof csl.RewardAddress>;
96
+ export type RewardAddresses = InstanceType<typeof csl.RewardAddresses>;
97
+ export type ScriptAll = InstanceType<typeof csl.ScriptAll>;
98
+ export type ScriptAny = InstanceType<typeof csl.ScriptAny>;
99
+ export type ScriptDataHash = InstanceType<typeof csl.ScriptDataHash>;
100
+ export type ScriptHash = InstanceType<typeof csl.ScriptHash>;
101
+ export type ScriptHashes = InstanceType<typeof csl.ScriptHashes>;
102
+ export type ScriptNOfK = InstanceType<typeof csl.ScriptNOfK>;
103
+ export type ScriptPubkey = InstanceType<typeof csl.ScriptPubkey>;
104
+ export type ScriptRef = InstanceType<typeof csl.ScriptRef>;
105
+ export type SingleHostAddr = InstanceType<typeof csl.SingleHostAddr>;
106
+ export type SingleHostName = InstanceType<typeof csl.SingleHostName>;
107
+ export type StakeCredential = InstanceType<typeof csl.StakeCredential>;
108
+ export type StakeCredentials = InstanceType<typeof csl.StakeCredentials>;
109
+ export type StakeDelegation = InstanceType<typeof csl.StakeDelegation>;
110
+ export type StakeRegistration = InstanceType<typeof csl.StakeRegistration>;
111
+ export type Strings = InstanceType<typeof csl.Strings>;
112
+ export type TimelockExpiry = InstanceType<typeof csl.TimelockExpiry>;
113
+ export type TimelockStart = InstanceType<typeof csl.TimelockStart>;
114
+ export type Transaction = InstanceType<typeof csl.Transaction>;
115
+ export type TransactionBodies = InstanceType<typeof csl.TransactionBodies>;
116
+ export type TransactionBody = InstanceType<typeof csl.TransactionBody>;
117
+ export type TransactionBuilder = InstanceType<typeof csl.TransactionBuilder>;
118
+ export type TransactionBuilderConfig = InstanceType<typeof csl.TransactionBuilderConfig>;
119
+ export type TransactionBuilderConfigBuilder = InstanceType<typeof csl.TransactionBuilderConfigBuilder>;
120
+ export type TransactionHash = InstanceType<typeof csl.TransactionHash>;
121
+ export type TransactionInput = InstanceType<typeof csl.TransactionInput>;
122
+ export type TransactionInputs = InstanceType<typeof csl.TransactionInputs>;
123
+ export type TransactionMetadatum = InstanceType<typeof csl.TransactionMetadatum>;
124
+ export type TransactionMetadatumLabels = InstanceType<typeof csl.TransactionMetadatumLabels>;
125
+ export type TransactionOutput = InstanceType<typeof csl.TransactionOutput>;
126
+ export type TransactionOutputAmountBuilder = InstanceType<typeof csl.TransactionOutputAmountBuilder>;
127
+ export type TransactionOutputBuilder = InstanceType<typeof csl.TransactionOutputBuilder>;
128
+ export type TransactionOutputs = InstanceType<typeof csl.TransactionOutputs>;
129
+ export type TransactionUnspentOutput = InstanceType<typeof csl.TransactionUnspentOutput>;
130
+ export type TransactionUnspentOutputs = InstanceType<typeof csl.TransactionUnspentOutputs>;
131
+ export type TransactionWitnessSet = InstanceType<typeof csl.TransactionWitnessSet>;
132
+ export type TransactionWitnessSets = InstanceType<typeof csl.TransactionWitnessSets>;
133
+ export type TxBuilderConstants = InstanceType<typeof csl.TxBuilderConstants>;
134
+ export type TxInputsBuilder = InstanceType<typeof csl.TxInputsBuilder>;
135
+ export type URL = InstanceType<typeof csl.URL>;
136
+ export type UnitInterval = InstanceType<typeof csl.UnitInterval>;
137
+ export type Update = InstanceType<typeof csl.Update>;
138
+ export type VRFCert = InstanceType<typeof csl.VRFCert>;
139
+ export type VRFKeyHash = InstanceType<typeof csl.VRFKeyHash>;
140
+ export type VRFVKey = InstanceType<typeof csl.VRFVKey>;
141
+ export type Value = InstanceType<typeof csl.Value>;
142
+ export type Vkey = InstanceType<typeof csl.Vkey>;
143
+ export type Vkeys = InstanceType<typeof csl.Vkeys>;
144
+ export type Vkeywitness = InstanceType<typeof csl.Vkeywitness>;
145
+ export type Vkeywitnesses = InstanceType<typeof csl.Vkeywitnesses>;
146
+ export type Withdrawals = InstanceType<typeof csl.Withdrawals>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './deser';
2
+ export * from './utils';
3
+ export * from './core';
@@ -0,0 +1,3 @@
1
+ export * from './deser';
2
+ export * from './utils';
3
+ export * from './core';
@@ -0,0 +1,12 @@
1
+ import { PubKeyAddress, ScriptAddress } from '@meshsdk/core';
2
+ export declare const addrBech32ToHex: (bech32: string) => string;
3
+ export declare const addrBech32ToObj: <T>(bech32: string) => T;
4
+ export declare const parsePlutusAddressObjToBech32: (plutusDataAddressObject: PubKeyAddress | ScriptAddress, networkId?: number) => string;
5
+ export declare const parsePlutusAddressToBech32: (plutusHex: string, networkId?: number) => string;
6
+ export declare const serializeBech32Address: (bech32Addr: string) => {
7
+ pubKeyHash: string;
8
+ scriptHash: string;
9
+ stakeCredential: string;
10
+ };
11
+ export declare const scriptHashToBech32: (scriptHash: string, stakeCredential?: string, networkId?: number) => string;
12
+ export declare const v2ScriptToBech32: (scriptCbor: string, stakeCredential?: string, networkId?: number) => string;
@@ -0,0 +1,50 @@
1
+ import { csl } from '../deser';
2
+ import { getV2ScriptHash } from './scripts';
3
+ export const addrBech32ToHex = (bech32) => {
4
+ const hexAddress = csl.Address.from_bech32(bech32).to_hex();
5
+ const cslAddress = csl.Address.from_hex(hexAddress);
6
+ const hex = csl.PlutusData.from_address(cslAddress).to_hex();
7
+ return hex;
8
+ };
9
+ export const addrBech32ToObj = (bech32) => {
10
+ const hexAddress = csl.Address.from_bech32(bech32).to_hex();
11
+ const cslAddress = csl.Address.from_hex(hexAddress);
12
+ const json = JSON.parse(csl.PlutusData.from_address(cslAddress).to_json(1));
13
+ return json;
14
+ };
15
+ export const parsePlutusAddressObjToBech32 = (plutusDataAddressObject, networkId = 0) => {
16
+ const plutusDataPaymentKeyObject = plutusDataAddressObject.fields[0];
17
+ const plutusDataStakeKeyObject = plutusDataAddressObject.fields[1];
18
+ const cslPaymentKeyHash = plutusDataPaymentKeyObject.fields[0].bytes;
19
+ // Take into account whether the hash is a PubKeyHash or ScriptHash
20
+ const cslPaymentCredential = plutusDataPaymentKeyObject.constructor === 0
21
+ ? csl.StakeCredential.from_keyhash(csl.Ed25519KeyHash.from_hex(cslPaymentKeyHash))
22
+ : csl.StakeCredential.from_scripthash(csl.ScriptHash.from_hex(cslPaymentKeyHash));
23
+ let bech32Addr = '';
24
+ // Parsing address according to whether it has a stake key
25
+ if (plutusDataStakeKeyObject.constructor === 0) {
26
+ const cslStakeKeyHash = csl.Ed25519KeyHash.from_hex(plutusDataStakeKeyObject.fields[0].fields[0].fields[0].bytes);
27
+ const cslBaseAddress = csl.BaseAddress.new(networkId, cslPaymentCredential, csl.StakeCredential.from_keyhash(cslStakeKeyHash));
28
+ bech32Addr = cslBaseAddress.to_address().to_bech32();
29
+ }
30
+ else {
31
+ const cslEnterpriseAddress = csl.EnterpriseAddress.new(networkId, cslPaymentCredential);
32
+ bech32Addr = cslEnterpriseAddress.to_address().to_bech32();
33
+ }
34
+ return bech32Addr;
35
+ };
36
+ export const parsePlutusAddressToBech32 = (plutusHex, networkId = 0) => {
37
+ const cslPlutusDataAddress = csl.PlutusData.from_hex(plutusHex);
38
+ const plutusDataAddressObject = JSON.parse(cslPlutusDataAddress.to_json(csl.PlutusDatumSchema.DetailedSchema));
39
+ return parsePlutusAddressObjToBech32(plutusDataAddressObject, networkId);
40
+ };
41
+ export const serializeBech32Address = (bech32Addr) => {
42
+ const serializedAddress = csl.serialize_bech32_address(bech32Addr);
43
+ return {
44
+ pubKeyHash: serializedAddress.get_pub_key_hash(),
45
+ scriptHash: serializedAddress.get_script_hash(),
46
+ stakeCredential: serializedAddress.get_stake_key_hash(),
47
+ };
48
+ };
49
+ export const scriptHashToBech32 = (scriptHash, stakeCredential, networkId = 0) => csl.script_to_address(networkId, scriptHash, stakeCredential);
50
+ export const v2ScriptToBech32 = (scriptCbor, stakeCredential, networkId = 0) => scriptHashToBech32(getV2ScriptHash(scriptCbor), stakeCredential, networkId);
@@ -0,0 +1,2 @@
1
+ export declare const applyParamsToScript: (rawAikenScriptBlueprint: string, params: string[]) => string;
2
+ export declare const applyObjParamsToScript: <T extends object>(rawAikenScriptBlueprint: string, params: T[]) => string;
@@ -0,0 +1,15 @@
1
+ import { csl } from '../deser';
2
+ export const applyParamsToScript = (rawAikenScriptBlueprint, params) => {
3
+ const cslParams = csl.JsVecString.new();
4
+ params.forEach((param) => {
5
+ cslParams.add(param);
6
+ });
7
+ return csl.apply_params_to_script(cslParams, rawAikenScriptBlueprint);
8
+ };
9
+ export const applyObjParamsToScript = (rawAikenScriptBlueprint, params) => {
10
+ const cslParams = csl.JsVecString.new();
11
+ params.forEach((param) => {
12
+ cslParams.add(JSON.stringify(param));
13
+ });
14
+ return csl.apply_params_to_script(cslParams, rawAikenScriptBlueprint);
15
+ };
@@ -0,0 +1 @@
1
+ export declare const skeyToPubKeyHash: (skeyHex: string) => string;
@@ -0,0 +1,6 @@
1
+ import { csl } from '../deser';
2
+ export const skeyToPubKeyHash = (skeyHex) => {
3
+ const isHexUnclean = skeyHex.slice(0, 4) === '5820' && skeyHex.length === 68;
4
+ const cleanHex = isHexUnclean ? skeyHex.slice(4) : skeyHex;
5
+ return csl.PrivateKey.from_hex(cleanHex).to_public().hash().to_hex();
6
+ };
@@ -0,0 +1,4 @@
1
+ export declare const parseInlineDatum: <T extends {
2
+ inline_datum?: string | undefined;
3
+ }, X>(utxo: T) => X;
4
+ export declare const parseDatumCbor: <T = any>(datumCbor: string) => T;