@copytrade/unified-broker
Version:
Unified broker interface library for Indian stock market brokers with plugin architecture
124 lines • 4.81 kB
TypeScript
export interface User {
id: number | string;
email: string;
name: string;
password: string;
created_at: string;
updated_at: string;
}
export interface CreateUserData {
email: string;
name: string;
password: string;
}
export interface UpdateUserData {
email?: string;
name?: string;
password?: string;
}
export interface ConnectedAccount {
id: number | string;
user_id: number | string;
broker_name: string;
account_id: string;
user_name: string;
email: string;
broker_display_name: string;
exchanges: string;
products: string;
encrypted_credentials: string;
created_at: string;
updated_at: string;
}
export interface CreateConnectedAccountData {
user_id: number | string;
broker_name: string;
account_id: string;
user_name: string;
email: string;
broker_display_name: string;
exchanges: string[];
products: any[];
credentials: any;
}
export interface OrderHistory {
id: number | string;
user_id: number | string;
account_id: number | string;
broker_name: string;
broker_order_id: string;
symbol: string;
action: 'BUY' | 'SELL';
quantity: number;
price: number;
order_type: 'MARKET' | 'LIMIT' | 'SL-LIMIT' | 'SL-MARKET';
status: 'PLACED' | 'PENDING' | 'EXECUTED' | 'CANCELLED' | 'REJECTED' | 'PARTIALLY_FILLED';
exchange: string;
product_type: string;
remarks: string;
executed_at: string;
created_at: string;
account_info?: {
account_id: string;
user_name: string;
email: string;
};
}
export interface CreateOrderHistoryData {
user_id: number | string;
account_id: number | string;
broker_name: string;
broker_order_id: string;
symbol: string;
action: 'BUY' | 'SELL';
quantity: number;
price: number;
order_type: 'MARKET' | 'LIMIT' | 'SL-LIMIT' | 'SL-MARKET';
status?: 'PLACED' | 'PENDING' | 'EXECUTED' | 'CANCELLED' | 'REJECTED' | 'PARTIALLY_FILLED';
exchange?: string;
product_type?: string;
remarks?: string;
executed_at: string;
}
export interface OrderFilters {
status?: string;
symbol?: string;
brokerName?: string;
startDate?: string;
endDate?: string;
action?: 'BUY' | 'SELL';
search?: string;
}
/**
* Database Adapter Interface
* Provides a unified interface for different database implementations (MongoDB, etc.)
*/
export interface IDatabaseAdapter {
initialize(): Promise<void> | void;
close(): Promise<void> | void;
isConnected(): boolean;
createUser(userData: CreateUserData): Promise<User> | User;
findUserById(id: number | string): Promise<User | null> | User | null;
findUserByEmail(email: string): Promise<User | null> | User | null;
updateUser(id: number | string, userData: UpdateUserData): Promise<User | null> | User | null;
deleteUser(id: number | string): Promise<boolean> | boolean;
getUserCount(): Promise<number> | number;
searchUsers(query: string): Promise<User[]> | User[];
createConnectedAccount(accountData: CreateConnectedAccountData): Promise<ConnectedAccount> | ConnectedAccount;
getConnectedAccountsByUserId(userId: number | string): Promise<ConnectedAccount[]> | ConnectedAccount[];
getConnectedAccountById(id: number | string): Promise<ConnectedAccount | null> | ConnectedAccount | null;
updateConnectedAccount(id: number | string, accountData: Partial<CreateConnectedAccountData>): Promise<ConnectedAccount | null> | ConnectedAccount | null;
deleteConnectedAccount(id: number | string): Promise<boolean> | boolean;
createOrderHistory(orderData: CreateOrderHistoryData): Promise<OrderHistory> | OrderHistory;
getOrderHistoryById(id: number | string): Promise<OrderHistory | null> | OrderHistory | null;
getOrderHistoryByUserId(userId: number | string, limit?: number, offset?: number): Promise<OrderHistory[]> | OrderHistory[];
getOrderHistoryByUserIdWithFilters(userId: number | string, limit?: number, offset?: number, filters?: OrderFilters): Promise<OrderHistory[]> | OrderHistory[];
updateOrderStatus(id: number | string, status: string): Promise<boolean> | boolean;
updateOrderStatusByBrokerOrderId(brokerOrderId: string, status: string): Promise<boolean> | boolean;
deleteOrderHistory(id: number | string): Promise<boolean> | boolean;
getAllOrderHistory(limit?: number, offset?: number): Promise<OrderHistory[]> | OrderHistory[];
getOrderCountByUserIdWithFilters(userId: number | string, filters?: OrderFilters): Promise<number> | number;
saveUserNotificationPreferences(preferences: any): Promise<boolean> | boolean;
getUserNotificationPreferences(userId: number | string): Promise<any> | any;
}
//# sourceMappingURL=IDatabaseAdapter.d.ts.map