-
Notifications
You must be signed in to change notification settings - Fork 54
/
assetId.ts
27 lines (23 loc) · 1.13 KB
/
assetId.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { AssetId, AssetName, PolicyId } from '../../Cardano/types/Asset';
import { CML } from '../../CML/CML';
import { bytesToHex } from '../../util/misc/bytesToHex';
export const policyIdFromAssetId = (assetId: AssetId): PolicyId => PolicyId(assetId.slice(0, 56));
export const assetNameFromAssetId = (assetId: AssetId): AssetName => AssetName(assetId.slice(56));
/**
* @returns {string} concatenated hex-encoded policy id and asset name
*/
export const createAssetId = (scriptHash: CML.ScriptHash, assetName: CML.AssetName): AssetId =>
AssetId(bytesToHex(scriptHash.to_bytes()) + bytesToHex(assetName.name()).toString());
/**
* @returns {AssetId} concatenated policy id and asset name
*/
export const assetIdFromPolicyAndName = (policyId: PolicyId, assetName: AssetName): AssetId =>
AssetId(policyId.toString() + assetName.toString());
export const parseAssetId = (assetId: AssetId) => {
const policyId = policyIdFromAssetId(assetId);
const assetName = assetNameFromAssetId(assetId);
return {
assetName: CML.AssetName.new(Buffer.from(assetName, 'hex')),
scriptHash: CML.ScriptHash.from_bytes(Buffer.from(policyId, 'hex'))
};
};