/**
 * Create a Netlify API client
 */
export declare function createNetlifyClient(config: NetlifyClientConfig): NetlifyClient;
/**
 * Calculate SHA1 hash of file content
 */
export declare function calculateSha1(content: ArrayBuffer | Uint8Array): Promise<string>;
/**
 * Collect files from a directory for deployment
 */
export declare function collectDeployFiles(directory: string, options?: { ignore?: string[] }): Promise<DeployFile[]>;
/**
 * Create file manifest (path -> sha1 hash mapping)
 */
export declare function createFileManifest(files: DeployFile[]): Record<string, string>;
/**
 * Filter files that need uploading (not already on Netlify)
 */
export declare function filterRequiredFiles(files: DeployFile[], required: string[]): DeployFile[];
/**
 * Format file size for display
 */
export declare function formatSize(bytes: number): string;
/**
 * Get total size of files
 */
export declare function getTotalSize(files: DeployFile[]): number;
// ============================================================================
// Types
// ============================================================================
export declare interface NetlifySite {
  id: string
  name: string
  url: string
  ssl_url: string
  admin_url: string
  created_at: string
  updated_at: string
  custom_domain?: string
  default_domain: string
  deploy_url: string
  published_deploy?: NetlifyDeploy
}
export declare interface NetlifyDeploy {
  id: string
  site_id: string
  state: 'new' | 'pending_review' | 'uploading' | 'uploaded' | 'preparing' | 'prepared' | 'processing' | 'ready' | 'error' | 'retrying'
  name: string
  url: string
  ssl_url: string
  admin_url: string
  deploy_url: string
  deploy_ssl_url: string
  created_at: string
  updated_at: string
  published_at?: string
  title?: string
  context: string
  branch?: string
  commit_ref?: string
  commit_url?: string
  review_url?: string
  error_message?: string
  required: string[]
  required_functions?: string[]
}
export declare interface CreateDeployOptions {
  title?: string
  branch?: string
  draft?: boolean
  files: Record<string, string>
  functions?: Record<string, string>
  async?: boolean
}
export declare interface DeployFile {
  path: string
  content: ArrayBuffer | Uint8Array
  sha1: string
}
export declare interface NetlifyClientConfig {
  token: string
  baseUrl?: string
}
export declare interface NetlifyError extends Error {
  status: number
  code?: string
  details?: unknown
}
// ============================================================================
// Netlify Client
// ============================================================================
export declare interface NetlifyClient {
  getSite(siteId: string): Promise<NetlifySite>
  listSites(): Promise<NetlifySite[]>
  createSite(name?: string): Promise<NetlifySite>
  createDeploy(siteId: string, options: CreateDeployOptions): Promise<NetlifyDeploy>
  uploadFile(deployId: string, path: string, content: ArrayBuffer | Uint8Array): Promise<void>
  uploadFiles(deployId: string, files: DeployFile[]): Promise<void>
  getDeploy(deployId: string): Promise<NetlifyDeploy>
  waitForDeploy(deployId: string, options?: WaitOptions): Promise<NetlifyDeploy>
  lockDeploy(deployId: string): Promise<NetlifyDeploy>
  unlockDeploy(deployId: string): Promise<NetlifyDeploy>
}
export declare interface WaitOptions {
  timeout?: number
  pollInterval?: number
  onProgress?: (deploy: NetlifyDeploy) => void
}
