import { IGroupBy, IIndexOnParams, IIndexWithParams, ILetExpr, IndexType, ISelectType, LogicalWhereExpr, SortType } from '../interface/query.types';
/**
 * Build a SELECT N1QL query from user-specified parameters.
 * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/select-syntax.html}
 * @param collection Collection name
 * @param select SELECT Clause param
 * @param letExpr LET Clause param
 * @param where WHERE Clause param
 * @param orderBy ORDER BY Clause param
 * @param limit LIMIT Clause param
 * @param offset OFFSET Clause param
 * @param useExpr USE Clause param
 *
 * @return N1QL SELECT Query
 * */
export declare const selectBuilder: (collection: string, select: ISelectType[] | string, letExpr?: ILetExpr[], where?: LogicalWhereExpr, orderBy?: Record<string, SortType>, limit?: number, offset?: number, useExpr?: string[], groupByExpr?: IGroupBy[], lettingExpr?: ILetExpr[], havingExpr?: LogicalWhereExpr, plainJoinExpr?: string) => string;
/**
 * Create N1QL queries from select array params
 * @param clause SELECT Clause param
 *
 * @return N1QL SELECT Query
 * */
export declare const buildSelectArrayExpr: (clause: ISelectType[]) => string;
/**
 * Recursive function to create N1QL queries.
 * @param n1ql N1QL Query String
 * @param clause SELECT Clause param
 *
 * @return N1QL SELECT Query
 * */
export declare const buildSelectExpr: (n1ql: string, clause: ISelectType) => string;
/**
 * Create WHERE N1QL Expressions.
 * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/where.html}
 * @param clause WHERE Clause param
 * @return N1QL WHERE Expression
 * */
export declare const buildWhereExpr: (expr: LogicalWhereExpr | undefined, clause?: string) => string;
/**
 * @ignore
 *
 **/
export declare const verifyWhereObjectKey: (clause: LogicalWhereExpr) => boolean;
/**
 * Recursive function to create WHERE N1QL Expressions.
 * @param n1ql N1QL Query String
 * @param clause WHERE Clause param
 *
 * @return N1QL WHERE Expression
 * */
export declare const buildWhereClauseExpr: (n1ql: string, clause: LogicalWhereExpr) => string;
/**
 * Build a INDEX N1QL query from user-specified parameters.
 * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/createindex.html}
 * @param collection Collection name
 * @param type INDEX clause types can be 'CREATE' | 'BUILD' | 'DROP' | 'CREATE PRIMARY'
 * @param on ON Clause param
 * @param where WHERE Clause param
 * @param usingGSI use a Global Secondary Index(GSI).
 * @param withExpr WITH Clause param
 *
 * @return N1QL INDEX Query
 * */
export declare const buildIndexExpr: (collection: string, type: IndexType, name: string, on?: IIndexOnParams[], where?: LogicalWhereExpr, usingGSI?: boolean, withExpr?: IIndexWithParams) => string;
