/**
 * Platform Tools
 * Factory functions for creating tools that interact with internal platform services.
 * Retained compatibility surface; deployed SDK workers use platform.call() -> dispatcher.
 *
 * Platform tools enable agents to:
 * - Invoke other resources - agents and workflows (resource invocation)
 * - Send platform emails
 * - Manage acquisition data
 * - Store files
 * - Render PDFs
 * - Manage schedules
 *
 * Resource invocation service and supporting types remain exported here for internal wiring.
 */

export type {
  ICommandQueueService,
  ITaskSchedulerService,
  INotificationsService
} from './types'

// Platform Email Tool
export { createPlatformEmailTool } from './email'

export type { SendPlatformEmailInput, SendPlatformEmailOutput, PlatformEmailToolConfig } from './email'

export { SendPlatformEmailInputSchema, SendPlatformEmailOutputSchema } from './email'

// Acquisition Tools (Lead Database management)
export {
  // List tools
  createAcqListCreateTool,
  createAcqListUpdateTool,
  createAcqListDeleteTool,
  createAcqListListTool,
  // Company tools
  createAcqCompanyCreateTool,
  createAcqCompanyUpdateTool,
  createAcqCompanyUpsertTool,
  createAcqCompanyGetTool,
  createAcqCompanyListTool,
  createAcqCompanyDeleteTool,
  // Contact tools
  createAcqContactCreateTool,
  createAcqContactUpdateTool,
  createAcqContactUpsertTool,
  createAcqContactGetTool,
  createAcqContactListTool,
  createAcqContactDeleteTool,
  createAcqContactBulkImportTool,
  createAcqContactDeactivateByCompanyTool
} from './acquisition'

// Export acquisition types and schemas
export type {
  CreateListInput,
  UpdateListInput,
  DeleteListInput,
  ListOutput,
  CreateCompanyInput,
  UpdateCompanyInput,
  UpsertCompanyInput,
  GetCompanyInput,
  ListCompaniesInput,
  DeleteCompanyInput,
  CompanyOutput,
  CreateContactInput,
  UpdateContactInput,
  UpsertContactInput,
  GetContactInput,
  ListContactsInput,
  DeleteContactInput,
  BulkImportInput,
  ContactOutput,
  PaginatedContactsOutput,
  BulkImportResult,
  DeleteResult
} from './acquisition'

// Platform Storage Tools
export {
  createStorageUploadTool,
  createStorageSignedUrlTool,
  createStorageDownloadTool,
  createStorageDeleteTool,
  createStorageListTool
} from './storage'

export type {
  StorageUploadInput,
  StorageUploadOutput,
  StorageSignedUrlInput,
  StorageSignedUrlOutput,
  StorageDownloadInput,
  StorageDownloadOutput,
  StorageDeleteInput,
  StorageDeleteOutput,
  StorageListInput,
  StorageListOutput,
  StorageToolConfig
} from './storage'

export {
  StorageUploadInputSchema,
  StorageUploadOutputSchema,
  StorageSignedUrlInputSchema,
  StorageSignedUrlOutputSchema,
  StorageDownloadInputSchema,
  StorageDownloadOutputSchema,
  StorageDeleteInputSchema,
  StorageDeleteOutputSchema,
  StorageListInputSchema,
  StorageListOutputSchema
} from './storage'

// Platform PDF Tool
export { createPdfRenderTool } from './pdf'

export type { PdfRenderInput, PdfRenderOutput, PdfToolConfig } from './pdf'

export { PdfRenderInputSchema, PdfRenderOutputSchema } from './pdf'

// Schedule Management Tools
export {
  createScheduleListTool,
  createScheduleCancelByMetadataTool,
  createScheduleCancelByKeyTool,
  createScheduleDeleteByKeyTool
} from './schedules'

export type {
  ListSchedulesInput,
  ListSchedulesOutput,
  CancelSchedulesByMetadataInput,
  CancelSchedulesByMetadataOutput,
  CancelScheduleByKeyInput,
  CancelScheduleByKeyOutput,
  DeleteScheduleByKeyInput,
  DeleteScheduleByKeyOutput
} from './schedules'

export {
  ListSchedulesInputSchema,
  ListSchedulesOutputSchema,
  CancelSchedulesByMetadataInputSchema,
  CancelSchedulesByMetadataOutputSchema,
  CancelScheduleByKeyInputSchema,
  CancelScheduleByKeyOutputSchema,
  DeleteScheduleByKeyInputSchema,
  DeleteScheduleByKeyOutputSchema
} from './schedules'

// HITL Cancel by Metadata types and schemas
export type { HitlCancelByMetadataInput, HitlCancelByMetadataOutput } from './approval'

export { HitlCancelByMetadataInputSchema, HitlCancelByMetadataOutputSchema } from './approval'
