import { APIResource } from "../../core/resource.js";
import * as PipelinesAPI from "./pipelines.js";
import { APIPromise } from "../../core/api-promise.js";
import { PagePromise, V4PagePaginationArray, type V4PagePaginationArrayParams } from "../../core/pagination.js";
import { RequestOptions } from "../../internal/request-options.js";
export declare class BaseStreams extends APIResource {
    static readonly _key: readonly ['pipelines', 'streams'];
    /**
     * Create a new Stream.
     *
     * @example
     * ```ts
     * const stream = await client.pipelines.streams.create({
     *   account_id: '0123105f4ecef8ad9ca31a8372d0c353',
     *   name: 'my_stream',
     * });
     * ```
     */
    create(params: StreamCreateParams, options?: RequestOptions): APIPromise<StreamCreateResponse>;
    /**
     * Update a Stream.
     *
     * @example
     * ```ts
     * const stream = await client.pipelines.streams.update(
     *   '033e105f4ecef8ad9ca31a8372d0c353',
     *   { account_id: '0123105f4ecef8ad9ca31a8372d0c353' },
     * );
     * ```
     */
    update(streamID: string, params: StreamUpdateParams, options?: RequestOptions): APIPromise<StreamUpdateResponse>;
    /**
     * List/Filter Streams in Account.
     *
     * @example
     * ```ts
     * // Automatically fetches more pages as needed.
     * for await (const streamListResponse of client.pipelines.streams.list(
     *   { account_id: '0123105f4ecef8ad9ca31a8372d0c353' },
     * )) {
     *   // ...
     * }
     * ```
     */
    list(params: StreamListParams, options?: RequestOptions): PagePromise<StreamListResponsesV4PagePaginationArray, StreamListResponse>;
    /**
     * Delete Stream in Account.
     *
     * @example
     * ```ts
     * const stream = await client.pipelines.streams.delete(
     *   '033e105f4ecef8ad9ca31a8372d0c353',
     *   { account_id: '0123105f4ecef8ad9ca31a8372d0c353' },
     * );
     * ```
     */
    delete(streamID: string, params: StreamDeleteParams, options?: RequestOptions): APIPromise<StreamDeleteResponse>;
    /**
     * Get Stream Details.
     *
     * @example
     * ```ts
     * const stream = await client.pipelines.streams.get(
     *   '033e105f4ecef8ad9ca31a8372d0c353',
     *   { account_id: '0123105f4ecef8ad9ca31a8372d0c353' },
     * );
     * ```
     */
    get(streamID: string, params: StreamGetParams, options?: RequestOptions): APIPromise<StreamGetResponse>;
}
export declare class Streams extends BaseStreams {
}
export type StreamListResponsesV4PagePaginationArray = V4PagePaginationArray<StreamListResponse>;
export interface StreamCreateResponse {
    /**
     * Indicates a unique identifier for this stream.
     */
    id: string;
    created_at: string;
    http: StreamCreateResponse.HTTP;
    modified_at: string;
    /**
     * Indicates the name of the Stream.
     */
    name: string;
    /**
     * Indicates the current version of this stream.
     */
    version: number;
    worker_binding: StreamCreateResponse.WorkerBinding;
    /**
     * Indicates the endpoint URL of this stream.
     */
    endpoint?: string;
    /**
     * Defines the data format of the events.
     */
    format?: StreamCreateResponse.Json | StreamCreateResponse.Parquet;
    /**
     * Defines the schema of the events in the data stream.
     */
    schema?: StreamCreateResponse.Schema;
}
export declare namespace StreamCreateResponse {
    interface HTTP {
        /**
         * Indicates that authentication is required for the HTTP endpoint.
         */
        authentication: boolean;
        /**
         * Indicates that the HTTP endpoint is enabled.
         */
        enabled: boolean;
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        cors?: HTTP.CORS;
    }
    namespace HTTP {
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        interface CORS {
            origins?: Array<string>;
        }
    }
    interface WorkerBinding {
        /**
         * Indicates that the worker binding is enabled.
         */
        enabled: boolean;
    }
    interface Json {
        type: 'json';
        decimal_encoding?: 'number' | 'string' | 'bytes';
        timestamp_format?: 'rfc3339' | 'unix_millis';
        unstructured?: boolean;
    }
    interface Parquet {
        type: 'parquet';
        compression?: 'uncompressed' | 'snappy' | 'gzip' | 'zstd' | 'lz4';
        row_group_bytes?: number | null;
    }
    /**
     * Defines the schema of the events in the data stream.
     */
    interface Schema {
        fields?: Array<PipelinesAPI.SourceField>;
        inferred?: boolean | null;
    }
}
export interface StreamUpdateResponse {
    /**
     * Indicates a unique identifier for this stream.
     */
    id: string;
    created_at: string;
    http: StreamUpdateResponse.HTTP;
    modified_at: string;
    /**
     * Indicates the name of the Stream.
     */
    name: string;
    /**
     * Indicates the current version of this stream.
     */
    version: number;
    worker_binding: StreamUpdateResponse.WorkerBinding;
    /**
     * Indicates the endpoint URL of this stream.
     */
    endpoint?: string;
    /**
     * Defines the data format of the events.
     */
    format?: StreamUpdateResponse.Json | StreamUpdateResponse.Parquet;
    /**
     * Defines the schema of the events in the data stream.
     */
    schema?: StreamUpdateResponse.Schema;
}
export declare namespace StreamUpdateResponse {
    interface HTTP {
        /**
         * Indicates that authentication is required for the HTTP endpoint.
         */
        authentication: boolean;
        /**
         * Indicates that the HTTP endpoint is enabled.
         */
        enabled: boolean;
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        cors?: HTTP.CORS;
    }
    namespace HTTP {
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        interface CORS {
            origins?: Array<string>;
        }
    }
    interface WorkerBinding {
        /**
         * Indicates that the worker binding is enabled.
         */
        enabled: boolean;
    }
    interface Json {
        type: 'json';
        decimal_encoding?: 'number' | 'string' | 'bytes';
        timestamp_format?: 'rfc3339' | 'unix_millis';
        unstructured?: boolean;
    }
    interface Parquet {
        type: 'parquet';
        compression?: 'uncompressed' | 'snappy' | 'gzip' | 'zstd' | 'lz4';
        row_group_bytes?: number | null;
    }
    /**
     * Defines the schema of the events in the data stream.
     */
    interface Schema {
        fields?: Array<PipelinesAPI.SourceField>;
        inferred?: boolean | null;
    }
}
export interface StreamListResponse {
    /**
     * Indicates a unique identifier for this stream.
     */
    id: string;
    created_at: string;
    http: StreamListResponse.HTTP;
    modified_at: string;
    /**
     * Indicates the name of the Stream.
     */
    name: string;
    /**
     * Indicates the current version of this stream.
     */
    version: number;
    worker_binding: StreamListResponse.WorkerBinding;
    /**
     * Indicates the endpoint URL of this stream.
     */
    endpoint?: string;
    /**
     * Defines the data format of the events.
     */
    format?: StreamListResponse.Json | StreamListResponse.Parquet;
    /**
     * Defines the schema of the events in the data stream.
     */
    schema?: StreamListResponse.Schema;
}
export declare namespace StreamListResponse {
    interface HTTP {
        /**
         * Indicates that authentication is required for the HTTP endpoint.
         */
        authentication: boolean;
        /**
         * Indicates that the HTTP endpoint is enabled.
         */
        enabled: boolean;
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        cors?: HTTP.CORS;
    }
    namespace HTTP {
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        interface CORS {
            origins?: Array<string>;
        }
    }
    interface WorkerBinding {
        /**
         * Indicates that the worker binding is enabled.
         */
        enabled: boolean;
    }
    interface Json {
        type: 'json';
        decimal_encoding?: 'number' | 'string' | 'bytes';
        timestamp_format?: 'rfc3339' | 'unix_millis';
        unstructured?: boolean;
    }
    interface Parquet {
        type: 'parquet';
        compression?: 'uncompressed' | 'snappy' | 'gzip' | 'zstd' | 'lz4';
        row_group_bytes?: number | null;
    }
    /**
     * Defines the schema of the events in the data stream.
     */
    interface Schema {
        fields?: Array<PipelinesAPI.SourceField>;
        inferred?: boolean | null;
    }
}
export type StreamDeleteResponse = unknown;
export interface StreamGetResponse {
    /**
     * Indicates a unique identifier for this stream.
     */
    id: string;
    created_at: string;
    http: StreamGetResponse.HTTP;
    modified_at: string;
    /**
     * Indicates the name of the Stream.
     */
    name: string;
    /**
     * Indicates the current version of this stream.
     */
    version: number;
    worker_binding: StreamGetResponse.WorkerBinding;
    /**
     * Indicates the endpoint URL of this stream.
     */
    endpoint?: string;
    /**
     * Defines the data format of the events.
     */
    format?: StreamGetResponse.Json | StreamGetResponse.Parquet;
    /**
     * Defines the schema of the events in the data stream.
     */
    schema?: StreamGetResponse.Schema;
}
export declare namespace StreamGetResponse {
    interface HTTP {
        /**
         * Indicates that authentication is required for the HTTP endpoint.
         */
        authentication: boolean;
        /**
         * Indicates that the HTTP endpoint is enabled.
         */
        enabled: boolean;
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        cors?: HTTP.CORS;
    }
    namespace HTTP {
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        interface CORS {
            origins?: Array<string>;
        }
    }
    interface WorkerBinding {
        /**
         * Indicates that the worker binding is enabled.
         */
        enabled: boolean;
    }
    interface Json {
        type: 'json';
        decimal_encoding?: 'number' | 'string' | 'bytes';
        timestamp_format?: 'rfc3339' | 'unix_millis';
        unstructured?: boolean;
    }
    interface Parquet {
        type: 'parquet';
        compression?: 'uncompressed' | 'snappy' | 'gzip' | 'zstd' | 'lz4';
        row_group_bytes?: number | null;
    }
    /**
     * Defines the schema of the events in the data stream.
     */
    interface Schema {
        fields?: Array<PipelinesAPI.SourceField>;
        inferred?: boolean | null;
    }
}
export interface StreamCreateParams {
    /**
     * Path param: Specifies the public ID of the account.
     */
    account_id: string;
    /**
     * Body param: Specifies the name of the Stream.
     */
    name: string;
    /**
     * Body param: Defines the data format of the events.
     */
    format?: StreamCreateParams.Json | StreamCreateParams.Parquet;
    /**
     * Body param
     */
    http?: StreamCreateParams.HTTP;
    /**
     * Body param: Defines the schema of the events in the data stream.
     */
    schema?: StreamCreateParams.Schema;
    /**
     * Body param
     */
    worker_binding?: StreamCreateParams.WorkerBinding;
}
export declare namespace StreamCreateParams {
    interface Json {
        type: 'json';
        decimal_encoding?: 'number' | 'string' | 'bytes';
        timestamp_format?: 'rfc3339' | 'unix_millis';
        unstructured?: boolean;
    }
    interface Parquet {
        type: 'parquet';
        compression?: 'uncompressed' | 'snappy' | 'gzip' | 'zstd' | 'lz4';
        row_group_bytes?: number | null;
    }
    interface HTTP {
        /**
         * Indicates that authentication is required for the HTTP endpoint.
         */
        authentication: boolean;
        /**
         * Indicates that the HTTP endpoint is enabled.
         */
        enabled: boolean;
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        cors?: HTTP.CORS;
    }
    namespace HTTP {
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        interface CORS {
            origins?: Array<string>;
        }
    }
    /**
     * Defines the schema of the events in the data stream.
     */
    interface Schema {
        fields?: Array<PipelinesAPI.SourceFieldParam>;
        inferred?: boolean | null;
    }
    interface WorkerBinding {
        /**
         * Indicates that the worker binding is enabled.
         */
        enabled: boolean;
    }
}
export interface StreamUpdateParams {
    /**
     * Path param: Specifies the public ID of the account.
     */
    account_id: string;
    /**
     * Body param
     */
    http?: StreamUpdateParams.HTTP;
    /**
     * Body param
     */
    worker_binding?: StreamUpdateParams.WorkerBinding;
}
export declare namespace StreamUpdateParams {
    interface HTTP {
        /**
         * Indicates that authentication is required for the HTTP endpoint.
         */
        authentication: boolean;
        /**
         * Indicates that the HTTP endpoint is enabled.
         */
        enabled: boolean;
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        cors?: HTTP.CORS;
    }
    namespace HTTP {
        /**
         * Specifies the CORS options for the HTTP endpoint.
         */
        interface CORS {
            origins?: Array<string>;
        }
    }
    interface WorkerBinding {
        /**
         * Indicates that the worker binding is enabled.
         */
        enabled: boolean;
    }
}
export interface StreamListParams extends V4PagePaginationArrayParams {
    /**
     * Path param: Specifies the public ID of the account.
     */
    account_id: string;
    /**
     * Query param: Filters streams by name (case-insensitive substring).
     */
    name?: string;
    /**
     * Query param: Specifies the public ID of the pipeline.
     */
    pipeline_id?: string;
}
export interface StreamDeleteParams {
    /**
     * Specifies the public ID of the account.
     */
    account_id: string;
}
export interface StreamGetParams {
    /**
     * Specifies the public ID of the account.
     */
    account_id: string;
}
export declare namespace Streams {
    export { type StreamCreateResponse as StreamCreateResponse, type StreamUpdateResponse as StreamUpdateResponse, type StreamListResponse as StreamListResponse, type StreamDeleteResponse as StreamDeleteResponse, type StreamGetResponse as StreamGetResponse, type StreamListResponsesV4PagePaginationArray as StreamListResponsesV4PagePaginationArray, type StreamCreateParams as StreamCreateParams, type StreamUpdateParams as StreamUpdateParams, type StreamListParams as StreamListParams, type StreamDeleteParams as StreamDeleteParams, type StreamGetParams as StreamGetParams, };
}
//# sourceMappingURL=streams.d.ts.map