@1amageek/tradable
Version:
Cloud Firestore model framework for TypeScript - Google
134 lines (133 loc) • 5.45 kB
TypeScript
import { StockManager } from './StockManager';
import { BalanceManager } from './BalanceManager';
import { OrderManager } from './OrderManager';
import { PayoutManager } from './PayoutManager';
import { SKUProtocol, OrderItemProtocol, OrderProtocol, TradeTransactionProtocol, BalanceTransactionProtocol, AccountProtocol, PaymentOptions, Currency, TransferOptions, UserProtocol, PayoutOptions, TransactionDelegate, TradeDelegate, InventoryStockProtocol, PayoutProtocol } from "./index";
import { DocumentReference, Transaction } from '@google-cloud/firestore';
export declare type ReserveResult = {
authorizeResult?: any;
};
export declare type ReserveCancelResult = {
authorizeCancelResult?: any;
};
export declare type TradeResult<T extends TradeTransactionProtocol> = {
tradeTransactions: T[][];
};
export declare type CaptureResult = {
balanceTransaction?: BalanceTransactionProtocol;
paymentResult?: any;
refundResult?: any;
};
export declare type CheckoutResult<T extends TradeTransactionProtocol> = {
balanceTransaction?: BalanceTransactionProtocol;
tradeTransactions: T[][];
paymentResult?: any;
refundResult?: any;
};
export declare type CheckoutChangeResult<T extends TradeTransactionProtocol> = {
balanceTransaction?: BalanceTransactionProtocol;
tradeTransactions: T[][];
refundResult: any;
};
export declare type CheckoutCancelResult<T extends TradeTransactionProtocol> = {
balanceTransaction?: BalanceTransactionProtocol;
tradeTransactions: T[];
refundResult: any;
};
export declare type TransferResult = {
balanceTransaction?: BalanceTransactionProtocol;
transferResult?: any;
transferCancelResult?: any;
};
export declare type TransferCancelResult = {
balanceTransaction?: BalanceTransactionProtocol;
transferCancelResult?: any;
};
export declare type PayoutResult = {
balanceTransaction?: BalanceTransactionProtocol;
payoutResult?: any;
};
export declare class Manager<InventoryStock extends InventoryStockProtocol, SKU extends SKUProtocol<InventoryStock>, OrderItem extends OrderItemProtocol, Order extends OrderProtocol<OrderItem>, TradeTransaction extends TradeTransactionProtocol, BalanceTransaction extends BalanceTransactionProtocol, Payout extends PayoutProtocol, User extends UserProtocol<Order, OrderItem, TradeTransaction>, Account extends AccountProtocol<BalanceTransaction, Payout>> {
private _InventoryStock;
private _SKU;
private _OrderItem;
private _Order;
private _TradeTransaction;
private _BalanceTransaction;
private _Payout;
private _User;
private _Account;
stockManager: StockManager<Order, OrderItem, User, InventoryStock, SKU, TradeTransaction>;
balanceManager: BalanceManager<BalanceTransaction, Payout, Account>;
orderManager: OrderManager<Order, OrderItem, User, TradeTransaction>;
payoutManager: PayoutManager<BalanceTransaction, Payout, Account>;
delegate?: TransactionDelegate;
tradeDelegate?: TradeDelegate;
constructor(inventoryStock: {
new (id?: string, value?: {
[key: string]: any;
}): InventoryStock;
}, sku: {
new (id?: string, value?: {
[key: string]: any;
}): SKU;
}, orderItem: {
new (id?: string, value?: {
[key: string]: any;
}): OrderItem;
}, order: {
new (id?: string, value?: {
[key: string]: any;
}): Order;
}, tradeTransaction: {
new (id?: string, value?: {
[key: string]: any;
}): TradeTransaction;
}, balanceTransaction: {
new (id?: string, value?: {
[key: string]: any;
}): BalanceTransaction;
}, payout: {
new (id?: string, value?: {
[key: string]: any;
}): Payout;
}, user: {
new (id?: string, value?: {
[key: string]: any;
}): User;
}, account: {
new (id?: string, value?: {
[key: string]: any;
}): Account;
});
runTransaction(order: DocumentReference | Order, option: any, block: (order: Order, option: any, transaction: Transaction) => Promise<any>): Promise<any>;
/**
* 決済処理、在庫処理を同時に行う
* @param order
* @param orderItems
* @param paymentOptions
*/
checkout(orderReference: DocumentReference, paymentOptions: PaymentOptions): Promise<CheckoutResult<TradeTransaction>>;
/**
* 支払い後、支払いをキャンセルする
*
* @param order
* @param orderItems
* @param paymentOptions
*/
checkoutCancel(order: Order, orderItems: OrderItem[], paymentOptions: PaymentOptions): Promise<any>;
/**
* 支払い後、支払いの内容を変更する
*
* @param order
* @param orderItem
* @param itemID
* @param paymentOptions
*/
checkoutChange(order: Order, orderItem: OrderItem, item: FirebaseFirestore.DocumentReference, paymentOptions: PaymentOptions): Promise<any>;
transfer(order: Order, transferOptions: TransferOptions): Promise<{}>;
transferCancel(order: Order, transferOptions: TransferOptions): Promise<void>;
request(payout: Payout, payoutOptions?: PayoutOptions): Promise<void>;
payout(payout: Payout, payoutOptions: PayoutOptions): Promise<void>;
payoutCancel(accountID: string, currency: Currency, amount: number, payoutOptions: PayoutOptions): Promise<void>;
}