@yigemo/choosefire 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/README.md +83 -0
- package/contracts/choosefire-family-wealth/v2/capability-matrix.v1.json +464 -0
- package/contracts/choosefire-family-wealth/v2/golden/performance.v1.json +79 -0
- package/contracts/choosefire-family-wealth/v2/golden/r2-contract.v1.json +1070 -0
- package/contracts/choosefire-family-wealth/v2/golden/scenarios.v1.json +241 -0
- package/contracts/choosefire-family-wealth/v2/golden/transport.v1.json +207 -0
- package/contracts/choosefire-family-wealth/v2/manifest.json +58 -0
- package/contracts/choosefire-family-wealth/v2/openapi.generated.json +2605 -0
- package/contracts/choosefire-family-wealth/v2/runtime-schemas/family-wealth.v2.schema.json +2127 -0
- package/contracts/choosefire-family-wealth/v2/taxonomies/account-types.v1.json +41 -0
- package/contracts/choosefire-family-wealth/v2/taxonomies/asset-classes.v1.json +45 -0
- package/contracts/choosefire-family-wealth/v2/taxonomies/transaction-types.v1.json +57 -0
- package/contracts/choosefire-financial-workspace/v1/field-registry.generated.json +137 -0
- package/contracts/choosefire-financial-workspace/v1/field-registry.manifest.json +11 -0
- package/contracts/choosefire-financial-workspace/v1/golden/commands.invalid.json +583 -0
- package/contracts/choosefire-financial-workspace/v1/golden/commands.valid.json +201 -0
- package/contracts/choosefire-financial-workspace/v1/golden/cursors.invalid.json +82 -0
- package/contracts/choosefire-financial-workspace/v1/golden/errors.invalid.json +191 -0
- package/contracts/choosefire-financial-workspace/v1/golden/errors.valid.json +298 -0
- package/contracts/choosefire-financial-workspace/v1/golden/fingerprints.json +105 -0
- package/contracts/choosefire-financial-workspace/v1/golden/projections.invalid.json +3543 -0
- package/contracts/choosefire-financial-workspace/v1/golden/projections.valid.json +2953 -0
- package/contracts/choosefire-financial-workspace/v1/manifest.json +69 -0
- package/contracts/choosefire-financial-workspace/v1/openapi.generated.json +1987 -0
- package/contracts/choosefire-financial-workspace/v1/runtime-schemas/financial-workspace.v1.schema.json +1496 -0
- package/dist/args.d.ts +5 -0
- package/dist/args.js +60 -0
- package/dist/args.js.map +1 -0
- package/dist/auth.d.ts +55 -0
- package/dist/auth.js +480 -0
- package/dist/auth.js.map +1 -0
- package/dist/commands.d.ts +4 -0
- package/dist/commands.js +637 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/family-wealth-v2-contracts.d.ts +276 -0
- package/dist/family-wealth-v2-contracts.js +77 -0
- package/dist/family-wealth-v2-contracts.js.map +1 -0
- package/dist/family-wealth-v2-http.d.ts +65 -0
- package/dist/family-wealth-v2-http.js +340 -0
- package/dist/family-wealth-v2-http.js.map +1 -0
- package/dist/financial-workspace-contracts.d.ts +191 -0
- package/dist/financial-workspace-contracts.js +282 -0
- package/dist/financial-workspace-contracts.js.map +1 -0
- package/dist/http.d.ts +76 -0
- package/dist/http.js +446 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +18 -0
- package/dist/output.js +111 -0
- package/dist/output.js.map +1 -0
- package/dist/token-store.d.ts +27 -0
- package/dist/token-store.js +408 -0
- package/dist/token-store.js.map +1 -0
- package/dist/types.d.ts +65 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
const require = createRequire(import.meta.url);
|
|
4
|
+
const Ajv2020 = require('ajv/dist/2020').default;
|
|
5
|
+
const addFormats = require('ajv-formats').default;
|
|
6
|
+
const fieldRegistry = readContractJson('field-registry.generated.json');
|
|
7
|
+
const runtimeSchema = readContractJson('runtime-schemas/financial-workspace.v1.schema.json');
|
|
8
|
+
export const CHOOSEFIRE_FINANCIAL_WORKSPACE_CONTRACT_ID = 'choosefire-financial-workspace.v1';
|
|
9
|
+
export const CHOOSEFIRE_FINANCIAL_WORKSPACE_CONTRACT_VERSION = 1;
|
|
10
|
+
export const CHOOSEFIRE_FINANCIAL_WORKSPACE_REGISTRY_SHA256 = '3ecc94b8fee854c4a1012a79de1216007191c853b62fbf99641a1f9aadde2b16';
|
|
11
|
+
export const CHOOSEFIRE_FINANCIAL_WORKSPACE_AGGREGATE_SHA256 = '9fed00d6103aab4ac183855bb1fb7e96767dbcb2b9ef8e6651dd5ff38798bad1';
|
|
12
|
+
function readContractJson(relativePath) {
|
|
13
|
+
return JSON.parse(readFileSync(new URL(`../contracts/choosefire-financial-workspace/v1/${relativePath}`, import.meta.url), 'utf8'));
|
|
14
|
+
}
|
|
15
|
+
export class AccountFinancialWorkspaceRemoteResponseInvalidError extends Error {
|
|
16
|
+
validationErrors;
|
|
17
|
+
code = 'REMOTE_RESPONSE_INVALID';
|
|
18
|
+
classification = 'REMOTE_RESPONSE_INVALID';
|
|
19
|
+
constructor(validationErrors) {
|
|
20
|
+
super('The account financial workspace response does not match the approved contract.');
|
|
21
|
+
this.validationErrors = validationErrors;
|
|
22
|
+
this.name = 'AccountFinancialWorkspaceRemoteResponseInvalidError';
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const validators = createValidators();
|
|
26
|
+
export function validateAccountFinancialWorkspaceSchema(schemaName, input) {
|
|
27
|
+
const validator = validators.get(schemaName);
|
|
28
|
+
if (!validator)
|
|
29
|
+
return { valid: false, errors: [`unknown schema ${schemaName}`] };
|
|
30
|
+
if (!validator(input)) {
|
|
31
|
+
return { valid: false, errors: formatAjvErrors(validator.errors) };
|
|
32
|
+
}
|
|
33
|
+
const invariantErrors = validateSemanticInvariants(schemaName, input);
|
|
34
|
+
return invariantErrors.length === 0
|
|
35
|
+
? { valid: true }
|
|
36
|
+
: { valid: false, errors: invariantErrors };
|
|
37
|
+
}
|
|
38
|
+
export function parseAccountFinancialWorkspaceHttpResponse(httpStatus, input, successSchemaName) {
|
|
39
|
+
return parseAccountFinancialWorkspaceHttpResponseInternal(httpStatus, input, successSchemaName);
|
|
40
|
+
}
|
|
41
|
+
const SUCCESS_ENVELOPE_SCHEMA_NAMES = new Set([
|
|
42
|
+
'SuccessEnvelopeFinancialWorkspaceCommandReceiptV1',
|
|
43
|
+
'SuccessEnvelopeFinancialWorkspaceSnapshotV1',
|
|
44
|
+
'SuccessEnvelopeFinancialWorkspaceSummaryV1',
|
|
45
|
+
'SuccessEnvelopeFinancialWorkspaceActivityPageV1',
|
|
46
|
+
]);
|
|
47
|
+
const ERROR_SCHEMA_BY_HTTP_STATUS = {
|
|
48
|
+
400: 'ErrorEnvelope400V1',
|
|
49
|
+
401: 'ErrorEnvelope401V1',
|
|
50
|
+
403: 'ErrorEnvelope403V1',
|
|
51
|
+
404: 'ErrorEnvelope404V1',
|
|
52
|
+
409: 'ErrorEnvelope409V1',
|
|
53
|
+
410: 'ErrorEnvelope410V1',
|
|
54
|
+
413: 'ErrorEnvelope413V1',
|
|
55
|
+
415: 'ErrorEnvelope415V1',
|
|
56
|
+
503: 'ErrorEnvelope503V1',
|
|
57
|
+
};
|
|
58
|
+
function parseAccountFinancialWorkspaceHttpResponseInternal(httpStatus, input, successSchemaName) {
|
|
59
|
+
let schemaName;
|
|
60
|
+
if (httpStatus === 200) {
|
|
61
|
+
if (successSchemaName === undefined
|
|
62
|
+
|| !SUCCESS_ENVELOPE_SCHEMA_NAMES.has(successSchemaName)) {
|
|
63
|
+
throw new AccountFinancialWorkspaceRemoteResponseInvalidError([
|
|
64
|
+
'HTTP 200 requires an approved financial workspace success envelope schema',
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
schemaName = successSchemaName;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
if (successSchemaName !== undefined) {
|
|
71
|
+
throw new AccountFinancialWorkspaceRemoteResponseInvalidError([
|
|
72
|
+
'non-200 responses select their error envelope schema from HTTP status',
|
|
73
|
+
]);
|
|
74
|
+
}
|
|
75
|
+
if (!isAccountFinancialWorkspaceErrorHttpStatus(httpStatus)) {
|
|
76
|
+
throw new AccountFinancialWorkspaceRemoteResponseInvalidError([
|
|
77
|
+
`unsupported financial workspace HTTP status ${httpStatus}`,
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
schemaName = ERROR_SCHEMA_BY_HTTP_STATUS[httpStatus];
|
|
81
|
+
}
|
|
82
|
+
return parseAccountFinancialWorkspaceApprovedSchema(schemaName, input);
|
|
83
|
+
}
|
|
84
|
+
function parseAccountFinancialWorkspaceApprovedSchema(schemaName, input) {
|
|
85
|
+
const result = validateAccountFinancialWorkspaceSchema(schemaName, input);
|
|
86
|
+
if (!result.valid) {
|
|
87
|
+
throw new AccountFinancialWorkspaceRemoteResponseInvalidError(result.errors);
|
|
88
|
+
}
|
|
89
|
+
return structuredClone(input);
|
|
90
|
+
}
|
|
91
|
+
function isAccountFinancialWorkspaceErrorHttpStatus(httpStatus) {
|
|
92
|
+
return Object.hasOwn(ERROR_SCHEMA_BY_HTTP_STATUS, httpStatus);
|
|
93
|
+
}
|
|
94
|
+
export function normalizeAccountFinancialWorkspaceCommand(schemaName, input) {
|
|
95
|
+
const result = validateAccountFinancialWorkspaceSchema(schemaName, input);
|
|
96
|
+
if (!result.valid)
|
|
97
|
+
throw new TypeError(result.errors.join('; '));
|
|
98
|
+
if (schemaName === 'InitializeFinancialWorkspaceCommandV1') {
|
|
99
|
+
return structuredClone(input);
|
|
100
|
+
}
|
|
101
|
+
const command = input;
|
|
102
|
+
const normalized = {
|
|
103
|
+
...structuredClone(command),
|
|
104
|
+
value: {
|
|
105
|
+
...structuredClone(command.value),
|
|
106
|
+
currency: command.value.currency.trim().toUpperCase(),
|
|
107
|
+
},
|
|
108
|
+
status: command.status ?? 'confirmed',
|
|
109
|
+
asOf: command.asOf === undefined ? null : new Date(command.asOf).toISOString(),
|
|
110
|
+
};
|
|
111
|
+
const normalizedResult = validateAccountFinancialWorkspaceSchema('NormalizedFinancialWorkspaceFactRecordCommandV1', normalized);
|
|
112
|
+
if (!normalizedResult.valid) {
|
|
113
|
+
throw new TypeError(normalizedResult.errors.join('; '));
|
|
114
|
+
}
|
|
115
|
+
return normalized;
|
|
116
|
+
}
|
|
117
|
+
function createValidators() {
|
|
118
|
+
const ajv = new Ajv2020({
|
|
119
|
+
strict: true,
|
|
120
|
+
allErrors: true,
|
|
121
|
+
coerceTypes: false,
|
|
122
|
+
removeAdditional: false,
|
|
123
|
+
useDefaults: false,
|
|
124
|
+
validateFormats: true,
|
|
125
|
+
});
|
|
126
|
+
addFormats(ajv, { mode: 'full' });
|
|
127
|
+
ajv.addFormat('choosefire-money-v1', {
|
|
128
|
+
type: 'string',
|
|
129
|
+
validate: isCanonicalMoney,
|
|
130
|
+
});
|
|
131
|
+
ajv.addSchema(runtimeSchema);
|
|
132
|
+
return new Map(Object.keys(runtimeSchema.$defs).map((name) => [
|
|
133
|
+
name,
|
|
134
|
+
ajv.compile({ $ref: `${runtimeSchema.$id}#/$defs/${name}` }),
|
|
135
|
+
]));
|
|
136
|
+
}
|
|
137
|
+
function validateSemanticInvariants(schemaName, input) {
|
|
138
|
+
const errors = [];
|
|
139
|
+
const record = input;
|
|
140
|
+
const coverageValues = [];
|
|
141
|
+
if (schemaName === 'ProjectionCoverageV1')
|
|
142
|
+
coverageValues.push(record);
|
|
143
|
+
if (schemaName === 'FinancialWorkspaceSnapshotV1') {
|
|
144
|
+
coverageValues.push(record.currentFacts.coverage);
|
|
145
|
+
const fields = record.currentFacts.items.map((item) => item.field);
|
|
146
|
+
if (!sameArray(fields, record.currentFacts.coverage.recordedFields)) {
|
|
147
|
+
errors.push('snapshot facts must exactly match recordedFields order');
|
|
148
|
+
}
|
|
149
|
+
if (record.currentFacts.items.some((item) => item.recordedVersion > record.version)) {
|
|
150
|
+
errors.push('snapshot fact version exceeds workspace version');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (schemaName === 'FinancialWorkspaceSummaryV1') {
|
|
154
|
+
coverageValues.push(record.currentFacts);
|
|
155
|
+
}
|
|
156
|
+
if (schemaName.startsWith('SuccessEnvelope')) {
|
|
157
|
+
return validateSemanticInvariants(schemaName.replace(/^SuccessEnvelope/, ''), record.data);
|
|
158
|
+
}
|
|
159
|
+
for (const coverage of coverageValues) {
|
|
160
|
+
const supported = fieldRegistry.fields.map((field) => field.field);
|
|
161
|
+
const recorded = coverage.recordedFields;
|
|
162
|
+
const missing = coverage.missingFields;
|
|
163
|
+
if (!sameArray(coverage.supportedFields, supported)) {
|
|
164
|
+
errors.push('coverage supportedFields must equal registry order');
|
|
165
|
+
}
|
|
166
|
+
if (!isRegistryOrdered(recorded, supported) || !isRegistryOrdered(missing, supported)) {
|
|
167
|
+
errors.push('coverage fields must preserve registry order');
|
|
168
|
+
}
|
|
169
|
+
if (recorded.some((field) => missing.includes(field))
|
|
170
|
+
|| !sameArray(supported, supported.filter((field) => recorded.includes(field) || missing.includes(field)))) {
|
|
171
|
+
errors.push('coverage recorded/missing fields must partition supportedFields');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const operations = [];
|
|
175
|
+
if (schemaName === 'OperationProjectionV1')
|
|
176
|
+
operations.push({ operation: record });
|
|
177
|
+
if (schemaName === 'FinancialWorkspaceCommandReceiptV1') {
|
|
178
|
+
operations.push({
|
|
179
|
+
operation: record.operation,
|
|
180
|
+
authorityStoreId: record.authority.storeId,
|
|
181
|
+
});
|
|
182
|
+
if (record.baseVersion !== record.operation.baseVersion
|
|
183
|
+
|| record.resultVersion !== record.operation.resultVersion
|
|
184
|
+
|| record.committedAt !== record.operation.committedAt) {
|
|
185
|
+
errors.push('receipt outer fields must equal nested operation');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (schemaName === 'FinancialWorkspaceActivityPageV1') {
|
|
189
|
+
operations.push(...record.items.map((operation) => ({
|
|
190
|
+
operation,
|
|
191
|
+
authorityStoreId: record.authority.storeId,
|
|
192
|
+
})));
|
|
193
|
+
for (let index = 1; index < record.items.length; index += 1) {
|
|
194
|
+
if (record.items[index].resultVersion
|
|
195
|
+
!== record.items[index - 1].resultVersion + 1) {
|
|
196
|
+
errors.push('activity result versions must be contiguous');
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (record.items.some((item) => item.resultVersion > record.throughVersion)) {
|
|
200
|
+
errors.push('activity item exceeds throughVersion');
|
|
201
|
+
}
|
|
202
|
+
if (record.items.length === 0 && record.hasMore) {
|
|
203
|
+
errors.push('empty activity page cannot have more items');
|
|
204
|
+
}
|
|
205
|
+
if (record.items.length > 0) {
|
|
206
|
+
const lastVersion = record.items.at(-1).resultVersion;
|
|
207
|
+
if (record.hasMore
|
|
208
|
+
? lastVersion >= record.throughVersion
|
|
209
|
+
: lastVersion !== record.throughVersion) {
|
|
210
|
+
errors.push('activity hasMore must match throughVersion');
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
for (const { operation, authorityStoreId } of operations) {
|
|
215
|
+
if (operation.resultVersion !== operation.baseVersion + 1) {
|
|
216
|
+
errors.push('operation must advance exactly one version');
|
|
217
|
+
}
|
|
218
|
+
if (!operation.affectedObjects.some((item) => deepEqual(item, operation.primaryObject))) {
|
|
219
|
+
errors.push('affectedObjects must contain primaryObject');
|
|
220
|
+
}
|
|
221
|
+
if (operation.operation === 'workspace.initialize') {
|
|
222
|
+
if (operation.baseVersion !== 0
|
|
223
|
+
|| operation.resultVersion !== 1
|
|
224
|
+
|| operation.primaryObject.kind !== 'financial_workspace_workspace_ref.v1'
|
|
225
|
+
|| operation.affectedObjects.length !== 1) {
|
|
226
|
+
errors.push('initialize operation refs are invalid');
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else if (operation.baseVersion < 1
|
|
230
|
+
|| operation.primaryObject.kind !== 'financial_workspace_fact_ref.v1'
|
|
231
|
+
|| operation.affectedObjects.length !== 2
|
|
232
|
+
|| operation.affectedObjects[0].kind !== 'financial_workspace_fact_ref.v1'
|
|
233
|
+
|| operation.affectedObjects[1].kind !== 'financial_workspace_workspace_ref.v1') {
|
|
234
|
+
errors.push('fact operation refs are invalid');
|
|
235
|
+
}
|
|
236
|
+
if (authorityStoreId !== undefined) {
|
|
237
|
+
const workspaceRefs = [operation.primaryObject, ...operation.affectedObjects].filter((objectRef) => objectRef.kind === 'financial_workspace_workspace_ref.v1');
|
|
238
|
+
if (workspaceRefs.length === 0
|
|
239
|
+
|| workspaceRefs.some((objectRef) => objectRef.storeId !== authorityStoreId)) {
|
|
240
|
+
errors.push('operation workspace refs must match authority storeId');
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return errors;
|
|
245
|
+
}
|
|
246
|
+
function isCanonicalMoney(value) {
|
|
247
|
+
const definition = fieldRegistry.fields[0];
|
|
248
|
+
if (!/^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$/.test(value))
|
|
249
|
+
return false;
|
|
250
|
+
const [integer, fraction = ''] = value.split('.');
|
|
251
|
+
if (fraction.length > definition.scale)
|
|
252
|
+
return false;
|
|
253
|
+
const maximumInteger = definition.maximum.split('.')[0];
|
|
254
|
+
if (integer.length !== maximumInteger.length) {
|
|
255
|
+
return integer.length < maximumInteger.length;
|
|
256
|
+
}
|
|
257
|
+
const comparison = integer.localeCompare(maximumInteger);
|
|
258
|
+
return comparison < 0 || (comparison === 0 && fraction.length === 0);
|
|
259
|
+
}
|
|
260
|
+
function formatAjvErrors(errors) {
|
|
261
|
+
return (errors ?? []).map((error) => `${error.instancePath || '/'} ${error.message ?? 'is invalid'}`);
|
|
262
|
+
}
|
|
263
|
+
function isRegistryOrdered(values, supported) {
|
|
264
|
+
return sameArray(values, supported.filter((field) => values.includes(field)));
|
|
265
|
+
}
|
|
266
|
+
function sameArray(left, right) {
|
|
267
|
+
return left.length === right.length
|
|
268
|
+
&& left.every((value, index) => value === right[index]);
|
|
269
|
+
}
|
|
270
|
+
function deepEqual(left, right) {
|
|
271
|
+
return JSON.stringify(sortJson(left)) === JSON.stringify(sortJson(right));
|
|
272
|
+
}
|
|
273
|
+
function sortJson(value) {
|
|
274
|
+
if (Array.isArray(value))
|
|
275
|
+
return value.map(sortJson);
|
|
276
|
+
if (!value || typeof value !== 'object')
|
|
277
|
+
return value;
|
|
278
|
+
return Object.fromEntries(Object.keys(value)
|
|
279
|
+
.sort((left, right) => Buffer.compare(Buffer.from(left), Buffer.from(right)))
|
|
280
|
+
.map((key) => [key, sortJson(value[key])]));
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=financial-workspace-contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"financial-workspace-contracts.js","sourceRoot":"","sources":["../src/financial-workspace-contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type AccountFinancialWorkspaceActivityPage, type AccountFinancialWorkspaceCommandReceipt, type AccountFinancialWorkspaceErrorCode, type AccountFinancialWorkspaceErrorEnvelope, type AccountFinancialWorkspaceErrorHttpStatus, type AccountFinancialWorkspaceSnapshot, type AccountFinancialWorkspaceSummary, type InitializeAccountFinancialWorkspaceCommand, type RecordAccountFinancialWorkspaceFactCommand } from './financial-workspace-contracts.js';
|
|
2
|
+
import type { CliConfig, RequestOptions, WorkspaceScope } from './types.js';
|
|
3
|
+
declare const FINANCIAL_WORKSPACE_PATH = "/choosefire/financial-workspace";
|
|
4
|
+
export type AccountFinancialWorkspaceActivityQuery = {
|
|
5
|
+
limit: number;
|
|
6
|
+
cursor?: string;
|
|
7
|
+
};
|
|
8
|
+
export type AccountFinancialWorkspaceMutationRecovery = {
|
|
9
|
+
kind: 'financial_workspace_mutation_recovery.v1';
|
|
10
|
+
action: 'retry_exact_command';
|
|
11
|
+
guidance: 'Read the latest snapshot, then explicitly retry the exact serialized body with the original idempotency key. Do not generate a new key.';
|
|
12
|
+
path: typeof FINANCIAL_WORKSPACE_PATH | `${typeof FINANCIAL_WORKSPACE_PATH}/facts`;
|
|
13
|
+
command: InitializeAccountFinancialWorkspaceCommand | RecordAccountFinancialWorkspaceFactCommand;
|
|
14
|
+
idempotencyKey: string;
|
|
15
|
+
serializedBody: string;
|
|
16
|
+
};
|
|
17
|
+
export type AccountFinancialWorkspaceHttpOptions = {
|
|
18
|
+
fetch?: typeof fetch;
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
now?: () => number;
|
|
21
|
+
};
|
|
22
|
+
export declare class ChooseFireHttpError extends Error {
|
|
23
|
+
readonly status: number;
|
|
24
|
+
readonly payload: unknown;
|
|
25
|
+
readonly code: string;
|
|
26
|
+
constructor(message: string, status: number, payload: unknown, code?: string);
|
|
27
|
+
}
|
|
28
|
+
export declare class AccountFinancialWorkspaceDisabledError extends Error {
|
|
29
|
+
readonly code: "ACCOUNT_WORKSPACE_DISABLED";
|
|
30
|
+
constructor();
|
|
31
|
+
}
|
|
32
|
+
export declare class AccountFinancialWorkspaceAuthRequiredError extends Error {
|
|
33
|
+
readonly recovery?: AccountFinancialWorkspaceMutationRecovery | undefined;
|
|
34
|
+
readonly code: "AUTH_REQUIRED";
|
|
35
|
+
constructor(recovery?: AccountFinancialWorkspaceMutationRecovery | undefined);
|
|
36
|
+
}
|
|
37
|
+
export declare class AccountFinancialWorkspaceScopeRequiredError extends Error {
|
|
38
|
+
readonly requiredScope: WorkspaceScope;
|
|
39
|
+
readonly recovery?: AccountFinancialWorkspaceMutationRecovery | undefined;
|
|
40
|
+
readonly code: "ACCOUNT_SCOPE_REQUIRED";
|
|
41
|
+
constructor(requiredScope: WorkspaceScope, recovery?: AccountFinancialWorkspaceMutationRecovery | undefined);
|
|
42
|
+
}
|
|
43
|
+
export declare class AccountFinancialWorkspaceHttpError extends Error {
|
|
44
|
+
readonly status: AccountFinancialWorkspaceErrorHttpStatus;
|
|
45
|
+
readonly code: AccountFinancialWorkspaceErrorCode;
|
|
46
|
+
readonly data: AccountFinancialWorkspaceErrorEnvelope['error']['data'];
|
|
47
|
+
readonly requestId?: string | undefined;
|
|
48
|
+
readonly recovery?: AccountFinancialWorkspaceMutationRecovery | undefined;
|
|
49
|
+
readonly name = "AccountFinancialWorkspaceHttpError";
|
|
50
|
+
constructor(status: AccountFinancialWorkspaceErrorHttpStatus, code: AccountFinancialWorkspaceErrorCode, data: AccountFinancialWorkspaceErrorEnvelope['error']['data'], requestId?: string | undefined, recovery?: AccountFinancialWorkspaceMutationRecovery | undefined);
|
|
51
|
+
}
|
|
52
|
+
export declare class AccountFinancialWorkspaceRemoteUnavailableError extends Error {
|
|
53
|
+
readonly code: "REMOTE_UNAVAILABLE";
|
|
54
|
+
constructor();
|
|
55
|
+
}
|
|
56
|
+
export declare class AccountFinancialWorkspaceRemoteResponseInvalidClientError extends Error {
|
|
57
|
+
readonly validationErrors: string[];
|
|
58
|
+
readonly recovery?: AccountFinancialWorkspaceMutationRecovery | undefined;
|
|
59
|
+
readonly code: "REMOTE_RESPONSE_INVALID";
|
|
60
|
+
constructor(validationErrors: string[], recovery?: AccountFinancialWorkspaceMutationRecovery | undefined);
|
|
61
|
+
}
|
|
62
|
+
export declare class AccountFinancialWorkspaceRemoteOutcomeUnknownError extends Error {
|
|
63
|
+
readonly recovery: AccountFinancialWorkspaceMutationRecovery;
|
|
64
|
+
readonly code: "REMOTE_OUTCOME_UNKNOWN";
|
|
65
|
+
readonly command: AccountFinancialWorkspaceMutationRecovery['command'];
|
|
66
|
+
readonly idempotencyKey: string;
|
|
67
|
+
readonly serializedBody: string;
|
|
68
|
+
constructor(recovery: AccountFinancialWorkspaceMutationRecovery);
|
|
69
|
+
}
|
|
70
|
+
export declare function requestChooseFire<T>(config: CliConfig, path: string, options?: RequestOptions): Promise<T>;
|
|
71
|
+
export declare function initializeAccountFinancialWorkspace(config: CliConfig, command: InitializeAccountFinancialWorkspaceCommand, options?: AccountFinancialWorkspaceHttpOptions): Promise<AccountFinancialWorkspaceCommandReceipt>;
|
|
72
|
+
export declare function getAccountFinancialWorkspaceSnapshot(config: CliConfig, options?: AccountFinancialWorkspaceHttpOptions): Promise<AccountFinancialWorkspaceSnapshot>;
|
|
73
|
+
export declare function getAccountFinancialWorkspaceSummary(config: CliConfig, options?: AccountFinancialWorkspaceHttpOptions): Promise<AccountFinancialWorkspaceSummary>;
|
|
74
|
+
export declare function getAccountFinancialWorkspaceActivity(config: CliConfig, query: AccountFinancialWorkspaceActivityQuery, options?: AccountFinancialWorkspaceHttpOptions): Promise<AccountFinancialWorkspaceActivityPage>;
|
|
75
|
+
export declare function recordAccountFinancialWorkspaceFact(config: CliConfig, command: RecordAccountFinancialWorkspaceFactCommand, options?: AccountFinancialWorkspaceHttpOptions): Promise<AccountFinancialWorkspaceCommandReceipt>;
|
|
76
|
+
export {};
|