@centrifuge/sdk 0.0.0-alpha.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 (147) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +149 -0
  3. package/dist/Account.d.ts +11 -0
  4. package/dist/Account.d.ts.map +1 -0
  5. package/dist/Account.js +46 -0
  6. package/dist/Account.js.map +1 -0
  7. package/dist/Centrifuge.d.ts +7117 -0
  8. package/dist/Centrifuge.d.ts.map +1 -0
  9. package/dist/Centrifuge.js +464 -0
  10. package/dist/Centrifuge.js.map +1 -0
  11. package/dist/Entity.d.ts +12 -0
  12. package/dist/Entity.d.ts.map +1 -0
  13. package/dist/Entity.js +16 -0
  14. package/dist/Entity.js.map +1 -0
  15. package/dist/Pool.d.ts +27 -0
  16. package/dist/Pool.d.ts.map +1 -0
  17. package/dist/Pool.js +73 -0
  18. package/dist/Pool.js.map +1 -0
  19. package/dist/PoolNetwork.d.ts +82 -0
  20. package/dist/PoolNetwork.d.ts.map +1 -0
  21. package/dist/PoolNetwork.js +235 -0
  22. package/dist/PoolNetwork.js.map +1 -0
  23. package/dist/Reports/Processor.d.ts +38 -0
  24. package/dist/Reports/Processor.d.ts.map +1 -0
  25. package/dist/Reports/Processor.js +167 -0
  26. package/dist/Reports/Processor.js.map +1 -0
  27. package/dist/Reports/index.d.ts +24 -0
  28. package/dist/Reports/index.d.ts.map +1 -0
  29. package/dist/Reports/index.js +68 -0
  30. package/dist/Reports/index.js.map +1 -0
  31. package/dist/Reports/types.d.ts +102 -0
  32. package/dist/Reports/types.d.ts.map +1 -0
  33. package/dist/Reports/types.js +2 -0
  34. package/dist/Reports/types.js.map +1 -0
  35. package/dist/Vault.d.ts +96 -0
  36. package/dist/Vault.d.ts.map +1 -0
  37. package/dist/Vault.js +330 -0
  38. package/dist/Vault.js.map +1 -0
  39. package/dist/abi/CentrifugeRouter.abi.json +43 -0
  40. package/dist/abi/Currency.abi.json +14 -0
  41. package/dist/abi/Gateway.abi.json +1 -0
  42. package/dist/abi/InvestmentManager.abi.json +4 -0
  43. package/dist/abi/LiquidityPool.abi.json +79 -0
  44. package/dist/abi/PoolManager.abi.json +55 -0
  45. package/dist/abi/RestrictionManager.abi.json +22 -0
  46. package/dist/abi/Router.abi.json +1 -0
  47. package/dist/abi/index.d.ts +11 -0
  48. package/dist/abi/index.d.ts.map +1 -0
  49. package/dist/abi/index.js +20 -0
  50. package/dist/abi/index.js.map +1 -0
  51. package/dist/config/chains.d.ts +1575 -0
  52. package/dist/config/chains.d.ts.map +1 -0
  53. package/dist/config/chains.js +3 -0
  54. package/dist/config/chains.js.map +1 -0
  55. package/dist/config/lp.d.ts +17 -0
  56. package/dist/config/lp.d.ts.map +1 -0
  57. package/dist/config/lp.js +35 -0
  58. package/dist/config/lp.js.map +1 -0
  59. package/dist/constants.d.ts +3 -0
  60. package/dist/constants.d.ts.map +1 -0
  61. package/dist/constants.js +3 -0
  62. package/dist/constants.js.map +1 -0
  63. package/dist/index.d.ts +9 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +9 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/queries/poolFeeSnapshots.d.ts +48 -0
  68. package/dist/queries/poolFeeSnapshots.d.ts.map +1 -0
  69. package/dist/queries/poolFeeSnapshots.js +62 -0
  70. package/dist/queries/poolFeeSnapshots.js.map +1 -0
  71. package/dist/queries/poolSnapshots.d.ts +73 -0
  72. package/dist/queries/poolSnapshots.d.ts.map +1 -0
  73. package/dist/queries/poolSnapshots.js +106 -0
  74. package/dist/queries/poolSnapshots.js.map +1 -0
  75. package/dist/queries/trancheSnapshots.d.ts +70 -0
  76. package/dist/queries/trancheSnapshots.d.ts.map +1 -0
  77. package/dist/queries/trancheSnapshots.js +76 -0
  78. package/dist/queries/trancheSnapshots.js.map +1 -0
  79. package/dist/tests/mocks/mockPoolFeeSnapshot.d.ts +3 -0
  80. package/dist/tests/mocks/mockPoolFeeSnapshot.d.ts.map +1 -0
  81. package/dist/tests/mocks/mockPoolFeeSnapshot.js +68 -0
  82. package/dist/tests/mocks/mockPoolFeeSnapshot.js.map +1 -0
  83. package/dist/tests/mocks/mockPoolMetadata.d.ts +3 -0
  84. package/dist/tests/mocks/mockPoolMetadata.d.ts.map +1 -0
  85. package/dist/tests/mocks/mockPoolMetadata.js +118 -0
  86. package/dist/tests/mocks/mockPoolMetadata.js.map +1 -0
  87. package/dist/tests/mocks/mockPoolSnapshots.d.ts +3 -0
  88. package/dist/tests/mocks/mockPoolSnapshots.d.ts.map +1 -0
  89. package/dist/tests/mocks/mockPoolSnapshots.js +64 -0
  90. package/dist/tests/mocks/mockPoolSnapshots.js.map +1 -0
  91. package/dist/tests/mocks/mockTrancheSnapshots.d.ts +3 -0
  92. package/dist/tests/mocks/mockTrancheSnapshots.d.ts.map +1 -0
  93. package/dist/tests/mocks/mockTrancheSnapshots.js +112 -0
  94. package/dist/tests/mocks/mockTrancheSnapshots.js.map +1 -0
  95. package/dist/tests/setup.d.ts +16 -0
  96. package/dist/tests/setup.d.ts.map +1 -0
  97. package/dist/tests/setup.js +41 -0
  98. package/dist/tests/setup.js.map +1 -0
  99. package/dist/tests/tenderly.d.ts +76 -0
  100. package/dist/tests/tenderly.d.ts.map +1 -0
  101. package/dist/tests/tenderly.js +219 -0
  102. package/dist/tests/tenderly.js.map +1 -0
  103. package/dist/types/index.d.ts +2 -0
  104. package/dist/types/index.d.ts.map +1 -0
  105. package/dist/types/index.js +2 -0
  106. package/dist/types/index.js.map +1 -0
  107. package/dist/types/poolMetadata.d.ts +92 -0
  108. package/dist/types/poolMetadata.d.ts.map +1 -0
  109. package/dist/types/poolMetadata.js +2 -0
  110. package/dist/types/poolMetadata.js.map +1 -0
  111. package/dist/types/query.d.ts +11 -0
  112. package/dist/types/query.d.ts.map +1 -0
  113. package/dist/types/query.js +2 -0
  114. package/dist/types/query.js.map +1 -0
  115. package/dist/types/transaction.d.ts +47 -0
  116. package/dist/types/transaction.d.ts.map +1 -0
  117. package/dist/types/transaction.js +2 -0
  118. package/dist/types/transaction.js.map +1 -0
  119. package/dist/utils/BigInt.d.ts +80 -0
  120. package/dist/utils/BigInt.d.ts.map +1 -0
  121. package/dist/utils/BigInt.js +215 -0
  122. package/dist/utils/BigInt.js.map +1 -0
  123. package/dist/utils/date.d.ts +17 -0
  124. package/dist/utils/date.d.ts.map +1 -0
  125. package/dist/utils/date.js +36 -0
  126. package/dist/utils/date.js.map +1 -0
  127. package/dist/utils/decimal.d.ts +6 -0
  128. package/dist/utils/decimal.d.ts.map +1 -0
  129. package/dist/utils/decimal.js +13 -0
  130. package/dist/utils/decimal.js.map +1 -0
  131. package/dist/utils/pinToApi.d.ts +2 -0
  132. package/dist/utils/pinToApi.d.ts.map +1 -0
  133. package/dist/utils/pinToApi.js +10 -0
  134. package/dist/utils/pinToApi.js.map +1 -0
  135. package/dist/utils/query.d.ts +2 -0
  136. package/dist/utils/query.d.ts.map +1 -0
  137. package/dist/utils/query.js +37 -0
  138. package/dist/utils/query.js.map +1 -0
  139. package/dist/utils/rx.d.ts +19 -0
  140. package/dist/utils/rx.d.ts.map +1 -0
  141. package/dist/utils/rx.js +45 -0
  142. package/dist/utils/rx.js.map +1 -0
  143. package/dist/utils/transaction.d.ts +14 -0
  144. package/dist/utils/transaction.d.ts.map +1 -0
  145. package/dist/utils/transaction.js +33 -0
  146. package/dist/utils/transaction.js.map +1 -0
  147. package/package.json +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Centrifuge.d.ts","sourceRoot":"","sources":["../src/Centrifuge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAgBtC,OAAO,EAOL,KAAK,GAAG,EACR,KAAK,OAAO,IAAI,WAAW,EAC3B,KAAK,KAAK,EAGV,KAAK,yBAAyB,EAC/B,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAC7G,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAK5C,MAAM,MAAM,MAAM,GAAG;IACnB,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,CAAA;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAChD,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,KAAK,aAAa,GAAG,MAAM,GAAG,SAAS,CAAA;AA8BvC,qBAAa,UAAU;;IAErB,IAAI,MAAM,kBAET;IAGD,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;qrBA4R8D,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAyMnF,CAAA;uCAU60B,CAAC;;;;;;;;;;;;;;;;6eAA81mB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -0,0 +1,464 @@
