@gfxlabs/oku-chains 1.12.2 → 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
@@ -146,7 +146,8 @@
146
146
  usdcAddress: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
147
147
  },
148
148
  oku: {
149
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
149
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
150
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
150
151
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
151
152
  limitOrderRegistryDeployBlock: 98754575,
152
153
  pricing: {
@@ -585,7 +586,8 @@
585
586
  usdcAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
586
587
  },
587
588
  oku: {
588
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
589
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
590
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
589
591
  limitOrderRegistry: "0xff8b754c64e9a8473bd6e1118d0eac67f0a8ae27",
590
592
  limitOrderRegistryDeployBlock: 7644835,
591
593
  pricing: {
@@ -1154,7 +1156,7 @@
1154
1156
  wethAddress: "0x2170ed0880ac9a755fd29b2688956bd959f933f8",
1155
1157
  },
1156
1158
  oku: {
1157
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
1159
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
1158
1160
  limitOrderRegistry: "0x19b9bd76028cab6f414ed1fc57400b75b5ca0627",
1159
1161
  limitOrderRegistryDeployBlock: 34187988,
1160
1162
  pricing: {
@@ -4063,7 +4065,8 @@
4063
4065
  dexscreener: "optimism",
4064
4066
  },
4065
4067
  oku: {
4066
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4068
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
4069
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4067
4070
  limitOrderRegistryDeployBlock: 105276132,
4068
4071
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
4069
4072
  customOrderTypes: {
@@ -4662,7 +4665,7 @@
4662
4665
  wethAddress: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
4663
4666
  },
4664
4667
  oku: {
4665
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4668
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4666
4669
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
4667
4670
  limitOrderRegistryDeployBlock: 43640541,
4668
4671
  pricing: {
@@ -6309,8 +6312,10 @@
6309
6312
  wbtcAddress: "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3",
6310
6313
  },
6311
6314
  oku: {
6312
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
6313
- Permit2Proxy: "0x43830FE2074eaD6562586b512D87aa6af840a688",
6315
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
6316
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
6317
+ permit2Proxy10: "0x1B361B7cEce8920Bb5C3606B322EEC08FA85EB12",
6318
+ permit2Proxy11: "0x43830FE2074eaD6562586b512D87aa6af840a688",
6314
6319
  pricing: {
6315
6320
  nativeWrappedToken: "0x4200000000000000000000000000000000000006",
6316
6321
  nativeWrappedName: "ETH",
@@ -6910,6 +6915,123 @@
6910
6915
  return chain;
6911
6916
  }
6912
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
+
6913
7035
  const MAINNET_CHAINS = [
6914
7036
  arbitrum,
6915
7037
  base,
@@ -6960,8 +7082,70 @@
6960
7082
  gensyn,
6961
7083
  pharos,
6962
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
+ }
6963
7146
 
6964
7147
  exports.MAINNET_CHAINS = MAINNET_CHAINS;
7148
+ exports.NetworkNotFoundError = NetworkNotFoundError;
6965
7149
  exports.arbitrum = arbitrum;
6966
7150
  exports.avalanche = avalanche;
6967
7151
  exports.base = base;
@@ -6969,6 +7153,7 @@
6969
7153
  exports.bob = bob;
6970
7154
  exports.boba = boba;
6971
7155
  exports.bsc = bsc;
7156
+ exports.buildNetworkIndex = buildNetworkIndex;
6972
7157
  exports.celo = celo;
6973
7158
  exports.corn = corn;
6974
7159
  exports.etherlink = etherlink;
@@ -6991,6 +7176,11 @@
6991
7176
  exports.metal = metal;
6992
7177
  exports.monad = monad;
6993
7178
  exports.moonbeam = moonbeam;
7179
+ exports.networkByAny = networkByAny;
7180
+ exports.networkByCAIP2 = networkByCAIP2;
7181
+ exports.networkById = networkById;
7182
+ exports.networkByName = networkByName;
7183
+ exports.networkByString = networkByString;
6994
7184
  exports.nibiru = nibiru;
6995
7185
  exports.optimism = optimism;
6996
7186
  exports.parseCAIP2 = parseCAIP2;
package/dist/index-mjs.js CHANGED
@@ -143,7 +143,8 @@ const arbitrum = makeConfig({
143
143
  usdcAddress: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
144
144
  },
145
145
  oku: {
146
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
146
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
147
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
147
148
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
148
149
  limitOrderRegistryDeployBlock: 98754575,
149
150
  pricing: {
@@ -582,7 +583,8 @@ const base = makeConfig({
582
583
  usdcAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
583
584
  },
584
585
  oku: {
585
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
586
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
587
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
586
588
  limitOrderRegistry: "0xff8b754c64e9a8473bd6e1118d0eac67f0a8ae27",
587
589
  limitOrderRegistryDeployBlock: 7644835,
588
590
  pricing: {
@@ -1151,7 +1153,7 @@ const bsc = makeConfig({
1151
1153
  wethAddress: "0x2170ed0880ac9a755fd29b2688956bd959f933f8",
1152
1154
  },
1153
1155
  oku: {
1154
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
1156
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
1155
1157
  limitOrderRegistry: "0x19b9bd76028cab6f414ed1fc57400b75b5ca0627",
1156
1158
  limitOrderRegistryDeployBlock: 34187988,
1157
1159
  pricing: {
@@ -4060,7 +4062,8 @@ const optimism = makeConfig({
4060
4062
  dexscreener: "optimism",
4061
4063
  },
4062
4064
  oku: {
4063
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4065
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
4066
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4064
4067
  limitOrderRegistryDeployBlock: 105276132,
4065
4068
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
4066
4069
  customOrderTypes: {
@@ -4659,7 +4662,7 @@ const polygon = makeConfig({
4659
4662
  wethAddress: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
4660
4663
  },
4661
4664
  oku: {
4662
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4665
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4663
4666
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
4664
4667
  limitOrderRegistryDeployBlock: 43640541,
4665
4668
  pricing: {
@@ -6306,8 +6309,10 @@ const worldchain = makeConfig({
6306
6309
  wbtcAddress: "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3",
6307
6310
  },
6308
6311
  oku: {
6309
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
6310
- Permit2Proxy: "0x43830FE2074eaD6562586b512D87aa6af840a688",
6312
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
6313
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
6314
+ permit2Proxy10: "0x1B361B7cEce8920Bb5C3606B322EEC08FA85EB12",
6315
+ permit2Proxy11: "0x43830FE2074eaD6562586b512D87aa6af840a688",
6311
6316
  pricing: {
6312
6317
  nativeWrappedToken: "0x4200000000000000000000000000000000000006",
6313
6318
  nativeWrappedName: "ETH",
@@ -6907,6 +6912,123 @@ function fromCAIP2(caip2, chains) {
6907
6912
  return chain;
6908
6913
  }
6909
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
+
6910
7032
  const MAINNET_CHAINS = [
6911
7033
  arbitrum,
6912
7034
  base,
@@ -6957,5 +7079,66 @@ const MAINNET_CHAINS = [
6957
7079
  gensyn,
6958
7080
  pharos,
6959
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
+ }
6960
7143
 
6961
- 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
@@ -145,7 +145,8 @@ const arbitrum = makeConfig({
145
145
  usdcAddress: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
146
146
  },
147
147
  oku: {
148
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
148
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
149
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
149
150
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
150
151
  limitOrderRegistryDeployBlock: 98754575,
151
152
  pricing: {
@@ -584,7 +585,8 @@ const base = makeConfig({
584
585
  usdcAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
585
586
  },
586
587
  oku: {
587
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
588
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
589
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
588
590
  limitOrderRegistry: "0xff8b754c64e9a8473bd6e1118d0eac67f0a8ae27",
589
591
  limitOrderRegistryDeployBlock: 7644835,
590
592
  pricing: {
@@ -1153,7 +1155,7 @@ const bsc = makeConfig({
1153
1155
  wethAddress: "0x2170ed0880ac9a755fd29b2688956bd959f933f8",
1154
1156
  },
1155
1157
  oku: {
1156
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
1158
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
1157
1159
  limitOrderRegistry: "0x19b9bd76028cab6f414ed1fc57400b75b5ca0627",
1158
1160
  limitOrderRegistryDeployBlock: 34187988,
1159
1161
  pricing: {
@@ -4062,7 +4064,8 @@ const optimism = makeConfig({
4062
4064
  dexscreener: "optimism",
4063
4065
  },
4064
4066
  oku: {
4065
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4067
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
4068
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4066
4069
  limitOrderRegistryDeployBlock: 105276132,
4067
4070
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
4068
4071
  customOrderTypes: {
@@ -4661,7 +4664,7 @@ const polygon = makeConfig({
4661
4664
  wethAddress: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
4662
4665
  },
4663
4666
  oku: {
4664
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4667
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
4665
4668
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf",
4666
4669
  limitOrderRegistryDeployBlock: 43640541,
4667
4670
  pricing: {
@@ -6308,8 +6311,10 @@ const worldchain = makeConfig({
6308
6311
  wbtcAddress: "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3",
6309
6312
  },
6310
6313
  oku: {
6311
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
6312
- Permit2Proxy: "0x43830FE2074eaD6562586b512D87aa6af840a688",
6314
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b",
6315
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad",
6316
+ permit2Proxy10: "0x1B361B7cEce8920Bb5C3606B322EEC08FA85EB12",
6317
+ permit2Proxy11: "0x43830FE2074eaD6562586b512D87aa6af840a688",
6313
6318
  pricing: {
6314
6319
  nativeWrappedToken: "0x4200000000000000000000000000000000000006",
6315
6320
  nativeWrappedName: "ETH",
@@ -6909,6 +6914,123 @@ function fromCAIP2(caip2, chains) {
6909
6914
  return chain;
6910
6915
  }
6911
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
+
6912
7034
  const MAINNET_CHAINS = [
6913
7035
  arbitrum,
6914
7036
  base,
@@ -6959,8 +7081,70 @@ const MAINNET_CHAINS = [
6959
7081
  gensyn,
6960
7082
  pharos,
6961
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
+ }
6962
7145
 
6963
7146
  exports.MAINNET_CHAINS = MAINNET_CHAINS;
7147
+ exports.NetworkNotFoundError = NetworkNotFoundError;
6964
7148
  exports.arbitrum = arbitrum;
6965
7149
  exports.avalanche = avalanche;
6966
7150
  exports.base = base;
@@ -6968,6 +7152,7 @@ exports.blast = blast;
6968
7152
  exports.bob = bob;
6969
7153
  exports.boba = boba;
6970
7154
  exports.bsc = bsc;
7155
+ exports.buildNetworkIndex = buildNetworkIndex;
6971
7156
  exports.celo = celo;
6972
7157
  exports.corn = corn;
6973
7158
  exports.etherlink = etherlink;
@@ -6990,6 +7175,11 @@ exports.matchain = matchain;
6990
7175
  exports.metal = metal;
6991
7176
  exports.monad = monad;
6992
7177
  exports.moonbeam = moonbeam;
7178
+ exports.networkByAny = networkByAny;
7179
+ exports.networkByCAIP2 = networkByCAIP2;
7180
+ exports.networkById = networkById;
7181
+ exports.networkByName = networkByName;
7182
+ exports.networkByString = networkByString;
6993
7183
  exports.nibiru = nibiru;
6994
7184
  exports.optimism = optimism;
6995
7185
  exports.parseCAIP2 = parseCAIP2;
@@ -114,7 +114,8 @@ export declare const arbitrum: Readonly<{
114
114
  usdcAddress: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8";
115
115
  };
116
116
  oku: {
117
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
117
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b";
118
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
118
119
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf";
119
120
  limitOrderRegistryDeployBlock: number;
120
121
  pricing: {
@@ -110,7 +110,8 @@ export declare const base: Readonly<{
110
110
  usdcAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
111
111
  };
112
112
  oku: {
113
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
113
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b";
114
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
114
115
  limitOrderRegistry: "0xff8b754c64e9a8473bd6e1118d0eac67f0a8ae27";
115
116
  limitOrderRegistryDeployBlock: number;
116
117
  pricing: {
@@ -114,7 +114,7 @@ export declare const bsc: Readonly<{
114
114
  wethAddress: "0x2170ed0880ac9a755fd29b2688956bd959f933f8";
115
115
  };
116
116
  oku: {
117
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
117
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
118
118
  limitOrderRegistry: "0x19b9bd76028cab6f414ed1fc57400b75b5ca0627";
119
119
  limitOrderRegistryDeployBlock: number;
120
120
  pricing: {
@@ -84,7 +84,8 @@ export declare const optimism: Readonly<{
84
84
  dexscreener: string;
85
85
  };
86
86
  oku: {
87
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
87
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b";
88
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
88
89
  limitOrderRegistryDeployBlock: number;
89
90
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf";
90
91
  customOrderTypes: {
@@ -109,7 +109,7 @@ export declare const polygon: Readonly<{
109
109
  wethAddress: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619";
110
110
  };
111
111
  oku: {
112
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
112
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
113
113
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf";
114
114
  limitOrderRegistryDeployBlock: number;
115
115
  pricing: {
@@ -61,8 +61,10 @@ export declare const worldchain: Readonly<{
61
61
  wbtcAddress: "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3";
62
62
  };
63
63
  oku: {
64
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
65
- Permit2Proxy: "0x43830FE2074eaD6562586b512D87aa6af840a688";
64
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b";
65
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
66
+ permit2Proxy10: "0x1B361B7cEce8920Bb5C3606B322EEC08FA85EB12";
67
+ permit2Proxy11: "0x43830FE2074eaD6562586b512D87aa6af840a688";
66
68
  pricing: {
67
69
  nativeWrappedToken: "0x4200000000000000000000000000000000000006";
68
70
  nativeWrappedName: string;
@@ -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;
@@ -117,7 +119,8 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
117
119
  usdcAddress: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8";
118
120
  };
119
121
  oku: {
120
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
122
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b";
123
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
121
124
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf";
122
125
  limitOrderRegistryDeployBlock: number;
123
126
  pricing: {
@@ -325,7 +328,8 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
325
328
  usdcAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
326
329
  };
327
330
  oku: {
328
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
331
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b";
332
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
329
333
  limitOrderRegistry: "0xff8b754c64e9a8473bd6e1118d0eac67f0a8ae27";
330
334
  limitOrderRegistryDeployBlock: number;
331
335
  pricing: {
@@ -1367,7 +1371,7 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
1367
1371
  wethAddress: "0x2170ed0880ac9a755fd29b2688956bd959f933f8";
1368
1372
  };
1369
1373
  oku: {
1370
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
1374
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
1371
1375
  limitOrderRegistry: "0x19b9bd76028cab6f414ed1fc57400b75b5ca0627";
1372
1376
  limitOrderRegistryDeployBlock: number;
1373
1377
  pricing: {
@@ -2063,7 +2067,8 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
2063
2067
  dexscreener: string;
2064
2068
  };
2065
2069
  oku: {
2066
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
2070
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b";
2071
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
2067
2072
  limitOrderRegistryDeployBlock: number;
2068
2073
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf";
2069
2074
  customOrderTypes: {
@@ -2579,7 +2584,7 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
2579
2584
  wethAddress: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619";
2580
2585
  };
2581
2586
  oku: {
2582
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
2587
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
2583
2588
  limitOrderRegistry: "0x54dF9e11c7933a9cA3BD1E540B63dA15edAe40bf";
2584
2589
  limitOrderRegistryDeployBlock: number;
2585
2590
  pricing: {
@@ -8131,8 +8136,10 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
8131
8136
  wbtcAddress: "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3";
8132
8137
  };
8133
8138
  oku: {
8134
- router: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
8135
- Permit2Proxy: "0x43830FE2074eaD6562586b512D87aa6af840a688";
8139
+ router10: "0x822CFA9749d16Fb4B4F2B0515924cec69512893b";
8140
+ router11: "0x25132a6F4f0A993d62e57D0510df1395729125ad";
8141
+ permit2Proxy10: "0x1B361B7cEce8920Bb5C3606B322EEC08FA85EB12";
8142
+ permit2Proxy11: "0x43830FE2074eaD6562586b512D87aa6af840a688";
8136
8143
  pricing: {
8137
8144
  nativeWrappedToken: "0x4200000000000000000000000000000000000006";
8138
8145
  nativeWrappedName: string;
@@ -10755,3 +10762,52 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
10755
10762
  } & {
10756
10763
  caip2Namespace: string;
10757
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;
@@ -70,8 +70,10 @@ export interface OkuCustomOrderTypesMetadata {
70
70
  oracleLessDeployBlock?: number;
71
71
  }
72
72
  export interface OkuMetadata {
73
- router?: Address;
74
- Permit2Proxy?: Address;
73
+ router10?: Address;
74
+ router11?: Address;
75
+ permit2Proxy10?: Address;
76
+ permit2Proxy11?: Address;
75
77
  limitOrderRegistry?: Address;
76
78
  limitOrderRegistryDeployBlock?: number;
77
79
  pricing?: OkuPricingMetadata;
@@ -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.2",
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
  }