@xyo-network/uniswap-crypto-market-plugin 2.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +81 -0
  3. package/dist/cjs/Config.d.ts +7 -0
  4. package/dist/cjs/Config.d.ts.map +1 -0
  5. package/dist/cjs/Config.js +3 -0
  6. package/dist/cjs/Config.js.map +1 -0
  7. package/dist/cjs/Plugin.d.ts +4 -0
  8. package/dist/cjs/Plugin.d.ts.map +1 -0
  9. package/dist/cjs/Plugin.js +16 -0
  10. package/dist/cjs/Plugin.js.map +1 -0
  11. package/dist/cjs/Witness.d.ts +19 -0
  12. package/dist/cjs/Witness.d.ts.map +1 -0
  13. package/dist/cjs/Witness.js +51 -0
  14. package/dist/cjs/Witness.js.map +1 -0
  15. package/dist/cjs/index.d.ts +7 -0
  16. package/dist/cjs/index.d.ts.map +1 -0
  17. package/dist/cjs/index.js +12 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/lib/Ethers/UniSwap3Pair.d.ts +29 -0
  20. package/dist/cjs/lib/Ethers/UniSwap3Pair.d.ts.map +1 -0
  21. package/dist/cjs/lib/Ethers/UniSwap3Pair.js +103 -0
  22. package/dist/cjs/lib/Ethers/UniSwap3Pair.js.map +1 -0
  23. package/dist/cjs/lib/Ethers/Uniswap3PoolSlot0Wrapper.d.ts +13 -0
  24. package/dist/cjs/lib/Ethers/Uniswap3PoolSlot0Wrapper.d.ts.map +1 -0
  25. package/dist/cjs/lib/Ethers/Uniswap3PoolSlot0Wrapper.js +31 -0
  26. package/dist/cjs/lib/Ethers/Uniswap3PoolSlot0Wrapper.js.map +1 -0
  27. package/dist/cjs/lib/Ethers/UniswapV3Slot0Fields.d.ts +3 -0
  28. package/dist/cjs/lib/Ethers/UniswapV3Slot0Fields.d.ts.map +1 -0
  29. package/dist/cjs/lib/Ethers/UniswapV3Slot0Fields.js +3 -0
  30. package/dist/cjs/lib/Ethers/UniswapV3Slot0Fields.js.map +1 -0
  31. package/dist/cjs/lib/Ethers/createUniswapPoolContracts.d.ts +4 -0
  32. package/dist/cjs/lib/Ethers/createUniswapPoolContracts.d.ts.map +1 -0
  33. package/dist/cjs/lib/Ethers/createUniswapPoolContracts.js +12 -0
  34. package/dist/cjs/lib/Ethers/createUniswapPoolContracts.js.map +1 -0
  35. package/dist/cjs/lib/Ethers/index.d.ts +5 -0
  36. package/dist/cjs/lib/Ethers/index.d.ts.map +1 -0
  37. package/dist/cjs/lib/Ethers/index.js +8 -0
  38. package/dist/cjs/lib/Ethers/index.js.map +1 -0
  39. package/dist/cjs/lib/UniswapPoolContracts.d.ts +2 -0
  40. package/dist/cjs/lib/UniswapPoolContracts.d.ts.map +1 -0
  41. package/dist/cjs/lib/UniswapPoolContracts.js +19 -0
  42. package/dist/cjs/lib/UniswapPoolContracts.js.map +1 -0
  43. package/dist/cjs/lib/UniswapV3Slot0Fields.d.ts +3 -0
  44. package/dist/cjs/lib/UniswapV3Slot0Fields.d.ts.map +1 -0
  45. package/dist/cjs/lib/UniswapV3Slot0Fields.js +3 -0
  46. package/dist/cjs/lib/UniswapV3Slot0Fields.js.map +1 -0
  47. package/dist/cjs/lib/index.d.ts +4 -0
  48. package/dist/cjs/lib/index.d.ts.map +1 -0
  49. package/dist/cjs/lib/index.js +7 -0
  50. package/dist/cjs/lib/index.js.map +1 -0
  51. package/dist/cjs/lib/logErrors.d.ts +3 -0
  52. package/dist/cjs/lib/logErrors.d.ts.map +1 -0
  53. package/dist/cjs/lib/logErrors.js +25 -0
  54. package/dist/cjs/lib/logErrors.js.map +1 -0
  55. package/dist/cjs/lib/pricesFromUniswap3.d.ts +4 -0
  56. package/dist/cjs/lib/pricesFromUniswap3.d.ts.map +1 -0
  57. package/dist/cjs/lib/pricesFromUniswap3.js +16 -0
  58. package/dist/cjs/lib/pricesFromUniswap3.js.map +1 -0
  59. package/dist/docs.json +5480 -0
  60. package/dist/esm/Config.d.ts +7 -0
  61. package/dist/esm/Config.d.ts.map +1 -0
  62. package/dist/esm/Config.js +2 -0
  63. package/dist/esm/Config.js.map +1 -0
  64. package/dist/esm/Plugin.d.ts +4 -0
  65. package/dist/esm/Plugin.d.ts.map +1 -0
  66. package/dist/esm/Plugin.js +11 -0
  67. package/dist/esm/Plugin.js.map +1 -0
  68. package/dist/esm/Witness.d.ts +19 -0
  69. package/dist/esm/Witness.d.ts.map +1 -0
  70. package/dist/esm/Witness.js +32 -0
  71. package/dist/esm/Witness.js.map +1 -0
  72. package/dist/esm/index.d.ts +7 -0
  73. package/dist/esm/index.d.ts.map +1 -0
  74. package/dist/esm/index.js +8 -0
  75. package/dist/esm/index.js.map +1 -0
  76. package/dist/esm/lib/Ethers/UniSwap3Pair.d.ts +29 -0
  77. package/dist/esm/lib/Ethers/UniSwap3Pair.d.ts.map +1 -0
  78. package/dist/esm/lib/Ethers/UniSwap3Pair.js +91 -0
  79. package/dist/esm/lib/Ethers/UniSwap3Pair.js.map +1 -0
  80. package/dist/esm/lib/Ethers/Uniswap3PoolSlot0Wrapper.d.ts +13 -0
  81. package/dist/esm/lib/Ethers/Uniswap3PoolSlot0Wrapper.d.ts.map +1 -0
  82. package/dist/esm/lib/Ethers/Uniswap3PoolSlot0Wrapper.js +28 -0
  83. package/dist/esm/lib/Ethers/Uniswap3PoolSlot0Wrapper.js.map +1 -0
  84. package/dist/esm/lib/Ethers/UniswapV3Slot0Fields.d.ts +3 -0
  85. package/dist/esm/lib/Ethers/UniswapV3Slot0Fields.d.ts.map +1 -0
  86. package/dist/esm/lib/Ethers/UniswapV3Slot0Fields.js +2 -0
  87. package/dist/esm/lib/Ethers/UniswapV3Slot0Fields.js.map +1 -0
  88. package/dist/esm/lib/Ethers/createUniswapPoolContracts.d.ts +4 -0
  89. package/dist/esm/lib/Ethers/createUniswapPoolContracts.d.ts.map +1 -0
  90. package/dist/esm/lib/Ethers/createUniswapPoolContracts.js +8 -0
  91. package/dist/esm/lib/Ethers/createUniswapPoolContracts.js.map +1 -0
  92. package/dist/esm/lib/Ethers/index.d.ts +5 -0
  93. package/dist/esm/lib/Ethers/index.d.ts.map +1 -0
  94. package/dist/esm/lib/Ethers/index.js +5 -0
  95. package/dist/esm/lib/Ethers/index.js.map +1 -0
  96. package/dist/esm/lib/UniswapPoolContracts.d.ts +2 -0
  97. package/dist/esm/lib/UniswapPoolContracts.d.ts.map +1 -0
  98. package/dist/esm/lib/UniswapPoolContracts.js +16 -0
  99. package/dist/esm/lib/UniswapPoolContracts.js.map +1 -0
  100. package/dist/esm/lib/UniswapV3Slot0Fields.d.ts +3 -0
  101. package/dist/esm/lib/UniswapV3Slot0Fields.d.ts.map +1 -0
  102. package/dist/esm/lib/UniswapV3Slot0Fields.js +2 -0
  103. package/dist/esm/lib/UniswapV3Slot0Fields.js.map +1 -0
  104. package/dist/esm/lib/index.d.ts +4 -0
  105. package/dist/esm/lib/index.d.ts.map +1 -0
  106. package/dist/esm/lib/index.js +4 -0
  107. package/dist/esm/lib/index.js.map +1 -0
  108. package/dist/esm/lib/logErrors.d.ts +3 -0
  109. package/dist/esm/lib/logErrors.d.ts.map +1 -0
  110. package/dist/esm/lib/logErrors.js +19 -0
  111. package/dist/esm/lib/logErrors.js.map +1 -0
  112. package/dist/esm/lib/pricesFromUniswap3.d.ts +4 -0
  113. package/dist/esm/lib/pricesFromUniswap3.d.ts.map +1 -0
  114. package/dist/esm/lib/pricesFromUniswap3.js +11 -0
  115. package/dist/esm/lib/pricesFromUniswap3.js.map +1 -0
  116. package/package.json +77 -0
  117. package/src/Config.ts +7 -0
  118. package/src/Plugin.spec.ts +11 -0
  119. package/src/Plugin.ts +16 -0
  120. package/src/Witness.spec.ts +56 -0
  121. package/src/Witness.ts +51 -0
  122. package/src/index.ts +10 -0
  123. package/src/lib/Ethers/UniSwap3Pair.ts +109 -0
  124. package/src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts +36 -0
  125. package/src/lib/Ethers/UniswapV3Slot0Fields.ts +3 -0
  126. package/src/lib/Ethers/createUniswapPoolContracts.ts +10 -0
  127. package/src/lib/Ethers/index.ts +4 -0
  128. package/src/lib/UniswapPoolContracts.ts +15 -0
  129. package/src/lib/UniswapV3Slot0Fields.ts +4 -0
  130. package/src/lib/index.ts +3 -0
  131. package/src/lib/logErrors.ts +17 -0
  132. package/src/lib/pricesFromUniswap3.spec.ts +13 -0
  133. package/src/lib/pricesFromUniswap3.ts +19 -0
