53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
import { Document } from 'mongoose';
|
|
import { CryptoUnits, FiatUnits, PaymentStatus } from '../../helper/types';
|
|
|
|
export interface ICart {
|
|
price: number;
|
|
name: string;
|
|
image: string;
|
|
quantity: number;
|
|
}
|
|
|
|
export interface IPaymentMethod {
|
|
method: CryptoUnits;
|
|
amount: number
|
|
}
|
|
|
|
export interface IInvoice extends Document {
|
|
selector: string;
|
|
|
|
// Available payment methods
|
|
// [{ method: 'btc', amount: 0.0000105 }]
|
|
paymentMethods: IPaymentMethod[];
|
|
|
|
// 1Kss3e9iPB9vTgWJJZ1SZNkkFKcFJXPz9t
|
|
receiveAddress: string;
|
|
|
|
paidWith?: CryptoUnits;
|
|
|
|
// Already paid amount, in case that not the entire amount was paid with once.
|
|
// 0.000013
|
|
paid?: number;
|
|
|
|
// Is set when invoice got paid
|
|
// 3b38c3a215d4e7981e1516b2dcbf76fca58911274d5d55b3d615274d6e10f2c1
|
|
transcationHashes?: string[];
|
|
|
|
cart?: ICart[];
|
|
totalPrice?: number;
|
|
currency: FiatUnits;
|
|
|
|
// Time in minutes the user has to pay.
|
|
// Time left = (createdAt + dueBy) - Date.now() / 1000
|
|
dueBy: number;
|
|
|
|
status?: PaymentStatus;
|
|
|
|
// E-Mail address of user, if he want's a confirmation email.
|
|
email?: string;
|
|
|
|
successUrl: string;
|
|
cancelUrl: string;
|
|
|
|
createdAt?: number;
|
|
} |