import type Express from 'express'; import type stream from 'node:stream'; import * as uriParser from '../sbvr-api/uri-parser.js'; import type { ConfigLoader } from '../server-glue/module.js'; import type { WebResourceType as WebResource } from '@balena/sbvr-types'; import { TypedError } from 'typed-error'; import type WebresourceModel from './webresource.js'; export * from './handlers/index.js'; export type { BeginMultipartUploadResponse } from './actions/beginUpload.js'; export interface IncomingFile { fieldname: string; originalname: string; encoding: string; mimetype: string; stream: stream.Readable; } export interface UploadResponse { size: number; filename: string; } export interface BeginMultipartUploadPayload { filename: string; content_type: string; size: number; chunk_size: number; } export interface UploadPart { url: string; chunkSize: number; partNumber: number; } export interface BeginMultipartUploadHandlerResponse { uploadParts: UploadPart[]; fileKey: string; uploadId: string; } export interface CommitMultipartUploadPayload { fileKey: string; uploadId: string; filename: string; providerCommitData?: Record; } export interface CancelMultipartUploadPayload { fileKey: string; uploadId: string; } export interface WebResourceHandler { handleFile: (resource: IncomingFile) => Promise; removeFile: (fileReference: string) => Promise; onPreRespond: (webResource: WebResource) => Promise; multipartUpload?: { begin: (fieldName: string, payload: BeginMultipartUploadPayload) => Promise; commit: (commitInfo: CommitMultipartUploadPayload) => Promise; cancel: (cancelInfo: CancelMultipartUploadPayload) => Promise; getMinimumPartSize: () => number; getDefaultPartSize: () => number; }; } export declare class WebResourceError extends TypedError { } export declare class FileSizeExceededError extends WebResourceError { name: string; constructor(maxSize: number); } export declare const setupWebresourceHandler: (handler: WebResourceHandler) => void; export declare const getWebresourceHandler: () => WebResourceHandler | undefined; export declare const getUploaderMiddlware: (handler: WebResourceHandler) => Express.RequestHandler; export declare const getWebResourceFields: (request: uriParser.ParsedODataRequest, useTranslations?: boolean) => string[]; export declare const normalizeHref: (href: string) => string; export declare const getDefaultHandler: () => WebResourceHandler; export declare const setupUploadHooks: (handler: WebResourceHandler, apiRoot: string, resourceName: string) => void; export declare const setupUploadActions: (vocab: string, resourceName: string) => void; declare module '../sbvr-api/sbvr-utils.js' { interface API { webresource: PinejsClient; } } export declare const config: ConfigLoader.Config;