/**
 * Generic Broker Service Interface
 * This interface defines the contract that all broker services must implement
 * to eliminate hardcoded broker-specific checks throughout the codebase
 *
 * NOTE: This interface is being deprecated in favor of IUnifiedBrokerService
 * which provides standardized responses and better business logic encapsulation
 */
export interface BrokerCredentials {
    [key: string]: any;
}
export interface LoginResponse {
    success: boolean;
    message?: string;
    data?: any;
}
export interface OrderRequest {
    symbol: string;
    action: 'BUY' | 'SELL';
    quantity: number;
    orderType: 'MARKET' | 'LIMIT' | 'SL-LIMIT' | 'SL-MARKET';
    price?: number;
    triggerPrice?: number;
    exchange: string;
    productType: string;
    validity: 'DAY' | 'IOC' | 'GTD';
    remarks?: string;
    accountId?: string;
}
export interface OrderResponse {
    success: boolean;
    orderId?: string;
    message?: string;
    data?: any;
}
export interface OrderStatus {
    orderId: string;
    status: string;
    quantity: number;
    filledQuantity: number;
    price: number;
    averagePrice: number;
    timestamp: Date;
}
export interface Position {
    symbol: string;
    quantity: number;
    averagePrice: number;
    currentPrice: number;
    pnl: number;
    exchange: string;
    productType: string;
}
export interface Quote {
    symbol: string;
    price: number;
    change: number;
    changePercent: number;
    volume: number;
    exchange: string;
    timestamp: Date;
}
/**
 * Abstract base class for all broker services
 * Provides common functionality and enforces interface implementation
 */
export declare abstract class IBrokerService {
    protected brokerName: string;
    protected isConnected: boolean;
    protected accountId?: string;
    constructor(brokerName: string);
    abstract login(credentials: BrokerCredentials): Promise<LoginResponse>;
    abstract logout(): Promise<boolean>;
    abstract validateSession(accountId?: string): Promise<boolean>;
    abstract placeOrder(orderRequest: OrderRequest): Promise<OrderResponse>;
    abstract getOrderStatus(accountId: string, orderId: string): Promise<OrderStatus>;
    abstract getOrderHistory(accountId: string): Promise<OrderStatus[]>;
    abstract getPositions(accountId: string): Promise<Position[]>;
    abstract getQuote(symbol: string, exchange: string): Promise<Quote>;
    abstract searchSymbols(query: string, exchange: string): Promise<any[]>;
    getBrokerName(): string;
    isLoggedIn(): boolean;
    getAccountId(): string | undefined;
    protected setConnected(connected: boolean, accountId?: string): void;
    protected createErrorResponse(message: string, error?: any): LoginResponse | OrderResponse;
    protected createSuccessResponse(message: string, data?: any): LoginResponse | OrderResponse;
}
/**
 * Broker Factory Interface
 * Defines how broker instances should be created
 */
export interface IBrokerFactory {
    createBroker(brokerName: string): IBrokerService;
    getSupportedBrokers(): string[];
    isBrokerSupported(brokerName: string): boolean;
}
//# sourceMappingURL=IBrokerService.d.ts.map