import type { CreatePortfolioTransactionDto, UpdatePortfolioTransactionDto } from './dto/portfolio-transaction.dto';
import type { CreatePortfolioDto, UpdatePortfolioDto } from './dto/portfolio.dto';
import { PortfolioRepository } from './portfolio.repository';
export declare class PortfolioService {
    private readonly repository;
    constructor(repository: PortfolioRepository);
    list(ownerId: string): Omit<import("drizzle-orm/pg-core").PgSelectBase<"portfolios", {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "portfolios";
            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: "portfolios";
            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: "portfolios";
            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;
        }>;
        note: import("drizzle-orm/pg-core").PgColumn<{
            name: "note";
            tableName: "portfolios";
            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: "portfolios";
            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: "portfolios";
            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: "portfolios";
            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<"portfolios", "not-null">, false, "where" | "orderBy", {
        id: string;
        ownerId: string;
        name: string;
        note: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
    }[], {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "portfolios";
            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: "portfolios";
            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: "portfolios";
            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;
        }>;
        note: import("drizzle-orm/pg-core").PgColumn<{
            name: "note";
            tableName: "portfolios";
            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: "portfolios";
            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: "portfolios";
            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: "portfolios";
            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">;
    create(ownerId: string, input: CreatePortfolioDto): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        ownerId: string;
        note: string | null;
        version: number;
    }>;
    update(ownerId: string, id: string, input: UpdatePortfolioDto): Promise<{
        id: string;
        ownerId: string;
        name: string;
        note: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
    }>;
    delete(ownerId: string, id: string): Promise<void>;
    listTransactions(ownerId: string, portfolioId: string): Promise<{
        id: string;
        portfolioId: string;
        type: "deposit" | "withdrawal" | "buy" | "sell" | "order-buy" | "order-sell";
        date: string;
        asset: string | null;
        qty: string | null;
        price: string | null;
        currency: string | null;
        feeQty: string | null;
        feeAsset: string | null;
        cashAmount: string | null;
        cashCurrency: string | null;
        note: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
    }[]>;
    createTransaction(ownerId: string, portfolioId: string, input: CreatePortfolioTransactionDto): Promise<{
        id: string;
        portfolioId: string;
        type: "deposit" | "withdrawal" | "buy" | "sell" | "order-buy" | "order-sell";
        date: string;
        asset: string | null;
        qty: string | null;
        price: string | null;
        currency: string | null;
        feeQty: string | null;
        feeAsset: string | null;
        cashAmount: string | null;
        cashCurrency: string | null;
        note: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
    }>;
    updateTransaction(ownerId: string, id: string, input: UpdatePortfolioTransactionDto): Promise<{
        id: string;
        portfolioId: string;
        type: "deposit" | "withdrawal" | "buy" | "sell" | "order-buy" | "order-sell";
        date: string;
        asset: string | null;
        qty: string | null;
        price: string | null;
        currency: string | null;
        feeQty: string | null;
        feeAsset: string | null;
        cashAmount: string | null;
        cashCurrency: string | null;
        note: string | null;
        version: number;
        createdAt: Date;
        updatedAt: Date;
    }>;
    deleteTransaction(ownerId: string, id: string): Promise<void>;
    private validateTransaction;
}
