@gfxlabs/oku-chains 1.12.3 → 1.12.4

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/dist/browser.js CHANGED
@@ -6915,6 +6915,123 @@
6915
6915
  return chain;
6916
6916
  }
6917
6917
 
6918
+ /**
6919
+ * Error thrown when a network cannot be found by any lookup method.
6920
+ */
6921
+ class NetworkNotFoundError extends Error {
6922
+ constructor(input) {
6923
+ super(`chain not found: ${String(input)}`);
6924
+ this.name = "NetworkNotFoundError";
6925
+ }
6926
+ }
6927
+ /**
6928
+ * Build a lookup index from a list of chains for fast repeated lookups.
6929
+ * Pre-computes maps keyed by chain ID, internal name, and CAIP-2 identifier.
6930
+ */
6931
+ function buildNetworkIndex(chains) {
6932
+ const byId = new Map();
6933
+ const byName = new Map();
6934
+ const byCAIP2 = new Map();
6935
+ for (const chain of chains) {
6936
+ byId.set(chain.id, chain);
6937
+ byName.set(chain.internalName, chain);
6938
+ byCAIP2.set(`${chain.caip2Namespace}:${chain.id}`, chain);
6939
+ }
6940
+ return { byId, byName, byCAIP2 };
6941
+ }
6942
+ /**
6943
+ * Look up a chain by its numeric chain ID.
6944
+ */
6945
+ function networkById$1(id, idx) {
6946
+ const chain = idx.byId.get(id);
6947
+ if (!chain) {
6948
+ throw new NetworkNotFoundError(id);
6949
+ }
6950
+ return chain;
6951
+ }
6952
+ /**
6953
+ * Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
6954
+ */
6955
+ function networkByName$1(name, idx) {
6956
+ const chain = idx.byName.get(name);
6957
+ if (!chain) {
6958
+ throw new NetworkNotFoundError(name);
6959
+ }
6960
+ return chain;
6961
+ }
6962
+ /**
6963
+ * Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
6964
+ */
6965
+ function networkByCAIP2$1(caip2, idx) {
6966
+ // Validate the format
6967
+ parseCAIP2(caip2);
6968
+ const chain = idx.byCAIP2.get(caip2);
6969
+ if (!chain) {
6970
+ throw new NetworkNotFoundError(caip2);
6971
+ }
6972
+ return chain;
6973
+ }
6974
+ /**
6975
+ * Look up a chain from a string. Tries, in order:
6976
+ * 1. CAIP-2 identifier (if the string contains ":")
6977
+ * 2. Internal name
6978
+ * 3. Numeric chain ID (parsed from string)
6979
+ *
6980
+ * Mirrors the Go `NetworkByString` function.
6981
+ */
6982
+ function networkByString$1(s, idx) {
6983
+ if (s === "") {
6984
+ throw new NetworkNotFoundError("empty string");
6985
+ }
6986
+ // Try CAIP-2
6987
+ if (s.includes(":")) {
6988
+ return networkByCAIP2$1(s, idx);
6989
+ }
6990
+ // Try internal name
6991
+ const byName = idx.byName.get(s);
6992
+ if (byName) {
6993
+ return byName;
6994
+ }
6995
+ // Try numeric chain ID
6996
+ const parsed = Number(s);
6997
+ if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {
6998
+ const byId = idx.byId.get(Math.trunc(parsed));
6999
+ if (byId) {
7000
+ return byId;
7001
+ }
7002
+ }
7003
+ throw new NetworkNotFoundError(s);
7004
+ }
7005
+ /**
7006
+ * Resolve a chain from an arbitrary input. Accepts:
7007
+ * - `number`: treated as chain ID
7008
+ * - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
7009
+ * internal name, then as a numeric chain ID string
7010
+ * - `IChainInfo`: returned directly (pass-through)
7011
+ *
7012
+ * Mirrors the Go `NetworkByAny` function.
7013
+ *
7014
+ * @throws {NetworkNotFoundError} if no matching chain is found
7015
+ */
7016
+ function networkByAny$1(v, idx) {
7017
+ if (v == null) {
7018
+ throw new NetworkNotFoundError("null");
7019
+ }
7020
+ // Pass-through if already a chain config object
7021
+ if (typeof v === "object" && "id" in v && "internalName" in v) {
7022
+ return v;
7023
+ }
7024
+ // Numeric chain ID
7025
+ if (typeof v === "number") {
7026
+ return networkById$1(Math.trunc(v), idx);
7027
+ }
7028
+ // String: CAIP-2, name, or numeric string
7029
+ if (typeof v === "string") {
7030
+ return networkByString$1(v, idx);
7031
+ }
7032
+ throw new NetworkNotFoundError(v);
7033
+ }
7034
+
6918
7035
  const MAINNET_CHAINS = [
6919
7036
  arbitrum,
6920
7037
  base,
@@ -6965,8 +7082,70 @@
6965
7082
  gensyn,
6966
7083
  pharos,
6967
7084
  ];
