UNPKG

friday-widgets

Version:

Professional embeddable accounting widgets for vertical SaaS platforms. Layer Financial-inspired design with comprehensive financial reporting capabilities.

372 lines 11.1 kB
/** * TypeScript definitions for Friday Accounting System * Based on Django backend models and API structure */ export interface BaseEntity { id: string; created_at: string; updated_at: string; external_id?: string; metadata?: Record<string, any>; } export interface PartnerAuth { api_key: string; partner_id?: string; } export interface Business extends BaseEntity { legal_name: string; name: string; entity_type: 'limited' | 'llp' | 'sole_trader' | 'partnership' | 'plc' | 'other'; country: 'GB' | 'DE' | 'FR' | 'NL' | 'ES' | 'IT' | 'IE' | 'BE' | 'AT' | 'PT'; email?: string; phone_number?: string; vat_number?: string; company_number?: string; base_currency: 'GBP' | 'EUR' | 'USD'; accounting_method: 'cash' | 'accrual'; fiscal_year_end?: string; is_active: boolean; } export interface JournalEntry extends BaseEntity { business_id: string; sequence_number: string; entry_date: string; reference: string; description: string; is_posted: boolean; posted_at?: string; auto_post_eligible: boolean; requires_review: boolean; ai_confidence_score?: number; created_by: 'ai' | 'manual' | 'system' | 'import'; bank_transaction_id?: string; accounting_period_id: string; lines: JournalEntryLine[]; total_debits_cents: number; total_credits_cents: number; total_debits: number; total_credits: number; is_balanced: boolean; balance_difference_cents: number; can_be_posted: boolean; } export interface JournalEntryLine extends BaseEntity { journal_entry_id: string; ledger_account_id: string; debit_amount_cents: number; credit_amount_cents: number; description?: string; line_number: number; external_reference?: string; account?: Account; account_code: string; account_name: string; amount_cents: number; amount: number; display_amount: string; is_debit: boolean; is_credit: boolean; side: 'DR' | 'CR'; } export interface NewJournalEntry { entry_date: string; reference: string; description: string; lines: NewJournalEntryLine[]; created_by?: 'manual'; } export interface NewJournalEntryLine { ledger_account_id: string; debit_amount_cents?: number; credit_amount_cents?: number; description?: string; line_number: number; } export interface Customer extends BaseEntity { business_id: string; reference_number?: string; individual_name?: string; company_name?: string; email?: string; mobile_phone?: string; office_phone?: string; address_line1?: string; address_line2?: string; city?: string; postal_code?: string; country: string; vat_number?: string; status: 'active' | 'archived' | 'suspended'; payment_terms_days?: number; } export interface Invoice extends BaseEntity { business_id: string; customer: string; customer_name?: string; invoice_number: string; invoice_type: 'invoice' | 'credit_note' | 'proforma'; status: 'draft' | 'sent' | 'paid' | 'partially_paid' | 'overdue' | 'cancelled' | 'refunded'; issue_date: string; due_date: string; currency: 'GBP' | 'EUR' | 'USD'; subtotal: number; tax_amount: number; total_amount: number; paid_amount: number; outstanding_amount: number; tax_rate: number; tax_inclusive: boolean; payment_terms_days?: number; description?: string; purchase_order_number?: string; project_reference?: string; } export interface InvoiceLineItem extends BaseEntity { invoice_id: string; line_number: number; description: string; quantity: number; unit_price_cents: number; tax_rate: number; line_total_cents: number; revenue_account_id?: string; } export interface Payment extends BaseEntity { business_id: string; customer: string; payment_reference?: string; payment_date: string; payment_method: 'bank_transfer' | 'credit_card' | 'cash' | 'check' | 'other'; currency: 'GBP' | 'EUR' | 'USD'; total_amount: number; allocated_amount: number; unallocated_amount: number; processing_fee?: number; status: 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled'; processor_reference?: string; bank_reference?: string; notes?: string; } export interface PaymentAllocation extends BaseEntity { payment_id: string; invoice_id: string; invoice?: Invoice; amount_cents: number; allocation_date: string; } export interface Account extends BaseEntity { business_id: string; code: string; account_type: 'current_asset' | 'fixed_asset' | 'other_asset' | 'current_liability' | 'long_term_liability' | 'equity' | 'revenue' | 'operating_expense' | 'cost_of_goods_sold'; account_subtype?: string; custom_name?: string; parent_account?: string; institution_name?: string; iban?: string; sort_code?: string; account_number_mask?: string; current_balance: number; is_active: boolean; ai_keywords?: string[]; name?: string; normal_balance: 'debit' | 'credit'; } export interface ApiResponse<T> { success: boolean; data?: T; error?: string; details?: string; } export interface PaginatedResponse<T> { results: T[]; count: number; next?: string; previous?: string; } export interface DjangoResponse<T> extends T { } export interface CreateBusinessRequest { external_id?: string; legal_name: string; name: string; entity_type: 'limited' | 'llp' | 'sole_trader' | 'partnership' | 'plc' | 'other'; country: 'GB' | 'DE' | 'FR' | 'NL' | 'ES' | 'IT' | 'IE' | 'BE' | 'AT' | 'PT'; email?: string; phone_number?: string; vat_number?: string; company_number?: string; base_currency: 'GBP' | 'EUR' | 'USD'; accounting_method: 'cash' | 'accrual'; fiscal_year_end?: string; metadata?: Record<string, any>; } export interface CreateCustomerRequest { business_id: string; external_id?: string; reference_number?: string; individual_name?: string; company_name?: string; email?: string; mobile_phone?: string; office_phone?: string; address_line1?: string; address_line2?: string; city?: string; postal_code?: string; country: string; vat_number?: string; payment_terms_days?: number; metadata?: Record<string, any>; } export interface CreateInvoiceRequest { business_id: string; external_id?: string; customer: string; invoice_number?: string; invoice_type?: 'invoice' | 'credit_note' | 'proforma'; issue_date: string; due_date: string; currency: 'GBP' | 'EUR' | 'USD'; subtotal: number; tax_amount: number; total_amount: number; tax_rate: number; tax_inclusive: boolean; payment_terms_days?: number; description?: string; purchase_order_number?: string; project_reference?: string; metadata?: Record<string, any>; } export interface CreateAccountRequest { business_id: string; code: string; account_type: 'current_asset' | 'fixed_asset' | 'other_asset' | 'current_liability' | 'long_term_liability' | 'equity' | 'revenue' | 'operating_expense' | 'cost_of_goods_sold'; account_subtype?: string; custom_name?: string; parent_account?: string; institution_name?: string; iban?: string; sort_code?: string; account_number_mask?: string; ai_keywords?: string[]; metadata?: Record<string, any>; } export interface CreatePaymentRequest { business_id: string; external_id?: string; customer: string; payment_reference?: string; payment_date: string; payment_method: 'bank_transfer' | 'credit_card' | 'cash' | 'check' | 'other'; currency: 'GBP' | 'EUR' | 'USD'; total_amount: number; processing_fee?: number; processor_reference?: string; bank_reference?: string; notes?: string; metadata?: Record<string, any>; } export interface PaymentRequest { payment_amount: number; payment_date: string; payment_method: 'bank_transfer' | 'credit_card' | 'cash' | 'check' | 'other'; reference?: string; } export interface InvoiceFilters { status?: 'draft' | 'sent' | 'paid' | 'partially_paid' | 'overdue' | 'cancelled' | 'refunded'; customer_id?: string; date_from?: string; date_to?: string; overdue?: boolean; outstanding?: boolean; search?: string; } export interface AccountFilters { account_type?: string; is_active?: boolean; search?: string; } export interface PaymentFilters { status?: 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled'; customer_id?: string; date_from?: string; date_to?: string; search?: string; } export interface BusinessStats { business_id: string; summary: { total_customers: number; total_invoices: number; total_payments: number; outstanding_amount: number; overdue_amount: number; }; financial: { total_revenue: number; total_received: number; outstanding_invoices: number; overdue_invoices: number; }; recent_activity: { recent_invoices: Invoice[]; recent_payments: Payment[]; }; } export interface WidgetConfig { apiKey: string; businessId: string; theme?: 'light' | 'dark' | 'auto'; baseUrl?: string; } export interface WidgetEvent<T = any> { type: string; data: T; timestamp: number; } export interface ApiError { code: string; message: string; details?: Record<string, any>; } export interface BankTransaction extends BaseEntity { business_id: string; account_id: string; account?: Account; source_transaction_id: string; amount_cents: number; currency: string; direction: 'debit' | 'credit'; description: string; date: string; transaction_type?: string; categorization_status: 'pending' | 'categorized' | 'reviewed' | 'ignored'; suggested_category?: string; confidence_score?: number; category_id?: string; notes?: string; tags?: string[]; merchant_name?: string; location?: string; is_duplicate?: boolean; duplicate_of?: string; } export interface BankTransactionFilters { amount_min?: number; amount_max?: number; account_id?: string; direction?: 'debit' | 'credit'; categorization_status?: 'pending' | 'categorized' | 'reviewed' | 'ignored'; date_from?: string; date_to?: string; category_id?: string; search?: string; } export type Currency = 'GBP' | 'EUR' | 'USD'; export type PaymentMethod = 'bank_transfer' | 'card' | 'cash' | 'cheque' | 'other'; export type InvoiceStatus = 'draft' | 'sent' | 'viewed' | 'partial' | 'paid' | 'overdue' | 'cancelled'; export type PaymentStatus = 'pending' | 'completed' | 'failed' | 'cancelled'; export type TransactionDirection = 'debit' | 'credit'; export type CategorizationStatus = 'pending' | 'categorized' | 'reviewed' | 'ignored'; //# sourceMappingURL=types.d.ts.map