firebase-functions
Version:
Firebase SDK for Cloud Functions
54 lines (53 loc) • 3.94 kB
TypeScript
import { CloudEvent } from "../../core";
import { HttpsFunction, HttpsError, FunctionsErrorCode } from "../https";
import { EventHandlerOptions } from "../../options";
import { Expression } from "../../../params";
import { ResetValue } from "../../../common/options";
export { HttpsError };
export declare const rpcCodeMap: Record<FunctionsErrorCode, number>;
import { type GenerateContentRequest as VertexV1Beta1GenerateContentRequest, type GenerateContentResponse as VertexV1Beta1GenerateContentResponse } from "./types/vertex/v1beta1";
import { type GenerateContentRequest as GeminiV1BetaGenerateContentRequest, type GenerateContentResponse as GeminiV1BetaGenerateContentResponse } from "./types/gemini/v1beta";
export { type VertexV1Beta1GenerateContentRequest, type VertexV1Beta1GenerateContentResponse, type GeminiV1BetaGenerateContentRequest, type GeminiV1BetaGenerateContentResponse, };
type MultipleLocationsIf<Allowed extends boolean> = Allowed extends true ? string[] : never;
export interface WebhookOptions<Regional extends boolean = false> extends Omit<EventHandlerOptions, "location"> {
location?: string | Expression<string> | MultipleLocationsIf<Regional> | ResetValue;
regionalWebhook?: Regional;
}
export interface PromptTemplateInfo {
templateName?: string;
}
export type AuthType = "app_user" | "unauthenticated" | "unknown";
export declare const beforeGenerateEventType = "google.firebase.ailogic.v1.beforeGenerate";
export declare const afterGenerateEventType = "google.firebase.ailogic.v1.afterGenerate";
export type AnyValidAIRequest = GeminiV1BetaGenerateContentRequest | VertexV1Beta1GenerateContentRequest;
export type AnyValidAIResponse = GeminiV1BetaGenerateContentResponse | VertexV1Beta1GenerateContentResponse;
export declare const geminiV1Beta = "google.ai.generativelanguage.v1beta";
export declare const vertexV1Beta1 = "google.cloud.aiplatform.v1beta1";
export type SupportedAPI = typeof geminiV1Beta | typeof vertexV1Beta1;
export type AIRequest<API> = string extends API ? AnyValidAIRequest : API extends typeof geminiV1Beta ? GeminiV1BetaGenerateContentRequest : API extends typeof vertexV1Beta1 ? VertexV1Beta1GenerateContentRequest : never;
export type AIResponse<API> = string extends API ? AnyValidAIResponse : API extends typeof geminiV1Beta ? GeminiV1BetaGenerateContentResponse : API extends typeof vertexV1Beta1 ? VertexV1Beta1GenerateContentResponse : never;
export interface BeforeGenerateContentData<API extends string = string> {
model: string;
template?: PromptTemplateInfo;
api: SupportedAPI;
request: AIRequest<API>;
}
export interface AfterGenerateContentData<API extends string = string> extends BeforeGenerateContentData<API> {
response: AIResponse<API>;
}
export interface AIBlockingEvent<T = any> extends CloudEvent<T> {
authType: AuthType;
authId?: string;
authClaims?: any;
resourceName?: string;
appId?: string;
displayName?: string;
androidPackageName?: string;
iosBundleId?: string;
}
type MaybeAsync<T> = T | Promise<T>;
export type BlockingFunction = HttpsFunction;
export declare function beforeGenerateContent(callback: (event: AIBlockingEvent<BeforeGenerateContentData>) => MaybeAsync<void | Partial<AnyValidAIRequest>>): BlockingFunction;
export declare function beforeGenerateContent<Regional extends boolean = false>(options: WebhookOptions<Regional>, callback: (event: AIBlockingEvent<BeforeGenerateContentData>) => MaybeAsync<void | Partial<AnyValidAIRequest>>): BlockingFunction;
export declare function afterGenerateContent(callback: (event: AIBlockingEvent<AfterGenerateContentData>) => MaybeAsync<void | Partial<AnyValidAIResponse>>): BlockingFunction;
export declare function afterGenerateContent<Regional extends boolean = false>(options: WebhookOptions<Regional>, callback: (event: AIBlockingEvent<AfterGenerateContentData>) => MaybeAsync<void | Partial<AnyValidAIResponse>>): BlockingFunction;