import type { CreateTradeDto, UpdateTradeDto } from './dto/trade.dto';
import type { CreateTradingAccountDto, UpdateTradingAccountDto } from './dto/trading-account.dto';
import { TradingRepository } from './trading.repository';
export declare class TradingService {
    private readonly repository;
    constructor(repository: TradingRepository);
    listAccounts(ownerId: string): Omit<import("drizzle-orm/pg-core").PgSelectBase<"trading_accounts", {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        ownerId: import("drizzle-orm/pg-core").PgColumn<{
            name: "owner_id";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        name: import("drizzle-orm/pg-core").PgColumn<{
            name: "name";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 120;
        }>;
        color: import("drizzle-orm/pg-core").PgColumn<{
            name: "color";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 24;
        }>;
        exchange: import("drizzle-orm/pg-core").PgColumn<{
            name: "exchange";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 80;
        }>;
        description: import("drizzle-orm/pg-core").PgColumn<{
            name: "description";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        version: import("drizzle-orm/pg-core").PgColumn<{
            name: "version";
            tableName: "trading_accounts";
            dataType: "number";
            columnType: "PgInteger";
            data: number;
            driverParam: string | number;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_at";
            tableName: "trading_accounts";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        updatedAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "updated_at";
            tableName: "trading_accounts";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    }, "single", Record<"trading_accounts", "not-null">, false, "where" | "orderBy", {
        id: string;
        ownerId: string;
        name: string;
        color: string | null;
        exchange: string | null;
        description: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
    }[], {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        ownerId: import("drizzle-orm/pg-core").PgColumn<{
            name: "owner_id";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        name: import("drizzle-orm/pg-core").PgColumn<{
            name: "name";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 120;
        }>;
        color: import("drizzle-orm/pg-core").PgColumn<{
            name: "color";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 24;
        }>;
        exchange: import("drizzle-orm/pg-core").PgColumn<{
            name: "exchange";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 80;
        }>;
        description: import("drizzle-orm/pg-core").PgColumn<{
            name: "description";
            tableName: "trading_accounts";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        version: import("drizzle-orm/pg-core").PgColumn<{
            name: "version";
            tableName: "trading_accounts";
            dataType: "number";
            columnType: "PgInteger";
            data: number;
            driverParam: string | number;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_at";
            tableName: "trading_accounts";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        updatedAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "updated_at";
            tableName: "trading_accounts";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    }>, "where" | "orderBy">;
    createAccount(ownerId: string, input: CreateTradingAccountDto): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        ownerId: string;
        version: number;
        color: string | null;
        exchange: string | null;
    }>;
    updateAccount(ownerId: string, id: string, input: UpdateTradingAccountDto): Promise<{
        id: string;
        ownerId: string;
        name: string;
        color: string | null;
        exchange: string | null;
        description: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
    }>;
    deleteAccount(ownerId: string, id: string): Promise<void>;
    listTrades(ownerId: string, accountId: string): Promise<{
        id: string;
        accountId: string;
        openDate: string;
        closeDate: string | null;
        asset: string;
        dir: "LONG" | "SHORT";
        tradeType: "Scalp" | "Daytrade" | "Swing";
        result: "OPEN" | "WIN" | "LOSS" | "BREAKEVEN" | "ORDER";
        entry: string | null;
        exit: string | null;
        sl: string | null;
        tp: string | null;
        liqPrice: string | null;
        lev: string | null;
        capital: string | null;
        qty: string | null;
        baseQty: string | null;
        baseEntry: string | null;
        baseCapital: string | null;
        pnl: string | null;
        setup: string | null;
        emotion: string | null;
        notes: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
        adds: {
            id: string;
            date: string;
            qty: string | null;
            price: string | null;
            margin: string | null;
        }[];
        partials: {
            id: string;
            date: string;
            qty: string | null;
            price: string | null;
            pnl: string | null;
            note: string | null;
        }[];
    }[]>;
    createTrade(ownerId: string, accountId: string, input: CreateTradeDto): Promise<{
        id: string;
        accountId: string;
        openDate: string;
        closeDate: string | null;
        asset: string;
        dir: "LONG" | "SHORT";
        tradeType: "Scalp" | "Daytrade" | "Swing";
        result: "OPEN" | "WIN" | "LOSS" | "BREAKEVEN" | "ORDER";
        entry: string | null;
        exit: string | null;
        sl: string | null;
        tp: string | null;
        liqPrice: string | null;
        lev: string | null;
        capital: string | null;
        qty: string | null;
        baseQty: string | null;
        baseEntry: string | null;
        baseCapital: string | null;
        pnl: string | null;
        setup: string | null;
        emotion: string | null;
        notes: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
        adds: {
            id: string;
            date: string;
            qty: string | null;
            price: string | null;
            margin: string | null;
        }[];
        partials: {
            id: string;
            date: string;
            qty: string | null;
            price: string | null;
            pnl: string | null;
            note: string | null;
        }[];
    }>;
    updateTrade(ownerId: string, id: string, input: UpdateTradeDto): Promise<{
        id: string;
        accountId: string;
        openDate: string;
        closeDate: string | null;
        asset: string;
        dir: "LONG" | "SHORT";
        tradeType: "Scalp" | "Daytrade" | "Swing";
        result: "OPEN" | "WIN" | "LOSS" | "BREAKEVEN" | "ORDER";
        entry: string | null;
        exit: string | null;
        sl: string | null;
        tp: string | null;
        liqPrice: string | null;
        lev: string | null;
        capital: string | null;
        qty: string | null;
        baseQty: string | null;
        baseEntry: string | null;
        baseCapital: string | null;
        pnl: string | null;
        setup: string | null;
        emotion: string | null;
        notes: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
        adds: {
            id: string;
            date: string;
            qty: string | null;
            price: string | null;
            margin: string | null;
        }[];
        partials: {
            id: string;
            date: string;
            qty: string | null;
            price: string | null;
            pnl: string | null;
            note: string | null;
        }[];
    }>;
    deleteTrade(ownerId: string, id: string): Promise<void>;
}
