@sneat/extension-debtus 0.2.2 → 0.2.3

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.
@@ -1,9 +1,48 @@
1
- import { HttpParams } from '@angular/common/http';
2
1
  import * as i0 from '@angular/core';
3
2
  import { inject, Injectable } from '@angular/core';
4
3
  import { SneatApiService } from '@sneat/api';
5
- import { debtDirectionToApiDirection, apiDirectionToDebtDirection, DEBTUS_SERVICE } from '@sneat/extension-debtus-contract';
4
+ import { parseRecordDebtusSourceRepaymentV1Request, parseRecordDebtusSourceRepaymentV1Response, parseDebtusSourceObligationDueDateV1, debtDirectionToApiDirection, apiDirectionToDebtDirection, parseDebtusTransferDueDateV1, parseDebtusTransferRepaymentV1, DEBTUS_SERVICE, DEBTUS_SOURCE_REPAYMENT_SERVICE_V1, DEBTUS_SOURCE_OBLIGATION_DUE_DATE_SERVICE_V1, DEBTUS_TRANSFER_DUE_DATE_SERVICE } from '@sneat/extension-debtus-contract';
6
5
  import { map } from 'rxjs';
6
+ import { HttpParams } from '@angular/common/http';
7
+
8
+ class DebtusSourceRepaymentService {
9
+ api = inject(SneatApiService);
10
+ recordSourceObligationRepayment(request) {
11
+ const validatedRequest = parseRecordDebtusSourceRepaymentV1Request(request);
12
+ return this.api
13
+ .post('api4debtus/source-obligation-repayment', validatedRequest)
14
+ .pipe(map((value) => parseRecordDebtusSourceRepaymentV1Response(value, validatedRequest)));
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceRepaymentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceRepaymentService });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceRepaymentService, decorators: [{
20
+ type: Injectable
21
+ }] });
22
+
23
+ class DebtusSourceDueDateService {
24
+ api = inject(SneatApiService);
25
+ setSourceObligationDueDate(request) {
26
+ return this.api
27
+ .post('api4debtus/source-obligation-due-date', request)
28
+ .pipe(map((value) => parseDueDateResult(value, request)));
29
+ }
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceDueDateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
31
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceDueDateService });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusSourceDueDateService, decorators: [{
34
+ type: Injectable
35
+ }] });
36
+ function parseDueDateResult(value, request) {
37
+ const result = parseDebtusSourceObligationDueDateV1(value, request.source, request.lineID);
38
+ if (request.dueDate && result['dueDate'] !== request.dueDate) {
39
+ throw new TypeError('Debtus due-date response changed the requested date');
40
+ }
41
+ if (request.todoListID && result['todoListID'] !== request.todoListID) {
42
+ throw new TypeError('Debtus due-date response changed the selected list');
43
+ }
44
+ return result;
45
+ }
7
46
 
8
47
  class DebtusService {
9
48
  sneatApiService = inject(SneatApiService);
@@ -143,16 +182,61 @@ function nonZeroDate(value) {
143
182
  return !value || value.startsWith('0001-01-01') ? undefined : value;
144
183
  }
145
184
 
185
+ class DebtusTransferDueDateService {
186
+ api = inject(SneatApiService);
187
+ setTransferDueDate(request) {
188
+ return this.api
189
+ .post('api4debtus/transfer-due-date', request)
190
+ .pipe(map((value) => parseDebtusTransferDueDateV1(value, request.spaceID, request.transferID)));
191
+ }
192
+ getTransferDueDate(spaceID, transferID) {
193
+ const params = new HttpParams()
194
+ .set('spaceID', spaceID)
195
+ .set('transferID', transferID);
196
+ return this.api
197
+ .get('api4debtus/transfer-due-date-status', params)
198
+ .pipe(map((value) => parseDebtusTransferDueDateV1(value, spaceID, transferID)));
199
+ }
200
+ recordTransferRepayment(request) {
201
+ return this.api
202
+ .post('api4debtus/transfer-repayment', request)
203
+ .pipe(map((value) => parseDebtusTransferRepaymentV1(value, request)));
204
+ }
205
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusTransferDueDateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
206
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusTransferDueDateService });
207
+ }
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DebtusTransferDueDateService, decorators: [{
209
+ type: Injectable
210
+ }] });
211
+
146
212
  // Registers the concrete DebtusService and binds it to the DEBTUS_SERVICE token so
147
213
  // consumers depend only on the IDebtusService contract. Wired in at app
148
214
  // bootstrap (consumers do not import this factory directly).
