import type { Connection, FilterQuery } from 'mongoose';
import * as factory from '../factory';
import { IDocType } from './mongoose/schemas/issuer';
type IIssuer = factory.issuer.IIssuer;
type ISearchConditions = factory.issuer.ISearchConditions;
/**
 * 発行者リポジトリ
 */
export declare class IssuerRepo {
    private readonly issuerModel;
    constructor(connection: Connection);
    static CREATE_MONGO_CONDITIONS(params: ISearchConditions): FilterQuery<factory.issuer.IIssuer>[];
    saveIssuer(params: IIssuer): Promise<{
        id: string;
    }>;
    renameIssuerIdentifier(params: Pick<IIssuer, 'id' | 'identifier'>): Promise<{
        id: string;
    }>;
    projectPublicFields(params: ISearchConditions): Promise<Pick<IIssuer, 'id' | 'identifier' | 'project' | 'name' | 'url'>[]>;
    findById(params: {
        id: string;
        project: {
            id: string;
        };
    }): Promise<IIssuer>;
    findByIdentifier(params: {
        identifier: string;
        project: {
            id: string;
        };
    }): Promise<Pick<IIssuer, 'id' | 'identifier' | 'project' | 'tokenSecret' | 'url'>>;
    deleteById(params: {
        id: string;
        project: {
            id: string;
        };
    }): Promise<void>;
    getCursor(conditions: any, projection: any): import("mongoose").Cursor<import("mongoose").Document<unknown, {}, IDocType> & factory.issuer.IIssuer & {
        hasMemberProgram?: (
        /**
         * 発行者リポジトリ
         */
        factory.issuer.IMemberProgram & {
            hasTiers?: Pick<factory.issuer.IMemberProgramTier, "identifier" | "typeOf">[];
        })[];
    } & {
        _id: import("mongoose").Types.ObjectId;
    }, import("mongoose").QueryOptions<import("mongoose").Document<unknown, {}, IDocType> & factory.issuer.IIssuer & {
        hasMemberProgram?: (factory.issuer.IMemberProgram & {
            hasTiers?: Pick<factory.issuer.IMemberProgramTier, "identifier" | "typeOf">[];
        })[];
    } & {
        _id: import("mongoose").Types.ObjectId;
    }>>;
}
export {};
