@wuwei-labs/srsly 4.0.0 → 4.1.0

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wuwei-labs/srsly",
3
- "version": "4.0.0-beta.2",
3
+ "version": "4.1.0",
4
4
  "description": "TypeScript SDK for SRSLY",
5
5
  "sideEffects": false,
6
6
  "publishConfig": {
@@ -6,13 +6,26 @@
6
6
  * Supports mainnet-beta, devnet, and localnet environments.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ATLASNET_ADDRESSES = exports.MAINNET_ADDRESSES = void 0;
9
+ exports.ATLASNET_ADDRESSES = exports.MAINNET_ADDRESSES = exports.ATLASNET_GENESIS = exports.DEVNET_GENESIS = exports.MAINNET_GENESIS = void 0;
10
+ exports.resolveGenesisHash = resolveGenesisHash;
10
11
  exports.getProgramAddresses = getProgramAddresses;
11
12
  exports.getNetworkAddresses = getNetworkAddresses;
12
13
  exports.isValidProgramSet = isValidProgramSet;
13
14
  exports.isValidNetwork = isValidNetwork;
14
15
  const codama_1 = require("../generated/codama");
15
16
  const constants_1 = require("../pda/constants");
17
+ /**
18
+ * Genesis hash constants — canonical chain identifiers
19
+ */
20
+ exports.MAINNET_GENESIS = '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d';
21
+ exports.DEVNET_GENESIS = 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG';
22
+ exports.ATLASNET_GENESIS = 'Ccod9gttTtZWqCeMgyTW3iCSoPLjkptAGsBUeP2CpchR';
23
+ const ALIAS_TO_GENESIS = {
24
+ 'mainnet': exports.MAINNET_GENESIS,
25
+ 'atlasnet': exports.ATLASNET_GENESIS,
26
+ 'holosim': exports.ATLASNET_GENESIS,
27
+ 'localnet': exports.ATLASNET_GENESIS,
28
+ };
16
29
  /**
17
30
  * Antegen program address (same across all networks)
18
31
  */
@@ -42,14 +55,27 @@ const ATLASNET_ADDRESSES = {
42
55
  };
43
56
  exports.ATLASNET_ADDRESSES = ATLASNET_ADDRESSES;
44
57
  /**
45
- * Program address mappings
58
+ * Program address sets keyed by genesis hash (source of truth)
46
59
  */
47
60
  const PROGRAM_ADDRESS_SETS = {
48
- 'mainnet': MAINNET_ADDRESSES,
49
- 'atlasnet': ATLASNET_ADDRESSES,
50
- 'holosim': ATLASNET_ADDRESSES,
51
- 'localnet': ATLASNET_ADDRESSES
61
+ [exports.MAINNET_GENESIS]: MAINNET_ADDRESSES,
62
+ [exports.DEVNET_GENESIS]: ATLASNET_ADDRESSES,
63
+ [exports.ATLASNET_GENESIS]: ATLASNET_ADDRESSES,
52
64
  };
65
+ /**
66
+ * Resolve a program set input (alias or genesis hash) to a genesis hash
67
+ *
68
+ * @param programSet - Named alias or genesis hash string
69
+ * @returns Genesis hash string
70
+ */
71
+ function resolveGenesisHash(programSet) {
72
+ // Check if it's a named alias
73
+ if (programSet in ALIAS_TO_GENESIS) {
74
+ return ALIAS_TO_GENESIS[programSet];
75
+ }
76
+ // Otherwise treat as genesis hash directly
77
+ return programSet;
78
+ }
53
79
  /**
54
80
  * Get addresses for a specific program set
55
81
  *
@@ -67,9 +93,11 @@ const PROGRAM_ADDRESS_SETS = {
67
93
  * ```
68
94
  */
69
95
  function getProgramAddresses(programSet) {
70
- const addresses = PROGRAM_ADDRESS_SETS[programSet];
96
+ const genesisHash = resolveGenesisHash(programSet);
97
+ const addresses = PROGRAM_ADDRESS_SETS[genesisHash];
71
98
  if (!addresses) {
72
- throw new Error(`Unknown program set: ${programSet}. Valid sets: mainnet, atlasnet, holosim, localnet`);
99
+ // Unknown genesis hash fall back to devnet addresses
100
+ return PROGRAM_ADDRESS_SETS[exports.DEVNET_GENESIS];
73
101
  }
74
102
  return addresses;
75
103
  }
@@ -86,7 +114,13 @@ function getNetworkAddresses(network) {
86
114
  * @returns True if program set is supported
87
115
  */
88
116
  function isValidProgramSet(programSet) {
89
- return programSet === 'mainnet' || programSet === 'atlasnet' || programSet === 'localnet';
117
+ // Accept named aliases
118
+ if (programSet in ALIAS_TO_GENESIS)
119
+ return true;
120
+ // Accept known genesis hashes
121
+ if (programSet in PROGRAM_ADDRESS_SETS)
122
+ return true;
123
+ return false;
90
124
  }
91
125
  /**
92
126
  * @deprecated Use isValidProgramSet instead
@@ -1 +1 @@
1
- {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/utils/addresses.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA8FH,kDAUC;AAKD,kDAEC;AAQD,8CAEC;AAKD,wCAEC;AA7HD,gDAA4D;AAC5D,gDAA0D;AAmC1D;;GAEG;AACH,MAAM,eAAe,GAAG,kCAAsB,CAAC;AAE/C;;GAEG;AACH,MAAM,iBAAiB,GAAqB;IAC1C,KAAK,EAAE,8BAAqB;IAC5B,IAAI,EAAE,6CAA6C;IACnD,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,8CAA8C;IACzD,cAAc,EAAE,6CAA6C;IAC7D,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAgFA,8CAAiB;AA9EnB;;GAEG;AACH,MAAM,kBAAkB,GAAqB;IAC3C,KAAK,EAAE,8BAAqB;IAC5B,IAAI,EAAE,6CAA6C;IACnD,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,8CAA8C;IACzD,cAAc,EAAE,6CAA6C;IAC7D,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAqEA,gDAAkB;AAnEpB;;GAEG;AACH,MAAM,oBAAoB,GAAyC;IACjE,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,kBAAkB;CAC/B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,mBAAmB,CAAC,UAAsB;IACxD,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wBAAwB,UAAU,oDAAoD,CACvF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,OAAmB;IACrD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,UAAkB;IAClD,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,UAAU,CAAC;AAC5F,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC5C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/utils/addresses.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqGH,gDAOC;AAkBD,kDAUC;AAKD,kDAEC;AAQD,8CAMC;AAKD,wCAEC;AAjKD,gDAA4D;AAC5D,gDAA0D;AAE1D;;GAEG;AACU,QAAA,eAAe,GAAG,8CAA8C,CAAC;AACjE,QAAA,cAAc,GAAG,8CAA8C,CAAC;AAChE,QAAA,gBAAgB,GAAG,8CAA8C,CAAC;AAO/E,MAAM,gBAAgB,GAAoC;IACxD,SAAS,EAAE,uBAAe;IAC1B,UAAU,EAAE,wBAAgB;IAC5B,SAAS,EAAE,wBAAgB;IAC3B,UAAU,EAAE,wBAAgB;CAC7B,CAAC;AAkCF;;GAEG;AACH,MAAM,eAAe,GAAG,kCAAsB,CAAC;AAE/C;;GAEG;AACH,MAAM,iBAAiB,GAAqB;IAC1C,KAAK,EAAE,8BAAqB;IAC5B,IAAI,EAAE,6CAA6C;IACnD,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,8CAA8C;IACzD,cAAc,EAAE,6CAA6C;IAC7D,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAkGA,8CAAiB;AAhGnB;;GAEG;AACH,MAAM,kBAAkB,GAAqB;IAC3C,KAAK,EAAE,8BAAqB;IAC5B,IAAI,EAAE,6CAA6C;IACnD,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,8CAA8C;IACzD,cAAc,EAAE,6CAA6C;IAC7D,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAuFA,gDAAkB;AArFpB;;GAEG;AACH,MAAM,oBAAoB,GAAqC;IAC7D,CAAC,uBAAe,CAAC,EAAE,iBAAiB;IACpC,CAAC,sBAAc,CAAC,EAAE,kBAAkB;IACpC,CAAC,wBAAgB,CAAC,EAAE,kBAAkB;CACvC,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,UAAkB;IACnD,8BAA8B;IAC9B,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC,UAA6B,CAAC,CAAC;IACzD,CAAC;IACD,2CAA2C;IAC3C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,mBAAmB,CAAC,UAAsB;IACxD,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,uDAAuD;QACvD,OAAO,oBAAoB,CAAC,sBAAc,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,OAAmB;IACrD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,UAAkB;IAClD,uBAAuB;IACvB,IAAI,UAAU,IAAI,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAChD,8BAA8B;IAC9B,IAAI,UAAU,IAAI,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC5C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
@@ -15,17 +15,27 @@ exports.getProgramId = getProgramId;
15
15
  exports.getCommitment = getCommitment;
16
16
  exports.getAffiliateConfig = getAffiliateConfig;
17
17
  exports.getAddresses = getAddresses;
18
+ exports.detectProgramSet = detectProgramSet;
18
19
  const codama_1 = require("../generated/codama");
19
20
  const addresses_1 = require("./addresses");
21
+ const rpc_1 = require("./rpc");
20
22
  const slyvault_1 = require("@wuwei-labs/slyvault");
21
23
  /**
22
- * Default RPC URLs for each program set
24
+ * Default RPC URLs keyed by genesis hash
23
25
  */
24
26
  const DEFAULT_RPC_URLS = {
27
+ [addresses_1.MAINNET_GENESIS]: 'https://api.mainnet-beta.solana.com',
28
+ [addresses_1.DEVNET_GENESIS]: 'https://api.devnet.solana.com',
29
+ // ATLASNET_GENESIS has no public RPC — requires custom URL via config
30
+ };
31
+ /**
32
+ * Alias-based RPC URL fallbacks (for localnet and named aliases)
33
+ */
34
+ const ALIAS_RPC_URLS = {
25
35
  'atlasnet': 'https://api.devnet.solana.com',
26
36
  'holosim': 'https://api.devnet.solana.com',
27
37
  'mainnet': 'https://api.mainnet-beta.solana.com',
28
- 'localnet': 'http://localhost:8899'
38
+ 'localnet': 'http://localhost:8899',
29
39
  };
30
40
  /**
31
41
  * Default SRSLY program ID (from generated code)
@@ -111,7 +121,12 @@ function mergeConfig(overrides) {
111
121
  */
112
122
  function getRpcUrl(config) {
113
123
  const finalConfig = mergeConfig(config);
114
- return finalConfig.rpcUrl || DEFAULT_RPC_URLS[finalConfig.programs] || DEFAULT_RPC_URLS.atlasnet;
124
+ if (finalConfig.rpcUrl)
125
+ return finalConfig.rpcUrl;
126
+ // Try genesis-hash-keyed lookup first, then alias fallback
127
+ return DEFAULT_RPC_URLS[finalConfig.programs]
128
+ || ALIAS_RPC_URLS[finalConfig.programs]
129
+ || DEFAULT_RPC_URLS[addresses_1.DEVNET_GENESIS];
115
130
  }
116
131
  /**
117
132
  * Get the effective program ID for a configuration
@@ -174,4 +189,24 @@ function getAddresses(config) {
174
189
  srsly: finalConfig.programId || networkAddresses.srsly
175
190
  };
176
191
  }
192
+ /**
193
+ * Auto-detect the correct program set by querying the chain's genesis hash
194
+ *
195
+ * Returns the raw genesis hash string, which can be passed directly to
196
+ * `setSdkConfig({ programs: genesisHash })` or `getProgramAddresses(genesisHash)`.
197
+ *
198
+ * @param rpcUrl - RPC endpoint URL to query
199
+ * @returns Genesis hash string identifying the chain
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * const genesisHash = await detectProgramSet('https://api.mainnet-beta.solana.com');
204
+ * setSdkConfig({ programs: genesisHash });
205
+ * ```
206
+ */
207
+ async function detectProgramSet(rpcUrl) {
208
+ const rpc = (0, rpc_1.createRpc)(rpcUrl);
209
+ const genesisHash = await rpc.getGenesisHash().send();
210
+ return genesisHash;
211
+ }
177
212
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAwJH,oCAQC;AAOD,oCAEC;AAKD,wCAIC;AAQD,kCAEC;AAQD,8BAGC;AAQD,oCAEC;AAQD,sCAEC;AAQD,gDAGC;AA0BD,oCASC;AAtQD,gDAA4D;AAC5D,2CAAwI;AACxI,mDAAgG;AA4FhG;;GAEG;AACH,MAAM,gBAAgB,GAA+B;IACnD,UAAU,EAAE,+BAA+B;IAC3C,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,qCAAqC;IAChD,UAAU,EAAE,uBAAuB;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAG,8BAAqB,CAAC;AAEjD;;GAEG;AACH,IAAI,YAAY,GAAc;IAC5B,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAgB,YAAY,CAAC,MAA0B;IACrD,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAE9C,4CAA4C;IAC5C,IAAA,uBAAoB,EAAC;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY;IAC1B,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,YAAY,GAAG;QACb,QAAQ,EAAE,UAAU;KACrB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,SAA8B;IACxD,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,MAA2B;IACnD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,WAAW,CAAC,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC;AACnG,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,MAAiB;IAC5C,OAAO,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,MAAiB;IAC7C,OAAO,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,MAA2B;IAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,YAAY,CAAC,MAA2B;IACtD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,IAAA,+BAAmB,EAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEnE,uDAAuD;IACvD,OAAO;QACL,GAAG,gBAAgB;QACnB,KAAK,EAAE,WAAW,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAkKH,oCAQC;AAOD,oCAEC;AAKD,wCAIC;AAQD,kCAEC;AAQD,8BAOC;AAQD,oCAEC;AAQD,sCAEC;AAQD,gDAGC;AA0BD,oCASC;AAiBD,4CAIC;AAzSD,gDAA4D;AAC5D,2CAA2L;AAC3L,+BAAkC;AAClC,mDAAgG;AA4FhG;;GAEG;AACH,MAAM,gBAAgB,GAA2B;IAC/C,CAAC,2BAAe,CAAC,EAAE,qCAAqC;IACxD,CAAC,0BAAc,CAAC,EAAE,+BAA+B;IACjD,sEAAsE;CACvE,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAA2B;IAC7C,UAAU,EAAE,+BAA+B;IAC3C,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,qCAAqC;IAChD,UAAU,EAAE,uBAAuB;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAG,8BAAqB,CAAC;AAEjD;;GAEG;AACH,IAAI,YAAY,GAAc;IAC5B,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAgB,YAAY,CAAC,MAA0B;IACrD,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAE9C,4CAA4C;IAC5C,IAAA,uBAAoB,EAAC;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY;IAC1B,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,YAAY,GAAG;QACb,QAAQ,EAAE,UAAU;KACrB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,SAA8B;IACxD,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,MAA2B;IACnD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,WAAW,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC;IAClD,2DAA2D;IAC3D,OAAO,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC;WACxC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC;WACpC,gBAAgB,CAAC,0BAAc,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,MAAiB;IAC5C,OAAO,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,MAAiB;IAC7C,OAAO,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,MAA2B;IAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,YAAY,CAAC,MAA2B;IACtD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,IAAA,+BAAmB,EAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEnE,uDAAuD;IACvD,OAAO;QACL,GAAG,gBAAgB;QACnB,KAAK,EAAE,WAAW,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK;KACvD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,gBAAgB,CAAC,MAAc;IACnD,MAAM,GAAG,GAAG,IAAA,eAAS,EAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * @module utils
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.isSerializedDiscountAuth = exports.deserializeDiscountAuth = exports.serializeDiscountAuth = exports.createDiscount = exports.hasQueuedRental = exports.hasActiveRental = exports.getLookupTableAddress = exports.fetchLookupTable = exports.isRpcDebugEnabled = exports.setRpcDebug = exports.createRpc = exports.InstructionResult = exports.prepareInstructions = exports.toAddress = exports.toWeb3Instruction = exports.isAddressString = exports.isKitSigner = exports.isWeb3jsSigner = exports.validateAddress = exports.toTransactionSigner = exports.ATLASNET_ADDRESSES = exports.MAINNET_ADDRESSES = exports.isValidNetwork = exports.isValidProgramSet = exports.getNetworkAddresses = exports.getProgramAddresses = exports.getRpcUrl = exports.getAffiliateConfig = exports.getAddresses = exports.mergeConfig = exports.clearSdkConfig = exports.getSdkConfig = exports.setSdkConfig = void 0;
7
+ exports.isSerializedDiscountAuth = exports.deserializeDiscountAuth = exports.serializeDiscountAuth = exports.createDiscount = exports.hasQueuedRental = exports.hasActiveRental = exports.getLookupTableAddress = exports.fetchLookupTable = exports.isRpcDebugEnabled = exports.setRpcDebug = exports.createRpc = exports.InstructionResult = exports.prepareInstructions = exports.toAddress = exports.toWeb3Instruction = exports.isAddressString = exports.isKitSigner = exports.isWeb3jsSigner = exports.validateAddress = exports.toTransactionSigner = exports.ATLASNET_ADDRESSES = exports.MAINNET_ADDRESSES = exports.ATLASNET_GENESIS = exports.DEVNET_GENESIS = exports.MAINNET_GENESIS = exports.resolveGenesisHash = exports.isValidNetwork = exports.isValidProgramSet = exports.getNetworkAddresses = exports.getProgramAddresses = exports.detectProgramSet = exports.getRpcUrl = exports.getAffiliateConfig = exports.getAddresses = exports.mergeConfig = exports.clearSdkConfig = exports.getSdkConfig = exports.setSdkConfig = void 0;
8
8
  // Configuration
9
9
  var config_1 = require("./config");
10
10
  Object.defineProperty(exports, "setSdkConfig", { enumerable: true, get: function () { return config_1.setSdkConfig; } });
@@ -14,12 +14,17 @@ Object.defineProperty(exports, "mergeConfig", { enumerable: true, get: function
14
14
  Object.defineProperty(exports, "getAddresses", { enumerable: true, get: function () { return config_1.getAddresses; } });
15
15
  Object.defineProperty(exports, "getAffiliateConfig", { enumerable: true, get: function () { return config_1.getAffiliateConfig; } });
16
16
  Object.defineProperty(exports, "getRpcUrl", { enumerable: true, get: function () { return config_1.getRpcUrl; } });
17
+ Object.defineProperty(exports, "detectProgramSet", { enumerable: true, get: function () { return config_1.detectProgramSet; } });
17
18
  // Network Addresses
18
19
  var addresses_1 = require("./addresses");
19
20
  Object.defineProperty(exports, "getProgramAddresses", { enumerable: true, get: function () { return addresses_1.getProgramAddresses; } });
20
21
  Object.defineProperty(exports, "getNetworkAddresses", { enumerable: true, get: function () { return addresses_1.getNetworkAddresses; } });
21
22
  Object.defineProperty(exports, "isValidProgramSet", { enumerable: true, get: function () { return addresses_1.isValidProgramSet; } });
22
23
  Object.defineProperty(exports, "isValidNetwork", { enumerable: true, get: function () { return addresses_1.isValidNetwork; } });
24
+ Object.defineProperty(exports, "resolveGenesisHash", { enumerable: true, get: function () { return addresses_1.resolveGenesisHash; } });
25
+ Object.defineProperty(exports, "MAINNET_GENESIS", { enumerable: true, get: function () { return addresses_1.MAINNET_GENESIS; } });
26
+ Object.defineProperty(exports, "DEVNET_GENESIS", { enumerable: true, get: function () { return addresses_1.DEVNET_GENESIS; } });
27
+ Object.defineProperty(exports, "ATLASNET_GENESIS", { enumerable: true, get: function () { return addresses_1.ATLASNET_GENESIS; } });
23
28
  Object.defineProperty(exports, "MAINNET_ADDRESSES", { enumerable: true, get: function () { return addresses_1.MAINNET_ADDRESSES; } });
24
29
  Object.defineProperty(exports, "ATLASNET_ADDRESSES", { enumerable: true, get: function () { return addresses_1.ATLASNET_ADDRESSES; } });
25
30
  // Signer Utilities
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gBAAgB;AAChB,mCAWkB;AAVhB,sGAAA,YAAY,OAAA;AACZ,sGAAA,YAAY,OAAA;AACZ,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,4GAAA,kBAAkB,OAAA;AAClB,mGAAA,SAAS,OAAA;AAMX,oBAAoB;AACpB,yCAUqB;AATnB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAMpB,mBAAmB;AACnB,mCAOkB;AANhB,6GAAA,mBAAmB,OAAA;AACnB,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AAIjB,wBAAwB;AACxB,mCAMkB;AALhB,2GAAA,iBAAiB,OAAA;AACjB,mGAAA,SAAS,OAAA;AAMX,wBAAwB;AACxB,+CAGwB;AAFtB,mHAAA,mBAAmB,OAAA;AAIrB,qBAAqB;AACrB,yDAG6B;AAF3B,sHAAA,iBAAiB,OAAA;AAInB,gBAAgB;AAChB,6BAAkE;AAAzD,gGAAA,SAAS,OAAA;AAAE,kGAAA,WAAW,OAAA;AAAE,wGAAA,iBAAiB,OAAA;AAElD,iCAAiC;AACjC,6CAIuB;AAHrB,+GAAA,gBAAgB,OAAA;AAChB,oHAAA,qBAAqB,OAAA;AAIvB,mBAAmB;AACnB,mCAGkB;AAFhB,yGAAA,eAAe,OAAA;AACf,yGAAA,eAAe,OAAA;AAGjB,mCAAmC;AACnC,+CASwB;AARtB,8GAAA,cAAc,OAAA;AACd,qHAAA,qBAAqB,OAAA;AACrB,uHAAA,uBAAuB,OAAA;AACvB,wHAAA,wBAAwB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gBAAgB;AAChB,mCAYkB;AAXhB,sGAAA,YAAY,OAAA;AACZ,sGAAA,YAAY,OAAA;AACZ,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,4GAAA,kBAAkB,OAAA;AAClB,mGAAA,SAAS,OAAA;AACT,0GAAA,gBAAgB,OAAA;AAMlB,oBAAoB;AACpB,yCAeqB;AAdnB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAChB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAOpB,mBAAmB;AACnB,mCAOkB;AANhB,6GAAA,mBAAmB,OAAA;AACnB,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AAIjB,wBAAwB;AACxB,mCAMkB;AALhB,2GAAA,iBAAiB,OAAA;AACjB,mGAAA,SAAS,OAAA;AAMX,wBAAwB;AACxB,+CAGwB;AAFtB,mHAAA,mBAAmB,OAAA;AAIrB,qBAAqB;AACrB,yDAG6B;AAF3B,sHAAA,iBAAiB,OAAA;AAInB,gBAAgB;AAChB,6BAAkE;AAAzD,gGAAA,SAAS,OAAA;AAAE,kGAAA,WAAW,OAAA;AAAE,wGAAA,iBAAiB,OAAA;AAElD,iCAAiC;AACjC,6CAIuB;AAHrB,+GAAA,gBAAgB,OAAA;AAChB,oHAAA,qBAAqB,OAAA;AAIvB,mBAAmB;AACnB,mCAGkB;AAFhB,yGAAA,eAAe,OAAA;AACf,yGAAA,eAAe,OAAA;AAGjB,mCAAmC;AACnC,+CASwB;AARtB,8GAAA,cAAc,OAAA;AACd,qHAAA,qBAAqB,OAAA;AACrB,uHAAA,uBAAuB,OAAA;AACvB,wHAAA,wBAAwB,OAAA"}
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Auto-generated from package.json - DO NOT EDIT
5
5
  // Run "pnpm run generate:version" to update
6
- exports.VERSION = '4.0.0-beta.2';
6
+ exports.VERSION = '4.1.0';
7
7
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,iDAAiD;AACjD,4CAA4C;AAC/B,QAAA,OAAO,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,iDAAiD;AACjD,4CAA4C;AAC/B,QAAA,OAAO,GAAG,OAAO,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wuwei-labs/srsly",
3
- "version": "4.0.0-beta.2",
3
+ "version": "4.1.0",
4
4
  "description": "TypeScript SDK for SRSLY",
5
5
  "sideEffects": false,
6
6
  "publishConfig": {
@@ -6,6 +6,18 @@
6
6
  */
7
7
  import { SRSLY_PROGRAM_ADDRESS } from '../generated/codama';
8
8
  import { ANTEGEN_THREAD_PROGRAM } from '../pda/constants';
9
+ /**
10
+ * Genesis hash constants — canonical chain identifiers
11
+ */
12
+ export const MAINNET_GENESIS = '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d';
13
+ export const DEVNET_GENESIS = 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG';
14
+ export const ATLASNET_GENESIS = 'Ccod9gttTtZWqCeMgyTW3iCSoPLjkptAGsBUeP2CpchR';
15
+ const ALIAS_TO_GENESIS = {
16
+ 'mainnet': MAINNET_GENESIS,
17
+ 'atlasnet': ATLASNET_GENESIS,
18
+ 'holosim': ATLASNET_GENESIS,
19
+ 'localnet': ATLASNET_GENESIS,
20
+ };
9
21
  /**
10
22
  * Antegen program address (same across all networks)
11
23
  */
@@ -33,14 +45,27 @@ const ATLASNET_ADDRESSES = {
33
45
  gameId: 'GAmEqxNYaUqLmLkXGhzUvv4Ud8FotnWPLj6ChdBkUh9j'
34
46
  };
35
47
  /**
36
- * Program address mappings
48
+ * Program address sets keyed by genesis hash (source of truth)
37
49
  */
38
50
  const PROGRAM_ADDRESS_SETS = {
39
- 'mainnet': MAINNET_ADDRESSES,
40
- 'atlasnet': ATLASNET_ADDRESSES,
41
- 'holosim': ATLASNET_ADDRESSES,
42
- 'localnet': ATLASNET_ADDRESSES
51
+ [MAINNET_GENESIS]: MAINNET_ADDRESSES,
52
+ [DEVNET_GENESIS]: ATLASNET_ADDRESSES,
53
+ [ATLASNET_GENESIS]: ATLASNET_ADDRESSES,
43
54
  };
55
+ /**
56
+ * Resolve a program set input (alias or genesis hash) to a genesis hash
57
+ *
58
+ * @param programSet - Named alias or genesis hash string
59
+ * @returns Genesis hash string
60
+ */
61
+ export function resolveGenesisHash(programSet) {
62
+ // Check if it's a named alias
63
+ if (programSet in ALIAS_TO_GENESIS) {
64
+ return ALIAS_TO_GENESIS[programSet];
65
+ }
66
+ // Otherwise treat as genesis hash directly
67
+ return programSet;
68
+ }
44
69
  /**
45
70
  * Get addresses for a specific program set
46
71
  *
@@ -58,9 +83,11 @@ const PROGRAM_ADDRESS_SETS = {
58
83
  * ```
59
84
  */
60
85
  export function getProgramAddresses(programSet) {
61
- const addresses = PROGRAM_ADDRESS_SETS[programSet];
86
+ const genesisHash = resolveGenesisHash(programSet);
87
+ const addresses = PROGRAM_ADDRESS_SETS[genesisHash];
62
88
  if (!addresses) {
63
- throw new Error(`Unknown program set: ${programSet}. Valid sets: mainnet, atlasnet, holosim, localnet`);
89
+ // Unknown genesis hash fall back to devnet addresses
90
+ return PROGRAM_ADDRESS_SETS[DEVNET_GENESIS];
64
91
  }
65
92
  return addresses;
66
93
  }
@@ -77,7 +104,13 @@ export function getNetworkAddresses(network) {
77
104
  * @returns True if program set is supported
78
105
  */
79
106
  export function isValidProgramSet(programSet) {
80
- return programSet === 'mainnet' || programSet === 'atlasnet' || programSet === 'localnet';
107
+ // Accept named aliases
108
+ if (programSet in ALIAS_TO_GENESIS)
109
+ return true;
110
+ // Accept known genesis hashes
111
+ if (programSet in PROGRAM_ADDRESS_SETS)
112
+ return true;
113
+ return false;
81
114
  }
82
115
  /**
83
116
  * @deprecated Use isValidProgramSet instead
@@ -1 +1 @@
1
- {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/utils/addresses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAmC1D;;GAEG;AACH,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C;;GAEG;AACH,MAAM,iBAAiB,GAAqB;IAC1C,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,6CAA6C;IACnD,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,8CAA8C;IACzD,cAAc,EAAE,6CAA6C;IAC7D,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAqB;IAC3C,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,6CAA6C;IACnD,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,8CAA8C;IACzD,cAAc,EAAE,6CAA6C;IAC7D,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,oBAAoB,GAAyC;IACjE,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,kBAAkB;CAC/B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB;IACxD,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wBAAwB,UAAU,oDAAoD,CACvF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAmB;IACrD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,UAAU,CAAC;AAC5F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,CAAC"}
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/utils/addresses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,8CAA8C,CAAC;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,8CAA8C,CAAC;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,8CAA8C,CAAC;AAO/E,MAAM,gBAAgB,GAAoC;IACxD,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,gBAAgB;IAC5B,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,gBAAgB;CAC7B,CAAC;AAkCF;;GAEG;AACH,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C;;GAEG;AACH,MAAM,iBAAiB,GAAqB;IAC1C,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,6CAA6C;IACnD,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,8CAA8C;IACzD,cAAc,EAAE,6CAA6C;IAC7D,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAqB;IAC3C,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,6CAA6C;IACnD,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,8CAA8C;IACzD,cAAc,EAAE,6CAA6C;IAC7D,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,oBAAoB,GAAqC;IAC7D,CAAC,eAAe,CAAC,EAAE,iBAAiB;IACpC,CAAC,cAAc,CAAC,EAAE,kBAAkB;IACpC,CAAC,gBAAgB,CAAC,EAAE,kBAAkB;CACvC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,8BAA8B;IAC9B,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC,UAA6B,CAAC,CAAC;IACzD,CAAC;IACD,2CAA2C;IAC3C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB;IACxD,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,uDAAuD;QACvD,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAmB;IACrD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,uBAAuB;IACvB,IAAI,UAAU,IAAI,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAChD,8BAA8B;IAC9B,IAAI,UAAU,IAAI,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,CAAC"}
@@ -5,16 +5,25 @@
5
5
  * Supports both @solana/kit (default) and @solana/web3.js modes.
6
6
  */
7
7
  import { SRSLY_PROGRAM_ADDRESS } from '../generated/codama';
8
- import { getProgramAddresses } from './addresses';
8
+ import { getProgramAddresses, MAINNET_GENESIS, DEVNET_GENESIS } from './addresses';
9
+ import { createRpc } from './rpc';
9
10
  import { setSdkConfig as setSlyvaultSdkConfig } from '@wuwei-labs/slyvault';
10
11
  /**
11
- * Default RPC URLs for each program set
12
+ * Default RPC URLs keyed by genesis hash
12
13
  */
13
14
  const DEFAULT_RPC_URLS = {
15
+ [MAINNET_GENESIS]: 'https://api.mainnet-beta.solana.com',
16
+ [DEVNET_GENESIS]: 'https://api.devnet.solana.com',
17
+ // ATLASNET_GENESIS has no public RPC — requires custom URL via config
18
+ };
19
+ /**
20
+ * Alias-based RPC URL fallbacks (for localnet and named aliases)
21
+ */
22
+ const ALIAS_RPC_URLS = {
14
23
  'atlasnet': 'https://api.devnet.solana.com',
15
24
  'holosim': 'https://api.devnet.solana.com',
16
25
  'mainnet': 'https://api.mainnet-beta.solana.com',
17
- 'localnet': 'http://localhost:8899'
26
+ 'localnet': 'http://localhost:8899',
18
27
  };
19
28
  /**
20
29
  * Default SRSLY program ID (from generated code)
@@ -100,7 +109,12 @@ export function mergeConfig(overrides) {
100
109
  */
101
110
  export function getRpcUrl(config) {
102
111
  const finalConfig = mergeConfig(config);
103
- return finalConfig.rpcUrl || DEFAULT_RPC_URLS[finalConfig.programs] || DEFAULT_RPC_URLS.atlasnet;
112
+ if (finalConfig.rpcUrl)
113
+ return finalConfig.rpcUrl;
114
+ // Try genesis-hash-keyed lookup first, then alias fallback
115
+ return DEFAULT_RPC_URLS[finalConfig.programs]
116
+ || ALIAS_RPC_URLS[finalConfig.programs]
117
+ || DEFAULT_RPC_URLS[DEVNET_GENESIS];
104
118
  }
105
119
  /**
106
120
  * Get the effective program ID for a configuration
@@ -163,4 +177,24 @@ export function getAddresses(config) {
163
177
  srsly: finalConfig.programId || networkAddresses.srsly
164
178
  };
165
179
  }
180
+ /**
181
+ * Auto-detect the correct program set by querying the chain's genesis hash
182
+ *
183
+ * Returns the raw genesis hash string, which can be passed directly to
184
+ * `setSdkConfig({ programs: genesisHash })` or `getProgramAddresses(genesisHash)`.
185
+ *
186
+ * @param rpcUrl - RPC endpoint URL to query
187
+ * @returns Genesis hash string identifying the chain
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * const genesisHash = await detectProgramSet('https://api.mainnet-beta.solana.com');
192
+ * setSdkConfig({ programs: genesisHash });
193
+ * ```
194
+ */
195
+ export async function detectProgramSet(rpcUrl) {
196
+ const rpc = createRpc(rpcUrl);
197
+ const genesisHash = await rpc.getGenesisHash().send();
198
+ return genesisHash;
199
+ }
166
200
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAwF,MAAM,aAAa,CAAC;AACxI,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AA4FhG;;GAEG;AACH,MAAM,gBAAgB,GAA+B;IACnD,UAAU,EAAE,+BAA+B;IAC3C,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,qCAAqC;IAChD,UAAU,EAAE,uBAAuB;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD;;GAEG;AACH,IAAI,YAAY,GAAc;IAC5B,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAE9C,4CAA4C;IAC5C,oBAAoB,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,YAAY,GAAG;QACb,QAAQ,EAAE,UAAU;KACrB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,SAA8B;IACxD,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,MAA2B;IACnD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,WAAW,CAAC,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC;AACnG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC7C,OAAO,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEnE,uDAAuD;IACvD,OAAO;QACL,GAAG,gBAAgB;QACnB,KAAK,EAAE,WAAW,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,9 @@
3
3
  * @module utils
4
4
  */
5
5
  // Configuration
6
- export { setSdkConfig, getSdkConfig, clearSdkConfig, mergeConfig, getAddresses, getAffiliateConfig, getRpcUrl } from './config';
6
+ export { setSdkConfig, getSdkConfig, clearSdkConfig, mergeConfig, getAddresses, getAffiliateConfig, getRpcUrl, detectProgramSet } from './config';
7
7
  // Network Addresses
8
- export { getProgramAddresses, getNetworkAddresses, isValidProgramSet, isValidNetwork, MAINNET_ADDRESSES, ATLASNET_ADDRESSES } from './addresses';
8
+ export { getProgramAddresses, getNetworkAddresses, isValidProgramSet, isValidNetwork, resolveGenesisHash, MAINNET_GENESIS, DEVNET_GENESIS, ATLASNET_GENESIS, MAINNET_ADDRESSES, ATLASNET_ADDRESSES } from './addresses';
9
9
  // Signer Utilities
10
10
  export { toTransactionSigner, validateAddress, isWeb3jsSigner, isKitSigner, isAddressString } from './signer';
11
11
  // Web3.js Compatibility
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,SAAS,EAIV,MAAM,UAAU,CAAC;AAElB,oBAAoB;AACpB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAInB,MAAM,aAAa,CAAC;AAErB,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,WAAW,EACX,eAAe,EAEhB,MAAM,UAAU,CAAC;AAElB,wBAAwB;AACxB,OAAO,EACL,iBAAiB,EACjB,SAAS,EAIV,MAAM,UAAU,CAAC;AAElB,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AAExB,qBAAqB;AACrB,OAAO,EACL,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAE7B,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAElE,iCAAiC;AACjC,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EAEtB,MAAM,eAAe,CAAC;AAEvB,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAElB,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EAKzB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAIjB,MAAM,UAAU,CAAC;AAElB,oBAAoB;AACpB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAKnB,MAAM,aAAa,CAAC;AAErB,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,WAAW,EACX,eAAe,EAEhB,MAAM,UAAU,CAAC;AAElB,wBAAwB;AACxB,OAAO,EACL,iBAAiB,EACjB,SAAS,EAIV,MAAM,UAAU,CAAC;AAElB,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AAExB,qBAAqB;AACrB,OAAO,EACL,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAE7B,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAElE,iCAAiC;AACjC,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EAEtB,MAAM,eAAe,CAAC;AAEvB,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAElB,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EAKzB,MAAM,gBAAgB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  // Auto-generated from package.json - DO NOT EDIT
2
2
  // Run "pnpm run generate:version" to update
3
- export const VERSION = '4.0.0-beta.2';
3
+ export const VERSION = '4.1.0';
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
@@ -5,10 +5,19 @@
5
5
  * Supports mainnet-beta, devnet, and localnet environments.
6
6
  */
7
7
  /**
8
- * Program set type matching the SDK configuration
9
- * Determines which SAGE, ATLAS, and ProfileFaction addresses to use
8
+ * Genesis hash constants canonical chain identifiers
10
9
  */
11
- export type ProgramSet = 'mainnet' | 'atlasnet' | 'holosim' | 'localnet';
10
+ export declare const MAINNET_GENESIS = "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d";
11
+ export declare const DEVNET_GENESIS = "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG";
12
+ export declare const ATLASNET_GENESIS = "Ccod9gttTtZWqCeMgyTW3iCSoPLjkptAGsBUeP2CpchR";
13
+ /**
14
+ * Named aliases for CLI/human convenience
15
+ */
16
+ export type ProgramSetAlias = 'mainnet' | 'atlasnet' | 'holosim' | 'localnet';
17
+ /**
18
+ * Program set type — accepts either a genesis hash or a named alias
19
+ */
20
+ export type ProgramSet = string;
12
21
  /**
13
22
  * Addresses for a specific program set
14
23
  */
@@ -42,6 +51,13 @@ declare const MAINNET_ADDRESSES: ProgramAddresses;
42
51
  * Atlasnet addresses (Star Atlas testnet/devnet)
43
52
  */
44
53
  declare const ATLASNET_ADDRESSES: ProgramAddresses;
54
+ /**
55
+ * Resolve a program set input (alias or genesis hash) to a genesis hash
56
+ *
57
+ * @param programSet - Named alias or genesis hash string
58
+ * @returns Genesis hash string
59
+ */
60
+ export declare function resolveGenesisHash(programSet: string): string;
45
61
  /**
46
62
  * Get addresses for a specific program set
47
63
  *
@@ -1 +1 @@
1
- {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/utils/addresses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAOhD;;GAEG;AACH,QAAA,MAAM,iBAAiB,EAAE,gBAOxB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,kBAAkB,EAAE,gBAOzB,CAAC;AAYF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAU5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,IAAI,UAAU,CAE9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,UAAU,CAErE;AAED;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,CAAC"}
1
+ {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/utils/addresses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,eAAe,iDAAiD,CAAC;AAC9E,eAAO,MAAM,cAAc,iDAAiD,CAAC;AAC7E,eAAO,MAAM,gBAAgB,iDAAiD,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAS9E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAOhD;;GAEG;AACH,QAAA,MAAM,iBAAiB,EAAE,gBAOxB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,kBAAkB,EAAE,gBAOzB,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAU5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,IAAI,UAAU,CAM9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,UAAU,CAErE;AAED;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,CAAC"}
@@ -194,4 +194,20 @@ export declare function getAffiliateConfig(config?: Partial<SdkConfig>): Affilia
194
194
  export declare function getAddresses(config?: Partial<SdkConfig>): NetworkAddresses & {
195
195
  srsly: string;
196
196
  };
197
+ /**
198
+ * Auto-detect the correct program set by querying the chain's genesis hash
199
+ *
200
+ * Returns the raw genesis hash string, which can be passed directly to
201
+ * `setSdkConfig({ programs: genesisHash })` or `getProgramAddresses(genesisHash)`.
202
+ *
203
+ * @param rpcUrl - RPC endpoint URL to query
204
+ * @returns Genesis hash string identifying the chain
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * const genesisHash = await detectProgramSet('https://api.mainnet-beta.solana.com');
209
+ * setSdkConfig({ programs: genesisHash });
210
+ * ```
211
+ */
212
+ export declare function detectProgramSet(rpcUrl: string): Promise<string>;
197
213
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAA8C,KAAK,UAAU,IAAI,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxI,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU,GAAG,GAAG;IACpD,KAAK,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,CAAC;IACtB,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAC;IAErB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;OAIG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAQ7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAG7D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAG3F;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAS9F"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAiG,KAAK,UAAU,IAAI,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3L,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU,GAAG,GAAG;IACpD,KAAK,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,CAAC;IACtB,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAC;IAErB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;OAIG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAiCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAQ7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAO7D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAG3F;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAS9F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAItE"}
@@ -2,8 +2,8 @@
2
2
  * @purpose Utility functions and helpers
3
3
  * @module utils
4
4
  */
5
- export { setSdkConfig, getSdkConfig, clearSdkConfig, mergeConfig, getAddresses, getAffiliateConfig, getRpcUrl, type SdkConfig, type PublicKeyConstructor, type AffiliateConfig } from './config';
6
- export { getProgramAddresses, getNetworkAddresses, isValidProgramSet, isValidNetwork, MAINNET_ADDRESSES, ATLASNET_ADDRESSES, type ProgramSet, type ProgramAddresses, type NetworkAddresses } from './addresses';
5
+ export { setSdkConfig, getSdkConfig, clearSdkConfig, mergeConfig, getAddresses, getAffiliateConfig, getRpcUrl, detectProgramSet, type SdkConfig, type PublicKeyConstructor, type AffiliateConfig } from './config';
6
+ export { getProgramAddresses, getNetworkAddresses, isValidProgramSet, isValidNetwork, resolveGenesisHash, MAINNET_GENESIS, DEVNET_GENESIS, ATLASNET_GENESIS, MAINNET_ADDRESSES, ATLASNET_ADDRESSES, type ProgramSet, type ProgramSetAlias, type ProgramAddresses, type NetworkAddresses } from './addresses';
7
7
  export { toTransactionSigner, validateAddress, isWeb3jsSigner, isKitSigner, isAddressString, type UniversalSigner } from './signer';
8
8
  export { toWeb3Instruction, toAddress, type KitInstruction, type Web3jsInstructionWithStrings, type Web3jsInstructionWithPublicKeys } from './web3js';
9
9
  export { prepareInstructions, type PrepareInstructionsOptions } from './instructions';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,WAAW,EACX,eAAe,EACf,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACrC,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAChC,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC/B,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,WAAW,EACX,eAAe,EACf,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACrC,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAChC,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC/B,MAAM,gBAAgB,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "4.0.0-beta.2";
1
+ export declare const VERSION = "4.1.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,iBAAiB,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wuwei-labs/srsly",
3
- "version": "4.0.0",
3
+ "version": "4.1.0",
4
4
  "description": "TypeScript SDK for SRSLY",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",