import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
export declare const protobufPackage = "snapchat.lenses";
export declare enum HttpRequestMethod {
    HTTP_METHOD_UNSET = "HTTP_METHOD_UNSET",
    HTTP_METHOD_GET = "HTTP_METHOD_GET",
    HTTP_METHOD_POST = "HTTP_METHOD_POST",
    HTTP_METHOD_PUT = "HTTP_METHOD_PUT",
    HTTP_METHOD_DELETE = "HTTP_METHOD_DELETE",
    HTTP_METHOD_PATCH = "HTTP_METHOD_PATCH",
    UNRECOGNIZED = "UNRECOGNIZED"
}
export declare function httpRequestMethodFromJSON(object: any): HttpRequestMethod;
export declare function httpRequestMethodToNumber(object: HttpRequestMethod): number;
export declare enum ResponseCode {
    RESPONSE_CODE_UNSET = "RESPONSE_CODE_UNSET",
    SUCCESS = "SUCCESS",
    REDIRECTED = "REDIRECTED",
    BAD_REQUEST = "BAD_REQUEST",
    ACCESS_DENIED = "ACCESS_DENIED",
    NOT_FOUND = "NOT_FOUND",
    TIMEOUT = "TIMEOUT",
    REQUEST_TOO_LARGE = "REQUEST_TOO_LARGE",
    SERVER_ERROR = "SERVER_ERROR",
    CANCELLED = "CANCELLED",
    PROXY_ERROR = "PROXY_ERROR",
    UNRECOGNIZED = "UNRECOGNIZED"
}
export declare function responseCodeFromJSON(object: any): ResponseCode;
export declare function responseCodeToNumber(object: ResponseCode): number;
export interface PerformHttpCallRequest {
    url: string;
    method: HttpRequestMethod;
    headers: {
        [key: string]: string;
    };
    body: Uint8Array;
    apiSpecId: string;
    isStudioDev: boolean;
}
export interface PerformHttpCallRequest_HeadersEntry {
    key: string;
    value: string;
}
export interface PerformHttpCallResponse {
    code: number;
    headers: {
        [key: string]: string;
    };
    body: Uint8Array;
}
export interface PerformHttpCallResponse_HeadersEntry {
    key: string;
    value: string;
}
export interface GetOAuth2InfoRequest {
    apiSpecId: string;
}
export interface GetOAuth2InfoResponse {
    clientId: string;
    grantType: GetOAuth2InfoResponse_GrantType;
    authorizationUrl: string;
    scope: string;
}
export declare enum GetOAuth2InfoResponse_GrantType {
    GRANT_TYPE_UNSET = "GRANT_TYPE_UNSET",
    AUTHORIZATION_CODE = "AUTHORIZATION_CODE",
    AUTHORIZATION_CODE_WITH_PKCE = "AUTHORIZATION_CODE_WITH_PKCE",
    IMPLICIT = "IMPLICIT",
    CLIENT_CREDENTIALS = "CLIENT_CREDENTIALS",
    UNRECOGNIZED = "UNRECOGNIZED"
}
export declare function getOAuth2InfoResponse_GrantTypeFromJSON(object: any): GetOAuth2InfoResponse_GrantType;
export declare function getOAuth2InfoResponse_GrantTypeToNumber(object: GetOAuth2InfoResponse_GrantType): number;
export interface TokenExchangeError {
    error: TokenExchangeError_TokenExchangeErrorType;
    errorDescription: string;
}
export declare enum TokenExchangeError_TokenExchangeErrorType {
    ERROR_TYPE_UNSET = "ERROR_TYPE_UNSET",
    INVALID_REQUEST = "INVALID_REQUEST",
    INVALID_CLIENT = "INVALID_CLIENT",
    INVALID_GRANT = "INVALID_GRANT",
    UNAUTHORIZED_CLIENT = "UNAUTHORIZED_CLIENT",
    UNSUPPORTED_GRANT_TYPE = "UNSUPPORTED_GRANT_TYPE",
    INVALID_SCOPE = "INVALID_SCOPE",
    UNRECOGNIZED = "UNRECOGNIZED"
}
export declare function tokenExchangeError_TokenExchangeErrorTypeFromJSON(object: any): TokenExchangeError_TokenExchangeErrorType;
export declare function tokenExchangeError_TokenExchangeErrorTypeToNumber(object: TokenExchangeError_TokenExchangeErrorType): number;
export interface TokenDetails {
    accessToken: string;
    tokenType: string;
    expiresInSeconds: string;
    refreshToken: string;
    scope: string;
}
export interface PerformTokenExchangeRequest {
    apiSpecId: string;
    authorizationCode: string;
    codeVerifier: string;
}
export interface PerformTokenExchangeResponse {
    response?: {
        $case: "tokenDetails";
        tokenDetails: TokenDetails;
    } | {
        $case: "error";
        error: TokenExchangeError;
    } | undefined;
}
export interface RefreshTokenRequest {
    apiSpecId: string;
    refreshToken: string;
}
export interface RefreshTokenResponse {
    response?: {
        $case: "tokenDetails";
        tokenDetails: TokenDetails;
    } | {
        $case: "error";
        error: TokenExchangeError;
    } | undefined;
}
export interface PerformApiCallRequest {
    apiSpecSetId: string;
    endpointRefId: string;
    parameters: {
        [key: string]: string;
    };
    body: Uint8Array;
    lensId: string;
    isStudioDev: boolean;
    cacheTtlSec: number;
    linkedResources: LinkedResource[];
}
export interface PerformApiCallRequest_ParametersEntry {
    key: string;
    value: string;
}
export interface PerformApiCallResponse {
    responseCode: ResponseCode;
    metadata: {
        [key: string]: string;
    };
    body: Uint8Array;
    userLocationUsed: boolean;
    linkedResources: LinkedResource[];
}
export interface PerformApiCallResponse_MetadataEntry {
    key: string;
    value: string;
}
export interface LinkedResource {
    url: string;
    encryptionKey: Uint8Array;
}
export declare const PerformHttpCallRequest: MessageFns<PerformHttpCallRequest>;
export declare const PerformHttpCallRequest_HeadersEntry: MessageFns<PerformHttpCallRequest_HeadersEntry>;
export declare const PerformHttpCallResponse: MessageFns<PerformHttpCallResponse>;
export declare const PerformHttpCallResponse_HeadersEntry: MessageFns<PerformHttpCallResponse_HeadersEntry>;
export declare const GetOAuth2InfoRequest: MessageFns<GetOAuth2InfoRequest>;
export declare const GetOAuth2InfoResponse: MessageFns<GetOAuth2InfoResponse>;
export declare const TokenExchangeError: MessageFns<TokenExchangeError>;
export declare const TokenDetails: MessageFns<TokenDetails>;
export declare const PerformTokenExchangeRequest: MessageFns<PerformTokenExchangeRequest>;
export declare const PerformTokenExchangeResponse: MessageFns<PerformTokenExchangeResponse>;
export declare const RefreshTokenRequest: MessageFns<RefreshTokenRequest>;
export declare const RefreshTokenResponse: MessageFns<RefreshTokenResponse>;
export declare const PerformApiCallRequest: MessageFns<PerformApiCallRequest>;
export declare const PerformApiCallRequest_ParametersEntry: MessageFns<PerformApiCallRequest_ParametersEntry>;
export declare const PerformApiCallResponse: MessageFns<PerformApiCallResponse>;
export declare const PerformApiCallResponse_MetadataEntry: MessageFns<PerformApiCallResponse_MetadataEntry>;
export declare const LinkedResource: MessageFns<LinkedResource>;
export interface RemoteApiService {
    PerformHttpCall(request: PerformHttpCallRequest): Promise<PerformHttpCallResponse>;
    GetOAuth2Info(request: GetOAuth2InfoRequest): Promise<GetOAuth2InfoResponse>;
    PerformTokenExchange(request: PerformTokenExchangeRequest): Promise<PerformTokenExchangeResponse>;
    RefreshToken(request: RefreshTokenRequest): Promise<RefreshTokenResponse>;
    PerformApiCall(request: PerformApiCallRequest): Promise<PerformApiCallResponse>;
}
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 {
    $case: string;
} ? {
    [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]>;
} & {
    $case: T["$case"];
} : 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 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=remote_api_service.d.ts.map