@xyo-network/witness-blockchain-abstract 2.79.4 → 2.79.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/browser/Witness.d.cts +6 -2
  2. package/dist/browser/Witness.d.cts.map +1 -1
  3. package/dist/browser/Witness.d.mts +6 -2
  4. package/dist/browser/Witness.d.mts.map +1 -1
  5. package/dist/browser/Witness.d.ts +6 -2
  6. package/dist/browser/Witness.d.ts.map +1 -1
  7. package/dist/browser/index.cjs +79 -80
  8. package/dist/browser/index.cjs.map +1 -1
  9. package/dist/browser/index.d.cts +1 -0
  10. package/dist/browser/index.d.cts.map +1 -1
  11. package/dist/browser/index.d.mts +1 -0
  12. package/dist/browser/index.d.mts.map +1 -1
  13. package/dist/browser/index.d.ts +1 -0
  14. package/dist/browser/index.d.ts.map +1 -1
  15. package/dist/browser/index.js +79 -80
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/browser/lib/checkIpfsUrl.d.cts +1 -1
  18. package/dist/browser/lib/checkIpfsUrl.d.cts.map +1 -1
  19. package/dist/browser/lib/checkIpfsUrl.d.mts +1 -1
  20. package/dist/browser/lib/checkIpfsUrl.d.mts.map +1 -1
  21. package/dist/browser/lib/checkIpfsUrl.d.ts +1 -1
  22. package/dist/browser/lib/checkIpfsUrl.d.ts.map +1 -1
  23. package/dist/browser/lib/getProviderFromEnv.d.cts +6 -2
  24. package/dist/browser/lib/getProviderFromEnv.d.cts.map +1 -1
  25. package/dist/browser/lib/getProviderFromEnv.d.mts +6 -2
  26. package/dist/browser/lib/getProviderFromEnv.d.mts.map +1 -1
  27. package/dist/browser/lib/getProviderFromEnv.d.ts +6 -2
  28. package/dist/browser/lib/getProviderFromEnv.d.ts.map +1 -1
  29. package/dist/browser/lib/index.d.cts +0 -1
  30. package/dist/browser/lib/index.d.cts.map +1 -1
  31. package/dist/browser/lib/index.d.mts +0 -1
  32. package/dist/browser/lib/index.d.mts.map +1 -1
  33. package/dist/browser/lib/index.d.ts +0 -1
  34. package/dist/browser/lib/index.d.ts.map +1 -1
  35. package/dist/browser/model.d.cts +9 -0
  36. package/dist/browser/model.d.cts.map +1 -0
  37. package/dist/browser/model.d.mts +9 -0
  38. package/dist/browser/model.d.mts.map +1 -0
  39. package/dist/browser/model.d.ts +9 -0
  40. package/dist/browser/model.d.ts.map +1 -0
  41. package/dist/node/Witness.d.cts +6 -2
  42. package/dist/node/Witness.d.cts.map +1 -1
  43. package/dist/node/Witness.d.mts +6 -2
  44. package/dist/node/Witness.d.mts.map +1 -1
  45. package/dist/node/Witness.d.ts +6 -2
  46. package/dist/node/Witness.d.ts.map +1 -1
  47. package/dist/node/index.cjs +82 -87
  48. package/dist/node/index.cjs.map +1 -1
  49. package/dist/node/index.d.cts +1 -0
  50. package/dist/node/index.d.cts.map +1 -1
  51. package/dist/node/index.d.mts +1 -0
  52. package/dist/node/index.d.mts.map +1 -1
  53. package/dist/node/index.d.ts +1 -0
  54. package/dist/node/index.d.ts.map +1 -1
  55. package/dist/node/index.js +79 -80
  56. package/dist/node/index.js.map +1 -1
  57. package/dist/node/lib/checkIpfsUrl.d.cts +1 -1
  58. package/dist/node/lib/checkIpfsUrl.d.cts.map +1 -1
  59. package/dist/node/lib/checkIpfsUrl.d.mts +1 -1
  60. package/dist/node/lib/checkIpfsUrl.d.mts.map +1 -1
  61. package/dist/node/lib/checkIpfsUrl.d.ts +1 -1
  62. package/dist/node/lib/checkIpfsUrl.d.ts.map +1 -1
  63. package/dist/node/lib/getProviderFromEnv.d.cts +6 -2
  64. package/dist/node/lib/getProviderFromEnv.d.cts.map +1 -1
  65. package/dist/node/lib/getProviderFromEnv.d.mts +6 -2
  66. package/dist/node/lib/getProviderFromEnv.d.mts.map +1 -1
  67. package/dist/node/lib/getProviderFromEnv.d.ts +6 -2
  68. package/dist/node/lib/getProviderFromEnv.d.ts.map +1 -1
  69. package/dist/node/lib/index.d.cts +0 -1
  70. package/dist/node/lib/index.d.cts.map +1 -1
  71. package/dist/node/lib/index.d.mts +0 -1
  72. package/dist/node/lib/index.d.mts.map +1 -1
  73. package/dist/node/lib/index.d.ts +0 -1
  74. package/dist/node/lib/index.d.ts.map +1 -1
  75. package/dist/node/model.d.cts +9 -0
  76. package/dist/node/model.d.cts.map +1 -0
  77. package/dist/node/model.d.mts +9 -0
  78. package/dist/node/model.d.mts.map +1 -0
  79. package/dist/node/model.d.ts +9 -0
  80. package/dist/node/model.d.ts.map +1 -0
  81. package/package.json +9 -7
  82. package/src/Witness.ts +20 -3
  83. package/src/index.ts +1 -0
  84. package/src/lib/checkIpfsUrl.ts +20 -6
  85. package/src/lib/getProviderFromEnv.ts +62 -25
  86. package/src/lib/index.ts +0 -1
  87. package/src/model.ts +13 -0
  88. package/dist/browser/lib/getErc1967Status.d.cts +0 -19
  89. package/dist/browser/lib/getErc1967Status.d.cts.map +0 -1
  90. package/dist/browser/lib/getErc1967Status.d.mts +0 -19
  91. package/dist/browser/lib/getErc1967Status.d.mts.map +0 -1
  92. package/dist/browser/lib/getErc1967Status.d.ts +0 -19
  93. package/dist/browser/lib/getErc1967Status.d.ts.map +0 -1
  94. package/dist/node/lib/getErc1967Status.d.cts +0 -19
  95. package/dist/node/lib/getErc1967Status.d.cts.map +0 -1
  96. package/dist/node/lib/getErc1967Status.d.mts +0 -19
  97. package/dist/node/lib/getErc1967Status.d.mts.map +0 -1
  98. package/dist/node/lib/getErc1967Status.d.ts +0 -19
  99. package/dist/node/lib/getErc1967Status.d.ts.map +0 -1
  100. package/src/lib/getErc1967Status.ts +0 -63
