import type { io } from "./generated"; import type { ObjectMeta } from "./kubernetes"; export interface PgBouncerDatabase { name: string; host: string; port?: number; dbname?: string; user?: string; password?: string; authUser?: string; authQuery?: string; authDbname?: string; poolSize?: number; minPoolSize?: number; reservePoolSize?: number; connectQuery?: string; poolMode?: PgBouncerPoolMode; loadBalanceHosts?: "round-robin" | "disable"; maxDbConnections?: number; maxDbClientConnections?: number; serverLifetime?: number; clientEncoding?: string; datestyle?: string; timezone?: string; } export interface PgBouncerUser { username: string; password: string; poolSize?: number; reservePoolSize?: number; poolMode?: PgBouncerPoolMode; maxUserConnections?: number; queryTimeout?: number; idleTransactionTimeout?: number; transactionTimeout?: number; clientIdleTimeout?: number; maxUserClientConnections?: number; } export type PgBouncerPoolMode = "session" | "transaction" | "statement"; export type PgBouncerAuthType = "cert" | "md5" | "scram-sha-256" | "plain" | "trust" | "any" | "hba" | "ldap" | "pam"; export type TlsSslMode = "disable" | "allow" | "prefer" | "require" | "verify-ca" | "verify-full"; export type SyslogFacility = "auth" | "authpriv" | "daemon" | "user" | "local0" | "local1" | "local2" | "local3" | "local4" | "local5" | "local6" | "local7"; export interface PgBouncerOptions { logfile?: string; pidfile?: string; listenAddr?: string; listenPort?: number; unixSocketDir?: string; unixSocketMode?: string; unixSocketGroup?: string; user?: string; poolMode?: PgBouncerPoolMode; maxClientConn?: number; defaultPoolSize?: number; minPoolSize?: number; reservePoolSize?: number; reservePoolTimeout?: number; maxDbConnections?: number; maxDbClientConnections?: number; maxUserConnections?: number; maxUserClientConnections?: number; serverRoundRobin?: boolean; trackExtraParameters?: string; ignoreStartupParameters?: string; peerId?: number; disablePqexec?: boolean; applicationNameAddHost?: boolean; statsPeriod?: number; maxPreparedStatements?: number; scramIterations?: number; authType?: PgBouncerAuthType; authHbaFile?: string; authIdentFile?: string; authFile?: string; authUser?: string; authQuery?: string; authDbname?: string; authLdapOptions?: string; syslog?: boolean; syslogIdent?: string; syslogFacility?: SyslogFacility; logConnections?: boolean; logDisconnections?: boolean; logPoolerErrors?: boolean; logStats?: boolean; verbose?: number; adminUsers?: string; statsUsers?: string; serverResetQuery?: string; serverResetQueryAlways?: boolean; serverCheckDelay?: number; serverCheckQuery?: string; serverFastClose?: boolean; serverLifetime?: number; serverIdleTimeout?: number; serverConnectTimeout?: number; serverLoginRetry?: number; clientLoginTimeout?: number; autodbIdleTimeout?: number; dnsMaxTtl?: number; dnsNxdomainTtl?: number; dnsZoneCheckPeriod?: number; resolvConf?: string; queryWaitNotify?: number; queryTimeout?: number; queryWaitTimeout?: number; cancelWaitTimeout?: number; clientIdleTimeout?: number; idleTransactionTimeout?: number; transactionTimeout?: number; suspendTimeout?: number; pktBuf?: number; maxPacketSize?: number; listenBacklog?: number; sbufLoopcnt?: number; soReuseport?: boolean; tcpDeferAccept?: boolean; tcpSocketBuffer?: number; tcpKeepalive?: boolean; tcpKeepcnt?: number; tcpKeepidle?: number; tcpKeegintvl?: number; tcpUserTimeout?: number; clientTlsSslmode?: TlsSslMode; clientTlsKeyFile?: string; clientTlsCertFile?: string; clientTlsCaFile?: string; clientTlsProtocols?: string; clientTlsCiphers?: string; clientTls13Ciphers?: string; clientTlsEcdhcurve?: string; clientTlsDheparams?: string; serverTlsSslmode?: TlsSslMode; serverTlsCaFile?: string; serverTlsKeyFile?: string; serverTlsCertFile?: string; serverTlsProtocols?: string; serverTlsCiphers?: string; serverTls13Ciphers?: string; } export interface PgBouncerPeer { peerId: number; host: string; port?: number; poolSize?: number; } export interface PgBouncerSpec { image?: string; replicas?: number; cpu: { request: string | number; limit: string | number; }; memory: { request: string | number; limit: string | number; }; port?: number; databases: PgBouncerDatabase[]; users: PgBouncerUser[]; options?: PgBouncerOptions; peers?: PgBouncerPeer[]; imagePullPolicy?: "Always" | "Never" | "IfNotPresent"; imagePullSecrets?: string[]; nodeSelector?: Record; affinity?: io.k8s.api.core.v1.Affinity; tolerations?: io.k8s.api.core.v1.Toleration[]; envs?: Record; serviceAnnotations?: Record; serviceType?: "ClusterIP" | "NodePort" | "LoadBalancer"; command?: string[]; configPath?: string; userlistPath?: string; logDir?: string; minAvailable?: number; rawConfig?: string; rawUserlist?: string; } export declare class PgBouncer { private metadata; private spec; constructor(metadata: ObjectMeta, spec: PgBouncerSpec); get yaml(): string; }