import * as Koa from 'koa';
export interface IDatabaseRouterOptions {
    permissionCheck?: (ctx: Koa.Context, next: () => Promise<any>, database: string, collection: string) => Promise<any>;
    getItemTransform?: (item: any) => Promise<any>;
    putItemTransform?: (item: any) => Promise<any>;
    databases?: {
        [databaseName: string]: {
            getItemTransform?: (item: any) => Promise<any>;
            putItemTransform?: (item: any) => Promise<any>;
            collections?: {
                [collectionName: string]: {
                    getItemTransform?: (item: any) => Promise<any>;
                    putItemTransform?: (item: any) => Promise<any>;
                };
            };
        };
    };
}
export declare function getItemTransform(routerOptions: IDatabaseRouterOptions, databaseName: string, collectionName: string): (item: any) => Promise<any>;
export declare function getGlobalGetItemTransform(routerOptions: IDatabaseRouterOptions): (item: any) => Promise<any>;
export declare function getDatabaseGetItemTransform(routerOptions: IDatabaseRouterOptions, databaseName: string): (item: any) => Promise<any>;
export declare function getCollectionGetItemTransform(routerOptions: IDatabaseRouterOptions, databaseName: string, collectionName: string): (item: any) => Promise<any>;
export declare function putItemTransform(routerOptions: IDatabaseRouterOptions, databaseName: string, collectionName: string): (item: any) => Promise<any>;
export declare function getGlobalPutItemTransform(routerOptions: IDatabaseRouterOptions): (item: any) => Promise<any>;
export declare function getDatabasePutItemTransform(routerOptions: IDatabaseRouterOptions, databaseName: string): (item: any) => Promise<any>;
export declare function getCollectionPutItemTransform(routerOptions: IDatabaseRouterOptions, databaseName: string, collectionName: string): (item: any) => Promise<any>;
