/**
 * Generated by orval v6.31.0 🍺
 * Do not edit manually.
 * Hub Resources Service
 * OpenAPI spec version: 0.0.1
 */
import { customClient } from "../custom-client";
export interface UpdateResourceDto {
    [key: string]: unknown;
}
export declare enum ResourceSortOrder {
    asc = "asc",
    desc = "desc"
}
export declare enum ResourceSort {
    createdAt = "createdAt",
    updatedAt = "updatedAt"
}
export declare enum AllowedResourceEntityType {
    event = "event"
}
export declare enum ResourceStatus {
    PENDING = "PENDING",
    UPLOADED = "UPLOADED",
    FAILED = "FAILED"
}
export type SearchResourcesParams = {
    /**
     * Single resource ID or comma seperated resource IDs
     */
    ids?: string[];
    /**
     * Resource status
     */
    status?: ResourceStatus;
    /**
     * Entity type
     */
    entityType?: AllowedResourceEntityType;
    /**
     * Entity ID associated with the resource
     */
    entityId?: string;
    /**
     * Maximum number of resources to return in response
     */
    num?: number;
    /**
     * Index to start at
     */
    start?: number;
    /**
     * Property to sort results by
     */
    sortBy?: ResourceSort;
    /**
     * sort results order desc or asc
     */
    sortOrder?: ResourceSortOrder;
};
export interface IResource {
    /** @nullable */
    altText: string | null;
    createdAt: string;
    entityId: string;
    entityType: string;
    fileName: string;
    id: string;
    mimeType: string;
    presignedUrl: string;
    s3Key: string;
    /** @nullable */
    sizeBytes: number | null;
    status: ResourceStatus;
    updatedAt: string;
    uploadedBy: string;
}
export interface IPagedResourceResponse {
    items: IResource[];
    nextStart: number;
    total: number;
}
/**
 * MIME type of the resource
 */
export declare enum ICreateResourceMimeType {
    "image/jpeg" = "image/jpeg",
    "image/png" = "image/png",
    "image/webp" = "image/webp"
}
/**
 * Type of entity associated with the resource
 */
export declare enum ICreateResourceEntityType {
    event = "event"
}
export interface ICreateResource {
    /**
     * Alternative text for the resource
     * @nullable
     */
    altText?: string | null;
    /** Entity ID associated with the resource */
    entityId: string;
    /** Type of entity associated with the resource */
    entityType: ICreateResourceEntityType;
    /** File name */
    fileName: string;
    /** MIME type of the resource */
    mimeType: ICreateResourceMimeType;
    /** AGO ID of the user who uploaded the resource */
    uploadedBy: string;
}
type SecondParameter<T extends (...args: any) => any> = Parameters<T>[1];
/**
 * Create a new resource.
 */
export declare const createResource: (iCreateResource: ICreateResource, options?: SecondParameter<typeof customClient>) => Promise<IResource>;
/**
 * Search for resources matching request criteria.
 */
export declare const searchResources: (params?: SearchResourcesParams, options?: SecondParameter<typeof customClient>) => Promise<IPagedResourceResponse>;
/**
 * Get a single resource.
 */
export declare const getResource: (id: string, options?: SecondParameter<typeof customClient>) => Promise<IResource>;
/**
 * Update an existing resource.
 */
export declare const updateResource: (id: string, updateResourceDto: UpdateResourceDto, options?: SecondParameter<typeof customClient>) => Promise<void>;
/**
 * Delete an existing resource.
 */
export declare const deleteResource: (id: string, options?: SecondParameter<typeof customClient>) => Promise<IResource>;
export type CreateResourceResult = NonNullable<Awaited<ReturnType<typeof createResource>>>;
export type SearchResourcesResult = NonNullable<Awaited<ReturnType<typeof searchResources>>>;
export type GetResourceResult = NonNullable<Awaited<ReturnType<typeof getResource>>>;
export type UpdateResourceResult = NonNullable<Awaited<ReturnType<typeof updateResource>>>;
export type DeleteResourceResult = NonNullable<Awaited<ReturnType<typeof deleteResource>>>;
export {};