7085
+ /** Pre-built lookup index over MAINNET_CHAINS (like Go's module-level maps). */
7086
+ const _idx = buildNetworkIndex(MAINNET_CHAINS);
7087
+ /**
7088
+ * Resolve a chain from an arbitrary input. Accepts:
7089
+ * - `number`: treated as chain ID
7090
+ * - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
7091
+ * internal name, then as a numeric chain ID string
7092
+ * - `IChainInfo`: returned directly (pass-through)
7093
+ *
7094
+ * Mirrors the Go `NetworkByAny` function.
7095
+ *
7096
+ * @example
7097
+ * ```ts
7098
+ * import { networkByAny } from "@gfxlabs/oku-chains";
7099
+ *
7100
+ * networkByAny(1) // by chain ID
7101
+ * networkByAny("mainnet") // by internal name
7102
+ * networkByAny("eip155:1") // by CAIP-2
7103
+ * networkByAny("42161") // by chain ID string
7104
+ * ```
7105
+ *
7106
+ * @throws {NetworkNotFoundError} if no matching chain is found
7107
+ */
7108
+ function networkByAny(v) {
7109
+ return networkByAny$1(v, _idx);
7110
+ }
7111
+ /**
7112
+ * Look up a chain by its numeric chain ID.
7113
+ *
7114
+ * @throws {NetworkNotFoundError} if no matching chain is found
7115
+ */
7116
+ function networkById(id) {
7117
+ return networkById$1(id, _idx);
7118
+ }
7119
+ /**
7120
+ * Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
7121
+ *
7122
+ * @throws {NetworkNotFoundError} if no matching chain is found
7123
+ */
7124
+ function networkByName(name) {
7125
+ return networkByName$1(name, _idx);
7126
+ }
7127
+ /**
7128
+ * Look up a chain from a string. Tries, in order:
7129
+ * 1. CAIP-2 identifier (if the string contains ":")
7130
+ * 2. Internal name
7131
+ * 3. Numeric chain ID (parsed from string)
7132
+ *
7133
+ * @throws {NetworkNotFoundError} if no matching chain is found
7134
+ */
7135
+ function networkByString(s) {
7136
+ return networkByString$1(s, _idx);
7137
+ }
7138
+ /**
7139
+ * Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
7140
+ *
7141
+ * @throws {NetworkNotFoundError} if no matching chain is found
7142
+ */
7143
+ function networkByCAIP2(caip2) {
7144
+ return networkByCAIP2$1(caip2, _idx);
7145
+ }
6968
7146
 
6969
7147
  exports.MAINNET_CHAINS = MAINNET_CHAINS;
7148
+ exports.NetworkNotFoundError = NetworkNotFoundError;
6970
7149
  exports.arbitrum = arbitrum;
6971
7150
  exports.avalanche = avalanche;
6972
7151
  exports.base = base;
@@ -6974,6 +7153,7 @@
6974
7153
  exports.bob = bob;
6975
7154
  exports.boba = boba;
6976
7155
  exports.bsc = bsc;
7156
+ exports.buildNetworkIndex = buildNetworkIndex;
6977
7157
  exports.celo = celo;
