@temple-digital-group/temple-canton-js 1.0.37-beta.2 → 1.0.38-beta
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/package.json +1 -1
- package/src/canton/index.js +85 -50
- package/src/canton/walletAdapter.js +1 -1
- package/src/config/index.d.ts +57 -57
- package/src/config/index.js +8 -8
package/package.json
CHANGED
package/src/canton/index.js
CHANGED
|
@@ -3557,16 +3557,55 @@ export async function getUserBalances(party = null, provider = null) {
|
|
|
3557
3557
|
if (!party) {
|
|
3558
3558
|
return { error: "Party ID is required. Pass it directly, set WALLET_ADAPTER, or configure VALIDATOR_USER_PARTY_ID." };
|
|
3559
3559
|
}
|
|
3560
|
+
// Get all supported instrument IDs from the catalog
|
|
3561
|
+
const supportedInstruments = new Set(Object.keys(instrumentCatalog));
|
|
3562
|
+
|
|
3563
|
+
// ── Provider path: use getHolding() for all balances ──
|
|
3564
|
+
if (provider) {
|
|
3565
|
+
const holdings = await provider.getHolding();
|
|
3566
|
+
|
|
3567
|
+
const balances = [];
|
|
3568
|
+
for (const h of holdings || []) {
|
|
3569
|
+
const instrumentId = h.instrument_id?.id;
|
|
3570
|
+
const symbol = h.symbol;
|
|
3571
|
+
|
|
3572
|
+
// Only include instruments in our catalog
|
|
3573
|
+
const catalogKey = supportedInstruments.has(instrumentId) ? instrumentId
|
|
3574
|
+
: instrumentIdToSymbol[instrumentId] || null;
|
|
3575
|
+
if (!catalogKey) continue;
|
|
3576
|
+
|
|
3577
|
+
const catalogEntry = instrumentCatalog[catalogKey];
|
|
3578
|
+
const unlocked = parseFloat(h.total_unlocked_coin || '0');
|
|
3579
|
+
const locked = parseFloat(h.total_locked_coin || '0');
|
|
3580
|
+
|
|
3581
|
+
balances.push({
|
|
3582
|
+
asset: catalogKey,
|
|
3583
|
+
symbol: symbol,
|
|
3584
|
+
total_balance: unlocked + locked,
|
|
3585
|
+
available_balance: unlocked,
|
|
3586
|
+
locked_balance: locked,
|
|
3587
|
+
dso: catalogEntry?.kind === 'amulet' ? (h.instrument_id?.admin || null) : null,
|
|
3588
|
+
registrar: h.instrument_id?.admin || null,
|
|
3589
|
+
operator: catalogEntry?.operator || null,
|
|
3590
|
+
provider: catalogEntry?.provider || null,
|
|
3591
|
+
merge_warning: (h.total_utxos || 0) > 1,
|
|
3592
|
+
holdings: [],
|
|
3593
|
+
locked_holdings: [],
|
|
3594
|
+
utilityContext: null
|
|
3595
|
+
});
|
|
3596
|
+
}
|
|
3597
|
+
|
|
3598
|
+
return balances;
|
|
3599
|
+
}
|
|
3600
|
+
|
|
3601
|
+
// ── Custom validator path: query individual contract types from ledger ──
|
|
3560
3602
|
const promises = [
|
|
3561
|
-
getAmuletHoldingsForParty(party, false,
|
|
3562
|
-
getLockedAmuletHoldingsForParty(party, false,
|
|
3563
|
-
getUtilityHoldingsForParty(party, false,
|
|
3603
|
+
getAmuletHoldingsForParty(party, false, null),
|
|
3604
|
+
getLockedAmuletHoldingsForParty(party, false, null),
|
|
3605
|
+
getUtilityHoldingsForParty(party, false, null)
|
|
3564
3606
|
];
|
|
3565
|
-
|
|
3566
|
-
const [amuletHoldings, lockedAmuletHoldings, utilityHoldings] = await Promise.all(promises);
|
|
3567
3607
|
|
|
3568
|
-
|
|
3569
|
-
const supportedInstruments = new Set(Object.keys(instrumentCatalog));
|
|
3608
|
+
const [amuletHoldings, lockedAmuletHoldings, utilityHoldings] = await Promise.all(promises);
|
|
3570
3609
|
|
|
3571
3610
|
// Structure: assetsByKey[registrar][asset] = { ... }
|
|
3572
3611
|
const assetsByKey = {};
|
|
@@ -3713,53 +3752,49 @@ export async function getUserBalances(party = null, provider = null) {
|
|
|
3713
3752
|
}
|
|
3714
3753
|
}
|
|
3715
3754
|
|
|
3716
|
-
//
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
|
|
3721
|
-
|
|
3722
|
-
|
|
3723
|
-
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
|
|
3732
|
-
|
|
3733
|
-
|
|
3734
|
-
|
|
3735
|
-
registrar,
|
|
3736
|
-
utilityAsset: asset
|
|
3737
|
-
}));
|
|
3738
|
-
}
|
|
3755
|
+
// Resolve utility contexts (requires ledger API access — provider path returns early above)
|
|
3756
|
+
const utilityContextPromises = new Map();
|
|
3757
|
+
for (const key of Object.keys(assetsByKey)) {
|
|
3758
|
+
for (const asset of Object.keys(assetsByKey[key])) {
|
|
3759
|
+
if (asset === "Amulet") {
|
|
3760
|
+
continue;
|
|
3761
|
+
}
|
|
3762
|
+
const assetEntry = assetsByKey[key][asset];
|
|
3763
|
+
if (assetEntry.utilityContext) {
|
|
3764
|
+
continue;
|
|
3765
|
+
}
|
|
3766
|
+
const registrar = assetEntry.registrar || key;
|
|
3767
|
+
const cacheKey = `${registrar || "*"}::${asset}`;
|
|
3768
|
+
if (!utilityContextPromises.has(cacheKey)) {
|
|
3769
|
+
utilityContextPromises.set(cacheKey, resolveUtilityCip56Context({
|
|
3770
|
+
party,
|
|
3771
|
+
registrar,
|
|
3772
|
+
utilityAsset: asset
|
|
3773
|
+
}));
|
|
3739
3774
|
}
|
|
3740
3775
|
}
|
|
3776
|
+
}
|
|
3741
3777
|
|
|
3742
|
-
|
|
3743
|
-
|
|
3744
|
-
|
|
3745
|
-
|
|
3778
|
+
// Await all utility context promises
|
|
3779
|
+
for (const [key, promise] of utilityContextPromises.entries()) {
|
|
3780
|
+
utilityContextPromises.set(key, await promise);
|
|
3781
|
+
}
|
|
3746
3782
|
|
|
3747
|
-
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
|
|
3760
|
-
|
|
3761
|
-
|
|
3762
|
-
}
|
|
3783
|
+
// Assign utility contexts
|
|
3784
|
+
for (const key of Object.keys(assetsByKey)) {
|
|
3785
|
+
for (const asset of Object.keys(assetsByKey[key])) {
|
|
3786
|
+
if (asset === "Amulet") {
|
|
3787
|
+
continue;
|
|
3788
|
+
}
|
|
3789
|
+
const assetEntry = assetsByKey[key][asset];
|
|
3790
|
+
if (assetEntry.utilityContext) {
|
|
3791
|
+
continue;
|
|
3792
|
+
}
|
|
3793
|
+
const registrar = assetEntry.registrar || key;
|
|
3794
|
+
const cacheKey = `${registrar || "*"}::${asset}`;
|
|
3795
|
+
assetEntry.utilityContext = utilityContextPromises.get(cacheKey) || null;
|
|
3796
|
+
if (!assetEntry.registrar && assetEntry.utilityContext?.registrar) {
|
|
3797
|
+
assetEntry.registrar = assetEntry.utilityContext.registrar;
|
|
3763
3798
|
}
|
|
3764
3799
|
}
|
|
3765
3800
|
}
|
|
@@ -63,7 +63,7 @@ function detectServerSide(adapter) {
|
|
|
63
63
|
*/
|
|
64
64
|
export function getAdapterPartyId() {
|
|
65
65
|
if (!_adapter) return null;
|
|
66
|
-
return _adapter.
|
|
66
|
+
return _adapter.provider?.party_id || _adapter.session?.partyId || null;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
/**
|
package/src/config/index.d.ts
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Initialize the library with a configuration object.
|
|
3
|
-
* This should be called by the consuming application before using the library.
|
|
4
|
-
* @param {Object} config - Configuration object with all required settings
|
|
5
|
-
*/
|
|
6
|
-
export function initializeConfig(config: Object): void;
|
|
7
|
-
/**
|
|
8
|
-
* Update the JWT token without re-initializing the full config.
|
|
9
|
-
* Useful when refreshing tokens for custom validator connections.
|
|
10
|
-
* @param {string} token - The new JWT token
|
|
11
|
-
*/
|
|
12
|
-
export function setJWTToken(token: string): void;
|
|
13
|
-
/**
|
|
14
|
-
* Get a configuration value from:
|
|
15
|
-
* 1. App-provided config (if initializeConfig was called)
|
|
16
|
-
* 2. Environment variables (process.env)
|
|
17
|
-
*/
|
|
18
|
-
export function getConfigValue(key: any): any;
|
|
19
|
-
export function setWalletAdapter(adapter: any): void;
|
|
20
|
-
export function getWalletAdapter(): any;
|
|
21
|
-
export function getAdapterProvider(): any;
|
|
22
|
-
export const NETWORK_LOCALHOST: "localhost";
|
|
23
|
-
export const NETWORK_TESTNET: "testnet";
|
|
24
|
-
export const NETWORK_MAINNET: "mainnet";
|
|
25
|
-
export default config;
|
|
26
|
-
export namespace config {
|
|
27
|
-
const NETWORK: any;
|
|
28
|
-
const API_BASE_URL: any;
|
|
29
|
-
const VALIDATOR_API_URL: any;
|
|
30
|
-
const VALIDATOR_SCAN_API_URL: any;
|
|
31
|
-
const VALIDATOR_DSO_PARTY_ID: any;
|
|
32
|
-
const VALIDATOR_USER_PARTY_ID: any;
|
|
33
|
-
const TEMPLE_PARTY_ID: any;
|
|
34
|
-
const AUTH0_TOKEN_URL: any;
|
|
35
|
-
const AUTH0_USER_ID: any;
|
|
36
|
-
const AUTH0_CLIENT_ID: any;
|
|
37
|
-
const AUTH0_CLIENT_SECRET: any;
|
|
38
|
-
const AUTH0_AUDIENCE: any;
|
|
39
|
-
const JWT_TOKEN: any;
|
|
40
|
-
let AUTH0_SCOPE: string;
|
|
41
|
-
let AUTH0_GRANT_TYPE: string;
|
|
42
|
-
let PACKAGE_UTILITY_APP_ID: string;
|
|
43
|
-
let PACKAGE_SPLICE_ID: string;
|
|
44
|
-
let PACKAGE_TEMPLE_ID: string;
|
|
45
|
-
let INTERFACE_TEMPLE_ID: string;
|
|
46
|
-
let PACKAGE_UTILITY_APP_REGISTRY_APP_ID: string;
|
|
47
|
-
let PACKAGE_UTILITY_APP_REGISTRY_ID: string;
|
|
48
|
-
let PACKAGE_UTILITY_APP_CREDENTIAL_ID: string;
|
|
49
|
-
const CONTRACT_ORCHESTRATOR_ID: any;
|
|
50
|
-
const TEMPLATE_ID_ORCHESTRATOR: any;
|
|
51
|
-
const DISCLOSURE_ORCHESTRATOR: any;
|
|
52
|
-
const SYNCHRONIZER_ORCHESTRATOR: any;
|
|
53
|
-
const CONTRACT_FEATURED_APP_ID: any;
|
|
54
|
-
const TEMPLATE_ID_FEATURED_APP: any;
|
|
55
|
-
const DISCLOSURE_FEATURED_APP: any;
|
|
56
|
-
const SYNCHRONIZER_FEATURED_APP: any;
|
|
57
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Initialize the library with a configuration object.
|
|
3
|
+
* This should be called by the consuming application before using the library.
|
|
4
|
+
* @param {Object} config - Configuration object with all required settings
|
|
5
|
+
*/
|
|
6
|
+
export function initializeConfig(config: Object): void;
|
|
7
|
+
/**
|
|
8
|
+
* Update the JWT token without re-initializing the full config.
|
|
9
|
+
* Useful when refreshing tokens for custom validator connections.
|
|
10
|
+
* @param {string} token - The new JWT token
|
|
11
|
+
*/
|
|
12
|
+
export function setJWTToken(token: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Get a configuration value from:
|
|
15
|
+
* 1. App-provided config (if initializeConfig was called)
|
|
16
|
+
* 2. Environment variables (process.env)
|
|
17
|
+
*/
|
|
18
|
+
export function getConfigValue(key: any): any;
|
|
19
|
+
export function setWalletAdapter(adapter: any): void;
|
|
20
|
+
export function getWalletAdapter(): any;
|
|
21
|
+
export function getAdapterProvider(): any;
|
|
22
|
+
export const NETWORK_LOCALHOST: "localhost";
|
|
23
|
+
export const NETWORK_TESTNET: "testnet";
|
|
24
|
+
export const NETWORK_MAINNET: "mainnet";
|
|
25
|
+
export default config;
|
|
26
|
+
export namespace config {
|
|
27
|
+
const NETWORK: any;
|
|
28
|
+
const API_BASE_URL: any;
|
|
29
|
+
const VALIDATOR_API_URL: any;
|
|
30
|
+
const VALIDATOR_SCAN_API_URL: any;
|
|
31
|
+
const VALIDATOR_DSO_PARTY_ID: any;
|
|
32
|
+
const VALIDATOR_USER_PARTY_ID: any;
|
|
33
|
+
const TEMPLE_PARTY_ID: any;
|
|
34
|
+
const AUTH0_TOKEN_URL: any;
|
|
35
|
+
const AUTH0_USER_ID: any;
|
|
36
|
+
const AUTH0_CLIENT_ID: any;
|
|
37
|
+
const AUTH0_CLIENT_SECRET: any;
|
|
38
|
+
const AUTH0_AUDIENCE: any;
|
|
39
|
+
const JWT_TOKEN: any;
|
|
40
|
+
let AUTH0_SCOPE: string;
|
|
41
|
+
let AUTH0_GRANT_TYPE: string;
|
|
42
|
+
let PACKAGE_UTILITY_APP_ID: string;
|
|
43
|
+
let PACKAGE_SPLICE_ID: string;
|
|
44
|
+
let PACKAGE_TEMPLE_ID: string;
|
|
45
|
+
let INTERFACE_TEMPLE_ID: string;
|
|
46
|
+
let PACKAGE_UTILITY_APP_REGISTRY_APP_ID: string;
|
|
47
|
+
let PACKAGE_UTILITY_APP_REGISTRY_ID: string;
|
|
48
|
+
let PACKAGE_UTILITY_APP_CREDENTIAL_ID: string;
|
|
49
|
+
const CONTRACT_ORCHESTRATOR_ID: any;
|
|
50
|
+
const TEMPLATE_ID_ORCHESTRATOR: any;
|
|
51
|
+
const DISCLOSURE_ORCHESTRATOR: any;
|
|
52
|
+
const SYNCHRONIZER_ORCHESTRATOR: any;
|
|
53
|
+
const CONTRACT_FEATURED_APP_ID: any;
|
|
54
|
+
const TEMPLATE_ID_FEATURED_APP: any;
|
|
55
|
+
const DISCLOSURE_FEATURED_APP: any;
|
|
56
|
+
const SYNCHRONIZER_FEATURED_APP: any;
|
|
57
|
+
}
|
package/src/config/index.js
CHANGED
|
@@ -62,9 +62,9 @@ const NETWORK_CONTRACTS = {
|
|
|
62
62
|
[NETWORK_MAINNET]: {
|
|
63
63
|
TEMPLE_PARTY_ID: "temple-mainnet-1::1220f238bb79df3efbbac2ea964c3cd501003971a2cb59043e2dac50b06e85b8620f",
|
|
64
64
|
VALIDATOR_DSO_PARTY_ID: "DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
|
|
65
|
-
CONTRACT_ORCHESTRATOR_ID: "
|
|
66
|
-
TEMPLATE_ID_ORCHESTRATOR: "
|
|
67
|
-
DISCLOSURE_ORCHESTRATOR: "
|
|
65
|
+
CONTRACT_ORCHESTRATOR_ID: "00a6a32ae747e806e5da946e7d8247f4c762a39ed294339f94dabbc63254fb8ef9ca121220a458f4a48de8afaf8f1b1aa36b11c89f87788748ed26206bd453ed554b5daf27",
|
|
66
|
+
TEMPLATE_ID_ORCHESTRATOR: "a5c99f1f6e614c2e2c30498db8652eca6c9b4801b6ba09755ad50ef982f2273c:Temple.Order.Orchestrator:Orchestrator",
|
|
67
|
+
DISCLOSURE_ORCHESTRATOR: "CgMyLjEStgMKRQCmoyrnR+gG5dqUbn2CR/THYqOe0pQzn5Tau8YyVPuO+coSEiCkWPSkjeivr48bGqNrEcifh3iHSO0mIGvUU+1VS12vJxIRdGVtcGxlLW9yZGVyLWltcGwabQpAYTVjOTlmMWY2ZTYxNGMyZTJjMzA0OThkYjg2NTJlY2E2YzliNDgwMWI2YmEwOTc1NWFkNTBlZjk4MmYyMjczYxIGVGVtcGxlEgVPcmRlchIMT3JjaGVzdHJhdG9yGgxPcmNoZXN0cmF0b3IiXmpcCloKWDpWdGVtcGxlLW1haW5uZXQtMTo6MTIyMGYyMzhiYjc5ZGYzZWZiYmFjMmVhOTY0YzNjZDUwMTAwMzk3MWEyY2I1OTA0M2UyZGFjNTBiMDZlODViODYyMGYqVnRlbXBsZS1tYWlubmV0LTE6OjEyMjBmMjM4YmI3OWRmM2VmYmJhYzJlYTk2NGMzY2Q1MDEwMDM5NzFhMmNiNTkwNDNlMmRhYzUwYjA2ZTg1Yjg2MjBmOd+zN/JMTAYAQioKJgokCAESIGU/bGc39wT4OUE/3k+6Z4gbIs1OEXZwkSQ0DYNtgMacEB4=",
|
|
68
68
|
SYNCHRONIZER_ORCHESTRATOR: "global-domain::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
|
|
69
69
|
CONTRACT_FEATURED_APP_ID: "001bac86a228f209faad6e7a4adf40cd17b8aa7605f166333d640ad3f0c172eeb6ca111220da4eb40ed3d6f4521dcacf25d027c02f4bd0b9c561bc17d76808d30239c75713",
|
|
70
70
|
TEMPLATE_ID_FEATURED_APP: "a5b055492fb8f08b2e7bc0fc94da6da50c39c2e1d7f24cd5ea8db12fc87c1332:Splice.Amulet:FeaturedAppRight",
|
|
@@ -74,9 +74,9 @@ const NETWORK_CONTRACTS = {
|
|
|
74
74
|
[NETWORK_TESTNET]: {
|
|
75
75
|
TEMPLE_PARTY_ID: "temple-testnet-1::12209b8dd6bb0fdc220f1a78ec54a10ece9e959e30d369c391b2f1efdb84f2b48262",
|
|
76
76
|
VALIDATOR_DSO_PARTY_ID: "DSO::1220f22a8b8f2d813c25b9a684dc4dd52b532a0174d8e73a13cdf2baabfff7518337",
|
|
77
|
-
CONTRACT_ORCHESTRATOR_ID: "
|
|
78
|
-
TEMPLATE_ID_ORCHESTRATOR: "
|
|
79
|
-
DISCLOSURE_ORCHESTRATOR: "
|
|
77
|
+
CONTRACT_ORCHESTRATOR_ID: "00fa1edf419117ea79548d54ec6754d3c37a433cf6ec9cea552630b94f5c9f71d9ca121220ffb75178ba721c19ea809085757b1a168a0a58fb52b93bd298fbad26509fe4bd",
|
|
78
|
+
TEMPLATE_ID_ORCHESTRATOR: "a5c99f1f6e614c2e2c30498db8652eca6c9b4801b6ba09755ad50ef982f2273c:Temple.Order.Orchestrator:Orchestrator",
|
|
79
|
+
DISCLOSURE_ORCHESTRATOR: "CgMyLjEStgMKRQD6Ht9BkRfqeVSNVOxnVNPDekM89uyc6lUmMLlPXJ9x2coSEiD/t1F4unIcGeqAkIV1exoWigpY+1K5O9KY+60mUJ/kvRIRdGVtcGxlLW9yZGVyLWltcGwabQpAYTVjOTlmMWY2ZTYxNGMyZTJjMzA0OThkYjg2NTJlY2E2YzliNDgwMWI2YmEwOTc1NWFkNTBlZjk4MmYyMjczYxIGVGVtcGxlEgVPcmRlchIMT3JjaGVzdHJhdG9yGgxPcmNoZXN0cmF0b3IiXmpcCloKWDpWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjIqVnRlbXBsZS10ZXN0bmV0LTE6OjEyMjA5YjhkZDZiYjBmZGMyMjBmMWE3OGVjNTRhMTBlY2U5ZTk1OWUzMGQzNjljMzkxYjJmMWVmZGI4NGYyYjQ4MjYyOUK//cFLTAYAQioKJgokCAESIHeaC3pOxvMHGC7pjsEMpZKn8Uvf7OVL3gP4vjOCc1ZOEB4=",
|
|
80
80
|
SYNCHRONIZER_ORCHESTRATOR: "global-domain::1220f22a8b8f2d813c25b9a684dc4dd52b532a0174d8e73a13cdf2baabfff7518337",
|
|
81
81
|
CONTRACT_FEATURED_APP_ID: "0072f0a3b647d75fdb1ddba78ce379bc836c748256d93cb7b2655e3ef8b3eca412ca12122090530c2e189e8a42d351ae29c977c81318efa59717e355dbf9f670b515112bbe",
|
|
82
82
|
TEMPLATE_ID_FEATURED_APP: "3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1:Splice.Amulet:FeaturedAppRight",
|
|
@@ -126,8 +126,8 @@ const config = {
|
|
|
126
126
|
|
|
127
127
|
// Canton Package IDs (hardcoded - these rarely change)
|
|
128
128
|
PACKAGE_UTILITY_APP_ID: "dd3a9f2d51cc4c52d9ec2e1d7ff235298dcfb3afd1d50ab44328b1aaa9a18587", // utility-registry-holding-v0-0.1.2.dar
|
|
129
|
-
PACKAGE_SPLICE_ID: "
|
|
130
|
-
PACKAGE_TEMPLE_ID: "
|
|
129
|
+
PACKAGE_SPLICE_ID: "67fac2f853bce8dbf0b9817bb5ba7c59f10e8120b7c808696f7010e5f0c8a791", // splice-amulet-0.1.15.dar
|
|
130
|
+
PACKAGE_TEMPLE_ID: "a5c99f1f6e614c2e2c30498db8652eca6c9b4801b6ba09755ad50ef982f2273c", // temple-order-impl-3.1.9.dar
|
|
131
131
|
INTERFACE_TEMPLE_ID: "e833b8cc28483f87e5db3f46c1beb2e9d595bf8d575728d640f2632ce6d8211d", // temple-order-interface-3.1.0.dar
|
|
132
132
|
PACKAGE_UTILITY_APP_REGISTRY_APP_ID: "170929b11d5f0ed1385f890f42887c31ff7e289c0f4bc482aff193a7173d576c", // utility-app-registry-app-v0-0.1.2.dar
|
|
133
133
|
PACKAGE_UTILITY_APP_REGISTRY_ID: "ed73d5b9ab717333f3dbd122de7be3156f8bf2614a67360c3dd61fc0135133fa", // utility-app-registry-v0-0.1.2.dar
|