export declare const Routes: {
    GET: string;
    GET_CONTENT: string;
    GET_IMAGE: string;
    GET_BY_RECORD: string;
    GET_CONTENT_BY_RECORD: string;
    GET_BATCH: string;
    CREATE: string;
    UPDATE: string;
    DELETE: string;
};
/**
 * Uploading files to cloud storage can occasionally result with transient server errors,
 * which are indicated by these status codes.
 *
 * Upon receiving any of these errors, it's up to the client to retry the requests.
 */
export declare const RETRYABLE_UPLOAD_ERRORS: readonly number[];
export type Options = Partial<{
    /** Signed url expiration in seconds. */
    expiration: number;
    /** Signed url expected request content-md5 header (base64 encoded 128-bit MD5 digest of the body). */
    content_md5: string;
    /** Signed url expected request content-type header. */
    content_type: string;
    /** Search only for stored uploads. Stored uploads are uploads with a set 'stored_at' and not expired 'ttl'. */
    stored: boolean;
}>;
export type GetUploadResponse = Bringg.Upload & {
    download_url: string;
    download_expires_at: number | null;
    upload_url: string;
};
export type CreateRequest = {
    /** The id of the record the upload relates to. */
    record_id?: number;
    /**
     * The type of the record the upload relates to. For example, all task note related uploads have the 'TaskNote' type.
     * Constants are available on the 'Bringg.RecordType' type.
     */
    record_type?: string | Bringg.RecordType;
    /**
     * Time to live of the upload in seconds.
     * After the ttl passed (from the upload store time), it will be considered expired.
     */
    ttl?: number;
    /**
     * The time the upload was stored.
     * Can be an iso string or a date object.
     */
    stored_at?: string | Date;
    /**
     * The extension to set to the uploaded file.
     * The file name is always generated, and is optionally added the extension
     */
    ext?: string;
    /**
     * The attachment type of the upload.
     * Most of the time, this should have the same value as the 'record_type', but in case the same record can have multiple attachments they can be distinguished by the attachment type type.
     * The attachment type is immutable and must be set on the upload creation, even if not attached to a record yet.
     * Constants are available on the 'Bringg.AttachmentType' type.
     */
    attachment_type: string | Bringg.AttachmentType;
};
export type UpdateRequest = {
    /** The id of the record the upload relates to. */
    record_id?: number | undefined;
    /**
     * The type of the record the upload relates to. For example, all task note related uploads have the 'TaskNote' type.
     * Constants are available on the 'Bringg.RecordType' type.
     */
    record_type?: string | undefined;
    /**
     * Time to live of the upload in seconds.
     * After the ttl passed (from the upload store time), it will be considered expired.
     */
    ttl?: number | undefined;
    /**
     * The time the upload was stored.
     * Can be an iso string or a date object.
     */
    stored_at?: string | Date | undefined;
};
export type GetParams = {
    id: number;
} | {
    record_id: number;
    record_type: string;
    attachment_type?: string;
};