@@ -1,4 +1,6 @@
1
1
  // src/lib/checkIpfsUrl.ts
2
+ import { assertEx } from "@xylabs/assert";
3
+ var allowIpfsIoRepair = true;
2
4
  var checkIpfsUrl = (urlToCheck, ipfsGateway) => {
3
5
  try {
4
6
  const url = new URL(urlToCheck);
@@ -8,99 +10,79 @@ var checkIpfsUrl = (urlToCheck, ipfsGateway) => {
8
10
  const query = url.search;
9
11
  if (protocol === "ipfs:") {
10
12
  protocol = "https:";
11
- host = ipfsGateway;
13
+ host = assertEx(ipfsGateway, "No ipfsGateway provided");
12
14
  path = url.host === "ipfs" ? `ipfs${path}` : `ipfs/${url.host}${path}`;
13
15
  const root = `${protocol}//${host}/${path}`;
14
16
  return query?.length > 0 ? `${root}?${query}` : root;
17
+ } else if (allowIpfsIoRepair && protocol === "https" && host === "ipfs.io") {
18
+ protocol = "https:";
19
+ host = assertEx(ipfsGateway, "No ipfsGateway provided");
20
+ const pathParts = path.split("/");
21
+ if (pathParts[0] === "ipfs") {
22
+ pathParts.shift();
23
+ }
24
+ path = pathParts.join("/");
25
+ const root = `${protocol}//${host}/${path}`;
26
+ return query?.length > 0 ? `${root}?${query}` : root;
15
27
  } else {
16
28
  return urlToCheck;
17
29
  }
18
30
  } catch (ex) {
19
- const error = ex;
20
- console.error(`${error.name}:${error.message} [${urlToCheck}]`);
21
- console.log(error.stack);
22
- return void 0;
23
- }
24
- };
25
-
26
- // src/lib/getErc1967Status.ts
27
- import { BigNumber } from "@xylabs/bignumber";
28
- import { UpgradeableBeacon__factory } from "@xyo-network/open-zeppelin-typechain";
29
- var ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
30
- var ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
31
- var ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
32
- var ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
33
- var hexBytesOnlyOnly = (value) => {
34
- return value.startsWith("0x") ? value.substring(2) : value;
35
- };
36
- var addressFromHex = (value) => {
37
- return `0x${hexBytesOnlyOnly(value).substring(24)}`;
38
- };
39
- var isHexZero = (value) => {
40
- return new BigNumber(hexBytesOnlyOnly(value), "hex").eqn(0);
41
- };
42
- var readAddressFromSlot = async (provider, address, slot) => {
43
- const slotValue = await provider.getStorageAt(address, slot);
44
- return addressFromHex(slotValue);
45
- };
46
- var getErc1967Status = async (provider, address) => {
47
- const proxy = {
48
- admin: await readAddressFromSlot(provider, address, ERC1967_PROXY_ADMIN_STORAGE_SLOT),
49
- beacon: await readAddressFromSlot(provider, address, ERC1967_PROXY_BEACON_STORAGE_SLOT),
50
- implementation: await readAddressFromSlot(provider, address, ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT),
51
- rollback: await readAddressFromSlot(provider, address, ERC1967_PROXY_ROLLBACK_STORAGE_SLOT)
52
- };
53
- if (!isHexZero(proxy.beacon)) {
54
- const beacon = UpgradeableBeacon__factory.connect(proxy.beacon, provider);
55
- try {
56
- proxy.implementation = await beacon.callStatic.implementation();
57
- } catch (ex) {
58
- const error = ex;
59
- console.log(error.message);
60
- }
31
+ return urlToCheck;
61
32
  }
62
- return {
63
- address,
64
- implementation: isHexZero(proxy.implementation) ? address : proxy.implementation,
65
- proxy
66
- };
67
33
  };
68
34
 
69
35
  // src/lib/getProviderFromEnv.ts
70
36
  import { InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, WebSocketProvider } from "@ethersproject/providers";
71
- import { assertEx } from "@xylabs/assert";
72
- var createInfuraRpc = (chainId) => {
73
- return new InfuraProvider(chainId, {
37
+ import { assertEx as assertEx2 } from "@xylabs/assert";
38
+ var enableConfigOverride = false;
39
+ var configureConnection = (connection, { timeout = 1e3 } = {}) => {
40
+ if (connection && enableConfigOverride) {
41
+ connection.timeout = timeout;
42
+ connection.throttleCallback = async (attempt, url) => {
43
+ console.log(`throttleCallback[${attempt}]: ${url}`);
44
+ return await Promise.resolve(true);
45
+ };
46
+ }
47
+ };
48
+ var createInfuraRpc = (chainId, overrides) => {
49
+ const provider = process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET ? new InfuraProvider(chainId, {
74
50
  projectId: process.env.INFURA_PROJECT_ID,
75
51
  projectSecret: process.env.INFURA_PROJECT_SECRET
76
- });
52
+ }) : void 0;
53
+ configureConnection(provider?.connection, overrides);
54
+ return provider;
77
55
  };
78
- var createInfuraWss = (chainId) => {
79
- return new InfuraWebSocketProvider(chainId, {
56
+ var createInfuraWss = (chainId, overrides) => {
57
+ const provider = process.env.INFURA_PROJECT_ID ? new InfuraWebSocketProvider(chainId, {
80
58
  projectId: process.env.INFURA_PROJECT_ID
81
- });
59
+ }) : void 0;
60
+ configureConnection(provider?.connection, overrides);
61
+ return provider;
82
62
  };
83
- var createQuicknodeWss = (chainId) => {
63
+ var createQuicknodeWss = (chainId, overrides) => {
84
64
  const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI;
85
- return quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : void 0;
65
+ const provider = quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : void 0;
66
+ configureConnection(provider?.connection, overrides);
67
+ return provider;
86
68
  };
87
- var createQuicknodeRpc = (chainId) => {
69
+ var createQuicknodeRpc = (chainId, overrides) => {
88
70
  const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI;
89
- return quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : void 0;
71
+ const provider = quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : void 0;
72
+ configureConnection(provider?.connection, overrides);
73
+ return provider;
90
74
  };
91
- var getProviderFromEnv = (chainId = 1, options) => {
92
- const { providerSource, providerType } = options ?? {};
75
+ var getProviderFromEnv = (chainId = 1, { providerSource = "infura", providerType = "rpc", overrides } = {}) => {
93
76
  let provider = void 0;
94
77
  switch (providerSource) {
95
78
  case "quicknode": {
96
79
  switch (providerType) {
97
80
  case "rpc": {
98
- provider = createQuicknodeRpc(chainId);
81
+ provider = createQuicknodeRpc(chainId, overrides);
99
82
  break;
100
83
  }
101
- case "wss":
102
- default: {
103
- provider = createQuicknodeWss(chainId);
84
+ case "wss": {
85
+ provider = createQuicknodeWss(chainId, overrides);
104
86
  break;
105
87
  }
106
88
  }
@@ -109,13 +91,12 @@ var getProviderFromEnv = (chainId = 1, options) => {
109
91
  default:
110
92
  case "infura": {
111
93
  switch (providerType) {
112
- case "rpc": {
113
- provider = createInfuraRpc(chainId);
94
+ case "wss": {
95
+ provider = createInfuraWss(chainId, overrides);
114
96
  break;
115
97
  }
116
- case "wss":
117
- default: {
118
- provider = createInfuraWss(chainId);
98
+ case "rpc": {
99
+ provider = createInfuraRpc(chainId, overrides);
119
100
  break;
120
101
  }
121
102
  }
@@ -125,7 +106,7 @@ var getProviderFromEnv = (chainId = 1, options) => {
125
106
  if (!provider) {
126
107
  provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId);
127
108
  }
128
- return assertEx(provider, `Unable to create provider [${chainId}]: ${options ? JSON.stringify(options) : "default"}`);
109
+ return assertEx2(provider, `Unable to create provider [${chainId}]: ${providerSource}|${providerType}`);
129
110
  };
130
111
  var providers = {};
131
112
  var getSharedProviderFromEnv = (chainId = 1, options) => {
@@ -133,27 +114,45 @@ var getSharedProviderFromEnv = (chainId = 1, options) => {
133
114
  providers[key] = providers[key] ?? getProviderFromEnv(chainId, options);
134
115
  return providers[key];
135
116
  };
117
+ var getProvidersFromEnv = (count = 1, chainId = 1, options = {}) => {
118
+ const result = [];
119
+ for (let i = 0; i < count; i++) {
120
+ result.push(getProviderFromEnv(chainId, options));
121
+ }
122
+ return result;
123
+ };
124
+
125
+ // src/model.ts
126
+ var BlockchainAddressSchema = "network.xyo.blockchain.address";
136
127
 
137
128
  // src/Witness.ts
138
129
  import { AbstractWitness } from "@xyo-network/abstract-witness";
139
130
  var BlockchainWitnessConfigSchema = "network.xyo.blockchain.witness";
140
131
  var AbstractBlockchainWitness = class extends AbstractWitness {
141
- get provider() {
142
- const { providers: providers2 } = this.params;
132
+ _providers = void 0;
133
+ async getProvider(cache = false, error) {
134
+ const providers2 = await this.getProviders(cache);
135
+ if (providers2.length === 0) {
136
+ if (error) {
137
+ throw Error(typeof error === "string" ? error : "No providers available");
138
+ }
139
+ return void 0;
140
+ }
143
141
  return providers2[Date.now() % providers2.length];
144
142
  }
143
+ async getProviders(cache = false) {
144
+ const cachedProviders = cache ? this._providers : void 0;
145
+ this._providers = cachedProviders ?? await this.params.providers();
146
+ return this._providers;
147
+ }
145
148
  };
146
149
  export {
147
150
  AbstractBlockchainWitness,
151
+ BlockchainAddressSchema,
148
152
  BlockchainWitnessConfigSchema,
149
- ERC1967_PROXY_ADMIN_STORAGE_SLOT,
150
- ERC1967_PROXY_BEACON_STORAGE_SLOT,
151
- ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT,
152
- ERC1967_PROXY_ROLLBACK_STORAGE_SLOT,
153
153
  checkIpfsUrl,
154
- getErc1967Status,
155
154
  getProviderFromEnv,
156
- getSharedProviderFromEnv,
157
- readAddressFromSlot
155
+ getProvidersFromEnv,
156
+ getSharedProviderFromEnv
158
157
  };
159
158
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/checkIpfsUrl.ts","../../src/lib/getErc1967Status.ts","../../src/lib/getProviderFromEnv.ts","../../src/Witness.ts"],"sourcesContent":["/**\n * Returns the equivalent IPFS gateway URL for the supplied URL.\n * @param urlToCheck The URL to check\n * @returns If the supplied URL is an IPFS URL, it converts the URL to the\n * equivalent IPFS gateway URL. Otherwise, returns the original URL.\n */\nexport const checkIpfsUrl = (urlToCheck: string, ipfsGateway: string) => {\n try {\n const url = new URL(urlToCheck)\n let protocol = url.protocol\n let host = url.host\n let path = url.pathname\n const query = url.search\n if (protocol === 'ipfs:') {\n protocol = 'https:'\n host = ipfsGateway\n path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else {\n return urlToCheck\n }\n } catch (ex) {\n const error = ex as Error\n console.error(`${error.name}:${error.message} [${urlToCheck}]`)\n console.log(error.stack)\n return undefined\n }\n}\n","import { BaseProvider } from '@ethersproject/providers'\nimport { BigNumber } from '@xylabs/bignumber'\nimport { UpgradeableBeacon__factory } from '@xyo-network/open-zeppelin-typechain'\n\nexport const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc'\nexport const ERC1967_PROXY_BEACON_STORAGE_SLOT = '0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50'\nexport const ERC1967_PROXY_ADMIN_STORAGE_SLOT = '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103'\nexport const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = '0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143'\n\nexport interface Erc1967DataSlots {\n admin: string\n beacon: string\n implementation: string\n rollback: string\n}\n\nexport interface Erc1967Status {\n address: string\n implementation: string\n proxy: Erc1967DataSlots\n}\n\nconst hexBytesOnlyOnly = (value: string) => {\n return value.startsWith('0x') ? value.substring(2) : value\n}\n\nconst addressFromHex = (value: string) => {\n return `0x${hexBytesOnlyOnly(value).substring(24)}`\n}\n\nconst isHexZero = (value: string) => {\n return new BigNumber(hexBytesOnlyOnly(value), 'hex').eqn(0)\n}\n\nexport const readAddressFromSlot = async (provider: BaseProvider, address: string, slot: string) => {\n const slotValue = await provider.getStorageAt(address, slot)\n return addressFromHex(slotValue)\n}\n\nexport const getErc1967Status = async (provider: BaseProvider, address: string): Promise<Erc1967Status> => {\n const proxy: Erc1967DataSlots = {\n admin: await readAddressFromSlot(provider, address, ERC1967_PROXY_ADMIN_STORAGE_SLOT),\n beacon: await readAddressFromSlot(provider, address, ERC1967_PROXY_BEACON_STORAGE_SLOT),\n implementation: await readAddressFromSlot(provider, address, ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT),\n rollback: await readAddressFromSlot(provider, address, ERC1967_PROXY_ROLLBACK_STORAGE_SLOT),\n }\n\n if (!isHexZero(proxy.beacon)) {\n const beacon = UpgradeableBeacon__factory.connect(proxy.beacon, provider)\n try {\n proxy.implementation = await beacon.callStatic.implementation()\n } catch (ex) {\n const error = ex as Error\n console.log(error.message)\n }\n }\n\n return {\n address,\n implementation: isHexZero(proxy.implementation) ? address : proxy.implementation,\n proxy,\n }\n}\n","import { BaseProvider, InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, WebSocketProvider } from '@ethersproject/providers'\nimport { assertEx } from '@xylabs/assert'\n\nexport type ProviderSource = 'infura' | 'quicknode'\nexport type ProviderType = 'rpc' | 'wss'\n\nconst createInfuraRpc = (chainId: number) => {\n return new InfuraProvider(chainId, {\n projectId: process.env.INFURA_PROJECT_ID,\n projectSecret: process.env.INFURA_PROJECT_SECRET,\n })\n}\n\nconst createInfuraWss = (chainId: number) => {\n return new InfuraWebSocketProvider(chainId, {\n projectId: process.env.INFURA_PROJECT_ID,\n })\n}\n\nconst createQuicknodeWss = (chainId: number) => {\n const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI\n return quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : undefined\n}\n\nconst createQuicknodeRpc = (chainId: number) => {\n const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI\n return quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : undefined\n}\n\nexport const getProviderFromEnv = (\n chainId: number = 0x01,\n options?: { providerSource?: ProviderSource; providerType?: ProviderType },\n): BaseProvider => {\n const { providerSource, providerType } = options ?? {}\n let provider: BaseProvider | undefined = undefined\n switch (providerSource) {\n case 'quicknode': {\n switch (providerType) {\n case 'rpc': {\n provider = createQuicknodeRpc(chainId)\n break\n }\n case 'wss':\n default: {\n provider = createQuicknodeWss(chainId)\n break\n }\n }\n break\n }\n default:\n case 'infura': {\n switch (providerType) {\n case 'rpc': {\n provider = createInfuraRpc(chainId)\n break\n }\n case 'wss':\n default: {\n provider = createInfuraWss(chainId)\n break\n }\n }\n break\n }\n }\n if (!provider) {\n provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId)\n }\n return assertEx(provider, `Unable to create provider [${chainId}]: ${options ? JSON.stringify(options) : 'default'}`)\n}\n\nconst providers: Record<string, BaseProvider> = {}\n\nexport const getSharedProviderFromEnv = (\n chainId: number = 0x01,\n options?: { providerSource?: ProviderSource; providerType?: ProviderType },\n): BaseProvider => {\n const key = `${chainId}:${options ? JSON.stringify(options) : 'default'}`\n providers[key] = providers[key] ?? getProviderFromEnv(chainId, options)\n return providers[key]\n}\n","import { BaseProvider } from '@ethersproject/providers'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { AnyObject, WithAdditional } from '@xyo-network/object'\nimport { Payload } from '@xyo-network/payload-model'\nimport { WitnessConfig, WitnessInstance, WitnessModuleEventData, WitnessParams } from '@xyo-network/witness-model'\n\nexport const BlockchainWitnessConfigSchema = 'network.xyo.blockchain.witness'\nexport type BlockchainWitnessConfigSchema = typeof BlockchainWitnessConfigSchema\n\nexport type BlockchainWitnessConfig<TAdditional extends Omit<Payload, 'schema'> | void = void, TSchema extends string | void = void> = WitnessConfig<\n TAdditional & { schema: TSchema extends void ? (TAdditional extends void ? string : BlockchainWitnessConfigSchema) : TSchema }\n>\n\nexport type AdditionalBlockchainWitnessParams = {\n providers: BaseProvider[]\n}\n\nexport type BlockchainWitnessParams<\n TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig,\n TAdditionalParams extends AnyObject | void = void,\n> = WitnessParams<\n TConfig,\n WithAdditional<\n {\n providers: BaseProvider[]\n },\n TAdditionalParams\n >\n>\n\nexport abstract class AbstractBlockchainWitness<\n TParams extends BlockchainWitnessParams = BlockchainWitnessParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<\n WitnessInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends AbstractWitness<TParams, TIn, TOut, TEventData> {\n get provider() {\n const { providers } = this.params\n return providers[Date.now() % providers.length] //pick a random provider\n }\n}\n"],"mappings":"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","names":["providers"]}
1
+ {"version":3,"sources":["../../src/lib/checkIpfsUrl.ts","../../src/lib/getProviderFromEnv.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\n\nconst allowIpfsIoRepair = true\n\n/**\n * Returns the equivalent IPFS gateway URL for the supplied URL.\n * @param urlToCheck The URL to check\n * @returns If the supplied URL is an IPFS URL, it converts the URL to the\n * equivalent IPFS gateway URL. Otherwise, returns the original URL.\n */\nexport const checkIpfsUrl = (urlToCheck: string, ipfsGateway?: string): string => {\n try {\n const url = new URL(urlToCheck)\n let protocol = url.protocol\n let host = url.host\n let path = url.pathname\n const query = url.search\n if (protocol === 'ipfs:') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, 'No ipfsGateway provided')\n path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else if (allowIpfsIoRepair && protocol === 'https' && host === 'ipfs.io') {\n protocol = 'https:'\n host = assertEx(ipfsGateway, 'No ipfsGateway provided')\n const pathParts = path.split('/')\n if (pathParts[0] === 'ipfs') {\n pathParts.shift()\n }\n path = pathParts.join('/')\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else {\n return urlToCheck\n }\n } catch (ex) {\n //const error = ex as Error\n //console.error(`${error.name}:${error.message} [${urlToCheck}]`)\n //console.log(error.stack)\n return urlToCheck\n }\n}\n","import { BaseProvider, InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, WebSocketProvider } from '@ethersproject/providers'\nimport { ConnectionInfo } from '@ethersproject/web'\nimport { assertEx } from '@xylabs/assert'\n\nexport type ProviderSource = 'infura' | 'quicknode'\nexport type ProviderType = 'rpc' | 'wss'\n\nexport interface GetProvidersFromEnvOptions {\n overrides?: Partial<ConnectionInfo>\n providerSource?: ProviderSource\n providerType?: ProviderType\n}\n\nconst enableConfigOverride = false\n\nconst configureConnection = (connection?: ConnectionInfo, { timeout = 1000 }: Partial<ConnectionInfo> = {}) => {\n if (connection && enableConfigOverride) {\n connection.timeout = timeout\n connection.throttleCallback = async (attempt, url) => {\n console.log(`throttleCallback[${attempt}]: ${url}`)\n return await Promise.resolve(true)\n }\n }\n}\n\nconst createInfuraRpc = (chainId: number, overrides?: Partial<ConnectionInfo>) => {\n const provider =\n process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET\n ? new InfuraProvider(chainId, {\n projectId: process.env.INFURA_PROJECT_ID,\n projectSecret: process.env.INFURA_PROJECT_SECRET,\n })\n : undefined\n configureConnection(provider?.connection, overrides)\n return provider\n}\n\nconst createInfuraWss = (chainId: number, overrides?: Partial<ConnectionInfo>) => {\n const provider = process.env.INFURA_PROJECT_ID\n ? new InfuraWebSocketProvider(chainId, {\n projectId: process.env.INFURA_PROJECT_ID,\n })\n : undefined\n configureConnection(provider?.connection, overrides)\n return provider\n}\n\nconst createQuicknodeWss = (chainId: number, overrides?: Partial<ConnectionInfo>) => {\n const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI\n const provider = quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : undefined\n configureConnection(provider?.connection, overrides)\n return provider\n}\n\nconst createQuicknodeRpc = (chainId: number, overrides?: Partial<ConnectionInfo>) => {\n const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI\n const provider = quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : undefined\n configureConnection(provider?.connection, overrides)\n return provider\n}\n\nexport const getProviderFromEnv = (\n chainId: number = 0x01,\n { providerSource = 'infura', providerType = 'rpc', overrides }: GetProvidersFromEnvOptions = {},\n): BaseProvider => {\n let provider: BaseProvider | undefined = undefined\n switch (providerSource) {\n case 'quicknode': {\n switch (providerType) {\n case 'rpc': {\n provider = createQuicknodeRpc(chainId, overrides)\n break\n }\n case 'wss': {\n provider = createQuicknodeWss(chainId, overrides)\n break\n }\n }\n break\n }\n default:\n case 'infura': {\n switch (providerType) {\n case 'wss': {\n provider = createInfuraWss(chainId, overrides)\n break\n }\n case 'rpc': {\n provider = createInfuraRpc(chainId, overrides)\n break\n }\n }\n break\n }\n }\n if (!provider) {\n provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId)\n }\n return assertEx(provider, `Unable to create provider [${chainId}]: ${providerSource}|${providerType}`)\n}\n\nconst providers: Record<string, BaseProvider> = {}\n\nexport const getSharedProviderFromEnv = (\n chainId: number = 0x01,\n options?: { providerSource?: ProviderSource; providerType?: ProviderType },\n): BaseProvider => {\n const key = `${chainId}:${options ? JSON.stringify(options) : 'default'}`\n providers[key] = providers[key] ?? getProviderFromEnv(chainId, options)\n return providers[key]\n}\n\nexport const getProvidersFromEnv = (count: number = 1, chainId: number = 0x01, options: GetProvidersFromEnvOptions = {}): BaseProvider[] => {\n const result: BaseProvider[] = []\n for (let i = 0; i < count; i++) {\n result.push(getProviderFromEnv(chainId, options))\n }\n return result\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const BlockchainAddressSchema = 'network.xyo.blockchain.address'\nexport type BlockchainAddressSchema = typeof BlockchainAddressSchema\n\nexport type BlockchainAddress = Payload<\n {\n address?: string\n blockTag?: string | number\n chainId?: number\n },\n BlockchainAddressSchema\n>\n","import { BaseProvider } from '@ethersproject/providers'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { AnyObject, WithAdditional } from '@xyo-network/object'\nimport { Payload } from '@xyo-network/payload-model'\nimport { WitnessConfig, WitnessInstance, WitnessModuleEventData, WitnessParams } from '@xyo-network/witness-model'\n\nexport const BlockchainWitnessConfigSchema = 'network.xyo.blockchain.witness'\nexport type BlockchainWitnessConfigSchema = typeof BlockchainWitnessConfigSchema\n\nexport type BlockchainWitnessConfig<TAdditional extends Omit<Payload, 'schema'> | void = void, TSchema extends string | void = void> = WitnessConfig<\n TAdditional & { schema: TSchema extends void ? (TAdditional extends void ? string : BlockchainWitnessConfigSchema) : TSchema }\n>\n\nexport type AdditionalBlockchainWitnessParams = {\n providers: BaseProvider[]\n}\n\nexport type BlockchainWitnessParams<\n TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig,\n TAdditionalParams extends AnyObject | void = void,\n> = WitnessParams<\n TConfig,\n WithAdditional<\n {\n providers: () => Promisable<BaseProvider[]>\n },\n TAdditionalParams\n >\n>\n\nexport abstract class AbstractBlockchainWitness<\n TParams extends BlockchainWitnessParams = BlockchainWitnessParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<\n WitnessInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends AbstractWitness<TParams, TIn, TOut, TEventData> {\n private _providers: BaseProvider[] | undefined = undefined\n\n async getProvider(cache?: boolean): Promise<BaseProvider | undefined>\n async getProvider(cache: boolean, error: string | true): Promise<BaseProvider>\n async getProvider(cache = false, error?: string | boolean): Promise<BaseProvider | undefined> {\n const providers = await this.getProviders(cache)\n if (providers.length === 0) {\n if (error) {\n throw Error(typeof error === 'string' ? error : 'No providers available')\n }\n return undefined\n }\n return providers[Date.now() % providers.length] //pick a random provider\n }\n\n async getProviders(cache = false): Promise<BaseProvider[]> {\n const cachedProviders = cache ? this._providers : undefined\n this._providers = cachedProviders ?? (await this.params.providers())\n return this._providers\n }\n}\n"],"mappings":"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","names":["assertEx","providers"]}
@@ -4,5 +4,5 @@
4
4
  * @returns If the supplied URL is an IPFS URL, it converts the URL to the
5
5
  * equivalent IPFS gateway URL. Otherwise, returns the original URL.
6
6
  */
7
- export declare const checkIpfsUrl: (urlToCheck: string, ipfsGateway: string) => string | undefined;
7
+ export declare const checkIpfsUrl: (urlToCheck: string, ipfsGateway?: string) => string;
8
8
  //# sourceMappingURL=checkIpfsUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,eAAgB,MAAM,eAAe,MAAM,uBAsBnE,CAAA"}
1
+ {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
@@ -4,5 +4,5 @@
4
4
  * @returns If the supplied URL is an IPFS URL, it converts the URL to the
5
5
  * equivalent IPFS gateway URL. Otherwise, returns the original URL.
6
6
  */
7
- export declare const checkIpfsUrl: (urlToCheck: string, ipfsGateway: string) => string | undefined;
7
+ export declare const checkIpfsUrl: (urlToCheck: string, ipfsGateway?: string) => string;
8
8
  //# sourceMappingURL=checkIpfsUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,eAAgB,MAAM,eAAe,MAAM,uBAsBnE,CAAA"}
1
+ {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
@@ -4,5 +4,5 @@
4
4
  * @returns If the supplied URL is an IPFS URL, it converts the URL to the
5
5
  * equivalent IPFS gateway URL. Otherwise, returns the original URL.
6
6
  */
7
- export declare const checkIpfsUrl: (urlToCheck: string, ipfsGateway: string) => string | undefined;
7
+ export declare const checkIpfsUrl: (urlToCheck: string, ipfsGateway?: string) => string;
8
8
  //# sourceMappingURL=checkIpfsUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,eAAgB,MAAM,eAAe,MAAM,uBAsBnE,CAAA"}
1
+ {"version":3,"file":"checkIpfsUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/checkIpfsUrl.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,eAAgB,MAAM,gBAAgB,MAAM,KAAG,MAgCvE,CAAA"}
@@ -1,12 +1,16 @@
1
1
  import { BaseProvider } from '@ethersproject/providers';
2
+ import { ConnectionInfo } from '@ethersproject/web';
2
3
  export type ProviderSource = 'infura' | 'quicknode';
3
4
  export type ProviderType = 'rpc' | 'wss';
4
- export declare const getProviderFromEnv: (chainId?: number, options?: {
5
+ export interface GetProvidersFromEnvOptions {
6
+ overrides?: Partial<ConnectionInfo>;
5
7
  providerSource?: ProviderSource;
6
8
  providerType?: ProviderType;
7
- }) => BaseProvider;
9
+ }
10
+ export declare const getProviderFromEnv: (chainId?: number, { providerSource, providerType, overrides }?: GetProvidersFromEnvOptions) => BaseProvider;
8
11
  export declare const getSharedProviderFromEnv: (chainId?: number, options?: {
9
12
  providerSource?: ProviderSource;
10
13
  providerType?: ProviderType;
11
14
  }) => BaseProvider;
15
+ export declare const getProvidersFromEnv: (count?: number, chainId?: number, options?: GetProvidersFromEnvOptions) => BaseProvider[];
12
16
  //# sourceMappingURL=getProviderFromEnv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getProviderFromEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/getProviderFromEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+E,MAAM,0BAA0B,CAAA;AAGpI,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAA;AAyBxC,eAAO,MAAM,kBAAkB,aACpB,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAsCF,CAAA;AAID,eAAO,MAAM,wBAAwB,aAC1B,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAIF,CAAA"}
1
+ {"version":3,"file":"getProviderFromEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/getProviderFromEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+E,MAAM,0BAA0B,CAAA;AACpI,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAA;AAExC,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAkDD,eAAO,MAAM,kBAAkB,aACpB,MAAM,gDACiD,0BAA0B,KACzF,YAmCF,CAAA;AAID,eAAO,MAAM,wBAAwB,aAC1B,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAIF,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAW,MAAM,YAAe,MAAM,YAAkB,0BAA0B,KAAQ,YAAY,EAMrI,CAAA"}
@@ -1,12 +1,16 @@
1
1
  import { BaseProvider } from '@ethersproject/providers';
2
+ import { ConnectionInfo } from '@ethersproject/web';
2
3
  export type ProviderSource = 'infura' | 'quicknode';
3
4
  export type ProviderType = 'rpc' | 'wss';
4
- export declare const getProviderFromEnv: (chainId?: number, options?: {
5
+ export interface GetProvidersFromEnvOptions {
6
+ overrides?: Partial<ConnectionInfo>;
5
7
  providerSource?: ProviderSource;
6
8
  providerType?: ProviderType;
7
- }) => BaseProvider;
9
+ }
10
+ export declare const getProviderFromEnv: (chainId?: number, { providerSource, providerType, overrides }?: GetProvidersFromEnvOptions) => BaseProvider;
8
11
  export declare const getSharedProviderFromEnv: (chainId?: number, options?: {
9
12
  providerSource?: ProviderSource;
10
13
  providerType?: ProviderType;
11
14
  }) => BaseProvider;
15
+ export declare const getProvidersFromEnv: (count?: number, chainId?: number, options?: GetProvidersFromEnvOptions) => BaseProvider[];
12
16
  //# sourceMappingURL=getProviderFromEnv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getProviderFromEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/getProviderFromEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+E,MAAM,0BAA0B,CAAA;AAGpI,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAA;AAyBxC,eAAO,MAAM,kBAAkB,aACpB,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAsCF,CAAA;AAID,eAAO,MAAM,wBAAwB,aAC1B,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAIF,CAAA"}
1
+ {"version":3,"file":"getProviderFromEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/getProviderFromEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+E,MAAM,0BAA0B,CAAA;AACpI,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAA;AAExC,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAkDD,eAAO,MAAM,kBAAkB,aACpB,MAAM,gDACiD,0BAA0B,KACzF,YAmCF,CAAA;AAID,eAAO,MAAM,wBAAwB,aAC1B,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAIF,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAW,MAAM,YAAe,MAAM,YAAkB,0BAA0B,KAAQ,YAAY,EAMrI,CAAA"}
@@ -1,12 +1,16 @@
1
1
  import { BaseProvider } from '@ethersproject/providers';
2
+ import { ConnectionInfo } from '@ethersproject/web';
2
3
  export type ProviderSource = 'infura' | 'quicknode';
3
4
  export type ProviderType = 'rpc' | 'wss';
4
- export declare const getProviderFromEnv: (chainId?: number, options?: {
5
+ export interface GetProvidersFromEnvOptions {
6
+ overrides?: Partial<ConnectionInfo>;
5
7
  providerSource?: ProviderSource;
6
8
  providerType?: ProviderType;
7
- }) => BaseProvider;
9
+ }
10
+ export declare const getProviderFromEnv: (chainId?: number, { providerSource, providerType, overrides }?: GetProvidersFromEnvOptions) => BaseProvider;
8
11
  export declare const getSharedProviderFromEnv: (chainId?: number, options?: {
9
12
  providerSource?: ProviderSource;
10
13
  providerType?: ProviderType;
11
14
  }) => BaseProvider;
15
+ export declare const getProvidersFromEnv: (count?: number, chainId?: number, options?: GetProvidersFromEnvOptions) => BaseProvider[];
12
16
  //# sourceMappingURL=getProviderFromEnv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getProviderFromEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/getProviderFromEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+E,MAAM,0BAA0B,CAAA;AAGpI,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAA;AAyBxC,eAAO,MAAM,kBAAkB,aACpB,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAsCF,CAAA;AAID,eAAO,MAAM,wBAAwB,aAC1B,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAIF,CAAA"}
1
+ {"version":3,"file":"getProviderFromEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/getProviderFromEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+E,MAAM,0BAA0B,CAAA;AACpI,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAA;AAExC,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAkDD,eAAO,MAAM,kBAAkB,aACpB,MAAM,gDACiD,0BAA0B,KACzF,YAmCF,CAAA;AAID,eAAO,MAAM,wBAAwB,aAC1B,MAAM,YACL;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,KACzE,YAIF,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAW,MAAM,YAAe,MAAM,YAAkB,0BAA0B,KAAQ,YAAY,EAMrI,CAAA"}
@@ -1,4 +1,3 @@
1
1
  export * from './checkIpfsUrl';
2
- export * from './getErc1967Status';
3
2
  export * from './getProviderFromEnv';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA"}
@@ -1,4 +1,3 @@
1
1
  export * from './checkIpfsUrl';
2
- export * from './getErc1967Status';
3
2
  export * from './getProviderFromEnv';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA"}
@@ -1,4 +1,3 @@
1
1
  export * from './checkIpfsUrl';
2
- export * from './getErc1967Status';
3
2
  export * from './getProviderFromEnv';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { Payload } from '@xyo-network/payload-model';
2
+ export declare const BlockchainAddressSchema = "network.xyo.blockchain.address";
3
+ export type BlockchainAddressSchema = typeof BlockchainAddressSchema;
4
+ export type BlockchainAddress = Payload<{
5
+ address?: string;
6
+ blockTag?: string | number;
7
+ chainId?: number;
8
+ }, BlockchainAddressSchema>;
9
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,eAAO,MAAM,uBAAuB,mCAAmC,CAAA;AACvE,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC;IACE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,uBAAuB,CACxB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { Payload } from '@xyo-network/payload-model';
2
+ export declare const BlockchainAddressSchema = "network.xyo.blockchain.address";
3
+ export type BlockchainAddressSchema = typeof BlockchainAddressSchema;
4
+ export type BlockchainAddress = Payload<{
5
+ address?: string;
6
+ blockTag?: string | number;
7
+ chainId?: number;
8
+ }, BlockchainAddressSchema>;
9
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,eAAO,MAAM,uBAAuB,mCAAmC,CAAA;AACvE,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC;IACE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,uBAAuB,CACxB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { Payload } from '@xyo-network/payload-model';
2
+ export declare const BlockchainAddressSchema = "network.xyo.blockchain.address";
3
+ export type BlockchainAddressSchema = typeof BlockchainAddressSchema;
4
+ export type BlockchainAddress = Payload<{
5
+ address?: string;
6
+ blockTag?: string | number;
7
+ chainId?: number;
8
+ }, BlockchainAddressSchema>;
9
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,eAAO,MAAM,uBAAuB,mCAAmC,CAAA;AACvE,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC;IACE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,uBAAuB,CACxB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { BaseProvider } from '@ethersproject/providers';
2
+ import { Promisable } from '@xylabs/promise';
2
3
  import { AbstractWitness } from '@xyo-network/abstract-witness';
3
4
  import { AnyObject, WithAdditional } from '@xyo-network/object';
4
5
  import { Payload } from '@xyo-network/payload-model';
@@ -12,9 +13,12 @@ export type AdditionalBlockchainWitnessParams = {
12
13
  providers: BaseProvider[];
13
14
  };
14
15
  export type BlockchainWitnessParams<TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig, TAdditionalParams extends AnyObject | void = void> = WitnessParams<TConfig, WithAdditional<{
15
- providers: BaseProvider[];
16
+ providers: () => Promisable<BaseProvider[]>;
16
17
  }, TAdditionalParams>>;
17
18
  export declare abstract class AbstractBlockchainWitness<TParams extends BlockchainWitnessParams = BlockchainWitnessParams, TIn extends Payload = Payload, TOut extends Payload = Payload, TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut>> extends AbstractWitness<TParams, TIn, TOut, TEventData> {
18
- get provider(): BaseProvider;
19
+ private _providers;
20
+ getProvider(cache?: boolean): Promise<BaseProvider | undefined>;
21
+ getProvider(cache: boolean, error: string | true): Promise<BaseProvider>;
22
+ getProviders(cache?: boolean): Promise<BaseProvider[]>;
19
23
  }
20
24
  //# sourceMappingURL=Witness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,IAAI,QAAQ,iBAGX;CACF"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;CAC5C,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAO,CAAC,UAAU,CAAwC;IAEpD,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/D,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAYxE,YAAY,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAK3D"}
@@ -1,4 +1,5 @@
1
1
  import { BaseProvider } from '@ethersproject/providers';
2
+ import { Promisable } from '@xylabs/promise';
2
3
  import { AbstractWitness } from '@xyo-network/abstract-witness';
3
4
  import { AnyObject, WithAdditional } from '@xyo-network/object';
4
5
  import { Payload } from '@xyo-network/payload-model';
@@ -12,9 +13,12 @@ export type AdditionalBlockchainWitnessParams = {
12
13
  providers: BaseProvider[];
13
14
  };
14
15
  export type BlockchainWitnessParams<TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig, TAdditionalParams extends AnyObject | void = void> = WitnessParams<TConfig, WithAdditional<{
15
- providers: BaseProvider[];
16
+ providers: () => Promisable<BaseProvider[]>;
16
17
  }, TAdditionalParams>>;
17
18
  export declare abstract class AbstractBlockchainWitness<TParams extends BlockchainWitnessParams = BlockchainWitnessParams, TIn extends Payload = Payload, TOut extends Payload = Payload, TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut>> extends AbstractWitness<TParams, TIn, TOut, TEventData> {
18
- get provider(): BaseProvider;
19
+ private _providers;
20
+ getProvider(cache?: boolean): Promise<BaseProvider | undefined>;
21
+ getProvider(cache: boolean, error: string | true): Promise<BaseProvider>;
22
+ getProviders(cache?: boolean): Promise<BaseProvider[]>;
19
23
  }
20
24
  //# sourceMappingURL=Witness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,IAAI,QAAQ,iBAGX;CACF"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;CAC5C,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAO,CAAC,UAAU,CAAwC;IAEpD,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/D,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAYxE,YAAY,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAK3D"}
@@ -1,4 +1,5 @@
1
1
  import { BaseProvider } from '@ethersproject/providers';
2
+ import { Promisable } from '@xylabs/promise';
2
3
  import { AbstractWitness } from '@xyo-network/abstract-witness';
3
4
  import { AnyObject, WithAdditional } from '@xyo-network/object';
4
5
  import { Payload } from '@xyo-network/payload-model';
@@ -12,9 +13,12 @@ export type AdditionalBlockchainWitnessParams = {
12
13
  providers: BaseProvider[];
13
14
  };
14
15
  export type BlockchainWitnessParams<TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig, TAdditionalParams extends AnyObject | void = void> = WitnessParams<TConfig, WithAdditional<{
15
- providers: BaseProvider[];
16
+ providers: () => Promisable<BaseProvider[]>;
16
17
  }, TAdditionalParams>>;
17
18
  export declare abstract class AbstractBlockchainWitness<TParams extends BlockchainWitnessParams = BlockchainWitnessParams, TIn extends Payload = Payload, TOut extends Payload = Payload, TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut>> extends AbstractWitness<TParams, TIn, TOut, TEventData> {
18
- get provider(): BaseProvider;
19
+ private _providers;
20
+ getProvider(cache?: boolean): Promise<BaseProvider | undefined>;
21
+ getProvider(cache: boolean, error: string | true): Promise<BaseProvider>;
22
+ getProviders(cache?: boolean): Promise<BaseProvider[]>;
19
23
  }
20
24
  //# sourceMappingURL=Witness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,IAAI,QAAQ,iBAGX;CACF"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;CAC5C,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAO,CAAC,UAAU,CAAwC;IAEpD,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/D,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAYxE,YAAY,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAK3D"}