import express from "express";
import { AuthInfo } from "./../../GN-common/entity/AuthInfo";
import * as mongoDB from "mongodb";
import { Socket } from "socket.io";
import { SecretInfo } from "./../../GN-common/entity/SecretInfo";
import jwt from "jsonwebtoken";
import { TokenPayload } from "./../../GN-common/entity/TokenPayload";
export declare class ApiMiddleware {
    private static readonly FIVE_MINUTE_TS;
    private static readonly TS_REMOVE_AUTH_INFO_DIC;
    private static readonly DEFAULT_GAME_ID;
    private authInfoDict;
    private authInfoCollection;
    private secretInfoDict;
    private secretInfoCollection;
    private playerGameCollection;
    private expiredToken;
    private privateKeyToken;
    private headerIP;
    private dauLast30Min;
    private maxCCU;
    setSecretInfoCollection(secretInfoCollection: mongoDB.Collection<mongoDB.Document>): void;
    setAuthInfoCollection(authInfoCollection: mongoDB.Collection<mongoDB.Document>): void;
    setPlayerGameCollection(playerGameCollection: mongoDB.Collection<mongoDB.Document>): void;
    setExpiredToken(expiredToken: number): void;
    setPrivateKeyToken(privateKeyToken: string): void;
    setHeaderIP(headerIP: string): void;
    getHeaderIP(): string;
    run(): void;
    private getDAULast30Min;
    private checkAndRemoveDict;
    generateAuthInfo(payload: TokenPayload): AuthInfo;
    verifyAuthToken(authToken: string): jwt.JwtPayload;
    getSecretInfoBySecretKeyInDatabase(secretKey: string): Promise<SecretInfo>;
    getAuthInfoByGNTokenInDatabase(gnToken: string): Promise<AuthInfo>;
    updateSecretInfo(secretInfo: SecretInfo): Promise<void>;
    updateAuthInfo(authInfo: AuthInfo): Promise<void>;
    authenticateTokenViaJson(req: express.Request, res: express.Response, next: Function): Promise<any>;
    authenticateUploadToken(req: express.Request, res: express.Response, next: Function): Promise<any>;
    authenticateTokenViaMsgPack(req: express.Request, res: express.Response, next: Function): Promise<any>;
    getIP(req: express.Request, res: express.Response, next: Function): Promise<any>;
    getReturnCodeAuthenticate(req: express.Request): Promise<number>;
    socketAuthenticateToken(socket: Socket, next: (returnCode: number) => void): Promise<void>;
    createIP(ip: string): string;
    constructor();
}