149
215
  function provideDebtus() {
150
- return [DebtusService, { provide: DEBTUS_SERVICE, useExisting: DebtusService }];
216
+ return [
217
+ DebtusService,
218
+ DebtusSourceRepaymentService,
219
+ DebtusSourceDueDateService,
220
+ DebtusTransferDueDateService,
221
+ { provide: DEBTUS_SERVICE, useExisting: DebtusService },
222
+ {
223
+ provide: DEBTUS_SOURCE_REPAYMENT_SERVICE_V1,
224
+ useExisting: DebtusSourceRepaymentService,
225
+ },
226
+ {
227
+ provide: DEBTUS_SOURCE_OBLIGATION_DUE_DATE_SERVICE_V1,
228
+ useExisting: DebtusSourceDueDateService,
229
+ },
230
+ {
231
+ provide: DEBTUS_TRANSFER_DUE_DATE_SERVICE,
232
+ useExisting: DebtusTransferDueDateService,
233
+ },
234
+ ];
151
235
  }
152
236
 
153
237
  /**
154
238
  * Generated bundle index. Do not edit.
155
239
  */
156
240
 
157
- export { DebtusService, provideDebtus };
241
+ export { DebtusService, DebtusSourceDueDateService, DebtusSourceRepaymentService, DebtusTransferDueDateService, provideDebtus };
158
242
  //# sourceMappingURL=sneat-extension-debtus.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sneat-extension-debtus.mjs","sources":["../../../../../../libs/extensions/debtus/runtime/src/lib/services/debtus.service.ts","../../../../../../libs/extensions/debtus/runtime/src/lib/provide-debtus.ts","../../../../../../libs/extensions/debtus/runtime/src/sneat-extension-debtus.ts"],"sourcesContent":["import { HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { SneatApiService } from '@sneat/api';\nimport {\n IContactBalance,\n ICreateDebtRecordRequest,\n ICreateTransferRequest,\n ICreateTransferResponse,\n IDebtusService,\n IDebtusTransfer,\n ISettleUpRequest,\n apiDirectionToDebtDirection,\n debtDirectionToApiDirection,\n} from '@sneat/extension-debtus-contract';\nimport { Observable, map } from 'rxjs';\n\ninterface IApiContactBalanceDto {\n readonly contactID: string;\n readonly title: string;\n readonly balance: Record<string, number>;\n readonly counterpartySpaceID?: string;\n}\n\ninterface IApiSpaceTransferDto {\n readonly id: string;\n readonly direction: 'u2c' | 'c2u';\n readonly amount: { readonly currency: string; readonly value: number };\n readonly counterpartyContactID: string;\n readonly counterpartyTitle: string;\n readonly note?: string;\n readonly created: string;\n readonly dueOn?: string;\n readonly isReturn: boolean;\n readonly isOutstanding: boolean;\n readonly creatorSpaceID: string;\n readonly counterpartySpaceID?: string;\n}\n\ninterface IApiSpaceTransfersDto {\n readonly transfers: IApiSpaceTransferDto[];\n}\n\ninterface IApiContactDto {\n readonly ID: string;\n readonly UserID?: string;\n readonly Name: string;\n}\n\ninterface IApiCreatedTransferDto {\n readonly Id: string;\n readonly Created: string;\n readonly Amount: { readonly currency: string; readonly value: number };\n readonly IsReturn?: boolean;\n readonly IsOutstanding?: boolean;\n readonly From?: IApiContactDto;\n readonly To?: IApiContactDto;\n readonly Due?: string;\n}\n\ninterface IApiCreateTransferResponse {\n readonly Error?: string;\n readonly Transfer?: IApiCreatedTransferDto;\n readonly UserBalance?: Record<string, number>;\n readonly CounterpartyBalance?: Record<string, number>;\n}\n\n@Injectable()\nexport class DebtusService implements IDebtusService {\n private readonly sneatApiService = inject(SneatApiService);\n\n public createDebtRecord(\n request: ICreateDebtRecordRequest,\n ): Observable<string> {\n return this.sneatApiService.post('debtus/create_debt_record', request);\n }\n\n public getContactBalances(spaceID: string): Observable<IContactBalance[]> {\n const params = new HttpParams().set('spaceID', spaceID);\n return this.sneatApiService\n .get<IApiContactBalanceDto[]>(\n 'api4debtus/space/contact-balances',\n params,\n )\n .pipe(\n map((contacts) =>\n contacts.map((contact) => ({\n contactID: contact.contactID,\n title: contact.title,\n balance: centsBalanceToMajor(contact.balance),\n counterpartySpaceID: contact.counterpartySpaceID,\n })),\n ),\n );\n }\n\n public getContactBalance(\n spaceID: string,\n contactID: string,\n ): Observable<IContactBalance> {\n return this.getContactBalances(spaceID).pipe(\n map((contacts) => contacts.find((c) => c.contactID === contactID)),\n map((contact) => {\n if (!contact) {\n throw new Error(`Debtus contact \"${contactID}\" was not found`);\n }\n return contact;\n }),\n );\n }\n\n public getTransfers(\n spaceID: string,\n contactID?: string,\n ): Observable<IDebtusTransfer[]> {\n let params = new HttpParams().set('spaceID', spaceID);\n if (contactID) {\n params = params.set('contactID', contactID);\n }\n return this.sneatApiService\n .get<IApiSpaceTransfersDto>('api4debtus/space/transfers', params)\n .pipe(map((dto) => dto.transfers.map(mapSpaceTransferDto)));\n }\n\n public getTransfer(\n spaceID: string,\n transferID: string,\n ): Observable<IDebtusTransfer> {\n const params = new HttpParams()\n .set('spaceID', spaceID)\n .set('id', transferID);\n return this.sneatApiService\n .get<IApiSpaceTransferDto>('api4debtus/space/transfer', params)\n .pipe(map(mapSpaceTransferDto));\n }\n\n public createTransfer(\n request: ICreateTransferRequest,\n ): Observable<ICreateTransferResponse> {\n const apiDirection = debtDirectionToApiDirection(request.direction);\n const body = {\n spaceID: request.spaceID,\n direction: apiDirection,\n amount: {\n currency: request.amount.currency,\n value: majorToCents(request.amount.value),\n },\n toContactID: apiDirection === 'u2c' ? request.contactID : undefined,\n fromContactID: apiDirection === 'c2u' ? request.contactID : undefined,\n note: request.note,\n counterpartySpaceID: request.counterpartySpaceID || undefined,\n isReturn: request.isReturn ?? false,\n returnToTransferID: request.returnToTransferID,\n dueOn: request.dueOn,\n };\n return this.sneatApiService\n .post<IApiCreateTransferResponse>('api4debtus/create-transfer', body)\n .pipe(map((resp) => this.mapCreateResponse(resp, request)));\n }\n\n public settleUp(\n request: ISettleUpRequest,\n ): Observable<ICreateTransferResponse> {\n return this.createTransfer({\n spaceID: request.spaceID,\n direction: request.direction,\n amount: request.amount,\n contactID: request.contactID,\n contactTitle: request.contactTitle,\n isReturn: true,\n counterpartySpaceID: request.counterpartySpaceID,\n });\n }\n\n private mapCreateResponse(\n resp: IApiCreateTransferResponse,\n request: ICreateTransferRequest,\n ): ICreateTransferResponse {\n if (resp.Error) {\n throw new Error(resp.Error);\n }\n if (!resp.Transfer) {\n throw new Error('Debtus create-transfer response omitted the transfer');\n }\n const counterparty = resp.Transfer.To ?? resp.Transfer.From;\n if (!counterparty) {\n throw new Error('Debtus create-transfer response omitted the counterparty');\n }\n return {\n transfer: {\n id: resp.Transfer.Id,\n direction: request.direction,\n amount: {\n currency: request.amount.currency,\n value: centsToMajor(resp.Transfer.Amount.value),\n },\n counterpartyContactID: counterparty.ID,\n counterpartyTitle: counterparty.Name,\n note: request.note,\n created: resp.Transfer.Created,\n dueOn: nonZeroDate(resp.Transfer.Due),\n isReturn: resp.Transfer.IsReturn ?? false,\n isOutstanding:\n resp.Transfer.IsOutstanding ?? !(resp.Transfer.IsReturn ?? false),\n creatorSpaceID: request.spaceID,\n counterpartySpaceID: request.counterpartySpaceID,\n },\n userBalance: centsBalanceToMajor(resp.UserBalance ?? {}),\n counterpartyBalance: centsBalanceToMajor(\n resp.CounterpartyBalance ?? {},\n ),\n };\n }\n}\n\nfunction mapSpaceTransferDto(dto: IApiSpaceTransferDto): IDebtusTransfer {\n return {\n ...dto,\n direction: apiDirectionToDebtDirection(dto.direction),\n amount: {\n currency: dto.amount.currency as IDebtusTransfer['amount']['currency'],\n value: centsToMajor(dto.amount.value),\n },\n };\n}\n\nfunction centsBalanceToMajor(\n balance: Record<string, number>,\n): IContactBalance['balance'] {\n return Object.fromEntries(\n Object.entries(balance).map(([currency, cents]) => [\n currency,\n centsToMajor(cents),\n ]),\n ) as IContactBalance['balance'];\n}\n\nfunction majorToCents(value: number): number {\n return Math.round(value * 100);\n}\n\nfunction centsToMajor(value: number): number {\n return value / 100;\n}\n\nfunction nonZeroDate(value?: string): string | undefined {\n return !value || value.startsWith('0001-01-01') ? undefined : value;\n}\n","import { Provider } from '@angular/core';\nimport { DEBTUS_SERVICE } from '@sneat/extension-debtus-contract';\nimport { DebtusService } from './services';\n\n// Registers the concrete DebtusService and binds it to the DEBTUS_SERVICE token so\n// consumers depend only on the IDebtusService contract. Wired in at app\n// bootstrap (consumers do not import this factory directly).\nexport function provideDebtus(): Provider[] {\n return [DebtusService, { provide: DEBTUS_SERVICE, useExisting: DebtusService }];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sneat-extension-debtus.mjs","sources":["../../../../../../libs/extensions/debtus/runtime/src/lib/services/debtus-source-repayment.service.ts","../../../../../../libs/extensions/debtus/runtime/src/lib/services/debtus-source-due-date.service.ts","../../../../../../libs/extensions/debtus/runtime/src/lib/services/debtus.service.ts","../../../../../../libs/extensions/debtus/runtime/src/lib/services/debtus-transfer-due-date.service.ts","../../../../../../libs/extensions/debtus/runtime/src/lib/provide-debtus.ts","../../../../../../libs/extensions/debtus/runtime/src/sneat-extension-debtus.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { SneatApiService } from '@sneat/api';\nimport {\n type IDebtusSourceRepaymentServiceV1,\n type IRecordDebtusSourceRepaymentV1Request,\n type IRecordDebtusSourceRepaymentV1Response,\n parseRecordDebtusSourceRepaymentV1Request,\n parseRecordDebtusSourceRepaymentV1Response,\n} from '@sneat/extension-debtus-contract';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class DebtusSourceRepaymentService implements IDebtusSourceRepaymentServiceV1 {\n private readonly api = inject(SneatApiService);\n\n public recordSourceObligationRepayment(\n request: IRecordDebtusSourceRepaymentV1Request,\n ): Observable<IRecordDebtusSourceRepaymentV1Response> {\n const validatedRequest = parseRecordDebtusSourceRepaymentV1Request(request);\n return this.api\n .post<unknown>('api4debtus/source-obligation-repayment', validatedRequest)\n .pipe(\n map((value) =>\n parseRecordDebtusSourceRepaymentV1Response(value, validatedRequest),\n ),\n );\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { SneatApiService } from '@sneat/api';\nimport {\n parseDebtusSourceObligationDueDateV1,\n type IDebtusSourceObligationDueDateServiceV1,\n type IDebtusSourceObligationDueDateV1,\n type ISetDebtusSourceObligationDueDateV1Request,\n} from '@sneat/extension-debtus-contract';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class DebtusSourceDueDateService implements IDebtusSourceObligationDueDateServiceV1 {\n private readonly api = inject(SneatApiService);\n\n public setSourceObligationDueDate(\n request: ISetDebtusSourceObligationDueDateV1Request,\n ): Observable<IDebtusSourceObligationDueDateV1> {\n return this.api\n .post<unknown>('api4debtus/source-obligation-due-date', request)\n .pipe(map((value) => parseDueDateResult(value, request)));\n }\n}\n\nfunction parseDueDateResult(\n value: unknown,\n request: ISetDebtusSourceObligationDueDateV1Request,\n): IDebtusSourceObligationDueDateV1 {\n const result = parseDebtusSourceObligationDueDateV1(\n value,\n request.source,\n request.lineID,\n );\n if (request.dueDate && result['dueDate'] !== request.dueDate) {\n throw new TypeError('Debtus due-date response changed the requested date');\n }\n if (request.todoListID && result['todoListID'] !== request.todoListID) {\n throw new TypeError('Debtus due-date response changed the selected list');\n }\n return result;\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { SneatApiService } from '@sneat/api';\nimport {\n IContactBalance,\n ICreateDebtRecordRequest,\n ICreateTransferRequest,\n ICreateTransferResponse,\n IDebtusService,\n IDebtusTransfer,\n ISettleUpRequest,\n apiDirectionToDebtDirection,\n debtDirectionToApiDirection,\n} from '@sneat/extension-debtus-contract';\nimport { Observable, map } from 'rxjs';\n\ninterface IApiContactBalanceDto {\n readonly contactID: string;\n readonly title: string;\n readonly balance: Record<string, number>;\n readonly counterpartySpaceID?: string;\n}\n\ninterface IApiSpaceTransferDto {\n readonly id: string;\n readonly direction: 'u2c' | 'c2u';\n readonly amount: { readonly currency: string; readonly value: number };\n readonly counterpartyContactID: string;\n readonly counterpartyTitle: string;\n readonly note?: string;\n readonly created: string;\n readonly dueOn?: string;\n readonly isReturn: boolean;\n readonly isOutstanding: boolean;\n readonly creatorSpaceID: string;\n readonly counterpartySpaceID?: string;\n}\n\ninterface IApiSpaceTransfersDto {\n readonly transfers: IApiSpaceTransferDto[];\n}\n\ninterface IApiContactDto {\n readonly ID: string;\n readonly UserID?: string;\n readonly Name: string;\n}\n\ninterface IApiCreatedTransferDto {\n readonly Id: string;\n readonly Created: string;\n readonly Amount: { readonly currency: string; readonly value: number };\n readonly IsReturn?: boolean;\n readonly IsOutstanding?: boolean;\n readonly From?: IApiContactDto;\n readonly To?: IApiContactDto;\n readonly Due?: string;\n}\n\ninterface IApiCreateTransferResponse {\n readonly Error?: string;\n readonly Transfer?: IApiCreatedTransferDto;\n readonly UserBalance?: Record<string, number>;\n readonly CounterpartyBalance?: Record<string, number>;\n}\n\n@Injectable()\nexport class DebtusService implements IDebtusService {\n private readonly sneatApiService = inject(SneatApiService);\n\n public createDebtRecord(\n request: ICreateDebtRecordRequest,\n ): Observable<string> {\n return this.sneatApiService.post('debtus/create_debt_record', request);\n }\n\n public getContactBalances(spaceID: string): Observable<IContactBalance[]> {\n const params = new HttpParams().set('spaceID', spaceID);\n return this.sneatApiService\n .get<IApiContactBalanceDto[]>(\n 'api4debtus/space/contact-balances',\n params,\n )\n .pipe(\n map((contacts) =>\n contacts.map((contact) => ({\n contactID: contact.contactID,\n title: contact.title,\n balance: centsBalanceToMajor(contact.balance),\n counterpartySpaceID: contact.counterpartySpaceID,\n })),\n ),\n );\n }\n\n public getContactBalance(\n spaceID: string,\n contactID: string,\n ): Observable<IContactBalance> {\n return this.getContactBalances(spaceID).pipe(\n map((contacts) => contacts.find((c) => c.contactID === contactID)),\n map((contact) => {\n if (!contact) {\n throw new Error(`Debtus contact \"${contactID}\" was not found`);\n }\n return contact;\n }),\n );\n }\n\n public getTransfers(\n spaceID: string,\n contactID?: string,\n ): Observable<IDebtusTransfer[]> {\n let params = new HttpParams().set('spaceID', spaceID);\n if (contactID) {\n params = params.set('contactID', contactID);\n }\n return this.sneatApiService\n .get<IApiSpaceTransfersDto>('api4debtus/space/transfers', params)\n .pipe(map((dto) => dto.transfers.map(mapSpaceTransferDto)));\n }\n\n public getTransfer(\n spaceID: string,\n transferID: string,\n ): Observable<IDebtusTransfer> {\n const params = new HttpParams()\n .set('spaceID', spaceID)\n .set('id', transferID);\n return this.sneatApiService\n .get<IApiSpaceTransferDto>('api4debtus/space/transfer', params)\n .pipe(map(mapSpaceTransferDto));\n }\n\n public createTransfer(\n request: ICreateTransferRequest,\n ): Observable<ICreateTransferResponse> {\n const apiDirection = debtDirectionToApiDirection(request.direction);\n const body = {\n spaceID: request.spaceID,\n direction: apiDirection,\n amount: {\n currency: request.amount.currency,\n value: majorToCents(request.amount.value),\n },\n toContactID: apiDirection === 'u2c' ? request.contactID : undefined,\n fromContactID: apiDirection === 'c2u' ? request.contactID : undefined,\n note: request.note,\n counterpartySpaceID: request.counterpartySpaceID || undefined,\n isReturn: request.isReturn ?? false,\n returnToTransferID: request.returnToTransferID,\n dueOn: request.dueOn,\n };\n return this.sneatApiService\n .post<IApiCreateTransferResponse>('api4debtus/create-transfer', body)\n .pipe(map((resp) => this.mapCreateResponse(resp, request)));\n }\n\n public settleUp(\n request: ISettleUpRequest,\n ): Observable<ICreateTransferResponse> {\n return this.createTransfer({\n spaceID: request.spaceID,\n direction: request.direction,\n amount: request.amount,\n contactID: request.contactID,\n contactTitle: request.contactTitle,\n isReturn: true,\n counterpartySpaceID: request.counterpartySpaceID,\n });\n }\n\n private mapCreateResponse(\n resp: IApiCreateTransferResponse,\n request: ICreateTransferRequest,\n ): ICreateTransferResponse {\n if (resp.Error) {\n throw new Error(resp.Error);\n }\n if (!resp.Transfer) {\n throw new Error('Debtus create-transfer response omitted the transfer');\n }\n const counterparty = resp.Transfer.To ?? resp.Transfer.From;\n if (!counterparty) {\n throw new Error('Debtus create-transfer response omitted the counterparty');\n }\n return {\n transfer: {\n id: resp.Transfer.Id,\n direction: request.direction,\n amount: {\n currency: request.amount.currency,\n value: centsToMajor(resp.Transfer.Amount.value),\n },\n counterpartyContactID: counterparty.ID,\n counterpartyTitle: counterparty.Name,\n note: request.note,\n created: resp.Transfer.Created,\n dueOn: nonZeroDate(resp.Transfer.Due),\n isReturn: resp.Transfer.IsReturn ?? false,\n isOutstanding:\n resp.Transfer.IsOutstanding ?? !(resp.Transfer.IsReturn ?? false),\n creatorSpaceID: request.spaceID,\n counterpartySpaceID: request.counterpartySpaceID,\n },\n userBalance: centsBalanceToMajor(resp.UserBalance ?? {}),\n counterpartyBalance: centsBalanceToMajor(\n resp.CounterpartyBalance ?? {},\n ),\n };\n }\n}\n\nfunction mapSpaceTransferDto(dto: IApiSpaceTransferDto): IDebtusTransfer {\n return {\n ...dto,\n direction: apiDirectionToDebtDirection(dto.direction),\n amount: {\n currency: dto.amount.currency as IDebtusTransfer['amount']['currency'],\n value: centsToMajor(dto.amount.value),\n },\n };\n}\n\nfunction centsBalanceToMajor(\n balance: Record<string, number>,\n): IContactBalance['balance'] {\n return Object.fromEntries(\n Object.entries(balance).map(([currency, cents]) => [\n currency,\n centsToMajor(cents),\n ]),\n ) as IContactBalance['balance'];\n}\n\nfunction majorToCents(value: number): number {\n return Math.round(value * 100);\n}\n\nfunction centsToMajor(value: number): number {\n return value / 100;\n}\n\nfunction nonZeroDate(value?: string): string | undefined {\n return !value || value.startsWith('0001-01-01') ? undefined : value;\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { SneatApiService } from '@sneat/api';\nimport {\n type IDebtusTransferDueDateServiceV1,\n type IDebtusTransferDueDateV1,\n type IDebtusTransferRepaymentV1,\n type IRecordDebtusTransferRepaymentV1Request,\n type ISetDebtusTransferDueDateV1Request,\n parseDebtusTransferDueDateV1,\n parseDebtusTransferRepaymentV1,\n} from '@sneat/extension-debtus-contract';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class DebtusTransferDueDateService implements IDebtusTransferDueDateServiceV1 {\n private readonly api = inject(SneatApiService);\n\n public setTransferDueDate(\n request: ISetDebtusTransferDueDateV1Request,\n ): Observable<IDebtusTransferDueDateV1> {\n return this.api\n .post<unknown>('api4debtus/transfer-due-date', request)\n .pipe(\n map((value) =>\n parseDebtusTransferDueDateV1(\n value,\n request.spaceID,\n request.transferID,\n ),\n ),\n );\n }\n\n public getTransferDueDate(\n spaceID: string,\n transferID: string,\n ): Observable<IDebtusTransferDueDateV1> {\n const params = new HttpParams()\n .set('spaceID', spaceID)\n .set('transferID', transferID);\n return this.api\n .get<unknown>('api4debtus/transfer-due-date-status', params)\n .pipe(\n map((value) =>\n parseDebtusTransferDueDateV1(value, spaceID, transferID),\n ),\n );\n }\n\n public recordTransferRepayment(\n request: IRecordDebtusTransferRepaymentV1Request,\n ): Observable<IDebtusTransferRepaymentV1> {\n return this.api\n .post<unknown>('api4debtus/transfer-repayment', request)\n .pipe(map((value) => parseDebtusTransferRepaymentV1(value, request)));\n }\n}\n","import { Provider } from '@angular/core';\nimport {\n DEBTUS_SERVICE,\n DEBTUS_SOURCE_REPAYMENT_SERVICE_V1,\n DEBTUS_SOURCE_OBLIGATION_DUE_DATE_SERVICE_V1,\n DEBTUS_TRANSFER_DUE_DATE_SERVICE,\n} from '@sneat/extension-debtus-contract';\nimport {\n DebtusService,\n DebtusSourceDueDateService,\n DebtusSourceRepaymentService,\n DebtusTransferDueDateService,\n} from './services';\n\n// Registers the concrete DebtusService and binds it to the DEBTUS_SERVICE token so\n// consumers depend only on the IDebtusService contract. Wired in at app\n// bootstrap (consumers do not import this factory directly).\nexport function provideDebtus(): Provider[] {\n return [\n DebtusService,\n DebtusSourceRepaymentService,\n DebtusSourceDueDateService,\n DebtusTransferDueDateService,\n { provide: DEBTUS_SERVICE, useExisting: DebtusService },\n {\n provide: DEBTUS_SOURCE_REPAYMENT_SERVICE_V1,\n useExisting: DebtusSourceRepaymentService,\n },\n {\n provide: DEBTUS_SOURCE_OBLIGATION_DUE_DATE_SERVICE_V1,\n useExisting: DebtusSourceDueDateService,\n },\n {\n provide: DEBTUS_TRANSFER_DUE_DATE_SERVICE,\n useExisting: DebtusTransferDueDateService,\n },\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAYa,4BAA4B,CAAA;AACtB,IAAA,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;AAEvC,IAAA,+BAA+B,CACpC,OAA8C,EAAA;AAE9C,QAAA,MAAM,gBAAgB,GAAG,yCAAyC,CAAC,OAAO,CAAC;QAC3E,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAU,wCAAwC,EAAE,gBAAgB;AACxE,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KACR,0CAA0C,CAAC,KAAK,EAAE,gBAAgB,CAAC,CACpE,CACF;IACL;uGAdW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAA5B,4BAA4B,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;MCAY,0BAA0B,CAAA;AACpB,IAAA,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;AAEvC,IAAA,0BAA0B,CAC/B,OAAmD,EAAA;QAEnD,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAU,uCAAuC,EAAE,OAAO;AAC9D,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D;uGATW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAA1B,0BAA0B,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;AAaD,SAAS,kBAAkB,CACzB,KAAc,EACd,OAAmD,EAAA;AAEnD,IAAA,MAAM,MAAM,GAAG,oCAAoC,CACjD,KAAK,EACL,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,MAAM,CACf;AACD,IAAA,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE;AAC5D,QAAA,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC;IAC5E;AACA,IAAA,IAAI,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,UAAU,EAAE;AACrE,QAAA,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC;IAC3E;AACA,IAAA,OAAO,MAAM;AACf;;MC4Ba,aAAa,CAAA;AACP,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEnD,IAAA,gBAAgB,CACrB,OAAiC,EAAA;QAEjC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC;IACxE;AAEO,IAAA,kBAAkB,CAAC,OAAe,EAAA;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;QACvD,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,mCAAmC,EACnC,MAAM;AAEP,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KACX,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM;YACzB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,YAAA,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;SACjD,CAAC,CAAC,CACJ,CACF;IACL;IAEO,iBAAiB,CACtB,OAAe,EACf,SAAiB,EAAA;AAEjB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,CAC1C,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,EAClE,GAAG,CAAC,CAAC,OAAO,KAAI;YACd,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,CAAA,eAAA,CAAiB,CAAC;YAChE;AACA,YAAA,OAAO,OAAO;QAChB,CAAC,CAAC,CACH;IACH;IAEO,YAAY,CACjB,OAAe,EACf,SAAkB,EAAA;AAElB,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;QACrD,IAAI,SAAS,EAAE;YACb,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;QAC7C;QACA,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAwB,4BAA4B,EAAE,MAAM;AAC/D,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/D;IAEO,WAAW,CAChB,OAAe,EACf,UAAkB,EAAA;AAElB,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU;AAC1B,aAAA,GAAG,CAAC,SAAS,EAAE,OAAO;AACtB,aAAA,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;QACxB,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAuB,2BAA2B,EAAE,MAAM;AAC7D,aAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnC;AAEO,IAAA,cAAc,CACnB,OAA+B,EAAA;QAE/B,MAAM,YAAY,GAAG,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC;AACnE,QAAA,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,MAAM,EAAE;AACN,gBAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;gBACjC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1C,aAAA;AACD,YAAA,WAAW,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS;AACnE,YAAA,aAAa,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS;YACrE,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,YAAA,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,SAAS;AAC7D,YAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;YACnC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB;QACD,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAA6B,4BAA4B,EAAE,IAAI;AACnE,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D;AAEO,IAAA,QAAQ,CACb,OAAyB,EAAA;QAEzB,OAAO,IAAI,CAAC,cAAc,CAAC;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,YAAA,QAAQ,EAAE,IAAI;YACd,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;AACjD,SAAA,CAAC;IACJ;IAEQ,iBAAiB,CACvB,IAAgC,EAChC,OAA+B,EAAA;AAE/B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;QACzE;AACA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;QAC3D,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;QAC7E;QACA,OAAO;AACL,YAAA,QAAQ,EAAE;AACR,gBAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;oBACjC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,iBAAA;gBACD,qBAAqB,EAAE,YAAY,CAAC,EAAE;gBACtC,iBAAiB,EAAE,YAAY,CAAC,IAAI;gBACpC,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,gBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAC9B,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrC,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK;AACzC,gBAAA,aAAa,EACX,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC;gBACnE,cAAc,EAAE,OAAO,CAAC,OAAO;gBAC/B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;AACjD,aAAA;YACD,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;YACxD,mBAAmB,EAAE,mBAAmB,CACtC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAC/B;SACF;IACH;uGAhJW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAb,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;AAoJD,SAAS,mBAAmB,CAAC,GAAyB,EAAA;IACpD,OAAO;AACL,QAAA,GAAG,GAAG;AACN,QAAA,SAAS,EAAE,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC;AACrD,QAAA,MAAM,EAAE;AACN,YAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAiD;YACtE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,SAAA;KACF;AACH;AAEA,SAAS,mBAAmB,CAC1B,OAA+B,EAAA;IAE/B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK;QACjD,QAAQ;QACR,YAAY,CAAC,KAAK,CAAC;AACpB,KAAA,CAAC,CAC2B;AACjC;AAEA,SAAS,YAAY,CAAC,KAAa,EAAA;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAChC;AAEA,SAAS,YAAY,CAAC,KAAa,EAAA;IACjC,OAAO,KAAK,GAAG,GAAG;AACpB;AAEA,SAAS,WAAW,CAAC,KAAc,EAAA;AACjC,IAAA,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS,GAAG,KAAK;AACrE;;MCvOa,4BAA4B,CAAA;AACtB,IAAA,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;AAEvC,IAAA,kBAAkB,CACvB,OAA2C,EAAA;QAE3C,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAU,8BAA8B,EAAE,OAAO;aACrD,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KACR,4BAA4B,CAC1B,KAAK,EACL,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,UAAU,CACnB,CACF,CACF;IACL;IAEO,kBAAkB,CACvB,OAAe,EACf,UAAkB,EAAA;AAElB,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU;AAC1B,aAAA,GAAG,CAAC,SAAS,EAAE,OAAO;AACtB,aAAA,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;QAChC,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAU,qCAAqC,EAAE,MAAM;AAC1D,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KACR,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CACzD,CACF;IACL;AAEO,IAAA,uBAAuB,CAC5B,OAAgD,EAAA;QAEhD,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAU,+BAA+B,EAAE,OAAO;AACtD,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,8BAA8B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACzE;uGAzCW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAA5B,4BAA4B,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;ACAD;AACA;AACA;SACgB,aAAa,GAAA;IAC3B,OAAO;QACL,aAAa;QACb,4BAA4B;QAC5B,0BAA0B;QAC1B,4BAA4B;AAC5B,QAAA,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE;AACvD,QAAA;AACE,YAAA,OAAO,EAAE,kCAAkC;AAC3C,YAAA,WAAW,EAAE,4BAA4B;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,4CAA4C;AACrD,YAAA,WAAW,EAAE,0BAA0B;AACxC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,gCAAgC;AACzC,YAAA,WAAW,EAAE,4BAA4B;AAC1C,SAAA;KACF;AACH;;ACrCA;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@sneat/extension-debtus",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=22.0.0 <23.0.0",