6978
7158
  exports.corn = corn;
6979
7159
  exports.etherlink = etherlink;
@@ -6996,6 +7176,11 @@
6996
7176
  exports.metal = metal;
6997
7177
  exports.monad = monad;
6998
7178
  exports.moonbeam = moonbeam;
7179
+ exports.networkByAny = networkByAny;
7180
+ exports.networkByCAIP2 = networkByCAIP2;
7181
+ exports.networkById = networkById;
7182
+ exports.networkByName = networkByName;
7183
+ exports.networkByString = networkByString;
6999
7184
  exports.nibiru = nibiru;
7000
7185
  exports.optimism = optimism;
7001
7186
  exports.parseCAIP2 = parseCAIP2;
package/dist/index-mjs.js CHANGED
@@ -6912,6 +6912,123 @@ function fromCAIP2(caip2, chains) {
6912
6912
  return chain;
6913
6913
  }
6914
6914
 
6915
+ /**
6916
+ * Error thrown when a network cannot be found by any lookup method.
6917
+ */
6918
+ class NetworkNotFoundError extends Error {
6919
+ constructor(input) {
6920
+ super(`chain not found: ${String(input)}`);
6921
+ this.name = "NetworkNotFoundError";
6922
+ }
6923
+ }
6924
+ /**
6925
+ * Build a lookup index from a list of chains for fast repeated lookups.
6926
+ * Pre-computes maps keyed by chain ID, internal name, and CAIP-2 identifier.
6927
+ */
6928
+ function buildNetworkIndex(chains) {
6929
+ const byId = new Map();
6930
+ const byName = new Map();
6931
+ const byCAIP2 = new Map();
6932
+ for (const chain of chains) {
6933
+ byId.set(chain.id, chain);
6934
+ byName.set(chain.internalName, chain);
6935
+ byCAIP2.set(`${chain.caip2Namespace}:${chain.id}`, chain);
6936
+ }
6937
+ return { byId, byName, byCAIP2 };
6938
+ }
6939
+ /**
6940
+ * Look up a chain by its numeric chain ID.
6941
+ */
6942
+ function networkById$1(id, idx) {
6943
+ const chain = idx.byId.get(id);
6944
+ if (!chain) {
6945
+ throw new NetworkNotFoundError(id);
6946
+ }
6947
+ return chain;
6948
+ }
6949
+ /**
6950
+ * Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
6951
+ */
6952
+ function networkByName$1(name, idx) {
6953
+ const chain = idx.byName.get(name);
6954
+ if (!chain) {
6955
+ throw new NetworkNotFoundError(name);
6956
+ }
6957
+ return chain;
6958
+ }
6959
+ /**
6960
+ * Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
6961
+ */
6962
+ function networkByCAIP2$1(caip2, idx) {
6963
+ // Validate the format
6964
+ parseCAIP2(caip2);
6965
+ const chain = idx.byCAIP2.get(caip2);
6966
+ if (!chain) {
6967
+ throw new NetworkNotFoundError(caip2);
6968
+ }
6969
+ return chain;
6970
+ }
6971
+ /**
6972
+ * Look up a chain from a string. Tries, in order:
6973
+ * 1. CAIP-2 identifier (if the string contains ":")
6974
+ * 2. Internal name
6975
+ * 3. Numeric chain ID (parsed from string)
6976
+ *
6977
+ * Mirrors the Go `NetworkByString` function.
6978
+ */
6979
+ function networkByString$1(s, idx) {
6980
+ if (s === "") {
6981
+ throw new NetworkNotFoundError("empty string");
6982
+ }
6983
+ // Try CAIP-2
6984
+ if (s.includes(":")) {
6985
+ return networkByCAIP2$1(s, idx);
6986
+ }
6987
+ // Try internal name
6988
+ const byName = idx.byName.get(s);
6989
+ if (byName) {
6990
+ return byName;
6991
+ }
6992
+ // Try numeric chain ID
6993
+ const parsed = Number(s);
6994
+ if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {
6995
+ const byId = idx.byId.get(Math.trunc(parsed));
6996
+ if (byId) {
6997
+ return byId;
6998
+ }
6999
+ }
7000
+ throw new NetworkNotFoundError(s);
7001
+ }
7002
+ /**
7003
+ * Resolve a chain from an arbitrary input. Accepts:
7004
+ * - `number`: treated as chain ID
7005
+ * - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
7006
+ * internal name, then as a numeric chain ID string
7007
+ * - `IChainInfo`: returned directly (pass-through)
7008
+ *
7009
+ * Mirrors the Go `NetworkByAny` function.
7010
+ *
7011
+ * @throws {NetworkNotFoundError} if no matching chain is found
7012
+ */
7013
+ function networkByAny$1(v, idx) {
7014
+ if (v == null) {
7015
+ throw new NetworkNotFoundError("null");
7016
+ }
7017
+ // Pass-through if already a chain config object
7018
+ if (typeof v === "object" && "id" in v && "internalName" in v) {
7019
+ return v;
7020
+ }
7021
+ // Numeric chain ID
7022
+ if (typeof v === "number") {
7023
+ return networkById$1(Math.trunc(v), idx);
7024
+ }
7025
+ // String: CAIP-2, name, or numeric string
7026
+ if (typeof v === "string") {
7027
+ return networkByString$1(v, idx);
7028
+ }
7029
+ throw new NetworkNotFoundError(v);
7030
+ }
7031
+
6915
7032
  const MAINNET_CHAINS = [
6916
7033
  arbitrum,
6917
7034
  base,
@@ -6962,5 +7079,66 @@ const MAINNET_CHAINS = [
6962
7079
  gensyn,
6963
7080
  pharos,
6964
7081
  ];
7082
+ /** Pre-built lookup index over MAINNET_CHAINS (like Go's module-level maps). */
7083
+ const _idx = buildNetworkIndex(MAINNET_CHAINS);
7084
+ /**
7085
+ * Resolve a chain from an arbitrary input. Accepts:
7086
+ * - `number`: treated as chain ID
7087
+ * - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
7088
+ * internal name, then as a numeric chain ID string
7089
+ * - `IChainInfo`: returned directly (pass-through)
7090
+ *
7091
+ * Mirrors the Go `NetworkByAny` function.
7092
+ *
7093
+ * @example
7094
+ * ```ts
7095
+ * import { networkByAny } from "@gfxlabs/oku-chains";
7096
+ *
7097
+ * networkByAny(1) // by chain ID
7098
+ * networkByAny("mainnet") // by internal name
7099
+ * networkByAny("eip155:1") // by CAIP-2
7100
+ * networkByAny("42161") // by chain ID string
7101
+ * ```
7102
+ *
7103
+ * @throws {NetworkNotFoundError} if no matching chain is found
7104
+ */
7105
+ function networkByAny(v) {
7106
+ return networkByAny$1(v, _idx);
7107
+ }
7108
+ /**
7109
+ * Look up a chain by its numeric chain ID.
7110
+ *
7111
+ * @throws {NetworkNotFoundError} if no matching chain is found
7112
+ */
7113
+ function networkById(id) {
7114
+ return networkById$1(id, _idx);
7115
+ }
7116
+ /**
7117
+ * Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
7118
+ *
7119
+ * @throws {NetworkNotFoundError} if no matching chain is found
7120
+ */
7121
+ function networkByName(name) {
7122
+ return networkByName$1(name, _idx);
7123
+ }
7124
+ /**
7125
+ * Look up a chain from a string. Tries, in order:
7126
+ * 1. CAIP-2 identifier (if the string contains ":")
7127
+ * 2. Internal name
7128
+ * 3. Numeric chain ID (parsed from string)
7129
+ *
7130
+ * @throws {NetworkNotFoundError} if no matching chain is found
7131
+ */
7132
+ function networkByString(s) {
7133
+ return networkByString$1(s, _idx);
7134
+ }
7135
+ /**
7136
+ * Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
7137
+ *
7138
+ * @throws {NetworkNotFoundError} if no matching chain is found
7139
+ */
7140
+ function networkByCAIP2(caip2) {
7141
+ return networkByCAIP2$1(caip2, _idx);
7142
+ }
6965
7143
 
6966
- export { MAINNET_CHAINS, arbitrum, avalanche, base, blast, bob, boba, bsc, celo, corn, etherlink, filecoin, formatCAIP2, fromCAIP2, gensyn, gnosis, goat, hemi, hyperevm, lens, lightlink, linea, lisk, mainnet, manta, mantle, matchain, metal, monad, moonbeam, nibiru, optimism, parseCAIP2, pharos, plasma, polygon, polygonZkEvm, redbelly, ronin, rootstock, saga, scroll, sei, sonic, taiko, telos, toCAIP2, tronShasta, unichain, worldchain, xdc, zerog, zkSync };
7144
+ export { MAINNET_CHAINS, NetworkNotFoundError, arbitrum, avalanche, base, blast, bob, boba, bsc, buildNetworkIndex, celo, corn, etherlink, filecoin, formatCAIP2, fromCAIP2, gensyn, gnosis, goat, hemi, hyperevm, lens, lightlink, linea, lisk, mainnet, manta, mantle, matchain, metal, monad, moonbeam, networkByAny, networkByCAIP2, networkById, networkByName, networkByString, nibiru, optimism, parseCAIP2, pharos, plasma, polygon, polygonZkEvm, redbelly, ronin, rootstock, saga, scroll, sei, sonic, taiko, telos, toCAIP2, tronShasta, unichain, worldchain, xdc, zerog, zkSync };
package/dist/index.js CHANGED
@@ -6914,6 +6914,123 @@ function fromCAIP2(caip2, chains) {
6914
6914
  return chain;
6915
6915
  }
6916
6916
 
6917
+ /**
6918
+ * Error thrown when a network cannot be found by any lookup method.
6919
+ */
6920
+ class NetworkNotFoundError extends Error {
6921
+ constructor(input) {
6922
+ super(`chain not found: ${String(input)}`);
6923
+ this.name = "NetworkNotFoundError";
6924
+ }
6925
+ }
6926
+ /**
6927
+ * Build a lookup index from a list of chains for fast repeated lookups.
6928
+ * Pre-computes maps keyed by chain ID, internal name, and CAIP-2 identifier.
6929
+ */
6930
+ function buildNetworkIndex(chains) {
6931
+ const byId = new Map();
6932
+ const byName = new Map();
6933
+ const byCAIP2 = new Map();
6934
+ for (const chain of chains) {
6935
+ byId.set(chain.id, chain);
6936
+ byName.set(chain.internalName, chain);
6937
+ byCAIP2.set(`${chain.caip2Namespace}:${chain.id}`, chain);
6938
+ }
6939
+ return { byId, byName, byCAIP2 };
6940
+ }
6941
+ /**
6942
+ * Look up a chain by its numeric chain ID.
6943
+ */
6944
+ function networkById$1(id, idx) {
6945
+ const chain = idx.byId.get(id);
6946
+ if (!chain) {
6947
+ throw new NetworkNotFoundError(id);
6948
+ }
6949
+ return chain;
6950
+ }
6951
+ /**
6952
+ * Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
6953
+ */
6954
+ function networkByName$1(name, idx) {
6955
+ const chain = idx.byName.get(name);
6956
+ if (!chain) {
6957
+ throw new NetworkNotFoundError(name);
6958
+ }
6959
+ return chain;
6960
+ }
6961
+ /**
6962
+ * Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
6963
+ */
6964
+ function networkByCAIP2$1(caip2, idx) {
6965
+ // Validate the format
6966
+ parseCAIP2(caip2);
6967
+ const chain = idx.byCAIP2.get(caip2);
6968
+ if (!chain) {
6969
+ throw new NetworkNotFoundError(caip2);
6970
+ }
6971
+ return chain;
6972
+ }
6973
+ /**
6974
+ * Look up a chain from a string. Tries, in order:
6975
+ * 1. CAIP-2 identifier (if the string contains ":")
6976
+ * 2. Internal name
6977
+ * 3. Numeric chain ID (parsed from string)
6978
+ *
6979
+ * Mirrors the Go `NetworkByString` function.
6980
+ */
6981
+ function networkByString$1(s, idx) {
6982
+ if (s === "") {
6983
+ throw new NetworkNotFoundError("empty string");
6984
+ }
6985
+ // Try CAIP-2
6986
+ if (s.includes(":")) {
6987
+ return networkByCAIP2$1(s, idx);
6988
+ }
6989
+ // Try internal name
6990
+ const byName = idx.byName.get(s);
6991
+ if (byName) {
6992
+ return byName;
6993
+ }
6994
+ // Try numeric chain ID
6995
+ const parsed = Number(s);
6996
+ if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {
6997
+ const byId = idx.byId.get(Math.trunc(parsed));
6998
+ if (byId) {
6999
+ return byId;
7000
+ }
7001
+ }
7002
+ throw new NetworkNotFoundError(s);
7003
+ }
7004
+ /**
7005
+ * Resolve a chain from an arbitrary input. Accepts:
7006
+ * - `number`: treated as chain ID
7007
+ * - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
7008
+ * internal name, then as a numeric chain ID string
7009
+ * - `IChainInfo`: returned directly (pass-through)
7010
+ *
7011
+ * Mirrors the Go `NetworkByAny` function.
7012
+ *
7013
+ * @throws {NetworkNotFoundError} if no matching chain is found
7014
+ */
7015
+ function networkByAny$1(v, idx) {
7016
+ if (v == null) {
7017
+ throw new NetworkNotFoundError("null");
7018
+ }
7019
+ // Pass-through if already a chain config object
7020
+ if (typeof v === "object" && "id" in v && "internalName" in v) {
7021
+ return v;
7022
+ }
7023
+ // Numeric chain ID
7024
+ if (typeof v === "number") {
7025
+ return networkById$1(Math.trunc(v), idx);
7026
+ }
7027
+ // String: CAIP-2, name, or numeric string
7028
+ if (typeof v === "string") {
7029
+ return networkByString$1(v, idx);
7030
+ }
7031
+ throw new NetworkNotFoundError(v);
7032
+ }
7033
+
6917
7034
  const MAINNET_CHAINS = [
6918
7035
  arbitrum,
6919
7036
  base,
@@ -6964,8 +7081,70 @@ const MAINNET_CHAINS = [
6964
7081
  gensyn,
6965
7082
  pharos,
6966
7083
  ];
7084
+ /** Pre-built lookup index over MAINNET_CHAINS (like Go's module-level maps). */
7085
+ const _idx = buildNetworkIndex(MAINNET_CHAINS);
7086
+ /**
7087
+ * Resolve a chain from an arbitrary input. Accepts:
7088
+ * - `number`: treated as chain ID
7089
+ * - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
7090
+ * internal name, then as a numeric chain ID string
7091
+ * - `IChainInfo`: returned directly (pass-through)
7092
+ *
7093
+ * Mirrors the Go `NetworkByAny` function.
7094
+ *
7095
+ * @example
7096
+ * ```ts
7097
+ * import { networkByAny } from "@gfxlabs/oku-chains";
7098
+ *
7099
+ * networkByAny(1) // by chain ID
7100
+ * networkByAny("mainnet") // by internal name
7101
+ * networkByAny("eip155:1") // by CAIP-2
7102
+ * networkByAny("42161") // by chain ID string
7103
+ * ```
7104
+ *
7105
+ * @throws {NetworkNotFoundError} if no matching chain is found
7106
+ */
7107
+ function networkByAny(v) {
7108
+ return networkByAny$1(v, _idx);
7109
+ }
7110
+ /**
7111
+ * Look up a chain by its numeric chain ID.
7112
+ *
7113
+ * @throws {NetworkNotFoundError} if no matching chain is found
7114
+ */
7115
+ function networkById(id) {
7116
+ return networkById$1(id, _idx);
7117
+ }
7118
+ /**
7119
+ * Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
7120
+ *
7121
+ * @throws {NetworkNotFoundError} if no matching chain is found
7122
+ */
7123
+ function networkByName(name) {
7124
+ return networkByName$1(name, _idx);
7125
+ }
7126
+ /**
7127
+ * Look up a chain from a string. Tries, in order:
7128
+ * 1. CAIP-2 identifier (if the string contains ":")
7129
+ * 2. Internal name
7130
+ * 3. Numeric chain ID (parsed from string)
7131
+ *
7132
+ * @throws {NetworkNotFoundError} if no matching chain is found
7133
+ */
7134
+ function networkByString(s) {
7135
+ return networkByString$1(s, _idx);
7136
+ }
7137
+ /**
7138
+ * Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
7139
+ *
7140
+ * @throws {NetworkNotFoundError} if no matching chain is found
7141
+ */
7142
+ function networkByCAIP2(caip2) {
7143
+ return networkByCAIP2$1(caip2, _idx);
7144
+ }
6967
7145
 
6968
7146
  exports.MAINNET_CHAINS = MAINNET_CHAINS;
7147
+ exports.NetworkNotFoundError = NetworkNotFoundError;
6969
7148
  exports.arbitrum = arbitrum;
6970
7149
  exports.avalanche = avalanche;
6971
7150
  exports.base = base;
@@ -6973,6 +7152,7 @@ exports.blast = blast;
6973
7152
  exports.bob = bob;
6974
7153
  exports.boba = boba;
6975
7154
  exports.bsc = bsc;
7155
+ exports.buildNetworkIndex = buildNetworkIndex;
6976
7156
  exports.celo = celo;
6977
7157
  exports.corn = corn;
6978
7158
  exports.etherlink = etherlink;
@@ -6995,6 +7175,11 @@ exports.matchain = matchain;
6995
7175
  exports.metal = metal;
6996
7176
  exports.monad = monad;
6997
7177
  exports.moonbeam = moonbeam;
7178
+ exports.networkByAny = networkByAny;
7179
+ exports.networkByCAIP2 = networkByCAIP2;
7180
+ exports.networkById = networkById;
7181
+ exports.networkByName = networkByName;
7182
+ exports.networkByString = networkByString;
6998
7183
  exports.nibiru = nibiru;
6999
7184
  exports.optimism = optimism;
7000
7185
  exports.parseCAIP2 = parseCAIP2;
@@ -1,6 +1,8 @@
1
1
  export * from "./definitions/index";
2
2
  export * from "./spec/index";
3
3
  export * from "./util/caip2";
4
+ export { NetworkNotFoundError, type NetworkIndex, buildNetworkIndex, } from "./util/lookup";
5
+ import type { IChainInfo } from "./spec";
4
6
  export declare const MAINNET_CHAINS: readonly [Readonly<{
5
7
  name: "Arbitrum";
6
8
  launchTime: 1688997600;
@@ -10760,3 +10762,52 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
10760
10762
  } & {
10761
10763
  caip2Namespace: string;
10762
10764
  }>];
10765
+ /**
10766
+ * Resolve a chain from an arbitrary input. Accepts:
10767
+ * - `number`: treated as chain ID
10768
+ * - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
10769
+ * internal name, then as a numeric chain ID string
10770
+ * - `IChainInfo`: returned directly (pass-through)
10771
+ *
10772
+ * Mirrors the Go `NetworkByAny` function.
10773
+ *
10774
+ * @example
10775
+ * ```ts
10776
+ * import { networkByAny } from "@gfxlabs/oku-chains";
10777
+ *
10778
+ * networkByAny(1) // by chain ID
10779
+ * networkByAny("mainnet") // by internal name
10780
+ * networkByAny("eip155:1") // by CAIP-2
10781
+ * networkByAny("42161") // by chain ID string
10782
+ * ```
10783
+ *
10784
+ * @throws {NetworkNotFoundError} if no matching chain is found
10785
+ */
10786
+ export declare function networkByAny(v: string | number | IChainInfo): IChainInfo;
10787
+ /**
10788
+ * Look up a chain by its numeric chain ID.
10789
+ *
10790
+ * @throws {NetworkNotFoundError} if no matching chain is found
10791
+ */
10792
+ export declare function networkById(id: number): IChainInfo;
10793
+ /**
10794
+ * Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
10795
+ *
10796
+ * @throws {NetworkNotFoundError} if no matching chain is found
10797
+ */
10798
+ export declare function networkByName(name: string): IChainInfo;
10799
+ /**
10800
+ * Look up a chain from a string. Tries, in order:
10801
+ * 1. CAIP-2 identifier (if the string contains ":")
10802
+ * 2. Internal name
10803
+ * 3. Numeric chain ID (parsed from string)
10804
+ *
10805
+ * @throws {NetworkNotFoundError} if no matching chain is found
10806
+ */
10807
+ export declare function networkByString(s: string): IChainInfo;
10808
+ /**
10809
+ * Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
10810
+ *
10811
+ * @throws {NetworkNotFoundError} if no matching chain is found
10812
+ */
10813
+ export declare function networkByCAIP2(caip2: string): IChainInfo;
@@ -0,0 +1,53 @@
1
+ import type { IChainInfo } from "../spec";
2
+ /**
3
+ * Error thrown when a network cannot be found by any lookup method.
4
+ */
5
+ export declare class NetworkNotFoundError extends Error {
6
+ constructor(input: unknown);
7
+ }
8
+ /**
9
+ * Pre-computed lookup index for fast chain resolution.
10
+ */
11
+ export interface NetworkIndex {
12
+ byId: Map<number, IChainInfo>;
13
+ byName: Map<string, IChainInfo>;
14
+ byCAIP2: Map<string, IChainInfo>;
15
+ }
16
+ /**
17
+ * Build a lookup index from a list of chains for fast repeated lookups.
18
+ * Pre-computes maps keyed by chain ID, internal name, and CAIP-2 identifier.
19
+ */
20
+ export declare function buildNetworkIndex(chains: readonly IChainInfo[]): NetworkIndex;
21
+ /**
22
+ * Look up a chain by its numeric chain ID.
23
+ */
24
+ export declare function networkById(id: number, idx: NetworkIndex): IChainInfo;
25
+ /**
26
+ * Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
27
+ */
28
+ export declare function networkByName(name: string, idx: NetworkIndex): IChainInfo;
29
+ /**
30
+ * Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
31
+ */
32
+ export declare function networkByCAIP2(caip2: string, idx: NetworkIndex): IChainInfo;
33
+ /**
34
+ * Look up a chain from a string. Tries, in order:
35
+ * 1. CAIP-2 identifier (if the string contains ":")
36
+ * 2. Internal name
37
+ * 3. Numeric chain ID (parsed from string)
38
+ *
39
+ * Mirrors the Go `NetworkByString` function.
40
+ */
41
+ export declare function networkByString(s: string, idx: NetworkIndex): IChainInfo;
42
+ /**
43
+ * Resolve a chain from an arbitrary input. Accepts:
44
+ * - `number`: treated as chain ID
45
+ * - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
46
+ * internal name, then as a numeric chain ID string
47
+ * - `IChainInfo`: returned directly (pass-through)
48
+ *
49
+ * Mirrors the Go `NetworkByAny` function.
50
+ *
51
+ * @throws {NetworkNotFoundError} if no matching chain is found
52
+ */
53
+ export declare function networkByAny(v: string | number | IChainInfo, idx: NetworkIndex): IChainInfo;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gfxlabs/oku-chains",
3
- "version": "1.12.3",
3
+ "version": "1.12.4",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index-mjs.js",
@@ -53,7 +53,7 @@
53
53
  "typescript": "^5.9.3",
54
54
  "viem": "^2.47.11"
55
55
  },
56
- "packageManager": "yarn@4.6.0",
56
+ "packageManager": "yarn@4.15.0",
57
57
  "peerDependencies": {
58
58
  "viem": "2.x"
59
59
  }