/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

export { Session, TreeTablet, TableTablet } from "./client/Session";
export type {
  QueryResult,
  Tablet,
  ITreeTablet,
  ITableTablet,
} from "./client/Session";
export { ColumnCategory } from "./client/Session";
export { TableSession } from "./client/TableSession";
export { SessionDataSet } from "./client/SessionDataSet";
export { RowRecord } from "./client/RowRecord";
export { SessionPool } from "./client/SessionPool";
export { TableSessionPool } from "./client/TableSessionPool";
export type { Config, PoolConfig, SSLOptions, EndPoint } from "./utils/Config";
export {
  DEFAULT_CONFIG,
  DEFAULT_POOL_CONFIG,
  ConfigBuilder,
  PoolConfigBuilder,
  parseNodeUrls,
} from "./utils/Config";
export { logger, LogLevel } from "./utils/Logger";
export { TSDataType, getDataTypeName } from "./utils/DataTypes";
export { RedirectException, TSStatusCode } from "./utils/Errors";
export { RedirectCache } from "./client/RedirectCache";
export { enableGlobalCleanup } from "./utils/ProcessCleanup";
export { BufferPool, globalBufferPool } from "./utils/BufferPool";
export { serializeColumnFast, serializeTimestamps } from "./utils/FastSerializer";

// Concurrent execution utilities for Node.js optimization
export {
  executeConcurrent,
  executeBatched,
  chunkArray,
  createSemaphore,
} from "./utils/ConcurrentExecutor";
export type {
  ConcurrentOptions,
  ConcurrentResult,
} from "./utils/ConcurrentExecutor";