6
6
  "rxjs": "^7.0.0",
7
7
  "@sneat/api": "^0.27.0",
8
- "@sneat/extension-debtus-contract": "^0.2.0"
8
+ "@sneat/extension-debtus-contract": "^0.2.3"
9
9
  },
10
10
  "dependencies": {
11
11
  "tslib": "^2.3.0"
@@ -1,8 +1,22 @@
1
- import { IDebtusService, ICreateDebtRecordRequest, IContactBalance, IDebtusTransfer, ICreateTransferRequest, ICreateTransferResponse, ISettleUpRequest } from '@sneat/extension-debtus-contract';
1
+ import { IDebtusSourceRepaymentServiceV1, IRecordDebtusSourceRepaymentV1Request, IRecordDebtusSourceRepaymentV1Response, IDebtusSourceObligationDueDateServiceV1, ISetDebtusSourceObligationDueDateV1Request, IDebtusSourceObligationDueDateV1, IDebtusService, ICreateDebtRecordRequest, IContactBalance, IDebtusTransfer, ICreateTransferRequest, ICreateTransferResponse, ISettleUpRequest, IDebtusTransferDueDateServiceV1, ISetDebtusTransferDueDateV1Request, IDebtusTransferDueDateV1, IRecordDebtusTransferRepaymentV1Request, IDebtusTransferRepaymentV1 } from '@sneat/extension-debtus-contract';
2
2
  import { Observable } from 'rxjs';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Provider } from '@angular/core';