@@ -0,0 +1,7 @@
1
+ import { XyoUniswapCryptoMarketWitnessConfigSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin';
2
+ import { XyoWitnessConfig } from '@xyo-network/witness';
3
+ export type XyoUniswapCryptoMarketWitnessConfig = XyoWitnessConfig<{
4
+ pools: string[];
5
+ schema: XyoUniswapCryptoMarketWitnessConfigSchema;
6
+ }>;
7
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yCAAyC,EAAE,MAAM,mDAAmD,CAAA;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,MAAM,mCAAmC,GAAG,gBAAgB,CAAC;IACjE,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,yCAAyC,CAAA;CAClD,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { PayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin';
2
+ import { XyoUniswapCryptoMarketWitnessParams } from './Witness';
3
+ export declare const XyoUniswapCryptoMarketPlugin: () => PayloadSetWitnessPlugin<XyoUniswapCryptoMarketWitnessParams>;
4
+ //# sourceMappingURL=Plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAGhG,OAAO,EAAiC,mCAAmC,EAAE,MAAM,WAAW,CAAA;AAE9F,eAAO,MAAM,4BAA4B,oEAStC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { PayloadSetSchema } from '@xyo-network/payload';
2
+ import { createPayloadSetPlugin } from '@xyo-network/payloadset-plugin';
3
+ import { XyoUniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin';
4
+ import { XyoUniswapCryptoMarketWitness } from './Witness';
5
+ export const XyoUniswapCryptoMarketPlugin = () => createPayloadSetPlugin({ required: { [XyoUniswapCryptoMarketSchema]: 1 }, schema: PayloadSetSchema }, {
6
+ witness: async (params) => {
7
+ const result = await XyoUniswapCryptoMarketWitness.create(params);
8
+ return result;
9
+ },
10
+ });
11
+ //# sourceMappingURL=Plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAA2B,MAAM,gCAAgC,CAAA;AAChG,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAA;AAEhG,OAAO,EAAE,6BAA6B,EAAuC,MAAM,WAAW,CAAA;AAE9F,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,EAAE,CAC/C,sBAAsB,CACpB,EAAE,QAAQ,EAAE,EAAE,CAAC,4BAA4B,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAC7E;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACjE,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { XyoModuleParams } from '@xyo-network/module';
3
+ import { XyoPayload } from '@xyo-network/payload';
4
+ import { AbstractWitness } from '@xyo-network/witness';
5
+ import { XyoUniswapCryptoMarketWitnessConfig } from './Config';
6
+ import { EthersUniSwap3Pair } from './lib';
7
+ export interface XyoUniswapCryptoMarketWitnessParams extends XyoModuleParams<XyoUniswapCryptoMarketWitnessConfig> {
8
+ provider: Provider;
9
+ }
10
+ export declare class XyoUniswapCryptoMarketWitness extends AbstractWitness<XyoUniswapCryptoMarketWitnessConfig> {
11
+ static configSchema: "network.xyo.crypto.market.uniswap.witness.config";
12
+ protected pairs?: EthersUniSwap3Pair[];
13
+ protected provider?: Provider;
14
+ protected constructor(params: XyoUniswapCryptoMarketWitnessParams);
15
+ static create(params?: XyoUniswapCryptoMarketWitnessParams): Promise<XyoUniswapCryptoMarketWitness>;
16
+ observe(): Promise<XyoPayload[]>;
17
+ start(): Promise<this>;
18
+ }
19
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,EAAE,mCAAmC,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,EAA8B,kBAAkB,EAA4C,MAAM,OAAO,CAAA;AAEhH,MAAM,WAAW,mCAAoC,SAAQ,eAAe,CAAC,mCAAmC,CAAC;IAC/G,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,qBAAa,6BAA8B,SAAQ,eAAe,CAAC,mCAAmC,CAAC;IACrG,OAAgB,YAAY,qDAA4C;IAExE,SAAS,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACtC,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC7B,SAAS,aAAa,MAAM,EAAE,mCAAmC;WAK3C,MAAM,CAAC,MAAM,CAAC,EAAE,mCAAmC,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAInG,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAchC,KAAK;CAIrB"}
@@ -0,0 +1,32 @@
1
+ import { assertEx } from '@xylabs/assert';
2
+ import { XyoUniswapCryptoMarketSchema, XyoUniswapCryptoMarketWitnessConfigSchema, } from '@xyo-network/uniswap-crypto-market-payload-plugin';
3
+ import { AbstractWitness } from '@xyo-network/witness';
4
+ import { createUniswapPoolContracts, pricesFromUniswap3, UniswapPoolContracts } from './lib';
5
+ export class XyoUniswapCryptoMarketWitness extends AbstractWitness {
6
+ static configSchema = XyoUniswapCryptoMarketWitnessConfigSchema;
7
+ pairs;
8
+ provider;
9
+ constructor(params) {
10
+ super(params);
11
+ this.provider = params?.provider;
12
+ }
13
+ static async create(params) {
14
+ return (await super.create(params));
15
+ }
16
+ async observe() {
17
+ this.started('throw');
18
+ const pairs = await pricesFromUniswap3(assertEx(this.pairs));
19
+ const timestamp = Date.now();
20
+ const payload = {
21
+ pairs,
22
+ schema: XyoUniswapCryptoMarketSchema,
23
+ timestamp,
24
+ };
25
+ return super.observe([payload]);
26
+ }
27
+ async start() {
28
+ this.pairs = createUniswapPoolContracts(assertEx(this.provider, 'Provider Required'), this.config?.pools ?? UniswapPoolContracts);
29
+ return await super.start();
30
+ }
31
+ }
32
+ //# sourceMappingURL=Witness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,EAEL,4BAA4B,EAC5B,yCAAyC,GAC1C,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,0BAA0B,EAAsB,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAMhH,MAAM,OAAO,6BAA8B,SAAQ,eAAoD;IACrG,MAAM,CAAU,YAAY,GAAG,yCAAyC,CAAA;IAE9D,KAAK,CAAuB;IAC5B,QAAQ,CAAW;IAC7B,YAAsB,MAA2C;QAC/D,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAA;IAClC,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAA4C;QACvE,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAkC,CAAA;IACtE,CAAC;IAEQ,KAAK,CAAC,OAAO;QACpB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACrB,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,MAAM,OAAO,GAAkC;YAC7C,KAAK;YACL,MAAM,EAAE,4BAA4B;YACpC,SAAS;SACV,CAAA;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACjC,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,IAAI,CAAC,KAAK,GAAG,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,oBAAoB,CAAC,CAAA;QACjI,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { XyoUniswapCryptoMarketPlugin } from './Plugin';
2
+ export * from './Config';
3
+ export * from './lib';
4
+ export * from './Witness';
5
+ export { XyoUniswapCryptoMarketPlugin };
6
+ export default XyoUniswapCryptoMarketPlugin;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAEvD,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,4BAA4B,EAAE,CAAA;AAGvC,eAAe,4BAA4B,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { XyoUniswapCryptoMarketPlugin } from './Plugin';
2
+ export * from './Config';
3
+ export * from './lib';
4
+ export * from './Witness';
5
+ export { XyoUniswapCryptoMarketPlugin };
6
+ // eslint-disable-next-line import/no-default-export
7
+ export default XyoUniswapCryptoMarketPlugin;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAEvD,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,4BAA4B,EAAE,CAAA;AAEvC,oDAAoD;AACpD,eAAe,4BAA4B,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { Token } from '@uniswap/sdk-core';
3
+ import { Pool } from '@uniswap/v3-sdk';
4
+ import { IERC20Metadata } from '@xyo-network/typechain';
5
+ import { IUniswapV3Pool } from '@xyo-network/uniswap-typechain';
6
+ import { EthersUniswap3PoolSlot0Wrapper } from './Uniswap3PoolSlot0Wrapper';
7
+ export declare class EthersUniSwap3Pair {
8
+ protected address: string;
9
+ protected provider: Provider;
10
+ private _pool?;
11
+ private _poolContract?;
12
+ private _slot0?;
13
+ private _tokenContracts;
14
+ private _tokens;
15
+ constructor(address: string, provider: Provider);
16
+ pool(): Promise<Pool>;
17
+ poolContract(): IUniswapV3Pool;
18
+ price(): Promise<{
19
+ tokens: {
20
+ address: string;
21
+ symbol: string;
22
+ value: number;
23
+ }[];
24
+ }>;
25
+ slot0(): Promise<EthersUniswap3PoolSlot0Wrapper>;
26
+ token(index: 0 | 1): Promise<Token>;
27
+ tokenContract(index: 0 | 1): Promise<IERC20Metadata>;
28
+ }
29
+ //# sourceMappingURL=UniSwap3Pair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniSwap3Pair.d.ts","sourceRoot":"","sources":["../../../../src/lib/Ethers/UniSwap3Pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,OAAO,EAAE,cAAc,EAA2B,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,cAAc,EAA2B,MAAM,gCAAgC,CAAA;AAGxF,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAA;AAS3E,qBAAa,kBAAkB;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAE5B,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAC,CAAuC;IACtD,OAAO,CAAC,eAAe,CAAgE;IACvF,OAAO,CAAC,OAAO,CAAuD;gBAE1D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAKlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B,YAAY,IAAI,cAAc;IAOxB,KAAK;;;;;;;IAiBL,KAAK,IAAI,OAAO,CAAC,8BAA8B,CAAC;IAShD,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAYnC,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CAUlE"}
@@ -0,0 +1,91 @@
1
+ import { ChainId } from '@uniswap/sdk';
2
+ import { Token } from '@uniswap/sdk-core';
3
+ import { Pool } from '@uniswap/v3-sdk';
4
+ import { assertEx } from '@xylabs/assert';
5
+ import { delay } from '@xylabs/delay';
6
+ import { IERC20Metadata__factory } from '@xyo-network/typechain';
7
+ import { IUniswapV3Pool__factory } from '@xyo-network/uniswap-typechain';
8
+ import { logErrors, logErrorsAsync } from '../logErrors';
9
+ import { EthersUniswap3PoolSlot0Wrapper } from './Uniswap3PoolSlot0Wrapper';
10
+ //null is used as 'in-progress'
11
+ const waitNotNull = async (closure) => {
12
+ while (closure() === null) {
13
+ await delay(10);
14
+ }
15
+ };
16
+ export class EthersUniSwap3Pair {
17
+ address;
18
+ provider;
19
+ _pool;
20
+ _poolContract;
21
+ _slot0;
22
+ _tokenContracts = [undefined, undefined];
23
+ _tokens = [undefined, undefined];
24
+ constructor(address, provider) {
25
+ this.address = address;
26
+ this.provider = provider;
27
+ }
28
+ async pool() {
29
+ return await logErrorsAsync(async () => {
30
+ await waitNotNull(() => this._pool);
31
+ this._pool = this._pool || null;
32
+ const slot0 = await this.slot0();
33
+ this._pool =
34
+ this._pool ??
35
+ new Pool(await this.token(0), await this.token(1), slot0.feeProtocol, slot0.sqrtPriceX96.toHexString(), (await this.poolContract().liquidity()).toHexString(), slot0.tick);
36
+ return assertEx(this._pool);
37
+ });
38
+ }
39
+ poolContract() {
40
+ return logErrors(() => {
41
+ this._poolContract = this._poolContract ?? IUniswapV3Pool__factory.connect(this.address, this.provider);
42
+ return assertEx(this._poolContract);
43
+ });
44
+ }
45
+ async price() {
46
+ return await logErrorsAsync(async () => {
47
+ const tokenIndexes = [0, 1];
48
+ const pool = await this.pool();
49
+ const tokens = await Promise.all(tokenIndexes.map((value) => this.token(value)));
50
+ const tokenContracts = await Promise.all(tokenIndexes.map((value) => this.tokenContract(value)));
51
+ const tokenPrices = tokens.map((token) => parseFloat(pool.priceOf(token).toSignificant()));
52
+ const tokenSymbols = tokens.map((token, index) => assertEx(token.symbol, `Token[${index}] Missing Symbols`).toLowerCase());
53
+ const result = {
54
+ tokens: tokenIndexes.map((value) => {
55
+ return { address: tokenContracts[value].address, symbol: tokenSymbols[value], value: tokenPrices[value] };
56
+ }),
57
+ };
58
+ return result;
59
+ });
60
+ }
61
+ async slot0() {
62
+ return await logErrorsAsync(async () => {
63
+ await waitNotNull(() => this._slot0);
64
+ this._slot0 = this._slot0 || null;
65
+ this._slot0 = this._slot0 ?? new EthersUniswap3PoolSlot0Wrapper(await this.poolContract().slot0());
66
+ return assertEx(this._slot0);
67
+ });
68
+ }
69
+ async token(index) {
70
+ return await logErrorsAsync(async () => {
71
+ await waitNotNull(() => this._tokens[index]);
72
+ this._tokens[index] = this._tokens[index] || null;
73
+ const tokenContract = await this.tokenContract(index);
74
+ this._tokens[index] =
75
+ this._tokens[index] ??
76
+ new Token(ChainId.MAINNET, tokenContract.address, await tokenContract.decimals(), await tokenContract.symbol(), await tokenContract.name());
77
+ return assertEx(this._tokens[index]);
78
+ });
79
+ }
80
+ async tokenContract(index) {
81
+ return await logErrorsAsync(async () => {
82
+ await waitNotNull(() => this._tokenContracts[index]);
83
+ this._tokenContracts[index] = this._tokenContracts[index] || null;
84
+ this._tokenContracts[index] =
85
+ this._tokenContracts[index] ??
86
+ IERC20Metadata__factory.connect(await (index === 0 ? this.poolContract().token0() : this.poolContract().token1()), this.provider);
87
+ return assertEx(this._tokenContracts[index]);
88
+ });
89
+ }
90
+ }
91
+ //# sourceMappingURL=UniSwap3Pair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniSwap3Pair.js","sourceRoot":"","sources":["../../../../src/lib/Ethers/UniSwap3Pair.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { EthersUniswapV3Slot0Fields } from './UniswapV3Slot0Fields';
2
+ export declare class EthersUniswap3PoolSlot0Wrapper {
3
+ protected values: EthersUniswapV3Slot0Fields;
4
+ constructor(values: EthersUniswapV3Slot0Fields);
5
+ get feeProtocol(): number;
6
+ get observationCardinality(): number;
7
+ get observationCardinalityNext(): number;
8
+ get observationIndex(): number;
9
+ get sqrtPriceX96(): import("ethers").BigNumber;
10
+ get tick(): number;
11
+ get unlocked(): boolean;
12
+ }
13
+ //# sourceMappingURL=Uniswap3PoolSlot0Wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Uniswap3PoolSlot0Wrapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAEnE,qBAAa,8BAA8B;IACzC,SAAS,CAAC,MAAM,EAAE,0BAA0B,CAAA;gBAChC,MAAM,EAAE,0BAA0B;IAI9C,IAAI,WAAW,WAEd;IAED,IAAI,sBAAsB,WAEzB;IAED,IAAI,0BAA0B,WAE7B;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,YAAY,+BAEf;IAED,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,YAEX;CACF"}
@@ -0,0 +1,28 @@
1
+ export class EthersUniswap3PoolSlot0Wrapper {
2
+ values;
3
+ constructor(values) {
4
+ this.values = values;
5
+ }
6
+ get feeProtocol() {
7
+ return this.values[5];
8
+ }
9
+ get observationCardinality() {
10
+ return this.values[3];
11
+ }
12
+ get observationCardinalityNext() {
13
+ return this.values[4];
14
+ }
15
+ get observationIndex() {
16
+ return this.values[2];
17
+ }
18
+ get sqrtPriceX96() {
19
+ return this.values[0];
20
+ }
21
+ get tick() {
22
+ return this.values[1];
23
+ }
24
+ get unlocked() {
25
+ return this.values[6];
26
+ }
27
+ }
28
+ //# sourceMappingURL=Uniswap3PoolSlot0Wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Uniswap3PoolSlot0Wrapper.js","sourceRoot":"","sources":["../../../../src/lib/Ethers/Uniswap3PoolSlot0Wrapper.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,8BAA8B;IAC/B,MAAM,CAA4B;IAC5C,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,0BAA0B;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ export type EthersUniswapV3Slot0Fields = [BigNumber, number, number, number, number, number, boolean];
3
+ //# sourceMappingURL=UniswapV3Slot0Fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniswapV3Slot0Fields.d.ts","sourceRoot":"","sources":["../../../../src/lib/Ethers/UniswapV3Slot0Fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,MAAM,MAAM,0BAA0B,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=UniswapV3Slot0Fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniswapV3Slot0Fields.js","sourceRoot":"","sources":["../../../../src/lib/Ethers/UniswapV3Slot0Fields.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { EthersUniSwap3Pair } from './UniSwap3Pair';
3
+ export declare const createUniswapPoolContracts: (provider: Provider, contracts: string[]) => EthersUniSwap3Pair[];
4
+ //# sourceMappingURL=createUniswapPoolContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUniswapPoolContracts.d.ts","sourceRoot":"","sources":["../../../../src/lib/Ethers/createUniswapPoolContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAGnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,eAAO,MAAM,0BAA0B,aAAc,QAAQ,aAAa,MAAM,EAAE,yBAIjF,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { logErrors } from '../logErrors';
2
+ import { EthersUniSwap3Pair } from './UniSwap3Pair';
3
+ export const createUniswapPoolContracts = (provider, contracts) => {
4
+ return logErrors(() => {
5
+ return contracts.map((contract) => new EthersUniSwap3Pair(contract, provider));
6
+ });
7
+ };
8
+ //# sourceMappingURL=createUniswapPoolContracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUniswapPoolContracts.js","sourceRoot":"","sources":["../../../../src/lib/Ethers/createUniswapPoolContracts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAkB,EAAE,SAAmB,EAAE,EAAE;IACpF,OAAO,SAAS,CAAC,GAAG,EAAE;QACpB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAChF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './createUniswapPoolContracts';
2
+ export * from './UniSwap3Pair';
3
+ export * from './Uniswap3PoolSlot0Wrapper';
4
+ export * from './UniswapV3Slot0Fields';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/Ethers/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './createUniswapPoolContracts';
2
+ export * from './UniSwap3Pair';
3
+ export * from './Uniswap3PoolSlot0Wrapper';
4
+ export * from './UniswapV3Slot0Fields';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/Ethers/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const UniswapPoolContracts: string[];
2
+ //# sourceMappingURL=UniswapPoolContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniswapPoolContracts.d.ts","sourceRoot":"","sources":["../../../src/lib/UniswapPoolContracts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,UAchC,CAAA"}
@@ -0,0 +1,16 @@
1
+ export const UniswapPoolContracts = [
2
+ /*xyo/weth*/ '0xE331DE28cd81B768C19A366b0e4e4675c45eC2dA',
3
+ /*xyo/usdt*/ '0xd0AF1981f52146a6939385451dAeA0726e13a484',
4
+ /*xyo/dai*/ '0x9D7e5647CE3c7C2d835F2F5e82C8fDb36B0BB0fe',
5
+ /*wbtc/xyo*/ '0x0cF7494c9dE661467403aBeE8454b3BBf0179a84',
6
+ /*link/xyo*/ '0x4693456599a8a4975862A0E720C5de7E1D09A1e4',
7
+ /*wbtc/weth*/ '0xCBCdF9626bC03E24f779434178A73a0B4bad62eD',
8
+ /*dai/usdc*/ '0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168',
9
+ /*usdc/weth*/ '0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8',
10
+ /*usdc/weth*/ '0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640',
11
+ /*dai/usdc*/ '0x6c6Bc977E13Df9b0de53b251522280BB72383700',
12
+ /*frax/usdc*/ '0xc63B0708E2F7e69CB8A1df0e1389A98C35A76D52',
13
+ /*wbtc/usdc*/ '0x99ac8cA7087fA4A2A1FB6357269965A2014ABc35',
14
+ /*usdc/usdt*/ '0x3416cF6C708Da44DB2624D63ea0AAef7113527C6',
15
+ ];
16
+ //# sourceMappingURL=UniswapPoolContracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniswapPoolContracts.js","sourceRoot":"","sources":["../../../src/lib/UniswapPoolContracts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,YAAY,CAAC,4CAA4C;IACzD,YAAY,CAAC,4CAA4C;IACzD,WAAW,CAAC,4CAA4C;IACxD,YAAY,CAAC,4CAA4C;IACzD,YAAY,CAAC,4CAA4C;IACzD,aAAa,CAAC,4CAA4C;IAC1D,YAAY,CAAC,4CAA4C;IACzD,aAAa,CAAC,4CAA4C;IAC1D,aAAa,CAAC,4CAA4C;IAC1D,YAAY,CAAC,4CAA4C;IACzD,aAAa,CAAC,4CAA4C;IAC1D,aAAa,CAAC,4CAA4C;IAC1D,aAAa,CAAC,4CAA4C;CAC3D,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { BigNumber } from '@xylabs/bignumber';
2
+ export type UniswapV3Slot0Fields = [BigNumber, number, number, number, number, number, boolean];
3
+ //# sourceMappingURL=UniswapV3Slot0Fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniswapV3Slot0Fields.d.ts","sourceRoot":"","sources":["../../../src/lib/UniswapV3Slot0Fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG7C,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=UniswapV3Slot0Fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniswapV3Slot0Fields.js","sourceRoot":"","sources":["../../../src/lib/UniswapV3Slot0Fields.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from './Ethers';
2
+ export * from './pricesFromUniswap3';
3
+ export * from './UniswapPoolContracts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './Ethers';
2
+ export * from './pricesFromUniswap3';
3
+ export * from './UniswapPoolContracts';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const logErrors: <T>(func: () => T) => T;
2
+ export declare const logErrorsAsync: <T>(func: () => Promise<T>) => Promise<T>;
3
+ //# sourceMappingURL=logErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logErrors.d.ts","sourceRoot":"","sources":["../../../src/lib/logErrors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,yBAOrB,CAAA;AAED,eAAO,MAAM,cAAc,2CAO1B,CAAA"}
@@ -0,0 +1,19 @@
1
+ export const logErrors = (func) => {
2
+ try {
3
+ return func();
4
+ }
5
+ catch (ex) {
6
+ console.error(ex);
7
+ throw ex;
8
+ }
9
+ };
10
+ export const logErrorsAsync = async (func) => {
11
+ try {
12
+ return await func();
13
+ }
14
+ catch (ex) {
15
+ console.error(ex);
16
+ throw ex;
17
+ }
18
+ };
19
+ //# sourceMappingURL=logErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logErrors.js","sourceRoot":"","sources":["../../../src/lib/logErrors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,IAAa,EAAE,EAAE;IAC5C,IAAI;QACF,OAAO,IAAI,EAAE,CAAA;KACd;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACjB,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAK,IAAsB,EAAE,EAAE;IAChE,IAAI;QACF,OAAO,MAAM,IAAI,EAAE,CAAA;KACpB;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACjB,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { XyoUniswapCryptoPair } from '@xyo-network/uniswap-crypto-market-payload-plugin';
2
+ import { EthersUniSwap3Pair } from './Ethers';
3
+ export declare const pricesFromUniswap3: (pools: EthersUniSwap3Pair[]) => Promise<XyoUniswapCryptoPair[]>;
4
+ //# sourceMappingURL=pricesFromUniswap3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricesFromUniswap3.d.ts","sourceRoot":"","sources":["../../../src/lib/pricesFromUniswap3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAA;AAExF,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAG7C,eAAO,MAAM,kBAAkB,UAAiB,kBAAkB,EAAE,KAAG,QAAQ,oBAAoB,EAAE,CAapG,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { logErrorsAsync } from './logErrors';
2
+ export const pricesFromUniswap3 = async (pools) => {
3
+ return await logErrorsAsync(async () => {
4
+ const promiseResults = await Promise.allSettled(pools.map(async (pool) => {
5
+ const result = await pool.price();
6
+ return result;
7
+ }));
8
+ return promiseResults.filter((result) => result.status === 'fulfilled').map((result) => result.value);
9
+ });
10
+ };
11
+ //# sourceMappingURL=pricesFromUniswap3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricesFromUniswap3.js","sourceRoot":"","sources":["../../../src/lib/pricesFromUniswap3.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,KAA2B,EAAmC,EAAE;IACvG,OAAO,MAAM,cAAc,CAAC,KAAK,IAAI,EAAE;QACrC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAC7C,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAiC,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YACjC,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CACH,CAAA;QAED,OAAQ,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAoD,CAAC,GAAG,CAC7H,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CACzB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@xyo-network/uniswap-crypto-market-plugin",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
+ },
12
+ "dependencies": {
13
+ "@ethersproject/address": "^5.7.0",
14
+ "@ethersproject/bignumber": "^5.7.0",
15
+ "@ethersproject/contracts": "^5.7.0",
16
+ "@ethersproject/networks": "^5.7.1",
17
+ "@ethersproject/providers": "^5.7.2",
18
+ "@ethersproject/solidity": "^5.7.0",
19
+ "@xylabs/assert": "^2.6.9",
20
+ "@xylabs/bignumber": "^2.6.9",
21
+ "@xylabs/delay": "^2.6.9",
22
+ "@xyo-network/module": "^2.42.0",
23
+ "@xyo-network/payload": "^2.42.0",
24
+ "@xyo-network/payloadset-plugin": "^2.42.0",
25
+ "@xyo-network/uniswap-crypto-market-payload-plugin": "^2.42.0",
26
+ "@xyo-network/witness": "^2.42.0",
27
+ "tslib": "^2.4.1"
28
+ },
29
+ "peerDependencies": {
30
+ "@uniswap/sdk": "^3.0.3",
31
+ "@uniswap/sdk-core": "^3.1.0",
32
+ "@uniswap/v3-sdk": "^3.9.0",
33
+ "@xyo-network/typechain": "^2.0.3",
34
+ "@xyo-network/uniswap-typechain": "^2.0.3"
35
+ },
36
+ "devDependencies": {
37
+ "@uniswap/sdk": "^3.0.3",
38
+ "@uniswap/sdk-core": "^3.1.0",
39
+ "@uniswap/v3-sdk": "^3.9.0",
40
+ "@xyo-network/typechain": "^2.0.4",
41
+ "@xyo-network/uniswap-typechain": "^2.0.4"
42
+ },
43
+ "description": "Primary SDK for using XYO Protocol 2.0",
44
+ "browser": "dist/esm/index.js",
45
+ "docs": "dist/docs.json",
46
+ "exports": {
47
+ ".": {
48
+ "node": {
49
+ "import": "./dist/esm/index.js",
50
+ "require": "./dist/cjs/index.js"
51
+ },
52
+ "browser": {
53
+ "import": "./dist/esm/index.js",
54
+ "require": "./dist/cjs/index.js"
55
+ },
56
+ "default": "./dist/esm/index.js"
57
+ },
58
+ "./dist/docs.json": {
59
+ "default": "./dist/docs.json"
60
+ },
61
+ "./package.json": "./package.json"
62
+ },
63
+ "main": "dist/cjs/index.js",
64
+ "module": "dist/esm/index.js",
65
+ "homepage": "https://xyo.network",
66
+ "license": "LGPL-3.0-only",
67
+ "publishConfig": {
68
+ "access": "public"
69
+ },
70
+ "repository": {
71
+ "type": "git",
72
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
73
+ },
74
+ "sideEffects": false,
75
+ "types": "dist/esm/index.d.ts",
76
+ "version": "2.42.0"
77
+ }
package/src/Config.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { XyoUniswapCryptoMarketWitnessConfigSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'
2
+ import { XyoWitnessConfig } from '@xyo-network/witness'
3
+
4
+ export type XyoUniswapCryptoMarketWitnessConfig = XyoWitnessConfig<{
5
+ pools: string[]
6
+ schema: XyoUniswapCryptoMarketWitnessConfigSchema
7
+ }>
@@ -0,0 +1,11 @@
1
+ import { PayloadSetPluginResolver } from '@xyo-network/payloadset-plugin'
2
+
3
+ import { XyoUniswapCryptoMarketPlugin } from './Plugin'
4
+
5
+ describe('XyoCryptoMarketUniswapPlugin', () => {
6
+ test('Add to Resolver', () => {
7
+ const plugin = XyoUniswapCryptoMarketPlugin()
8
+ const resolver = new PayloadSetPluginResolver().register(plugin)
9
+ expect(resolver.resolve(plugin.set)).toBeDefined()
10
+ })
11
+ })