@centrifuge/sdk 0.0.0-alpha.16 → 0.0.0-alpha.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Centrifuge.d.ts +17 -3
- package/dist/Centrifuge.d.ts.map +1 -1
- package/dist/Centrifuge.js +83 -19
- package/dist/Centrifuge.js.map +1 -1
- package/dist/Centrifuge.test.js +8 -10
- package/dist/Centrifuge.test.js.map +1 -1
- package/dist/abi/Accounting.abi.d.ts +1 -1
- package/dist/abi/Accounting.abi.d.ts.map +1 -1
- package/dist/abi/Accounting.abi.js +1 -0
- package/dist/abi/Accounting.abi.js.map +1 -1
- package/dist/abi/index.d.ts +14 -0
- package/dist/abi/index.d.ts.map +1 -1
- package/dist/config/protocol.js +1 -1
- package/dist/entities/Investor.d.ts +1 -1
- package/dist/entities/Investor.d.ts.map +1 -1
- package/dist/entities/Investor.js.map +1 -1
- package/dist/entities/Pool.d.ts +19 -3
- package/dist/entities/Pool.d.ts.map +1 -1
- package/dist/entities/Pool.js +47 -1
- package/dist/entities/Pool.js.map +1 -1
- package/dist/entities/Pool.test.js +5 -3
- package/dist/entities/Pool.test.js.map +1 -1
- package/dist/entities/ShareClass.d.ts +43 -3
- package/dist/entities/ShareClass.d.ts.map +1 -1
- package/dist/entities/ShareClass.js +199 -13
- package/dist/entities/ShareClass.js.map +1 -1
- package/dist/entities/ShareClass.test.js +42 -2
- package/dist/entities/ShareClass.test.js.map +1 -1
- package/dist/entities/Vault.js +1 -1
- package/dist/entities/Vault.js.map +1 -1
- package/dist/entities/Vault.test.js +2 -2
- package/dist/tests/mocks/mockPoolMetadata.d.ts.map +1 -1
- package/dist/tests/mocks/mockPoolMetadata.js +1 -0
- package/dist/tests/mocks/mockPoolMetadata.js.map +1 -1
- package/dist/tests/setup.js +2 -2
- package/dist/tests/setup.js.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/poolMetadata.d.ts +8 -0
- package/dist/types/poolMetadata.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@ export declare class Investor extends Entity {
|
|
|
7
7
|
balance: import("../index.js").Balance;
|
|
8
8
|
currency: import("../types/index.js").CurrencyDetails;
|
|
9
9
|
}[]>;
|
|
10
|
-
investment(poolId: PoolId, scId: ShareClassId, asset:
|
|
10
|
+
investment(poolId: PoolId, scId: ShareClassId, asset: HexString, chainId: number): import("../index.js").Query<{
|
|
11
11
|
shareBalance: import("../index.js").Balance;
|
|
12
12
|
investmentCurrencyBalance: import("../index.js").Balance;
|
|
13
13
|
investmentCurrencyAllowance: import("../index.js").Balance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Investor.d.ts","sourceRoot":"","sources":["../../src/entities/Investor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,qBAAa,QAAS,SAAQ,MAAM;IAClC,OAAO,EAAE,SAAS,CAAA;IASlB,SAAS;;;;IAST,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Investor.d.ts","sourceRoot":"","sources":["../../src/entities/Investor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,qBAAa,QAAS,SAAQ,MAAM;IAClC,OAAO,EAAE,SAAS,CAAA;IASlB,SAAS;;;;IAST,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;IAShF,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;IAU5C,gBAAgB,CAAC,OAAO,EAAE,MAAM;;;;CAOjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Investor.js","sourceRoot":"","sources":["../../src/entities/Investor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,OAAO,QAAS,SAAQ,MAAM;IAClC,OAAO,CAAW;IAElB,gBAAgB;IAChB,YAAY,KAAiB,EAAE,OAAkB;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QAClC,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,SAAS;QACP,2BAA2B;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAC5B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CACnC,CACF,CAAA;IACH,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,IAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"Investor.js","sourceRoot":"","sources":["../../src/entities/Investor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,OAAO,QAAS,SAAQ,MAAM;IAClC,OAAO,CAAW;IAElB,gBAAgB;IAChB,YAAY,KAAiB,EAAE,OAAkB;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QAClC,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,SAAS;QACP,2BAA2B;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAC5B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CACnC,CACF,CAAA;IACH,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,IAAkB,EAAE,KAAgB,EAAE,OAAe;QAC9E,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1B,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EACrD,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CACrD,CACF,CAAA;IACH,CAAC;IAED,QAAQ,CAAC,IAAkB,EAAE,OAAe;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAC/B,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAC1C,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EACnE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAChC,CACF,CAAA;IACH,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAC5B,UAAU,CAAC,OAAO,CAAC;YACjB,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3G,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACX,CAAA;IACH,CAAC;CACF"}
|
package/dist/entities/Pool.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { HexString } from '../types/index.js';
|
|
1
2
|
import { PoolMetadata } from '../types/poolMetadata.js';
|
|
2
3
|
import { AssetId, PoolId, ShareClassId } from '../utils/types.js';
|
|
3
4
|
import { Entity } from './Entity.js';
|
|
@@ -28,7 +29,8 @@ export declare class Pool extends Entity {
|
|
|
28
29
|
name: string;
|
|
29
30
|
symbol: string;
|
|
30
31
|
totalIssuance: import("../index.js").Balance;
|
|
31
|
-
|
|
32
|
+
pricePerShare: import("../index.js").Price;
|
|
33
|
+
nav: import("../index.js").Balance;
|
|
32
34
|
};
|
|
33
35
|
}[];
|
|
34
36
|
}>;
|
|
@@ -40,8 +42,15 @@ export declare class Pool extends Entity {
|
|
|
40
42
|
name: string;
|
|
41
43
|
symbol: string;
|
|
42
44
|
totalIssuance: import("../index.js").Balance;
|
|
43
|
-
|
|
45
|
+
pricePerShare: import("../index.js").Price;
|
|
46
|
+
nav: import("../index.js").Balance;
|
|
44
47
|
}[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Check if an address is a manager of the pool.
|
|
50
|
+
* @param address - The address to check
|
|
51
|
+
* @returns True if the address is a manager, false otherwise
|
|
52
|
+
*/
|
|
53
|
+
isManager(address: HexString): import("../index.js").Query<boolean>;
|
|
45
54
|
/**
|
|
46
55
|
* Get all networks where a pool can potentially be deployed.
|
|
47
56
|
*/
|
|
@@ -54,7 +63,7 @@ export declare class Pool extends Entity {
|
|
|
54
63
|
* Get the networks where a pool is active. It doesn't mean that any vaults are deployed there necessarily.
|
|
55
64
|
*/
|
|
56
65
|
activeNetworks(): import("../index.js").Query<PoolNetwork[]>;
|
|
57
|
-
vault(chainId: number, scId: ShareClassId, asset:
|
|
66
|
+
vault(chainId: number, scId: ShareClassId, asset: HexString): import("../index.js").Query<import("./Vault.js").Vault>;
|
|
58
67
|
/**
|
|
59
68
|
* Get the currency of the pool.
|
|
60
69
|
*/
|
|
@@ -65,5 +74,12 @@ export declare class Pool extends Entity {
|
|
|
65
74
|
id: AssetId;
|
|
66
75
|
}>;
|
|
67
76
|
updateMetadata(metadata: PoolMetadata): import("../index.js").Transaction;
|
|
77
|
+
/**
|
|
78
|
+
* Update a pool manager.
|
|
79
|
+
* @param address - The address of the manager to update
|
|
80
|
+
* @param canManage - Whether the address can manage the pool
|
|
81
|
+
*/
|
|
82
|
+
updateManager(address: HexString, canManage: boolean): import("../index.js").Transaction;
|
|
83
|
+
createAccount(accountId: number, isDebitNormal: boolean): import("../index.js").Transaction;
|
|
68
84
|
}
|
|
69
85
|
//# sourceMappingURL=Pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pool.d.ts","sourceRoot":"","sources":["../../src/entities/Pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIvD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,qBAAa,IAAK,SAAQ,MAAM;IAOrB,OAAO,EAAE,MAAM;IANxB,EAAE,EAAE,MAAM,CAAA;IAYV,IAAI,OAAO,YAEV;IAED;;;OAGG;IACH,OAAO
|
|
1
|
+
{"version":3,"file":"Pool.d.ts","sourceRoot":"","sources":["../../src/entities/Pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIvD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,qBAAa,IAAK,SAAQ,MAAM;IAOrB,OAAO,EAAE,MAAM;IANxB,EAAE,EAAE,MAAM,CAAA;IAYV,IAAI,OAAO,YAEV;IAED;;;OAGG;IACH,OAAO;;;;;;;;;;;;;;;;;;;;;IAkBP,QAAQ;IAuCR,YAAY;IAMZ,UAAU,CAAC,IAAI,EAAE,YAAY;IAY7B,mBAAmB;;;;;;;;IAUnB;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,SAAS;IAe5B;;OAEG;IACH,QAAQ;IAUR;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM;IAYvB;;OAEG;IACH,cAAc;IAqBd,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS;IAI3D;;OAEG;IACH,QAAQ;;;;;;IAoCR,cAAc,CAAC,QAAQ,EAAE,YAAY;IAkBrC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO;IAepD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;CAmCxD"}
|
package/dist/entities/Pool.js
CHANGED
|
@@ -80,6 +80,23 @@ export class Pool extends Entity {
|
|
|
80
80
|
}));
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if an address is a manager of the pool.
|
|
85
|
+
* @param address - The address to check
|
|
86
|
+
* @returns True if the address is a manager, false otherwise
|
|
87
|
+
*/
|
|
88
|
+
isManager(address) {
|
|
89
|
+
return this._query(['isManager', address], () => {
|
|
90
|
+
return this._root._protocolAddresses(this.chainId).pipe(switchMap(({ hubRegistry }) => {
|
|
91
|
+
return this._root.getClient(this.chainId).readContract({
|
|
92
|
+
address: hubRegistry,
|
|
93
|
+
abi: ABI.HubRegistry,
|
|
94
|
+
functionName: 'manager',
|
|
95
|
+
args: [this.id.raw, address],
|
|
96
|
+
});
|
|
97
|
+
}));
|
|
98
|
+
});
|
|
99
|
+
}
|
|
83
100
|
/**
|
|
84
101
|
* Get all networks where a pool can potentially be deployed.
|
|
85
102
|
*/
|
|
@@ -164,7 +181,36 @@ export class Pool extends Entity {
|
|
|
164
181
|
args: [self.id.raw, toHex(cid)],
|
|
165
182
|
value: 0n,
|
|
166
183
|
}));
|
|
167
|
-
},
|
|
184
|
+
}, this.chainId);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Update a pool manager.
|
|
188
|
+
* @param address - The address of the manager to update
|
|
189
|
+
* @param canManage - Whether the address can manage the pool
|
|
190
|
+
*/
|
|
191
|
+
updateManager(address, canManage) {
|
|
192
|
+
const self = this;
|
|
193
|
+
return this._transactSequence(async function* ({ walletClient, publicClient }) {
|
|
194
|
+
const { hub } = await self._root._protocolAddresses(self.chainId);
|
|
195
|
+
yield* doTransaction('Update manager', publicClient, () => walletClient.writeContract({
|
|
196
|
+
address: hub,
|
|
197
|
+
abi: ABI.Hub,
|
|
198
|
+
functionName: 'updateHubManager',
|
|
199
|
+
args: [self.id.raw, address, canManage],
|
|
200
|
+
}));
|
|
201
|
+
}, this.chainId);
|
|
202
|
+
}
|
|
203
|
+
createAccount(accountId, isDebitNormal) {
|
|
204
|
+
const self = this;
|
|
205
|
+
return this._transactSequence(async function* ({ walletClient, publicClient }) {
|
|
206
|
+
const { hub } = await self._root._protocolAddresses(self.chainId);
|
|
207
|
+
yield* doTransaction('Create account', publicClient, () => walletClient.writeContract({
|
|
208
|
+
address: hub,
|
|
209
|
+
abi: ABI.Hub,
|
|
210
|
+
functionName: 'createAccount',
|
|
211
|
+
args: [self.id.raw, accountId, isDebitNormal],
|
|
212
|
+
}));
|
|
213
|
+
}, this.chainId);
|
|
168
214
|
}
|
|
169
215
|
/**
|
|
170
216
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pool.js","sourceRoot":"","sources":["../../src/entities/Pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"Pool.js","sourceRoot":"","sources":["../../src/entities/Pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,10 @@ describe('Pool', () => {
|
|
|
18
18
|
const { centrifuge } = context;
|
|
19
19
|
pool = new Pool(centrifuge, poolId.raw, chainId);
|
|
20
20
|
});
|
|
21
|
+
it('gets whether an address is manager', async () => {
|
|
22
|
+
const isManager = await pool.isManager(poolManager);
|
|
23
|
+
expect(isManager).to.be.true;
|
|
24
|
+
});
|
|
21
25
|
it('gets active networks of a pool', async () => {
|
|
22
26
|
const networks = await pool.activeNetworks();
|
|
23
27
|
expect(networks).to.have.length(1);
|
|
@@ -36,7 +40,7 @@ describe('Pool', () => {
|
|
|
36
40
|
it('should update the pool metadata', async () => {
|
|
37
41
|
const fakeHash = 'QmPdzJkZ4PVJ21HfBXMJbGopSpUP9C9fqu3A1f9ZVhtRY2';
|
|
38
42
|
const centrifugeWithPin = new Centrifuge({
|
|
39
|
-
environment: '
|
|
43
|
+
environment: 'dev',
|
|
40
44
|
pinJson: async (data) => {
|
|
41
45
|
expect(data).to.deep.equal(mockPoolMetadata);
|
|
42
46
|
return fakeHash;
|
|
@@ -58,7 +62,6 @@ describe('Pool', () => {
|
|
|
58
62
|
expect(detailsAfter.metadata?.pool.asset.class).to.equal('Private credit');
|
|
59
63
|
});
|
|
60
64
|
it('should return the currency of the pool', async () => {
|
|
61
|
-
const pool = await context.centrifuge.pool(poolId);
|
|
62
65
|
const currency = await pool.currency();
|
|
63
66
|
expect(currency).to.have.property('id');
|
|
64
67
|
expect(currency).to.have.property('name');
|
|
@@ -66,7 +69,6 @@ describe('Pool', () => {
|
|
|
66
69
|
expect(currency).to.have.property('decimals');
|
|
67
70
|
});
|
|
68
71
|
it('should return a pool with details', async () => {
|
|
69
|
-
const pool = await context.centrifuge.pool(poolId);
|
|
70
72
|
const details = await pool.details();
|
|
71
73
|
expect(details.id.raw).to.equal(poolId.raw);
|
|
72
74
|
expect(details.metadata).to.not.be.undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pool.test.js","sourceRoot":"","sources":["../../src/entities/Pool.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,OAAO,GAAG,QAAQ,CAAA;AACxB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAChC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AACzC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAE,CAAC,CAAC,CAAE,CAAA;AACtC,MAAM,WAAW,GAAG,4CAA4C,CAAA;AAEhE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,IAAU,CAAA;IACd,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAC9B,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAC9C,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QACpD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAA;QACjC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,QAAQ,GAAG,gDAAgD,CAAA;QAEjE,MAAM,iBAAiB,GAAG,IAAI,UAAU,CAAC;YACvC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"Pool.test.js","sourceRoot":"","sources":["../../src/entities/Pool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { AccountType } from '../types/holdings.js';
|
|
2
|
+
import { HexString } from '../types/index.js';
|
|
1
3
|
import { Balance, Price } from '../utils/BigInt.js';
|
|
2
4
|
import { AssetId, ShareClassId } from '../utils/types.js';
|
|
3
5
|
import { Entity } from './Entity.js';
|
|
@@ -18,14 +20,37 @@ export declare class ShareClass extends Entity {
|
|
|
18
20
|
name: string;
|
|
19
21
|
symbol: string;
|
|
20
22
|
totalIssuance: Balance;
|
|
21
|
-
|
|
23
|
+
pricePerShare: Price;
|
|
24
|
+
nav: Balance;
|
|
22
25
|
}>;
|
|
26
|
+
navPerNetwork(): import("../index.js").Query<{
|
|
27
|
+
chainId: number;
|
|
28
|
+
totalIssuance: Balance;
|
|
29
|
+
pricePerShare: Price;
|
|
30
|
+
nav: Balance;
|
|
31
|
+
}[]>;
|
|
23
32
|
/**
|
|
24
33
|
* Query the vaults of the share class.
|
|
25
34
|
* @param chainId The chain ID to query the vaults on.
|
|
26
35
|
* @returns The vaults of the share class on the given chain.
|
|
27
36
|
*/
|
|
28
37
|
vaults(chainId: number): import("../index.js").Query<import("./Vault.js").Vault[]>;
|
|
38
|
+
holdings(): import("../index.js").Query<{
|
|
39
|
+
assetId: AssetId;
|
|
40
|
+
assetDecimals: number;
|
|
41
|
+
valuation: `0x${string}`;
|
|
42
|
+
amount: Balance;
|
|
43
|
+
value: Balance;
|
|
44
|
+
isLiability: boolean;
|
|
45
|
+
accounts: {
|
|
46
|
+
0: number | null;
|
|
47
|
+
1: number | null;
|
|
48
|
+
2: number | null;
|
|
49
|
+
3: number | null;
|
|
50
|
+
4: number | null;
|
|
51
|
+
5: number | null;
|
|
52
|
+
};
|
|
53
|
+
}[]>;
|
|
29
54
|
/**
|
|
30
55
|
* Query a holding of the share class.
|
|
31
56
|
* @param assetId The asset ID
|
|
@@ -37,6 +62,7 @@ export declare class ShareClass extends Entity {
|
|
|
37
62
|
valuation: `0x${string}`;
|
|
38
63
|
amount: Balance;
|
|
39
64
|
value: Balance;
|
|
65
|
+
isLiability: boolean;
|
|
40
66
|
accounts: {
|
|
41
67
|
0: number | null;
|
|
42
68
|
1: number | null;
|
|
@@ -62,12 +88,26 @@ export declare class ShareClass extends Entity {
|
|
|
62
88
|
isMember: boolean;
|
|
63
89
|
validUntil: Date;
|
|
64
90
|
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Create a holding for a registered asset in the share class.
|
|
93
|
+
* @param assetId - Asset ID of the asset to create a holding for
|
|
94
|
+
* @param valuation - Valuation of the asset
|
|
95
|
+
* @param isLiability - Whether the holding is a liability or not
|
|
96
|
+
* @param accounts - Accounts to use for the holding. An asset or expense account will be created if not provided.
|
|
97
|
+
* Other accounts are expected to be provided or to exist in the pool metadata.
|
|
98
|
+
*/
|
|
99
|
+
createHolding<Liability extends boolean>(assetId: AssetId, valuation: HexString, isLiability: Liability, accounts: Liability extends true ? {
|
|
100
|
+
[key in AccountType.Expense | AccountType.Liability]?: number;
|
|
101
|
+
} : {
|
|
102
|
+
[key in AccountType.Asset | AccountType.Equity | AccountType.Loss | AccountType.Gain]?: number;
|
|
103
|
+
}): import("../index.js").Transaction;
|
|
104
|
+
updateSharePrice(pricePerShare: Price): import("../index.js").Transaction;
|
|
65
105
|
setMaxAssetPriceAge(assetId: AssetId, maxPriceAge: number): import("../index.js").Transaction;
|
|
66
106
|
setMaxSharePriceAge(chainId: number, maxPriceAge: number): import("../index.js").Transaction;
|
|
67
107
|
notifyAssetPrice(assetId: AssetId): import("../index.js").Transaction;
|
|
68
108
|
notifySharePrice(chainId: number): import("../index.js").Transaction;
|
|
69
|
-
approveDeposits(assetId: AssetId, assetAmount: Balance,
|
|
70
|
-
approveRedeems(assetId: AssetId, shareAmount: Balance,
|
|
109
|
+
approveDeposits(assetId: AssetId, assetAmount: Balance, pricePerShare: Price): import("../index.js").Transaction;
|
|
110
|
+
approveRedeems(assetId: AssetId, shareAmount: Balance, pricePerShare: Price): import("../index.js").Transaction;
|
|
71
111
|
claimDeposit(assetId: AssetId, investor: string): import("../index.js").Transaction;
|
|
72
112
|
claimRedeem(assetId: AssetId, investor: string): import("../index.js").Transaction;
|
|
73
113
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareClass.d.ts","sourceRoot":"","sources":["../../src/entities/ShareClass.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ShareClass.d.ts","sourceRoot":"","sources":["../../src/entities/ShareClass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAInD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGrC;;;GAGG;AACH,qBAAa,UAAW,SAAQ,MAAM;IAM3B,IAAI,EAAE,IAAI;IALnB,EAAE,EAAE,YAAY,CAAA;IAYhB;;;OAGG;IACH,OAAO;;;;;;;;IAiBP,aAAa;;;;;;IAgCb;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM;IAItB,QAAQ;;;;;;;;;;;;;;;;IAgDR;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;IAqExB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;;;;IAiDhD;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;IA2CvC;;;;;;;OAOG;IACH,aAAa,CAAC,SAAS,SAAS,OAAO,EACrC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,SAAS,SAAS,IAAI,GAC5B;SAAG,GAAG,IAAI,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM;KAAE,GACjE;SAAG,GAAG,IAAI,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM;KAAE;IAoGxG,gBAAgB,CAAC,aAAa,EAAE,KAAK;IAerC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM;IAezD,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAkBxD,gBAAgB,CAAC,OAAO,EAAE,OAAO;IAejC,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAkBhC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK;IAmD5E,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK;IAuC3E,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IA0B/C,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IAoB9C;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAgPlE"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { catchError, combineLatest, defer, map, of, switchMap } from 'rxjs';
|
|
1
|
+
import { catchError, combineLatest, defer, EMPTY, expand, filter, map, of, switchMap } from 'rxjs';
|
|
2
2
|
import { encodeFunctionData, encodePacked, getContract, parseAbi } from 'viem';
|
|
3
3
|
import { ABI } from '../abi/index.js';
|
|
4
4
|
import { AccountType } from '../types/holdings.js';
|
|
5
|
-
import { Balance } from '../utils/BigInt.js';
|
|
5
|
+
import { Balance, Price } from '../utils/BigInt.js';
|
|
6
6
|
import { addressToBytes32 } from '../utils/index.js';
|
|
7
7
|
import { repeatOnEvents } from '../utils/rx.js';
|
|
8
8
|
import { doTransaction } from '../utils/transaction.js';
|
|
9
|
-
import { ShareClassId } from '../utils/types.js';
|
|
9
|
+
import { AssetId, ShareClassId } from '../utils/types.js';
|
|
10
10
|
import { Entity } from './Entity.js';
|
|
11
11
|
import { PoolNetwork } from './PoolNetwork.js';
|
|
12
12
|
/**
|
|
@@ -33,10 +33,29 @@ export class ShareClass extends Entity {
|
|
|
33
33
|
name: metadata.name,
|
|
34
34
|
symbol: metadata.symbol,
|
|
35
35
|
totalIssuance: metrics.totalIssuance,
|
|
36
|
-
|
|
36
|
+
pricePerShare: metrics.pricePerShare,
|
|
37
|
+
nav: metrics.totalIssuance.mul(metrics.pricePerShare),
|
|
37
38
|
};
|
|
38
39
|
})));
|
|
39
40
|
}
|
|
41
|
+
navPerNetwork() {
|
|
42
|
+
return this._root._queryIndexer(`query ($scId: String!) {
|
|
43
|
+
tokenInstances(where: { tokenId: $scId }) {
|
|
44
|
+
items {
|
|
45
|
+
totalIssuance
|
|
46
|
+
tokenPrice
|
|
47
|
+
blockchain {
|
|
48
|
+
id
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}`, { scId: this.id.raw }, (data) => data.tokenInstances.items.map((item) => ({
|
|
53
|
+
chainId: item.blockchain.id,
|
|
54
|
+
totalIssuance: new Balance(item.totalIssuance, 18), // TODO: Replace with pool currency decimals
|
|
55
|
+
pricePerShare: new Price(item.tokenPrice),
|
|
56
|
+
nav: new Balance(item.totalIssuance, 18).mul(new Price(item.tokenPrice)),
|
|
57
|
+
})));
|
|
58
|
+
}
|
|
40
59
|
/**
|
|
41
60
|
* Query the vaults of the share class.
|
|
42
61
|
* @param chainId The chain ID to query the vaults on.
|
|
@@ -45,6 +64,29 @@ export class ShareClass extends Entity {
|
|
|
45
64
|
vaults(chainId) {
|
|
46
65
|
return this._query(null, () => new PoolNetwork(this._root, this.pool, chainId).vaults(this.id));
|
|
47
66
|
}
|
|
67
|
+
holdings() {
|
|
68
|
+
return this._query(null, () => this._root
|
|
69
|
+
._queryIndexer(`query ($scId: String!) {
|
|
70
|
+
holdings(where: { tokenId: $scId }) {
|
|
71
|
+
items {
|
|
72
|
+
assetAmount
|
|
73
|
+
assetId
|
|
74
|
+
assetPrice
|
|
75
|
+
assetValue
|
|
76
|
+
isLiability
|
|
77
|
+
valuation
|
|
78
|
+
tokenId
|
|
79
|
+
poolId
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}`, {
|
|
83
|
+
scId: this.id.raw,
|
|
84
|
+
})
|
|
85
|
+
.pipe(switchMap((res) => combineLatest(res.holdings.items.map((holding) => {
|
|
86
|
+
const assetId = new AssetId(holding.assetId);
|
|
87
|
+
return this.holding(assetId);
|
|
88
|
+
})))));
|
|
89
|
+
}
|
|
48
90
|
/**
|
|
49
91
|
* Query a holding of the share class.
|
|
50
92
|
* @param assetId The asset ID
|
|
@@ -57,7 +99,7 @@ export class ShareClass extends Entity {
|
|
|
57
99
|
abi: ABI.Holdings,
|
|
58
100
|
client: this._root.getClient(this.pool.chainId),
|
|
59
101
|
});
|
|
60
|
-
const [valuation, amount, value, assetDecimals, ...accounts] = await Promise.all([
|
|
102
|
+
const [valuation, amount, value, assetDecimals, isLiability, ...accounts] = await Promise.all([
|
|
61
103
|
holdings.read.valuation([this.pool.id.raw, this.id.raw, assetId.raw]),
|
|
62
104
|
holdings.read.amount([this.pool.id.raw, this.id.raw, assetId.raw]),
|
|
63
105
|
holdings.read.value([this.pool.id.raw, this.id.raw, assetId.raw]),
|
|
@@ -68,7 +110,7 @@ export class ShareClass extends Entity {
|
|
|
68
110
|
functionName: 'decimals',
|
|
69
111
|
args: [assetId.raw],
|
|
70
112
|
}),
|
|
71
|
-
|
|
113
|
+
holdings.read.isLiability([this.pool.id.raw, this.id.raw, assetId.raw]),
|
|
72
114
|
...[
|
|
73
115
|
AccountType.Asset,
|
|
74
116
|
AccountType.Equity,
|
|
@@ -84,7 +126,7 @@ export class ShareClass extends Entity {
|
|
|
84
126
|
valuation,
|
|
85
127
|
amount: new Balance(amount, assetDecimals),
|
|
86
128
|
value: new Balance(value, 18), // TODO: Replace with pool currency decimals
|
|
87
|
-
|
|
129
|
+
isLiability,
|
|
88
130
|
accounts: {
|
|
89
131
|
[AccountType.Asset]: accounts[0] || null,
|
|
90
132
|
[AccountType.Equity]: accounts[1] || null,
|
|
@@ -168,6 +210,125 @@ export class ShareClass extends Entity {
|
|
|
168
210
|
});
|
|
169
211
|
})))));
|
|
170
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Create a holding for a registered asset in the share class.
|
|
215
|
+
* @param assetId - Asset ID of the asset to create a holding for
|
|
216
|
+
* @param valuation - Valuation of the asset
|
|
217
|
+
* @param isLiability - Whether the holding is a liability or not
|
|
218
|
+
* @param accounts - Accounts to use for the holding. An asset or expense account will be created if not provided.
|
|
219
|
+
* Other accounts are expected to be provided or to exist in the pool metadata.
|
|
220
|
+
*/
|
|
221
|
+
createHolding(assetId, valuation, isLiability, accounts) {
|
|
222
|
+
const self = this;
|
|
223
|
+
return this._transactSequence(async function* ({ walletClient, publicClient }) {
|
|
224
|
+
const [{ hub }, metadata] = await Promise.all([
|
|
225
|
+
self._root._protocolAddresses(self.pool.chainId),
|
|
226
|
+
self.pool.metadata(),
|
|
227
|
+
]);
|
|
228
|
+
let tx;
|
|
229
|
+
if (isLiability) {
|
|
230
|
+
const expenseAccount = accounts[AccountType.Expense] || metadata?.defaultAccounts?.expense;
|
|
231
|
+
const liabilityAccount = accounts[AccountType.Liability] || metadata?.defaultAccounts?.liability;
|
|
232
|
+
if (liabilityAccount === undefined) {
|
|
233
|
+
throw new Error('Missing required accounts for liability creation');
|
|
234
|
+
}
|
|
235
|
+
if (expenseAccount) {
|
|
236
|
+
tx = walletClient.writeContract({
|
|
237
|
+
address: hub,
|
|
238
|
+
abi: ABI.Hub,
|
|
239
|
+
functionName: 'initializeLiability',
|
|
240
|
+
args: [self.pool.id.raw, self.id.raw, assetId.raw, valuation, expenseAccount, liabilityAccount],
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
const newExpenseAccount = await self._getFreeAccountId();
|
|
245
|
+
const createAccountData = encodeFunctionData({
|
|
246
|
+
abi: ABI.Hub,
|
|
247
|
+
functionName: 'createAccount',
|
|
248
|
+
args: [self.pool.id.raw, newExpenseAccount, true],
|
|
249
|
+
});
|
|
250
|
+
const initHoldingData = encodeFunctionData({
|
|
251
|
+
abi: ABI.Hub,
|
|
252
|
+
functionName: 'initializeLiability',
|
|
253
|
+
args: [self.pool.id.raw, self.id.raw, assetId.raw, valuation, newExpenseAccount, liabilityAccount],
|
|
254
|
+
});
|
|
255
|
+
tx = walletClient.writeContract({
|
|
256
|
+
address: hub,
|
|
257
|
+
abi: ABI.Hub,
|
|
258
|
+
functionName: 'multicall',
|
|
259
|
+
args: [[createAccountData, initHoldingData]],
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
const assetAccount = accounts[AccountType.Asset] || metadata?.defaultAccounts?.asset;
|
|
265
|
+
const equityAccount = accounts[AccountType.Equity] || metadata?.defaultAccounts?.equity;
|
|
266
|
+
const gainAccount = accounts[AccountType.Gain] || metadata?.defaultAccounts?.gain;
|
|
267
|
+
const lossAccount = accounts[AccountType.Loss] || metadata?.defaultAccounts?.loss;
|
|
268
|
+
if (equityAccount === undefined || gainAccount === undefined || lossAccount === undefined) {
|
|
269
|
+
throw new Error('Missing required accounts for holding creation');
|
|
270
|
+
}
|
|
271
|
+
if (assetAccount) {
|
|
272
|
+
tx = walletClient.writeContract({
|
|
273
|
+
address: hub,
|
|
274
|
+
abi: ABI.Hub,
|
|
275
|
+
functionName: 'initializeHolding',
|
|
276
|
+
args: [
|
|
277
|
+
self.pool.id.raw,
|
|
278
|
+
self.id.raw,
|
|
279
|
+
assetId.raw,
|
|
280
|
+
valuation,
|
|
281
|
+
assetAccount,
|
|
282
|
+
equityAccount,
|
|
283
|
+
gainAccount,
|
|
284
|
+
lossAccount,
|
|
285
|
+
],
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
const newAssetAccount = await self._getFreeAccountId();
|
|
290
|
+
const createAccountData = encodeFunctionData({
|
|
291
|
+
abi: ABI.Hub,
|
|
292
|
+
functionName: 'createAccount',
|
|
293
|
+
args: [self.pool.id.raw, newAssetAccount, false],
|
|
294
|
+
});
|
|
295
|
+
const initHoldingData = encodeFunctionData({
|
|
296
|
+
abi: ABI.Hub,
|
|
297
|
+
functionName: 'initializeHolding',
|
|
298
|
+
args: [
|
|
299
|
+
self.pool.id.raw,
|
|
300
|
+
self.id.raw,
|
|
301
|
+
assetId.raw,
|
|
302
|
+
valuation,
|
|
303
|
+
newAssetAccount,
|
|
304
|
+
equityAccount,
|
|
305
|
+
gainAccount,
|
|
306
|
+
lossAccount,
|
|
307
|
+
],
|
|
308
|
+
});
|
|
309
|
+
tx = walletClient.writeContract({
|
|
310
|
+
address: hub,
|
|
311
|
+
abi: ABI.Hub,
|
|
312
|
+
functionName: 'multicall',
|
|
313
|
+
args: [[createAccountData, initHoldingData]],
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
yield* doTransaction('Create holding', publicClient, () => tx);
|
|
318
|
+
}, this.pool.chainId);
|
|
319
|
+
}
|
|
320
|
+
updateSharePrice(pricePerShare) {
|
|
321
|
+
const self = this;
|
|
322
|
+
return this._transactSequence(async function* ({ walletClient, publicClient }) {
|
|
323
|
+
const { hub } = await self._root._protocolAddresses(self.pool.chainId);
|
|
324
|
+
yield* doTransaction('Update price', publicClient, () => walletClient.writeContract({
|
|
325
|
+
address: hub,
|
|
326
|
+
abi: ABI.Hub,
|
|
327
|
+
functionName: 'updateSharePrice',
|
|
328
|
+
args: [self.pool.id.raw, self.id.raw, pricePerShare.toBigInt()],
|
|
329
|
+
}));
|
|
330
|
+
}, this.pool.chainId);
|
|
331
|
+
}
|
|
171
332
|
setMaxAssetPriceAge(assetId, maxPriceAge) {
|
|
172
333
|
const self = this;
|
|
173
334
|
return this._transactSequence(async function* ({ walletClient, publicClient }) {
|
|
@@ -222,7 +383,7 @@ export class ShareClass extends Entity {
|
|
|
222
383
|
}));
|
|
223
384
|
}, this.pool.chainId);
|
|
224
385
|
}
|
|
225
|
-
approveDeposits(assetId, assetAmount,
|
|
386
|
+
approveDeposits(assetId, assetAmount, pricePerShare) {
|
|
226
387
|
const self = this;
|
|
227
388
|
return this._transactSequence(async function* ({ walletClient, publicClient }) {
|
|
228
389
|
const [{ hub }, epoch, estimate] = await Promise.all([
|
|
@@ -250,7 +411,7 @@ export class ShareClass extends Entity {
|
|
|
250
411
|
const issueData = encodeFunctionData({
|
|
251
412
|
abi: ABI.Hub,
|
|
252
413
|
functionName: 'issueShares',
|
|
253
|
-
args: [self.pool.id.raw, self.id.raw, assetId.raw, epoch.issueEpoch,
|
|
414
|
+
args: [self.pool.id.raw, self.id.raw, assetId.raw, epoch.issueEpoch, pricePerShare.toBigInt()],
|
|
254
415
|
});
|
|
255
416
|
yield* doTransaction('Approve deposits', publicClient, () => walletClient.writeContract({
|
|
256
417
|
address: hub,
|
|
@@ -268,7 +429,7 @@ export class ShareClass extends Entity {
|
|
|
268
429
|
}));
|
|
269
430
|
}, this.pool.chainId);
|
|
270
431
|
}
|
|
271
|
-
approveRedeems(assetId, shareAmount,
|
|
432
|
+
approveRedeems(assetId, shareAmount, pricePerShare) {
|
|
272
433
|
const self = this;
|
|
273
434
|
return this._transactSequence(async function* ({ walletClient, publicClient }) {
|
|
274
435
|
const [{ hub }, epoch, estimate] = await Promise.all([
|
|
@@ -291,7 +452,7 @@ export class ShareClass extends Entity {
|
|
|
291
452
|
const issueData = encodeFunctionData({
|
|
292
453
|
abi: ABI.Hub,
|
|
293
454
|
functionName: 'revokeShares',
|
|
294
|
-
args: [self.pool.id.raw, self.id.raw, assetId.raw, epoch.revokeEpoch,
|
|
455
|
+
args: [self.pool.id.raw, self.id.raw, assetId.raw, epoch.revokeEpoch, pricePerShare.toBigInt()],
|
|
295
456
|
});
|
|
296
457
|
yield* doTransaction('Approve redeems', publicClient, () => walletClient.writeContract({
|
|
297
458
|
address: hub,
|
|
@@ -393,7 +554,7 @@ export class ShareClass extends Entity {
|
|
|
393
554
|
/** @internal */
|
|
394
555
|
_metrics() {
|
|
395
556
|
return this._query(['metrics'], () => this._root._protocolAddresses(this.pool.chainId).pipe(switchMap(({ shareClassManager }) => defer(async () => {
|
|
396
|
-
const [totalIssuance,
|
|
557
|
+
const [totalIssuance, pricePerShare] = await this._root.getClient(this.pool.chainId).readContract({
|
|
397
558
|
address: shareClassManager,
|
|
398
559
|
abi: ABI.ShareClassManager,
|
|
399
560
|
functionName: 'metrics',
|
|
@@ -401,7 +562,7 @@ export class ShareClass extends Entity {
|
|
|
401
562
|
});
|
|
402
563
|
return {
|
|
403
564
|
totalIssuance: new Balance(totalIssuance, 18),
|
|
404
|
-
|
|
565
|
+
pricePerShare: new Price(pricePerShare),
|
|
405
566
|
};
|
|
406
567
|
}).pipe(repeatOnEvents(this._root, {
|
|
407
568
|
address: shareClassManager,
|
|
@@ -503,5 +664,30 @@ export class ShareClass extends Entity {
|
|
|
503
664
|
return address.toLowerCase();
|
|
504
665
|
}))));
|
|
505
666
|
}
|
|
667
|
+
/** @internal */
|
|
668
|
+
_getFreeAccountId() {
|
|
669
|
+
return this._query(null, () => this._root._protocolAddresses(this.pool.chainId).pipe(map(({ accounting }) => ({ accounting, id: null, triesLeft: 10 })), expand(({ accounting, triesLeft }) => {
|
|
670
|
+
const id = randomUint32();
|
|
671
|
+
if (triesLeft <= 0)
|
|
672
|
+
return EMPTY;
|
|
673
|
+
return defer(async () => {
|
|
674
|
+
const exists = await this._root.getClient(this.pool.chainId).readContract({
|
|
675
|
+
address: accounting,
|
|
676
|
+
abi: ABI.Accounting,
|
|
677
|
+
functionName: 'exists',
|
|
678
|
+
args: [this.pool.id.raw, id],
|
|
679
|
+
});
|
|
680
|
+
return { accounting, id: exists ? null : id, triesLeft: triesLeft - 1 };
|
|
681
|
+
});
|
|
682
|
+
}), filter(({ id }) => !!id), map(({ id }) => id)));
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
function randomUint32() {
|
|
686
|
+
if (typeof globalThis.crypto === 'undefined') {
|
|
687
|
+
return Math.floor(Math.random() * 0x100000000);
|
|
688
|
+
}
|
|
689
|
+
const array = new Uint32Array(1);
|
|
690
|
+
globalThis.crypto.getRandomValues(array);
|
|
691
|
+
return array[0];
|
|
506
692
|
}
|
|
507
693
|
//# sourceMappingURL=ShareClass.js.map
|