5
5
 
6
+ declare class DebtusSourceRepaymentService implements IDebtusSourceRepaymentServiceV1 {
7
+ private readonly api;
8
+ recordSourceObligationRepayment(request: IRecordDebtusSourceRepaymentV1Request): Observable<IRecordDebtusSourceRepaymentV1Response>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<DebtusSourceRepaymentService, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<DebtusSourceRepaymentService>;
11
+ }
12
+
13
+ declare class DebtusSourceDueDateService implements IDebtusSourceObligationDueDateServiceV1 {
14
+ private readonly api;
15
+ setSourceObligationDueDate(request: ISetDebtusSourceObligationDueDateV1Request): Observable<IDebtusSourceObligationDueDateV1>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<DebtusSourceDueDateService, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<DebtusSourceDueDateService>;
18
+ }
19
+
6
20
  declare class DebtusService implements IDebtusService {
7
21
  private readonly sneatApiService;
8
22
  createDebtRecord(request: ICreateDebtRecordRequest): Observable<string>;
@@ -17,6 +31,15 @@ declare class DebtusService implements IDebtusService {
17
31
  static ɵprov: i0.ɵɵInjectableDeclaration<DebtusService>;
18
32
  }
19
33
 
34
+ declare class DebtusTransferDueDateService implements IDebtusTransferDueDateServiceV1 {
35
+ private readonly api;
36
+ setTransferDueDate(request: ISetDebtusTransferDueDateV1Request): Observable<IDebtusTransferDueDateV1>;
37
+ getTransferDueDate(spaceID: string, transferID: string): Observable<IDebtusTransferDueDateV1>;
38
+ recordTransferRepayment(request: IRecordDebtusTransferRepaymentV1Request): Observable<IDebtusTransferRepaymentV1>;
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<DebtusTransferDueDateService, never>;
40
+ static ɵprov: i0.ɵɵInjectableDeclaration<DebtusTransferDueDateService>;
41
+ }
42
+
20
43
  declare function provideDebtus(): Provider[];
21
44
 
22
- export { DebtusService, provideDebtus };
45
+ export { DebtusService, DebtusSourceDueDateService, DebtusSourceRepaymentService, DebtusTransferDueDateService, provideDebtus };