import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { grpc } from "@improbable-eng/grpc-web";
import { Ruid } from "../../common/ruid";
import { ConfigTargetingRequest } from "./config_request";
import { ConfigTargetingResponse } from "./config_response";
import { ConfigResult } from "./config_result";
import { DebugTrace } from "./debug_info";
import { FeatureProvidedSignals } from "./feature_provided_signals";
import { Namespace } from "./namespace";
export declare const protobufPackage = "snapchat.cdp.cof";
export interface GetAbConfigValuesRequest {
    configNames: string[];
    namespaces: Namespace[];
    cofConfigNames: string[];
    includeAllConfigs: boolean;
    disableExposureLogging: boolean;
    enableDebug: boolean;
}
export interface GetAbConfigValuesResponse {
    configResults: ConfigResult[];
    debugTrace: DebugTrace | undefined;
}
export interface ConfigSetGenerationRequest {
    targetingParameters: ConfigTargetingRequest | undefined;
    overrides: ConfigResult[];
}
export interface ConfigSetGenerationResponse {
    targetingResponse: ConfigTargetingResponse | undefined;
}
export interface PinConfigRequest {
    configSetToken: string;
    userId: string;
    ttlSeconds: number;
}
export interface PinConfigResponse {
    debug: string;
}
export interface UnpinConfigRequest {
    configSetToken: string;
    userId: string;
}
export interface UnpinConfigResponse {
    debug: string;
}
export interface PinTargetingPropertiesRequest {
    userId: string;
    targetingProperties: FeatureProvidedSignals | undefined;
    ttlSeconds: number;
}
export interface PinTargetingPropertiesResponse {
    message: string;
}
export interface UnpinTargetingPropertiesRequest {
    userId: string;
}
export interface UnpinTargetingPropertiesResponse {
    message: string;
}
export interface GetPinnedTargetingPropertiesRequest {
    userId: string;
}
export interface GetPinnedTargetingPropertiesResponse {
    targetingProperties: FeatureProvidedSignals | undefined;
}
export interface ConfigWithNamespace {
    configName: string;
    namespace: Namespace;
}
export interface GetConfigValuesByTokenRequest {
    token: string;
    configNames: ConfigWithNamespace[];
    namespaces: Namespace[];
    disableExposureLogging: boolean;
    getAllConfigs: boolean;
}
export interface GetConfigValuesByTokenResponse {
    configResults: ConfigResult[];
}
export interface GetCachedConfigResultSequenceIdsRequest {
}
export interface GetCachedConfigResultSequenceIdsResponse {
    serializedBitmap: Uint8Array;
}
export interface GetConfigResultsBySequenceIdsRequest {
    sequenceIds: number[];
}
export interface ConfigResultWithSequenceId {
    sequenceId: number;
    configResult: ConfigResult | undefined;
}
export interface GetConfigResultsBySequenceIdsResponse {
    configResultWithSequenceIds: ConfigResultWithSequenceId[];
}
export interface GetBitmapByTokenRequest {
    token: string;
}
export interface GetBitmapByTokenResponse {
    idBitmap: Uint8Array;
}
export interface GetUnevaluatedConfigResultsWithAbTargetingRequest {
    namespaces: Namespace[];
    edgeConfigClientVersion: string;
}
export interface GetUnevaluatedConfigResultsWithAbTargetingResponse {
    configResults: ConfigResult[];
}
export interface AddRuidsForDebuggingRequest {
    ruids: Ruid[];
    configNames: string[];
    maxSnapshots: number;
}
export interface AddRuidsForDebuggingResponse {
}
export declare const GetAbConfigValuesRequest: MessageFns<GetAbConfigValuesRequest>;
export declare const GetAbConfigValuesResponse: MessageFns<GetAbConfigValuesResponse>;
export declare const ConfigSetGenerationRequest: MessageFns<ConfigSetGenerationRequest>;
export declare const ConfigSetGenerationResponse: MessageFns<ConfigSetGenerationResponse>;
export declare const PinConfigRequest: MessageFns<PinConfigRequest>;
export declare const PinConfigResponse: MessageFns<PinConfigResponse>;
export declare const UnpinConfigRequest: MessageFns<UnpinConfigRequest>;
export declare const UnpinConfigResponse: MessageFns<UnpinConfigResponse>;
export declare const PinTargetingPropertiesRequest: MessageFns<PinTargetingPropertiesRequest>;
export declare const PinTargetingPropertiesResponse: MessageFns<PinTargetingPropertiesResponse>;
export declare const UnpinTargetingPropertiesRequest: MessageFns<UnpinTargetingPropertiesRequest>;
export declare const UnpinTargetingPropertiesResponse: MessageFns<UnpinTargetingPropertiesResponse>;
export declare const GetPinnedTargetingPropertiesRequest: MessageFns<GetPinnedTargetingPropertiesRequest>;
export declare const GetPinnedTargetingPropertiesResponse: MessageFns<GetPinnedTargetingPropertiesResponse>;
export declare const ConfigWithNamespace: MessageFns<ConfigWithNamespace>;
export declare const GetConfigValuesByTokenRequest: MessageFns<GetConfigValuesByTokenRequest>;
export declare const GetConfigValuesByTokenResponse: MessageFns<GetConfigValuesByTokenResponse>;
export declare const GetCachedConfigResultSequenceIdsRequest: MessageFns<GetCachedConfigResultSequenceIdsRequest>;
export declare const GetCachedConfigResultSequenceIdsResponse: MessageFns<GetCachedConfigResultSequenceIdsResponse>;
export declare const GetConfigResultsBySequenceIdsRequest: MessageFns<GetConfigResultsBySequenceIdsRequest>;
export declare const ConfigResultWithSequenceId: MessageFns<ConfigResultWithSequenceId>;
export declare const GetConfigResultsBySequenceIdsResponse: MessageFns<GetConfigResultsBySequenceIdsResponse>;
export declare const GetBitmapByTokenRequest: MessageFns<GetBitmapByTokenRequest>;
export declare const GetBitmapByTokenResponse: MessageFns<GetBitmapByTokenResponse>;
export declare const GetUnevaluatedConfigResultsWithAbTargetingRequest: MessageFns<GetUnevaluatedConfigResultsWithAbTargetingRequest>;
export declare const GetUnevaluatedConfigResultsWithAbTargetingResponse: MessageFns<GetUnevaluatedConfigResultsWithAbTargetingResponse>;
export declare const AddRuidsForDebuggingRequest: MessageFns<AddRuidsForDebuggingRequest>;
export declare const AddRuidsForDebuggingResponse: MessageFns<AddRuidsForDebuggingResponse>;
export interface CircumstancesService {
    targetingQuery(request: DeepPartial<ConfigTargetingRequest>, metadata?: grpc.Metadata): Promise<ConfigTargetingResponse>;
    getAbConfigValues(request: DeepPartial<GetAbConfigValuesRequest>, metadata?: grpc.Metadata): Promise<GetAbConfigValuesResponse>;
    getConfigValuesByToken(request: DeepPartial<GetConfigValuesByTokenRequest>, metadata?: grpc.Metadata): Promise<GetConfigValuesByTokenResponse>;
    getConfigResultsBySequenceIds(request: DeepPartial<GetConfigResultsBySequenceIdsRequest>, metadata?: grpc.Metadata): Promise<GetConfigResultsBySequenceIdsResponse>;
    getCachedConfigResultSequenceIds(request: DeepPartial<GetCachedConfigResultSequenceIdsRequest>, metadata?: grpc.Metadata): Promise<GetCachedConfigResultSequenceIdsResponse>;
    getBitmapByToken(request: DeepPartial<GetBitmapByTokenRequest>, metadata?: grpc.Metadata): Promise<GetBitmapByTokenResponse>;
    generateConfigSet(request: DeepPartial<ConfigSetGenerationRequest>, metadata?: grpc.Metadata): Promise<ConfigSetGenerationResponse>;
    pinConfigSet(request: DeepPartial<PinConfigRequest>, metadata?: grpc.Metadata): Promise<PinConfigResponse>;
    unpinConfigSet(request: DeepPartial<UnpinConfigRequest>, metadata?: grpc.Metadata): Promise<UnpinConfigResponse>;
    getUnevaluatedConfigResultsWithAbTargeting(request: DeepPartial<GetUnevaluatedConfigResultsWithAbTargetingRequest>, metadata?: grpc.Metadata): Promise<GetUnevaluatedConfigResultsWithAbTargetingResponse>;
    addRuidsForDebugging(request: DeepPartial<AddRuidsForDebuggingRequest>, metadata?: grpc.Metadata): Promise<AddRuidsForDebuggingResponse>;
    pinTargetingProperties(request: DeepPartial<PinTargetingPropertiesRequest>, metadata?: grpc.Metadata): Promise<PinTargetingPropertiesResponse>;
    unpinTargetingProperties(request: DeepPartial<UnpinTargetingPropertiesRequest>, metadata?: grpc.Metadata): Promise<UnpinTargetingPropertiesResponse>;
    getPinnedTargetingProperties(request: DeepPartial<GetPinnedTargetingPropertiesRequest>, metadata?: grpc.Metadata): Promise<GetPinnedTargetingPropertiesResponse>;
}
export declare class CircumstancesServiceClientImpl implements CircumstancesService {
    private readonly rpc;
    constructor(rpc: Rpc);
    targetingQuery(request: DeepPartial<ConfigTargetingRequest>, metadata?: grpc.Metadata): Promise<ConfigTargetingResponse>;
    getAbConfigValues(request: DeepPartial<GetAbConfigValuesRequest>, metadata?: grpc.Metadata): Promise<GetAbConfigValuesResponse>;
    getConfigValuesByToken(request: DeepPartial<GetConfigValuesByTokenRequest>, metadata?: grpc.Metadata): Promise<GetConfigValuesByTokenResponse>;
    getConfigResultsBySequenceIds(request: DeepPartial<GetConfigResultsBySequenceIdsRequest>, metadata?: grpc.Metadata): Promise<GetConfigResultsBySequenceIdsResponse>;
    getCachedConfigResultSequenceIds(request: DeepPartial<GetCachedConfigResultSequenceIdsRequest>, metadata?: grpc.Metadata): Promise<GetCachedConfigResultSequenceIdsResponse>;
    getBitmapByToken(request: DeepPartial<GetBitmapByTokenRequest>, metadata?: grpc.Metadata): Promise<GetBitmapByTokenResponse>;
    generateConfigSet(request: DeepPartial<ConfigSetGenerationRequest>, metadata?: grpc.Metadata): Promise<ConfigSetGenerationResponse>;
    pinConfigSet(request: DeepPartial<PinConfigRequest>, metadata?: grpc.Metadata): Promise<PinConfigResponse>;
    unpinConfigSet(request: DeepPartial<UnpinConfigRequest>, metadata?: grpc.Metadata): Promise<UnpinConfigResponse>;
    getUnevaluatedConfigResultsWithAbTargeting(request: DeepPartial<GetUnevaluatedConfigResultsWithAbTargetingRequest>, metadata?: grpc.Metadata): Promise<GetUnevaluatedConfigResultsWithAbTargetingResponse>;
    addRuidsForDebugging(request: DeepPartial<AddRuidsForDebuggingRequest>, metadata?: grpc.Metadata): Promise<AddRuidsForDebuggingResponse>;
    pinTargetingProperties(request: DeepPartial<PinTargetingPropertiesRequest>, metadata?: grpc.Metadata): Promise<PinTargetingPropertiesResponse>;
    unpinTargetingProperties(request: DeepPartial<UnpinTargetingPropertiesRequest>, metadata?: grpc.Metadata): Promise<UnpinTargetingPropertiesResponse>;
    getPinnedTargetingProperties(request: DeepPartial<GetPinnedTargetingPropertiesRequest>, metadata?: grpc.Metadata): Promise<GetPinnedTargetingPropertiesResponse>;
}
export declare const CircumstancesServiceDesc: {
    serviceName: string;
};
export declare const CircumstancesServicetargetingQueryDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicegetAbConfigValuesDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicegetConfigValuesByTokenDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicegetConfigResultsBySequenceIdsDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicegetCachedConfigResultSequenceIdsDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicegetBitmapByTokenDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicegenerateConfigSetDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicepinConfigSetDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServiceunpinConfigSetDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicegetUnevaluatedConfigResultsWithAbTargetingDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServiceaddRuidsForDebuggingDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicepinTargetingPropertiesDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServiceunpinTargetingPropertiesDesc: UnaryMethodDefinitionish;
export declare const CircumstancesServicegetPinnedTargetingPropertiesDesc: UnaryMethodDefinitionish;
interface UnaryMethodDefinitionishR extends grpc.UnaryMethodDefinition<any, any> {
    requestStream: any;
    responseStream: any;
}
type UnaryMethodDefinitionish = UnaryMethodDefinitionishR;
interface Rpc {
    unary<T extends UnaryMethodDefinitionish>(methodDesc: T, request: any, metadata: grpc.Metadata | undefined): Promise<any>;
}
export declare class GrpcWebImpl {
    private host;
    private options;
    constructor(host: string, options: {
        transport?: grpc.TransportFactory;
        debug?: boolean;
        metadata?: grpc.Metadata;
        upStreamRetryCodes?: number[];
    });
    unary<T extends UnaryMethodDefinitionish>(methodDesc: T, _request: any, metadata: grpc.Metadata | undefined): Promise<any>;
}
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & {
    [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
};
export declare class GrpcWebError extends globalThis.Error {
    code: grpc.Code;
    metadata: grpc.Metadata;
    constructor(message: string, code: grpc.Code, metadata: grpc.Metadata);
}
export interface MessageFns<T> {
    encode(message: T, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): T;
    create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
    fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
}
export {};
//# sourceMappingURL=circumstance_service.d.ts.map