1
+ import { concatWith, defaultIfEmpty, defer, filter, identity, isObservable, map, mergeMap, of, Subject, switchMap, using, } from 'rxjs';
2
+ import { fromFetch } from 'rxjs/fetch';
3
+ import { createPublicClient, createWalletClient, custom, getContract, http, parseEventLogs, } from 'viem';
4
+ import { ABI } from './abi/index.js';
5
+ import { Account } from './Account.js';
6
+ import { chains } from './config/chains.js';
7
+ import { PERMIT_TYPEHASH } from './constants.js';
8
+ import { Pool } from './Pool.js';
9
+ import { Currency } from './utils/BigInt.js';
10
+ import { hashKey } from './utils/query.js';
11
+ import { makeThenable, repeatOnEvents, shareReplayWithDelayedReset } from './utils/rx.js';
12
+ import { doTransaction, isLocalAccount } from './utils/transaction.js';
13
+ const envConfig = {
14
+ mainnet: {
15
+ indexerUrl: 'https://subql.embrio.tech/',
16
+ alchemyKey: 'KNR-1LZhNqWOxZS2AN8AFeaiESBV10qZ',
17
+ infuraKey: '8ed99a9a115349bbbc01dcf3a24edc96',
18
+ defaultChain: 1,
19
+ ipfsUrl: 'https://centrifuge.mypinata.cloud',
20
+ },
21
+ demo: {
22
+ indexerUrl: 'https://api.subquery.network/sq/centrifuge/pools-demo-multichain',
23
+ alchemyKey: 'KNR-1LZhNqWOxZS2AN8AFeaiESBV10qZ',
24
+ infuraKey: '8cd8e043ee8d4001b97a1c37e08fd9dd',
25
+ defaultChain: 11155111,
26
+ ipfsUrl: 'https://centrifuge.mypinata.cloud',
27
+ },
28
+ dev: {
29
+ indexerUrl: 'https://api.subquery.network/sq/centrifuge/pools-demo-multichain',
30
+ alchemyKey: 'KNR-1LZhNqWOxZS2AN8AFeaiESBV10qZ',
31
+ infuraKey: '8cd8e043ee8d4001b97a1c37e08fd9dd',
32
+ defaultChain: 11155111,
33
+ ipfsUrl: 'https://centrifuge.mypinata.cloud',
34
+ },
35
+ };
36
+ const defaultConfig = {
37
+ environment: 'mainnet',
38
+ };
39
+ export class Centrifuge {
40
+ #config;
41
+ get config() {
42
+ return this.#config;
43
+ }
44
+ #clients = new Map();
45
+ getClient(chainId) {
46
+ return this.#clients.get(chainId ?? this.config.defaultChain);
47
+ }
48
+ get chains() {
49
+ return [...this.#clients.keys()];
50
+ }
51
+ getChainConfig(chainId) {
52
+ return this.getClient(chainId ?? this.config.defaultChain).chain;
53
+ }
54
+ #signer = null;
55
+ setSigner(signer) {
56
+ this.#signer = signer;
57
+ }
58
+ get signer() {
59
+ return this.#signer;
60
+ }
61
+ constructor(config = {}) {
62
+ const defaultConfigForEnv = envConfig[config?.environment ?? 'mainnet'];
63
+ this.#config = {
64
+ ...defaultConfig,
65
+ ...defaultConfigForEnv,
66
+ ...config,
67
+ };
68
+ Object.freeze(this.#config);
69
+ chains
70
+ .filter((chain) => (this.#config.environment === 'mainnet' ? !chain.testnet : chain.testnet))
71
+ .forEach((chain) => {
72
+ const rpcUrl = this.#config.rpcUrls?.[chain.id] ?? undefined;
73
+ if (!rpcUrl) {
74
+ console.warn(`No rpcUrl defined for chain ${chain.id}. Using public RPC endpoint.`);
75
+ }
76
+ this.#clients.set(chain.id, createPublicClient({ chain, transport: http(rpcUrl), batch: { multicall: true } }));
77
+ });
78
+ }
79
+ pool(id, metadataHash) {
80
+ return this._query(null, () => of(new Pool(this, id, metadataHash)));
81
+ }
82
+ account(address, chainId) {
83
+ return this._query(null, () => of(new Account(this, address, chainId ?? this.config.defaultChain)));
84
+ }
85
+ /**
86
+ * Get the metadata for an ERC20 token
87
+ * @param address - The token address
88
+ * @param chainId - The chain ID
89
+ */
90
+ currency(address, chainId) {
91
+ const curAddress = address.toLowerCase();
92
+ const cid = chainId ?? this.config.defaultChain;
93
+ return this._query(['currency', curAddress, cid], () => defer(async () => {
94
+ const contract = getContract({
95
+ address: curAddress,
96
+ abi: ABI.Currency,
97
+ client: this.getClient(cid),
98
+ });
99
+ const [decimals, name, symbol, supportsPermit] = await Promise.all([
100
+ contract.read.decimals(),
101
+ contract.read.name(),
102
+ contract.read.symbol(),
103
+ contract.read.PERMIT_TYPEHASH()
104
+ .then((hash) => hash === PERMIT_TYPEHASH)
105
+ .catch(() => false),
106
+ ]);
107
+ return {
108
+ address: curAddress,
109
+ decimals,
110
+ name,
111
+ symbol,
112
+ chainId: cid,
113
+ supportsPermit,
114
+ };
115
+ }));
116
+ }
117
+ /**
118
+ * Get the balance of an ERC20 token for a given owner.
119
+ * @param currency - The token address
120
+ * @param owner - The owner address
121
+ * @param chainId - The chain ID
122
+ */
123
+ balance(currency, owner, chainId) {
124
+ const address = owner.toLowerCase();
125
+ const cid = chainId ?? this.config.defaultChain;
126
+ return this._query(['balance', currency, owner, cid], () => {
127
+ return this.currency(currency, cid).pipe(switchMap((currencyMeta) => defer(() => this.getClient(cid)
128
+ .readContract({
129
+ address: currency,
130
+ abi: ABI.Currency,
131
+ functionName: 'balanceOf',
132
+ args: [address],
133
+ })
134
+ .then((val) => new Currency(val, currencyMeta.decimals))).pipe(repeatOnEvents(this, {
135
+ address: currency,
136
+ abi: ABI.Currency,
137
+ eventName: 'Transfer',
138
+ filter: (events) => {
139
+ return events.some((event) => {
140
+ return event.args.from?.toLowerCase() === address || event.args.to?.toLowerCase() === address;
141
+ });
142
+ },
143
+ }, cid))));
144
+ });
145
+ }
146
+ /**
147
+ * Returns an observable of all events on a given chain.
148
+ * @internal
149
+ */
150
+ _events(chainId) {
151
+ const cid = chainId ?? this.config.defaultChain;
152
+ return this._query(['events', cid], () => using(() => {
153
+ const subject = new Subject();
154
+ const unwatch = this.getClient(cid).watchEvent({
155
+ onLogs: (logs) => subject.next(logs),
156
+ });
157
+ return {
158
+ unsubscribe: unwatch,
159
+ subject,
160
+ };
161
+ }, ({ subject }) => subject), { cache: false } // Only emit new events
162
+ ).pipe(filter((logs) => logs.length > 0));
163
+ }
164
+ /**
165
+ * Returns an observable of events on a given chain, filtered by name(s) and address(es).
166
+ * @internal
167
+ */
168
+ _filteredEvents(address, abi, eventName, chainId) {
169
+ const addresses = (Array.isArray(address) ? address : [address]).map((a) => a.toLowerCase());
170
+ const eventNames = Array.isArray(eventName) ? eventName : [eventName];
171
+ return this._events(chainId).pipe(map((logs) => {
172
+ const parsed = parseEventLogs({
173
+ abi: abi.flat(),
174
+ eventName: eventNames,
175
+ logs,
176
+ });
177
+ const filtered = parsed.filter((log) => (addresses.length ? addresses.includes(log.address) : true));
178
+ return filtered;
179
+ }), filter((logs) => logs.length > 0));
180
+ }
181
+ /**
182
+ * @internal
183
+ */
184
+ _getIndexerObservable(query, variables) {
185
+ return fromFetch(this.config.indexerUrl, {
186
+ method: 'POST',
187
+ headers: {
188
+ 'Content-Type': 'application/json',
189
+ Accept: 'application/json',
190
+ },
191
+ body: JSON.stringify({ query, variables }),
192
+ selector: async (res) => {
193
+ const { data, errors } = await res.json();
194
+ if (errors?.length) {
195
+ throw errors;
196
+ }
197
+ return data;
198
+ },
199
+ });
200
+ }
201
+ _queryIndexer(query, variables, postProcess) {
202
+ return this._query([query, variables], () => this._getIndexerObservable(query, variables).pipe(map(postProcess ?? identity)), {
203
+ valueCacheTime: 120,
204
+ });
205
+ }
206
+ /**
207
+ * @internal
208
+ */
209
+ _getIPFSObservable(hash) {
210
+ return fromFetch(`${this.config.ipfsUrl}/ipfs/${hash}`, {
211
+ method: 'GET',
212
+ selector: async (res) => {
213
+ if (!res.ok) {
214
+ console.warn(`Failed to fetch IPFS data: ${res.statusText}`);
215
+ }
216
+ const data = await res.json();
217
+ return data;
218
+ },
219
+ });
220
+ }
221
+ /**
222
+ * @internal
223
+ */
224
+ _queryIPFS(hash) {
225
+ return this._query([hash], () => this._getIPFSObservable(hash));
226
+ }
227
+ #memoized = new Map();
228
+ #memoizeWith(keys, callback) {
229
+ const cacheKey = hashKey(keys);
230
+ if (this.#memoized.has(cacheKey)) {
231
+ return this.#memoized.get(cacheKey);
232
+ }
233
+ const result = callback();
234
+ this.#memoized.set(cacheKey, result);
235
+ return result;
236
+ }
237
+ /**
238
+ * Wraps an observable, memoizing the result based on the keys provided.
239
+ * If keys are provided, the observable will be memoized, multicasted, and the last emitted value cached.
240
+ * Additional options can be provided to control the caching behavior.
241
+ * By default, the observable will keep the last emitted value and pass it immediately to new subscribers.
242
+ * When there are no subscribers, the observable resets after a short timeout and purges the cached value.
243
+ *
244
+ * @example
245
+ *
246
+ * ```ts
247
+ * const address = '0xabc...123'
248
+ * const tUSD = '0x456...def'
249
+ * const chainId = 1
250
+ *
251
+ * // Wrap an observable that continuously emits values
252
+ * const query = this._query(['balance', address, tUSD, chainId], () => {
253
+ * return defer(() => fetchBalance(address, tUSD, chainId))
254
+ * .pipe(
255
+ * repeatOnEvents(
256
+ * this,
257
+ * {
258
+ * address: tUSD,
259
+ * abi: ABI.Currency,
260
+ * eventName: 'Transfer',
261
+ * },
262
+ * chainId
263
+ * )
264
+ * )
265
+ * })
266
+ *
267
+ * // Logs the current balance and updated balances whenever a transfer event is emitted
268
+ * const obs1 = query.subscribe(balance => console.log(balance))
269
+ *
270
+ * // Subscribing twice only fetches the balance once and will emit the same value to both subscribers
271
+ * const obs2 = query.subscribe(balance => console.log(balance))
272
+ *
273
+ * // ... sometime later
274
+ *
275
+ * // Later subscribers will receive the last emitted value immediately
276
+ * const obs3 = query.subscribe(balance => console.log(balance))
277
+ *
278
+ * // Awaiting the query will also immediately return the last emitted value or wait for the next value
279
+ * const balance = await query
280
+ *
281
+ * obs1.unsubscribe()
282
+ * obs2.unsubscribe()
283
+ * obs3.unsubscribe()
284
+ * ```
285
+ *
286
+ * ```ts
287
+ * const address = '0xabc...123'
288
+ * const tUSD = '0x456...def'
289
+ * const chainId = 1
290
+ *
291
+ * // Wrap an observable that only emits one value and then completes
292
+ * //
293
+ * const query = this._query(['balance', address, tUSD, chainId], () => {
294
+ * return defer(() => fetchBalance(address, tUSD, chainId))
295
+ * }, { valueCacheTime: 60 })
296
+ *
297
+ * // Logs the current balance and updated balances whenever a new
298
+ * const obs1 = query.subscribe(balance => console.log(balance))
299
+ *
300
+ * // Subscribing twice only fetches the balance once and will emit the same value to both subscribers
301
+ * const obs2 = query.subscribe(balance => console.log(balance))
302
+ *
303
+ * // ... sometime later
304
+ *
305
+ * // Later subscribers will receive the last emitted value immediately
306
+ * const obs3 = query.subscribe(balance => console.log(balance))
307
+ *
308
+ * // Awaiting the query will also immediately return the last emitted value or wait for the next value
309
+ * const balance = await query
310
+ *
311
+ * obs1.unsubscribe()
312
+ * obs2.unsubscribe()
313
+ * obs3.unsubscribe()
314
+ * ```
315
+ *
316
+ * @internal
317
+ */
318
+ _query(keys, observableCallback, options) {
319
+ function get() {
320
+ const sharedSubject = new Subject();
321
+ function createShared() {
322
+ const $shared = observableCallback().pipe(shareReplayWithDelayedReset({
323
+ bufferSize: (options?.cache ?? true) ? 1 : 0,
324
+ resetDelay: (options?.cache === false ? 0 : (options?.observableCacheTime ?? 60)) * 1000,
325
+ windowTime: (options?.valueCacheTime ?? Infinity) * 1000,
326
+ }));
327
+ sharedSubject.next($shared);
328
+ return $shared;
329
+ }
330
+ const $query = createShared().pipe(
331
+ // When `valueCacheTime` is finite, and the cached value is expired,
332
+ // the shared observable will immediately complete upon the next subscription.
333
+ // This will cause the shared observable to be recreated.
334
+ defaultIfEmpty(defer(createShared)),
335
+ // For existing subscribers, merge any newly created shared observable.
336
+ concatWith(sharedSubject),
337
+ // Flatten observables emitted from the `sharedSubject`
338
+ mergeMap((d) => (isObservable(d) ? d : of(d))));
339
+ return makeThenable($query);
340
+ }
341
+ return keys ? this.#memoizeWith(keys, get) : get();
342
+ }
343
+ /**
344
+ * Executes a transaction on a given chain.
345
+ * When subscribed to, it emits status updates as it progresses.
346
+ * When awaited, it returns the final confirmed if successful.
347
+ * Will additionally prompt the user to switch chains if they're not on the correct chain.
348
+ *
349
+ * @example
350
+ * ```ts
351
+ * const tx = this._transact(
352
+ * 'Transfer',
353
+ * ({ walletClient }) =>
354
+ * walletClient.writeContract({
355
+ * address: '0xabc...123',
356
+ * abi: ABI.Currency,
357
+ * functionName: 'transfer',
358
+ * args: ['0xdef...456', 1000000n],
359
+ * }),
360
+ * 1
361
+ * )
362
+ * tx.subscribe(status => console.log(status))
363
+ *
364
+ * // Results in something like the following values being emitted (assuming the user wasn't connected to mainnet):
365
+ * // { type: 'SwitchingChain', chainId: 1 }
366
+ * // { type: 'SigningTransaction', title: 'Transfer' }
367
+ * // { type: 'TransactionPending', title: 'Transfer', hash: '0x123...abc' }
368
+ * // { type: 'TransactionConfirmed', title: 'Transfer', hash: '0x123...abc', receipt: { ... } }
369
+ * ```
370
+ *
371
+ * ```ts
372
+ * const finalResult = await this._transact(...)
373
+ * console.log(finalResult) // { type: 'TransactionConfirmed', title: 'Transfer', hash: '0x123...abc', receipt: { ... } }
374
+ * ```
375
+ *
376
+ * @internal
377
+ */
378
+ _transact(title, transactionCallback, chainId) {
379
+ return this._transactSequence(async function* (params) {
380
+ const transaction = transactionCallback(params);
381
+ yield* doTransaction(title, params.publicClient, () => transaction);
382
+ }, chainId);
383
+ }
384
+ /**
385
+ * Executes a sequence of transactions on a given chain.
386
+ * When subscribed to, it emits status updates as it progresses.
387
+ * When awaited, it returns the final confirmed if successful.
388
+ * Will additionally prompt the user to switch chains if they're not on the correct chain.
389
+ *
390
+ * @example
391
+ *
392
+ * ```ts
393
+ * const tx = this._transact(async function* ({ walletClient, publicClient, chainId, signingAddress, signer }) {
394
+ * const permit = yield* doSignMessage('Sign Permit', () => {
395
+ * return signPermit(walletClient, signer, chainId, signingAddress, '0xabc...123', '0xdef...456', 1000000n)
396
+ * })
397
+ * yield* doTransaction('Invest', publicClient, () =>
398
+ * walletClient.writeContract({
399
+ * address: '0xdef...456',
400
+ * abi: ABI.LiquidityPool,
401
+ * functionName: 'requestDepositWithPermit',
402
+ * args: [1000000n, permit],
403
+ * })
404
+ * )
405
+ * }, 1)
406
+ * tx.subscribe(status => console.log(status))
407
+ *
408
+ * // Results in something like the following values being emitted (assuming the user was on the right chain):
409
+ * // { type: 'SigningMessage', title: 'Sign Permit' }
410
+ * // { type: 'SignedMessage', title: 'Sign Permit', signed: { ... } }
411
+ * // { type: 'SigningTransaction', title: 'Invest' }
412
+ * // { type: 'TransactionPending', title: 'Invest', hash: '0x123...abc' }
413
+ * // { type: 'TransactionConfirmed', title: 'Invest', hash: '0x123...abc', receipt: { ... } }
414
+ *
415
+ * @internal
416
+ */
417
+ _transactSequence(transactionCallback, chainId) {
418
+ const targetChainId = chainId ?? this.config.defaultChain;
419
+ const self = this;
420
+ async function* transact() {
421
+ const { signer } = self;
422
+ if (!signer)
423
+ throw new Error('Signer not set');
424
+ const publicClient = self.getClient(targetChainId);
425
+ const chain = self.getChainConfig(targetChainId);
426
+ const bareWalletClient = isLocalAccount(signer)
427
+ ? createWalletClient({ account: signer, chain, transport: http(self.#config.rpcUrls?.[chain.id]) })
428
+ : createWalletClient({ transport: custom(signer) });
429
+ const [address] = await bareWalletClient.getAddresses();
430
+ if (!address)
431
+ throw new Error('No account selected');
432
+ const selectedChain = await bareWalletClient.getChainId();
433
+ if (selectedChain !== targetChainId) {
434
+ yield { type: 'SwitchingChain', chainId: targetChainId };
435
+ await bareWalletClient.switchChain({ id: targetChainId });
436
+ }
437
+ // Re-create the wallet client with the correct chain and account
438
+ // Saves having to pass `account` and `chain` to every `writeContract` call
439
+ const walletClient = isLocalAccount(signer)
440
+ ? bareWalletClient
441
+ : createWalletClient({ account: address, chain, transport: custom(signer) });
442
+ const transaction = transactionCallback({
443
+ signingAddress: address,
444
+ chain,
445
+ chainId: targetChainId,
446
+ publicClient,
447
+ walletClient,
448
+ signer,
449
+ });
450
+ if (Symbol.asyncIterator in transaction) {
451
+ yield* transaction;
452
+ }
453
+ else if (isObservable(transaction)) {
454
+ yield transaction;
455
+ }
456
+ else {
457
+ throw new Error('Invalid arguments');
458
+ }
459
+ }
460
+ const $tx = defer(transact).pipe(mergeMap((d) => (isObservable(d) ? d : of(d))));
461
+ return makeThenable($tx, true);
462
+ }
463
+ }
464
+ //# sourceMappingURL=Centrifuge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Centrifuge.js","sourceRoot":"","sources":["../src/Centrifuge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Observable } from 'rxjs';
2
+ import type { Centrifuge } from './Centrifuge.js';
3
+ import type { CentrifugeQueryOptions } from './types/query.js';
4
+ export declare class Entity {
5
+ #private;
6
+ protected _root: Centrifuge;
7
+ _transact: Centrifuge['_transact'];
8
+ _transactSequence: Centrifuge['_transactSequence'];
9
+ constructor(_root: Centrifuge, queryKeys: (string | number)[]);
10
+ protected _query<T>(keys: (string | number | undefined)[] | null, observableCallback: () => Observable<T>, options?: CentrifugeQueryOptions): import("./types/query.js").Query<T>;
11
+ }
12
+ //# sourceMappingURL=Entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAE9D,qBAAa,MAAM;;IAKf,SAAS,CAAC,KAAK,EAAE,UAAU;IAH7B,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAClC,iBAAiB,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAA;gBAEtC,KAAK,EAAE,UAAU,EAC3B,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;IAOhC,SAAS,CAAC,MAAM,CAAC,CAAC,EAChB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,EAC5C,kBAAkB,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EACvC,OAAO,CAAC,EAAE,sBAAsB;CAInC"}
package/dist/Entity.js ADDED
@@ -0,0 +1,16 @@
1
+ export class Entity {
2
+ _root;
3
+ #baseKeys;
4
+ _transact;
5
+ _transactSequence;
6
+ constructor(_root, queryKeys) {
7
+ this._root = _root;
8
+ this.#baseKeys = queryKeys;
9
+ this._transact = this._root._transact.bind(this._root);
10
+ this._transactSequence = this._root._transactSequence.bind(this._root);
11
+ }
12
+ _query(keys, observableCallback, options) {
13
+ return this._root._query(keys ? [...this.#baseKeys, ...keys] : null, observableCallback, options);
14
+ }
15
+ }
16
+ //# sourceMappingURL=Entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,MAAM;IAKL;IAJZ,SAAS,CAAqB;IAC9B,SAAS,CAAyB;IAClC,iBAAiB,CAAiC;IAClD,YACY,KAAiB,EAC3B,SAA8B;QADpB,UAAK,GAAL,KAAK,CAAY;QAG3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxE,CAAC;IAES,MAAM,CACd,IAA4C,EAC5C,kBAAuC,EACvC,OAAgC;QAEhC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAA;IACtG,CAAC;CACF"}
package/dist/Pool.d.ts ADDED
@@ -0,0 +1,27 @@
1
+ import type { Centrifuge } from './Centrifuge.js';
2
+ import { Entity } from './Entity.js';
3
+ import { PoolNetwork } from './PoolNetwork.js';
4
+ import { PoolMetadata } from './types/poolMetadata.js';
5
+ import { Reports } from './Reports/index.js';
6
+ export declare class Pool extends Entity {
7
+ id: string;
8
+ metadataHash?: string | undefined;
9
+ constructor(_root: Centrifuge, id: string, metadataHash?: string | undefined);
10
+ get reports(): Reports;
11
+ metadata(): import("./index.js").Query<PoolMetadata> | import("rxjs").Observable<undefined>;
12
+ trancheIds(): import("./index.js").Query<string[]>;
13
+ /**
14
+ * Get all networks where a pool can potentially be deployed.
15
+ */
16
+ networks(): import("./index.js").Query<PoolNetwork[]>;
17
+ /**
18
+ * Get a specific network where a pool can potentially be deployed.
19
+ */
20
+ network(chainId: number): import("./index.js").Query<PoolNetwork>;
21
+ /**
22
+ * Get the networks where a pool is active. It doesn't mean that any vaults are deployed there necessarily.
23
+ */
24
+ activeNetworks(): import("./index.js").Query<PoolNetwork[]>;
25
+ vault(chainId: number, trancheId: string, asset: string): import("./index.js").Query<import("./Vault.js").Vault>;
26
+ }
27
+ //# sourceMappingURL=Pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pool.d.ts","sourceRoot":"","sources":["../src/Pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,qBAAa,IAAK,SAAQ,MAAM;IAGrB,EAAE,EAAE,MAAM;IACV,YAAY,CAAC,EAAE,MAAM;gBAF5B,KAAK,EAAE,UAAU,EACV,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,YAAA;IAK9B,IAAI,OAAO,YAEV;IAED,QAAQ;IAIR,UAAU;IAoBV;;OAEG;IACH,QAAQ;IAUR;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM;IAYvB;;OAEG;IACH,cAAc;IAmBd,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGxD"}
package/dist/Pool.js ADDED
@@ -0,0 +1,73 @@
1
+ import { catchError, combineLatest, map, of, switchMap, timeout } from 'rxjs';
2
+ import { Entity } from './Entity.js';
3
+ import { PoolNetwork } from './PoolNetwork.js';
4
+ import { Reports } from './Reports/index.js';
5
+ export class Pool extends Entity {
6
+ id;
7
+ metadataHash;
8
+ constructor(_root, id, metadataHash) {
9
+ super(_root, ['pool', id]);
10
+ this.id = id;
11
+ this.metadataHash = metadataHash;
12
+ }
13
+ get reports() {
14
+ return new Reports(this._root, this);
15
+ }
16
+ metadata() {
17
+ return this.metadataHash ? this._root._queryIPFS(this.metadataHash) : of(undefined);
18
+ }
19
+ trancheIds() {
20
+ return this._root._queryIndexer(`query($poolId: String!) {
21
+ pool(id: $poolId) {
22
+ tranches {
23
+ nodes {
24
+ trancheId
25
+ }
26
+ }
27
+ }
28
+ }`, {
29
+ poolId: this.id,
30
+ }, (data) => {
31
+ return data.pool.tranches.nodes.map((node) => node.trancheId);
32
+ });
33
+ }
34
+ /**
35
+ * Get all networks where a pool can potentially be deployed.
36
+ */
37
+ networks() {
38
+ return this._query(null, () => {
39
+ return of(this._root.chains.map((chainId) => {
40
+ return new PoolNetwork(this._root, this, chainId);
41
+ }));
42
+ });
43
+ }
44
+ /**
45
+ * Get a specific network where a pool can potentially be deployed.
46
+ */
47
+ network(chainId) {
48
+ return this._query(null, () => {
49
+ return this.networks().pipe(map((networks) => {
50
+ const network = networks.find((network) => network.chainId === chainId);
51
+ if (!network)
52
+ throw new Error(`Network ${chainId} not found`);
53
+ return network;
54
+ }));
55
+ });
56
+ }
57
+ /**
58
+ * Get the networks where a pool is active. It doesn't mean that any vaults are deployed there necessarily.
59
+ */
60
+ activeNetworks() {
61
+ return this._query(null, () => {
62
+ return this.networks().pipe(switchMap((networks) => {
63
+ return combineLatest(networks.map((network) => network.isActive().pipe(timeout(8000), catchError(() => {
64
+ return of(false);
65
+ })))).pipe(map((isActive) => networks.filter((_, index) => isActive[index])));
66
+ }));
67
+ });
68
+ }
69
+ vault(chainId, trancheId, asset) {
70
+ return this._query(null, () => this.network(chainId).pipe(switchMap((network) => network.vault(trancheId, asset))));
71
+ }
72
+ }
73
+ //# sourceMappingURL=Pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pool.js","sourceRoot":"","sources":["../src/Pool.ts"],"names":[],"mappings":"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"}