export declare const GatewayAccessKeyDeployment: { readonly local: "local"; readonly cloud: "cloud"; }; export type GatewayAccessKeyDeploymentType = typeof GatewayAccessKeyDeployment[keyof typeof GatewayAccessKeyDeployment]; export declare const QuotaSnapshotStatus: { readonly available: "available"; readonly unsupported: "unsupported"; readonly error: "error"; }; export type QuotaSnapshotStatusType = typeof QuotaSnapshotStatus[keyof typeof QuotaSnapshotStatus]; export declare const gatewayAccessKeyResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns; owner: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>; secretHash: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; name: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; deployment: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; scopes: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"array", "string", false, false>; createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; expiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; lastUsedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; revokedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; }>>; export declare const quotaSnapshotResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns; owner: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>; deployment: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; credential: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>; status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; balance: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>; windows: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; observedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; expiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; source: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; }>>; export declare const gatewayAccessKeyTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns; owner: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>; secretHash: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; name: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; deployment: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; scopes: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"array", "string", false, false>; createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; expiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; lastUsedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; revokedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; }>>; export declare const quotaSnapshotTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns; owner: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>; deployment: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; credential: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>; status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; balance: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>; windows: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; observedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; expiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>; source: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>; }>>; export type GatewayAccessKeyRow = typeof gatewayAccessKeyResource.$inferSelect; export type GatewayAccessKeyInsert = typeof gatewayAccessKeyResource.$inferInsert; export type GatewayAccessKeyUpdate = typeof gatewayAccessKeyResource.$inferUpdate; export type QuotaSnapshotRow = typeof quotaSnapshotResource.$inferSelect; export type QuotaSnapshotInsert = typeof quotaSnapshotResource.$inferInsert; export type QuotaSnapshotUpdate = typeof quotaSnapshotResource.$inferUpdate; export interface FindFreshQuotaSnapshotInput { owner: string; deployment: GatewayAccessKeyDeploymentType; provider: string; credential: string; now?: Date | string | number; } export type FindLatestQuotaSnapshotInput = Omit; export interface QuotaSnapshotIdInput { owner: string; deployment: GatewayAccessKeyDeploymentType; provider: string; credential: string; } export type QuotaSnapshotUpsert = Omit & QuotaSnapshotIdInput & { id?: string; }; interface InsertExecution { execute(): Promise; } interface InsertValues { values(value: TInsert): InsertExecution; } interface SelectExecution { execute(): Promise; } interface SelectWhere { where(condition: unknown): SelectExecution; } interface SelectFrom { from(resource: typeof quotaSnapshotResource): SelectWhere; } interface AIGatewayRepositoryDb { findById(resource: typeof gatewayAccessKeyResource | typeof quotaSnapshotResource, id: string): Promise; findByIri(resource: typeof gatewayAccessKeyResource | typeof quotaSnapshotResource, iri: string): Promise; updateById(resource: typeof gatewayAccessKeyResource | typeof quotaSnapshotResource, id: string, data: GatewayAccessKeyUpdate | QuotaSnapshotUpdate): Promise; updateByIri(resource: typeof gatewayAccessKeyResource | typeof quotaSnapshotResource, iri: string, data: GatewayAccessKeyUpdate | QuotaSnapshotUpdate): Promise; insert(resource: typeof quotaSnapshotResource): InsertValues; select(): SelectFrom; } export declare function quotaSnapshotId(input: QuotaSnapshotIdInput): string; export declare function validateGatewayAccessKey(input: GatewayAccessKeyInsert): GatewayAccessKeyInsert & { deployment: GatewayAccessKeyDeploymentType; }; export declare function validateQuotaSnapshot(input: QuotaSnapshotUpsert): QuotaSnapshotUpsert & { id: string; status: QuotaSnapshotStatusType; }; export declare const aiGatewayRepository: { readonly validateAccessKey: typeof validateGatewayAccessKey; readonly validateQuotaSnapshot: typeof validateQuotaSnapshot; readonly findAccessKeyById: (db: AIGatewayRepositoryDb, idValue: string) => Promise; readonly revokeAccessKey: (db: AIGatewayRepositoryDb, input: { id: string; revokedAt?: Date | string | number; }) => Promise; readonly upsertQuotaSnapshot: (db: AIGatewayRepositoryDb, snapshot: QuotaSnapshotUpsert) => Promise; readonly findFreshQuotaSnapshot: (db: AIGatewayRepositoryDb, input: FindFreshQuotaSnapshotInput) => Promise; readonly findLatestQuotaSnapshot: (db: AIGatewayRepositoryDb, input: FindLatestQuotaSnapshotInput) => Promise; }; export {};