import { LimitedContext } from "../helpers/matchEndpoints";
import { Endpoint } from "./Config";
import { IPList } from "./api/fetchBlockedLists";
export declare class ServiceConfig {
    private lastUpdatedAt;
    private receivedAnyStats;
    private blockedUserIds;
    private bypassedIPAddresses;
    private nonGraphQLEndpoints;
    private graphqlFields;
    private blockedIPAddresses;
    private blockedUserAgentRegex;
    private allowedIPAddresses;
    constructor(endpoints: Endpoint[], lastUpdatedAt: number, blockedUserIds: string[], bypassedIPAddresses: string[], receivedAnyStats: boolean, blockedIPAddresses: IPList[], allowedIPAddresses: IPList[]);
    private setEndpoints;
    getEndpoints(context: LimitedContext): Endpoint[];
    getGraphQLField(context: LimitedContext, name: string, operationType: string): Endpoint | undefined;
    private setBypassedIPAddresses;
    isBypassedIP(ip: string): boolean;
    private setBlockedUserIds;
    isUserBlocked(userId: string): boolean;
    isIPAddressBlocked(ip: string): {
        blocked: true;
        reason: string;
    } | {
        blocked: false;
    };
    private setBlockedIPAddresses;
    updateBlockedIPAddresses(blockedIPAddresses: IPList[]): void;
    updateBlockedUserAgents(blockedUserAgents: string): void;
    isUserAgentBlocked(ua: string): {
        blocked: boolean;
    };
    private setAllowedIPAddresses;
    updateAllowedIPAddresses(ipAddresses: IPList[]): void;
    isAllowedIPAddress(ip: string): {
        allowed: boolean;
    };
    updateConfig(endpoints: Endpoint[], lastUpdatedAt: number, blockedUserIds: string[], bypassedIPAddresses: string[], hasReceivedAnyStats: boolean): void;
    getLastUpdatedAt(): number;
    hasReceivedAnyStats(): boolean;
}
