@temple-digital-group/temple-canton-js 2.0.2 → 2.0.3-beta.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 (38) hide show
  1. package/README.md +457 -457
  2. package/index.js +15 -15
  3. package/package.json +50 -49
  4. package/src/api/config.d.ts +20 -20
  5. package/src/api/index.ts +322 -322
  6. package/src/api/tokenStore.ts +30 -30
  7. package/src/api/types.ts +196 -196
  8. package/src/auth0/index.d.ts +1 -1
  9. package/src/auth0/index.js +50 -50
  10. package/src/canton/deposits.ts +563 -563
  11. package/src/canton/helpers.ts +266 -266
  12. package/src/canton/index.d.ts +41 -41
  13. package/src/canton/index.js +3301 -3472
  14. package/src/canton/instrumentCatalog.d.ts +7 -7
  15. package/src/canton/instrumentCatalog.js +283 -283
  16. package/src/canton/request_schemas/cancel_orders_amulet.json +77 -77
  17. package/src/canton/request_schemas/cancel_orders_utility.json +68 -68
  18. package/src/canton/request_schemas/create_order_proposal_amulet.json +94 -94
  19. package/src/canton/request_schemas/create_order_proposal_utility.json +121 -121
  20. package/src/canton/request_schemas/create_utility_credential.json +31 -31
  21. package/src/canton/request_schemas/execute_transfer_factory.json +43 -43
  22. package/src/canton/request_schemas/get_allocation_factory.json +21 -21
  23. package/src/canton/request_schemas/get_amulet_holdings.json +21 -21
  24. package/src/canton/request_schemas/get_instrument_configurations.json +21 -21
  25. package/src/canton/request_schemas/get_locked_amulet_holdings.json +21 -21
  26. package/src/canton/request_schemas/get_order_proposals.json +21 -21
  27. package/src/canton/request_schemas/get_orders.json +21 -21
  28. package/src/canton/request_schemas/get_sender_credentials.json +22 -22
  29. package/src/canton/request_schemas/get_transfer_factory.json +28 -28
  30. package/src/canton/request_schemas/get_utility_holdings.json +21 -21
  31. package/src/canton/request_schemas/unlock_amulet.json +38 -38
  32. package/src/canton/walletAdapter.d.ts +7 -7
  33. package/src/canton/walletAdapter.js +112 -112
  34. package/src/canton/withdrawals.ts +511 -511
  35. package/src/config/index.d.ts +63 -63
  36. package/src/config/index.js +188 -188
  37. package/src/websocket/index.ts +341 -341
  38. package/src/websocket/ws.d.ts +24 -24
