/** * DemoFrihetClient — the `FRIHET_DEMO=1` seam. * * A drop-in IFrihetClient that makes ZERO network calls: it serves the canned * PII-safe fixtures in demo-fixtures.ts. index.ts swaps this in for FrihetClient * when demo mode is on, so tools (which stringify the client's return value) * automatically propagate the `_demo`/`_demoNotice` banner without any change * under src/tools/. * * Response contract (see SPEC-mcp-demo-mode.md option B/C): * - reads/lists → fixture data stamped `_demo:true` (READ notice). * - lists without fixtures → EMPTY PaginatedResponse, still stamped. * - writes → plausible fixture-shaped object with a `demo_`-prefixed id * (WRITE notice "…Simulated — not persisted."). * - fiscal / e-invoice / email / payroll → SIMULATED labeled response, NEVER * a real submission (FISCAL notice). * - delete / remove methods → resolve void (interface return type forbids a * stamp; this is the one accepted, documented gap). */ import type { IFrihetClient } from "./client-interface.js"; import type { CreateWebhookInput, CreateWebhookResult, PaginatedResponse, UpdateWebhookInput, Webhook } from "./types.js"; import type { BinaryDocument, EInvoiceDocument } from "./client.js"; type Rec = Record; export declare class DemoFrihetClient implements IFrihetClient { listInvoices(params?: { limit?: number; offset?: number; }): Promise>; getInvoice(id: string): Promise; createInvoice(data: Rec): Promise; updateInvoice(id: string, data: Rec): Promise; deleteInvoice(_id: string): Promise; searchInvoices(query: string, params?: { limit?: number; offset?: number; }): Promise>; listExpenses(params?: { limit?: number; offset?: number; }): Promise>; getExpense(id: string): Promise; createExpense(data: Rec): Promise; updateExpense(id: string, data: Rec): Promise; deleteExpense(_id: string): Promise; listClients(params?: { limit?: number; offset?: number; }): Promise>; getClient(id: string): Promise; createClient(data: Rec): Promise; updateClient(id: string, data: Rec): Promise; deleteClient(_id: string): Promise; listProducts(params?: { limit?: number; offset?: number; }): Promise>; getProduct(id: string): Promise; createProduct(data: Rec): Promise; updateProduct(id: string, data: Rec): Promise; deleteProduct(_id: string): Promise; listQuotes(params?: { limit?: number; offset?: number; }): Promise>; getQuote(id: string): Promise; createQuote(data: Rec): Promise; updateQuote(id: string, data: Rec): Promise; deleteQuote(_id: string): Promise; listVendors(params?: { limit?: number; offset?: number; }): Promise>; getVendor(id: string): Promise; createVendor(data: Rec): Promise; updateVendor(id: string, data: Rec): Promise; deleteVendor(_id: string): Promise; sendInvoice(id: string, to?: string): Promise; markInvoicePaid(id: string, paidDate?: string): Promise; getInvoicePdf(id: string): Promise; getInvoiceEInvoice(invoiceId: string): Promise; createCreditNote(invoiceId: string, data: { reason: string; reasonDescription?: string; fullCredit?: boolean; issueDate?: string; }, _idempotencyKey?: string): Promise; applyLateFee(invoiceId: string, data?: { amount?: number; daysOverdue?: number; }): Promise; sendQuote(id: string, to?: string): Promise; listWebhooks(): Promise<{ data: Webhook[]; total: number; _demo?: true; _demoNotice?: string; }>; getWebhook(id: string): Promise; createWebhook(data: CreateWebhookInput): Promise; updateWebhook(id: string, data: UpdateWebhookInput): Promise; deleteWebhook(_id: string): Promise; listClientContacts(_clientId: string, params?: { limit?: number; offset?: number; }): Promise>; createClientContact(clientId: string, data: Rec): Promise; deleteClientContact(_clientId: string, _contactId: string): Promise; listClientActivities(_clientId: string, params?: { limit?: number; offset?: number; }): Promise>; logClientActivity(_clientId: string, data: Rec): Promise; listClientNotes(_clientId: string, params?: { limit?: number; offset?: number; }): Promise>; createClientNote(clientId: string, data: Rec): Promise; deleteClientNote(_clientId: string, _noteId: string): Promise; listDeposits(params?: { limit?: number; offset?: number; }): Promise>; getDeposit(id: string): Promise; createDeposit(data: Rec): Promise; updateDeposit(id: string, data: Rec): Promise; deleteDeposit(_id: string): Promise; applyDeposit(id: string, data?: Rec): Promise; refundDeposit(id: string, data?: Rec): Promise; getBusinessContext(): Promise; getMonthlySummary(month?: string): Promise; getQuarterlyTaxes(quarter?: string): Promise; sendEInvoice(_params: { invoiceId: string; format: string; dispatchMode: string; }): Promise<{ workflowRunId: string; status: "queued"; estimatedCompletionSec: number; }>; getEInvoiceStatus(_workflowRunId: string): Promise<{ status: "queued" | "running" | "succeeded" | "failed" | "cancelled"; step: string; error?: string; ackId?: string; pdfA3Url?: string; xmlUrl?: string; }>; validateEInvoiceXml(_params: { xml: string; format: string; }): Promise<{ valid: boolean; errors: Array<{ severity: string; location: string; message: string; rule: string; }>; validator: "kosit" | "mustang" | "xsd" | "schematron"; durationMs: number; }>; exportDatev(params: { periodStart: string; periodEnd: string; format: string; }): Promise<{ fileUrl: string; filename: string; rowCount: number; fiscalPeriod: string; encoding: "cp1252"; }>; exportEInvoice(params: { invoiceId: string; format: string; signed?: boolean; }): Promise<{ xmlUrl: string; filename: string; format: string; signed: boolean; }>; faceSubmit(params: { invoiceId: string; mode: "mock" | "sandbox" | "production"; }): Promise<{ registroFACe: string; status: "submitted" | "error"; submittedAt: string; mode: string; }>; faceStatus(_params: { invoiceId: string; }): Promise<{ registroFACe: string; statusCode: string; statusDescription: string; rejectionReason?: string; }>; ticketbaiSubmit(params: { invoiceId: string; sandbox: boolean; }): Promise<{ tbaiId: string; territory: "bizkaia" | "gipuzkoa" | "araba"; status: "submitted" | "accepted" | "rejected" | "error"; sandbox: boolean; qrUrl?: string; }>; ticketbaiStatus(_params: { invoiceId: string; }): Promise<{ tbaiId: string; territory: "bizkaia" | "gipuzkoa" | "araba"; status: "submitted" | "accepted" | "rejected" | "error"; rejectionReason?: string; error?: string; }>; listReservations(params?: { limit?: number; offset?: number; }): Promise>; getReservation(id: string): Promise; createReservation(data: Rec): Promise; listProperties(params?: { limit?: number; offset?: number; }): Promise>; syncChannel(channelId: string, direction: "pull" | "push" | "both"): Promise; listTerminals(params?: { limit?: number; offset?: number; }): Promise>; getSale(id: string): Promise; listSales(params?: { limit?: number; offset?: number; }): Promise>; refundSale(id: string, data?: { amountCents?: number; reason?: string; }): Promise; listKitchenTickets(params?: { limit?: number; offset?: number; }): Promise>; getKitchenTicket(id: string): Promise; updateKitchenTicket(id: string, data: Rec): Promise; listKitchenStations(params?: { limit?: number; offset?: number; }): Promise>; listMenuItems(params?: { limit?: number; offset?: number; }): Promise>; listBankAccounts(params?: { limit?: number; offset?: number; }): Promise>; getBankAccount(id: string): Promise; listTransactions(params?: { limit?: number; offset?: number; }): Promise>; categorizeTransaction(id: string, data: { category: string; notes?: string; }): Promise; matchTransactionToDocument(transactionId: string, data: { documentId: string; documentType: "invoice" | "expense"; notes?: string; }): Promise; getFiscalModeloSummary(modeloCode: string, period?: string): Promise; getVerifactuStatus(invoiceId: string): Promise; resubmitVerifactu(invoiceId: string): Promise; getTicketbaiStatus(invoiceId: string): Promise; listTimeEntries(params?: { limit?: number; offset?: number; }): Promise>; getTimeEntry(id: string): Promise; createTimeEntry(data: Rec): Promise; updateTimeEntry(id: string, data: Rec): Promise; deleteTimeEntry(_id: string): Promise; getTimeSummary(params: { from: string; to: string; }): Promise; listRecurringInvoices(params?: { limit?: number; offset?: number; }): Promise>; getRecurringInvoice(id: string): Promise; createRecurringInvoice(data: Rec): Promise; updateRecurringInvoice(id: string, data: Rec): Promise; pauseRecurringInvoice(id: string): Promise; resumeRecurringInvoice(id: string): Promise; deleteRecurringInvoice(_id: string): Promise; runRecurringNow(templateId: string, options?: { draftOnly?: boolean; }): Promise; listTeamMembers(params?: { limit?: number; offset?: number; }): Promise>; inviteTeamMember(data: { email: string; role: string; name?: string; }): Promise; updateTeamMemberRole(memberId: string, role: string): Promise; removeTeamMember(_memberId: string): Promise; approveGLEntry(entryId: string, notes?: string): Promise; rejectGLEntry(entryId: string, reason: string): Promise; getGLEntryAuditLog(entryId: string): Promise; addCustomPortalDomain(data: { domain: string; workspaceId?: string; }): Promise; verifyCustomPortalDomain(data: { domain: string; }): Promise; removeCustomPortalDomain(data: { domain: string; }): Promise; generatePortalOnboardLink(data: { email: string; name?: string; expiresInHours?: number; workspaceId?: string; }): Promise; lookupTaxIdViaVIES(data: { vatNumber: string; countryCode: string; }): Promise; getIgicModeloSummary(modeloCode: string, params?: { year?: string; period?: string; }): Promise; calculateAiem(data: { ncCode: string; amount: number; description?: string; }): Promise; getISSummary(modeloCode: string, params?: { year?: string; installment?: string; }): Promise; listBankRules(params?: { limit?: number; offset?: number; }): Promise>; createBankRule(data: { name: string; conditions: Array<{ field: string; operator: string; value: string; }>; actions: Array<{ type: string; value: string; }>; isActive?: boolean; }): Promise; sendGestoriaMessage(data: { workspaceId: string; parentType: "documentRequest" | "filingItem" | "obligation"; parentId: string; body: string; }): Promise; listGestoriaMessages(_params: { workspaceId: string; parentType: "documentRequest" | "filingItem" | "obligation"; parentId: string; limit?: number; before?: string; }): Promise<{ messages: Array; hasMore: boolean; }>; createGestoriaTemplate(data: { name: string; title: string; description: string; dueDateOffsetDays: number; attachmentRequired?: boolean; variables?: Array<{ key: string; label?: string; defaultValue?: string; }>; }): Promise<{ templateId: string; }>; bulkSendGestoriaTemplate(data: { templateId: string; clientWorkspaceIds: string[]; periodOverrides?: { quarter?: string | number; year?: string | number; month?: string | number; }; }): Promise; getGestoriaAgingConsolidated(_params?: { ownerUid?: string; }): Promise; listLeaves(params?: { limit?: number; offset?: number; }): Promise>; createLeaveRequest(data: { employeeId: string; type: string; startDate: string; endDate: string; reason?: string; }): Promise; approveLeave(leaveId: string, data?: { reason?: string; }): Promise; rejectLeave(leaveId: string, data: { reason: string; }): Promise; cancelLeave(leaveId: string): Promise; attendanceClockIn(data: { employeeId: string; mood?: string; location?: string; }): Promise; attendanceClockOut(entryId: string): Promise; getOvertimeReport(params: { period: string; employeeId?: string; }): Promise; listAnomalies(params?: { limit?: number; offset?: number; }): Promise>; testWebhook(id: string, data?: { eventType?: string; }): Promise; exportPayroll(params: { format: "a3" | "contasol" | "sage" | "siltra"; month: string; }): Promise; getPayrollChecklist(params: { month: string; }): Promise; getOnboardingStatus(): Promise; setOnboardingPersona(data: { persona: "autonomo" | "empresa" | "agencia" | "gestoria"; }): Promise; getPermissionsMatrix(): Promise; getMyPermissions(): Promise; getCurrentPeriod(params?: { fiscalYear?: string; }): Promise; closePeriod(data: { type: "monthly" | "quarterly"; }): Promise; reopenPeriod(data: { periodId: string; reason: string; }): Promise; } export {}; //# sourceMappingURL=demo-client.d.ts.map