import { b as InvoiceError, D as DocumentSpec, a as InvoiceDocumentResult, I as InvoiceProvider } from '../port-Bdv6n71X.js';

interface MorningCredentials {
    apiUser: string;
    apiPass: string;
    companyId: string;
}
interface MorningClientOptions {
    baseUrl?: string;
    tokenPath?: string;
    documentPath?: string;
    fetch?: typeof fetch;
}
interface MorningTokenResponse {
    access_token?: unknown;
    accessToken?: unknown;
    token?: unknown;
    data?: {
        access_token?: unknown;
        accessToken?: unknown;
        token?: unknown;
    };
}
interface MorningDocumentResponse {
    id?: unknown;
    docNum?: unknown;
    url?: unknown;
    doc_id?: unknown;
    doc_number?: unknown;
    documentId?: unknown;
    documentNumber?: unknown;
    documentUrl?: unknown;
}
declare function invalidMorningCredentialsError(): InvoiceError;
declare function isMorningCredentials(value: unknown): value is MorningCredentials;
declare function validateMorningCredentials(value: unknown): {
    ok: true;
    credentials: MorningCredentials;
} | {
    ok: false;
    error: InvoiceError;
};

interface MorningClient {
    exchangeToken(credentials: MorningCredentials): Promise<string>;
    createDocument(accessToken: string, credentials: MorningCredentials, spec: DocumentSpec): Promise<InvoiceDocumentResult>;
}
declare function createMorningClient(options?: MorningClientOptions): MorningClient;

declare class MorningProvider implements InvoiceProvider {
    readonly kind = "morning";
    readonly client: MorningClient;
    constructor(options?: MorningClientOptions);
    validateCredentials(credential: unknown): Promise<{
        ok: true;
    } | {
        ok: false;
        reason: string;
    }>;
    issue(credential: unknown, spec: DocumentSpec): Promise<InvoiceDocumentResult>;
}

export { type MorningClient, type MorningClientOptions, type MorningCredentials, type MorningDocumentResponse, MorningProvider, type MorningTokenResponse, createMorningClient, invalidMorningCredentialsError, isMorningCredentials, validateMorningCredentials };