@@ -1,63 +1,63 @@
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
- const VALIDATOR_REGISTRAR_PARTY_ID: any;
58
- const PACKAGE_NAME_SETTLEMENT_INTERFACE: any;
59
- const PACKAGE_NAME_SETTLEMENT_IMPL: any;
60
- const ALLOCATION_META_TAG: any;
61
- const API_KEY: any;
62
- const WS_URL: string;
63
- }
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
+ const VALIDATOR_REGISTRAR_PARTY_ID: any;
58
+ const PACKAGE_NAME_SETTLEMENT_INTERFACE: any;
59
+ const PACKAGE_NAME_SETTLEMENT_IMPL: any;
60
+ const ALLOCATION_META_TAG: any;
61
+ const API_KEY: any;
62
+ const WS_URL: string;
63
+ }
@@ -1,188 +1,188 @@
1
- // Load .env file if available (for Node.js environments)
2
- if (typeof process !== 'undefined' && process.env) {
3
- import('dotenv').then(({ config: loadDotenv }) => loadDotenv()).catch(() => {});
4
- }
5
-
6
- // Global config object that can be set by the consuming application
7
- let appConfig = null;
8
-
9
- // Re-export wallet adapter functions
10
- export { setWalletAdapter, getWalletAdapter, getAdapterProvider } from "../canton/walletAdapter.js";
11
-
12
- /**
13
- * Initialize the library with a configuration object.
14
- * This should be called by the consuming application before using the library.
15
- * @param {Object} config - Configuration object with all required settings
16
- */
17
- export function initializeConfig(config) {
18
- appConfig = config;
19
- }
20
-
21
- /**
22
- * Update the JWT token without re-initializing the full config.
23
- * Useful when refreshing tokens for custom validator connections.
24
- * @param {string} token - The new JWT token
25
- */
26
- export function setJWTToken(token) {
27
- if (!appConfig) {
28
- appConfig = {};
29
- }
30
- appConfig.JWT_TOKEN = token;
31
- }
32
-
33
- /**
34
- * Get a configuration value from:
35
- * 1. App-provided config (if initializeConfig was called)
36
- * 2. Environment variables (process.env)
37
- */
38
- export function getConfigValue(key) {
39
- // First check app-provided config
40
- if (appConfig && appConfig[key] !== undefined) {
41
- return appConfig[key];
42
- }
43
-
44
- // Then check environment variables
45
- if (typeof process !== 'undefined' && process.env && process.env[key]) {
46
- const value = process.env[key];
47
- if (value && value.trim().length > 0) {
48
- return value;
49
- }
50
- }
51
-
52
- return undefined;
53
- }
54
-
55
- // Network constants
56
- export const NETWORK_LOCALHOST = "localhost";
57
- export const NETWORK_TESTNET = "testnet";
58
- export const NETWORK_MAINNET = "mainnet";
59
-
60
- // Network-specific contract values (Orchestrator & Featured App)
61
- const NETWORK_CONTRACTS = {
62
- [NETWORK_MAINNET]: {
63
- TEMPLE_PARTY_ID: "temple-mainnet-1::1220f238bb79df3efbbac2ea964c3cd501003971a2cb59043e2dac50b06e85b8620f",
64
- VALIDATOR_DSO_PARTY_ID: "DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
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
- SYNCHRONIZER_ORCHESTRATOR: "global-domain::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
69
- CONTRACT_FEATURED_APP_ID: "001bac86a228f209faad6e7a4adf40cd17b8aa7605f166333d640ad3f0c172eeb6ca111220da4eb40ed3d6f4521dcacf25d027c02f4bd0b9c561bc17d76808d30239c75713",
70
- TEMPLATE_ID_FEATURED_APP: "a5b055492fb8f08b2e7bc0fc94da6da50c39c2e1d7f24cd5ea8db12fc87c1332:Splice.Amulet:FeaturedAppRight",
71
- DISCLOSURE_FEATURED_APP: "CgMyLjESxQQKRQAbrIaiKPIJ+q1uekrfQM0XuKp2BfFmMz1kCtPwwXLutsoREiDaTrQO09b0Uh3KzyXQJ8AvS9C5xWG8F9doCNMCOcdXExINc3BsaWNlLWFtdWxldBpkCkBhNWIwNTU0OTJmYjhmMDhiMmU3YmMwZmM5NGRhNmRhNTBjMzljMmUxZDdmMjRjZDVlYThkYjEyZmM4N2MxMzMyEgZTcGxpY2USBkFtdWxldBoQRmVhdHVyZWRBcHBSaWdodCKuAWqrAQpNCks6SURTTzo6MTIyMGIxNDMxZWYyMTczNDJkYjQ0ZDUxNmJiOWJlZmRlODAyYmU3ZDg4OTk2MzdkMjkwODk1ZmE1ODg4MGYxOWFjY2MKWgpYOlZ0ZW1wbGUtbWFpbm5ldC0xOjoxMjIwZjIzOGJiNzlkZjNlZmJiYWMyZWE5NjRjM2NkNTAxMDAzOTcxYTJjYjU5MDQzZTJkYWM1MGIwNmU4NWI4NjIwZipJRFNPOjoxMjIwYjE0MzFlZjIxNzM0MmRiNDRkNTE2YmI5YmVmZGU4MDJiZTdkODg5OTYzN2QyOTA4OTVmYTU4ODgwZjE5YWNjYzJWdGVtcGxlLW1haW5uZXQtMTo6MTIyMGYyMzhiYjc5ZGYzZWZiYmFjMmVhOTY0YzNjZDUwMTAwMzk3MWEyY2I1OTA0M2UyZGFjNTBiMDZlODViODYyMGY5IyrofYw+BgBCKgomCiQIARIg55YoiScl03uK9v+SGTSxao39IQXlQK445Jxczbp74NAQHg==",
72
- SYNCHRONIZER_FEATURED_APP: "global-domain::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
73
- },
74
- [NETWORK_TESTNET]: {
75
- TEMPLE_PARTY_ID: "temple-testnet-1::12209b8dd6bb0fdc220f1a78ec54a10ece9e959e30d369c391b2f1efdb84f2b48262",
76
- VALIDATOR_DSO_PARTY_ID: "DSO::1220f22a8b8f2d813c25b9a684dc4dd52b532a0174d8e73a13cdf2baabfff7518337",
77
- CONTRACT_ORCHESTRATOR_ID: "00fa1edf419117ea79548d54ec6754d3c37a433cf6ec9cea552630b94f5c9f71d9ca121220ffb75178ba721c19ea809085757b1a168a0a58fb52b93bd298fbad26509fe4bd",
78
- TEMPLATE_ID_ORCHESTRATOR: "a5c99f1f6e614c2e2c30498db8652eca6c9b4801b6ba09755ad50ef982f2273c:Temple.Order.Orchestrator:Orchestrator",
79
- DISCLOSURE_ORCHESTRATOR: "CgMyLjEStgMKRQD6Ht9BkRfqeVSNVOxnVNPDekM89uyc6lUmMLlPXJ9x2coSEiD/t1F4unIcGeqAkIV1exoWigpY+1K5O9KY+60mUJ/kvRIRdGVtcGxlLW9yZGVyLWltcGwabQpAYTVjOTlmMWY2ZTYxNGMyZTJjMzA0OThkYjg2NTJlY2E2YzliNDgwMWI2YmEwOTc1NWFkNTBlZjk4MmYyMjczYxIGVGVtcGxlEgVPcmRlchIMT3JjaGVzdHJhdG9yGgxPcmNoZXN0cmF0b3IiXmpcCloKWDpWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjIqVnRlbXBsZS10ZXN0bmV0LTE6OjEyMjA5YjhkZDZiYjBmZGMyMjBmMWE3OGVjNTRhMTBlY2U5ZTk1OWUzMGQzNjljMzkxYjJmMWVmZGI4NGYyYjQ4MjYyOUK//cFLTAYAQioKJgokCAESIHeaC3pOxvMHGC7pjsEMpZKn8Uvf7OVL3gP4vjOCc1ZOEB4=",
80
- SYNCHRONIZER_ORCHESTRATOR: "global-domain::1220f22a8b8f2d813c25b9a684dc4dd52b532a0174d8e73a13cdf2baabfff7518337",
81
- CONTRACT_FEATURED_APP_ID: "0072f0a3b647d75fdb1ddba78ce379bc836c748256d93cb7b2655e3ef8b3eca412ca12122090530c2e189e8a42d351ae29c977c81318efa59717e355dbf9f670b515112bbe",
82
- TEMPLATE_ID_FEATURED_APP: "3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1:Splice.Amulet:FeaturedAppRight",
83
- DISCLOSURE_FEATURED_APP: "CgMyLjESxQQKRQBy8KO2R9df2x3bp4zjebyDbHSCVtk8t7JlXj74s+ykEsoSEiCQUwwuGJ6KQtNRrinJd8gTGO+llxfjVdv59nC1FRErvhINc3BsaWNlLWFtdWxldBpkCkAzY2ExMzQzYWIyNmI0NTNkMzhjOGFkYjcwZGNhNWYxZWFkODQ0MGM0MmI1OWI2OGYwNzA3ODY5NTVjYmY5ZWMxEgZTcGxpY2USBkFtdWxldBoQRmVhdHVyZWRBcHBSaWdodCKuAWqrAQpNCks6SURTTzo6MTIyMGYyMmE4YjhmMmQ4MTNjMjViOWE2ODRkYzRkZDUyYjUzMmEwMTc0ZDhlNzNhMTNjZGYyYmFhYmZmZjc1MTgzMzcKWgpYOlZ0ZW1wbGUtdGVzdG5ldC0xOjoxMjIwOWI4ZGQ2YmIwZmRjMjIwZjFhNzhlYzU0YTEwZWNlOWU5NTllMzBkMzY5YzM5MWIyZjFlZmRiODRmMmI0ODI2MipJRFNPOjoxMjIwZjIyYThiOGYyZDgxM2MyNWI5YTY4NGRjNGRkNTJiNTMyYTAxNzRkOGU3M2ExM2NkZjJiYWFiZmZmNzUxODMzNzJWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjI5kSQjLJNGBgBCKgomCiQIARIgDqjhIjKcVURincLUIVg1viT9uWbjs2UBT9UVpPuW/E0QHg==",
84
- SYNCHRONIZER_FEATURED_APP: "global-domain::1220f22a8b8f2d813c25b9a684dc4dd52b532a0174d8e73a13cdf2baabfff7518337",
85
- },
86
- [NETWORK_LOCALHOST]: {
87
- TEMPLE_PARTY_ID: "Temple::12201815d4e8ff48629daed3b26260664fc7f17ca5cfdead177398188440062c99f2",
88
- VALIDATOR_DSO_PARTY_ID: "DSO::12201815d4e8ff48629daed3b26260664fc7f17ca5cfdead177398188440062c99f2",
89
- CONTRACT_ORCHESTRATOR_ID: "00ef7791cb51b45194791ba1d6d83f969878f17dfde50970daf9f8279c87417346ca1212202bb3d941b036cfcb8893b99d1ffd1bcc66e3999b5d67d4f6b77a728298f4fcdf",
90
- TEMPLATE_ID_ORCHESTRATOR: "0110667c2e17ca40d2aa7396d3b40e228c770d203676b6950ac819de86cf6964:Temple.Order.Orchestrator:Orchestrator",
91
- DISCLOSURE_ORCHESTRATOR: "CgMyLjEStgMKRQDvd5HLUbRRlHkbodbYP5aYePF9/eUJcNr5+Cech0FzRsoSEiArs9lBsDbPy4iTuZ0f/RvMZuOZm11n1Pa3enKCmPT83xIRdGVtcGxlLW9yZGVyLWltcGwabQpAMDExMDY2N2MyZTE3Y2E0MGQyYWE3Mzk2ZDNiNDBlMjI4Yzc3MGQyMDM2NzZiNjk1MGFjODE5ZGU4NmNmNjk2NBIGVGVtcGxlEgVPcmRlchIMT3JjaGVzdHJhdG9yGgxPcmNoZXN0cmF0b3IiXmpcCloKWDpWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjIqVnRlbXBsZS10ZXN0bmV0LTE6OjEyMjA5YjhkZDZiYjBmZGMyMjBmMWE3OGVjNTRhMTBlY2U5ZTk1OWUzMGQzNjljMzkxYjJmMWVmZGI4NGYyYjQ4MjYyOREf61eFSAYAQioKJgokCAESIIENK9R3ypVBYdnm6oV0J/a3GgdUNLbBFReq5znIYhc4EB4=",
92
- SYNCHRONIZER_ORCHESTRATOR: "global-domain::12201815d4e8ff48629daed3b26260664fc7f17ca5cfdead177398188440062c99f2",
93
- CONTRACT_FEATURED_APP_ID: "0072f0a3b647d75fdb1ddba78ce379bc836c748256d93cb7b2655e3ef8b3eca412ca12122090530c2e189e8a42d351ae29c977c81318efa59717e355dbf9f670b515112bbe",
94
- TEMPLATE_ID_FEATURED_APP: "3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1:Splice.Amulet:FeaturedAppRight",
95
- DISCLOSURE_FEATURED_APP: "CgMyLjESxQQKRQBy8KO2R9df2x3bp4zjebyDbHSCVtk8t7JlXj74s+ykEsoSEiCQUwwuGJ6KQtNRrinJd8gTGO+llxfjVdv59nC1FRErvhINc3BsaWNlLWFtdWxldBpkCkAzY2ExMzQzYWIyNmI0NTNkMzhjOGFkYjcwZGNhNWYxZWFkODQ0MGM0MmI1OWI2OGYwNzA3ODY5NTVjYmY5ZWMxEgZTcGxpY2USBkFtdWxldBoQRmVhdHVyZWRBcHBSaWdodCKuAWqrAQpNCks6SURTTzo6MTIyMGYyMmE4YjhmMmQ4MTNjMjViOWE2ODRkYzRkZDUyYjUzMmEwMTc0ZDhlNzNhMTNjZGYyYmFhYmZmZjc1MTgzMzcKWgpYOlZ0ZW1wbGUtdGVzdG5ldC0xOjoxMjIwOWI4ZGQ2YmIwZmRjMjIwZjFhNzhlYzU0YTEwZWNlOWU5NTllMzBkMzY5YzM5MWIyZjFlZmRiODRmMmI0ODI2MipJRFNPOjoxMjIwZjIyYThiOGYyZDgxM2MyNWI5YTY4NGRjNGRkNTJiNTMyYTAxNzRkOGU3M2ExM2NkZjJiYWFiZmZmNzUxODMzNzJWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjI5kSQjLJNGBgBCKgomCiQIARIgDqjhIjKcVURincLUIVg1viT9uWbjs2UBT9UVpPuW/E0QHg==",
96
- SYNCHRONIZER_FEATURED_APP: "global-domain::12201815d4e8ff48629daed3b26260664fc7f17ca5cfdead177398188440062c99f2",
97
- },
98
- };
99
-
100
- /**
101
- * Get a network-specific contract value based on the current NETWORK setting.
102
- * Falls back to mainnet if the current network has no contract values defined.
103
- */
104
- function getNetworkContract(key) {
105
- const network = getConfigValue("NETWORK") || NETWORK_MAINNET;
106
- const contracts = NETWORK_CONTRACTS[network] || NETWORK_CONTRACTS[NETWORK_MAINNET];
107
- return contracts ? contracts[key] : undefined;
108
- }
109
-
110
- // Config object with getters for real-time value resolution
111
- // Values are evaluated on each access, not cached at module load time
112
- const config = {
113
- // Network setting (localhost, testnet, mainnet) - defaults to mainnet
114
- get NETWORK() { return getConfigValue("NETWORK") || NETWORK_MAINNET; },
115
-
116
- // Temple REST API
117
- get API_BASE_URL() {
118
- const network = getConfigValue("NETWORK") || NETWORK_MAINNET;
119
- if (network === NETWORK_TESTNET) return "https://api-testnet.templedigitalgroup.com";
120
- return "https://api.templedigitalgroup.com";
121
- },
122
- get API_EMAIL() { return getConfigValue("API_EMAIL"); },
123
- get API_PASSWORD() { return getConfigValue("API_PASSWORD"); },
124
- get API_KEY() { return getConfigValue("API_KEY"); },
125
-
126
- // WebSocket
127
- get WS_URL() {
128
- const network = getConfigValue("NETWORK") || NETWORK_MAINNET;
129
- if (network === NETWORK_TESTNET) return "wss://ws-dev.templedigitalgroup.com/v1/stream";
130
- return "wss://ws.templedigitalgroup.com/v1/stream";
131
- },
132
-
133
- // Validator connection settings
134
- get VALIDATOR_API_URL() { return getConfigValue("VALIDATOR_API_URL"); },
135
- get VALIDATOR_SCAN_API_URL() { return getConfigValue("VALIDATOR_SCAN_API_URL"); },
136
-
137
- // Temple Backend API (trading orders, withdrawals)
138
- get TEMPLE_BACKEND_API_URL() { return getConfigValue("TEMPLE_BACKEND_API_URL"); },
139
- get VALIDATOR_DSO_PARTY_ID() { return getNetworkContract("VALIDATOR_DSO_PARTY_ID"); },
140
- get VALIDATOR_USER_PARTY_ID() { return getConfigValue("VALIDATOR_USER_PARTY_ID"); },
141
- get VALIDATOR_REGISTRAR_PARTY_ID() { return getConfigValue("VALIDATOR_REGISTRAR_PARTY_ID"); },
142
- get TEMPLE_PARTY_ID() { return getNetworkContract("TEMPLE_PARTY_ID"); },
143
-
144
- // Auth0 settings
145
- get AUTH0_TOKEN_URL() { return getConfigValue("AUTH0_TOKEN_URL"); },
146
- get AUTH0_USER_ID() { return getConfigValue("AUTH0_USER_ID"); },
147
- get AUTH0_CLIENT_ID() { return getConfigValue("AUTH0_CLIENT_ID"); },
148
- get AUTH0_CLIENT_SECRET() { return getConfigValue("AUTH0_CLIENT_SECRET"); },
149
- get AUTH0_AUDIENCE() { return getConfigValue("AUTH0_AUDIENCE"); },
150
- get JWT_TOKEN() { return getConfigValue("JWT_TOKEN"); },
151
- AUTH0_SCOPE: "daml_ledger_api",
152
- AUTH0_GRANT_TYPE: "client_credentials",
153
-
154
- // Allocation metadata tag — written into settlement.meta on every allocation
155
- ALLOCATION_META_TAG: "temple-clob-v2",
156
-
157
- // Canton Package Names (version-independent, persist across upgrades)
158
- PACKAGE_NAME_SETTLEMENT_IMPL: "#temple-settlement-impl",
159
- PACKAGE_NAME_SETTLEMENT_INTERFACE: "#temple-settlement-interface",
160
-
161
- // Canton Package IDs (hardcoded - these rarely change)
162
- PACKAGE_UTILITY_APP_ID: "dd3a9f2d51cc4c52d9ec2e1d7ff235298dcfb3afd1d50ab44328b1aaa9a18587", // utility-registry-holding-v0-0.1.2.dar
163
- PACKAGE_SPLICE_ID: "67fac2f853bce8dbf0b9817bb5ba7c59f10e8120b7c808696f7010e5f0c8a791", // splice-amulet-0.1.15.dar
164
- PACKAGE_TEMPLE_ID: "a5c99f1f6e614c2e2c30498db8652eca6c9b4801b6ba09755ad50ef982f2273c", // temple-order-impl-3.1.9.dar
165
- INTERFACE_TEMPLE_ID: "e833b8cc28483f87e5db3f46c1beb2e9d595bf8d575728d640f2632ce6d8211d", // temple-order-interface-3.1.0.dar
166
- PACKAGE_UTILITY_APP_REGISTRY_APP_ID: "170929b11d5f0ed1385f890f42887c31ff7e289c0f4bc482aff193a7173d576c", // utility-app-registry-app-v0-0.1.2.dar
167
- PACKAGE_UTILITY_APP_REGISTRY_ID: "ed73d5b9ab717333f3dbd122de7be3156f8bf2614a67360c3dd61fc0135133fa", // utility-app-registry-v0-0.1.2.dar
168
- PACKAGE_UTILITY_APP_CREDENTIAL_ID: "77df4e7b980c12de438d7b052141a762215fae790d81f71179c8fb534beb68f7", // utility-app-credential-v0-0.1.2.dar
169
-
170
- // Orchestrator Contract (network-aware: resolved from NETWORK_CONTRACTS based on NETWORK setting)
171
- get CONTRACT_ORCHESTRATOR_ID() { return getNetworkContract("CONTRACT_ORCHESTRATOR_ID"); },
172
- get TEMPLATE_ID_ORCHESTRATOR() { return getNetworkContract("TEMPLATE_ID_ORCHESTRATOR"); },
173
- get DISCLOSURE_ORCHESTRATOR() { return getNetworkContract("DISCLOSURE_ORCHESTRATOR"); },
174
- get SYNCHRONIZER_ORCHESTRATOR() { return getNetworkContract("SYNCHRONIZER_ORCHESTRATOR"); },
175
-
176
- // Featured App Contract (network-aware: resolved from NETWORK_CONTRACTS based on NETWORK setting)
177
- get CONTRACT_FEATURED_APP_ID() { return getNetworkContract("CONTRACT_FEATURED_APP_ID"); },
178
- get TEMPLATE_ID_FEATURED_APP() { return getNetworkContract("TEMPLATE_ID_FEATURED_APP"); },
179
- get DISCLOSURE_FEATURED_APP() { return getNetworkContract("DISCLOSURE_FEATURED_APP"); },
180
- get SYNCHRONIZER_FEATURED_APP() { return getNetworkContract("SYNCHRONIZER_FEATURED_APP"); },
181
-
182
- };
183
-
184
- // Export config object - access properties like config.VALIDATOR_API_URL for real-time values
185
- export { config };
186
-
187
- // Default export for convenience
188
- export default config;
1
+ // Load .env file if available (for Node.js environments)
2
+ if (typeof process !== 'undefined' && process.env) {
3
+ import('dotenv').then(({ config: loadDotenv }) => loadDotenv()).catch(() => {});
4
+ }
5
+
6
+ // Global config object that can be set by the consuming application
7
+ let appConfig = null;
8
+
9
+ // Re-export wallet adapter functions
10
+ export { setWalletAdapter, getWalletAdapter, getAdapterProvider } from "../canton/walletAdapter.js";
11
+
12
+ /**
13
+ * Initialize the library with a configuration object.
14
+ * This should be called by the consuming application before using the library.
15
+ * @param {Object} config - Configuration object with all required settings
16
+ */
17
+ export function initializeConfig(config) {
18
+ appConfig = config;
19
+ }
20
+
21
+ /**
22
+ * Update the JWT token without re-initializing the full config.
23
+ * Useful when refreshing tokens for custom validator connections.
24
+ * @param {string} token - The new JWT token
25
+ */
26
+ export function setJWTToken(token) {
27
+ if (!appConfig) {
28
+ appConfig = {};
29
+ }
30
+ appConfig.JWT_TOKEN = token;
31
+ }
32
+
33
+ /**
34
+ * Get a configuration value from:
35
+ * 1. App-provided config (if initializeConfig was called)
36
+ * 2. Environment variables (process.env)
37
+ */
38
+ export function getConfigValue(key) {
39
+ // First check app-provided config
40
+ if (appConfig && appConfig[key] !== undefined) {
41
+ return appConfig[key];
42
+ }
43
+
44
+ // Then check environment variables
45
+ if (typeof process !== 'undefined' && process.env && process.env[key]) {
46
+ const value = process.env[key];
47
+ if (value && value.trim().length > 0) {
48
+ return value;
49
+ }
50
+ }
51
+
52
+ return undefined;
53
+ }
54
+
55
+ // Network constants
56
+ export const NETWORK_LOCALHOST = "localhost";
57
+ export const NETWORK_TESTNET = "testnet";
58
+ export const NETWORK_MAINNET = "mainnet";
59
+
60
+ // Network-specific contract values (Orchestrator & Featured App)
61
+ const NETWORK_CONTRACTS = {
62
+ [NETWORK_MAINNET]: {
63
+ TEMPLE_PARTY_ID: "temple-mainnet-1::1220f238bb79df3efbbac2ea964c3cd501003971a2cb59043e2dac50b06e85b8620f",
64
+ VALIDATOR_DSO_PARTY_ID: "DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
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
+ SYNCHRONIZER_ORCHESTRATOR: "global-domain::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
69
+ CONTRACT_FEATURED_APP_ID: "001bac86a228f209faad6e7a4adf40cd17b8aa7605f166333d640ad3f0c172eeb6ca111220da4eb40ed3d6f4521dcacf25d027c02f4bd0b9c561bc17d76808d30239c75713",
70
+ TEMPLATE_ID_FEATURED_APP: "a5b055492fb8f08b2e7bc0fc94da6da50c39c2e1d7f24cd5ea8db12fc87c1332:Splice.Amulet:FeaturedAppRight",
71
+ DISCLOSURE_FEATURED_APP: "CgMyLjESxQQKRQAbrIaiKPIJ+q1uekrfQM0XuKp2BfFmMz1kCtPwwXLutsoREiDaTrQO09b0Uh3KzyXQJ8AvS9C5xWG8F9doCNMCOcdXExINc3BsaWNlLWFtdWxldBpkCkBhNWIwNTU0OTJmYjhmMDhiMmU3YmMwZmM5NGRhNmRhNTBjMzljMmUxZDdmMjRjZDVlYThkYjEyZmM4N2MxMzMyEgZTcGxpY2USBkFtdWxldBoQRmVhdHVyZWRBcHBSaWdodCKuAWqrAQpNCks6SURTTzo6MTIyMGIxNDMxZWYyMTczNDJkYjQ0ZDUxNmJiOWJlZmRlODAyYmU3ZDg4OTk2MzdkMjkwODk1ZmE1ODg4MGYxOWFjY2MKWgpYOlZ0ZW1wbGUtbWFpbm5ldC0xOjoxMjIwZjIzOGJiNzlkZjNlZmJiYWMyZWE5NjRjM2NkNTAxMDAzOTcxYTJjYjU5MDQzZTJkYWM1MGIwNmU4NWI4NjIwZipJRFNPOjoxMjIwYjE0MzFlZjIxNzM0MmRiNDRkNTE2YmI5YmVmZGU4MDJiZTdkODg5OTYzN2QyOTA4OTVmYTU4ODgwZjE5YWNjYzJWdGVtcGxlLW1haW5uZXQtMTo6MTIyMGYyMzhiYjc5ZGYzZWZiYmFjMmVhOTY0YzNjZDUwMTAwMzk3MWEyY2I1OTA0M2UyZGFjNTBiMDZlODViODYyMGY5IyrofYw+BgBCKgomCiQIARIg55YoiScl03uK9v+SGTSxao39IQXlQK445Jxczbp74NAQHg==",
72
+ SYNCHRONIZER_FEATURED_APP: "global-domain::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
73
+ },
74
+ [NETWORK_TESTNET]: {
75
+ TEMPLE_PARTY_ID: "temple-testnet-1::12209b8dd6bb0fdc220f1a78ec54a10ece9e959e30d369c391b2f1efdb84f2b48262",
76
+ VALIDATOR_DSO_PARTY_ID: "DSO::1220f22a8b8f2d813c25b9a684dc4dd52b532a0174d8e73a13cdf2baabfff7518337",
77
+ CONTRACT_ORCHESTRATOR_ID: "00fa1edf419117ea79548d54ec6754d3c37a433cf6ec9cea552630b94f5c9f71d9ca121220ffb75178ba721c19ea809085757b1a168a0a58fb52b93bd298fbad26509fe4bd",
78
+ TEMPLATE_ID_ORCHESTRATOR: "a5c99f1f6e614c2e2c30498db8652eca6c9b4801b6ba09755ad50ef982f2273c:Temple.Order.Orchestrator:Orchestrator",
79
+ DISCLOSURE_ORCHESTRATOR: "CgMyLjEStgMKRQD6Ht9BkRfqeVSNVOxnVNPDekM89uyc6lUmMLlPXJ9x2coSEiD/t1F4unIcGeqAkIV1exoWigpY+1K5O9KY+60mUJ/kvRIRdGVtcGxlLW9yZGVyLWltcGwabQpAYTVjOTlmMWY2ZTYxNGMyZTJjMzA0OThkYjg2NTJlY2E2YzliNDgwMWI2YmEwOTc1NWFkNTBlZjk4MmYyMjczYxIGVGVtcGxlEgVPcmRlchIMT3JjaGVzdHJhdG9yGgxPcmNoZXN0cmF0b3IiXmpcCloKWDpWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjIqVnRlbXBsZS10ZXN0bmV0LTE6OjEyMjA5YjhkZDZiYjBmZGMyMjBmMWE3OGVjNTRhMTBlY2U5ZTk1OWUzMGQzNjljMzkxYjJmMWVmZGI4NGYyYjQ4MjYyOUK//cFLTAYAQioKJgokCAESIHeaC3pOxvMHGC7pjsEMpZKn8Uvf7OVL3gP4vjOCc1ZOEB4=",
80
+ SYNCHRONIZER_ORCHESTRATOR: "global-domain::1220f22a8b8f2d813c25b9a684dc4dd52b532a0174d8e73a13cdf2baabfff7518337",
81
+ CONTRACT_FEATURED_APP_ID: "0072f0a3b647d75fdb1ddba78ce379bc836c748256d93cb7b2655e3ef8b3eca412ca12122090530c2e189e8a42d351ae29c977c81318efa59717e355dbf9f670b515112bbe",
82
+ TEMPLATE_ID_FEATURED_APP: "3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1:Splice.Amulet:FeaturedAppRight",
83
+ DISCLOSURE_FEATURED_APP: "CgMyLjESxQQKRQBy8KO2R9df2x3bp4zjebyDbHSCVtk8t7JlXj74s+ykEsoSEiCQUwwuGJ6KQtNRrinJd8gTGO+llxfjVdv59nC1FRErvhINc3BsaWNlLWFtdWxldBpkCkAzY2ExMzQzYWIyNmI0NTNkMzhjOGFkYjcwZGNhNWYxZWFkODQ0MGM0MmI1OWI2OGYwNzA3ODY5NTVjYmY5ZWMxEgZTcGxpY2USBkFtdWxldBoQRmVhdHVyZWRBcHBSaWdodCKuAWqrAQpNCks6SURTTzo6MTIyMGYyMmE4YjhmMmQ4MTNjMjViOWE2ODRkYzRkZDUyYjUzMmEwMTc0ZDhlNzNhMTNjZGYyYmFhYmZmZjc1MTgzMzcKWgpYOlZ0ZW1wbGUtdGVzdG5ldC0xOjoxMjIwOWI4ZGQ2YmIwZmRjMjIwZjFhNzhlYzU0YTEwZWNlOWU5NTllMzBkMzY5YzM5MWIyZjFlZmRiODRmMmI0ODI2MipJRFNPOjoxMjIwZjIyYThiOGYyZDgxM2MyNWI5YTY4NGRjNGRkNTJiNTMyYTAxNzRkOGU3M2ExM2NkZjJiYWFiZmZmNzUxODMzNzJWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjI5kSQjLJNGBgBCKgomCiQIARIgDqjhIjKcVURincLUIVg1viT9uWbjs2UBT9UVpPuW/E0QHg==",
84
+ SYNCHRONIZER_FEATURED_APP: "global-domain::1220f22a8b8f2d813c25b9a684dc4dd52b532a0174d8e73a13cdf2baabfff7518337",
85
+ },
86
+ [NETWORK_LOCALHOST]: {
87
+ TEMPLE_PARTY_ID: "Temple::12201815d4e8ff48629daed3b26260664fc7f17ca5cfdead177398188440062c99f2",
88
+ VALIDATOR_DSO_PARTY_ID: "DSO::12201815d4e8ff48629daed3b26260664fc7f17ca5cfdead177398188440062c99f2",
89
+ CONTRACT_ORCHESTRATOR_ID: "00ef7791cb51b45194791ba1d6d83f969878f17dfde50970daf9f8279c87417346ca1212202bb3d941b036cfcb8893b99d1ffd1bcc66e3999b5d67d4f6b77a728298f4fcdf",
90
+ TEMPLATE_ID_ORCHESTRATOR: "0110667c2e17ca40d2aa7396d3b40e228c770d203676b6950ac819de86cf6964:Temple.Order.Orchestrator:Orchestrator",
91
+ DISCLOSURE_ORCHESTRATOR: "CgMyLjEStgMKRQDvd5HLUbRRlHkbodbYP5aYePF9/eUJcNr5+Cech0FzRsoSEiArs9lBsDbPy4iTuZ0f/RvMZuOZm11n1Pa3enKCmPT83xIRdGVtcGxlLW9yZGVyLWltcGwabQpAMDExMDY2N2MyZTE3Y2E0MGQyYWE3Mzk2ZDNiNDBlMjI4Yzc3MGQyMDM2NzZiNjk1MGFjODE5ZGU4NmNmNjk2NBIGVGVtcGxlEgVPcmRlchIMT3JjaGVzdHJhdG9yGgxPcmNoZXN0cmF0b3IiXmpcCloKWDpWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjIqVnRlbXBsZS10ZXN0bmV0LTE6OjEyMjA5YjhkZDZiYjBmZGMyMjBmMWE3OGVjNTRhMTBlY2U5ZTk1OWUzMGQzNjljMzkxYjJmMWVmZGI4NGYyYjQ4MjYyOREf61eFSAYAQioKJgokCAESIIENK9R3ypVBYdnm6oV0J/a3GgdUNLbBFReq5znIYhc4EB4=",
92
+ SYNCHRONIZER_ORCHESTRATOR: "global-domain::12201815d4e8ff48629daed3b26260664fc7f17ca5cfdead177398188440062c99f2",
93
+ CONTRACT_FEATURED_APP_ID: "0072f0a3b647d75fdb1ddba78ce379bc836c748256d93cb7b2655e3ef8b3eca412ca12122090530c2e189e8a42d351ae29c977c81318efa59717e355dbf9f670b515112bbe",
94
+ TEMPLATE_ID_FEATURED_APP: "3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1:Splice.Amulet:FeaturedAppRight",
95
+ DISCLOSURE_FEATURED_APP: "CgMyLjESxQQKRQBy8KO2R9df2x3bp4zjebyDbHSCVtk8t7JlXj74s+ykEsoSEiCQUwwuGJ6KQtNRrinJd8gTGO+llxfjVdv59nC1FRErvhINc3BsaWNlLWFtdWxldBpkCkAzY2ExMzQzYWIyNmI0NTNkMzhjOGFkYjcwZGNhNWYxZWFkODQ0MGM0MmI1OWI2OGYwNzA3ODY5NTVjYmY5ZWMxEgZTcGxpY2USBkFtdWxldBoQRmVhdHVyZWRBcHBSaWdodCKuAWqrAQpNCks6SURTTzo6MTIyMGYyMmE4YjhmMmQ4MTNjMjViOWE2ODRkYzRkZDUyYjUzMmEwMTc0ZDhlNzNhMTNjZGYyYmFhYmZmZjc1MTgzMzcKWgpYOlZ0ZW1wbGUtdGVzdG5ldC0xOjoxMjIwOWI4ZGQ2YmIwZmRjMjIwZjFhNzhlYzU0YTEwZWNlOWU5NTllMzBkMzY5YzM5MWIyZjFlZmRiODRmMmI0ODI2MipJRFNPOjoxMjIwZjIyYThiOGYyZDgxM2MyNWI5YTY4NGRjNGRkNTJiNTMyYTAxNzRkOGU3M2ExM2NkZjJiYWFiZmZmNzUxODMzNzJWdGVtcGxlLXRlc3RuZXQtMTo6MTIyMDliOGRkNmJiMGZkYzIyMGYxYTc4ZWM1NGExMGVjZTllOTU5ZTMwZDM2OWMzOTFiMmYxZWZkYjg0ZjJiNDgyNjI5kSQjLJNGBgBCKgomCiQIARIgDqjhIjKcVURincLUIVg1viT9uWbjs2UBT9UVpPuW/E0QHg==",
96
+ SYNCHRONIZER_FEATURED_APP: "global-domain::12201815d4e8ff48629daed3b26260664fc7f17ca5cfdead177398188440062c99f2",
97
+ },
98
+ };
99
+
100
+ /**
101
+ * Get a network-specific contract value based on the current NETWORK setting.
102
+ * Falls back to mainnet if the current network has no contract values defined.
103
+ */
104
+ function getNetworkContract(key) {
105
+ const network = getConfigValue("NETWORK") || NETWORK_MAINNET;
106
+ const contracts = NETWORK_CONTRACTS[network] || NETWORK_CONTRACTS[NETWORK_MAINNET];
107
+ return contracts ? contracts[key] : undefined;
108
+ }
109
+
110
+ // Config object with getters for real-time value resolution
111
+ // Values are evaluated on each access, not cached at module load time
112
+ const config = {
113
+ // Network setting (localhost, testnet, mainnet) - defaults to mainnet
114
+ get NETWORK() { return getConfigValue("NETWORK") || NETWORK_MAINNET; },
115
+
116
+ // Temple REST API
117
+ get API_BASE_URL() {
118
+ const network = getConfigValue("NETWORK") || NETWORK_MAINNET;
119
+ if (network === NETWORK_TESTNET) return "https://api-testnet.templedigitalgroup.com";
120
+ return "https://api.templedigitalgroup.com";
121
+ },
122
+ get API_EMAIL() { return getConfigValue("API_EMAIL"); },
123
+ get API_PASSWORD() { return getConfigValue("API_PASSWORD"); },
124
+ get API_KEY() { return getConfigValue("API_KEY"); },
125
+
126
+ // WebSocket
127
+ get WS_URL() {
128
+ const network = getConfigValue("NETWORK") || NETWORK_MAINNET;
129
+ if (network === NETWORK_TESTNET) return "wss://ws-dev.templedigitalgroup.com/v1/stream";
130
+ return "wss://ws.templedigitalgroup.com/v1/stream";
131
+ },
132
+
133
+ // Validator connection settings
134
+ get VALIDATOR_API_URL() { return getConfigValue("VALIDATOR_API_URL"); },
135
+ get VALIDATOR_SCAN_API_URL() { return getConfigValue("VALIDATOR_SCAN_API_URL"); },
136
+
137
+ // Temple Backend API (trading orders, withdrawals)
138
+ get TEMPLE_BACKEND_API_URL() { return getConfigValue("TEMPLE_BACKEND_API_URL"); },
139
+ get VALIDATOR_DSO_PARTY_ID() { return getNetworkContract("VALIDATOR_DSO_PARTY_ID"); },
140
+ get VALIDATOR_USER_PARTY_ID() { return getConfigValue("VALIDATOR_USER_PARTY_ID"); },
141
+ get VALIDATOR_REGISTRAR_PARTY_ID() { return getConfigValue("VALIDATOR_REGISTRAR_PARTY_ID"); },
142
+ get TEMPLE_PARTY_ID() { return getNetworkContract("TEMPLE_PARTY_ID"); },
143
+
144
+ // Auth0 settings
145
+ get AUTH0_TOKEN_URL() { return getConfigValue("AUTH0_TOKEN_URL"); },
146
+ get AUTH0_USER_ID() { return getConfigValue("AUTH0_USER_ID"); },
147
+ get AUTH0_CLIENT_ID() { return getConfigValue("AUTH0_CLIENT_ID"); },
148
+ get AUTH0_CLIENT_SECRET() { return getConfigValue("AUTH0_CLIENT_SECRET"); },
149
+ get AUTH0_AUDIENCE() { return getConfigValue("AUTH0_AUDIENCE"); },
150
+ get JWT_TOKEN() { return getConfigValue("JWT_TOKEN"); },
151
+ AUTH0_SCOPE: "daml_ledger_api",
152
+ AUTH0_GRANT_TYPE: "client_credentials",
153
+
154
+ // Allocation metadata tag — written into settlement.meta on every allocation
155
+ ALLOCATION_META_TAG: "temple-clob-v2",
156
+
157
+ // Canton Package Names (version-independent, persist across upgrades)
158
+ PACKAGE_NAME_SETTLEMENT_IMPL: "#temple-settlement-impl",
159
+ PACKAGE_NAME_SETTLEMENT_INTERFACE: "#temple-settlement-interface",
160
+
161
+ // Canton Package IDs (hardcoded - these rarely change)
162
+ PACKAGE_UTILITY_APP_ID: "dd3a9f2d51cc4c52d9ec2e1d7ff235298dcfb3afd1d50ab44328b1aaa9a18587", // utility-registry-holding-v0-0.1.2.dar
163
+ PACKAGE_SPLICE_ID: "67fac2f853bce8dbf0b9817bb5ba7c59f10e8120b7c808696f7010e5f0c8a791", // splice-amulet-0.1.15.dar
164
+ PACKAGE_TEMPLE_ID: "a5c99f1f6e614c2e2c30498db8652eca6c9b4801b6ba09755ad50ef982f2273c", // temple-order-impl-3.1.9.dar
165
+ INTERFACE_TEMPLE_ID: "e833b8cc28483f87e5db3f46c1beb2e9d595bf8d575728d640f2632ce6d8211d", // temple-order-interface-3.1.0.dar
166
+ PACKAGE_UTILITY_APP_REGISTRY_APP_ID: "170929b11d5f0ed1385f890f42887c31ff7e289c0f4bc482aff193a7173d576c", // utility-app-registry-app-v0-0.1.2.dar
167
+ PACKAGE_UTILITY_APP_REGISTRY_ID: "ed73d5b9ab717333f3dbd122de7be3156f8bf2614a67360c3dd61fc0135133fa", // utility-app-registry-v0-0.1.2.dar
168
+ PACKAGE_UTILITY_APP_CREDENTIAL_ID: "77df4e7b980c12de438d7b052141a762215fae790d81f71179c8fb534beb68f7", // utility-app-credential-v0-0.1.2.dar
169
+
170
+ // Orchestrator Contract (network-aware: resolved from NETWORK_CONTRACTS based on NETWORK setting)
171
+ get CONTRACT_ORCHESTRATOR_ID() { return getNetworkContract("CONTRACT_ORCHESTRATOR_ID"); },
172
+ get TEMPLATE_ID_ORCHESTRATOR() { return getNetworkContract("TEMPLATE_ID_ORCHESTRATOR"); },
173
+ get DISCLOSURE_ORCHESTRATOR() { return getNetworkContract("DISCLOSURE_ORCHESTRATOR"); },
174
+ get SYNCHRONIZER_ORCHESTRATOR() { return getNetworkContract("SYNCHRONIZER_ORCHESTRATOR"); },
175
+
176
+ // Featured App Contract (network-aware: resolved from NETWORK_CONTRACTS based on NETWORK setting)
177
+ get CONTRACT_FEATURED_APP_ID() { return getNetworkContract("CONTRACT_FEATURED_APP_ID"); },
178
+ get TEMPLATE_ID_FEATURED_APP() { return getNetworkContract("TEMPLATE_ID_FEATURED_APP"); },
179
+ get DISCLOSURE_FEATURED_APP() { return getNetworkContract("DISCLOSURE_FEATURED_APP"); },
180
+ get SYNCHRONIZER_FEATURED_APP() { return getNetworkContract("SYNCHRONIZER_FEATURED_APP"); },
181
+
182
+ };
183
+
184
+ // Export config object - access properties like config.VALIDATOR_API_URL for real-time values
185
+ export { config };
186
+
187
+ // Default export for convenience
188
+ export default config;