import { NormalizedUpstreamOptions, OperationParameter, TypeImport } from '@rxap/ts-morph';
import { ClassDeclaration, Project, SourceFile, WriterFunction } from 'ts-morph';
import { CoerceOperationOptions as NEW_CoerceOperationOptions, CoerceDtoClassOutput, TransformOperation } from '@rxap/ts-morph';
import { CoerceOperationOptions } from './coerce-operation';
import { DtoClassProperty } from '@rxap/ts-morph';
export interface CoerceGetPageOperationOptions extends Omit<CoerceOperationOptions, 'operationName' | 'tsMorphTransform' | 'coerceOperationDtoClass'> {
    tsMorphTransform?: (project: Project, sourceFile: SourceFile, classDeclaration: ClassDeclaration, controllerName: string, moduleSourceFile: SourceFile, pageClassName: string, rowClassName: string) => Partial<NEW_CoerceOperationOptions>;
    /**
     * the name of the property used as row id value. defaults to the value 'uuid'. If null the __rowId property will be
     * set to the absolute row index absolute row index = page * pageSize + rowIndex
     */
    operationName?: string;
    coerceToRowDtoMethod?: (sourceFile: SourceFile, classDeclaration: ClassDeclaration, rowClassName: string, options: CoerceGetPageOperationOptions) => void;
    coerceToPageDtoMethod?: (sourceFile: SourceFile, classDeclaration: ClassDeclaration, pageClassName: string, rowClassName: string, options: CoerceGetPageOperationOptions) => void;
    coerceGetPageDataMethod?: (sourceFile: SourceFile, classDeclaration: ClassDeclaration, moduleSourceFile: SourceFile, options: CoerceGetPageOperationOptions) => void;
    coerceOperationDtoClass?: (classDeclaration: ClassDeclaration, controllerName: string, moduleSourceFile: SourceFile, options: Readonly<CoerceGetPageOperationOptions>) => CoerceDtoClassOutput | null;
    upstream?: NormalizedUpstreamOptions | null;
    idProperty?: OperationParameter;
    rowId: DtoClassProperty | null;
}
export declare function GetPageOperationColumnToCodeText(property: DtoClassProperty): string;
export declare function CoerceToRowDtoMethod(sourceFile: SourceFile, classDeclaration: ClassDeclaration, rowClassName: string, options: CoerceGetPageOperationOptions): void;
export declare function CoerceToPageDtoMethod(sourceFile: SourceFile, classDeclaration: ClassDeclaration, pageClassName: string, rowClassName: string, options: CoerceGetPageOperationOptions): void;
export declare function CoerceGetPageDataMethod(sourceFile: SourceFile, classDeclaration: ClassDeclaration, moduleSourceFile: SourceFile, options: CoerceGetPageOperationOptions): void;
export declare function GetResponseTypeFromUpstream(upstream: NormalizedUpstreamOptions): TypeImport;
export declare function GetRawRowDataType(options: Readonly<CoerceGetPageOperationOptions>): TypeImport;
export declare function BuildGetPageGetDataImplementation(classDeclaration: ClassDeclaration, moduleSourceFile: SourceFile, dto: CoerceDtoClassOutput | null, options: Readonly<CoerceOperationOptions>): TransformOperation;
export declare function CoerceGetPageOperationDtoClass(classDeclaration: ClassDeclaration, controllerName: string, moduleSourceFile: SourceFile, options: Readonly<CoerceGetPageOperationOptions>): CoerceDtoClassOutput | null;
export declare function BuiltGetPageDtoDataMapperImplementation(classDeclaration: ClassDeclaration, moduleSourceFile: SourceFile, dto: CoerceDtoClassOutput | null, options: Readonly<CoerceOperationOptions>): TransformOperation<string | WriterFunction>;
export declare function CoerceGetPageOperation(options: Readonly<CoerceGetPageOperationOptions>): import("@angular-devkit/schematics").Rule;
