import type { AppendOptions, AppendResult, DeleteOptions, DeleteResult, IngestOptions, IngestResult, QueryOptions, QueryResult, TruncateOptions, TruncateResult, TinybirdErrorResponse } from "../client/types.js"; /** * Public, decoupled Tinybird API wrapper configuration */ export interface TinybirdApiConfig { /** Tinybird API base URL (e.g. https://api.tinybird.co) */ baseUrl: string; /** Tinybird token used for Authorization bearer header */ token: string; /** Custom fetch implementation (optional) */ fetch?: typeof fetch; /** Default timeout in milliseconds (optional) */ timeout?: number; } /** * Request options for the API layer */ export interface TinybirdApiRequestInit extends RequestInit { /** Optional token override for a specific request */ token?: string; } export interface TinybirdApiQueryOptions extends QueryOptions { /** Optional token override for this request */ token?: string; } export interface TinybirdApiIngestOptions extends IngestOptions { /** Optional token override for this request */ token?: string; } export interface TinybirdApiAppendOptions extends Omit { /** Optional token override for this request */ token?: string; /** Import mode */ mode?: "append" | "replace"; } export interface TinybirdApiDeleteOptions extends Omit { /** Optional token override for this request */ token?: string; } export interface TinybirdApiTruncateOptions extends TruncateOptions { /** Optional token override for this request */ token?: string; } /** * Scope definition for token creation APIs */ export interface TinybirdApiTokenScope { type: string; resource?: string; fixed_params?: Record; filter?: string; } /** * Request body for creating Tinybird tokens. * Supports JWT-style scopes and static-token scope strings. */ export interface TinybirdApiCreateTokenRequest { /** Token name/identifier */ name: string; /** JWT-style scopes */ scopes?: TinybirdApiTokenScope[]; /** Static-token scope strings */ scope?: string | string[]; /** Optional rate-limiting config */ limits?: { rps?: number; }; } /** * Options for token creation requests */ export interface TinybirdApiCreateTokenOptions { /** Optional expiration time for JWT tokens */ expirationTime?: number; /** Optional token override for this request */ token?: string; /** Request timeout in milliseconds */ timeout?: number; /** AbortController signal for cancellation */ signal?: AbortSignal; } /** * Result of token creation */ export interface TinybirdApiCreateTokenResult { token: string; } /** * Error thrown by TinybirdApi when a response is not OK */ export declare class TinybirdApiError extends Error { readonly statusCode: number; readonly responseBody?: string; readonly response?: TinybirdErrorResponse; constructor(message: string, statusCode: number, responseBody?: string, response?: TinybirdErrorResponse); } /** * Low-level Tinybird API wrapper. * * This layer is intentionally decoupled from the typed TinybirdClient layer * so it can be used standalone with just baseUrl + token. */ export declare class TinybirdApi { private readonly config; private readonly baseUrl; private readonly defaultToken; private readonly fetchFn; constructor(config: TinybirdApiConfig); /** * Execute a request against Tinybird API. */ request(path: string, init?: TinybirdApiRequestInit): Promise; /** * Execute a request and parse JSON response. */ requestJson(path: string, init?: TinybirdApiRequestInit): Promise; /** * Query a Tinybird endpoint */ query = Record>(endpointName: string, params?: P, options?: TinybirdApiQueryOptions): Promise>; /** * Ingest a single row into a datasource */ ingest>(datasourceName: string, event: T, options?: TinybirdApiIngestOptions): Promise; /** * Ingest a batch of rows into a datasource */ ingestBatch>(datasourceName: string, events: T[], options?: TinybirdApiIngestOptions): Promise; /** * Execute raw SQL against Tinybird */ sql(sql: string, options?: TinybirdApiQueryOptions): Promise>; /** * Append data to a datasource from a URL or local file */ appendDatasource(datasourceName: string, options: AppendOptions, apiOptions?: TinybirdApiAppendOptions): Promise; /** * Delete rows from a datasource using a SQL condition */ deleteDatasource(datasourceName: string, options: DeleteOptions, apiOptions?: TinybirdApiDeleteOptions): Promise; /** * Truncate all rows from a datasource */ truncateDatasource(datasourceName: string, options?: TruncateOptions, apiOptions?: TinybirdApiTruncateOptions): Promise; /** * Create a token using Tinybird Token API. * Supports both static and JWT token payloads. */ createToken(body: TinybirdApiCreateTokenRequest, options?: TinybirdApiCreateTokenOptions): Promise; /** * Detect format from file path or URL extension */ private detectFormat; /** * Create FormData for file upload */ private createFileFormData; private parseOptionalJson; private createAbortSignal; private resolveIngestMaxRetries; private resolveRetry429Delay; private resolveRetry503Delay; private resolveRetryDelayFromHeaders; private parseRetryAfterDelayMs; private parseRateLimitResetDelayMs; private calculateRetry503DelayMs; private discardResponseBody; private sleep; private serializeEvent; private serializeValue; private handleErrorResponse; private resolveUrl; } /** * Create a decoupled Tinybird API wrapper. */ export declare function createTinybirdApi(config: TinybirdApiConfig): TinybirdApi; /** * Alias for teams that prefer "wrapper" naming. */ export declare const createTinybirdApiWrapper: typeof createTinybirdApi; //# sourceMappingURL=api.d.ts.map