vestberry-cli 0.1.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.
- package/LICENSE +21 -0
- package/README.md +186 -0
- package/dist/api/client.d.ts +8 -0
- package/dist/api/client.js +57 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/endpoints/auth.d.ts +6 -0
- package/dist/api/endpoints/auth.js +9 -0
- package/dist/api/endpoints/auth.js.map +1 -0
- package/dist/api/endpoints/companies.d.ts +8 -0
- package/dist/api/endpoints/companies.js +34 -0
- package/dist/api/endpoints/companies.js.map +1 -0
- package/dist/api/endpoints/funds.d.ts +10 -0
- package/dist/api/endpoints/funds.js +293 -0
- package/dist/api/endpoints/funds.js.map +1 -0
- package/dist/api/endpoints/meta.d.ts +4 -0
- package/dist/api/endpoints/meta.js +48 -0
- package/dist/api/endpoints/meta.js.map +1 -0
- package/dist/api/endpoints/metrics.d.ts +33 -0
- package/dist/api/endpoints/metrics.js +306 -0
- package/dist/api/endpoints/metrics.js.map +1 -0
- package/dist/api/endpoints/notes.d.ts +10 -0
- package/dist/api/endpoints/notes.js +63 -0
- package/dist/api/endpoints/notes.js.map +1 -0
- package/dist/api/endpoints/portco-dashboard.d.ts +6 -0
- package/dist/api/endpoints/portco-dashboard.js +123 -0
- package/dist/api/endpoints/portco-dashboard.js.map +1 -0
- package/dist/api/endpoints/raw.d.ts +3 -0
- package/dist/api/endpoints/raw.js +22 -0
- package/dist/api/endpoints/raw.js.map +1 -0
- package/dist/api/endpoints/reports.d.ts +5 -0
- package/dist/api/endpoints/reports.js +104 -0
- package/dist/api/endpoints/reports.js.map +1 -0
- package/dist/api/graphql.d.ts +7 -0
- package/dist/api/graphql.js +32 -0
- package/dist/api/graphql.js.map +1 -0
- package/dist/api/introspection.d.ts +2 -0
- package/dist/api/introspection.js +62 -0
- package/dist/api/introspection.js.map +1 -0
- package/dist/api/types.d.ts +32 -0
- package/dist/api/types.js +18 -0
- package/dist/api/types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +57 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth.d.ts +2 -0
- package/dist/commands/auth.js +27 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/captable-event.d.ts +2 -0
- package/dist/commands/captable-event.js +31 -0
- package/dist/commands/captable-event.js.map +1 -0
- package/dist/commands/common.d.ts +17 -0
- package/dist/commands/common.js +46 -0
- package/dist/commands/common.js.map +1 -0
- package/dist/commands/fund.d.ts +2 -0
- package/dist/commands/fund.js +87 -0
- package/dist/commands/fund.js.map +1 -0
- package/dist/commands/intent/index.d.ts +2 -0
- package/dist/commands/intent/index.js +286 -0
- package/dist/commands/intent/index.js.map +1 -0
- package/dist/commands/investment.d.ts +2 -0
- package/dist/commands/investment.js +51 -0
- package/dist/commands/investment.js.map +1 -0
- package/dist/commands/kpi.d.ts +2 -0
- package/dist/commands/kpi.js +113 -0
- package/dist/commands/kpi.js.map +1 -0
- package/dist/commands/meta.d.ts +2 -0
- package/dist/commands/meta.js +64 -0
- package/dist/commands/meta.js.map +1 -0
- package/dist/commands/note.d.ts +2 -0
- package/dist/commands/note.js +113 -0
- package/dist/commands/note.js.map +1 -0
- package/dist/commands/portco.d.ts +2 -0
- package/dist/commands/portco.js +26 -0
- package/dist/commands/portco.js.map +1 -0
- package/dist/commands/portfolio-company.d.ts +2 -0
- package/dist/commands/portfolio-company.js +48 -0
- package/dist/commands/portfolio-company.js.map +1 -0
- package/dist/commands/portfolio-summary.d.ts +18 -0
- package/dist/commands/portfolio-summary.js +334 -0
- package/dist/commands/portfolio-summary.js.map +1 -0
- package/dist/commands/raw.d.ts +2 -0
- package/dist/commands/raw.js +57 -0
- package/dist/commands/raw.js.map +1 -0
- package/dist/commands/round.d.ts +2 -0
- package/dist/commands/round.js +68 -0
- package/dist/commands/round.js.map +1 -0
- package/dist/commands/schema.d.ts +2 -0
- package/dist/commands/schema.js +27 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/stakeholder.d.ts +2 -0
- package/dist/commands/stakeholder.js +50 -0
- package/dist/commands/stakeholder.js.map +1 -0
- package/dist/formatters/csv.d.ts +1 -0
- package/dist/formatters/csv.js +16 -0
- package/dist/formatters/csv.js.map +1 -0
- package/dist/formatters/json.d.ts +1 -0
- package/dist/formatters/json.js +7 -0
- package/dist/formatters/json.js.map +1 -0
- package/dist/formatters/table.d.ts +1 -0
- package/dist/formatters/table.js +31 -0
- package/dist/formatters/table.js.map +1 -0
- package/dist/resolvers/company.d.ts +7 -0
- package/dist/resolvers/company.js +22 -0
- package/dist/resolvers/company.js.map +1 -0
- package/dist/resolvers/fund.d.ts +7 -0
- package/dist/resolvers/fund.js +22 -0
- package/dist/resolvers/fund.js.map +1 -0
- package/dist/resolvers/round.d.ts +8 -0
- package/dist/resolvers/round.js +25 -0
- package/dist/resolvers/round.js.map +1 -0
- package/dist/resolvers/search.d.ts +6 -0
- package/dist/resolvers/search.js +57 -0
- package/dist/resolvers/search.js.map +1 -0
- package/dist/resolvers/stakeholder.d.ts +7 -0
- package/dist/resolvers/stakeholder.js +22 -0
- package/dist/resolvers/stakeholder.js.map +1 -0
- package/dist/utils/cache.d.ts +7 -0
- package/dist/utils/cache.js +18 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/config.d.ts +16 -0
- package/dist/utils/config.js +25 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/errors.d.ts +12 -0
- package/dist/utils/errors.js +24 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/flatten.d.ts +3 -0
- package/dist/utils/flatten.js +77 -0
- package/dist/utils/flatten.js.map +1 -0
- package/dist/utils/json-export.d.ts +10 -0
- package/dist/utils/json-export.js +53 -0
- package/dist/utils/json-export.js.map +1 -0
- package/dist/utils/output.d.ts +4 -0
- package/dist/utils/output.js +63 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/pagination.d.ts +12 -0
- package/dist/utils/pagination.js +46 -0
- package/dist/utils/pagination.js.map +1 -0
- package/dist/utils/parse-json.d.ts +2 -0
- package/dist/utils/parse-json.js +34 -0
- package/dist/utils/parse-json.js.map +1 -0
- package/dist/utils/portfolio-overview.d.ts +25 -0
- package/dist/utils/portfolio-overview.js +115 -0
- package/dist/utils/portfolio-overview.js.map +1 -0
- package/dist/utils/run-log.d.ts +1 -0
- package/dist/utils/run-log.js +17 -0
- package/dist/utils/run-log.js.map +1 -0
- package/package.json +70 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# vestberry-cli
|
|
2
|
+
|
|
3
|
+
Production-grade GraphQL CLI for Vestberry with two layers:
|
|
4
|
+
|
|
5
|
+
- Layer A: primitive read/write commands
|
|
6
|
+
- Layer B: intent/orchestration commands for agent workflows
|
|
7
|
+
|
|
8
|
+
## Install from npm
|
|
9
|
+
|
|
10
|
+
Requirements:
|
|
11
|
+
- Node.js `>=18` (Node `20` recommended)
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g vestberry-cli
|
|
15
|
+
vestberry --help
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## From source
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install
|
|
22
|
+
npm run build
|
|
23
|
+
npm link
|
|
24
|
+
vestberry --help
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Auth
|
|
28
|
+
|
|
29
|
+
Create `.env`:
|
|
30
|
+
|
|
31
|
+
```env
|
|
32
|
+
VESTBERRY_API_KEY=...
|
|
33
|
+
VESTBERRY_API_BASE_URL=https://api.vestberry.com/graphql
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
## Global Flags
|
|
38
|
+
|
|
39
|
+
- `--api-key <key>`
|
|
40
|
+
- `--format json|table|csv` (default `json`)
|
|
41
|
+
- `--compact` / `--no-compact` (default compact)
|
|
42
|
+
- `--verbose`
|
|
43
|
+
- `--dry-run`
|
|
44
|
+
|
|
45
|
+
## Command Layers
|
|
46
|
+
|
|
47
|
+
### Layer A: Primitive Wrappers
|
|
48
|
+
|
|
49
|
+
Thin wrappers around single API operations. Use these when you want direct control over query inputs and raw response shapes.
|
|
50
|
+
|
|
51
|
+
- `auth test`
|
|
52
|
+
- `raw gql`, `raw http`
|
|
53
|
+
- `fund list|get|get-portco-list|search`
|
|
54
|
+
- `portfolio-company get|search`
|
|
55
|
+
- `fund get-summary`
|
|
56
|
+
- `portco dashboard`
|
|
57
|
+
- `investment list|search`
|
|
58
|
+
- `round list|get|search`
|
|
59
|
+
- `captable-event list`
|
|
60
|
+
- `stakeholder list|search`
|
|
61
|
+
- `kpi overview|definitions|reports|values`
|
|
62
|
+
- `note list|create|update`
|
|
63
|
+
- `meta countries|currencies|fx-rates`
|
|
64
|
+
|
|
65
|
+
Examples:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
vestberry auth test
|
|
69
|
+
vestberry schema pull
|
|
70
|
+
vestberry fund list
|
|
71
|
+
vestberry fund search --query "Sample Growth Fund"
|
|
72
|
+
vestberry fund get <fund-id>
|
|
73
|
+
vestberry fund get <fund-id> --full
|
|
74
|
+
vestberry fund get-portco-list <fund-id>
|
|
75
|
+
vestberry fund get-summary <fund-id>
|
|
76
|
+
vestberry fund get-summary <fund-id> --full
|
|
77
|
+
vestberry fund get-summary <fund-id> --select id,investmentName,irr,multiple
|
|
78
|
+
vestberry fund get-summary <fund-id> --select portfolioCompanies.id,portfolioCompanies.irr,summary.irr
|
|
79
|
+
vestberry fund get-summary <fund-id> --export-json
|
|
80
|
+
vestberry portfolio-company search --fund-id <fund-id> --query "Sample Co"
|
|
81
|
+
vestberry portco dashboard <fund-id> <portco-id>
|
|
82
|
+
vestberry kpi overview --fund-id <fund-id>
|
|
83
|
+
vestberry round list --company-id <company-id>
|
|
84
|
+
vestberry captable-event list --company-id <company-id>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Layer B: Advanced Intent Commands
|
|
88
|
+
|
|
89
|
+
Composed workflows that orchestrate multiple primitives and return opinionated output for common tasks.
|
|
90
|
+
|
|
91
|
+
- `portfolio overview`
|
|
92
|
+
- `portfolio companies`
|
|
93
|
+
- `company dossier`
|
|
94
|
+
- `rounds last-quarter`
|
|
95
|
+
- `invested total`
|
|
96
|
+
- `ingest legal-docs`
|
|
97
|
+
|
|
98
|
+
Examples:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
vestberry portfolio overview --fund-id <fund-id> --cut-off-date 2025-12-31 --export-json
|
|
102
|
+
vestberry portfolio companies --fund-id <fund-id>
|
|
103
|
+
vestberry company dossier --company-id <company-id> --fund-id <fund-id> --full
|
|
104
|
+
vestberry rounds last-quarter --fund-id <fund-id>
|
|
105
|
+
vestberry invested total --company "Company" --fund "Fund"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Output Formats
|
|
109
|
+
|
|
110
|
+
- `json`: default, list envelope includes pagination
|
|
111
|
+
- `table`: flattened rows
|
|
112
|
+
- `csv`: flattened rows
|
|
113
|
+
|
|
114
|
+
## Compact Formatting
|
|
115
|
+
|
|
116
|
+
Compact mode strips non-essential metadata and simplifies nested fields.
|
|
117
|
+
Disable with `--no-compact`.
|
|
118
|
+
|
|
119
|
+
## Portfolio Overview Export
|
|
120
|
+
|
|
121
|
+
Use `--export-json [path]` on `portfolio overview` to write the payload to disk instead of printing full JSON to terminal.
|
|
122
|
+
|
|
123
|
+
- `vestberry portfolio overview --fund-id <fund-id> --export-json`
|
|
124
|
+
- `vestberry portfolio overview --fund-id <fund-id> --cut-off-date 2025-12-31 --export-json`
|
|
125
|
+
- `vestberry portfolio overview --fund-id <fund-id> --export-json ./tmp/overview.json`
|
|
126
|
+
|
|
127
|
+
When no path is provided, files are saved in `output/` with naming:
|
|
128
|
+
`<timestamp>-portfolio-overview-fund-id-<fund-id>.json`
|
|
129
|
+
|
|
130
|
+
Export payload structure:
|
|
131
|
+
- `cutOffDate` (replaces `until`)
|
|
132
|
+
- `fund` (`id`, `name`)
|
|
133
|
+
- `performance` (`numberOfCashFlows`, `numberOfNAVs`, `balance`, `tvpi`, `dpi`, `rvpi`, `netIrr`)
|
|
134
|
+
- `portfolioCompanies` (flattened dashboard metrics preferring `fund`, then `gp`, then `local`; single latest `latestInvestmentRoundDate`)
|
|
135
|
+
|
|
136
|
+
For `fund get-summary`, JSON output/export uses:
|
|
137
|
+
- `portfolioCompanies` (instead of `data`)
|
|
138
|
+
- flattened company rows: `portfolioCompany.*` and `dashboardDetails.*` moved one level up
|
|
139
|
+
- company rows exclude redundant `portfolioCompanyCompanyId` and exclude `portfolioFund`
|
|
140
|
+
- flattened `summary`: `dashboardDetails.*` moved one level up
|
|
141
|
+
- `summary.id` is set to the queried fund id
|
|
142
|
+
- optional `--select <fields>` projection for prosumer/agent use:
|
|
143
|
+
- unscoped fields (e.g. `id,irr`) are applied where available
|
|
144
|
+
- scoped fields: `portfolioCompanies.<field>` and `summary.<field>`
|
|
145
|
+
|
|
146
|
+
Rows are filtered to non-empty `id` and non-empty `portfolioCompany.id`; aggregate `TOTAL` is exposed as top-level `summary` when present.
|
|
147
|
+
|
|
148
|
+
## Write Safety
|
|
149
|
+
|
|
150
|
+
Mutations are dry-run by default.
|
|
151
|
+
For write commands, pass `--apply --no-dry-run` to execute.
|
|
152
|
+
Run logs are written to `.cache/runs/`.
|
|
153
|
+
|
|
154
|
+
## Development
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
npm run dev -- --help
|
|
158
|
+
npm run type-check
|
|
159
|
+
npm run lint
|
|
160
|
+
npm run test
|
|
161
|
+
npm run build
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Publishing (maintainers)
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm run verify
|
|
168
|
+
npm pack --dry-run
|
|
169
|
+
npm publish
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Integration tests (live API):
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
npm run test:integration
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Troubleshooting
|
|
179
|
+
|
|
180
|
+
- 401/403: verify API key and base URL
|
|
181
|
+
- GraphQL field errors: run `vestberry schema pull` and use `raw gql` for discovery
|
|
182
|
+
- Empty arrays can be valid (for sparse KPI/report datasets)
|
|
183
|
+
|
|
184
|
+
## License
|
|
185
|
+
|
|
186
|
+
MIT
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AxiosInstance, AxiosResponse } from 'axios';
|
|
2
|
+
export interface RetryOptions {
|
|
3
|
+
retries?: number;
|
|
4
|
+
minDelayMs?: number;
|
|
5
|
+
maxDelayMs?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function createApiClient(baseURL: string, apiKey: string): AxiosInstance;
|
|
8
|
+
export declare function requestWithRetry<T>(call: () => Promise<AxiosResponse<T>>, options?: RetryOptions): Promise<AxiosResponse<T>>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createApiClient = createApiClient;
|
|
7
|
+
exports.requestWithRetry = requestWithRetry;
|
|
8
|
+
const axios_1 = __importDefault(require("axios"));
|
|
9
|
+
const RETRY_CODES = new Set([429, 502, 503, 504]);
|
|
10
|
+
function createApiClient(baseURL, apiKey) {
|
|
11
|
+
const client = axios_1.default.create({
|
|
12
|
+
baseURL,
|
|
13
|
+
headers: {
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
},
|
|
16
|
+
timeout: 30_000,
|
|
17
|
+
});
|
|
18
|
+
client.interceptors.request.use((config) => {
|
|
19
|
+
config.headers.Authorization = `Bearer ${apiKey}`;
|
|
20
|
+
return config;
|
|
21
|
+
});
|
|
22
|
+
return client;
|
|
23
|
+
}
|
|
24
|
+
function wait(ms) {
|
|
25
|
+
return new Promise((resolve) => {
|
|
26
|
+
setTimeout(resolve, ms);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function nextDelay(attempt, minDelay, maxDelay) {
|
|
30
|
+
const exp = minDelay * 2 ** attempt;
|
|
31
|
+
const jitter = Math.floor(Math.random() * 150);
|
|
32
|
+
return Math.min(exp + jitter, maxDelay);
|
|
33
|
+
}
|
|
34
|
+
async function requestWithRetry(call, options = {}) {
|
|
35
|
+
const retries = options.retries ?? 4;
|
|
36
|
+
const minDelay = options.minDelayMs ?? 300;
|
|
37
|
+
const maxDelay = options.maxDelayMs ?? 5_000;
|
|
38
|
+
let attempt = 0;
|
|
39
|
+
let lastError;
|
|
40
|
+
while (attempt <= retries) {
|
|
41
|
+
try {
|
|
42
|
+
return await call();
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
const status = error?.response?.status;
|
|
46
|
+
if (status === undefined || !RETRY_CODES.has(status) || attempt === retries) {
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
lastError = error;
|
|
50
|
+
const delay = nextDelay(attempt, minDelay, maxDelay);
|
|
51
|
+
await wait(delay);
|
|
52
|
+
attempt += 1;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
throw lastError;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":";;;;;AAUA,0CAeC;AAcD,4CA2BC;AAlED,kDAA4D;AAE5D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAQlD,SAAgB,eAAe,CAAC,OAAe,EAAE,MAAc;IAC7D,MAAM,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;QAC1B,OAAO;QACP,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACzC,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,IAAI,CAAC,EAAU;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,QAAgB,EAAE,QAAgB;IACpE,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,IAAqC,EACrC,UAAwB,EAAE;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;IAE7C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAkB,CAAC;IAEvB,OAAO,OAAO,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,MAA4B,CAAC;YAC7D,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC5E,MAAM,KAAK,CAAC;YACd,CAAC;YACD,SAAS,GAAG,KAAK,CAAC;YAClB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authTest = authTest;
|
|
4
|
+
const graphql_1 = require("../graphql");
|
|
5
|
+
async function authTest(client, verbose = false) {
|
|
6
|
+
const query = `query AuthTest { __typename }`;
|
|
7
|
+
return (0, graphql_1.executeGraphQL)(client, { query }, verbose);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/api/endpoints/auth.ts"],"names":[],"mappings":";;AAOA,4BAGC;AATD,wCAA4C;AAMrC,KAAK,UAAU,QAAQ,CAAC,MAAqB,EAAE,OAAO,GAAG,KAAK;IACnE,MAAM,KAAK,GAAG,+BAA+B,CAAC;IAC9C,OAAO,IAAA,wBAAc,EAAmB,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
export interface PortfolioCompany {
|
|
3
|
+
id: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare function listPortfolioCompanies(client: AxiosInstance, fundId: string, verbose?: boolean): Promise<PortfolioCompany[]>;
|
|
8
|
+
export declare function getPortfolioCompany(client: AxiosInstance, fundId: string, companyId: string, verbose?: boolean): Promise<PortfolioCompany>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listPortfolioCompanies = listPortfolioCompanies;
|
|
4
|
+
exports.getPortfolioCompany = getPortfolioCompany;
|
|
5
|
+
const graphql_1 = require("../graphql");
|
|
6
|
+
async function listPortfolioCompanies(client, fundId, verbose = false) {
|
|
7
|
+
const query = `
|
|
8
|
+
query PortfolioCompanies($input: PortfolioCompaniesInput) {
|
|
9
|
+
portfolioCompanies(input: $input) {
|
|
10
|
+
id
|
|
11
|
+
displayName
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
const data = await (0, graphql_1.executeGraphQL)(client, { query, variables: { input: { fund: { id: fundId } } } }, verbose);
|
|
16
|
+
return data.portfolioCompanies ?? [];
|
|
17
|
+
}
|
|
18
|
+
async function getPortfolioCompany(client, fundId, companyId, verbose = false) {
|
|
19
|
+
const query = `
|
|
20
|
+
query PortfolioCompany($input: GetPortfolioCompanyInput) {
|
|
21
|
+
portfolioCompany(input: $input) {
|
|
22
|
+
id
|
|
23
|
+
displayName
|
|
24
|
+
description
|
|
25
|
+
email
|
|
26
|
+
phone
|
|
27
|
+
web
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
`;
|
|
31
|
+
const data = await (0, graphql_1.executeGraphQL)(client, { query, variables: { input: { fund: { id: fundId }, id: companyId } } }, verbose);
|
|
32
|
+
return data.portfolioCompany;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=companies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companies.js","sourceRoot":"","sources":["../../../src/api/endpoints/companies.ts"],"names":[],"mappings":";;AAiBA,wDAqBC;AAED,kDA0BC;AAjED,wCAA4C;AAgBrC,KAAK,UAAU,sBAAsB,CAC1C,MAAqB,EACrB,MAAc,EACd,OAAO,GAAG,KAAK;IAEf,MAAM,KAAK,GAAG;;;;;;;GAOb,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAc,EAC/B,MAAM,EACN,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EACzD,OAAO,CACR,CAAC;IAEF,OAAO,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC;AACvC,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,MAAqB,EACrB,MAAc,EACd,SAAiB,EACjB,OAAO,GAAG,KAAK;IAEf,MAAM,KAAK,GAAG;;;;;;;;;;;GAWb,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAc,EAC/B,MAAM,EACN,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EACxE,OAAO,CACR,CAAC;IAEF,OAAO,IAAI,CAAC,gBAAgB,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
export interface Fund {
|
|
3
|
+
id: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
vintageYear?: number | null;
|
|
6
|
+
order?: number | null;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
9
|
+
export declare function listFunds(client: AxiosInstance, input?: Record<string, unknown>, verbose?: boolean): Promise<Fund[]>;
|
|
10
|
+
export declare function getFund(client: AxiosInstance, id: string, verbose?: boolean, full?: boolean): Promise<Fund>;
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listFunds = listFunds;
|
|
4
|
+
exports.getFund = getFund;
|
|
5
|
+
const graphql_1 = require("../graphql");
|
|
6
|
+
function hasNonEmptyId(value) {
|
|
7
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
8
|
+
}
|
|
9
|
+
function normalizeFund(fund) {
|
|
10
|
+
const portfolioSummaryRaw = fund.portfolioSummary;
|
|
11
|
+
if (!Array.isArray(portfolioSummaryRaw)) {
|
|
12
|
+
return fund;
|
|
13
|
+
}
|
|
14
|
+
const portfolioSummary = portfolioSummaryRaw.filter((row) => {
|
|
15
|
+
if (!row || typeof row !== 'object' || Array.isArray(row)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return hasNonEmptyId(row.id);
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
...fund,
|
|
22
|
+
portfolioSummary,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const FUND_BASE_FIELDS = `
|
|
26
|
+
id
|
|
27
|
+
displayName
|
|
28
|
+
fullLegalName
|
|
29
|
+
legalForm
|
|
30
|
+
companyId
|
|
31
|
+
taxId
|
|
32
|
+
vatId
|
|
33
|
+
incorporationDate
|
|
34
|
+
domicileAddress
|
|
35
|
+
domicileCity
|
|
36
|
+
domicileZip
|
|
37
|
+
web
|
|
38
|
+
phone
|
|
39
|
+
email
|
|
40
|
+
description
|
|
41
|
+
companyDescription
|
|
42
|
+
legalName
|
|
43
|
+
name
|
|
44
|
+
address
|
|
45
|
+
city
|
|
46
|
+
zip
|
|
47
|
+
createdAt
|
|
48
|
+
geographicFocus
|
|
49
|
+
fundSize
|
|
50
|
+
investableCapital
|
|
51
|
+
firstClosingDate
|
|
52
|
+
finalClosingDate
|
|
53
|
+
vintageYear
|
|
54
|
+
reportingPeriodicity
|
|
55
|
+
strategy
|
|
56
|
+
isGuest
|
|
57
|
+
terminationDate
|
|
58
|
+
fxConsolidationDate
|
|
59
|
+
sellingMethod
|
|
60
|
+
costCalcMethod
|
|
61
|
+
fundSizeOther
|
|
62
|
+
operatingCurrency {
|
|
63
|
+
id
|
|
64
|
+
name
|
|
65
|
+
code
|
|
66
|
+
symbol
|
|
67
|
+
}
|
|
68
|
+
currency {
|
|
69
|
+
id
|
|
70
|
+
name
|
|
71
|
+
code
|
|
72
|
+
symbol
|
|
73
|
+
}
|
|
74
|
+
country {
|
|
75
|
+
id
|
|
76
|
+
name
|
|
77
|
+
code
|
|
78
|
+
displayName
|
|
79
|
+
}
|
|
80
|
+
domicileCountry {
|
|
81
|
+
id
|
|
82
|
+
name
|
|
83
|
+
code
|
|
84
|
+
displayName
|
|
85
|
+
}
|
|
86
|
+
domicileRegion {
|
|
87
|
+
id
|
|
88
|
+
name
|
|
89
|
+
level
|
|
90
|
+
}
|
|
91
|
+
investmentStages {
|
|
92
|
+
id
|
|
93
|
+
name
|
|
94
|
+
}
|
|
95
|
+
`;
|
|
96
|
+
const FUND_FULL_FIELDS = `
|
|
97
|
+
${FUND_BASE_FIELDS}
|
|
98
|
+
logo {
|
|
99
|
+
id
|
|
100
|
+
mime
|
|
101
|
+
type
|
|
102
|
+
name
|
|
103
|
+
path
|
|
104
|
+
pathWithoutAttachment
|
|
105
|
+
thumbnail
|
|
106
|
+
size
|
|
107
|
+
tags
|
|
108
|
+
created
|
|
109
|
+
canBeDeleted
|
|
110
|
+
}
|
|
111
|
+
employees {
|
|
112
|
+
id
|
|
113
|
+
email
|
|
114
|
+
firstName
|
|
115
|
+
lastName
|
|
116
|
+
isLimitedPartner
|
|
117
|
+
isLPPortalUser
|
|
118
|
+
type
|
|
119
|
+
isAdmin
|
|
120
|
+
receiveReminders
|
|
121
|
+
debtMaturityReminders
|
|
122
|
+
position
|
|
123
|
+
}
|
|
124
|
+
aclTemplates {
|
|
125
|
+
id
|
|
126
|
+
name
|
|
127
|
+
createdAt
|
|
128
|
+
updatedAt
|
|
129
|
+
}
|
|
130
|
+
portfolioInvestments {
|
|
131
|
+
id
|
|
132
|
+
displayName
|
|
133
|
+
fullLegalName
|
|
134
|
+
legalForm
|
|
135
|
+
companyId
|
|
136
|
+
taxId
|
|
137
|
+
vatId
|
|
138
|
+
incorporationDate
|
|
139
|
+
domicileAddress
|
|
140
|
+
domicileCity
|
|
141
|
+
domicileZip
|
|
142
|
+
web
|
|
143
|
+
phone
|
|
144
|
+
email
|
|
145
|
+
description
|
|
146
|
+
companyDescription
|
|
147
|
+
legalName
|
|
148
|
+
name
|
|
149
|
+
address
|
|
150
|
+
city
|
|
151
|
+
zip
|
|
152
|
+
createdAt
|
|
153
|
+
}
|
|
154
|
+
portfolioSummary {
|
|
155
|
+
id
|
|
156
|
+
investmentName
|
|
157
|
+
dashboardDetails {
|
|
158
|
+
ownership
|
|
159
|
+
ownershipFD
|
|
160
|
+
investedEquity {
|
|
161
|
+
local
|
|
162
|
+
gp
|
|
163
|
+
}
|
|
164
|
+
investedDebt {
|
|
165
|
+
local
|
|
166
|
+
gp
|
|
167
|
+
}
|
|
168
|
+
investedFunds {
|
|
169
|
+
local
|
|
170
|
+
gp
|
|
171
|
+
}
|
|
172
|
+
totalOriginalCost {
|
|
173
|
+
local
|
|
174
|
+
gp
|
|
175
|
+
}
|
|
176
|
+
irr {
|
|
177
|
+
local
|
|
178
|
+
gp
|
|
179
|
+
}
|
|
180
|
+
multiple {
|
|
181
|
+
local
|
|
182
|
+
gp
|
|
183
|
+
}
|
|
184
|
+
latestInvestmentRoundDate {
|
|
185
|
+
eventDate
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
portfolioCompany {
|
|
189
|
+
id
|
|
190
|
+
displayName
|
|
191
|
+
}
|
|
192
|
+
portfolioFund {
|
|
193
|
+
id
|
|
194
|
+
displayName
|
|
195
|
+
}
|
|
196
|
+
sectors {
|
|
197
|
+
id
|
|
198
|
+
name
|
|
199
|
+
code
|
|
200
|
+
level
|
|
201
|
+
root
|
|
202
|
+
description
|
|
203
|
+
generalPartnerCompanyId
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
generalPartnerCompany {
|
|
207
|
+
id
|
|
208
|
+
displayName
|
|
209
|
+
fullLegalName
|
|
210
|
+
legalForm
|
|
211
|
+
companyId
|
|
212
|
+
taxId
|
|
213
|
+
vatId
|
|
214
|
+
incorporationDate
|
|
215
|
+
domicileAddress
|
|
216
|
+
domicileCity
|
|
217
|
+
domicileZip
|
|
218
|
+
web
|
|
219
|
+
phone
|
|
220
|
+
email
|
|
221
|
+
description
|
|
222
|
+
companyDescription
|
|
223
|
+
legalName
|
|
224
|
+
name
|
|
225
|
+
address
|
|
226
|
+
city
|
|
227
|
+
zip
|
|
228
|
+
createdAt
|
|
229
|
+
isGuest
|
|
230
|
+
isCopy
|
|
231
|
+
canBeCopied
|
|
232
|
+
pricingType
|
|
233
|
+
type
|
|
234
|
+
}
|
|
235
|
+
extraStaticInfo {
|
|
236
|
+
name
|
|
237
|
+
}
|
|
238
|
+
order
|
|
239
|
+
industryRoot {
|
|
240
|
+
id
|
|
241
|
+
name
|
|
242
|
+
code
|
|
243
|
+
level
|
|
244
|
+
root
|
|
245
|
+
description
|
|
246
|
+
generalPartnerCompanyId
|
|
247
|
+
}
|
|
248
|
+
industryList {
|
|
249
|
+
id
|
|
250
|
+
name
|
|
251
|
+
code
|
|
252
|
+
level
|
|
253
|
+
root
|
|
254
|
+
description
|
|
255
|
+
generalPartnerCompanyId
|
|
256
|
+
}
|
|
257
|
+
investmentSectors {
|
|
258
|
+
id
|
|
259
|
+
name
|
|
260
|
+
code
|
|
261
|
+
level
|
|
262
|
+
root
|
|
263
|
+
description
|
|
264
|
+
generalPartnerCompanyId
|
|
265
|
+
}
|
|
266
|
+
`;
|
|
267
|
+
async function listFunds(client, input, verbose = false) {
|
|
268
|
+
const query = `
|
|
269
|
+
query getFundNames($input: FundsSearch) {
|
|
270
|
+
funds(input: $input) {
|
|
271
|
+
id
|
|
272
|
+
displayName
|
|
273
|
+
vintageYear
|
|
274
|
+
order
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
`;
|
|
278
|
+
const data = await (0, graphql_1.executeGraphQL)(client, { query, variables: { input } }, verbose);
|
|
279
|
+
return data.funds ?? [];
|
|
280
|
+
}
|
|
281
|
+
async function getFund(client, id, verbose = false, full = false) {
|
|
282
|
+
const fields = full ? FUND_FULL_FIELDS : FUND_BASE_FIELDS;
|
|
283
|
+
const query = `
|
|
284
|
+
query Fund($input: FundSearch) {
|
|
285
|
+
fund(input: $input) {
|
|
286
|
+
${fields}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
`;
|
|
290
|
+
const data = await (0, graphql_1.executeGraphQL)(client, { query, variables: { input: { id } } }, verbose);
|
|
291
|
+
return normalizeFund(data.fund);
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=funds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"funds.js","sourceRoot":"","sources":["../../../src/api/endpoints/funds.ts"],"names":[],"mappings":";;AA8RA,8BAsBC;AAED,0BAqBC;AA1UD,wCAA4C;AAkB5C,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,IAAU;IAC/B,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,aAAa,CAAE,GAAwB,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,IAAI;QACP,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsExB,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACrB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyKnB,CAAC;AAEK,KAAK,UAAU,SAAS,CAC7B,MAAqB,EACrB,KAA+B,EAC/B,OAAO,GAAG,KAAK;IAEf,MAAM,KAAK,GAAG;;;;;;;;;GASb,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAc,EAC/B,MAAM,EACN,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAC/B,OAAO,CACR,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAC1B,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,MAAqB,EACrB,EAAU,EACV,OAAO,GAAG,KAAK,EACf,IAAI,GAAG,KAAK;IAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC1D,MAAM,KAAK,GAAG;;;UAGN,MAAM;;;GAGb,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAc,EAC/B,MAAM,EACN,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACvC,OAAO,CACR,CAAC;IACF,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
export declare function listCountries(client: AxiosInstance, verbose?: boolean): Promise<Array<Record<string, unknown>>>;
|
|
3
|
+
export declare function listCurrencies(client: AxiosInstance, verbose?: boolean): Promise<Array<Record<string, unknown>>>;
|
|
4
|
+
export declare function getFxRates(client: AxiosInstance, fundId: string, limit?: number, verbose?: boolean): Promise<Record<string, unknown>>;
|