import Joi from 'joi'; import { AccessInfo } from '../auth'; export declare enum OrganizationAllow { PAIDChain = "PAIDChain", BANK = "BANK", APPLICANT = "APPLICANT" } export declare enum PAIDChainRole { MAKER = "MAKER", CHECKER = "CHECKER", APPROVER = "APPROVER", OFFICER = "OFFICER", ADMIN = "ADMIN" } export declare enum ServiceRole { MCH_MERCHANT_API = "MCH_MERCHANT_API", MCH_MERCHANT_ADMIN_API = "MCH_MERCHANT_ADMIN_API", MCH_DEAL_API = "MCH_DEAL_API", MCH_INVENTORY_API = "MCH_INVENTORY_API" } export declare enum BankRole { MAKER = "MAKER", CHECKER = "CHECKER", APPROVER = "APPROVER", OFFICER = "OFFICER" } export declare enum Role { APPLICANT = "APPLICANT" } type AllRole = Role | PAIDChainRole | BankRole | ServiceRole; type functionArgs = { thisObject: object; fn: (request: T, accessInfo?: AccessInfo) => Promise; schema: Joi.ObjectSchema; params: T; accessInfo?: AccessInfo; }; export declare class Permission { private static readonly PAIDChainOrgCode; static readonly BankOrgCodePrefix: string; private static readonly IS_BANK_INFRA; static readonly DISABLE_AUTH_CHECK: boolean; static check(organizationAllows: OrganizationAllow[] | OrganizationAllow, accessInfo: AccessInfo): AllRole; private static checkIsApplicant; private static checkIsPAIDChain; private static checkIsService; private static checkIsBank; static executeFunctionWithRole(actual: AllRole, expected: AllRole[] | AllRole, args: functionArgs[] | functionArgs): Promise; private static loopEveryRoleAndCheck; static isBank(): boolean; static details(accessInfo: AccessInfo): { roleType: string; roleOrgCode: string; roleOrgId: number; remoteIp: string; isBankOrg: boolean; isPAIDChainOrg: boolean; }; } export {};