import { VisualogicContext } from 'visualogic';
import { StripeApiContext } from '../../domain/constants';
import { DeclaredStripeInvoice } from '../../domain/objects/DeclaredStripeInvoice';
/**
 * .what = creates a new invoice draft with stripe
 * .what.requirements
 *   - prevents creating duplicate invoice, per customer
 *   - returns invoice in draft state
 *   - throws error if invoice was already issued
 */
export declare const genInvoiceDraft: <TIssuerRef, TReceiverRef>(input: {
    invoice: Pick<DeclaredStripeInvoice, 'customerRef' | 'exid' | 'config' | 'description' | 'metadata' | 'dueDate'>;
}, context: StripeApiContext & VisualogicContext) => Promise<import("type-fns").HasMetadata<DeclaredStripeInvoice>>;
