export type RequestOptionsType = {
    method: string;
    headers: Record<string, string>;
    body?: any;
};
type ApplyToRequestResult = {
    requestOptions: RequestOptionsType;
    url: string;
};
export interface Authentication {
    /**
    * Apply authentication settings to header and query params.
    * Returns updated requestOptions and url (for query params).
    */
    applyToRequest(requestOptions: RequestOptionsType, url: string): ApplyToRequestResult | Promise<ApplyToRequestResult>;
}
export class HttpBasicAuth implements Authentication {
    username: string;
    password: string;
    applyToRequest(requestOptions: RequestOptionsType, url: string): {
        requestOptions: {
            headers: {
                [x: string]: string;
            };
            method: string;
            body?: any;
        };
        url: string;
    };
}
export class ApiKeyAuth implements Authentication {
    private location;
    private paramName;
    apiKey: string;
    constructor(location: 'query' | 'header' | 'cookie', paramName: string);
    applyToRequest(requestOptions: RequestOptionsType, url: string): {
        requestOptions: {
            headers: {
                [x: string]: string;
            };
            method: string;
            body?: any;
        };
        url: string;
    };
}
export class OAuth implements Authentication {
    accessToken: string;
    applyToRequest(requestOptions: RequestOptionsType, url: string): {
        requestOptions: {
            headers: {
                [x: string]: string;
            };
            method: string;
            body?: any;
        };
        url: string;
    };
}
export class VoidAuth implements Authentication {
    username: string;
    password: string;
    applyToRequest(requestOptions: RequestOptionsType, url: string): {
        requestOptions: RequestOptionsType;
        url: string;
    };
}
export const convertISODateStringsOnObj: (obj: any) => any;
export type LocalFormParams = Record<string, string> | FormData | FormData;
export function parseResponse(res: Response | Response): Promise<any>;
export function serializeFormDataValue(value: any, type: string): any;
export function isFormData(formParams: LocalFormParams | undefined): formParams is FormData | FormData;
export function ensureFormData(formParams: LocalFormParams | undefined): FormData | FormData;
export function appendFormField(formParams: LocalFormParams | undefined, key: string, value: any): LocalFormParams;
export function applyFormParams(requestOptions: RequestOptionsType, formParams: LocalFormParams | undefined): void;
export const COLLECTION_FORMATS: {
    csv: string;
    tsv: string;
    ssv: string;
    pipes: string;
};


export class HttpError extends Error {
    response: Response;
    body: any;
    statusCode?: number | undefined;
    constructor(response: Response, body: any, statusCode?: number | undefined);
}
export interface RequestDetailedFile {
    value: ArrayBuffer;
    options: {
        filename: string;
        contentType: string;
    };
}
export type RequestFile = RequestDetailedFile;
export const APIS: (typeof AdminApi | typeof AuthApi | typeof CDNApi | typeof CanaryApi | typeof ClassifyApi | typeof DSPApi | typeof DatasetVersionsApi | typeof DeploymentApi | typeof DevicesApi | typeof EmailVerificationApi | typeof ExportApi | typeof FeatureFlagsApi | typeof HealthApi | typeof ImpulseApi | typeof IntegrationsApi | typeof JobsApi | typeof LearnApi | typeof LoginApi | typeof MetricsApi | typeof MonitoringApi | typeof OptimizationApi | typeof OrganizationBlocksApi | typeof OrganizationCreateProjectApi | typeof OrganizationDataApi | typeof OrganizationDataCampaignsApi | typeof OrganizationJobsApi | typeof OrganizationPipelinesApi | typeof OrganizationPortalsApi | typeof OrganizationsApi | typeof PerformanceCalibrationApi | typeof PostProcessingApi | typeof ProjectsApi | typeof RawDataApi | typeof TestApi | typeof ThemesApi | typeof ThirdPartyAuthApi | typeof UploadPortalApi | typeof UserApi | typeof VlmApi | typeof WhitelabelsApi)[];


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum AdminApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type adminCreateMetricsReportQueryParams = {
    startDate: Date;
    endDate: Date;
};
type adminCreateOrganizationUsageReportQueryParams = {
    startDate: Date;
    endDate: Date;
};
type adminDeleteOrganizationQueryParams = {
    fullDeletion?: boolean;
};
type adminDeleteProjectQueryParams = {
    fullDeletion?: boolean;
};
type adminDeleteUserQueryParams = {
    fullDeletion?: boolean;
    skipUserNotification?: boolean;
};
type adminFindUserQueryParams = {
    query: string;
};
type adminGetJobDetailsQueryParams = {
    parentType: JobParentTypeEnum;
    includeChildrenJobs?: boolean;
};
type adminGetJobsLogsQueryParams = {
    parentType: JobParentTypeEnum;
    limit: number;
    offset: number;
};
type adminGetJobsMetricsQueryParams = {
    parentType: JobParentTypeEnum;
};
type adminGetMetricsReportsQueryParams = {
    limit?: number;
    offset?: number;
};
type adminGetOauthClientsQueryParams = {
    sort?: string;
    filters?: string;
    limit?: number;
    offset?: number;
    search?: string;
};
type adminGetOrganizationComputeTimeUsageQueryParams = {
    startDate: Date;
    endDate: Date;
};
type adminGetOrganizationDataExportsQueryParams = {
    limit?: number;
    offset?: number;
};
type adminGetOrganizationInfoQueryParams = {
    includeDeleted?: boolean;
};
type adminGetOrganizationJobsQueryParams = {
    limit?: number;
    offset?: number;
};
type adminGetOrganizationUsageReportsQueryParams = {
    limit?: number;
    offset?: number;
};
type adminGetOrganizationsQueryParams = {
    active?: number;
    includeDeleted?: boolean;
    sort?: string;
    filters?: string;
    limit?: number;
    offset?: number;
    search?: string;
};
type adminGetProjectDataSamplesQueryParams = {
    limit?: number;
    offset?: number;
};
type adminGetProjectJobsQueryParams = {
    limit?: number;
    offset?: number;
};
type adminGetProjectsQueryParams = {
    active?: number;
    sort?: string;
    filters?: string;
    limit?: number;
    offset?: number;
    search?: string;
};
type adminGetTrashbinQueryParams = {
    sort?: string;
    filters?: string;
    limit?: number;
    offset?: number;
    search?: string;
};
type adminGetTrashbinJobsQueryParams = {
    startDate?: Date;
    endDate?: Date;
    limit?: number;
    offset?: number;
    sort?: string;
    key?: string;
};
type adminGetUserJobsQueryParams = {
    limit?: number;
    offset?: number;
};
type adminGetUsersQueryParams = {
    active?: number;
    tier?: UserTierEnum;
    fields?: string;
    sort?: string;
    filters?: string;
    limit?: number;
    offset?: number;
    search?: string;
};
type adminListOrganizationDataQueryParams = {
    dataset?: string;
    limit?: number;
    offset?: number;
};
type adminListTrashbinOrganizationS3FilesQueryParams = {
    prefix?: string;
    sourceBucket: 'ingestion' | 'cdn' | 'user-data';
    continuationToken?: string;
};
type adminListTrashbinProjectS3FilesQueryParams = {
    prefix?: string;
    sourceBucket: 'ingestion' | 'cdn' | 'user-data';
    continuationToken?: string;
};
type adminListTrashbinUserS3FilesQueryParams = {
    prefix?: string;
    sourceBucket: 'ingestion' | 'cdn' | 'user-data';
    continuationToken?: string;
};
type adminProjectKillSwitchQueryParams = {
    skipRevokeApiKeys?: boolean;
};
export type adminUploadOauthClientLogoFormParams = {
    image: RequestFile;
};
export type AdminApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class AdminApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: AdminApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: AdminApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: AdminApiOpts);
    get opts(): AdminApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: AdminApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Admin-only API to add an email domain to the list of disallowed email domains.
     * @summary Add a disallowed email domain
     * @param adminAddDisallowedEmailDomainRequest
     */
    adminAddDisallowedEmailDomain(adminAddDisallowedEmailDomainRequest: AdminAddDisallowedEmailDomainRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to set the list of identity provider for a given domain.
     * @summary Add or update SSO settings for a domain
     * @param domainName Email domain name
     * @param adminAddOrUpdateSSODomainIdPsRequest
     */
    adminAddOrUpdateSSODomainIdPs(domainName: string, adminAddOrUpdateSSODomainIdPsRequest: AdminAddOrUpdateSSODomainIdPsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to add a user to an organization. If no user is provided, the current user is used.
     * @summary Add user to an organization
     * @param organizationId Organization ID
     * @param adminAddOrganizationUserRequest
     */
    adminAddUserToOrganization(organizationId: number, adminAddOrganizationUserRequest: AdminAddOrganizationUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to add a user to a project. If no user is provided, the current user is used.
     * @summary Add user to a project
     * @param projectId Project ID
     * @param adminAddProjectUserRequest
     */
    adminAddUserToProject(projectId: number, adminAddProjectUserRequest: AdminAddProjectUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * DEPRECATED. Admin-only API to add the current user to a project.
     * @summary Add current user to a project
     * @param projectId Project ID
     */
    adminAddUserToProjectDeprecated(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to create a new global metrics report. A job is created to process the report request and the job details are returned in the response.
     * @summary Create a new global metrics report
     * @param startDate Start date
     * @param endDate End date
     */
    adminCreateMetricsReport(queryParams: adminCreateMetricsReportQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Create a new OAuth client in the system. This endpoint generates a unique client ID and secret that will be used for OAuth authentication. The client can be configured with specific redirect URIs, allowed grant types, and scopes. By default, the authorization_code grant type is enabled. Requires admin:oauth:write permission.
     * @summary Register a new OAuth client
     * @param adminCreateOauthClientRequest
     */
    adminCreateOauthClient(adminCreateOauthClientRequest: AdminCreateOauthClientRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminCreateOauthClientResponse>;
    /**
     * Admin-only API to create a new organization.
     * @summary Create a new organization
     * @param adminCreateOrganizationRequest
     */
    adminCreateOrganization(adminCreateOrganizationRequest: AdminCreateOrganizationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateOrganizationResponse>;
    /**
     * Admin-only API to create a new data export for an organization. A job is created to process the export request and the job details are returned in the response.
     * @summary Create a new organization data export
     * @param organizationId Organization ID
     * @param adminCreateOrganizationDataExportRequest
     */
    adminCreateOrganizationDataExport(organizationId: number, adminCreateOrganizationDataExportRequest: AdminCreateOrganizationDataExportRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Admin-only API to create a new project for an organization.
     * @summary Create a new organization project
     * @param organizationId Organization ID
     * @param adminCreateProjectRequest
     */
    adminCreateOrganizationProject(organizationId: number, adminCreateProjectRequest: AdminCreateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateProjectResponse>;
    /**
     * Admin-only API to create a new usage report for an organization. A job is created to process the report request and the job details are returned in the response.
     * @summary Creates a new usage report
     * @param organizationId Organization ID
     * @param startDate Start date
     * @param endDate End date
     */
    adminCreateOrganizationUsageReport(organizationId: number, queryParams: adminCreateOrganizationUsageReportQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Admin-only API to create a new free tier project.
     * @summary Create a new project
     * @param adminCreateProjectRequest
     */
    adminCreateProject(adminCreateProjectRequest: AdminCreateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateProjectResponse>;
    /**
     * Admin-only API to create a new signup approval request for a user. This operation will also send a verification code to the specified approver email address.
     * @summary Create signup approval request
     * @param userId User ID
     * @param adminCreateSignupApprovalRequest
     */
    adminCreateSignupApprovalRequest(userId: number, adminCreateSignupApprovalRequest: AdminCreateSignupApprovalRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Admin-only API to create an enterprise trial for a user.
     * @summary Create user enterprise trial
     * @param adminStartEnterpriseTrialRequest
     */
    adminCreateTrial(adminStartEnterpriseTrialRequest: AdminStartEnterpriseTrialRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Admin-only API to delete an email domain from the list of disallowed email domains.
     * @summary Delete disallowed email domain
     * @param domainName Email domain name
     */
    adminDeleteDisallowedEmailDomain(domainName: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to delete a global metrics report.
     * @summary Delete global metrics report
     * @param reportId Report ID
     */
    adminDeleteMetricsReport(reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Deactivate an existing OAuth client. This operation performs a soft delete, marking the client as inactive while preserving its historical data. The client\'s credentials will no longer be valid for new OAuth flows. Requires admin:oauth:write permission.
     * @summary Deactivate OAuth client
     * @param clientId Client ID
     */
    adminDeleteOauthClient(clientId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete the logo for an existing OAuth client. This endpoint allows deleting the client\'s logo.
     * @summary Delete OAuth client logo
     * @param clientId Client ID
     */
    adminDeleteOauthClientLogo(clientId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to delete an organization. The deletion process varies based on the `fullDelete` parameter:  **Soft Delete** (default, `fullDelete=false`):     - Organization is marked as deleted in the database     - Organization remains hidden from the product     - All data is preserved and recoverable     - No data is removed from S3 or FSx  **Full Delete** (`fullDelete=true`): 1. Immediate soft deletion     - Organization is marked as deleted and hidden from the product     - Access is immediately revoked for all organization members 2. Data preservation     - S3 and FSx assets are moved to a trash bin 3. Scheduled permanent deletion     - A 30-day grace period begins     - After 30 days, all organization data and S3 and FSx assets are permanently deleted     - During the grace period:         - Deletion can be cancelled by administrators         - Data can be recovered if needed         - Progress can be monitored via admin API
     * @summary Delete an organization
     * @param organizationId Organization ID
     * @param fullDeletion Set to true to schedule permanent deletion
     */
    adminDeleteOrganization(organizationId: number, queryParams?: adminDeleteOrganizationQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Admin-only API to delete a data export for an organization.
     * @summary Delete organization data export
     * @param organizationId Organization ID
     * @param exportId Export ID
     */
    adminDeleteOrganizationDataExport(organizationId: number, exportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to delete a usage report for an organization.
     * @summary Delete usage report
     * @param organizationId Organization ID
     * @param reportId Report ID
     */
    adminDeleteOrganizationUsageReport(organizationId: number, reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to delete a project.
     * @summary Delete a project
     * @param projectId Project ID
     * @param fullDeletion Set to true to schedule permanent deletion
     */
    adminDeleteProject(projectId: number, queryParams?: adminDeleteProjectQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to delete the list of identity providers for a given domain.
     * @summary Delete SSO settings for a domain
     * @param domainName Email domain name
     */
    adminDeleteSSODomainIdPs(domainName: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to delete a studio config item.
     * @summary Delete a studio config item
     * @param configKey Config Key
     */
    adminDeleteStudioConfig(configKey: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to delete an enterprise trial.
     * @summary Delete enterprise trial
     * @param enterpriseTrialId Enterprise trial ID
     */
    adminDeleteTrial(enterpriseTrialId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to delete a user. The deletion process varies based on the `fullDelete` parameter:  **Soft Delete** (default, `fullDelete=false`): - User is marked as deleted in the database - User remains hidden from the product - All data is preserved and recoverable - No data is removed from S3 or FSx - User is unsubscribed from marketing communications - Any active subscriptions are cancelled  **Full Delete** (`fullDelete=true`): 1. Immediate soft deletion     - User is marked as deleted and hidden from the product     - Access is immediately revoked     - User is unsubscribed from marketing communications     - Any active subscriptions are cancelled 2. Data preservation     - S3 and FSx assets are moved to a trash bin 3. Scheduled permanent deletion     - A 30-day grace period begins     - After 30 days, all user data and S3 and FSx assets are permanently deleted     - During the grace period:         - Deletion can be cancelled by administrators         - Data can be recovered if needed         - Progress can be monitored via admin API
     * @summary Delete a user
     * @param userId User ID
     * @param fullDeletion Set to true to schedule permanent deletion
     * @param skipUserNotification If set to true, skips sending email notifications to users about their account/entity deletion. This is typically used for maintenance activities where notification is not needed or desired.
     */
    adminDeleteUser(userId: number, queryParams?: adminDeleteUserQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Admin-only API to delete a feature flag. Deleting a feature flag essentially disables the feature for all users.
     * @summary Set a feature flag OFF
     * @param featureId Feature ID.
     */
    adminDisableFeature(featureId: Feature, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to download a global metrics report.
     * @summary Download global metrics report
     * @param reportId Report ID
     */
    adminDownloadMetricsReport(reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<any>;
    /**
     * Admin-only API to download a usage report for an organization.
     * @summary Download usage report
     * @param organizationId Organization ID
     * @param reportId Report ID
     */
    adminDownloadOrganizationUsageReport(organizationId: number, reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<any>;
    /**
     * ⚠️ DANGER: This is a highly destructive maintenance endpoint that forcefully deletes all content from the trash bin, regardless of grace period status. This should only be used for: - Internal testing purposes - Manual maintenance tasks - Emergency cleanup operations  Unlike the normal automatic deletion process which respects the 30-day grace period, this endpoint: - Immediately and permanently deletes ALL data in the trash bin - Bypasses the standard grace period checks - Cannot be undone - May delete data that would otherwise be recoverable  The normal trash bin system works as follows: 1. When users/organizations are deleted with `fullDelete=true`: - Their data is moved to the trash bin - A 30-day grace period begins - The data remains recoverable during this period  2. During the 30-day grace period: - Data is preserved in its original structure - Administrators can recover data if needed - The deletion can be cancelled - Storage costs continue to accrue  ⚠️ WARNING: - This endpoint bypasses all safety mechanisms - Data deletion is immediate and irreversible - Should not be used in normal operations - Requires explicit admin permissions - Consider using targeted deletion endpoints instead (i.e. /api/admin/trashbin/organizations/:id)  Note: The system runs automated cleanup jobs periodically for normal maintenance. This endpoint should only be used in exceptional circumstances by authorized administrators.
     * @summary Empty all trashbin content
     */
    adminEmptyTrashbin(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Admin-only API to set a feature flag ON. Setting a feature flag ON essentially enables the feature for all users.
     * @summary Set a feature flag ON
     * @param featureId Feature ID.
     */
    adminEnableFeature(featureId: Feature, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * DEPRECATED. Admin-only API to find a user by username or email address.
     * @summary Find a user
     * @param query Part of e-mail address or username
     */
    adminFindUser(queryParams: adminFindUserQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<FindUserResponse>;
    /**
     * DEPRECATED. Admin-only API to get list of all users that have been active in the past 30 days.
     * @summary Get all user IDs (active last 30 days)
     */
    adminGetAllActiveUserIds(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetUserIdsResponse>;
    /**
     * DEPRECATED. Admin-only API to get list of all users.
     * @summary Get all user IDs
     */
    adminGetAllUserIds(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetUserIdsResponse>;
    /**
     * Admin-only API to get a data migration.
     * @summary Get data migration
     * @param migrationId Data migration ID
     */
    adminGetDataMigration(migrationId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetDataMigrationResponse>;
    /**
     * Admin-only API to get data migrations.
     * @summary Get data migrations
     */
    adminGetDataMigrations(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetDataMigrationsResponse>;
    /**
     * Admin-only API to get the list of disallowed email domains.
     * @summary Get the list of disallowed email domains
     */
    adminGetDisallowedEmailDomains(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetDisallowedEmailDomainsResponse>;
    /**
     * Get the enterprise trial verification code of the specified email.
     * @summary Get enterprise trial email verification code
     * @param email Email address
     */
    adminGetEmailVerificationCode(email: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetEmailVerificationCodeResponse>;
    /**
     * Admin-only API to get all feature flags.
     * @summary Get all feature flags
     */
    adminGetFeatureFlags(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetFeatureFlagsResponse>;
    /**
     * Get the job execution details including inner jobs
     * @summary Get job execution details
     * @param jobId Job ID
     * @param parentType Job parent type (project, organization, or standalone)
     * @param includeChildrenJobs Include the details of each of the children jobs (recursively)
     */
    adminGetJobDetails(jobId: number, queryParams: adminGetJobDetailsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<JobDetailsResponse>;
    /**
     * Get the logs for a job.
     * @summary Get job logs
     * @param jobId Job ID
     * @param parentType Job parent type (project, organization, or standalone)
     * @param limit Maximum number of logs
     * @param offset Start fetching logs from this offset
     */
    adminGetJobsLogs(jobId: number, queryParams: adminGetJobsLogsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<JobLogsResponse>;
    /**
     * Get cpu/memory usage metrics, if the job is a Kubernetes job
     * @summary Get job usage metrics
     * @param jobId Job ID
     * @param parentType Job parent type (project, organization, or standalone)
     */
    adminGetJobsMetrics(jobId: number, queryParams: adminGetJobsMetricsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<JobMetricsResponse>;
    /**
     * Admin-only API to get global metrics.
     * @summary Get global metrics
     */
    adminGetMetrics(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetMetricsResponse>;
    /**
     * Admin-only API to get a global metrics report.
     * @summary Get global metrics report
     * @param reportId Report ID
     */
    adminGetMetricsReport(reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetReportResponse>;
    /**
     * Admin-only API to get global metrics reports.
     * @summary Get global metrics reports
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    adminGetMetricsReports(queryParams?: adminGetMetricsReportsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetReportsResponse>;
    /**
     * Retrieve detailed information about a specific OAuth client, including its configuration, allowed grant types, redirect URIs, and creation metadata. The response includes the creator\'s information (name and email) who registered the client. Requires admin:oauth:read permission.
     * @summary Get OAuth client details
     * @param clientId Client ID
     */
    adminGetOauthClient(clientId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetOauthClientResponse>;
    /**
     * Retrieve a paginated list of all registered OAuth clients in the system. The response includes client metadata such as name, redirect URIs, allowed grant types, and creation information. Results can be filtered, sorted, and searched using query parameters. Requires admin:oauth:read permission.
     * @summary List OAuth clients
     * @param sort Fields and order to sort query by
     * @param filters
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     */
    adminGetOauthClients(queryParams?: adminGetOauthClientsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetOauthClientsResponse>;
    /**
     * Admin-only API to get compute time usage for an organization over a period of time.
     * @summary Get organization compute time usage
     * @param organizationId Organization ID
     * @param startDate Start date
     * @param endDate End date
     */
    adminGetOrganizationComputeTimeUsage(organizationId: number, queryParams: adminGetOrganizationComputeTimeUsageQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetOrganizationComputeTimeUsageResponse>;
    /**
     * Admin-only API to get a data export for an organization.
     * @summary Get organization data export
     * @param organizationId Organization ID
     * @param exportId Export ID
     */
    adminGetOrganizationDataExport(organizationId: number, exportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataExportResponse>;
    /**
     * Admin-only API to get the list of all data exports for an organization.
     * @summary Get all organization data exports
     * @param organizationId Organization ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    adminGetOrganizationDataExports(organizationId: number, queryParams?: adminGetOrganizationDataExportsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataExportsResponse>;
    /**
     * Admin-only API to list all information about this organization.
     * @summary Organization information
     * @param organizationId Organization ID
     * @param includeDeleted Whether to include deleted entities (users, projects, orgs)
     */
    adminGetOrganizationInfo(organizationId: number, queryParams?: adminGetOrganizationInfoQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminOrganizationInfoResponse>;
    /**
     * Admin-only API to get the list of all jobs for a organization.
     * @summary Get organization jobs
     * @param organizationId Organization ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    adminGetOrganizationJobs(organizationId: number, queryParams?: adminGetOrganizationJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Admin-only API to get a usage report for an organization.
     * @summary Get usage report
     * @param organizationId Organization ID
     * @param reportId Report ID
     */
    adminGetOrganizationUsageReport(organizationId: number, reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetReportResponse>;
    /**
     * Admin-only API to get all usage reports for an organization.
     * @summary Get all usage reports
     * @param organizationId Organization ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    adminGetOrganizationUsageReports(organizationId: number, queryParams?: adminGetOrganizationUsageReportsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetReportsResponse>;
    /**
     * Admin-only API to get the list of all organizations.
     * @summary Get all organizations
     * @param active Whether to search for entities (users, orgs) active in the last X days
     * @param includeDeleted Whether to include deleted entities (users, projects, orgs)
     * @param sort Fields and order to sort query by
     * @param filters
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     */
    adminGetOrganizations(queryParams?: adminGetOrganizationsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetOrganizationsResponse>;
    /**
     * Admin-only API to get project information.
     * @summary Get project
     * @param projectId Project ID
     */
    adminGetProject(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminProjectInfoResponse>;
    /**
     * Admin-only API to get the list of all data samples for a project.  The response is paginated and returns up to 1000 samples per request. To retrieve additional pages: 1. Use the `limit` parameter to specify how many samples to return (max 1000) 2. Use the `offset` parameter to skip a number of samples 3. Make subsequent requests with increasing offset values to retrieve all samples  For example: - First request: limit=1000, offset=0 (samples 1-1000) - Second request: limit=1000, offset=1000 (samples 1001-2000) - And so on
     * @summary Get project data samples
     * @param projectId Project ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    adminGetProjectDataSamples(projectId: number, queryParams?: adminGetProjectDataSamplesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListSamplesResponse>;
    /**
     * Admin-only API to get the list of all jobs for a project.
     * @summary Get project jobs
     * @param projectId Project ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    adminGetProjectJobs(projectId: number, queryParams?: adminGetProjectJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Admin-only API to get the list of all projects.
     * @summary Get all projects
     * @param active Whether to search for entities (users, orgs) active in the last X days
     * @param sort Fields and order to sort query by
     * @param filters
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     */
    adminGetProjects(queryParams?: adminGetProjectsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminListProjectsResponse>;
    /**
     * Admin-only API to get the SSO settings.
     * @summary Get SSO settings
     */
    adminGetSSOSettings(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetSSOSettingsResponse>;
    /**
     * Admin-only API to get the signup approval request for a user.
     * @summary Get signup approval request
     * @param userId User ID
     */
    adminGetSignupApprovalRequest(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetSignupApprovalRequestResponse>;
    /**
     * Admin-only API to get all studio config.
     * @summary Get all studio config
     */
    adminGetStudioConfig(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetStudioConfigResponse>;
    /**
     * Admin-only API to get a studio config item.
     * @summary Get a studio config item
     * @param configKey Config Key
     */
    adminGetStudioConfigKey(configKey: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetStudioConfigResponse>;
    /**
     * Retrieves a list of all organizations, projects and users that have been moved to the trash bin and are awaiting permanent deletion.  The trash bin system works as follows: 1. When entities are deleted with `fullDelete=true`:    - They are moved to the trash bin    - A 30-day grace period begins    - Data remains recoverable during this period  2. During the grace period:    - Entities are hidden from normal operations    - Administrators can monitor deletion progress    - Data can be recovered if needed    - Storage costs continue to accrue  3. After 30 days:    - Entities are permanently deleted    - All associated data is removed    - The deletion becomes irreversible
     * @summary Get the entities in the trashbin
     * @param sort Fields and order to sort query by
     * @param filters
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     */
    adminGetTrashbin(queryParams?: adminGetTrashbinQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetTrashBinResponse>;
    /**
     * Admin-only API to retrieve a paginated list of trash bin related jobs.  Jobs can be filtered by job key  The response is paginated and can be controlled using: - limit: Maximum number of jobs to return - offset: Number of jobs to skip  Results are ordered by creation date (newest first), or custom sort.  Note: This endpoint requires admin:jobs:read permission.
     * @summary Get a list of trash bin related jobs
     * @param startDate Start date
     * @param endDate End date
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param sort Fields and order to sort query by
     * @param key Job key to filter on
     */
    adminGetTrashbinJobs(queryParams?: adminGetTrashbinJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Admin-only API to get a specific enterprise trial.
     * @summary Get enterprise trial
     * @param enterpriseTrialId Enterprise trial ID
     */
    adminGetTrial(enterpriseTrialId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetTrialResponse>;
    /**
     * Admin-only API to get information about a user.
     * @summary Get user
     * @param userId User ID
     */
    adminGetUser(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetUserResponse>;
    /**
     * Admin-only API to get the list of all project jobs for a user.
     * @summary Get user jobs
     * @param userId User ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    adminGetUserJobs(userId: number, queryParams?: adminGetUserJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Admin-only API to get marketing metrics about a user.
     * @summary Get user metrics
     * @param userId User ID
     */
    adminGetUserMetrics(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetUserMetricsResponse>;
    /**
     * Admin-only API to get the list of all registered users.
     * @summary Get all users
     * @param active Whether to search for entities (users, orgs) active in the last X days
     * @param tier Whether to search for free, community plus, professional, or enterprise entities (users, projects)
     * @param fields Comma separated list of fields to fetch in a query
     * @param sort Fields and order to sort query by
     * @param filters
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     */
    adminGetUsers(queryParams?: adminGetUsersQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetUsersResponse>;
    /**
     * Admin-only API to list all data items from an organization. The response is paginated and returns up to 1000 samples per request. To retrieve additional pages: 1. Use the `limit` parameter to specify how many samples to return (max 1000) 2. Use the `offset` parameter to skip a number of samples 3. Make subsequent requests with increasing offset values to retrieve all samples  For example: - First request: limit=1000, offset=0 (samples 1-1000) - Second request: limit=1000, offset=1000 (samples 1001-2000) - And so on
     * @summary List organization data
     * @param organizationId Organization ID
     * @param dataset Selected dataset
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    adminListOrganizationData(organizationId: number, queryParams?: adminListOrganizationDataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationDataResponse>;
    /**
     * List files in the trashbin FSx for a given organization.
     * @summary List organization FSx files in the trash bin
     * @param organizationId Organization ID
     */
    adminListTrashbinOrganizationFSxFiles(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPortalFilesInFolderResponse>;
    /**
     * Lists files in the trash bin S3 bucket for a given organization. Files are organized by their original source bucket.  The `sourceBucket` parameter specifies which bucket to list files from: - ingestion: Lists files from the ingestion bucket - cdn: Lists files from the CDN bucket - user-data: Lists files from the user data bucket  Optionally, use the `filePrefix` parameter to filter results to a specific path or filename pattern.  The response is paginated and returns up to 1000 files per request. To retrieve additional pages: 1. Make the initial request without a continuation token 2. If more files exist, the response will include a `continuationToken` 3. Make subsequent requests with the provided token to retrieve the next page 4. Repeat until no continuation token is returned  Note: Files remain in the trash bin for 30 days before permanent deletion.
     * @summary List organization S3 files in the trash bin
     * @param organizationId Organization ID
     * @param sourceBucket Specifies which source bucket to list deleted files from. Options are: - ingestion: Files uploaded through data ingestion - cdn: Files stored in the CDN - user-data: User-generated or uploaded content
     * @param prefix Directory path prefix to filter results. For example: - Empty string or \&quot;/\&quot; lists files in the root directory - \&quot;docs/\&quot; lists files in the docs directory - \&quot;docs/images/\&quot; lists files in the docs/images subdirectory
     * @param continuationToken Token for paginating through results. When a list operation returns more results than can fit in a single response, the response will include a continuationToken. Pass this token in your next request to get the next page of results.  If not provided, returns the first page of results. When there are no more results, the response will not include a continuationToken.  Note: When backed by S3, this maps directly to S3\&#39;s NextContinuationToken.
     */
    adminListTrashbinOrganizationS3Files(organizationId: number, queryParams: adminListTrashbinOrganizationS3FilesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPortalFilesInFolderResponse>;
    /**
     * List files in the trashbin FSx for a given project.
     * @summary List project FSx files in the trash bin
     * @param projectId Project ID
     */
    adminListTrashbinProjectFSxFiles(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPortalFilesInFolderResponse>;
    /**
     * Lists files in the trash bin S3 bucket for a given project. Files are organized by their original source bucket.  The `sourceBucket` parameter specifies which bucket to list files from: - ingestion: Lists files from the ingestion bucket - cdn: Lists files from the CDN bucket - user-data: Lists files from the user data bucket  Optionally, use the `filePrefix` parameter to filter results to a specific path or filename pattern.  The response is paginated and returns up to 1000 files per request. To retrieve additional pages: 1. Make the initial request without a continuation token 2. If more files exist, the response will include a `continuationToken` 3. Make subsequent requests with the provided token to retrieve the next page 4. Repeat until no continuation token is returned  Note: Files remain in the trash bin for 30 days before permanent deletion.
     * @summary List project S3 files in the trash bin
     * @param projectId Project ID
     * @param sourceBucket Specifies which source bucket to list deleted files from. Options are: - ingestion: Files uploaded through data ingestion - cdn: Files stored in the CDN - user-data: User-generated or uploaded content
     * @param prefix Directory path prefix to filter results. For example: - Empty string or \&quot;/\&quot; lists files in the root directory - \&quot;docs/\&quot; lists files in the docs directory - \&quot;docs/images/\&quot; lists files in the docs/images subdirectory
     * @param continuationToken Token for paginating through results. When a list operation returns more results than can fit in a single response, the response will include a continuationToken. Pass this token in your next request to get the next page of results.  If not provided, returns the first page of results. When there are no more results, the response will not include a continuationToken.  Note: When backed by S3, this maps directly to S3\&#39;s NextContinuationToken.
     */
    adminListTrashbinProjectS3Files(projectId: number, queryParams: adminListTrashbinProjectS3FilesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPortalFilesInFolderResponse>;
    /**
     * List files in the trashbin FSx for a given user.
     * @summary List user FSx files in the trash bin
     * @param userId User ID
     */
    adminListTrashbinUserFSxFiles(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPortalFilesInFolderResponse>;
    /**
     * Lists files in the trash bin S3 bucket for a given user. Files are organized by their original source bucket.  The `sourceBucket` parameter specifies which bucket to list files from: - ingestion: Lists files from the ingestion bucket - cdn: Lists files from the CDN bucket - user-data: Lists files from the user data bucket  Optionally, use the `filePrefix` parameter to filter results to a specific path or filename pattern.  The response is paginated and returns up to 1000 files per request. To retrieve additional pages: 1. Make the initial request without a continuation token 2. If more files exist, the response will include a `continuationToken` 3. Make subsequent requests with the provided token to retrieve the next page 4. Repeat until no continuation token is returned  Note: Files remain in the trash bin for 30 days before permanent deletion.
     * @summary List user S3 files in the trash bin
     * @param userId User ID
     * @param sourceBucket Specifies which source bucket to list deleted files from. Options are: - ingestion: Files uploaded through data ingestion - cdn: Files stored in the CDN - user-data: User-generated or uploaded content
     * @param prefix Directory path prefix to filter results. For example: - Empty string or \&quot;/\&quot; lists files in the root directory - \&quot;docs/\&quot; lists files in the docs directory - \&quot;docs/images/\&quot; lists files in the docs/images subdirectory
     * @param continuationToken Token for paginating through results. When a list operation returns more results than can fit in a single response, the response will include a continuationToken. Pass this token in your next request to get the next page of results.  If not provided, returns the first page of results. When there are no more results, the response will not include a continuationToken.  Note: When backed by S3, this maps directly to S3\&#39;s NextContinuationToken.
     */
    adminListTrashbinUserS3Files(userId: number, queryParams: adminListTrashbinUserS3FilesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPortalFilesInFolderResponse>;
    /**
     * Permanently delete an organization from the trash bin. This is the final step in the deletion process and cannot be undone.  The trash bin process works as follows: 1. When an organization is initially deleted with `fullDelete=true`, its data is moved to the trash bin 2. The organization remains in the trash bin for 30 days 3. During this period:    - Data can be recovered if needed    - The deletion can be cancelled    - All files remain in their original structure 4. Using this endpoint will:    - Permanently delete all organization data    - Remove all files from S3/FSx storage    - This action is irreversible  Note: Only use this endpoint after the 30-day grace period or when permanent deletion is absolutely necessary.
     * @summary Permanently delete an organization
     * @param organizationId Organization ID
     */
    adminPermanentlyDeleteOrganization(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Permanently delete a project from the trash bin. This is the final step in the deletion process and cannot be undone.  The trash bin process works as follows: 1. When a project is initially deleted with `fullDelete=true`, its data is moved to the trash bin 2. The project remains in the trash bin for 30 days 3. During this period:    - Data can be recovered if needed    - The deletion can be cancelled    - All files remain in their original structure 4. Using this endpoint will:    - Permanently delete all project data    - Remove all files from S3/FSx storage    - This action is irreversible  Note: Only use this endpoint after the 30-day grace period or when permanent deletion is absolutely necessary.
     * @summary Permanently delete a project
     * @param projectId Project ID
     */
    adminPermanentlyDeleteProject(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Permanently delete a user from the trash bin. This is the final step in the deletion process and cannot be undone.  The trash bin process works as follows: 1. When a user is initially deleted with `fullDelete=true`, their data is moved to the trash bin 2. The user remains in the trash bin for 30 days 3. During this period:    - Data can be recovered if needed    - The deletion can be cancelled    - All files remain in their original structure 4. Using this endpoint will:    - Permanently delete all user data    - Remove all files from S3/FSx storage    - This action is irreversible  Note: Only use this endpoint after the 30-day grace period or when permanent deletion is absolutely necessary.
     * @summary Permanently delete a user
     * @param userId User ID
     */
    adminPermanentlyDeleteUser(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Admin-only API to cancel all active jobs for a project and revoke all project API keys, useful for projects with excessive usage or malicious activity.
     * @summary Trigger project kill switch
     * @param projectId Project ID
     * @param skipRevokeApiKeys Set to true to avoid revoking project API keys.
     */
    adminProjectKillSwitch(projectId: number, queryParams?: adminProjectKillSwitchQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminProjectKillSwitchResponse>;
    /**
     * Admin-only API to remove a user from an organization.
     * @summary Remove user from an organization
     * @param organizationId Organization ID
     * @param userId User ID
     */
    adminRemoveUserFromOrganization(organizationId: number, userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to remove a user from a project.
     * @summary Remove user from a project
     * @param projectId Project ID
     * @param userId User ID
     */
    adminRemoveUserFromProject(projectId: number, userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * DEPRECATED. Admin-only API to remove the current user from a project.
     * @summary Remove current user from a project
     * @param projectId Project ID
     */
    adminRemoveUserFromProjectDeprecated(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to restore a soft deleted organization. All organization projects sharing the same deletion date as that of the organization will also be restored. If this is a trial organization that was never upgraded to a paid plan then the organization will be restored to its original trial state.
     * @summary Restore an organization
     * @param organizationId Organization ID
     */
    adminRestoreOrganization(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to restore a soft-deleted project. A soft-deleted project has been marked as deleted in the database but data has not been moved to the trash bin yet. To restore projects from the trash bin, use adminRestoreTrashbinProject.
     * @summary Restore a soft-deleted project
     * @param projectId Project ID
     */
    adminRestoreProject(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Starts a job to restore a project that has been moved to the trash bin. This: 1. Restores all S3 data 2. Restores all FSx data 3. Restores access to the project 4. Unschedules permanent deletion
     * @summary Restore a project that has been moved to the trash bin and is scheduled for deletion
     * @param projectId Project ID
     */
    adminRestoreTrashbinProject(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Rotate the client secret for an existing OAuth client. This operation invalidates the previous secret and generates a new one, which must be used for future OAuth authentication flows. Requires admin:oauth:write permission.
     * @summary Rotate OAuth client secret
     * @param clientId Client ID
     */
    adminRotateOauthClientSecret(clientId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminRotateOauthClientSecretResponse>;
    /**
     * Admin-only API to update a studio config item.
     * @summary Update studio config
     * @param configKey Config Key
     * @param adminUpdateConfigRequest
     */
    adminSetStudioConfig(configKey: string, adminUpdateConfigRequest: AdminUpdateConfigRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to run or pause a data migration.
     * @summary Run or pause a data migration
     * @param migrationId Data migration ID
     * @param adminToggleDataMigrationRequest
     */
    adminToggleDataMigration(migrationId: string, adminToggleDataMigrationRequest: AdminToggleDataMigrationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update an existing OAuth client\'s configuration. This endpoint allows updating the client\'s properties such as name, description, redirect URIs, allowed grant types, and scopes. The client ID and secret cannot be modified. Requires admin:oauth:write permission.
     * @summary Update OAuth client
     * @param clientId Client ID
     * @param adminUpdateOauthClientRequest
     */
    adminUpdateOauthClient(clientId: number, adminUpdateOauthClientRequest: AdminUpdateOauthClientRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to update organization properties such as name and logo.
     * @summary Update organization
     * @param organizationId Organization ID
     * @param adminUpdateOrganizationRequest
     */
    adminUpdateOrganization(organizationId: number, adminUpdateOrganizationRequest: AdminUpdateOrganizationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to update a data export for an organization.
     * @summary Update organization data export
     * @param organizationId Organization ID
     * @param exportId Export ID
     * @param adminUpdateOrganizationDataExportRequest
     */
    adminUpdateOrganizationDataExport(organizationId: number, exportId: number, adminUpdateOrganizationDataExportRequest: AdminUpdateOrganizationDataExportRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to update project properties.
     * @summary Update project
     * @param projectId Project ID
     * @param updateProjectRequest
     */
    adminUpdateProject(projectId: number, updateProjectRequest: UpdateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to update an enterprise trial.
     * @summary Update enterprise trial
     * @param enterpriseTrialId Enterprise trial ID
     * @param adminUpdateTrialRequest
     */
    adminUpdateTrial(enterpriseTrialId: number, adminUpdateTrialRequest: AdminUpdateTrialRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to update user properties.
     * @summary Update user
     * @param userId User ID
     * @param adminUpdateUserRequest
     */
    adminUpdateUser(userId: number, adminUpdateUserRequest: AdminUpdateUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to update the list of permissions for a user.
     * @summary Update user permissions
     * @param userId User ID
     * @param adminUpdateUserPermissionsRequest
     */
    adminUpdateUserPermissions(userId: number, adminUpdateUserPermissionsRequest: AdminUpdateUserPermissionsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Admin-only API to upgrade a specific enterprise trial to a full enterprise account.
     * @summary Upgrade enterprise trial to a full enterprise account
     * @param enterpriseTrialId Enterprise trial ID
     */
    adminUpgradeTrial(enterpriseTrialId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Upload a logo for an existing OAuth client. This endpoint allows updating the client\'s logo.
     * @summary Upload OAuth client logo
     * @param clientId Client ID
     * @param image
     */
    adminUploadOauthClientLogo(clientId: number, params: adminUploadOauthClientLogoFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum AuthApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type discourseQueryParams = {
    sso: string;
    sig: string;
};
export type AuthApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class AuthApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: AuthApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: AuthApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: AuthApiOpts);
    get opts(): AuthApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: AuthApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Log in a user to the forum. This function is only available through a JWT token.
     * @summary Discourse
     * @param sso Single sign-on token
     * @param sig Verification signature
     */
    discourse(queryParams: discourseQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<any>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum CDNApiApiKeys {
}
type getUserCDNResourceQueryParams = {
    path: string;
};
export type CDNApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class CDNApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: CDNApiOpts;
    protected authentications: {
        default: Authentication;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: CDNApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: CDNApiOpts);
    get opts(): CDNApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: CDNApiApiKeys, value: string | undefined): void;
    /**
     * Proxy function to retrieve data from the user CDN. This function is only used during development.
     * @summary User CDN resource
     * @param path CDN Path
     */
    getUserCDNResource(queryParams: getUserCDNResourceQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<string>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum CanaryApiApiKeys {
    JWTAuthentication = 0
}
type shouldGoOnCanaryQueryParams = {
    requestedUrl: string;
};
export type CanaryApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class CanaryApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: CanaryApiOpts;
    protected authentications: {
        default: Authentication;
        JWTAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: CanaryApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: CanaryApiOpts);
    get opts(): CanaryApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: CanaryApiApiKeys, value: string | undefined): void;
    /**
     * Get the decision to whether the requested URL goes on canary deployment or not
     * @summary Get the decision to whether the requested URL goes on canary deployment or not
     * @param requestedUrl Full url (host included) that is requested
     */
    shouldGoOnCanary(queryParams: shouldGoOnCanaryQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CanaryResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum ClassifyApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type classifyImageFormParams = {
    image: RequestFile;
};
type classifyImageQueryParams = {
    impulseId?: number;
};
type classifySampleQueryParams = {
    includeDebugInfo?: boolean;
    impulseId?: number;
};
type classifySampleByLearnBlockV2QueryParams = {
    variant?: KerasModelVariantEnum;
    truncateStructuredLabels?: boolean;
};
type classifySampleForVariantsQueryParams = {
    includeDebugInfo?: boolean;
    variants: string;
    impulseId?: number;
    truncateStructuredLabels?: boolean;
};
type classifySampleV2QueryParams = {
    includeDebugInfo?: boolean;
    variant?: KerasModelVariantEnum;
    impulseId?: number;
    truncateStructuredLabels?: boolean;
};
type getClassifyJobResultQueryParams = {
    featureExplorerOnly?: boolean;
    variant?: KerasModelVariantEnum;
    impulseId?: number;
    truncateStructuredLabels?: boolean;
};
type getClassifyJobResultPageQueryParams = {
    limit?: number;
    offset?: number;
    variant?: KerasModelVariantEnum;
    impulseId?: number;
    truncateStructuredLabels?: boolean;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type getClassifyMetricsAllVariantsQueryParams = {
    impulseId?: number;
};
type getSampleWindowFromCacheQueryParams = {
    datastreamIndex?: number;
    impulseId?: number;
    truncateStructuredLabels?: boolean;
};
export type ClassifyApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class ClassifyApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: ClassifyApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: ClassifyApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: ClassifyApiOpts);
    get opts(): ClassifyApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: ClassifyApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Test out a trained impulse (using a posted image).
     * @summary Classify an image
     * @param projectId Project ID
     * @param image
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    classifyImage(projectId: number, params: classifyImageFormParams, queryParams?: classifyImageQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<TestPretrainedModelResponse>;
    /**
     * This API is deprecated, use classifySampleV2 instead (`/v1/api/{projectId}/classify/v2/{sampleId}`). Classify a complete file against the current impulse. This will move the sliding window (dependent on the sliding window length and the sliding window increase parameters in the impulse) over the complete file, and classify for every window that is extracted.
     * @summary Classify sample (deprecated)
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param includeDebugInfo Whether to return the debug information from FOMO classification.
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    classifySample(projectId: number, sampleId: number, queryParams?: classifySampleQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ClassifySampleResponse>;
    /**
     * This API is deprecated, use classifySampleByLearnBlockV2 (`/v1/api/{projectId}/classify/anomaly-gmm/v2/{blockId}/{sampleId}`) instead. Classify a complete file against the specified learn block. This will move the sliding window (dependent on the sliding window length and the sliding window increase parameters in the impulse) over the complete file, and classify for every window that is extracted.
     * @summary Classify sample by learn block
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param blockId Block ID
     */
    classifySampleByLearnBlock(projectId: number, sampleId: number, blockId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ClassifySampleResponse>;
    /**
     * Classify a complete file against the specified learn block. This will move the sliding window (dependent on the sliding window length and the sliding window increase parameters in the impulse) over the complete file, and classify for every window that is extracted. Depending on the size of your file, whether your sample is resampled, and whether the result is cached you\'ll get either the result or a job back. If you receive a job, then wait for the completion of the job, and then call this function again to receive the results. The unoptimized (float32) model is used by default, and classification with an optimized (int8) model can be slower.
     * @summary Classify sample by learn block
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param blockId Block ID
     * @param variant Keras model variant
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    classifySampleByLearnBlockV2(projectId: number, sampleId: number, blockId: number, queryParams?: classifySampleByLearnBlockV2QueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ClassifySampleResponse | StartJobResponse>;
    /**
     * Classify a complete file against the current impulse, for all given variants. Depending on the size of your file and whether the sample is resampled, you may get a job ID in the response.
     * @summary Classify sample for the given set of variants
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param variants List of keras model variants, given as a JSON string
     * @param includeDebugInfo Whether to return the debug information from FOMO classification.
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    classifySampleForVariants(projectId: number, sampleId: number, queryParams: classifySampleForVariantsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ClassifySampleResponseMultipleVariants | StartJobResponse>;
    /**
     * Classify a complete file against the current impulse. This will move the sliding window (dependent on the sliding window length and the sliding window increase parameters in the impulse) over the complete file, and classify for every window that is extracted. Depending on the size of your file, whether your sample is resampled, and whether the result is cached you\'ll get either the result or a job back. If you receive a job, then wait for the completion of the job, and then call this function again to receive the results. The unoptimized (float32) model is used by default, and classification with an optimized (int8) model can be slower.
     * @summary Classify sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param includeDebugInfo Whether to return the debug information from FOMO classification.
     * @param variant Keras model variant
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    classifySampleV2(projectId: number, sampleId: number, queryParams?: classifySampleV2QueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ClassifySampleResponse | StartJobResponse>;
    /**
     * Get classify job result, containing the result for the complete testing dataset.
     * @summary Classify job result
     * @param projectId Project ID
     * @param featureExplorerOnly Whether to get only the classification results relevant to the feature explorer.
     * @param variant Keras model variant
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    getClassifyJobResult(projectId: number, queryParams?: getClassifyJobResultQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ClassifyJobResponse>;
    /**
     * Get classify job result, containing the predictions for a given page.
     * @summary Single page of a classify job result
     * @param projectId Project ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param variant Keras model variant
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    getClassifyJobResultPage(projectId: number, queryParams?: getClassifyJobResultPageQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ClassifyJobResponsePage>;
    /**
     * Get metrics, calculated during a classify all job, for all available model variants. This is experimental and may change in the future.
     * @summary Get metrics for all available model variants
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getClassifyMetricsAllVariants(projectId: number, queryParams?: getClassifyMetricsAllVariantsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<MetricsAllVariantsResponse>;
    /**
     * Get raw sample features for a particular window. This is only available after a live classification job has completed and raw features have been cached.
     * @summary Get a window of raw sample features from cache, after a live classification job has completed.
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param windowIndex Sample window index
     * @param datastreamIndex Index of the datastream, if omitted this will resolve to 0.
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    getSampleWindowFromCache(projectId: number, sampleId: number, windowIndex: number, queryParams?: getSampleWindowFromCacheQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSampleDspResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum DSPApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type downloadDspDataQueryParams = {
    raw?: boolean;
};
type dspSampleTrainedFeaturesQueryParams = {
    featureAx1: number;
    featureAx2: number;
    featureAx3: number;
};
type getDspMetadataQueryParams = {
    excludeIncludedSamples?: boolean;
    category?: 'training' | 'testing' | 'validation' | 'all';
};
type getDspRawSampleQueryParams = {
    limitPayloadValues?: number;
    truncateStructuredLabels?: boolean;
    useCachedUpsampledData?: boolean;
};
type getDspSampleSliceQueryParams = {
    sliceStart: number;
    sliceEnd?: number;
    truncateStructuredLabels?: boolean;
};
type runDspSampleSliceQueryParams = {
    sliceStart: number;
    sliceEnd?: number;
};
type runDspSampleSliceReadOnlyQueryParams = {
    sliceStart: number;
    sliceEnd?: number;
};
export type DSPApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class DSPApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: DSPApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: DSPApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: DSPApiOpts);
    get opts(): DSPApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: DSPApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Clear generated features for a DSP block (used in tests).
     * @summary Clear DSP block
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    clearDspBlock(projectId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Download an artifact from a DSP block for debugging. This is an internal API.
     * @summary Download a DSP artifact
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param key DSP artifact file key
     */
    downloadDspArtifact(projectId: number, dspId: number, key: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download output from a DSP block over all data in the selected category, already sliced in windows. In Numpy binary format.
     * @summary Download DSP data
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param category Which of the three acquisition categories to download data from
     * @param raw Whether to download raw data or processed data. Processed data is the default.
     */
    downloadDspData(projectId: number, dspId: number, category: RawDataCategory, queryParams?: downloadDspDataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download labels for a DSP block over all data in the selected category, already sliced in windows.
     * @summary Download DSP labels
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param category Which of the three acquisition categories to download data from
     */
    downloadDspLabels(projectId: number, dspId: number, category: RawDataCategory, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Runs the DSP block against a sample. This will move the sliding window (dependent on the sliding window length and the sliding window increase parameters in the impulse) over the complete file, and run the DSP function for every window that is extracted.
     * @summary Features for sample
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     */
    dspGetFeaturesForSample(projectId: number, dspId: number, sampleId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspSampleFeaturesResponse>;
    /**
     * Get a sample of trained features, this extracts a number of samples and their labels. Used to visualize the current training set.
     * @summary Sample of trained features
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param featureAx1 Feature axis 1
     * @param featureAx2 Feature axis 2
     * @param featureAx3 Feature axis 3
     * @param category Which of the three acquisition categories to download data from
     */
    dspSampleTrainedFeatures(projectId: number, dspId: number, category: RawDataCategory, queryParams: dspSampleTrainedFeaturesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspTrainedFeaturesResponse>;
    /**
     * Get a set of parameters, found as a result of running the DSP autotuner.
     * @summary Get results from DSP autotuner
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    getAutotunerResults(projectId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspAutotunerResults>;
    /**
     * Retrieve the configuration parameters for the DSP block. Use the impulse functions to retrieve all DSP blocks.
     * @summary Get config
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    getDspConfig(projectId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DSPConfigResponse>;
    /**
     * Retrieve the feature importance for a DSP block (only available for blocks where dimensionalityReduction is not enabled)
     * @summary Feature importance
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    getDspFeatureImportance(projectId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspFeatureImportanceResponse>;
    /**
     * Retrieve the names of the features the DSP block generates
     * @summary Feature labels
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    getDspFeatureLabels(projectId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspFeatureLabelsResponse>;
    /**
     * Retrieve the metadata from a generated DSP block.
     * @summary Get metadata
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param excludeIncludedSamples Whether to exclude \&#39;includedSamples\&#39; in the response (as these can slow down requests significantly).
     * @param category Which of the acquisition categories to get metadata from
     */
    getDspMetadata(projectId: number, dspId: number, queryParams?: getDspMetadataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DSPMetadataResponse>;
    /**
     * Get raw sample data, but with only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out. If you pass dspId = 0 this will return a raw graph without any processing.
     * @summary Get raw sample
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     * @param limitPayloadValues Limit the number of payload values in the response
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     * @param useCachedUpsampledData If true, upsampled data will be fetched from cache, returning the original sample data when limitPayloadValues &gt; sample length.
     */
    getDspRawSample(projectId: number, dspId: number, sampleId: number, queryParams?: getDspRawSampleQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSampleDspResponse>;
    /**
     * Get slice of raw sample data, but with only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out.
     * @summary Get raw sample (slice)
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     * @param sliceStart Begin index of the slice
     * @param sliceEnd End index of the slice. If not given, the sample will be sliced to the same length as the impulse input block window length.
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    getDspSampleSlice(projectId: number, dspId: number, sampleId: number, queryParams: getDspSampleSliceQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSampleDspResponse>;
    /**
     * Get estimated performance (latency and RAM) for the DSP block, for all supported project latency devices.
     * @summary Get DSP block performance for all latency devices
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    getPerformanceAllVariants(projectId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspPerformanceAllVariantsResponse>;
    /**
     * Takes in a features array and runs it through the DSP block. This data should have the same frequency as set in the input block in your impulse.
     * @summary Get processed sample (from features array)
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param dspRunRequestWithFeatures
     */
    runDspOnFeaturesArray(projectId: number, dspId: number, dspRunRequestWithFeatures: DspRunRequestWithFeatures, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspRunResponse>;
    /**
     * Get slice of sample data, and run it through the DSP block. This only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out.
     * @summary Get processed sample (slice)
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     * @param sliceStart Begin index of the slice
     * @param dspRunRequestWithoutFeatures
     * @param sliceEnd End index of the slice. If not given, the sample will be sliced to the same length as the impulse input block window length.
     */
    runDspSampleSlice(projectId: number, dspId: number, sampleId: number, dspRunRequestWithoutFeatures: DspRunRequestWithoutFeatures, queryParams: runDspSampleSliceQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspRunResponseWithSample>;
    /**
     * Get slice of sample data, and run it through the DSP block. This only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out.
     * @summary Get processed sample (slice)
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     * @param sliceStart Begin index of the slice
     * @param sliceEnd End index of the slice. If not given, the sample will be sliced to the same length as the impulse input block window length.
     */
    runDspSampleSliceReadOnly(projectId: number, dspId: number, sampleId: number, queryParams: runDspSampleSliceReadOnlyQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DspRunResponseWithSample>;
    /**
     * Set configuration parameters for the DSP block. Only values set in the body will be overwritten.
     * @summary Set config
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param dSPConfigRequest
     */
    setDspConfig(projectId: number, dspId: number, dSPConfigRequest: DSPConfigRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Returns performance characteristics for a custom DSP block (needs `hasTfliteImplementation`). Updates are streamed over the websocket API (or can be retrieved through the /stdout endpoint). Use getProfileTfliteJobResult to get the results when the job is completed.
     * @summary Profile custom DSP block
     * @param projectId Project ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param dspRunRequestWithoutFeaturesReadOnly
     */
    startProfileCustomDspBlock(projectId: number, dspId: number, dspRunRequestWithoutFeaturesReadOnly: DspRunRequestWithoutFeaturesReadOnly, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum DatasetVersionsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type getDatasetVersionRawDataChangesQueryParams = {
    category: RawDataFilterCategory;
    limit?: number;
    offset?: number;
    excludeSensors?: boolean;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    truncateStructuredLabels?: boolean;
    sortBy?: 'id-desc' | 'random';
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
    changeActions?: string;
};
type listDatasetVersionsQueryParams = {
    limit?: number;
    offset?: number;
    search?: string;
    type?: string;
};
export type DatasetVersionsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class DatasetVersionsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: DatasetVersionsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: DatasetVersionsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: DatasetVersionsApiOpts);
    get opts(): DatasetVersionsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: DatasetVersionsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Get details of a specific dataset version for this project.
     * @summary Get dataset version
     * @param projectId Project ID
     * @param datasetVersionId Dataset version ID
     */
    getDatasetVersion(projectId: number, datasetVersionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDatasetVersionResponse>;
    /**
     * Get raw data samples from a specific dataset snapshot for this project, including per-sample change metadata when available.
     * @summary Get dataset version raw-data samples with changes
     * @param projectId Project ID
     * @param datasetVersionId Dataset version ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param excludeSensors Whether to exclude sensors in the response (as these can slow down requests when you have large pages).
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     * @param sortBy If not specified, \&quot;id-desc\&quot; is used.
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     * @param changeActions Only include changes with an action within the given list of actions, given as a JSON string
     */
    getDatasetVersionRawDataChanges(projectId: number, datasetVersionId: number, queryParams: getDatasetVersionRawDataChangesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDatasetVersionRawDataChangesResponse>;
    /**
     * Get a list of all dataset versions for this project.
     * @summary List dataset versions
     * @param projectId Project ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     * @param type Only include dataset versions with a type within the given list of types, given as a JSON string
     */
    listDatasetVersions(projectId: number, queryParams?: listDatasetVersionsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListDatasetVersionsResponse>;
    /**
     * Restore the project\'s active dataset to a specific version.
     * @summary Restore dataset version
     * @param projectId Project ID
     * @param datasetVersionId Dataset version ID
     */
    restoreDatasetVersion(projectId: number, datasetVersionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Update a dataset version
     * @summary Update dataset version
     * @param projectId Project ID
     * @param datasetVersionId Dataset version ID
     * @param updateDatasetVersionRequest
     */
    updateDatasetVersion(projectId: number, datasetVersionId: number, updateDatasetVersionRequest: UpdateDatasetVersionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum DeploymentApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type buildPublicDeploymentJobQueryParams = {
    impulseId?: number;
};
type downloadBuildQueryParams = {
    type: string;
    modelType?: KerasModelTypeEnum;
    engine?: DeploymentTargetEngine;
    impulseId?: number;
};
export type findSyntiantPosteriorFormParams = {
    targetWords: Array<string>;
    referenceSet: string;
    wavFile?: RequestFile;
    metaCsvFile?: RequestFile;
    deploymentTarget?: string;
};
type findSyntiantPosteriorQueryParams = {
    impulseId?: number;
};
type getDeploymentQueryParams = {
    type: string;
    modelType?: KerasModelTypeEnum;
    engine?: DeploymentTargetEngine;
    impulseId?: number;
};
type getEvaluateJobResultQueryParams = {
    impulseId?: number;
};
type getEvaluateJobResultCacheQueryParams = {
    impulseId?: number;
};
type getLastDeploymentBuildQueryParams = {
    impulseId?: number;
};
type getModelMonitoringDeploymentsQueryParams = {
    startTimestamp?: number;
};
type getSyntiantPosteriorQueryParams = {
    impulseId?: number;
};
type listDeploymentHistoryQueryParams = {
    impulseId?: number;
    deploymentFormat?: string;
    limit?: number;
    offset?: number;
};
type listDeploymentTargetsForProjectQueryParams = {
    impulseId?: number;
};
type listDeploymentTargetsForProjectDataSourcesQueryParams = {
    impulseId?: number;
};
type setSyntiantPosteriorQueryParams = {
    impulseId?: number;
};
export type DeploymentApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class DeploymentApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: DeploymentApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: DeploymentApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: DeploymentApiOpts);
    get opts(): DeploymentApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: DeploymentApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Create a deployment job for a _public_ project. You can only create deployments for \"wasm\" and \"wasm-browser-simd\" deployment types. If a deployment already exists, jobId is null. If a deployment did not exist, or a job is created, jobId is set to an integer, and you can get updates via `getPublicDeploymentStatus`. When this step is complete use `downloadHistoricDeployment` to download the artefacts using deploymentVersion. Updates are _NOT_ streamed over the websocket API (for security reasons); but can be obtained via `getPublicDeploymentStatus`.
     * @summary Build deployment (public)
     * @param projectId Project ID
     * @param buildPublicDeploymentJobRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    buildPublicDeploymentJob(projectId: number, buildPublicDeploymentJobRequest: BuildPublicDeploymentJobRequest, queryParams?: buildPublicDeploymentJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<BuildPublicDeploymentJobResponse>;
    /**
     * DEPRECATED, use downloadHistoricDeployment instead. Download the build artefacts for a project.
     * @summary Download
     * @param projectId Project ID
     * @param type The name of the built target. You can find this by listing all deployment targets through &#x60;listDeploymentTargetsForProject&#x60; (via &#x60;GET /v1/api/{projectId}/deployment/targets&#x60;) and see the &#x60;format&#x60; type.
     * @param modelType Optional model type of the build (if not, it uses the settings in the Keras block)
     * @param engine Optional engine for the build (if not, it uses the default engine for the deployment target)
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    downloadBuild(projectId: number, queryParams: downloadBuildQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download a previously built deployment (use listDeploymentHistory to see all deployments).
     * @summary Download historic deployment
     * @param projectId Project ID
     * @param deploymentVersion Deployment version ID
     */
    downloadHistoricDeployment(projectId: number, deploymentVersion: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Automatically find the current posterior parameters for the Syntiant deployment target
     * @summary Find Syntiant posterior parameters
     * @param projectId Project ID
     * @param targetWords
     * @param referenceSet
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param wavFile
     * @param metaCsvFile
     * @param deploymentTarget
     */
    findSyntiantPosterior(projectId: number, params: findSyntiantPosteriorFormParams, queryParams?: findSyntiantPosteriorQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Gives information on whether a deployment was already built for a type
     * @summary Get deployment info
     * @param projectId Project ID
     * @param type The name of the built target. You can find this by listing all deployment targets through &#x60;listDeploymentTargetsForProject&#x60; (via &#x60;GET /v1/api/{projectId}/deployment/targets&#x60;) and see the &#x60;format&#x60; type.
     * @param modelType Optional model type of the build (if not, it uses the settings in the Keras block)
     * @param engine Optional engine for the build (if not, it uses the default engine for the deployment target)
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getDeployment(projectId: number, queryParams: getDeploymentQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDeploymentResponse>;
    /**
     * Get evaluate job result, containing detailed performance statistics for every possible variant of the impulse.
     * @summary Evaluate job result
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getEvaluateJobResult(projectId: number, queryParams?: getEvaluateJobResultQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EvaluateJobResponse>;
    /**
     * Get evaluate job result, containing detailed performance statistics for every possible variant of the impulse. This only checks cache, and throws an error if there is no data in cache.
     * @summary Check evaluate job result (cache)
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getEvaluateJobResultCache(projectId: number, queryParams?: getEvaluateJobResultCacheQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EvaluateJobResponse>;
    /**
     * Get info about a previously built deployment.
     * @summary Get historic deployment
     * @param projectId Project ID
     * @param deploymentVersion Deployment version ID
     */
    getHistoricDeployment(projectId: number, deploymentVersion: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDeploymentHistoryResponse>;
    /**
     * Get information on the result of the last successful deployment job, including info on the build e.g. whether it is still valid.
     * @summary Get information on the last deployment build
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getLastDeploymentBuild(projectId: number, queryParams?: getLastDeploymentBuildQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetLastDeploymentBuildResponse>;
    /**
     * Get a list of deployments that have previously ran (or are currently running) on-device. These deployments can be used by model monitoring. This is experimental and may change in the future.
     * @summary Get information on all deployments available for model monitoring
     * @param projectId Project ID
     * @param startTimestamp
     */
    getModelMonitoringDeployments(projectId: number, queryParams?: getModelMonitoringDeploymentsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetModelMonitoringDeploymentsResponse>;
    /**
     * Get the status of a deployment job created through buildPublicDeploymentJob.
     * @summary Get status of build job (public)
     * @param projectId Project ID
     * @param jobId Job ID
     */
    getPublicDeploymentStatus(projectId: number, jobId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPublicDeploymentStatusResponse>;
    /**
     * Get the current posterior parameters for the Syntiant deployment target
     * @summary Get Syntiant posterior parameters
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getSyntiantPosterior(projectId: number, queryParams?: getSyntiantPosteriorQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSyntiantPosteriorResponse>;
    /**
     * List all deployment targets
     * @summary Deployment targets
     */
    listAllDeploymentTargets(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DeploymentTargetsResponse>;
    /**
     * Lists all successfully built deployments.
     * @summary List deployment history
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset, data for all impulses is returned.
     * @param deploymentFormat
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    listDeploymentHistory(projectId: number, queryParams?: listDeploymentHistoryQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListDeploymentHistoryResponse>;
    /**
     * List deployment targets for a project
     * @summary Deployment targets
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    listDeploymentTargetsForProject(projectId: number, queryParams?: listDeploymentTargetsForProjectQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProjectDeploymentTargetsResponse>;
    /**
     * List deployment targets for a project from data sources page  (it shows some things like all Linux deploys, and hides \'fake\' deploy targets like mobile phone / computer)
     * @summary Deployment targets (data sources)
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    listDeploymentTargetsForProjectDataSources(projectId: number, queryParams?: listDeploymentTargetsForProjectDataSourcesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DeploymentTargetsResponse>;
    /**
     * Set the current posterior parameters for the Syntiant deployment target
     * @summary Set Syntiant posterior parameters
     * @param projectId Project ID
     * @param setSyntiantPosteriorRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    setSyntiantPosterior(projectId: number, setSyntiantPosteriorRequest: SetSyntiantPosteriorRequest, queryParams?: setSyntiantPosteriorQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum DevicesApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type downloadInferenceHistoryExportQueryParams = {
    deploymentId: number;
    startTimestamp: number;
    endTimestamp: number;
    devices?: string;
    format: 'row-per-summary' | 'row-per-value';
};
type getInferenceHistoryQueryParams = {
    deploymentId?: number;
    startTimestamp: number;
    endTimestamp?: number;
    devices?: string;
};
type getInferenceMetricsQueryParams = {
    deploymentId?: number;
    startTimestamp: number;
    endTimestamp?: number;
};
type storeInferenceHistoryQueryParams = {
    deploymentId: number;
};
export type DevicesApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class DevicesApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: DevicesApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: DevicesApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: DevicesApiOpts);
    get opts(): DevicesApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: DevicesApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Create a new device. If you set `ifNotExists` to `false` and the device already exists, the `deviceType` will be overwritten.
     * @summary Create device
     * @param projectId Project ID
     * @param createDeviceRequest
     */
    createDevice(projectId: number, createDeviceRequest: CreateDeviceRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete a device. When this device sends a new message to ingestion or connects to remote management the device will be recreated.
     * @summary Delete device
     * @param projectId Project ID
     * @param deviceId Device ID
     */
    deleteDevice(projectId: number, deviceId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Downloads exported on-device inference history data. This is experimental and may change in the future.
     * @summary Download exported on-device inference history
     * @param projectId Project ID
     * @param deploymentId
     * @param startTimestamp
     * @param endTimestamp
     * @param format Data export format
     * @param devices Optional list of devices to filter by, given as a JSON string
     */
    downloadInferenceHistoryExport(projectId: number, queryParams: downloadInferenceHistoryExportQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Retrieves a single device
     * @summary Get device
     * @param projectId Project ID
     * @param deviceId Device ID
     */
    getDevice(projectId: number, deviceId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDeviceResponse>;
    /**
     * Retrieve impulse records from the device.
     * @summary Get impulse records
     * @param projectId Project ID
     * @param deviceId Device ID
     * @param getImpulseRecordsRequest
     */
    getImpulseRecords(projectId: number, deviceId: string, getImpulseRecordsRequest: GetImpulseRecordsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get summary metrics for historical on-device inferences, aggregated by device and by time. This is experimental and may change in the future.
     * @summary Get summary metrics for past on-device inferences
     * @param projectId Project ID
     * @param startTimestamp
     * @param deploymentId
     * @param endTimestamp
     * @param devices Optional list of devices to filter by, given as a JSON string
     */
    getInferenceHistory(projectId: number, queryParams: getInferenceHistoryQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetInferenceHistoryResponse>;
    /**
     * Get metrics from past on-device inferences, filtered and aggregated by custom criteria. This is experimental and may change in the future.
     * @summary Get metrics from past on-device inferences, filtered and aggregated by custom criteria. This is experimental and may change in the future.
     * @param projectId Project ID
     * @param startTimestamp
     * @param getInferenceMetricsRequest
     * @param deploymentId
     * @param endTimestamp
     */
    getInferenceMetrics(projectId: number, getInferenceMetricsRequest: GetInferenceMetricsRequest, queryParams: getInferenceMetricsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetInferenceMetricsResponse>;
    /**
     * If you have opened a debug stream, ping this interface every 10 seconds to let us know to keep the debug stream open.
     * @summary Keep debug stream alive
     * @param projectId Project ID
     * @param deviceId Device ID
     * @param keepDeviceDebugStreamAliveRequest
     */
    keepDeviceDebugStreamAlive(projectId: number, deviceId: string, keepDeviceDebugStreamAliveRequest: KeepDeviceDebugStreamAliveRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * List all devices for this project. Devices get included here if they connect to the remote management API or if they have sent data to the ingestion API and had the `device_id` field set.
     * @summary Lists devices
     * @param projectId Project ID
     */
    listDevices(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListDevicesResponse>;
    /**
     * Set the current name for a device.
     * @summary Rename device
     * @param projectId Project ID
     * @param deviceId Device ID
     * @param renameDeviceRequest
     */
    renameDevice(projectId: number, deviceId: string, renameDeviceRequest: RenameDeviceRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Trigger a model update request, this only works for devices connected to remote management server in inference mode.
     * @summary Trigger model update request
     * @param projectId Project ID
     * @param deviceId Device ID
     */
    requestDeviceModelUpdate(projectId: number, deviceId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Start an inference debug stream for this device with inference results (and images if a camera is attached). Updates are streamed through the websocket API. A keep-alive token is returned, you\'ll need to ping the API (with keepDeviceDebugStreamAlive) every 10 seconds (so we know when the client is disconnected).
     * @summary Start inference debug stream
     * @param projectId Project ID
     * @param deviceId Device ID
     */
    startDeviceInferenceDebugStream(projectId: number, deviceId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartDeviceDebugStreamResponse>;
    /**
     * Start a snapshot debug stream for this device with a current camera view. Updates are streamed through the websocket API. A keep-alive token is returned, you\'ll need to ping the API (with keepDeviceDebugStreamAlive) every 10 seconds (so we know when the client is disconnected).
     * @summary Start snapshot debug stream
     * @param projectId Project ID
     * @param deviceId Device ID
     * @param startDeviceSnapshotDebugStreamRequest
     */
    startDeviceSnapshotDebugStream(projectId: number, deviceId: string, startDeviceSnapshotDebugStreamRequest: StartDeviceSnapshotDebugStreamRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartDeviceDebugStreamResponse>;
    /**
     * Start sampling on a device. This function returns immediately. Updates are streamed through the websocket API.
     * @summary Start sampling
     * @param projectId Project ID
     * @param deviceId Device ID
     * @param startSamplingRequest
     */
    startSampling(projectId: number, deviceId: string, startSamplingRequest: StartSamplingRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartSamplingResponse>;
    /**
     * If you have opened a debug stream, close it.
     * @summary Stop debug stream
     * @param projectId Project ID
     * @param deviceId Device ID
     * @param stopDeviceDebugStreamRequest
     */
    stopDeviceDebugStream(projectId: number, deviceId: string, stopDeviceDebugStreamRequest: StopDeviceDebugStreamRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Store historical on-device inference data
     * @summary Store on-device inference data
     * @param projectId Project ID
     * @param deploymentId
     * @param deviceId Device ID
     * @param storeInferenceHistoryRequest
     */
    storeInferenceHistory(projectId: number, deviceId: string, storeInferenceHistoryRequest: StoreInferenceHistoryRequest, queryParams: storeInferenceHistoryQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum EmailVerificationApiApiKeys {
}
export type EmailVerificationApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class EmailVerificationApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: EmailVerificationApiOpts;
    protected authentications: {
        default: Authentication;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: EmailVerificationApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: EmailVerificationApiOpts);
    get opts(): EmailVerificationApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: EmailVerificationApiApiKeys, value: string | undefined): void;
    /**
     * Get the status of an email verification.
     * @summary Get email verification status
     * @param emailId Unique identifier for an email verification request
     */
    getEmailVerificationStatus(emailId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetEmailVerificationStatusResponse>;
    /**
     * Request an email activation code to be sent to the specified email address.
     * @summary Request email verification
     * @param email Email address
     * @param requestEmailVerificationRequest
     */
    requestEmailVerification(email: string, requestEmailVerificationRequest: RequestEmailVerificationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Validate whether an email is valid for sign up. Using an email that fails this check can result in the associated account missing communications and features that are distributed through email.
     * @summary Validate email for account sign-up
     * @param emailValidationRequest
     */
    validateEmail(emailValidationRequest: EmailValidationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ValidateEmailResponse>;
    /**
     * Verify an email address using the specified verification code.
     * @summary Verify email
     * @param activateUserOrVerifyEmailRequest
     */
    verifyEmail(activateUserOrVerifyEmailRequest: ActivateUserOrVerifyEmailRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VerifyEmailResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum ExportApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type ExportApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class ExportApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: ExportApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: ExportApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: ExportApiOpts);
    get opts(): ExportApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: ExportApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Download the data export. This\'ll redirect you to a signed S3 URL.
     * @summary Download export
     * @param projectId Project ID
     */
    downloadExport(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<any>;
    /**
     * Get the URL to the exported artefacts for an export job of a project.
     * @summary Get URL of export
     * @param projectId Project ID
     */
    getExportUrl(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ExportGetUrlResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum FeatureFlagsApiApiKeys {
}
export type FeatureFlagsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class FeatureFlagsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: FeatureFlagsApiOpts;
    protected authentications: {
        default: Authentication;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: FeatureFlagsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: FeatureFlagsApiOpts);
    get opts(): FeatureFlagsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: FeatureFlagsApiApiKeys, value: string | undefined): void;
    /**
     * Get the current global feature flags and whether they are enabled
     * @summary Get the current global feature flags and whether they are enabled
     */
    getFeatureFlags(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetFeatureFlagsResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum HealthApiApiKeys {
}
type apiHealthQueryParams = {
    requester?: string;
};
type healthQueryParams = {
    requester?: string;
};
export type HealthApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class HealthApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: HealthApiOpts;
    protected authentications: {
        default: Authentication;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: HealthApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: HealthApiOpts);
    get opts(): HealthApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: HealthApiApiKeys, value: string | undefined): void;
    /**
     * Get studio api containers health.
     * @summary Get studio api containers health
     * @param requester Health check requester
     */
    apiHealth(queryParams?: apiHealthQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get studio web containers health.
     * @summary Get studio web containers health
     * @param requester Health check requester
     */
    health(queryParams?: healthQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum ImpulseApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type createImpulseQueryParams = {
    impulseId?: number;
};
type deleteImpulseQueryParams = {
    impulseId?: number;
};
type downloadDetailedImpulsesQueryParams = {
    format?: 'json' | 'csv';
};
type getImpulseQueryParams = {
    impulseId?: number;
};
type getImpulseAllQueryParams = {
    impulseId?: number;
};
export type setLegacyImpulseStateInternalFormParams = {
    zip: RequestFile;
    impulse: RequestFile;
    config: RequestFile;
};
type updateImpulseQueryParams = {
    impulseId?: number;
};
export type ImpulseApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class ImpulseApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: ImpulseApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: ImpulseApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: ImpulseApiOpts);
    get opts(): ImpulseApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: ImpulseApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Clones the complete impulse (incl. config and data) of an existing impulse.
     * @summary Clone impulse (complete)
     * @param projectId Project ID
     * @param impulseId Impulse ID
     * @param cloneImpulseRequest
     */
    cloneImpulseComplete(projectId: number, impulseId: number, cloneImpulseRequest: CloneImpulseRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Clones the complete structure (incl. config) of an impulse. Does not copy data.
     * @summary Clone impulse (structure)
     * @param projectId Project ID
     * @param impulseId Impulse ID
     * @param cloneImpulseRequest
     */
    cloneImpulseStructure(projectId: number, impulseId: number, cloneImpulseRequest: CloneImpulseRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateImpulseResponse>;
    /**
     * Sets the impulse for this project.  If you specify `impulseId` then that impulse is created/updated, otherwise the default impulse is created/updated.
     * @summary Create impulse
     * @param projectId Project ID
     * @param createImpulseRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    createImpulse(projectId: number, createImpulseRequest: CreateImpulseRequest, queryParams?: createImpulseQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateImpulseResponse>;
    /**
     * Create a new empty impulse, and return the ID.
     * @summary Create new empty impulse
     * @param projectId Project ID
     * @param createNewEmptyImpulseRequest
     */
    createNewEmptyImpulse(projectId: number, createNewEmptyImpulseRequest?: CreateNewEmptyImpulseRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateNewEmptyImpulseResponse>;
    /**
     * Clears the impulse and all associated blocks for this project.  If you specify `impulseId` then that impulse is cleared, otherwise the default impulse is cleared.
     * @summary Delete impulse
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    deleteImpulse(projectId: number, queryParams?: deleteImpulseQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Download all impulse for a project, including accuracy and performance metrics, as JSON or CSV.
     * @summary Download all impulses (incl. metrics), as JSON or CSV.
     * @param projectId Project ID
     * @param format Format of the detailed impulses response, either \&#39;json\&#39; or \&#39;csv\&#39;. If not set, defaults to \&#39;json\&#39;.
     */
    downloadDetailedImpulses(projectId: number, queryParams?: downloadDetailedImpulsesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Retrieve all impulse for a project, including accuracy and performance metrics.
     * @summary Get all impulses (incl. metrics)
     * @param projectId Project ID
     */
    getAllDetailedImpulses(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAllDetailedImpulsesResponse>;
    /**
     * Retrieve all impulse for a project
     * @summary Get all impulses
     * @param projectId Project ID
     */
    getAllImpulses(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAllImpulsesResponse>;
    /**
     * Retrieve all transfer learning models across all categories
     * @summary Get all transfer learning models
     * @param projectId Project ID
     */
    getAllTransferLearningModels(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAllTransferLearningModelsResponse>;
    /**
     * Retrieve the impulse for this project. If you specify `impulseId` then that impulse is returned, otherwise the default impulse is returned.
     * @summary Get impulse
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getImpulse(projectId: number, queryParams?: getImpulseQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetImpulseResponse>;
    /**
     * Retrieve the impulse for this project including disabled blocks. If you specify `impulseId` then that impulse is returned, otherwise the default impulse is returned.
     * @summary Get impulse including disabled blocks
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getImpulseAll(projectId: number, queryParams?: getImpulseAllQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetImpulseResponse>;
    /**
     * Lists all possible blocks that can be used in the impulse
     * @summary Get impulse blocks
     * @param projectId Project ID
     */
    getImpulseBlocks(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetImpulseBlocksResponse>;
    /**
     * Returns an unused block ID. Use this function to determine new block IDs when you construct an impulse; so you won\'t accidentally re-use block IDs.
     * @summary Get new block ID
     * @param projectId Project ID
     */
    getNewBlockId(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetNewBlockIdResponse>;
    /**
     * Regenerate model testing results (without re-running feature generation). Use this if thresholds changed (e.g. via setImpulseThresholds), but no job was kicked off automatically.
     * @summary Regenerate model testing summary
     * @param projectId Project ID
     * @param impulseId Impulse ID
     */
    regenerateModelTestingSummary(projectId: number, impulseId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Set thresholds (e.g. min. confidence rating, or min. anomaly score) for an impulse.
     * @summary Set thresholds
     * @param projectId Project ID
     * @param impulseId Impulse ID
     * @param setImpulseThresholdsRequest
     */
    setImpulseThresholds(projectId: number, impulseId: number, setImpulseThresholdsRequest: SetImpulseThresholdsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<SetImpulseThresholdsResponse>;
    /**
     * Set the complete impulse state for a project, writing impulses in the old (pre-impulse experiments) format. This completely clears out all files on FSx for this project. This is an internal API.
     * @summary Set legacy impulse
     * @param projectId Project ID
     * @param zip
     * @param impulse
     * @param config
     */
    setLegacyImpulseStateInternal(projectId: number, params: setLegacyImpulseStateInternalFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update the impulse for this project.  If you specify `impulseId` then that impulse is created/updated, otherwise the default impulse is created/updated.
     * @summary Update impulse
     * @param projectId Project ID
     * @param updateImpulseRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    updateImpulse(projectId: number, updateImpulseRequest: UpdateImpulseRequest, queryParams?: updateImpulseQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Verify the validity of a custom DSP block
     * @summary Verify custom DSP block
     * @param projectId Project ID
     * @param verifyDspBlockUrlRequest
     */
    verifyDspBlockUrl(projectId: number, verifyDspBlockUrlRequest: VerifyDspBlockUrlRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VerifyDspBlockUrlResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum IntegrationsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type IntegrationsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class IntegrationsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: IntegrationsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: IntegrationsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: IntegrationsApiOpts);
    get opts(): IntegrationsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: IntegrationsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Get the status of a TensorBoard session
     * @summary Get TensorBoard session status
     * @param projectId Project ID
     * @param resourceId Unique resource ID for an integration session. When an integration is launched we create a new session for it. Each session is uniquely identifiable by the project ID and resource ID.
     */
    getTensorBoardSessionStatus(projectId: number, resourceId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetIntegrationSessionStatusResponse>;
    /**
     * Start a TensorBoard session for the requested learn blocks
     * @summary Start TensorBoard integration
     * @param projectId Project ID
     * @param startTensorBoardSessionRequest
     */
    startTensorBoardSession(projectId: number, startTensorBoardSessionRequest: StartTensorBoardSessionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartIntegrationSessionResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum JobsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type buildOnDeviceModelJobQueryParams = {
    type: string;
    impulseId?: number;
};
type buildOrganizationOnDeviceModelJobQueryParams = {
    impulseId?: number;
};
type cancelJobQueryParams = {
    forceCancel?: string;
};
type downloadJobsLogsQueryParams = {
    limit?: number;
    logLevel?: 'error' | 'warn' | 'info' | 'debug';
};
type getImpulseMigrationJobsLogsQueryParams = {
    limit?: number;
    logLevel?: 'error' | 'warn' | 'info' | 'debug';
};
type getJobsLogsQueryParams = {
    limit?: number;
    logLevel?: 'error' | 'warn' | 'info' | 'debug';
};
type getJobsSummaryQueryParams = {
    startDate: Date;
    endDate: Date;
};
type listActiveJobsQueryParams = {
    rootOnly?: boolean;
};
type listAllJobsQueryParams = {
    startDate?: Date;
    endDate?: Date;
    limit?: number;
    offset?: number;
    rootOnly?: boolean;
    key?: string;
    category?: string;
    finished?: 'successful' | 'failed' | 'all';
};
type listFinishedJobsQueryParams = {
    startDate?: Date;
    endDate?: Date;
    limit?: number;
    offset?: number;
    rootOnly?: boolean;
};
type optimizeJobQueryParams = {
    extendedFromJobId?: number;
};
type setTunerPrimaryJobQueryParams = {
    trialId: string;
};
type startClassifyJobQueryParams = {
    impulseId?: number;
};
type startDeployPretrainedModelJobQueryParams = {
    impulseId?: number;
};
type startEvaluateJobQueryParams = {
    impulseId?: number;
};
type startPerformanceCalibrationJobQueryParams = {
    impulseId?: number;
};
type startPostProcessingJobQueryParams = {
    impulseId?: number;
};
type startRetrainJobQueryParams = {
    impulseId?: number;
};
export type JobsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class JobsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: JobsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: JobsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: JobsApiOpts);
    get opts(): JobsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: JobsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Autotune DSP block parameters. Updates are streamed over the websocket API.
     * @summary Autotune DSP parameters
     * @param projectId Project ID
     * @param autotuneDspRequest
     */
    autotuneDspJob(projectId: number, autotuneDspRequest: AutotuneDspRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Generate code to run the impulse on an embedded device. When this step is complete use `downloadHistoricDeployment` to download the artefacts. Updates are streamed over the websocket API.
     * @summary Build on-device model
     * @param projectId Project ID
     * @param type The name of the built target. You can find this by listing all deployment targets through &#x60;listDeploymentTargetsForProject&#x60; (via &#x60;GET /v1/api/{projectId}/deployment/targets&#x60;) and see the &#x60;format&#x60; type.
     * @param buildOnDeviceModelRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    buildOnDeviceModelJob(projectId: number, buildOnDeviceModelRequest: BuildOnDeviceModelRequest, queryParams: buildOnDeviceModelJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<BuildOnDeviceModelResponse>;
    /**
     * Generate code to run the impulse on an embedded device using an organizational deployment block. When this step is complete use `downloadHistoricDeployment` to download the artefacts.  Updates are streamed over the websocket API.
     * @summary Build organizational on-device model
     * @param projectId Project ID
     * @param buildOrganizationOnDeviceModelRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    buildOrganizationOnDeviceModelJob(projectId: number, buildOrganizationOnDeviceModelRequest: BuildOrganizationOnDeviceModelRequest, queryParams?: buildOrganizationOnDeviceModelJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<BuildOnDeviceModelResponse>;
    /**
     * Calculate data quality metrics for the dataset
     * @summary Calculate data quality metrics. Only available for EI staff.
     * @param projectId Project ID
     * @param calculateDataQualityMetricsRequest
     */
    calculateDataQualityMetrics(projectId: number, calculateDataQualityMetricsRequest: CalculateDataQualityMetricsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Cancel a running job.
     * @summary Cancel job
     * @param projectId Project ID
     * @param jobId Job ID
     * @param forceCancel If set to \&#39;true\&#39;, we won\&#39;t wait for the job cluster to cancel the job, and will mark the job as finished.
     */
    cancelJob(projectId: number, jobId: number, queryParams?: cancelJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Run an AI Actions job over a subset of data. This will instruct the block to apply the changes directly to your dataset. To preview, use \"createPreviewAIActionsJob\". To set the config use `updateAIAction`.
     * @summary Create AI Actions job
     * @param projectId Project ID
     * @param actionId AI Action ID
     */
    createAIActionsJob(projectId: number, actionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Do a dry-run of an AI Actions job over a subset of data. This will instruct the block to propose changes to data items (via \"setSampleProposedChanges\") rather than apply the changes directly.
     * @summary Create preview AI Actions job
     * @param projectId Project ID
     * @param actionId AI Action ID
     * @param createPreviewAIActionsJobRequest
     */
    createPreviewAIActionsJob(projectId: number, actionId: number, createPreviewAIActionsJobRequest: CreatePreviewAIActionsJobRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Generate new synthetic data
     * @summary Create synthetic data
     * @param projectId Project ID
     * @param createSyntheticDataRequest
     */
    createSyntheticDataJob(projectId: number, createSyntheticDataRequest: CreateSyntheticDataRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Download the logs for a job (as a text file).
     * @summary Download logs
     * @param projectId Project ID
     * @param jobId Job ID
     * @param limit Maximum number of results
     * @param logLevel Log level (error, warn, info, debug)
     */
    downloadJobsLogs(projectId: number, jobId: number, queryParams?: downloadJobsLogsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<string>;
    /**
     * Starts a job to collate and export on-device inference history data for a given time range. Once finished, the data can be downloaded via /api/{projectId}/devices/inference-history/download-export This is experimental and may change in the future.
     * @summary Export on-device inference history data.
     * @param projectId Project ID
     * @param exportInferenceHistoryDataRequest
     */
    exportInferenceHistoryDataJob(projectId: number, exportInferenceHistoryDataRequest: ExportInferenceHistoryDataRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Export the training pipeline of a Keras block. Updates are streamed over the websocket API.
     * @summary Export Keras block
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    exportKerasBlock(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Export the data of a Keras block (already split in train/validate data). Updates are streamed over the websocket API.
     * @summary Export Keras block data
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param exportKerasBlockDataRequest
     */
    exportKerasBlockData(projectId: number, learnId: number, exportKerasBlockDataRequest: ExportKerasBlockDataRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Generate features for the data explorer
     * @summary Generate data explorer features
     * @param projectId Project ID
     */
    generateDataExplorerFeatures(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Take the raw training set and generate features from them. Updates are streamed over the websocket API.
     * @summary Generate features
     * @param projectId Project ID
     * @param generateFeaturesRequest
     */
    generateFeaturesJob(projectId: number, generateFeaturesRequest: GenerateFeaturesRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Get the status for the multi-impulse migration job in this project. This is a separate route so public projects can access it. If no multi-impulse migration jobs are present, an error will be thrown.
     * @summary Get impulse migration status
     * @param projectId Project ID
     */
    getImpulseMigrationJobStatus(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetJobResponse>;
    /**
     * Get the logs for the multi-impulse migration job in this project. This is a separate route so public projects can access it. If no multi-impulse migration jobs are present, an error will be thrown.
     * @summary Get impulse migration logs
     * @param projectId Project ID
     * @param limit Maximum number of results
     * @param logLevel Log level (error, warn, info, debug)
     */
    getImpulseMigrationJobsLogs(projectId: number, queryParams?: getImpulseMigrationJobsLogsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<LogStdoutResponse>;
    /**
     * Get the status for a job.
     * @summary Get job status
     * @param projectId Project ID
     * @param jobId Job ID
     */
    getJobStatus(projectId: number, jobId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetJobResponse>;
    /**
     * Get the logs for a job.
     * @summary Get logs
     * @param projectId Project ID
     * @param jobId Job ID
     * @param limit Maximum number of results
     * @param logLevel Log level (error, warn, info, debug)
     */
    getJobsLogs(projectId: number, jobId: number, queryParams?: getJobsLogsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<LogStdoutResponse>;
    /**
     * Get a summary of jobs, grouped by key. Used to report to users how much compute they\'ve used.
     * @summary Job summary
     * @param projectId Project ID
     * @param startDate Start date
     * @param endDate End date
     */
    getJobsSummary(projectId: number, queryParams: getJobsSummaryQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<JobSummaryResponse>;
    /**
     * Get the results from a job started from startProfileTfliteJob (via a GET request).
     * @summary Get TFLite profile result (GET)
     * @param projectId Project ID
     * @param jobId Job ID
     */
    getProfileTfliteJobResult(projectId: number, jobId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProfileTfLiteResponse>;
    /**
     * Get the results from a job started from startProfileTfliteJob (via a POST request).
     * @summary Get TFLite profile result (POST)
     * @param projectId Project ID
     * @param jobId Job ID
     */
    getProfileTfliteJobResultViaPostRequest(projectId: number, jobId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProfileTfLiteResponse>;
    /**
     * Get all active jobs for this project
     * @summary List active jobs
     * @param projectId Project ID
     * @param rootOnly Whether to exclude jobs with a parent ID (so jobs started as part of another job)
     */
    listActiveJobs(projectId: number, queryParams?: listActiveJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Get all jobs for this project
     * @summary List all jobs
     * @param projectId Project ID
     * @param startDate Start date
     * @param endDate End date
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param rootOnly Whether to exclude jobs with a parent ID (so jobs started as part of another job)
     * @param key Job key to filter on
     * @param category Job category to filter on
     * @param finished Job finish status to filter on
     */
    listAllJobs(projectId: number, queryParams?: listAllJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Get all finished jobs for this project
     * @summary List finished jobs
     * @param projectId Project ID
     * @param startDate Start date
     * @param endDate End date
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param rootOnly Whether to exclude jobs with a parent ID (so jobs started as part of another job)
     */
    listFinishedJobs(projectId: number, queryParams?: listFinishedJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Evaluates optimal model architecture
     * @summary Optimize model
     * @param projectId Project ID
     * @param extendedFromJobId Tuner coordinator job ID for the direct descendant job to extend this search from
     */
    optimizeJob(projectId: number, queryParams?: optimizeJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * If an impulse migration previously failed, use this function to retry the job.
     * @summary Retry impulse migration
     * @param projectId Project ID
     */
    retryImpulseMigration(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Sets EON tuner primary model
     * @summary Sets EON tuner primary model
     * @param projectId Project ID
     * @param trialId trial ID
     * @param setTunerPrimaryJobRequest
     */
    setTunerPrimaryJob(projectId: number, setTunerPrimaryJobRequest: SetTunerPrimaryJobRequest, queryParams: setTunerPrimaryJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Classifies all items in the testing dataset against the current impulse. Updates are streamed over the websocket API.
     * @summary Classify
     * @param projectId Project ID
     * @param startClassifyJobRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    startClassifyJob(projectId: number, startClassifyJobRequest: StartClassifyJobRequest, queryParams?: startClassifyJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Takes in a TFLite file and builds the model and SDK. Updates are streamed over the websocket API (or can be retrieved through the /stdout endpoint). Use getProfileTfliteJobResult to get the results when the job is completed.
     * @summary Deploy pretrained model
     * @param projectId Project ID
     * @param deployPretrainedModelRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    startDeployPretrainedModelJob(projectId: number, deployPretrainedModelRequest: DeployPretrainedModelRequest, queryParams?: startDeployPretrainedModelJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Evaluates every variant of the current impulse. Updates are streamed over the websocket API.
     * @summary Evaluate
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    startEvaluateJob(projectId: number, queryParams?: startEvaluateJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Adds all data from an existing project into this project. This function is only available through a JWT token; and you can only add data from projects that you\'re a collaborator on.
     * @summary Import data from another project
     * @param projectId Project ID
     * @param importDataFromAnotherProjectJobRequest
     */
    startImportDataFromProjectJob(projectId: number, importDataFromAnotherProjectJobRequest: ImportDataFromAnotherProjectJobRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Add keywords and noise data to a project (for getting started guide)
     * @summary Add keywords and noise
     * @param projectId Project ID
     */
    startKeywordsNoiseJob(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Make a version of a project public. This makes all data and state available (read-only) on a public URL, and allows users to clone this project.
     * @summary Make a version public
     * @param projectId Project ID
     * @param versionId Version ID
     */
    startMakeVersionPublicJob(projectId: number, versionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Export all the data in the project as it was uploaded to Edge Impulse.  Updates are streamed over the websocket API.
     * @summary Export original data
     * @param projectId Project ID
     * @param exportOriginalDataRequest
     */
    startOriginalExportJob(projectId: number, exportOriginalDataRequest: ExportOriginalDataRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Simulates real world usage and returns performance metrics.
     * @summary Performance Calibration
     * @param projectId Project ID
     * @param startPerformanceCalibrationRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    startPerformanceCalibrationJob(projectId: number, startPerformanceCalibrationRequest: StartPerformanceCalibrationRequest, queryParams?: startPerformanceCalibrationJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Begins post processing job
     * @summary Post-processing
     * @param projectId Project ID
     * @param startPostProcessingRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    startPostProcessingJob(projectId: number, startPostProcessingRequest: StartPostProcessingRequest, queryParams?: startPostProcessingJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Takes in a TFLite model and returns the latency, RAM and ROM used for this model. Updates are streamed over the websocket API (or can be retrieved through the /stdout endpoint). Use getProfileTfliteJobResult to get the results when the job is completed.
     * @summary Profile TFLite model
     * @param projectId Project ID
     * @param profileTfLiteRequest
     */
    startProfileTfliteJob(projectId: number, profileTfLiteRequest: ProfileTfLiteRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Restore a project to a certain version. This can only applied to a project without data, and will overwrite your impulse and all settings.
     * @summary Restore project to version
     * @param projectId Project ID
     * @param restoreProjectRequest
     */
    startRestoreJob(projectId: number, restoreProjectRequest: RestoreProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Restore a project to a certain public version. This can only applied to a project without data, and will overwrite your impulse and all settings.
     * @summary Restore project to public version
     * @param projectId Project ID
     * @param restoreProjectFromPublicRequest
     */
    startRestoreJobFromPublic(projectId: number, restoreProjectFromPublicRequest: RestoreProjectFromPublicRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Retrains the current impulse with the last known parameters. Updates are streamed over the websocket API.
     * @summary Retrain
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    startRetrainJob(projectId: number, queryParams?: startRetrainJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Create a new version of the project. This stores all data and configuration offsite. If you have access to the enterprise version of Edge Impulse you can store your data in your own storage buckets (only through JWT token authentication).
     * @summary Version project
     * @param projectId Project ID
     * @param projectVersionRequest
     */
    startVersionJob(projectId: number, projectVersionRequest: ProjectVersionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Export all the data in the project in WAV format.  Updates are streamed over the websocket API.
     * @summary Export data as WAV
     * @param projectId Project ID
     * @param exportWavDataRequest
     */
    startWavExportJob(projectId: number, exportWavDataRequest: ExportWavDataRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Take the output from a DSP block and train an anomaly detection model using K-means or GMM. Updates are streamed over the websocket API.
     * @summary Train model (Anomaly)
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param startTrainingRequestAnomaly
     */
    trainAnomalyJob(projectId: number, learnId: number, startTrainingRequestAnomaly: StartTrainingRequestAnomaly, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Take the output from a DSP block and train a neural network using Keras. Updates are streamed over the websocket API.
     * @summary Train model (Keras)
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param setKerasParameterRequest
     */
    trainKerasJob(projectId: number, learnId: number, setKerasParameterRequest: SetKerasParameterRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Update a job.
     * @summary Update job
     * @param projectId Project ID
     * @param jobId Job ID
     * @param updateJobRequest
     */
    updateJob(projectId: number, jobId: number, updateJobRequest: UpdateJobRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum LearnApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type addKerasFilesFormParams = {
    zip: RequestFile;
};
type anomalyTrainedFeaturesQueryParams = {
    featureAx1: number;
    featureAx2: number;
};
type downloadPretrainedModelQueryParams = {
    impulseId?: number;
};
type getKerasMetadataQueryParams = {
    excludeLabels?: boolean;
};
type getPretrainedModelInfoQueryParams = {
    impulseId?: number;
};
type profilePretrainedModelQueryParams = {
    impulseId?: number;
};
type savePretrainedModelParametersQueryParams = {
    impulseId?: number;
};
type testPretrainedModelQueryParams = {
    impulseId?: number;
};
type testPretrainedModelImagesQueryParams = {
    impulseId?: number;
};
export type uploadKerasFilesFormParams = {
    zip: RequestFile;
};
export type uploadPretrainedModelFormParams = {
    modelFile: RequestFile;
    modelFileName: string;
    modelFileType: string;
    representativeFeatures?: RequestFile;
    device?: string;
    overrideInputShape?: Array<number>;
};
type uploadPretrainedModelQueryParams = {
    impulseId?: number;
};
type uploadPretrainedModelByUrlQueryParams = {
    impulseId?: number;
};
export type LearnApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class LearnApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: LearnApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: LearnApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: LearnApiOpts);
    get opts(): LearnApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: LearnApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Add Keras block files with the contents of a zip. This is an internal API.
     * @summary Add Keras files
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param zip
     */
    addKerasFiles(projectId: number, learnId: number, params: addKerasFilesFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get a sample of trained features, this extracts a number of samples and their features.
     * @summary Trained features
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param featureAx1 Feature axis 1
     * @param featureAx2 Feature axis 2
     */
    anomalyTrainedFeatures(projectId: number, learnId: number, queryParams: anomalyTrainedFeaturesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AnomalyTrainedFeaturesResponse>;
    /**
     * Get trained features for a single sample. This runs both the DSP prerequisites and the anomaly classifier.
     * @summary Trained features for sample
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     */
    anomalyTrainedFeaturesPerSample(projectId: number, learnId: number, sampleId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AnomalyTrainedFeaturesResponse>;
    /**
     * Download the data of an exported Keras block - needs to be exported via \'exportKerasBlockData\' first
     * @summary Download Keras data export
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    downloadKerasData(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download an exported Keras block - needs to be exported via \'exportKerasBlock\' first
     * @summary Download Keras export
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    downloadKerasExport(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download a trained model for a learning block. Depending on the block this can be a TensorFlow model, or the cluster centroids.
     * @summary Download trained model
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param modelDownloadId Model download ID, which can be obtained from the project information
     */
    downloadLearnModel(projectId: number, learnId: number, modelDownloadId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download a pretrained model file
     * @summary Download pretrained model
     * @param projectId Project ID
     * @param pretrainedModelDownloadType
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    downloadPretrainedModel(projectId: number, pretrainedModelDownloadType: 'tflite_float32' | 'tflite_int8' | 'onnx' | 'saved_model', queryParams?: downloadPretrainedModelQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Get information about an anomaly block, such as its dependencies. Use the impulse blocks to find the learnId.
     * @summary Anomaly information
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    getAnomaly(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AnomalyConfigResponse>;
    /**
     * Get metadata about a trained anomaly block. Use the impulse blocks to find the learnId.
     * @summary Anomaly metadata
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    getAnomalyMetadata(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AnomalyModelMetadataResponse>;
    /**
     * Get raw model metadata of the Gaussian mixture model (GMM) for a trained anomaly block. Use the impulse blocks to find the learnId.
     * @summary Anomaly GMM metadata
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    getGmmMetadata(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AnomalyGmmMetadataResponse>;
    /**
     * Get information about a Keras block, such as its dependencies. Use the impulse blocks to find the learnId.
     * @summary Keras information
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    getKeras(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<KerasResponse>;
    /**
     * t-SNE2 output of the raw dataset using embeddings from this Keras block
     * @summary Get data explorer features
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    getKerasDataExplorerFeatures(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDataExplorerFeaturesResponse>;
    /**
     * Get metadata about a trained Keras block. Use the impulse blocks to find the learnId.
     * @summary Keras metadata
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param excludeLabels If set to \&quot;true\&quot;, the \&quot;labels\&quot; field is left empty (which can be big on e.g. regression projects).
     */
    getKerasMetadata(projectId: number, learnId: number, queryParams?: getKerasMetadataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<KerasModelMetadataResponse>;
    /**
     * Download the processed data for this learning block. This is data already processed by the signal processing blocks.
     * @summary Download data
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    getLearnXData(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download the labels for this learning block. This is data already processed by the signal processing blocks. Not all blocks support this function. If so, a GenericApiResponse is returned with an error message.
     * @summary Download labels
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    getLearnYData(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Receive info back about the earlier uploaded pretrained model (via `uploadPretrainedModel`) input/output tensors. If you want to deploy a pretrained model from the API, see `startDeployPretrainedModelJob`.
     * @summary Get pretrained model
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getPretrainedModelInfo(projectId: number, queryParams?: getPretrainedModelInfoQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPretrainedModelResponse>;
    /**
     * Get config for a VLM learn block, including prompt and other model parameters
     * @summary Get VLM block config
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    getVlmConfig(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VlmConfigResponse>;
    /**
     * Returns the latency, RAM and ROM used for the pretrained model - upload first via  `uploadPretrainedModel`. This is using the project\'s selected latency device. Updates are streamed over the websocket API (or can be retrieved through the /stdout endpoint). Use getProfileTfliteJobResult to get the results when the job is completed.
     * @summary Profile pretrained model
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    profilePretrainedModel(projectId: number, queryParams?: profilePretrainedModelQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Save input / model configuration for a pretrained model. This overrides the current impulse. If you want to deploy a pretrained model from the API, see `startDeployPretrainedModelJob`.
     * @summary Save parameters for pretrained model
     * @param projectId Project ID
     * @param savePretrainedModelRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    savePretrainedModelParameters(projectId: number, savePretrainedModelRequest: SavePretrainedModelRequest, queryParams?: savePretrainedModelParametersQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Configure the anomaly block, such as its minimum confidence score. Use the impulse blocks to find the learnId.
     * @summary Anomaly settings
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param setAnomalyParameterRequest
     */
    setAnomaly(projectId: number, learnId: number, setAnomalyParameterRequest: SetAnomalyParameterRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Configure the Keras block, such as its minimum confidence score. Use the impulse blocks to find the learnId.
     * @summary Keras settings
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param setKerasParameterRequest
     */
    setKeras(projectId: number, learnId: number, setKerasParameterRequest: SetKerasParameterRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update config for a VLM learn block, including prompt and other model parameters.
     * @summary Set VLM block config
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param vlmConfigurationBase
     */
    setVlmConfig(projectId: number, learnId: number, vlmConfigurationBase: VlmConfigurationBase, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VlmSetConfigResponse>;
    /**
     * Starts an asynchronous profiling job, if there\'s no profiling information for the currently selected latency device. Afterwards, re-fetch model metadata to get the profiling job IDs.
     * @summary Start a profile job for an anomaly learn block
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    startAnomalyProfileJob(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Starts an asynchronous profiling job, if there\'s no profiling information for the currently selected latency device. Afterwards, re-fetch model metadata to get the profiling job IDs.
     * @summary Start a profile job for a Keras learn block
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     */
    startKerasProfileJob(projectId: number, learnId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Test out a pretrained model (using raw features) - upload first via  `uploadPretrainedModel`. If you want to deploy a pretrained model from the API, see `startDeployPretrainedModelJob`.
     * @summary Test pretrained model
     * @param projectId Project ID
     * @param testPretrainedModelRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    testPretrainedModel(projectId: number, testPretrainedModelRequest: TestPretrainedModelRequest, queryParams?: testPretrainedModelQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<TestPretrainedModelResponse>;
    /**
     * Test out a pretrained model (using image data) - upload first via  `uploadPretrainedModel`. If you want to deploy a pretrained model from the API, see `startDeployPretrainedModelJob`. This will transform raw image data (e.g. RGB to grayscale, resize) before classifying. To classify raw features, see `testPretrainedModel`.
     * @summary Test pretrained model using image data
     * @param projectId Project ID
     * @param testPretrainedModelImagesRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    testPretrainedModelImages(projectId: number, testPretrainedModelImagesRequest: TestPretrainedModelImagesRequest, queryParams?: testPretrainedModelImagesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<TestPretrainedModelResponse>;
    /**
     * Replace Keras block files with the contents of a zip. This is an internal API.
     * @summary Upload Keras files
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param zip
     */
    uploadKerasFiles(projectId: number, learnId: number, params: uploadKerasFilesFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Upload a pretrained model and receive info back about the input/output tensors. If you want to deploy a pretrained model from the API, see `startDeployPretrainedModelJob`.
     * @summary Upload a pretrained model
     * @param projectId Project ID
     * @param modelFile
     * @param modelFileName
     * @param modelFileType
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param representativeFeatures
     * @param device MCU used for calculating latency, query &#x60;latencyDevices&#x60; in &#x60;listProject&#x60; for a list of supported devices (and use the \\\&quot;mcu\\\&quot; property here). If this is kept empty then we\\\&#39;ll show an overview of multiple devices.
     * @param overrideInputShape Optional for ONNX files: overrides the input shape of the model. This is highly suggested if the model has dynamic dimensions. If this field is not set, then all dynamic dimensions will be set to \&#39;1\&#39;.
     */
    uploadPretrainedModel(projectId: number, params: uploadPretrainedModelFormParams, queryParams?: uploadPretrainedModelQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Internal API, used in tests (only available on *.test.edgeimpulse.com). Upload a pretrained model by providing a URL - rather than uploading the file itself (as we have a request size limit on test).
     * @summary Upload a pretrained model
     * @param projectId Project ID
     * @param uploadPretrainedModelByUrlRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    uploadPretrainedModelByUrl(projectId: number, uploadPretrainedModelByUrlRequest: UploadPretrainedModelByUrlRequest, queryParams?: uploadPretrainedModelByUrlQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum LoginApiApiKeys {
}
export type LoginApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class LoginApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: LoginApiOpts;
    protected authentications: {
        default: Authentication;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: LoginApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: LoginApiOpts);
    get opts(): LoginApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: LoginApiApiKeys, value: string | undefined): void;
    /**
     * Get the list of identity providers enabled for a user or a given email domain.
     * @summary Get SSO settings for a user or email domain
     * @param usernameOrEmail Username or email
     */
    getSSODomainIdPs(usernameOrEmail: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSSODomainIdPsResponse>;
    /**
     * Get a JWT token to authenticate with the API.
     * @summary Get JWT token
     * @param getJWTRequest
     */
    login(getJWTRequest: GetJWTRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetJWTResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum MetricsApiApiKeys {
}
export type MetricsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class MetricsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: MetricsApiOpts;
    protected authentications: {
        default: Authentication;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: MetricsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: MetricsApiOpts);
    get opts(): MetricsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: MetricsApiApiKeys, value: string | undefined): void;
    /**
     * Get information about number of projects, compute and data samples. Updated once per hour.
     * @summary Get public metrics
     */
    getPublicMetrics(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPublicMetricsResponse>;
    /**
     * Log an analytics event.
     * @summary Log analytics event
     * @param logAnalyticsEventRequest
     */
    logAnalyticsEvent(logAnalyticsEventRequest: LogAnalyticsEventRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Log a website pageview. Used for website analytics.
     * @summary Log website pageview
     * @param logWebsitePageviewRequest
     */
    logWebsitePageview(logWebsitePageviewRequest: LogWebsitePageviewRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum MonitoringApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type listMonitoringEventsQueryParams = {
    limit?: number;
};
export type MonitoringApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class MonitoringApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: MonitoringApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: MonitoringApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: MonitoringApiOpts);
    get opts(): MonitoringApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: MonitoringApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Create a monitoring event subscription for this project.
     * @summary Create event subscription
     * @param projectId Project ID
     * @param createEventSubscriptionRequest
     */
    createEventSubscription(projectId: number, createEventSubscriptionRequest: CreateEventSubscriptionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateEventSubscriptionResponse>;
    /**
     * Create a new webhook destination for this project.
     * @summary Create a new webhook destination
     * @param projectId Project ID
     * @param createWebhookDestinationRequest
     */
    createWebhookDestination(projectId: number, createWebhookDestinationRequest: CreateWebhookDestinationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateWebhookDestinationResponse>;
    /**
     * Delete a monitoring event subscription.
     * @summary Delete event subscription
     * @param projectId Project ID
     * @param eventSubscriptionId Event subscription ID
     */
    deleteEventSubscription(projectId: number, eventSubscriptionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete a webhook destination.
     * @summary Delete webhook destination
     * @param projectId Project ID
     * @param webhookId Webhook destination ID
     */
    deleteWebhookDestination(projectId: number, webhookId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get details about a monitoring event subscription.
     * @summary Get event subscription
     * @param projectId Project ID
     * @param eventSubscriptionId Event subscription ID
     */
    getEventSubscription(projectId: number, eventSubscriptionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetEventSubscriptionResponse>;
    /**
     * Get details about a webhook destination.
     * @summary Get webhook destination
     * @param projectId Project ID
     * @param webhookId Webhook destination ID
     */
    getWebhookDestination(projectId: number, webhookId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetWebhookDestinationResponse>;
    /**
     * List all monitoring event subscriptions for this project.
     * @summary List event subscriptions
     * @param projectId Project ID
     */
    listEventSubscriptions(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListEventSubscriptionsResponse>;
    /**
     * List recent monitoring events generated for this project.
     * @summary List recent monitoring events
     * @param projectId Project ID
     * @param limit Number of recent events to fetch. Maximum is 100. Defaults to 20.
     */
    listMonitoringEvents(projectId: number, queryParams?: listMonitoringEventsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListMonitoringEventsResponse>;
    /**
     * List all webhook destinations for this project.
     * @summary List webhook destinations
     * @param projectId Project ID
     */
    listWebhookDestinations(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListWebhookDestinationsResponse>;
    /**
     * Rotate the signing secret for a webhook destination. Note that rotating the secret does not reset consecutive_failures, and does not re-enable a disabled webhook. Use the update endpoint for that.
     * @summary Rotate webhook destination secret
     * @param projectId Project ID
     * @param webhookId Webhook destination ID
     */
    rotateWebhookDestinationSecret(projectId: number, webhookId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<RotateWebhookDestinationSecretResponse>;
    /**
     * Send a test webhook to the configured URL for this destination. This is useful for testing if the webhook is configured correctly.
     * @summary Test webhook destination
     * @param projectId Project ID
     * @param webhookId Webhook destination ID
     */
    testWebhookDestination(projectId: number, webhookId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<TestWebhookDestinationResponse>;
    /**
     * Update a monitoring event subscription.
     * @summary Update event subscription
     * @param projectId Project ID
     * @param eventSubscriptionId Event subscription ID
     * @param updateEventSubscriptionRequest
     */
    updateEventSubscription(projectId: number, eventSubscriptionId: number, updateEventSubscriptionRequest: UpdateEventSubscriptionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update the details of a webhook destination. Note that re-enabling a previously auto-disabled webhook resets consecutive_failures to 0. Note that only the rotate-secret endpoint can update the signing secret.
     * @summary Update webhook destination
     * @param projectId Project ID
     * @param webhookId Webhook destination ID
     * @param updateWebhookDestinationRequest
     */
    updateWebhookDestination(projectId: number, webhookId: string, updateWebhookDestinationRequest: UpdateWebhookDestinationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OptimizationApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type getDspParametersQueryParams = {
    organizationId: number;
    organizationDspId: number;
};
export type OptimizationApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OptimizationApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OptimizationApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OptimizationApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OptimizationApiOpts);
    get opts(): OptimizationApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OptimizationApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Complete EON tuner run and mark it as succesful
     * @summary Complete EON tuner run
     * @param projectId Project ID
     * @param jobId Job ID
     * @param tunerCompleteSearch
     */
    completeSearch(projectId: number, jobId: number, tunerCompleteSearch: TunerCompleteSearch, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Create trial
     * @summary Create trial
     * @param projectId Project ID
     * @param jobId Job ID
     * @param tunerCreateTrialImpulse
     */
    createTrial(projectId: number, jobId: number, tunerCreateTrialImpulse: TunerCreateTrialImpulse, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Completely clears the EON tuner state for this project.
     * @summary Delete EON tuner state
     * @param projectId Project ID
     */
    deleteState(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * End an EON trial early. This can for example be used to implement early stopping.
     * @summary End EON tuner trial
     * @param projectId Project ID
     * @param jobId Job ID
     * @param trialId trial ID
     */
    endTrial(projectId: number, jobId: number, trialId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Lists all possible blocks that can be used in the impulse, including any additional information required by the EON tuner that the getImpulseBlocks endpoint does not return
     * @summary Get impulse blocks
     * @param projectId Project ID
     */
    getAllBlocks(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AllBlocksResponse>;
    /**
     * Get all available learn blocks
     * @summary Get all available learn blocks
     * @param projectId Project ID
     */
    getAllLearnBlocks(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AllLearnBlocksResponse>;
    /**
     * Get config
     * @summary Get config
     * @param projectId Project ID
     */
    getConfig(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OptimizeConfigResponse>;
    /**
     * Retrieves DSP block parameters
     * @summary Retrieves DSP block parameters
     * @param projectId Project ID
     * @param organizationId Organization ID
     * @param organizationDspId Organization DSP ID
     */
    getDspParameters(projectId: number, queryParams: getDspParametersQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OptimizeDSPParametersResponse>;
    /**
     * Search space
     * @summary Search space
     * @param projectId Project ID
     */
    getSpace(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OptimizeSpaceResponse>;
    /**
     * Retrieves the EON tuner state
     * @summary Retrieves the EON tuner state
     * @param projectId Project ID
     */
    getState(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OptimizeStateResponse>;
    /**
     * Retrieves available transfer learning models
     * @summary Retrieves available transfer learning models
     * @param projectId Project ID
     */
    getTransferLearningModels(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OptimizeTransferLearningModelsResponse>;
    /**
     * Get the logs for a trial.
     * @summary Get trial logs
     * @param projectId Project ID
     * @param trialId trial ID
     */
    getTrialLogs(projectId: number, trialId: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<LogStdoutResponse>;
    /**
     * Retrieves the EON tuner state for a specific run.
     * @summary Retrieves EON tuner state for a run.
     * @param projectId Project ID
     * @param tunerCoordinatorJobId Tuner coordinator job ID
     */
    getTunerRunState(projectId: number, tunerCoordinatorJobId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OptimizeStateResponse>;
    /**
     * Get window settings
     * @summary Get window settings
     * @param projectId Project ID
     */
    getWindowSettings(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<WindowSettingsResponse>;
    /**
     * List all the tuner runs for a project.
     * @summary List all tuner runs
     * @param projectId Project ID
     */
    listTunerRuns(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListTunerRunsResponse>;
    /**
     * Update config
     * @summary Update config
     * @param projectId Project ID
     * @param optimizeConfig
     */
    updateConfig(projectId: number, optimizeConfig: OptimizeConfig, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Updates the EON tuner state for a specific run.
     * @summary Update EON tuner state
     * @param projectId Project ID
     * @param tunerCoordinatorJobId Tuner coordinator job ID
     * @param updateTunerRunRequest
     */
    updateTunerRun(projectId: number, tunerCoordinatorJobId: number, updateTunerRunRequest: UpdateTunerRunRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OrganizationBlocksApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type addOrganizationDeployBlockFormParams = {
    name: string;
    dockerContainer: string;
    description: string;
    cliArguments: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    photo?: RequestFile;
    integrateUrl?: string;
    privileged?: boolean;
    mountLearnBlock?: boolean;
    supportsEonCompiler?: boolean;
    showOptimizations?: boolean;
    category?: string;
    sourceCodeDownloadStaffOnly?: boolean;
    parameters?: Array<object>;
};
export type updateOrganizationDeployBlockFormParams = {
    name?: string;
    dockerContainer?: string;
    description?: string;
    cliArguments?: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    photo?: RequestFile;
    integrateUrl?: string;
    privileged?: boolean;
    mountLearnBlock?: boolean;
    supportsEonCompiler?: boolean;
    showOptimizations?: boolean;
    category?: string;
    sourceCodeDownloadStaffOnly?: boolean;
    parameters?: Array<object>;
};
export type OrganizationBlocksApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OrganizationBlocksApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OrganizationBlocksApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OrganizationBlocksApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OrganizationBlocksApiOpts);
    get opts(): OrganizationBlocksApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OrganizationBlocksApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Adds a deploy block.
     * @summary Add deploy block
     * @param organizationId Organization ID
     * @param name
     * @param dockerContainer
     * @param description
     * @param cliArguments
     * @param requestsCpu
     * @param requestsMemory
     * @param limitsCpu
     * @param limitsMemory
     * @param photo
     * @param integrateUrl
     * @param privileged
     * @param mountLearnBlock
     * @param supportsEonCompiler
     * @param showOptimizations
     * @param category
     * @param sourceCodeDownloadStaffOnly Whether the source code is only available for staff users.
     * @param parameters List of parameters, spec\&#39;ed according to https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
     */
    addOrganizationDeployBlock(organizationId: number, params: addOrganizationDeployBlockFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Adds a dsp block.
     * @summary Add dsp block
     * @param organizationId Organization ID
     * @param addOrganizationDspBlockRequest
     */
    addOrganizationDspBlock(organizationId: number, addOrganizationDspBlockRequest: AddOrganizationDspBlockRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Adds a secret.
     * @summary Add secret
     * @param organizationId Organization ID
     * @param addOrganizationSecretRequest
     */
    addOrganizationSecret(organizationId: number, addOrganizationSecretRequest: AddOrganizationSecretRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Adds a transfer learning block.
     * @summary Add transfer learning block
     * @param organizationId Organization ID
     * @param addOrganizationTransferLearningBlockRequest
     */
    addOrganizationTransferLearningBlock(organizationId: number, addOrganizationTransferLearningBlockRequest: AddOrganizationTransferLearningBlockRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Adds a transformation block.
     * @summary Add transformation block
     * @param organizationId Organization ID
     * @param addOrganizationTransformationBlockRequest
     */
    addOrganizationTransformationBlock(organizationId: number, addOrganizationTransformationBlockRequest: AddOrganizationTransformationBlockRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Deletes a deploy block.
     * @summary Delete deploy block
     * @param organizationId Organization ID
     * @param deployId Deploy block ID.
     */
    deleteOrganizationDeployBlock(organizationId: number, deployId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Deletes a dsp block.
     * @summary Delete dsp block
     * @param organizationId Organization ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    deleteOrganizationDspBlock(organizationId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Deletes a secret
     * @summary Delete secret
     * @param organizationId Organization ID
     * @param secretId Secret ID
     */
    deleteOrganizationSecret(organizationId: number, secretId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Deletes a transfer learning block.
     * @summary Delete transfer learning block
     * @param organizationId Organization ID
     * @param transferLearningId Transfer learning ID
     */
    deleteOrganizationTransferLearningBlock(organizationId: number, transferLearningId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Deletes a transformation block.
     * @summary Delete transformation block
     * @param organizationId Organization ID
     * @param transformationId Transformation block ID.
     */
    deleteOrganizationTransformationBlock(organizationId: number, transformationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Download the source code for this block.
     * @summary Export deploy block
     * @param organizationId Organization ID
     * @param deployId Deploy block ID.
     */
    exportOrganizationDeployBlock(organizationId: number, deployId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ExportBlockResponse>;
    /**
     * Download the source code for this block.
     * @summary Export dsp block
     * @param organizationId Organization ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    exportOrganizationDspBlock(organizationId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ExportBlockResponse>;
    /**
     * Download the source code for this block.
     * @summary Export transfer learning block
     * @param organizationId Organization ID
     * @param transferLearningId Transfer learning ID
     */
    exportOrganizationTransferLearningBlock(organizationId: number, transferLearningId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ExportBlockResponse>;
    /**
     * Download the source code for this block.
     * @summary Export transformation block
     * @param organizationId Organization ID
     * @param transformationId Transformation block ID.
     */
    exportOrganizationTransformationBlock(organizationId: number, transformationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ExportBlockResponse>;
    /**
     * Gets a deploy block.
     * @summary Get deploy block
     * @param organizationId Organization ID
     * @param deployId Deploy block ID.
     */
    getOrganizationDeployBlock(organizationId: number, deployId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDeployBlockResponse>;
    /**
     * Gets a dsp block.
     * @summary Get dsp block
     * @param organizationId Organization ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    getOrganizationDspBlock(organizationId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDspBlockResponse>;
    /**
     * Gets a transfer learning block.
     * @summary Get transfer learning block
     * @param organizationId Organization ID
     * @param transferLearningId Transfer learning ID
     */
    getOrganizationTransferLearningBlock(organizationId: number, transferLearningId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationTransferLearningBlockResponse>;
    /**
     * Get a transformation block.
     * @summary Get transformation block
     * @param organizationId Organization ID
     * @param transformationId Transformation block ID.
     */
    getOrganizationTransformationBlock(organizationId: number, transformationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationTransformationBlockResponse>;
    /**
     * Retrieve a transformation blocks published by other organizations, available for all organizations.
     * @summary Get public transformation block
     * @param organizationId Organization ID
     * @param transformationId Transformation block ID.
     */
    getPublicOrganizationTransformationBlock(organizationId: number, transformationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPublicOrganizationTransformationBlockResponse>;
    /**
     * Retrieve all deploy blocks.
     * @summary Get deploy blocks
     * @param organizationId Organization ID
     */
    listOrganizationDeployBlocks(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationDeployBlocksResponse>;
    /**
     * Retrieve all dsp blocks.
     * @summary Get dsp blocks
     * @param organizationId Organization ID
     */
    listOrganizationDspBlocks(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationDspBlocksResponse>;
    /**
     * Retrieve all secrets.
     * @summary Get secrets
     * @param organizationId Organization ID
     */
    listOrganizationSecrets(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationSecretsResponse>;
    /**
     * Retrieve all transfer learning blocks.
     * @summary Get transfer learning blocks
     * @param organizationId Organization ID
     */
    listOrganizationTransferLearningBlocks(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationTransferLearningBlocksResponse>;
    /**
     * Retrieve all transformation blocks.
     * @summary Get transformation blocks
     * @param organizationId Organization ID
     */
    listOrganizationTransformationBlocks(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationTransformationBlocksResponse>;
    /**
     * Retrieve all transformation blocks published by other organizations, available for all organizations.
     * @summary List public transformation blocks
     * @param organizationId Organization ID
     */
    listPublicOrganizationTransformationBlocks(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPublicOrganizationTransformationBlocksResponse>;
    /**
     * Retry launch a dsp block.
     * @summary Retry connection to dsp block
     * @param organizationId Organization ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     */
    retryOrganizationDspBlock(organizationId: number, dspId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Updates a deploy block. Only values in the body will be updated.
     * @summary Update deploy block
     * @param organizationId Organization ID
     * @param deployId Deploy block ID.
     * @param name
     * @param dockerContainer
     * @param description
     * @param cliArguments
     * @param requestsCpu
     * @param requestsMemory
     * @param limitsCpu
     * @param limitsMemory
     * @param photo
     * @param integrateUrl
     * @param privileged
     * @param mountLearnBlock
     * @param supportsEonCompiler
     * @param showOptimizations
     * @param category
     * @param sourceCodeDownloadStaffOnly Whether the source code is only available for staff users.
     * @param parameters List of parameters, spec\&#39;ed according to https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
     */
    updateOrganizationDeployBlock(organizationId: number, deployId: number, params: updateOrganizationDeployBlockFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Updates a dsp block. Only values in the body will be updated.
     * @summary Update dsp block
     * @param organizationId Organization ID
     * @param dspId DSP Block ID, use the impulse functions to retrieve the ID
     * @param updateOrganizationDspBlockRequest
     */
    updateOrganizationDspBlock(organizationId: number, dspId: number, updateOrganizationDspBlockRequest: UpdateOrganizationDspBlockRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Updates a transfer learning block. Only values in the body will be updated.
     * @summary Update transfer learning block
     * @param organizationId Organization ID
     * @param transferLearningId Transfer learning ID
     * @param updateOrganizationTransferLearningBlockRequest
     */
    updateOrganizationTransferLearningBlock(organizationId: number, transferLearningId: number, updateOrganizationTransferLearningBlockRequest: UpdateOrganizationTransferLearningBlockRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Updates a transformation block. Only values in the body will be updated.
     * @summary Update transformation block
     * @param organizationId Organization ID
     * @param transformationId Transformation block ID.
     * @param updateOrganizationTransformationBlockRequest
     */
    updateOrganizationTransformationBlock(organizationId: number, transformationId: number, updateOrganizationTransformationBlockRequest: UpdateOrganizationTransformationBlockRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OrganizationCreateProjectApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type getOrganizationCreateProjectStatusQueryParams = {
    transformLimit: number;
    transformOffset: number;
    selection?: string;
};
type getOrganizationCreateProjectsQueryParams = {
    limit?: number;
    offset?: number;
    includePipelineJobs?: boolean;
};
export type uploadCustomBlockFormParams = {
    tar: RequestFile;
    type: string;
    blockId: number;
};
export type OrganizationCreateProjectApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OrganizationCreateProjectApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OrganizationCreateProjectApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OrganizationCreateProjectApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OrganizationCreateProjectApiOpts);
    get opts(): OrganizationCreateProjectApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OrganizationCreateProjectApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Clear all failed transform job from a create project job. Only jobs that have failed will be cleared.
     * @summary Clear failed transform jobs
     * @param organizationId Organization ID
     * @param createProjectId Create project job ID.
     */
    clearOrganizationTransform(organizationId: number, createProjectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Creates a signed link to securely upload a custom block archive directly to S3.
     * @summary Create pre-signed S3 upload link for a custom block archive
     * @param organizationId Organization ID
     * @param createCustomBlockUploadLinkRequest
     */
    createCustomBlockUploadLink(organizationId: number, createCustomBlockUploadLinkRequest: CreateCustomBlockUploadLinkRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateCustomBlockUploadLinkResponse>;
    /**
     * Remove a transformation job. This will stop all running jobs.
     * @summary Delete transformation job
     * @param organizationId Organization ID
     * @param createProjectId Create project job ID.
     */
    deleteOrganizationCreateProject(organizationId: number, createProjectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Remove a file from a create project job. Only files for which no jobs are running can be deleted.
     * @summary Delete create project file
     * @param organizationId Organization ID
     * @param createProjectId Create project job ID.
     * @param createProjectFileId Create project job file ID.
     */
    deleteOrganizationCreateProjectFile(organizationId: number, createProjectId: number, createProjectFileId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Verifies a staged custom block archive and starts a custom block build job.
     * @summary Finalize custom block upload
     * @param organizationId Organization ID
     * @param finalizeCustomBlockUploadRequest
     */
    finalizeCustomBlockUpload(organizationId: number, finalizeCustomBlockUploadRequest: FinalizeCustomBlockUploadRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Get the current status of a transformation job job.
     * @summary Get transformation job status
     * @param organizationId Organization ID
     * @param createProjectId Create project job ID.
     * @param transformLimit Maximum number of results of transformation jobs
     * @param transformOffset Offset in results of transformation jobs, can be used in conjunction with TransformLimitResultsParameter to implement paging.
     * @param selection Type of selected rows, either \&#39;all\&#39;, \&#39;created\&#39;, \&#39;in-progress\&#39; or \&#39;failed\&#39; (defaults to \&#39;all\&#39;)
     */
    getOrganizationCreateProjectStatus(organizationId: number, createProjectId: number, queryParams: getOrganizationCreateProjectStatusQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OrganizationCreateProjectStatusResponse>;
    /**
     * Get list of transformation jobs.
     * @summary List transformation jobs
     * @param organizationId Organization ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param includePipelineJobs If enabled, also includes jobs that are part of a pipeline
     */
    getOrganizationCreateProjects(organizationId: number, queryParams?: getOrganizationCreateProjectsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OrganizationGetCreateProjectsResponse>;
    /**
     * Add a new collaborator to a project owned by an organisation.
     * @summary Add a collaborator to a project within an organisation
     * @param organizationId Organization ID
     * @param updateOrganizationAddCollaboratorRequest
     */
    organizationAddCollaborator(organizationId: number, updateOrganizationAddCollaboratorRequest: UpdateOrganizationAddCollaboratorRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Create a new empty project within an organization.
     * @summary Create new empty project
     * @param organizationId Organization ID
     * @param updateOrganizationCreateEmptyProjectRequest
     */
    organizationCreateEmptyProject(organizationId: number, updateOrganizationCreateEmptyProjectRequest: UpdateOrganizationCreateEmptyProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateProjectResponse>;
    /**
     * Start a transformation job to fetch data from the organization and put it in a project, or transform into new data.
     * @summary Start transformation job
     * @param organizationId Organization ID
     * @param organizationCreateProjectRequest
     */
    organizationCreateProject(organizationId: number, organizationCreateProjectRequest: OrganizationCreateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OrganizationCreateProjectResponse>;
    /**
     * Retry a transformation action on a file from a transformation job. Only files that have failed can be retried.
     * @summary Retry transformation file
     * @param organizationId Organization ID
     * @param createProjectId Create project job ID.
     * @param createProjectFileId Create project job file ID.
     */
    retryOrganizationCreateProjectFile(organizationId: number, createProjectId: number, createProjectFileId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Retry all failed transform job from a transformation job. Only jobs that have failed will be retried.
     * @summary Retry failed transform jobs
     * @param organizationId Organization ID
     * @param createProjectId Create project job ID.
     */
    retryOrganizationTransform(organizationId: number, createProjectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Retry the upload job from a transformation job. Only jobs that have failed can be retried.
     * @summary Retry transformation upload job
     * @param organizationId Organization ID
     * @param createProjectId Create project job ID.
     */
    retryOrganizationUpload(organizationId: number, createProjectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update the properties of a transformation job.
     * @summary Update transformation job
     * @param organizationId Organization ID
     * @param createProjectId Create project job ID.
     * @param updateOrganizationCreateProjectRequest
     */
    updateOrganizationCreateProject(organizationId: number, createProjectId: number, updateOrganizationCreateProjectRequest: UpdateOrganizationCreateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Upload a zip file containing a custom transformation or deployment block.
     * @summary Upload a custom block
     * @param organizationId Organization ID
     * @param tar
     * @param type
     * @param blockId
     */
    uploadCustomBlock(organizationId: number, params: uploadCustomBlockFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OrganizationDataApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type addOrganizationDataFileFormParams = {
    files: Array<RequestFile>;
};
export type addOrganizationDataItemFormParams = {
    name: string;
    bucketId?: number;
    bucketName?: string;
    dataset: string;
    bucketPath?: string;
    metadata: string;
    files: Array<RequestFile>;
};
type changeDatasetOrganizationDataItemsQueryParams = {
    dataset?: string;
    dataIds: string;
    filter?: string;
};
type clearChecklistOrganizationDataItemsQueryParams = {
    dataset?: string;
    dataIds: string;
    filter?: string;
};
type deleteOrganizationDataFileQueryParams = {
    fileName: string;
};
type deleteOrganizationDataItemsQueryParams = {
    dataset?: string;
    dataIds: string;
    filter?: string;
};
type downloadDatasetFolderQueryParams = {
    path: string;
};
type downloadOrganizationDataFileQueryParams = {
    fileName: string;
};
type downloadOrganizationDataItemQueryParams = {
    dataset?: string;
    dataIds: string;
    filter?: string;
};
type downloadOrganizationSingleDataItemQueryParams = {
    filter?: string;
};
type getOrganizationDataItemQueryParams = {
    filter?: string;
};
type getOrganizationDataItemTransformJobsQueryParams = {
    limit?: number;
    offset?: number;
};
type listOrganizationDataQueryParams = {
    dataset?: string;
    filter?: string;
    limit?: number;
    offset?: number;
};
type listOrganizationFilesQueryParams = {
    dataset?: string;
    filter?: string;
    limit?: number;
    offset?: number;
};
export type organizationBulkUpdateMetadataFormParams = {
    dataset: string;
    csvFile: RequestFile;
};
type previewOrganizationDataFileQueryParams = {
    fileName: string;
};
type refreshOrganizationDataQueryParams = {
    dataset: string;
};
type viewDatasetFileQueryParams = {
    path: string;
};
export type OrganizationDataApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OrganizationDataApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OrganizationDataApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OrganizationDataApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OrganizationDataApiOpts);
    get opts(): OrganizationDataApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OrganizationDataApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Add a storage bucket.
     * @summary Add a storage bucket
     * @param organizationId Organization ID
     * @param addOrganizationBucketRequest
     */
    addOrganizationBucket(organizationId: number, addOrganizationBucketRequest: AddOrganizationBucketRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Add a new file to an existing data item.
     * @summary Add files
     * @param organizationId Organization ID
     * @param dataId Data ID
     * @param files
     */
    addOrganizationDataFile(organizationId: number, dataId: number, params: addOrganizationDataFileFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Bulk adds data items that already exist in a storage bucket. The bucket path specified should contain folders. Each folder is added as a data item in Edge Impulse.
     * @summary Add data items from bucket
     * @param organizationId Organization ID
     * @param organizationAddDataFolderRequest
     */
    addOrganizationDataFolder(organizationId: number, organizationAddDataFolderRequest: OrganizationAddDataFolderRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Add a new data item. You can add a maximum of 10000 files directly through this API. Use `addOrganizationDataFile` to add additional files.
     * @summary Add new data
     * @param organizationId Organization ID
     * @param name
     * @param dataset
     * @param metadata Key-value pair of metadata (in JSON format)
     * @param files
     * @param bucketId
     * @param bucketName Name of the bucket name (as an Edge Impulse name)
     * @param bucketPath Optional path in the bucket to create this data item (files are created under this path).
     */
    addOrganizationDataItem(organizationId: number, params: addOrganizationDataItemFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Add a new research dataset
     * @summary Add dataset
     * @param organizationId Organization ID
     * @param organizationAddDatasetRequest
     */
    addOrganizationDataset(organizationId: number, organizationAddDatasetRequest: OrganizationAddDatasetRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Change the dataset for selected data items.
     * @summary Change dataset
     * @param organizationId Organization ID
     * @param dataIds Data IDs as an Array
     * @param setOrganizationDataDatasetRequest
     * @param dataset Selected dataset
     * @param filter Data filter in SQL WHERE format, where you can reference \&#39;dataset\&#39;, \&#39;bucket\&#39;, \&#39;name\&#39;, \&#39;total_file_count\&#39;, \&#39;total_file_size\&#39;, \&#39;created\&#39; and any metadata label through \&#39;metadata-&gt;\&#39; (dots are replaced by underscore).
     */
    changeDatasetOrganizationDataItems(organizationId: number, setOrganizationDataDatasetRequest: SetOrganizationDataDatasetRequest, queryParams: changeDatasetOrganizationDataItemsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Clear all checklist flags for selected data items.
     * @summary Clear checklist for data
     * @param organizationId Organization ID
     * @param dataIds Data IDs as an Array
     * @param dataset Selected dataset
     * @param filter Data filter in SQL WHERE format, where you can reference \&#39;dataset\&#39;, \&#39;bucket\&#39;, \&#39;name\&#39;, \&#39;total_file_count\&#39;, \&#39;total_file_size\&#39;, \&#39;created\&#39; and any metadata label through \&#39;metadata-&gt;\&#39; (dots are replaced by underscore).
     */
    clearChecklistOrganizationDataItems(organizationId: number, queryParams: clearChecklistOrganizationDataItemsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Create a new storage bucket in the Edge Impulse infra. This API is only available through JWT token authentication.
     * @summary Create storage bucket
     * @param organizationId Organization ID
     * @param createOrganizationBucketRequest
     */
    createOrganizationBucket(organizationId: number, createOrganizationBucketRequest: CreateOrganizationBucketRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateOrganizationBucketResponse>;
    /**
     * Creates a signed link to securely upload data to s3 bucket directly from the client.
     * @summary Create pre-signed S3 upload link
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param createSignedUploadLinkRequest
     */
    createSignedUploadLinkDataset(organizationId: number, dataset: string, createSignedUploadLinkRequest: CreateSignedUploadLinkRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateSignedUploadLinkResponse>;
    /**
     * Delete a file from a dataset
     * @summary Delete file from dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param deletePortalFileRequest
     */
    deleteDatasetFile(organizationId: number, dataset: string, deletePortalFileRequest: DeletePortalFileRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete a single file from a data item.
     * @summary Delete file
     * @param organizationId Organization ID
     * @param dataId Data ID
     * @param fileName File name
     */
    deleteOrganizationDataFile(organizationId: number, dataId: number, queryParams: deleteOrganizationDataFileQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete a data item. This will remove items the items from the underlying storage if your dataset has \"bucketPath\" set.
     * @summary Delete data
     * @param organizationId Organization ID
     * @param dataId Data ID
     */
    deleteOrganizationDataItem(organizationId: number, dataId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete all data for selected data items. This removes all data in the underlying data bucket.
     * @summary Delete data
     * @param organizationId Organization ID
     * @param dataIds Data IDs as an Array
     * @param dataset Selected dataset
     * @param filter Data filter in SQL WHERE format, where you can reference \&#39;dataset\&#39;, \&#39;bucket\&#39;, \&#39;name\&#39;, \&#39;total_file_count\&#39;, \&#39;total_file_size\&#39;, \&#39;created\&#39; and any metadata label through \&#39;metadata-&gt;\&#39; (dots are replaced by underscore).
     */
    deleteOrganizationDataItems(organizationId: number, queryParams: deleteOrganizationDataItemsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Download a file from a dataset. Will return a signed URL to the bucket.
     * @summary Download file from dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param downloadPortalFileRequest
     */
    downloadDatasetFile(organizationId: number, dataset: string, downloadPortalFileRequest: DownloadPortalFileRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DownloadPortalFileResponse>;
    /**
     * Download all files in the given folder in a dataset, ignoring any subdirectories.
     * @summary Download folder from dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param path Path, relative to dataset
     */
    downloadDatasetFolder(organizationId: number, dataset: string, queryParams: downloadDatasetFolderQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download a single file from a data item.
     * @summary Download file
     * @param organizationId Organization ID
     * @param dataId Data ID
     * @param fileName File name
     */
    downloadOrganizationDataFile(organizationId: number, dataId: number, queryParams: downloadOrganizationDataFileQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download all data for selected data items. This function does not query the underlying bucket.
     * @summary Download data
     * @param organizationId Organization ID
     * @param dataIds Data IDs as an Array
     * @param dataset Selected dataset
     * @param filter Data filter in SQL WHERE format, where you can reference \&#39;dataset\&#39;, \&#39;bucket\&#39;, \&#39;name\&#39;, \&#39;total_file_count\&#39;, \&#39;total_file_size\&#39;, \&#39;created\&#39; and any metadata label through \&#39;metadata-&gt;\&#39; (dots are replaced by underscore).
     */
    downloadOrganizationDataItem(organizationId: number, queryParams: downloadOrganizationDataItemQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download all data for this data item.
     * @summary Download data
     * @param organizationId Organization ID
     * @param dataId Data ID
     * @param filter Data filter in SQL WHERE format, where you can reference \&#39;dataset\&#39;, \&#39;bucket\&#39;, \&#39;name\&#39;, \&#39;total_file_count\&#39;, \&#39;total_file_size\&#39;, \&#39;created\&#39; and any metadata label through \&#39;metadata-&gt;\&#39; (dots are replaced by underscore).
     */
    downloadOrganizationSingleDataItem(organizationId: number, dataId: number, queryParams?: downloadOrganizationSingleDataItemQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Get storage bucket details.
     * @summary Get storage bucket
     * @param organizationId Organization ID
     * @param bucketId Bucket ID
     */
    getOrganizationBucket(organizationId: number, bucketId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationBucketResponse>;
    /**
     * Get a data item. This will HEAD the underlying bucket to retrieve the last file information.
     * @summary Get data metadata
     * @param organizationId Organization ID
     * @param dataId Data ID
     * @param filter Data filter in SQL WHERE format, where you can reference \&#39;dataset\&#39;, \&#39;bucket\&#39;, \&#39;name\&#39;, \&#39;total_file_count\&#39;, \&#39;total_file_size\&#39;, \&#39;created\&#39; and any metadata label through \&#39;metadata-&gt;\&#39; (dots are replaced by underscore).
     */
    getOrganizationDataItem(organizationId: number, dataId: number, queryParams?: getOrganizationDataItemQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataItemResponse>;
    /**
     * Get all transformation jobs that ran for a data item. If limit / offset is not provided then max. 20 results are returned.
     * @summary Get transformation jobs for data item
     * @param organizationId Organization ID
     * @param dataId Data ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    getOrganizationDataItemTransformJobs(organizationId: number, dataId: number, queryParams?: getOrganizationDataItemTransformJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataItemTransformJobsResponse>;
    /**
     * Get information about a dataset
     * @summary Get dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     */
    getOrganizationDataset(organizationId: number, dataset: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDatasetResponse>;
    /**
     * Hide a dataset (does not remove underlying data)
     * @summary Hide dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     */
    hideOrganizationDataset(organizationId: number, dataset: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * List all files and directories in specified prefix.
     * @summary List files in dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param listPortalFilesInFolderRequest
     */
    listDatasetFilesInFolder(organizationId: number, dataset: string, listPortalFilesInFolderRequest: ListPortalFilesInFolderRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPortalFilesInFolderResponse>;
    /**
     * Retrieve all configured storage buckets. This does not list the secret key.
     * @summary List storage buckets
     * @param organizationId Organization ID
     */
    listOrganizationBuckets(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationBucketsResponse>;
    /**
     * Lists all data items. This can be filtered by the ?filter parameter.
     * @summary List data
     * @param organizationId Organization ID
     * @param dataset Selected dataset
     * @param filter Data filter in SQL WHERE format, where you can reference \&#39;dataset\&#39;, \&#39;bucket\&#39;, \&#39;name\&#39;, \&#39;total_file_count\&#39;, \&#39;total_file_size\&#39;, \&#39;created\&#39; and any metadata label through \&#39;metadata-&gt;\&#39; (dots are replaced by underscore).
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    listOrganizationData(organizationId: number, queryParams?: listOrganizationDataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationDataResponse>;
    /**
     * Lists all files included by the filter.
     * @summary List files
     * @param organizationId Organization ID
     * @param dataset Selected dataset
     * @param filter Data filter in SQL WHERE format, where you can reference \&#39;dataset\&#39;, \&#39;bucket\&#39;, \&#39;name\&#39;, \&#39;total_file_count\&#39;, \&#39;total_file_size\&#39;, \&#39;created\&#39; and any metadata label through \&#39;metadata-&gt;\&#39; (dots are replaced by underscore).
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    listOrganizationFiles(organizationId: number, queryParams?: listOrganizationFilesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationFilesResponse>;
    /**
     * Bulk update the metadata of many data items in one go. This requires you to submit a CSV file with headers, one of which the columns should be named \'name\'. The other columns are used as metadata keys.
     * @summary Bulk update metadata
     * @param organizationId Organization ID
     * @param dataset
     * @param csvFile
     */
    organizationBulkUpdateMetadata(organizationId: number, params: organizationBulkUpdateMetadataFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Preview files and directories in a default dataset for the given prefix, with support for wildcards. This is an internal API used when starting a transformation job.
     * @summary Preview files in a default dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param previewDefaultFilesInFolderRequest
     */
    previewDefaultFilesInFolder(organizationId: number, dataset: string, previewDefaultFilesInFolderRequest: PreviewDefaultFilesInFolderRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<PreviewDefaultFilesInFolderResponse>;
    /**
     * Preview a single file from a data item (same as downloadOrganizationDataFile but w/ content-disposition inline and could be truncated).
     * @summary Preview file
     * @param organizationId Organization ID
     * @param dataId Data ID
     * @param fileName File name
     */
    previewOrganizationDataFile(organizationId: number, dataId: number, queryParams: previewOrganizationDataFileQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Update all data items. HEADs all underlying buckets to retrieve the last file information. Use this API after uploading data directly to S3. If your dataset has bucketId and bucketPath set then this will also remove items that have been removed from S3.
     * @summary Refresh data
     * @param organizationId Organization ID
     * @param dataset Selected dataset
     */
    refreshOrganizationData(organizationId: number, queryParams: refreshOrganizationDataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Remove a storage bucket and associated datasets. This will render any data in this storage bucket unreachable.
     * @summary Remove storage bucket
     * @param organizationId Organization ID
     * @param bucketId Bucket ID
     */
    removeOrganizationBucket(organizationId: number, bucketId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Rename a file in a dataset
     * @summary Rename file from dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param renamePortalFileRequest
     */
    renameDatasetFile(organizationId: number, dataset: string, renamePortalFileRequest: RenamePortalFileRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Updates storage bucket details. This only updates fields that were set in the request body. Before updating the bucket details, it is required to verify the connection using the POST /api/organizations/{organizationId}/buckets/verify endpoint.  The verification process: 1. Call the verify endpoint with the new bucket details. 2. Poll the verify endpoint until it responds with `connectionStatus: connected`. 3. If the endpoint responds with `connectionStatus: error`, the verification has failed.  Only proceed with updating the bucket details after receiving a `connected` status. The polling interval and timeout should be determined based on your application\'s requirements.
     * @summary Update storage bucket
     * @param organizationId Organization ID
     * @param bucketId Bucket ID
     * @param updateOrganizationBucketRequest
     */
    updateOrganizationBucket(organizationId: number, bucketId: number, updateOrganizationBucketRequest: UpdateOrganizationBucketRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update the data item metadata.
     * @summary Update data metadata
     * @param organizationId Organization ID
     * @param dataId Data ID
     * @param updateOrganizationDataItemRequest
     */
    updateOrganizationDataItem(organizationId: number, dataId: number, updateOrganizationDataItemRequest: UpdateOrganizationDataItemRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Set information about a dataset
     * @summary Update dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param updateOrganizationDatasetRequest
     */
    updateOrganizationDataset(organizationId: number, dataset: string, updateOrganizationDatasetRequest: UpdateOrganizationDatasetRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Verify whether we can reach a dataset (and return some random files, used for data sources)
     * @summary Verify dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     */
    verifyDataset(organizationId: number, dataset: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VerifyOrganizationBucketResponse>;
    /**
     * Verify whether we can reach a bucket before adding it.
     * @summary Verify existing bucket connectivity
     * @param organizationId Organization ID
     * @param bucketId Bucket ID
     * @param verifyOrganizationExistingBucketRequest
     */
    verifyExistingOrganizationBucket(organizationId: number, bucketId: number, verifyOrganizationExistingBucketRequest: VerifyOrganizationExistingBucketRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VerifyOrganizationBucketResponse>;
    /**
     * Verify connectivity to a storage bucket and optionally list its contents. This endpoint allows you to: 1. Check if the provided bucket credentials are valid and the bucket is accessible. 2. Optionally list files in the bucket up to a specified limit. 3. Validate the bucket configuration before adding it to the organization.  The request can include details such as the bucket name, region, credentials, and listing options. The response provides information about the bucket\'s accessibility and, if requested, a list of files in the bucket.  Important note on verification process: - For S3-compatible storage backends: Verification is expected to be immediate. - For Azure buckets: Verification takes longer. Users are required to poll this endpoint until the connectionStatus changes from \'connecting\' to \'connected\'.  When dealing with Azure buckets, implement a polling mechanism to check the status periodically until it\'s confirmed as connected.
     * @summary Verify bucket connectivity
     * @param organizationId Organization ID
     * @param verifyOrganizationBucketRequest
     */
    verifyOrganizationBucket(organizationId: number, verifyOrganizationBucketRequest: VerifyOrganizationBucketRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VerifyOrganizationBucketResponse>;
    /**
     * View a file that\'s located in a dataset (requires JWT auth). File might be converted (e.g. Parquet) or truncated (e.g. CSV).
     * @summary View file from dataset
     * @param organizationId Organization ID
     * @param dataset Dataset name
     * @param path Path to file in portal
     */
    viewDatasetFile(organizationId: number, dataset: string, queryParams: viewDatasetFileQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OrganizationDataCampaignsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type uploadDashboardScreenshotFormParams = {
    image: RequestFile;
};
export type OrganizationDataCampaignsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OrganizationDataCampaignsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OrganizationDataCampaignsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OrganizationDataCampaignsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OrganizationDataCampaignsApiOpts);
    get opts(): OrganizationDataCampaignsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OrganizationDataCampaignsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Add a new data campaign to a data campaign dashboard
     * @summary Add a data campaign
     * @param organizationId Organization ID
     * @param addOrganizationDataCampaignRequest
     */
    addOrganizationDataCampaign(organizationId: number, addOrganizationDataCampaignRequest: AddOrganizationDataCampaignRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AddOrganizationDataCampaignResponse>;
    /**
     * Add a new data campaign dashboard
     * @summary Add data campaign dashboard
     * @param organizationId Organization ID
     * @param addOrganizationDataCampaignDashboardRequest
     */
    addOrganizationDataCampaignDashboard(organizationId: number, addOrganizationDataCampaignDashboardRequest: AddOrganizationDataCampaignDashboardRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AddOrganizationDataCampaignDashboardResponse>;
    /**
     * Delete a data campaign
     * @summary Delete data campaign
     * @param organizationId Organization ID
     * @param campaignId
     */
    deleteOrganizationDataCampaign(organizationId: number, campaignId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete a data campaign dashboard
     * @summary Delete data campaign dashboard
     * @param organizationId Organization ID
     * @param campaignDashboardId
     */
    deleteOrganizationDataCampaignDashboard(organizationId: number, campaignDashboardId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get a data campaign
     * @summary Get data campaign
     * @param organizationId Organization ID
     * @param campaignId
     */
    getOrganizationDataCampaign(organizationId: number, campaignId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataCampaignResponse>;
    /**
     * Get a data campaign dashboard
     * @summary Get data campaign dashboard
     * @param organizationId Organization ID
     * @param campaignDashboardId
     */
    getOrganizationDataCampaignDashboard(organizationId: number, campaignDashboardId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataCampaignDashboardResponse>;
    /**
     * List all data campaign dashboards
     * @summary Get data campaign dashboards
     * @param organizationId Organization ID
     */
    getOrganizationDataCampaignDashboards(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataCampaignDashboardsResponse>;
    /**
     * Get which items have changed for a data campaign. You post the data points and we\'ll return which data items are different in the past day.
     * @summary Get diff for data campaign
     * @param organizationId Organization ID
     * @param campaignId
     * @param organizationDataCampaignDiffRequest
     */
    getOrganizationDataCampaignDiff(organizationId: number, campaignId: number, organizationDataCampaignDiffRequest: OrganizationDataCampaignDiffRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OrganizationDataCampaignDiffResponse>;
    /**
     * Get a list of all data campaigns for a dashboard
     * @summary Get data campaigns
     * @param organizationId Organization ID
     * @param campaignDashboardId
     */
    getOrganizationDataCampaignsForDashboard(organizationId: number, campaignDashboardId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataCampaignsResponse>;
    /**
     * Update a data campaign
     * @summary Update data campaign
     * @param organizationId Organization ID
     * @param campaignId
     * @param updateOrganizationDataCampaignRequest
     */
    updateOrganizationDataCampaign(organizationId: number, campaignId: number, updateOrganizationDataCampaignRequest: UpdateOrganizationDataCampaignRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update a data campaign dashboard
     * @summary Update data campaign dashboard
     * @param organizationId Organization ID
     * @param campaignDashboardId
     * @param updateOrganizationDataCampaignDashboardRequest
     */
    updateOrganizationDataCampaignDashboard(organizationId: number, campaignDashboardId: number, updateOrganizationDataCampaignDashboardRequest: UpdateOrganizationDataCampaignDashboardRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Used internally to upload a picture of a screenshot
     * @summary Upload a dashboard screenshot
     * @param organizationId Organization ID
     * @param campaignDashboardId
     * @param image
     */
    uploadDashboardScreenshot(organizationId: number, campaignDashboardId: number, params: uploadDashboardScreenshotFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OrganizationJobsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type cancelOrganizationJobQueryParams = {
    forceCancel?: string;
};
type downloadOrganizationJobsLogsQueryParams = {
    limit?: number;
    logLevel?: 'error' | 'warn' | 'info' | 'debug';
};
type getOrganizationJobsLogsQueryParams = {
    limit?: number;
    logLevel?: 'error' | 'warn' | 'info' | 'debug';
};
type listActiveOrganizationJobsQueryParams = {
    rootOnly?: boolean;
};
type listAllOrganizationJobsQueryParams = {
    startDate?: Date;
    endDate?: Date;
    limit?: number;
    offset?: number;
    excludePipelineTransformJobs?: boolean;
    rootOnly?: boolean;
    key?: string;
    category?: string;
    finished?: 'successful' | 'failed' | 'all';
};
type listFinishedOrganizationJobsQueryParams = {
    startDate?: Date;
    endDate?: Date;
    limit?: number;
    offset?: number;
    rootOnly?: boolean;
};
export type OrganizationJobsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OrganizationJobsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OrganizationJobsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OrganizationJobsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OrganizationJobsApiOpts);
    get opts(): OrganizationJobsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OrganizationJobsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Cancel a running job.
     * @summary Cancel job
     * @param organizationId Organization ID
     * @param jobId Job ID
     * @param forceCancel If set to \&#39;true\&#39;, we won\&#39;t wait for the job cluster to cancel the job, and will mark the job as finished.
     */
    cancelOrganizationJob(organizationId: number, jobId: number, queryParams?: cancelOrganizationJobQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Download the logs for a job (as a text file).
     * @summary Download logs
     * @param organizationId Organization ID
     * @param jobId Job ID
     * @param limit Maximum number of results
     * @param logLevel Log level (error, warn, info, debug)
     */
    downloadOrganizationJobsLogs(organizationId: number, jobId: number, queryParams?: downloadOrganizationJobsLogsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<string>;
    /**
     * Get the status for a job.
     * @summary Get job status
     * @param organizationId Organization ID
     * @param jobId Job ID
     */
    getOrganizationJobStatus(organizationId: number, jobId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetJobResponse>;
    /**
     * Get the logs for a job.
     * @summary Get logs
     * @param organizationId Organization ID
     * @param jobId Job ID
     * @param limit Maximum number of results
     * @param logLevel Log level (error, warn, info, debug)
     */
    getOrganizationJobsLogs(organizationId: number, jobId: number, queryParams?: getOrganizationJobsLogsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<LogStdoutResponse>;
    /**
     * Get a token to authenticate with the web socket interface.
     * @summary Get socket token for an organization
     * @param organizationId Organization ID
     */
    getOrganizationSocketToken(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<SocketTokenResponse>;
    /**
     * Get all active jobs for this organization
     * @summary List active jobs
     * @param organizationId Organization ID
     * @param rootOnly Whether to exclude jobs with a parent ID (so jobs started as part of another job)
     */
    listActiveOrganizationJobs(organizationId: number, queryParams?: listActiveOrganizationJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Get all jobs for this organization
     * @summary List all jobs
     * @param organizationId Organization ID
     * @param startDate Start date
     * @param endDate End date
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param excludePipelineTransformJobs Whether to exclude pipeline / transformation jobs
     * @param rootOnly Whether to exclude jobs with a parent ID (so jobs started as part of another job)
     * @param key Job key to filter on
     * @param category Job category to filter on
     * @param finished Job finish status to filter on
     */
    listAllOrganizationJobs(organizationId: number, queryParams?: listAllOrganizationJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Get all finished jobs for this organization
     * @summary List finished jobs
     * @param organizationId Organization ID
     * @param startDate Start date
     * @param endDate End date
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param rootOnly Whether to exclude jobs with a parent ID (so jobs started as part of another job)
     */
    listFinishedOrganizationJobs(organizationId: number, queryParams?: listFinishedOrganizationJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OrganizationPipelinesApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type listArchivedOrganizationPipelinesQueryParams = {
    projectId?: number;
};
type listOrganizationPipelinesQueryParams = {
    projectId?: number;
};
type runOrganizationPipelineQueryParams = {
    ignoreLastSuccessfulRun?: boolean;
};
export type OrganizationPipelinesApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OrganizationPipelinesApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OrganizationPipelinesApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OrganizationPipelinesApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OrganizationPipelinesApiOpts);
    get opts(): OrganizationPipelinesApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OrganizationPipelinesApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Create an organizational pipelines
     * @summary Create pipeline
     * @param organizationId Organization ID
     * @param organizationUpdatePipelineBody
     */
    createOrganizationPipeline(organizationId: number, organizationUpdatePipelineBody: OrganizationUpdatePipelineBody, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Delete an organizational pipelines
     * @summary Delete pipeline
     * @param organizationId Organization ID
     * @param pipelineId Pipeline ID
     */
    deleteOrganizationPipeline(organizationId: number, pipelineId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Retrieve an organizational pipelines
     * @summary Get pipeline
     * @param organizationId Organization ID
     * @param pipelineId Pipeline ID
     */
    getOrganizationPipeline(organizationId: number, pipelineId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationPipelinesResponse>;
    /**
     * Retrieve all archived organizational pipelines
     * @summary List archived pipelines
     * @param organizationId Organization ID
     * @param projectId If set, filters on pipelines which are attached to this project.
     */
    listArchivedOrganizationPipelines(organizationId: number, queryParams?: listArchivedOrganizationPipelinesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationPipelinesResponse>;
    /**
     * Retrieve all organizational pipelines
     * @summary List pipelines
     * @param organizationId Organization ID
     * @param projectId If set, filters on pipelines which are attached to this project.
     */
    listOrganizationPipelines(organizationId: number, queryParams?: listOrganizationPipelinesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationPipelinesResponse>;
    /**
     * Run an organizational pipeline
     * @summary Run pipeline
     * @param organizationId Organization ID
     * @param pipelineId Pipeline ID
     * @param ignoreLastSuccessfulRun If set then &#x60;EI_LAST_SUCCESSFUL_RUN&#x60; is not set. You can use this to re-run a pipeline from scratch.
     */
    runOrganizationPipeline(organizationId: number, pipelineId: number, queryParams?: runOrganizationPipelineQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<RunOrganizationPipelineResponse>;
    /**
     * Stops the pipeline, and marks it as failed.
     * @summary Stop a running pipeline
     * @param organizationId Organization ID
     * @param pipelineId Pipeline ID
     */
    stopOrganizationPipeline(organizationId: number, pipelineId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update an organizational pipelines
     * @summary Update pipeline
     * @param organizationId Organization ID
     * @param pipelineId Pipeline ID
     * @param organizationUpdatePipelineBody
     */
    updateOrganizationPipeline(organizationId: number, pipelineId: number, organizationUpdatePipelineBody: OrganizationUpdatePipelineBody, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OrganizationPortalsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type OrganizationPortalsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OrganizationPortalsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OrganizationPortalsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OrganizationPortalsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OrganizationPortalsApiOpts);
    get opts(): OrganizationPortalsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OrganizationPortalsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Creates a new upload portal for the organization.
     * @summary Create upload portal
     * @param organizationId Organization ID
     * @param createOrganizationPortalRequest
     */
    createOrganizationPortal(organizationId: number, createOrganizationPortalRequest: CreateOrganizationPortalRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateOrganizationPortalResponse>;
    /**
     * Deletes an upload portal for the organization.
     * @summary Delete upload portal
     * @param organizationId Organization ID
     * @param portalId Portal ID
     */
    deleteOrganizationPortal(organizationId: number, portalId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Retrieve a single upload portals identified by ID.
     * @summary Retrieve upload portal information
     * @param organizationId Organization ID
     * @param portalId Portal ID
     */
    getOrganizationPortal(organizationId: number, portalId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationPortalResponse>;
    /**
     * Retrieve all configured upload portals.
     * @summary List upload portals
     * @param organizationId Organization ID
     */
    listOrganizationPortals(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationPortalsResponse>;
    /**
     * Rotates the token for an upload portal.
     * @summary Rotate upload portal token
     * @param organizationId Organization ID
     * @param portalId Portal ID
     */
    rotateOrganizationPortalToken(organizationId: number, portalId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Updates an upload portal for the organization.
     * @summary Update upload portal
     * @param organizationId Organization ID
     * @param portalId Portal ID
     * @param createOrganizationPortalRequest
     */
    updateOrganizationPortal(organizationId: number, portalId: number, createOrganizationPortalRequest: CreateOrganizationPortalRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UpdateOrganizationPortalResponse>;
    /**
     * Retrieve a subset of files from the portal, to be used in the data source wizard.
     * @summary Verify upload portal information
     * @param organizationId Organization ID
     * @param portalId Portal ID
     */
    verifyOrganizationPortal(organizationId: number, portalId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VerifyOrganizationBucketResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum OrganizationsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type getOrganizationDataExportsQueryParams = {
    limit?: number;
    offset?: number;
};
type getOrganizationMetricsQueryParams = {
    excludeEdgeImpulseUsers?: boolean;
    projectVisibility?: ProjectVisibility;
};
export type uploadOrganizationHeaderFormParams = {
    image?: RequestFile;
};
export type uploadOrganizationLogoFormParams = {
    image?: RequestFile;
};
export type uploadOrganizationReadmeImageFormParams = {
    image: RequestFile;
};
type whitelabelAdminCreateOrganizationUsageReportQueryParams = {
    startDate: Date;
    endDate: Date;
};
type whitelabelAdminGetOrganizationComputeTimeUsageQueryParams = {
    startDate: Date;
    endDate: Date;
};
type whitelabelAdminGetOrganizationExportsQueryParams = {
    limit?: number;
    offset?: number;
};
type whitelabelAdminGetOrganizationInfoQueryParams = {
    includeDeleted?: boolean;
};
type whitelabelAdminGetOrganizationJobsQueryParams = {
    limit?: number;
    offset?: number;
};
type whitelabelAdminGetOrganizationUsageReportsQueryParams = {
    limit?: number;
    offset?: number;
};
type whitelabelAdminGetOrganizationsQueryParams = {
    active?: number;
    includeDeleted?: boolean;
    sort?: string;
    filters?: string;
    limit?: number;
    offset?: number;
    search?: string;
};
type whitelabelAdminGetProjectJobsQueryParams = {
    limit?: number;
    offset?: number;
};
type whitelabelAdminGetProjectsQueryParams = {
    active?: number;
    sort?: string;
    filters?: string;
    limit?: number;
    offset?: number;
    search?: string;
};
type whitelabelAdminGetUserJobsQueryParams = {
    limit?: number;
    offset?: number;
};
type whitelabelAdminGetUsersQueryParams = {
    active?: number;
    tier?: UserTierEnum;
    fields?: string;
    sort?: string;
    filters?: string;
    limit?: number;
    offset?: number;
    search?: string;
};
export type whitelabelAdminUpdateDevelopmentBoardImageFormParams = {
    image?: RequestFile;
};
export type whitelabelAdminUpdateThemeDeviceLogoFormParams = {
    image?: RequestFile;
};
export type whitelabelAdminUpdateThemeFaviconFormParams = {
    image: RequestFile;
};
export type whitelabelAdminUpdateThemeLogoFormParams = {
    image?: RequestFile;
};
export type OrganizationsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class OrganizationsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: OrganizationsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: OrganizationsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: OrganizationsApiOpts);
    get opts(): OrganizationsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: OrganizationsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Add an API key.
     * @summary Add API key
     * @param organizationId Organization ID
     * @param addOrganizationApiKeyRequest
     */
    addOrganizationApiKey(organizationId: number, addOrganizationApiKeyRequest: AddOrganizationApiKeyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AddApiKeyResponse>;
    /**
     * Add a member to an organization.
     * @summary Add member
     * @param organizationId Organization ID
     * @param addMemberRequest
     */
    addOrganizationMember(organizationId: number, addMemberRequest: AddMemberRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * WIP
     * @summary Create multi-project deployment
     * @param organizationId Organization ID
     * @param createMultiProjectDeploymentRequest
     */
    createMultiProjectDeployment(organizationId: number, createMultiProjectDeploymentRequest: CreateMultiProjectDeploymentRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Create a new organization. This is an internal API.
     * @summary Create new organization
     * @param createOrganizationRequest
     */
    createOrganization(createOrganizationRequest: CreateOrganizationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateOrganizationResponse>;
    /**
     * Remove the current organization, and all data associated with it. This is irrevocable!
     * @summary Remove organization
     * @param organizationId Organization ID
     */
    deleteOrganization(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * WIP
     * @summary Download multi-project deployment
     * @param organizationId Organization ID
     * @param jobId Job ID
     */
    downloadMultiProjectDeployment(organizationId: number, jobId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download a data export for an organization.
     * @summary Download organization data export
     * @param organizationId Organization ID
     * @param exportId Export ID
     */
    downloadOrganizationDataExport(organizationId: number, exportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<any>;
    /**
     * Get a data export for an organization.
     * @summary Get organization data export
     * @param organizationId Organization ID
     * @param exportId Export ID
     */
    getOrganizationDataExport(organizationId: number, exportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataExportResponse>;
    /**
     * Get all data exports for an organization.
     * @summary Get all organization data exports
     * @param organizationId Organization ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    getOrganizationDataExports(organizationId: number, queryParams?: getOrganizationDataExportsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataExportsResponse>;
    /**
     * List all information about this organization.
     * @summary Organization information
     * @param organizationId Organization ID
     */
    getOrganizationInfo(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OrganizationInfoResponse>;
    /**
     * Get general metrics for this organization.
     * @summary Organization metrics
     * @param organizationId Organization ID
     * @param excludeEdgeImpulseUsers Whether to exclude Edge Impulse users when counting enterprise entitlements usage
     * @param projectVisibility What project visibility type to include when counting enterprise entitlements usage
     */
    getOrganizationMetrics(organizationId: number, queryParams?: getOrganizationMetricsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<OrganizationMetricsResponse>;
    /**
     * Invite a member to an organization.
     * @summary Invite member
     * @param organizationId Organization ID
     * @param inviteOrganizationMemberRequest
     */
    inviteOrganizationMember(organizationId: number, inviteOrganizationMemberRequest: InviteOrganizationMemberRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Retrieve all API keys. This does **not** return the full API key, but only a portion (for security purposes).
     * @summary Get API keys
     * @param organizationId Organization ID
     */
    listOrganizationApiKeys(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationApiKeysResponse>;
    /**
     * Retrieve all projects for the organization.
     * @summary Get projects
     * @param organizationId Organization ID
     */
    listOrganizationProjects(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListProjectsResponse>;
    /**
     * Retrieve list of organizations that a user is a part of. If authenticating using JWT token this lists all the organizations the user has access to, if authenticating using an API key, this only lists that organization.
     * @summary List active organizations
     */
    listOrganizations(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationsResponse>;
    /**
     * Remove a member from an organization. Note that you cannot invoke this function if only a single member is present to the organization.
     * @summary Remove member
     * @param organizationId Organization ID
     * @param removeMemberRequest
     */
    removeOrganizationMember(organizationId: number, removeMemberRequest: RemoveMemberRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Request a license required for the deployment of an impulse containing the Edge Impulse HR block.
     * @summary Request HR block license
     * @param organizationId Organization ID
     */
    requestEnterpriseHrBlockLicense(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Request an increase in the limits for this organization. Available limits are: users, projects, compute, storage.
     * @summary Request organization limits increase
     * @param organizationId Organization ID
     * @param enterpriseLimitsIncreaseRequest
     */
    requestEnterpriseLimitsIncrease(organizationId: number, enterpriseLimitsIncreaseRequest: EnterpriseLimitsIncreaseRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Request an extension for an enterprise trial.
     * @summary Request trial extension
     * @param organizationId Organization ID
     * @param enterpriseUpgradeOrTrialExtensionRequest
     */
    requestEnterpriseTrialExtension(organizationId: number, enterpriseUpgradeOrTrialExtensionRequest: EnterpriseUpgradeOrTrialExtensionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Resend an invitation to a member in an organization.
     * @summary Resend invitation
     * @param organizationId Organization ID
     * @param memberId Member ID
     */
    resendOrganizationMemberInvite(organizationId: number, memberId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Revoke an API key.
     * @summary Revoke API key
     * @param organizationId Organization ID
     * @param apiKeyId API key ID
     */
    revokeOrganizationApiKey(organizationId: number, apiKeyId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Set the datasets a guest member has access to in an organization.
     * @summary Set member datasets
     * @param organizationId Organization ID
     * @param memberId Member ID
     * @param setMemberDatasetsRequest
     */
    setOrganizationMemberDatasets(organizationId: number, memberId: number, setMemberDatasetsRequest: SetMemberDatasetsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Change the role of a member in an organization.
     * @summary Set member role
     * @param organizationId Organization ID
     * @param memberId Member ID
     * @param setMemberRoleRequest
     */
    setOrganizationMemberRole(organizationId: number, memberId: number, setMemberRoleRequest: SetMemberRoleRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Test endpoint that can only be reached with admin rights.
     * @summary Admin endpoint
     * @param organizationId Organization ID
     */
    testOrganizationAdmin(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update organization properties such as name and logo.
     * @summary Update organization
     * @param organizationId Organization ID
     * @param updateOrganizationRequest
     */
    updateOrganization(organizationId: number, updateOrganizationRequest: UpdateOrganizationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Uploads and updates the organization header image
     * @summary Upload organization header image
     * @param organizationId Organization ID
     * @param image
     */
    uploadOrganizationHeader(organizationId: number, params: uploadOrganizationHeaderFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadAssetResponse>;
    /**
     * Uploads and updates the organization logo
     * @summary Upload organization logo
     * @param organizationId Organization ID
     * @param image
     */
    uploadOrganizationLogo(organizationId: number, params: uploadOrganizationLogoFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadAssetResponse>;
    /**
     * Uploads an image to the user CDN and returns the path.
     * @summary Upload image for readme
     * @param organizationId Organization ID
     * @param image
     */
    uploadOrganizationReadmeImage(organizationId: number, params: uploadOrganizationReadmeImageFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadReadmeImageResponse>;
    /**
     * White label admin only API to add a development board.
     * @summary White Label Admin - Add a development board to a whitelabel
     * @param organizationId Organization ID
     * @param developmentBoardRequest
     */
    whitelabelAdminAddDevelopmentBoard(organizationId: number, developmentBoardRequest: DevelopmentBoardRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * White label admin only API to add an API key to an organization. Add a temporary API key that can be used to make Organizations API (/api/organizations/{organizationId}/) requests on behalf of the organization. These API keys are not visible to the organization itself and have a customizable TTL defaulting to 1 minute.
     * @summary White Label Admin - Add organization API key
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param adminAddOrganizationApiKeyRequest
     */
    whitelabelAdminAddOrganizationApiKey(organizationId: number, innerOrganizationId: number, adminAddOrganizationApiKeyRequest: AdminAddOrganizationApiKeyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AddApiKeyResponse>;
    /**
     * White label admin only API to add an API key to a project. Add a temporary API key that can be used to make Projects API (/api/projects/{projectId}/) requests on behalf of the project admin. These API keys are not visible to the project itself and have a customizable TTL defaulting to 1 minute.
     * @summary White Label Admin - Add Project API key
     * @param organizationId Organization ID
     * @param projectId Project ID
     * @param adminAddProjectApiKeyRequest
     */
    whitelabelAdminAddProjectApiKey(organizationId: number, projectId: number, adminAddProjectApiKeyRequest: AdminAddProjectApiKeyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AddApiKeyResponse>;
    /**
     * DEPRECATED. White label admin only API to add a user to an organization. If no user is provided, the current user is used.
     * @summary White Label Admin - Add user to an organization
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param adminAddOrganizationUserRequest
     */
    whitelabelAdminAddUserToOrganization(organizationId: number, innerOrganizationId: number, adminAddOrganizationUserRequest: AdminAddOrganizationUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * DEPRECATED. White label admin only API to add a user to a project. If no user is provided, the current user is used.
     * @summary White Label Admin - Add user to a project
     * @param organizationId Organization ID
     * @param projectId Project ID
     * @param adminAddProjectUserRequest
     */
    whitelabelAdminAddUserToProject(organizationId: number, projectId: number, adminAddProjectUserRequest: AdminAddProjectUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Create a new organization. This is an API only available to white label admins
     * @summary White Label Admin - Create new organization within white label context
     * @param organizationId Organization ID
     * @param whitelabelAdminCreateOrganizationRequest
     */
    whitelabelAdminCreateOrganization(organizationId: number, whitelabelAdminCreateOrganizationRequest: WhitelabelAdminCreateOrganizationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateOrganizationResponse>;
    /**
     * Create a new data export for an organization. A job is created to process the export request and the job details are returned in the response. This is an API only available to white label admins.
     * @summary White Label Admin - Create a new organization data export
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param adminCreateOrganizationDataExportRequest
     */
    whitelabelAdminCreateOrganizationExport(organizationId: number, innerOrganizationId: number, adminCreateOrganizationDataExportRequest: AdminCreateOrganizationDataExportRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * White label admin only API to create a new project for an organization.
     * @summary White Label Admin - Create a new organization project
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param adminCreateProjectRequest
     */
    whitelabelAdminCreateOrganizationProject(organizationId: number, innerOrganizationId: number, adminCreateProjectRequest: AdminCreateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateProjectResponse>;
    /**
     * Create a new usage report for an organization. A job is created to process the report request and the job details are returned in the response. This is an API only available to white label admins.
     * @summary White Label Admin - Creates a new usage report
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param startDate Start date
     * @param endDate End date
     */
    whitelabelAdminCreateOrganizationUsageReport(organizationId: number, innerOrganizationId: number, queryParams: whitelabelAdminCreateOrganizationUsageReportQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Create a new free tier project. This is an API only available to white label admins.
     * @summary White Label Admin - Create a new project within white label context.
     * @param organizationId Organization ID
     * @param adminCreateProjectRequest
     */
    whitelabelAdminCreateProject(organizationId: number, adminCreateProjectRequest: AdminCreateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateProjectResponse>;
    /**
     * White label admin only API to delete an organization.
     * @summary White Label Admin - Delete an organization
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     */
    whitelabelAdminDeleteOrganization(organizationId: number, innerOrganizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * Delete a data export for an organization. This is an API only available to white label admins.
     * @summary White Label Admin - Delete organization data export
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param exportId Export ID
     */
    whitelabelAdminDeleteOrganizationExport(organizationId: number, innerOrganizationId: number, exportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete a usage report for an organization. This is an API only available to white label admins.
     * @summary White Label Admin - Delete usage report
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param reportId Report ID
     */
    whitelabelAdminDeleteOrganizationUsageReport(organizationId: number, innerOrganizationId: number, reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to delete a project.
     * @summary White Label Admin - Delete a project
     * @param organizationId Organization ID
     * @param projectId Project ID
     */
    whitelabelAdminDeleteProject(organizationId: number, projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartJobResponse>;
    /**
     * White label admin only API to delete a user.
     * @summary Delete a user
     * @param organizationId Organization ID
     * @param userId User ID
     */
    whitelabelAdminDeleteUser(organizationId: number, userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Download a usage report for an organization. This is an API only available to white label admins.
     * @summary White Label Admin - Download usage report
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param reportId Report ID
     */
    whitelabelAdminDownloadOrganizationUsageReport(organizationId: number, innerOrganizationId: number, reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<any>;
    /**
     * White label admin only API to get the white label information.
     * @summary White Label Admin - Get white label information
     * @param organizationId Organization ID
     */
    whitelabelAdminGetInfo(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetWhitelabelResponse>;
    /**
     * White label admin only API to get global metrics.
     * @summary White Label Admin - Get global white label metrics
     * @param organizationId Organization ID
     */
    whitelabelAdminGetMetrics(organizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetMetricsResponse>;
    /**
     * Get compute time usage for an organization over a period of time. This is an API only available to white label admins
     * @summary White Label Admin - Get organization compute time usage
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param startDate Start date
     * @param endDate End date
     */
    whitelabelAdminGetOrganizationComputeTimeUsage(organizationId: number, innerOrganizationId: number, queryParams: whitelabelAdminGetOrganizationComputeTimeUsageQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetOrganizationComputeTimeUsageResponse>;
    /**
     * Get a data export for an organization. This is an API only available to white label admins.
     * @summary White Label Admin - Get organization data export
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param exportId Export ID
     */
    whitelabelAdminGetOrganizationExport(organizationId: number, innerOrganizationId: number, exportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataExportResponse>;
    /**
     * Get all data exports for an organization. This is an API only available to white label admins.
     * @summary White Label Admin - Get all organization data exports
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    whitelabelAdminGetOrganizationExports(organizationId: number, innerOrganizationId: number, queryParams?: whitelabelAdminGetOrganizationExportsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetOrganizationDataExportsResponse>;
    /**
     * White label admin only API to list all information about an organization.
     * @summary White Label Admin - Get organization information
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param includeDeleted Whether to include deleted entities (users, projects, orgs)
     */
    whitelabelAdminGetOrganizationInfo(organizationId: number, innerOrganizationId: number, queryParams?: whitelabelAdminGetOrganizationInfoQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminOrganizationInfoResponse>;
    /**
     * White label admin only API to get the list of all jobs for a organization.
     * @summary White Label Admin - Get organization jobs
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    whitelabelAdminGetOrganizationJobs(organizationId: number, innerOrganizationId: number, queryParams?: whitelabelAdminGetOrganizationJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * Get a usage report for an organization. This is an API only available to white label admins.
     * @summary White Label Admin - Get usage report
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param reportId Report ID
     */
    whitelabelAdminGetOrganizationUsageReport(organizationId: number, innerOrganizationId: number, reportId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetReportResponse>;
    /**
     * Get all usage reports for an organization. This is an API only available to white label admins.
     * @summary White Label Admin - Get all usage reports
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    whitelabelAdminGetOrganizationUsageReports(organizationId: number, innerOrganizationId: number, queryParams?: whitelabelAdminGetOrganizationUsageReportsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetReportsResponse>;
    /**
     * White label admin only API to get the list of all organizations.
     * @summary White Label Admin - Get all organizations within a white label
     * @param organizationId Organization ID
     * @param active Whether to search for entities (users, orgs) active in the last X days
     * @param includeDeleted Whether to include deleted entities (users, projects, orgs)
     * @param sort Fields and order to sort query by
     * @param filters
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     */
    whitelabelAdminGetOrganizations(organizationId: number, queryParams?: whitelabelAdminGetOrganizationsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetOrganizationsResponse>;
    /**
     * White label admin only API to get project information.
     * @summary White Label Admin - Get a white label project
     * @param organizationId Organization ID
     * @param projectId Project ID
     */
    whitelabelAdminGetProject(organizationId: number, projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminProjectInfoResponse>;
    /**
     * White label admin only API to get the list of all jobs for a project.
     * @summary White Label Admin - Get project jobs
     * @param organizationId Organization ID
     * @param projectId Project ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    whitelabelAdminGetProjectJobs(organizationId: number, projectId: number, queryParams?: whitelabelAdminGetProjectJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * White label admin only API to get the list of all projects.
     * @summary White Label Admin - Get all white label projects
     * @param organizationId Organization ID
     * @param active Whether to search for entities (users, orgs) active in the last X days
     * @param sort Fields and order to sort query by
     * @param filters
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     */
    whitelabelAdminGetProjects(organizationId: number, queryParams?: whitelabelAdminGetProjectsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminListProjectsResponse>;
    /**
     * White label admin only API to get information about a user.
     * @summary White Label Admin - Get a white label user
     * @param organizationId Organization ID
     * @param userId User ID
     */
    whitelabelAdminGetUser(organizationId: number, userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetUserResponse>;
    /**
     * White label admin only  API to get the list of all project jobs for a user.
     * @summary White Label Admin - Get user jobs
     * @param organizationId Organization ID
     * @param userId User ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    whitelabelAdminGetUserJobs(organizationId: number, userId: number, queryParams?: whitelabelAdminGetUserJobsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListJobsResponse>;
    /**
     * White label admin only API to get marketing metrics about a user.
     * @summary White Label Admin - Get white label user metrics
     * @param organizationId Organization ID
     * @param userId User ID
     */
    whitelabelAdminGetUserMetrics(organizationId: number, userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetUserMetricsResponse>;
    /**
     * White label admin only API to get the list of all registered users.
     * @summary White Label Admin - Get all white label users
     * @param organizationId Organization ID
     * @param active Whether to search for entities (users, orgs) active in the last X days
     * @param tier Whether to search for free, community plus, professional, or enterprise entities (users, projects)
     * @param fields Comma separated list of fields to fetch in a query
     * @param sort Fields and order to sort query by
     * @param filters
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param search Search query
     */
    whitelabelAdminGetUsers(organizationId: number, queryParams?: whitelabelAdminGetUsersQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AdminGetUsersResponse>;
    /**
     * White label admin only API to remove a development board.
     * @summary White Label Admin - Remove a development board from a whitelabel
     * @param organizationId Organization ID
     * @param developmentBoardId Development board ID.
     */
    whitelabelAdminRemoveDevelopmentBoard(organizationId: number, developmentBoardId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * DEPRECATED. White label admin only API to remove a user from an organization.
     * @summary White Label Admin - Remove user from an organization
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param userId User ID
     */
    whitelabelAdminRemoveUserFromOrganization(organizationId: number, innerOrganizationId: number, userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * DEPRECATED. White label admin only API to remove a user from a project.
     * @summary White Label Admin - Remove user from a project
     * @param organizationId Organization ID
     * @param projectId Project ID
     * @param userId User ID
     */
    whitelabelAdminRemoveUserFromProject(organizationId: number, projectId: number, userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to restore a deleted organization. All organization projects sharing the same deletion date as that of the organization will also be restored. If this is a trial organization that was never upgraded to a paid plan then the organization will be restored to its original trial state.
     * @summary White Label Admin - Restore an organization
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     */
    whitelabelAdminRestoreOrganization(organizationId: number, innerOrganizationId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update the default deployment target for this white label.
     * @summary White Label Admin - Update default deployment target
     * @param organizationId Organization ID
     * @param updateWhitelabelDefaultDeploymentTargetRequest
     */
    whitelabelAdminUpdateDefaultDeploymentTarget(organizationId: number, updateWhitelabelDefaultDeploymentTargetRequest: UpdateWhitelabelDefaultDeploymentTargetRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to customize the order of deployment options in the deployment view for this white label.
     * @summary White Label Admin - Update the order of deployment options in the deployment view
     * @param organizationId Organization ID
     * @param updateWhitelabelDeploymentOptionsOrderRequest
     */
    whitelabelAdminUpdateDeploymentOptionsOrder(organizationId: number, updateWhitelabelDeploymentOptionsOrderRequest: UpdateWhitelabelDeploymentOptionsOrderRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update some or all of the deployment targets enabled for this white label.
     * @summary White Label Admin - Update deployment targets
     * @param organizationId Organization ID
     * @param updateWhitelabelDeploymentTargetsRequest
     */
    whitelabelAdminUpdateDeploymentTargets(organizationId: number, updateWhitelabelDeploymentTargetsRequest: UpdateWhitelabelDeploymentTargetsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update a development board.
     * @summary White Label Admin - Update a development board in a whitelabel
     * @param organizationId Organization ID
     * @param developmentBoardId Development board ID.
     * @param developmentBoardRequestUpdate
     */
    whitelabelAdminUpdateDevelopmentBoard(organizationId: number, developmentBoardId: number, developmentBoardRequestUpdate: DevelopmentBoardRequestUpdate, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update the image of a development board.
     * @summary White Label Admin - Update the image of a whitelabel development board
     * @param organizationId Organization ID
     * @param developmentBoardId Development board ID.
     * @param image
     */
    whitelabelAdminUpdateDevelopmentBoardImage(organizationId: number, developmentBoardId: number, params: whitelabelAdminUpdateDevelopmentBoardImageFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadAssetResponse>;
    /**
     * White label admin only API to update the white label information.
     * @summary White Label Admin - Update white label information
     * @param organizationId Organization ID
     * @param updateWhitelabelRequest
     */
    whitelabelAdminUpdateInfo(organizationId: number, updateWhitelabelRequest: UpdateWhitelabelRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update some or all of the learning blocks enabled for this white label.
     * @summary White Label Admin - Update learning blocks
     * @param organizationId Organization ID
     * @param updateWhitelabelLearningBlocksRequest
     */
    whitelabelAdminUpdateLearningBlocks(organizationId: number, updateWhitelabelLearningBlocksRequest: UpdateWhitelabelLearningBlocksRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update organization properties such as name and logo.
     * @summary White Label Admin - Update organization
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param adminUpdateOrganizationRequest
     */
    whitelabelAdminUpdateOrganization(organizationId: number, innerOrganizationId: number, adminUpdateOrganizationRequest: AdminUpdateOrganizationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update a data export for an organization. This is an API only available to white label admins.
     * @summary White Label Admin - Update organization data export
     * @param organizationId Organization ID
     * @param innerOrganizationId Organization ID within the context of a white label
     * @param exportId Export ID
     * @param adminUpdateOrganizationDataExportRequest
     */
    whitelabelAdminUpdateOrganizationExport(organizationId: number, innerOrganizationId: number, exportId: number, adminUpdateOrganizationDataExportRequest: AdminUpdateOrganizationDataExportRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update project properties.
     * @summary White Label Admin - Update white label project
     * @param organizationId Organization ID
     * @param projectId Project ID
     * @param updateProjectRequest
     */
    whitelabelAdminUpdateProject(organizationId: number, projectId: number, updateProjectRequest: UpdateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update some or all theme colors.
     * @summary White Label Admin - Update theme colors
     * @param organizationId Organization ID
     * @param updateThemeColorsRequest
     */
    whitelabelAdminUpdateThemeColors(organizationId: number, updateThemeColorsRequest: UpdateThemeColorsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update the white label theme device logo.
     * @summary White Label Admin - Update theme device logo
     * @param organizationId Organization ID
     * @param image
     */
    whitelabelAdminUpdateThemeDeviceLogo(organizationId: number, params: whitelabelAdminUpdateThemeDeviceLogoFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadAssetResponse>;
    /**
     * White label admin only API to update the theme favicon.
     * @summary White Label Admin - Update theme favicon
     * @param organizationId Organization ID
     * @param image
     */
    whitelabelAdminUpdateThemeFavicon(organizationId: number, params: whitelabelAdminUpdateThemeFaviconFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * White label admin only API to update the white label theme logo.
     * @summary White Label Admin - Update theme logo
     * @param organizationId Organization ID
     * @param image
     */
    whitelabelAdminUpdateThemeLogo(organizationId: number, params: whitelabelAdminUpdateThemeLogoFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadAssetResponse>;
    /**
     * White label admin only API to update user properties.
     * @summary White Label Admin - Update white label user
     * @param organizationId Organization ID
     * @param userId User ID
     * @param adminUpdateUserRequest
     */
    whitelabelAdminUpdateUser(organizationId: number, userId: number, adminUpdateUserRequest: AdminUpdateUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum PerformanceCalibrationApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type clearPerformanceCalibrationStateQueryParams = {
    impulseId?: number;
};
type deletePerformanceCalibrationSavedParametersQueryParams = {
    impulseId?: number;
};
type getPerformanceCalibrationGroundTruthQueryParams = {
    impulseId?: number;
};
type getPerformanceCalibrationParameterSetsQueryParams = {
    impulseId?: number;
};
type getPerformanceCalibrationRawResultQueryParams = {
    impulseId?: number;
};
type getPerformanceCalibrationSavedParametersQueryParams = {
    impulseId?: number;
};
type getPerformanceCalibrationStatusQueryParams = {
    impulseId?: number;
};
type getPostProcessingResultsQueryParams = {
    impulseId?: number;
};
type getWavFileQueryParams = {
    impulseId?: number;
};
type setPerformanceCalibrationSavedParametersQueryParams = {
    impulseId?: number;
};
export type uploadLabeledAudioFormParams = {
    zip: RequestFile;
};
type uploadLabeledAudioQueryParams = {
    impulseId?: number;
};
export type PerformanceCalibrationApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class PerformanceCalibrationApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: PerformanceCalibrationApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: PerformanceCalibrationApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: PerformanceCalibrationApiOpts);
    get opts(): PerformanceCalibrationApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: PerformanceCalibrationApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Deletes all state related to performance calibration (used in tests for example).
     * @summary Clear Performance Calibration state
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    clearPerformanceCalibrationState(projectId: number, queryParams?: clearPerformanceCalibrationStateQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Clears the current performance calibration parameters
     * @summary Clear performance calibration parameters
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    deletePerformanceCalibrationSavedParameters(projectId: number, queryParams?: deletePerformanceCalibrationSavedParametersQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get performance calibration ground truth data
     * @summary Get ground truth
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getPerformanceCalibrationGroundTruth(projectId: number, queryParams?: getPerformanceCalibrationGroundTruthQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPerformanceCalibrationGroundTruthResponse>;
    /**
     * Get performance calibration parameter sets
     * @summary Get parameter sets
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getPerformanceCalibrationParameterSets(projectId: number, queryParams?: getPerformanceCalibrationParameterSetsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPerformanceCalibrationParameterSetsResponse>;
    /**
     * Get performance calibration raw result
     * @summary Get raw result
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getPerformanceCalibrationRawResult(projectId: number, queryParams?: getPerformanceCalibrationRawResultQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPerformanceCalibrationRawResultResponse>;
    /**
     * Get performance calibration stored parameters
     * @summary Get parameters
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getPerformanceCalibrationSavedParameters(projectId: number, queryParams?: getPerformanceCalibrationSavedParametersQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPerformanceCalibrationParametersResponse>;
    /**
     * Get performance calibration status
     * @summary Get status
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getPerformanceCalibrationStatus(projectId: number, queryParams?: getPerformanceCalibrationStatusQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPerformanceCalibrationStatusResponse>;
    /**
     * Internal endpoint, API is subject to change. Get results of most recent post processing run.
     * @summary Get post processing results
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getPostProcessingResults(projectId: number, queryParams?: getPostProcessingResultsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPostProcessingResultsResponse>;
    /**
     * Get the synthetic sample as a WAV file
     * @summary Get WAV file
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getWavFile(projectId: number, queryParams?: getWavFileQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Set the current performance calibration parameters
     * @summary Save performance calibration parameters
     * @param projectId Project ID
     * @param performanceCalibrationSaveParameterSetRequest
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    setPerformanceCalibrationSavedParameters(projectId: number, performanceCalibrationSaveParameterSetRequest: PerformanceCalibrationSaveParameterSetRequest, queryParams?: setPerformanceCalibrationSavedParametersQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Upload a zip files with a wav file and its Label metadata to run performance calibration on it.
     * @summary Upload Performance Calibration Audio files
     * @param projectId Project ID
     * @param zip
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    uploadLabeledAudio(projectId: number, params: uploadLabeledAudioFormParams, queryParams?: uploadLabeledAudioQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<PerformanceCalibrationUploadLabeledAudioResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum PostProcessingApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type getFeaturesForPostProcessingSampleQueryParams = {
    frameIndex: number;
};
export type PostProcessingApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class PostProcessingApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: PostProcessingApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: PostProcessingApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: PostProcessingApiOpts);
    get opts(): PostProcessingApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: PostProcessingApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Classify a sample using post-processing parameters. Sample should be in the post-processing dataset.
     * @summary Classify sample with post-processing
     * @param projectId Project ID
     * @param postProcessingId Post-processing Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     * @param postProcessingFeaturesForSampleRequest
     */
    generatePostProcessingFeaturesForSample(projectId: number, postProcessingId: number, sampleId: number, postProcessingFeaturesForSampleRequest: PostProcessingFeaturesForSampleRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPostProcessingFeaturesForSampleResponse | StartJobResponse>;
    /**
     * Internal route for tests: Get features (after DSP block) of a sample that was already classified using post-processing.
     * @summary Get features for post-processing sample
     * @param projectId Project ID
     * @param postProcessingId Post-processing Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     * @param frameIndex Frame number
     */
    getFeaturesForPostProcessingSample(projectId: number, postProcessingId: number, sampleId: number, queryParams: getFeaturesForPostProcessingSampleQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetFeaturesForPostProcessingSampleResponse>;
    /**
     * Retrieve the configuration parameters for a post-processing block. Use the impulse functions to retrieve all post-processing blocks.
     * @summary Get post-processing block config
     * @param projectId Project ID
     * @param postProcessingId Post-processing Block ID, use the impulse functions to retrieve the ID
     */
    getPostProcessingConfig(projectId: number, postProcessingId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<PostProcessingConfigResponse>;
    /**
     * Retrieve post-processing results for a specific sample, e.g. whether it has generated features already.
     * @summary Check post-processing results for sample
     * @param projectId Project ID
     * @param postProcessingId Post-processing Block ID, use the impulse functions to retrieve the ID
     * @param sampleId Sample ID
     * @param postProcessingFeaturesForSampleRequest
     */
    getPostProcessingResultsForSample(projectId: number, postProcessingId: number, sampleId: number, postProcessingFeaturesForSampleRequest: PostProcessingFeaturesForSampleRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetPostProcessingResultsForSampleResponse>;
    /**
     * Set configuration parameters for a post-processing block. Only values set in the body will be overwritten.
     * @summary Set post-processing block config
     * @param projectId Project ID
     * @param postProcessingId Post-processing Block ID, use the impulse functions to retrieve the ID
     * @param postProcessingConfigRequest
     */
    setPostProcessingConfig(projectId: number, postProcessingId: number, postProcessingConfigRequest: PostProcessingConfigRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum ProjectsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type convertParquetToCsvFormParams = {
    file: RequestFile;
};
type getModelVariantsQueryParams = {
    impulseId?: number;
};
type getProjectDataAxesSummaryQueryParams = {
    includeDisabled?: boolean;
    includeNotProcessed?: boolean;
};
type getProjectInfoQueryParams = {
    impulseId?: number;
};
type getProjectTrainingDataSummaryQueryParams = {
    includeDisabled?: boolean;
    includeNotProcessed?: boolean;
};
type listDownloadsQueryParams = {
    impulseId?: number;
};
type listPublicProjectsQueryParams = {
    limit?: number;
    offset?: number;
    project?: string;
    projectTypes?: string;
    sort?: string;
};
export type uploadCsvWizardUploadedFileFormParams = {
    file: RequestFile;
};
export type uploadReadmeImageFormParams = {
    image: RequestFile;
};
export type ProjectsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class ProjectsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: ProjectsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: ProjectsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: ProjectsApiOpts);
    get opts(): ProjectsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: ProjectsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Add a collaborator to a project.
     * @summary Add collaborator
     * @param projectId Project ID
     * @param addCollaboratorRequest
     */
    addCollaborator(projectId: number, addCollaboratorRequest: AddCollaboratorRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Add an API key. If you set `developmentKey` to `true` this flag will be removed from the current development API key. For OAuth-based third-party integrations, prefer `/api/{projectId}/apikeys/ingestiononly`.
     * @summary Add API key
     * @param projectId Project ID
     * @param addProjectApiKeyRequest
     */
    addProjectApiKey(projectId: number, addProjectApiKeyRequest: AddProjectApiKeyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AddApiKeyResponse>;
    /**
     * Add an HMAC key. If you set `developmentKey` to `true` this flag will be removed from the current development HMAC key.
     * @summary Add HMAC key
     * @param projectId Project ID
     * @param addHmacKeyRequest
     */
    addProjectHmacKey(projectId: number, addHmacKeyRequest: AddHmacKeyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Add an ingestion-only API key.
     * @summary Add ingestion-only API key
     * @param projectId Project ID
     * @param addIngestionOnlyProjectApiKeyRequest
     */
    addProjectIngestionOnlyApiKey(projectId: number, addIngestionOnlyProjectApiKeyRequest: AddIngestionOnlyProjectApiKeyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<AddApiKeyResponse>;
    /**
     * Remove all proposed changes for an AI Actions job.
     * @summary Clear AI Actions proposed changes
     * @param projectId Project ID
     * @param actionId AI Action ID
     */
    clearAIActionsProposedChanges(projectId: number, actionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Takes in a Parquet file and spits out the first few thousand lines of a corresponding CSV file. This is a helper function in the CSV wizard UI.
     * @summary Convert Parquet file to CSV
     * @param projectId Project ID
     * @param file
     */
    convertParquetToCsv(projectId: number, params: convertParquetToCsvFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ConvertParquetToCsvResponse>;
    /**
     * Create a new AI Action.
     * @summary Create AI Action
     * @param projectId Project ID
     */
    createAIAction(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<EntityCreatedResponse>;
    /**
     * Create a new project. By default this endpoint creates and returns a project API key. When authenticated via OAuth, API key creation and API key return in the response are disabled.
     * @summary Create new project
     * @param createProjectRequest
     */
    createProject(createProjectRequest: CreateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateProjectResponse>;
    /**
     * Deletes an AI Actions.
     * @summary Delete AI Actions config
     * @param projectId Project ID
     * @param actionId AI Action ID
     */
    deleteAIAction(projectId: number, actionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Clear the current CSV wizard config; subsequent CSVs will be uploaded as-is, without additional parsing.
     * @summary Delete CSV Wizard config
     * @param projectId Project ID
     */
    deleteCsvWizardConfig(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Remove the current project, and all data associated with it. This is irrevocable!
     * @summary Remove project
     * @param projectId Project ID
     */
    deleteProject(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete a version. This does not delete the version from cold storage.
     * @summary Delete versions
     * @param projectId Project ID
     * @param versionId Version ID
     */
    deleteVersion(projectId: number, versionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Returns a JSON file with the current CSV wizard config. If there is no config this will throw a 5xx error.
     * @summary Download CSV Wizard config
     * @param projectId Project ID
     */
    downloadCsvWizardConfig(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Returns the file that was uploaded when the CSV wizard was configured. If there is no config this will throw a 5xx error.
     * @summary Download CSV Wizard uploaded file
     * @param projectId Project ID
     */
    downloadCsvWizardUploadedFile(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Get an AI Actions config
     * @summary Get AI Actions config
     * @param projectId Project ID
     * @param actionId AI Action ID
     */
    getAIAction(projectId: number, actionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAIActionResponse>;
    /**
     * Returns whether the file that was uploaded when the CSV wizard was configured is available.
     * @summary Get CSV Wizard uploaded file info
     * @param projectId Project ID
     */
    getCsvWizardUploadedFileInfo(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetCsvWizardUploadedFileInfo>;
    /**
     * Retrieve the HMAC development key for a project. This key are specifically marked to be used during development. This key can be `undefined` if no development keys are set.
     * @summary Get HMAC development key
     * @param projectId Project ID
     */
    getHmacDevkey(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetHmacDevkeyResponse>;
    /**
     * Get a list of model variants applicable to all trained learn blocks in this project.
     * @summary Get a list of all model variants available for this project
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getModelVariants(projectId: number, queryParams?: getModelVariantsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetModelVariantsResponse>;
    /**
     * Get the AI Actions config for a new action
     * @summary Get new AI Actions config
     * @param projectId Project ID
     */
    getNewAIAction(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAIActionResponse>;
    /**
     * Get a list of axes that are present in the training data.
     * @summary Get data axes summary
     * @param projectId Project ID
     * @param includeDisabled Whether to include disabled samples. Defaults to true
     * @param includeNotProcessed Whether to include non-processed samples. Defaults to true
     */
    getProjectDataAxesSummary(projectId: number, queryParams?: getProjectDataAxesSummaryQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProjectDataAxesSummaryResponse>;
    /**
     * List all information about this project.
     * @summary Project information
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    getProjectInfo(projectId: number, queryParams?: getProjectInfoQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProjectInfoResponse>;
    /**
     * List a summary about this project - available for public projects.
     * @summary Public project information
     * @param projectId Project ID
     */
    getProjectInfoSummary(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProjectInfoSummaryResponse>;
    /**
     * Get the last modification date for a project (will be upped when data is modified, or when an impulse is trained)
     * @summary Last modification
     * @param projectId Project ID
     */
    getProjectLastModificationDate(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<LastModificationDateResponse>;
    /**
     * Get the interval of the training data; if multiple intervals are present, the interval of the longest data item is returned. This only takes data in your _training_ set into account.
     * @summary Get the interval (in ms) of the training data
     * @param projectId Project ID
     */
    getProjectRecommendedDataInterval(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProjectDataIntervalResponse>;
    /**
     * Get summary of all data present in the training set. This returns the number of data items, the total length of all data, and the labels. This is similar to `dataSummary` in `ProjectInfoResponse` but allows you to exclude disabled items or items that are still processing.
     * @summary Get data summary
     * @param projectId Project ID
     * @param includeDisabled Whether to include disabled samples. Defaults to true
     * @param includeNotProcessed Whether to include non-processed samples. Defaults to true
     */
    getProjectTrainingDataSummary(projectId: number, queryParams?: getProjectTrainingDataSummaryQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProjectTrainingDataSummaryResponse>;
    /**
     * Get a token to authenticate with the web socket interface.
     * @summary Get socket token
     * @param projectId Project ID
     */
    getSocketToken(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<SocketTokenResponse>;
    /**
     * Get the last used synthetic data config
     * @summary Get synthetic data config
     * @param projectId Project ID
     */
    getSyntheticDataConfig(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSyntheticDataConfigResponse>;
    /**
     * Retrieve target constraints for a project. The constraints object captures hardware attributes of your target device, along with an application budget to allow guidance on performance and resource usage
     * @summary Get target constraints
     * @param projectId Project ID
     */
    getTargetConstraints(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetTargetConstraintsResponse>;
    /**
     * This clears out *all data in your project*, and is irrevocable. This function is only available through a JWT token, and is not available to all users.
     * @summary Launch getting started wizard
     * @param projectId Project ID
     */
    launchGettingStartedWizard(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get all AI actions.
     * @summary List AI Actions
     * @param projectId Project ID
     */
    listAIActions(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListAIActionsResponse>;
    /**
     * List all development boards for a project
     * @summary Development boards
     * @param projectId Project ID
     */
    listDevelopmentBoards(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DevelopmentBoardsResponse>;
    /**
     * Retrieve the development API and HMAC keys for a project. These keys are specifically marked to be used during development. These keys can be `undefined` if no development keys are set. Only available through JWT token authentication, if you authenticate with an API key then all keys will return undefined (this is changed behavior since 28 January 2026).
     * @summary Get development keys
     * @param projectId Project ID
     */
    listDevkeys(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DevelopmentKeysResponse>;
    /**
     * Retrieve the downloads for a project.
     * @summary Get downloads
     * @param projectId Project ID
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     */
    listDownloads(projectId: number, queryParams?: listDownloadsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ProjectDownloadsResponse>;
    /**
     * Get a list of all emails sent by Edge Impulse regarding this project.
     * @summary List emails
     * @param projectId Project ID
     */
    listEmails(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListEmailResponse>;
    /**
     * Retrieve all API keys. This does **not** return the full API key, but only a portion (for security purposes). The development key will be returned in full, as it\'ll be set in devices and is thus not private.
     * @summary Get API keys
     * @param projectId Project ID
     */
    listProjectApiKeys(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListApiKeysResponse>;
    /**
     * Retrieve all HMAC keys.
     * @summary Get HMAC keys
     * @param projectId Project ID
     */
    listProjectHmacKeys(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListHmacKeysResponse>;
    /**
     * Retrieve list of active projects. If authenticating using JWT token this lists all the projects the user has access to, if authenticating using an API key, this only lists that project.
     * @summary List active projects
     */
    listProjects(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListProjectsResponse>;
    /**
     * Retrieve the list of available public project types. You don\'t need any authentication for this method.
     * @summary List public project types
     */
    listPublicProjectTypes(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPublicProjectTypesResponse>;
    /**
     * Retrieve the list of all public projects. You don\'t need any authentication for this method.
     * @summary List public projects
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param project Only include projects where the name or owner contains this string
     * @param projectTypes Comma separated list of project types to filter on. Supported values are \&#39;audio\&#39;, \&#39;object-detection\&#39;, \&#39;image\&#39;, \&#39;accelerometer\&#39;, \&#39;other\&#39;.
     * @param sort Fields and order to sort query by
     */
    listPublicProjects(queryParams?: listPublicProjectsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPublicProjectsResponse>;
    /**
     * Get all public versions for this project. You don\'t need any authentication for this function.
     * @summary List public versions
     * @param projectId Project ID
     */
    listPublicVersions(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPublicVersionsResponse>;
    /**
     * Get all versions for this project.
     * @summary List versions
     * @param projectId Project ID
     */
    listVersions(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListVersionsResponse>;
    /**
     * Make a public version private.
     * @summary Make version private
     * @param projectId Project ID
     * @param versionId Version ID
     */
    makeVersionPrivate(projectId: number, versionId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get a number of random samples to show in the AI Actions screen. If `saveConfig` is passed in, then a valid actionId is required in the URL. If you don\'t need to save the config (e.g. when creating a new action), you can use -1.
     * @summary Preview samples for AI Actions
     * @param projectId Project ID
     * @param actionId AI Action ID
     * @param previewAIActionsSamplesRequest
     */
    previewAIActionsSamples(projectId: number, actionId: number, previewAIActionsSamplesRequest: PreviewAIActionsSamplesRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListSamplesResponse>;
    /**
     * Dismiss a notification
     * @summary Dismiss a notification
     * @param projectId Project ID
     * @param projectDismissNotificationRequest
     */
    projectDismissNotification(projectId: number, projectDismissNotificationRequest: ProjectDismissNotificationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Remove a collaborator to a project. Note that you cannot invoke this function if only a single collaborator is present.
     * @summary Remove collaborator
     * @param projectId Project ID
     * @param removeCollaboratorRequest
     */
    removeCollaborator(projectId: number, removeCollaboratorRequest: RemoveCollaboratorRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Revoke an API key. Note that if you revoke the development API key some services (such as automatic provisioning of devices through the serial daemon) will no longer work.
     * @summary Revoke API key
     * @param projectId Project ID
     * @param apiKeyId API key ID
     */
    revokeProjectApiKey(projectId: number, apiKeyId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Revoke an HMAC key. Note that if you revoke the development key some services (such as automatic provisioning of devices through the serial daemon) will no longer work.
     * @summary Remove HMAC key
     * @param projectId Project ID
     * @param hmacId Hmac key ID
     */
    revokeProjectHmacKey(projectId: number, hmacId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Revoke an ingestion-only API key. If the ID belongs to a key with a different role, this endpoint returns an error payload (`success: false`).
     * @summary Revoke ingestion-only API key
     * @param projectId Project ID
     * @param apiKeyId API key ID
     */
    revokeProjectIngestionOnlyApiKey(projectId: number, apiKeyId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Change the order of AI actions. Post the new order of all AI Actions by ID. You need to specify _all_ AI Actions here. If not, an error will be thrown.
     * @summary Set AI Actions order
     * @param projectId Project ID
     * @param setAIActionsOrderRequest
     */
    setAIActionsOrder(projectId: number, setAIActionsOrderRequest: SetAIActionsOrderRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Change the job compute time limit for the project. This function is only available through a JWT token, and is not available to all users.
     * @summary Set compute time limit
     * @param projectId Project ID
     * @param setProjectComputeTimeRequest
     */
    setProjectComputeTimeLimit(projectId: number, setProjectComputeTimeRequest: SetProjectComputeTimeRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Change the DSP file size limit for the project. This function is only available through a JWT token, and is not available to all users.
     * @summary Set DSP file size limit
     * @param projectId Project ID
     * @param setProjectDspFileSizeRequest
     */
    setProjectFileSizeLimit(projectId: number, setProjectDspFileSizeRequest: SetProjectDspFileSizeRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Set target constraints for a project. Use the constraints object to capture hardware attributes of your target device, along with an application budget to allow guidance on performance and resource usage
     * @summary Set target constraints
     * @param projectId Project ID
     * @param targetConstraints
     */
    setTargetConstraints(projectId: number, targetConstraints: TargetConstraints, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Transfer ownership of a project to another user.
     * @summary Transfer ownership (user)
     * @param projectId Project ID
     * @param addCollaboratorRequest
     */
    transferOwnership(projectId: number, addCollaboratorRequest: AddCollaboratorRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Transfer ownership of a project to another organization.
     * @summary Transfer ownership (organization)
     * @param projectId Project ID
     * @param transferOwnershipOrganizationRequest
     */
    transferOwnershipOrganization(projectId: number, transferOwnershipOrganizationRequest: TransferOwnershipOrganizationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Store an AI Actions config. Use `createAIActionsJob` to run the job. Post the full AI Action here w/ all parameters.
     * @summary Save AI Actions config
     * @param projectId Project ID
     * @param actionId AI Action ID
     * @param updateAIActionRequest
     */
    updateAIAction(projectId: number, actionId: number, updateAIActionRequest: UpdateAIActionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update project properties such as name and logo.
     * @summary Update project
     * @param projectId Project ID
     * @param updateProjectRequest
     */
    updateProject(projectId: number, updateProjectRequest: UpdateProjectRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update the list of project tags.
     * @summary Update tags
     * @param projectId Project ID
     * @param updateProjectTagsRequest
     */
    updateProjectTags(projectId: number, updateProjectTagsRequest: UpdateProjectTagsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Updates a version, this only updates fields that were set in the body.
     * @summary Update version
     * @param projectId Project ID
     * @param versionId Version ID
     * @param updateVersionRequest
     */
    updateVersion(projectId: number, versionId: number, updateVersionRequest: UpdateVersionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Asynchronously called in the CSV Wizard to store the file that the CSV wizard was based on.
     * @summary Store CSV Wizard uploaded file
     * @param projectId Project ID
     * @param file
     */
    uploadCsvWizardUploadedFile(projectId: number, params: uploadCsvWizardUploadedFileFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Uploads an image to the user CDN and returns the path.
     * @summary Upload image for readme
     * @param projectId Project ID
     * @param image
     */
    uploadReadmeImage(projectId: number, params: uploadReadmeImageFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadReadmeImageResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum RawDataApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type batchAddMetadataQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchBackToLabelingQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchClearMetadataQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchClearMetadataByKeyQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchDeleteQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchDisableQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchEditBoundingBoxesQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchEditLabelsQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchEnableQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type batchMoveQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    ids?: string;
    excludeIds?: string;
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type countSamplesQueryParams = {
    category: RawDataFilterCategory;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
type cropSampleQueryParams = {
    datastreamIndex?: number;
};
type findSegmentsInSampleQueryParams = {
    datastreamIndex?: number;
};
type getAllImportedFromQueryParams = {
    limit?: number;
    offset?: number;
};
type getRawDataMetadataCooccurrenceQueryParams = {
    category: RawDataCategory;
    keyA: string;
    keyB: string;
    topNKeyA?: number;
    topNKeyB?: number;
    normalize?: 'none' | 'global';
    excludeDisabledSamples?: boolean;
};
type getRawDataMetadataDistributionQueryParams = {
    category: RawDataCategory;
    key: string;
    topN?: number;
    binCount?: number;
    groupByLabel?: boolean;
    excludeDisabledSamples?: boolean;
};
type getRawDataProjectMetadataQueryParams = {
    datasetVersionId?: number;
    includeDisabled?: 'both' | 'enabled';
};
type getSampleQueryParams = {
    limitPayloadValues?: number;
    cacheKey?: string;
    impulseId?: number;
    proposedActionsJobId?: number;
    truncateStructuredLabels?: boolean;
};
type getSampleAsAudioQueryParams = {
    axisIx: number;
    sliceStart?: number;
    sliceEnd?: number;
    cacheKey?: string;
};
type getSampleAsImageQueryParams = {
    afterInputBlock?: boolean;
    cacheKey?: string;
    impulseId?: number;
    datastreamIndex?: number;
};
type getSampleAsVideoQueryParams = {
    afterInputBlock?: boolean;
    cacheKey?: string;
    impulseId?: number;
    datastreamIndex?: number;
};
type getSampleMetadataQueryParams = {
    category: RawDataFilterCategory;
};
type getSampleMetadataFilterOptionsQueryParams = {
    category: RawDataFilterCategory;
    limit?: number;
    offset?: number;
};
type getSampleSliceQueryParams = {
    sliceStart: number;
    sliceEnd?: number;
    impulseId?: number;
    datastreamIndex?: number;
    truncateStructuredLabels?: boolean;
};
type getUncroppedDownsampledSampleQueryParams = {
    limitPayloadValues?: number;
    zoomStart?: number;
    zoomEnd?: number;
    impulseId?: number;
    datastreamIndex?: number;
    truncateStructuredLabels?: boolean;
};
type listSamplesQueryParams = {
    category: RawDataFilterCategory;
    limit?: number;
    offset?: number;
    excludeSensors?: boolean;
    labels?: string;
    filename?: string;
    maxLength?: number;
    minLength?: number;
    minFrequency?: number;
    maxFrequency?: number;
    signatureValidity?: 'both' | 'valid' | 'invalid';
    includeDisabled?: 'both' | 'enabled' | 'disabled';
    minLabel?: number;
    maxLabel?: number;
    search?: string;
    proposedActionsJobId?: number;
    truncateStructuredLabels?: boolean;
    sortBy?: 'id-desc' | 'random';
    dataType?: 'audio' | 'image';
    minId?: number;
    maxId?: number;
    metadata?: string;
    minDate?: Date;
    maxDate?: Date;
};
export type uploadDataExplorerScreenshotFormParams = {
    image: RequestFile;
};
export type RawDataApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class RawDataApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: RawDataApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: RawDataApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: RawDataApiOpts);
    get opts(): RawDataApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: RawDataApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Add specific metadata for multiple samples.
     * @summary Add metadata (multiple samples)
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param batchAddMetadataRequest
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchAddMetadata(projectId: number, batchAddMetadataRequest: BatchAddMetadataRequest, queryParams: batchAddMetadataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Batch operation to put multiple samples back into the object detection labeling queue. Depending on the number of affected samples this will either execute immediately or return the ID of a job that will perform this action in batches.
     * @summary Put samples back into the object detection labeling queue
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param backToLabelingRequest
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchBackToLabeling(projectId: number, backToLabelingRequest: BackToLabelingRequest, queryParams: batchBackToLabelingQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Clears all metadata for multiple samples.
     * @summary Clear all metadata (multiple samples)
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchClearMetadata(projectId: number, queryParams: batchClearMetadataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Clears a specific metadata field (by key) for multiple samples.
     * @summary Clear metadata by key (multiple samples)
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param batchClearMetadataByKeyRequest
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchClearMetadataByKey(projectId: number, batchClearMetadataByKeyRequest: BatchClearMetadataByKeyRequest, queryParams: batchClearMetadataByKeyQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Deletes samples. Note that this does not delete the data from cold storage. Depending on the number of affected samples this will either execute immediately or return the ID of a job that will perform this action in batches.
     * @summary Remove multiple samples
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchDelete(projectId: number, queryParams: batchDeleteQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Disables samples, ensuring that they are excluded from the dataset. Depending on the number of affected samples this will either execute immediately or return the ID of a job that will perform this action in batches.
     * @summary Disable multiple samples
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchDisable(projectId: number, queryParams: batchDisableQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Relabels (or removes) bounding boxes for multiple samples. Depending on the number of affected samples this will either execute immediately or return the ID of a job that will perform this action in batches.
     * @summary Edit bounding boxes for multiple samples
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param batchEditBoundingBoxesRequest
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchEditBoundingBoxes(projectId: number, batchEditBoundingBoxesRequest: BatchEditBoundingBoxesRequest, queryParams: batchEditBoundingBoxesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Sets the label (also known as class) of multiple samples. If you want to relabel bounding boxes, use \"batchEditBoundingBoxes\" instead. Depending on the number of affected samples this will either execute immediately or return the ID of a job that will perform this action in batches.
     * @summary Edit labels for multiple samples
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param editSampleLabelRequest
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchEditLabels(projectId: number, editSampleLabelRequest: EditSampleLabelRequest, queryParams: batchEditLabelsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Enables samples, ensuring that they are not excluded from the dataset. Depending on the number of affected samples this will either execute immediately or return the ID of a job that will perform this action in batches.
     * @summary Enable multiple samples
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchEnable(projectId: number, queryParams: batchEnableQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Move multiple samples to another category (e.g. from test to training). Depending on the number of affected samples this will either execute immediately or return the ID of a job that will perform this action in batches.
     * @summary Move multiple samples
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param moveRawDataRequest
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param ids Only include samples with an ID within the given list of IDs, given as a JSON string
     * @param excludeIds Exclude samples with an ID within the given list of IDs, given as a JSON string
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    batchMove(projectId: number, moveRawDataRequest: MoveRawDataRequest, queryParams: batchMoveQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Classify an image using another neural network.
     * @summary Auto-label an image
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param objectDetectionAutoLabelRequest
     */
    classifyUsingAutolabel(projectId: number, sampleId: number, objectDetectionAutoLabelRequest: ObjectDetectionAutoLabelRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ObjectDetectionAutoLabelResponse>;
    /**
     * Clears all object detection labels for this dataset, and places all images back in the labeling queue.
     * @summary Clear all object detection labels
     * @param projectId Project ID
     */
    clearAllObjectDetectionLabels(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Remove the current data explorer state
     * @summary Clear data explorer
     * @param projectId Project ID
     */
    clearDataExplorer(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Count all raw data by category.
     * @summary Count samples
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    countSamples(projectId: number, queryParams: countSamplesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CountSamplesResponse>;
    /**
     * Crop a sample to within a new range. cropStart/cropEnd are relative to the selected datastream. If you have multiple datastreams and OptionalDatastreamIndexParameter is not passed in, the first datastream is used.
     * @summary Crop sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param cropSampleRequest
     * @param datastreamIndex Datastream index (defaults to 0)
     */
    cropSample(projectId: number, sampleId: number, cropSampleRequest: CropSampleRequest, queryParams?: cropSampleQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CropSampleResponse>;
    /**
     * Deletes all samples for this project over all categories. This also invalidates all DSP and learn blocks. Note that this does not delete the data from cold storage.
     * @summary Remove all samples
     * @param projectId Project ID
     */
    deleteAllSamples(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Deletes all samples for this project over a single category. Note that this does not delete the data from cold storage.
     * @summary Remove all samples by category
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to download data from
     */
    deleteAllSamplesByCategory(projectId: number, category: RawDataCategory, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Deletes the sample. Note that this does not delete the data from cold storage.
     * @summary Remove sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     */
    deleteSample(projectId: number, sampleId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Disable a sample, ensuring that it is excluded from the dataset.
     * @summary Disable sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     */
    disableSample(projectId: number, sampleId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Sets the label (also known as class) of the sample. Use the same label for similar types of data, as they are used during training.
     * @summary Edit label
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param editSampleLabelRequest
     */
    editLabel(projectId: number, sampleId: number, editSampleLabelRequest: EditSampleLabelRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Enable a sample, ensuring that it is not excluded from the dataset.
     * @summary Enable sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     */
    enableSample(projectId: number, sampleId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Find start and end times for all non-noise events in a sample. If you have multiple datastreams and OptionalDatastreamIndexParameter is not passed in, the first datastream is used.
     * @summary Find segments
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param findSegmentSampleRequest
     * @param datastreamIndex Datastream index (defaults to 0)
     */
    findSegmentsInSample(projectId: number, sampleId: number, findSegmentSampleRequest: FindSegmentSampleRequest, queryParams?: findSegmentsInSampleQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<FindSegmentSampleResponse>;
    /**
     * Get proposed changes from an AI Actions job.
     * @summary Get AI Actions proposed changes
     * @param projectId Project ID
     * @param jobId Job ID
     */
    getAIActionsProposedChanges(projectId: number, jobId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAIActionsProposedChangesResponse>;
    /**
     * Lists all data with an \'imported from\' metadata key. Used to check in a data source which items are already in a project.
     * @summary List data with \"imported from\" metadata key
     * @param projectId Project ID
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    getAllImportedFrom(projectId: number, queryParams?: getAllImportedFromQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAllImportedFromResponse>;
    /**
     * t-SNE2 output of the raw dataset
     * @summary Get data explorer features
     * @param projectId Project ID
     */
    getDataExplorerFeatures(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDataExplorerFeaturesResponse>;
    /**
     * Predictions for every data explorer point (only available when using current impulse to populate data explorer)
     * @summary Get data explorer predictions
     * @param projectId Project ID
     */
    getDataExplorerPredictions(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DataExplorerPredictionsResponse>;
    /**
     * Get data explorer configuration, like the type of data, and the input / dsp block to use.
     * @summary Get data explorer settings
     * @param projectId Project ID
     */
    getDataExplorerSettings(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDataExplorerSettingsResponse>;
    /**
     * Retrieve number of samples in train and test set.
     * @summary Get dataset ratio
     * @param projectId Project ID
     */
    getDatasetRatio(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDatasetRatioResponse>;
    /**
     * Obtain metrics that describe the similarity and diversity of a dataset. To calculate these metrics, use the `calculateDataQualityMetrics` endpoint.
     * @summary Get diversity metrics data
     * @param projectId Project ID
     */
    getDiversityData(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetDiversityDataResponse>;
    /**
     * Obtain metrics that describe potential label noise issues in the dataset. To calculate these metrics, use the `calculateDataQualityMetrics` endpoint.
     * @summary Get label noise data
     * @param projectId Project ID
     */
    getLabelNoiseData(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetLabelNoiseDataResponse>;
    /**
     * Get all unlabeled items from the object detection queue.
     * @summary Object detection label queue
     * @param projectId Project ID
     */
    getObjectDetectionLabelQueue(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ObjectDetectionLabelQueueResponse>;
    /**
     * Get count for unlabeled items from the object detection queue.
     * @summary Object detection label queue count
     * @param projectId Project ID
     */
    getObjectDetectionLabelQueueCount(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ObjectDetectionLabelQueueCountResponse>;
    /**
     * Get co-occurrence counts for two metadata keys in a project category. This is experimental and may change in the future.
     * @summary Get project metadata co-occurrence matrix
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param keyA First metadata key to aggregate values for
     * @param keyB Second metadata key to aggregate values for
     * @param topNKeyA Maximum number of top values to return for keyA
     * @param topNKeyB Maximum number of top values to return for keyB
     * @param normalize Controls how normalizedMatrix is computed. Use none to disable normalization (normalizedMatrix omitted), or global to return percentages across all matrix cells.
     * @param excludeDisabledSamples Whether to exclude samples that are marked as disabled.
     */
    getRawDataMetadataCooccurrence(projectId: number, queryParams: getRawDataMetadataCooccurrenceQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetRawDataMetadataCooccurrenceResponse>;
    /**
     * Get metadata value distribution for a specific metadata key in a project category. Numeric values are returned as histogram buckets, non-numeric values as categorical counts. This is experimental and may change in the future.
     * @summary Get project sample metadata distribution
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param key Metadata key to aggregate values for
     * @param topN Maximum number of top categories to return for categorical values
     * @param binCount Number of bins to use for numeric histogram values
     * @param groupByLabel Include per-label breakdown for each bucket
     * @param excludeDisabledSamples Whether to exclude samples that are marked as disabled.
     */
    getRawDataMetadataDistribution(projectId: number, queryParams: getRawDataMetadataDistributionQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetRawDataMetadataDistributionResponse>;
    /**
     * Get the raw data metadata for this project
     * @summary Get project dataset metadata
     * @param projectId Project ID
     * @param datasetVersionId Dataset version ID. If not set, the current dataset version is used
     * @param includeDisabled Whether to include enabled-only samples, or both enabled and disabled samples (defaults to both).
     */
    getRawDataProjectMetadata(projectId: number, queryParams?: getRawDataProjectMetadataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetRawDataProjectMetadataResponse>;
    /**
     * Get a sample.
     * @summary Get sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param limitPayloadValues Limit the number of payload values in the response
     * @param cacheKey If set, then a long cache header is sent. If this is omitted then a no-cache header is sent. You can use this if you f.e. know the last modified date of a sample. Stick the last modified date in the cache key, so the sample can be stored in browser cache (and will automatically be invalidated if the modified date changes).
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param proposedActionsJobId Pass this parameter when querying samples from inside an AI Action job. If you pass this parameter in a multi-stage AI Action, previous proposed changes (from an earlier step) will be applied to the returned dataset.
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    getSample(projectId: number, sampleId: number, queryParams?: getSampleQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSampleResponse>;
    /**
     * Get a sample as a WAV file. This only applies to samples with an audio axis.
     * @summary Get WAV file
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param axisIx Axis index
     * @param sliceStart Begin index of the slice. If not given, the whole sample is used.
     * @param sliceEnd End index of the slice. If not given, the whole sample is used.
     * @param cacheKey If set, then a long cache header is sent. If this is omitted then a no-cache header is sent. You can use this if you f.e. know the last modified date of a sample. Stick the last modified date in the cache key, so the sample can be stored in browser cache (and will automatically be invalidated if the modified date changes).
     */
    getSampleAsAudio(projectId: number, sampleId: number, queryParams: getSampleAsAudioQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Get a sample as an image file. This only applies to samples with RGBA data.
     * @summary Get image file
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param afterInputBlock Whether to process the image through the input block first
     * @param cacheKey If set, then a long cache header is sent. If this is omitted then a no-cache header is sent. You can use this if you f.e. know the last modified date of a sample. Stick the last modified date in the cache key, so the sample can be stored in browser cache (and will automatically be invalidated if the modified date changes).
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param datastreamIndex Datastream index (defaults to 0)
     */
    getSampleAsImage(projectId: number, sampleId: number, queryParams?: getSampleAsImageQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Download a sample in it\'s original format as uploaded to the ingestion service.
     * @summary Download file
     * @param projectId Project ID
     * @param sampleId Sample ID
     */
    getSampleAsRaw(projectId: number, sampleId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Get a sample as an video file. This only applies to samples with video data.
     * @summary Get video file
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param afterInputBlock Whether to process the image through the input block first
     * @param cacheKey If set, then a long cache header is sent. If this is omitted then a no-cache header is sent. You can use this if you f.e. know the last modified date of a sample. Stick the last modified date in the cache key, so the sample can be stored in browser cache (and will automatically be invalidated if the modified date changes).
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param datastreamIndex Datastream index (defaults to 0)
     */
    getSampleAsVideo(projectId: number, sampleId: number, queryParams?: getSampleAsVideoQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
    /**
     * Get metadata for all samples in a project.
     * @summary Get project sample metadata
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     */
    getSampleMetadata(projectId: number, queryParams: getSampleMetadataQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSampleMetadataResponse>;
    /**
     * Get a list of unique key value pairs across all samples in a project that can be applied as filters to the /api/{projectId}/raw-data endpoint
     * @summary Get project sample metadata filter options
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     */
    getSampleMetadataFilterOptions(projectId: number, queryParams: getSampleMetadataFilterOptionsQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSampleMetadataFilterOptionsResponse>;
    /**
     * Get a slice of a sample. If you have multiple datastreams and OptionalDatastreamIndexParameter is not passed in, the first datastream is returned. sliceStart / sliceEnd are relative to the datastream.
     * @summary Get sample slice
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param sliceStart Begin index of the slice
     * @param sliceEnd End index of the slice. If not given, the sample will be sliced to the same length as the impulse input block window length.
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param datastreamIndex Datastream index (defaults to 0)
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    getSampleSlice(projectId: number, sampleId: number, queryParams: getSampleSliceQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSampleDspResponse>;
    /**
     * Returns the results of a previously requested split preview job. This endpoint is used to retrieve the results after a split preview job has been started.
     * @summary Get split preview results
     * @param projectId Project ID
     */
    getSplitPreviewResults(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DatasetSplitPreviewResponse>;
    /**
     * Get the original, uncropped, downsampled data. If you have multiple datastreams and OptionalDatastreamIndexParameter is not passed in, the first datastream is returned. The ZoomStart/ZoomEnd parameters should be relative to the selected datastream.
     * @summary Get the original downsampled data
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param limitPayloadValues Limit the number of payload values in the response
     * @param zoomStart Zoom into the sample, with the focus starting at this index
     * @param zoomEnd Zoom into the sample, with the focus ending at this index
     * @param impulseId Impulse ID. If this is unset then the default impulse is used.
     * @param datastreamIndex Datastream index (defaults to 0)
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     */
    getUncroppedDownsampledSample(projectId: number, sampleId: number, queryParams?: getUncroppedDownsampledSampleQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetSampleDspResponse>;
    /**
     * t-SNE2 output of the raw dataset
     * @summary Check data explorer features
     * @param projectId Project ID
     */
    hasDataExplorerFeatures(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<HasDataExplorerFeaturesResponse>;
    /**
     * Determine if data diversity metrics have been calculated. To calculate these metrics, use the `calculateDataQualityMetrics` endpoint.
     * @summary Check if data diversity metrics exist
     * @param projectId Project ID
     */
    hasDiversityData(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<HasDataExplorerFeaturesResponse>;
    /**
     * Determine if label noise metrics have been calculated. To calculate these metrics, use the `calculateDataQualityMetrics` endpoint.
     * @summary Check if label noise metrics exist
     * @param projectId Project ID
     */
    hasLabelNoiseData(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<HasDataExplorerFeaturesResponse>;
    /**
     * Retrieve all raw data by category.
     * @summary List samples
     * @param projectId Project ID
     * @param category Which of the three acquisition categories to retrieve data from
     * @param limit Maximum number of results
     * @param offset Offset in results, can be used in conjunction with LimitResultsParameter to implement paging.
     * @param excludeSensors Whether to exclude sensors in the response (as these can slow down requests when you have large pages).
     * @param labels Only include samples with a label within the given list of labels, given as a JSON string
     * @param filename Only include samples whose filename includes the given filename
     * @param maxLength Only include samples shorter than the given length, in milliseconds
     * @param minLength Only include samples longer than the given length, in milliseconds
     * @param minFrequency Only include samples with higher frequency than given frequency, in hertz
     * @param maxFrequency Only include samples with lower frequency than given frequency, in hertz
     * @param signatureValidity Include samples with either valid or invalid signatures
     * @param includeDisabled Include only enabled or disabled samples (or both)
     * @param minLabel Only include samples with a label &gt;&#x3D; this value
     * @param maxLabel Only include samples with a label &lt; this value
     * @param search Search query
     * @param proposedActionsJobId Pass this parameter when querying samples from inside an AI Action job. If you pass this parameter in a multi-stage AI Action, previous proposed changes (from an earlier step) will be applied to the returned dataset.
     * @param truncateStructuredLabels If true, only a slice of labels will be returned for samples with multiple labels.
     * @param sortBy If not specified, \&quot;id-desc\&quot; is used.
     * @param dataType Include only samples with a particular data type
     * @param minId Include only samples with an ID &gt;&#x3D; this value
     * @param maxId Include only samples with an ID &lt; this value
     * @param metadata Filter samples by metadata key-value pairs, provided as a JSON string. Each item in the filter list is an object with the following properties:     - \&quot;key\&quot;: Metadata key to filter on.     - \&quot;op\&quot;: Operator (\&quot;eq\&quot; for positive match, \&quot;neq\&quot; for negative match).     - \&quot;values\&quot;: (optional) Array of values to match/exclude. If omitted or empty, matches/excludes all values for the key. In addition to filter objects, the following option objects can be specified:     - { \&quot;no_metadata\&quot;: boolean } - If true, include samples without any metadata     - { \&quot;filters_combinator\&quot;: (\&quot;and\&quot; | \&quot;or\&quot;) } - Specifies the combinator and matching mode:         - \&quot;and\&quot;: All filter items must match (logical AND).         - \&quot;or\&quot;: Any filter item may match (logical OR); samples with metadata keys not present in the filters are included.
     * @param minDate Only include samples that where added after the date given
     * @param maxDate Only include samples that were added before the date given
     */
    listSamples(projectId: number, queryParams: listSamplesQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListSamplesResponse>;
    /**
     * Move a sample to another category (e.g. from test to training).
     * @summary Move sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param moveRawDataRequest
     */
    moveSample(projectId: number, sampleId: number, moveRawDataRequest: MoveRawDataRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Clears the bounding box labels and moves item back to labeling queue
     * @summary Move sample to labeling queue
     * @param projectId Project ID
     * @param sampleId Sample ID
     */
    moveToLabelingQueue(projectId: number, sampleId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * This API is deprecated, use rebalanceDatasetV2 instead (`/v1/api/{projectId}/v2/rebalance`). Rebalances the dataset over training / testing categories. This resets the category for all data and splits it 80%/20% between training and testing. This is a deterministic process based on the hash of the name of the data.
     * @summary Rebalance dataset
     * @param projectId Project ID
     */
    rebalanceDataset(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<RebalanceDatasetResponse>;
    /**
     * Rebalances the dataset over training / testing categories. This resets the category for all data and splits it 80%/20% between training and testing. This is a deterministic process based on the hash of the name of the data. Returns immediately on small datasets, or starts a job on larger datasets. To get the dataset ratio (as returned by the v1 endpoint), use getDatasetRatio. For richer, more powerful dataset splitting with configurable ratios, stratification, and grouping, use splitDataset (`/v1/api/{projectId}/split`).
     * @summary Rebalance dataset
     * @param projectId Project ID
     */
    rebalanceDatasetV2(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Sets the file name of the sample. This name does not need to be unique, but it\'s highly recommended to do so.
     * @summary Rename sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param renameSampleRequest
     */
    renameSample(projectId: number, sampleId: number, renameSampleRequest: RenameSampleRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * If a sample failed processing, retry the processing operation.
     * @summary Retry processing
     * @param projectId Project ID
     * @param sampleId Sample ID
     */
    retryProcessing(projectId: number, sampleId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Slice a sample into multiple segments. The original file will be marked as deleted, but you can crop any created segment to retrieve the original file.
     * @summary Segment sample
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param segmentSampleRequest
     */
    segmentSample(projectId: number, sampleId: number, segmentSampleRequest: SegmentSampleRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Set data explorer configuration, like the type of data, and the input / dsp block to use.
     * @summary Set data explorer settings
     * @param projectId Project ID
     * @param dataExplorerSettings
     */
    setDataExplorerSettings(projectId: number, dataExplorerSettings: DataExplorerSettings, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Set the bounding boxes for a sample
     * @summary Set bounding boxes
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param sampleBoundingBoxesRequest
     */
    setSampleBoundingBoxes(projectId: number, sampleId: number, sampleBoundingBoxesRequest: SampleBoundingBoxesRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update key/value labels for a sample. This is experimental and may change in the future.
     * @summary Set sample label map labels
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param sampleLabelMapRequest
     */
    setSampleLabelMap(projectId: number, sampleId: number, sampleLabelMapRequest: SampleLabelMapRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Adds or updates the metadata associated to a sample.
     * @summary Set sample metadata
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param setSampleMetadataRequest
     */
    setSampleMetadata(projectId: number, sampleId: number, setSampleMetadataRequest: SetSampleMetadataRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Queue up changes to an object as part of the AI Actions flow. This overwrites any previous proposed changes.
     * @summary Propose changes
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param setSampleProposedChangesRequest
     */
    setSampleProposedChanges(projectId: number, sampleId: number, setSampleProposedChangesRequest: SetSampleProposedChangesRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Set structured labels for a sample. If a sample has structured labels the `label` column is ignored, and the sample is allowed to have multiple labels. An array of { startIndex, endIndex, label } needs to be passed in with labels for the complete sample (see `valuesCount` to get the upper bound). endIndex is _inclusive_. If you pass in an incorrect array (e.g. missing values) you\'ll get an error back.
     * @summary Update structured labels
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param setSampleStructuredLabelsRequest
     */
    setSampleStructuredLabels(projectId: number, sampleId: number, setSampleStructuredLabelsRequest: SetSampleStructuredLabelsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update the video dimensions for a sample. This is only available for video files that do not have dimensions set yet.
     * @summary Set sample video dimensions
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param setSampleVideoDimensionsRequest
     */
    setSampleVideoDimensions(projectId: number, sampleId: number, setSampleVideoDimensionsRequest: SetSampleVideoDimensionsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Performs a deterministic, in-place split of the project\'s dataset into \"training\", \"testing\", and optional \"validation\" sets. Split balancing can use the label, one or more metadata keys, or both as a composite grouping signal. Related samples can also be kept together across splits by metadata key. This is a deterministic process based on the hash of the name of the data. Returns immediately on small datasets, or starts a job on larger datasets. For example:     { \"trainingSplitRatio\": 0.8, \"testingSplitRatio\": 0.1, \"validationSplitRatio\": 0.1, \"excludeDisabledSamples\": false, \"stratifyBy\": { \"label\": true, \"metadataKeys\": [\"site\", \"scanner\"] }, \"keepTogetherMetadataKeys\": [\"capture_group\"] }     With these options, label/site/scanner are used to balance the split, while samples sharing the same capture_group value stay in the same split bucket.
     * @summary Split dataset
     * @param projectId Project ID
     * @param datasetSplitOptions
     */
    splitDataset(projectId: number, datasetSplitOptions: DatasetSplitOptions, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * Returns a preview of how the project\'s dataset would be split if the current split options were applied. For each group (composite of label and/or metadata keys, or keep-together group), shows the number and percentage of samples that would be assigned to each split. This does not update the dataset, only provides a summary. Returns immediately on small datasets, or starts a job on larger datasets.
     * @summary Split dataset preview
     * @param projectId Project ID
     * @param datasetSplitOptions
     */
    splitDatasetPreview(projectId: number, datasetSplitOptions: DatasetSplitOptions, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DatasetSplitPreviewResponse | StartJobResponse>;
    /**
     * Split a video sample into individual frames. Depending on the length of the video sample this will either execute immediately or return the ID of a job that will perform this action.
     * @summary Split sample into frames
     * @param projectId Project ID
     * @param sampleId Sample ID
     * @param splitSampleInFramesRequest
     */
    splitSampleInFrames(projectId: number, sampleId: number, splitSampleInFramesRequest: SplitSampleInFramesRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse | StartJobResponse>;
    /**
     * When segmenting a sample into smaller segments, store the segment length to ensure uniform segment lengths.
     * @summary Store the last segment length
     * @param projectId Project ID
     * @param storeSegmentLengthRequest
     */
    storeSegmentLength(projectId: number, storeSegmentLengthRequest: StoreSegmentLengthRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Track objects between two samples. Source sample should have bounding boxes set.
     * @summary Track objects
     * @param projectId Project ID
     * @param trackObjectsRequest
     */
    trackObjects(projectId: number, trackObjectsRequest: TrackObjectsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<TrackObjectsResponse>;
    /**
     * Used internally (from a data pipeline) to upload a picture of the data explorer
     * @summary Upload a data explorer screenshot
     * @param projectId Project ID
     * @param image
     */
    uploadDataExplorerScreenshot(projectId: number, params: uploadDataExplorerScreenshotFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum TestApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type uploadVersionArchiveFormParams = {
    zip: RequestFile;
};
export type TestApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class TestApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: TestApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: TestApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: TestApiOpts);
    get opts(): TestApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: TestApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Create a new user for testing/benchmarking purposes. Users created via this API are marked with `analytics_type = \'test\'`.  If name/username/email are not provided, random values are generated.
     * @summary Create a test user
     * @param createTestUserRequest
     */
    createTestUser(createTestUserRequest: CreateTestUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateTestUserResponse>;
    /**
     * Delete a user with `analytics_type = \'test\'` by user ID.
     * @summary Delete a test user
     * @param deleteTestUserRequest
     */
    deleteTestUser(deleteTestUserRequest: DeleteTestUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DeleteTestUserResponse>;
    /**
     * Test-only API to insert mock aggregate data for model monitoring.
     * @summary Add mock summary data for model monitoring.
     * @param projectId Project ID
     * @param testAddMockModelMonitoringDataRequest
     */
    testAddMockModelMonitoringData(projectId: number, testAddMockModelMonitoringDataRequest: TestAddMockModelMonitoringDataRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Replace a version archive zip with a new zip. This is an internal API, used for testing purposes.
     * @summary Upload version archive
     * @param projectId Project ID
     * @param versionId Version ID
     * @param zip
     */
    uploadVersionArchive(projectId: number, versionId: number, params: uploadVersionArchiveFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum ThemesApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type updateThemeFaviconFormParams = {
    image: RequestFile;
};
export type ThemesApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class ThemesApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: ThemesApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: ThemesApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: ThemesApiOpts);
    get opts(): ThemesApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: ThemesApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Delete a theme given its unique identifier.
     * @summary Delete theme by ID
     * @param themeId Theme ID
     */
    deleteTheme(themeId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get a theme given its unique identifier.
     * @summary Get theme by ID
     * @param themeId Theme ID
     */
    getTheme(themeId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetThemeResponse>;
    /**
     * Get all available Studio themes.
     * @summary Get themes
     */
    getThemes(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetThemesResponse>;
    /**
     * Update some or all theme colors.
     * @summary Update theme colors
     * @param themeId Theme ID
     * @param updateThemeColorsRequest
     */
    updateThemeColors(themeId: number, updateThemeColorsRequest: UpdateThemeColorsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update the theme favicon
     * @summary Update theme favicon
     * @param themeId Theme ID
     * @param image
     */
    updateThemeFavicon(themeId: number, params: updateThemeFaviconFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update some or all theme logos.
     * @summary Update theme logos
     * @param themeId Theme ID
     * @param updateThemeLogosRequest
     */
    updateThemeLogos(themeId: number, updateThemeLogosRequest: UpdateThemeLogosRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum ThirdPartyAuthApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type authorizeThirdPartyFormParams = {
    nextUrl: string;
};
export type ThirdPartyAuthApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class ThirdPartyAuthApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: ThirdPartyAuthApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: ThirdPartyAuthApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: ThirdPartyAuthApiOpts);
    get opts(): ThirdPartyAuthApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: ThirdPartyAuthApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Authorize a third party to access a project
     * @summary Give access to project
     * @param projectId Project ID
     * @param authId Auth ID
     * @param nextUrl The URL to redirect to after authorization is completed.
     */
    authorizeThirdParty(projectId: number, authId: number, params: authorizeThirdPartyFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<any>;
    /**
     * Create a new third party authentication partner
     * @summary Create third party auth
     * @param createThirdPartyAuthRequest
     */
    createThirdPartyAuth(createThirdPartyAuthRequest: CreateThirdPartyAuthRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateThirdPartyAuthResponse>;
    /**
     * Login as a user as a third-party authentication provider. If the user does not exists, it\'s automatically created. You can only log in as users that were previously created by you.
     * @summary Create or login a user
     * @param authId Auth ID
     * @param createUserThirdPartyRequest
     */
    createUserThirdParty(authId: number, createUserThirdPartyRequest: CreateUserThirdPartyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateUserThirdPartyResponse>;
    /**
     * Delete a third party authentication partner
     * @summary Delete third party auth
     * @param authId Auth ID
     */
    deleteThirdPartyAuth(authId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get information about all third party authentication partners
     * @summary Get all third party auth
     */
    getAllThirdPartyAuth(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAllThirdPartyAuthResponse>;
    /**
     * Get information about a third party authentication partner
     * @summary Get third party auth
     * @param authId Auth ID
     */
    getThirdPartyAuth(authId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetThirdPartyAuthResponse>;
    /**
     * Update a third party authentication partner
     * @summary Update third party auth
     * @param authId Auth ID
     * @param updateThirdPartyAuthRequest
     */
    updateThirdPartyAuth(authId: number, updateThirdPartyAuthRequest: UpdateThirdPartyAuthRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum UploadPortalApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type viewPortalFileQueryParams = {
    path: string;
};
export type UploadPortalApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class UploadPortalApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: UploadPortalApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: UploadPortalApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: UploadPortalApiOpts);
    get opts(): UploadPortalApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: UploadPortalApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Creates a signed link to securely upload data to s3 bucket directly from the client.
     * @summary Create pre-signed S3 upload link
     * @param portalId Portal ID
     * @param createSignedUploadLinkRequest
     */
    createSignedUploadLink(portalId: number, createSignedUploadLinkRequest: CreateSignedUploadLinkRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateSignedUploadLinkResponse>;
    /**
     * Delete a file from an upload portal (requires JWT auth).
     * @summary Delete file from portal
     * @param portalId Portal ID
     * @param deletePortalFileRequest
     */
    deletePortalFile(portalId: number, deletePortalFileRequest: DeletePortalFileRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Download a file from an upload portal (requires JWT auth). Will return a signed URL to the bucket.
     * @summary Download file from portal
     * @param portalId Portal ID
     * @param downloadPortalFileRequest
     */
    downloadPortalFile(portalId: number, downloadPortalFileRequest: DownloadPortalFileRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<DownloadPortalFileResponse>;
    /**
     * Get information about a portal
     * @summary Portal info
     * @param portalId Portal ID
     */
    getPortalInfo(portalId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<PortalInfoResponse>;
    /**
     * List all files and directories in specified prefix.
     * @summary List files in portal
     * @param portalId Portal ID
     * @param listPortalFilesInFolderRequest
     */
    listPortalFilesInFolder(portalId: number, listPortalFilesInFolderRequest: ListPortalFilesInFolderRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListPortalFilesInFolderResponse>;
    /**
     * Rename a file on an upload portal (requires JWT auth).
     * @summary Rename file from portal
     * @param portalId Portal ID
     * @param renamePortalFileRequest
     */
    renamePortalFile(portalId: number, renamePortalFileRequest: RenamePortalFileRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * View a file that\'s located in an upload portal (requires JWT auth). File might be converted (e.g. Parquet) or truncated (e.g. CSV).
     * @summary View file from portal
     * @param portalId Portal ID
     * @param path Path to file in portal
     */
    viewPortalFile(portalId: number, queryParams: viewPortalFileQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ArrayBuffer>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum UserApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type getCurrentUserQueryParams = {
    excludeProjects?: boolean;
};
export type uploadPhotoCurrentUserFormParams = {
    photo: RequestFile;
};
export type uploadPhotoUserFormParams = {
    photo: RequestFile;
};
export type UserApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class UserApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: UserApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: UserApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: UserApiOpts);
    get opts(): UserApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: UserApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * To access some models or tooling, you might need to first accept an End-User License Agreement. The full list of available EULAs are listed via `GetUserResponse`.
     * @summary Accept End-User License Agreement
     * @param acceptEulaRequest
     */
    acceptEula(acceptEulaRequest: AcceptEulaRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Accept Terms of Service.
     * @summary Accept Terms of Service
     */
    acceptTermsOfService(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Activate the current user account (requires an activation code). This function is only available through a JWT token.
     * @summary Activate current user
     * @param activateUserOrVerifyEmailRequest
     */
    activateCurrentUser(activateUserOrVerifyEmailRequest: ActivateUserOrVerifyEmailRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Activate a user account (requires an activation code). This function is only available through a JWT token.
     * @summary Activate user
     * @param userId User ID
     * @param activateUserOrVerifyEmailRequest
     */
    activateUser(userId: number, activateUserOrVerifyEmailRequest: ActivateUserOrVerifyEmailRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Activate a user that was created by a third party. This function is only available through a JWT token.
     * @summary Activate user by third party activation code
     * @param activateUserByThirdPartyActivationCodeRequest
     */
    activateUserByThirdPartyActivationCode(activateUserByThirdPartyActivationCodeRequest: ActivateUserByThirdPartyActivationCodeRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetJWTResponse>;
    /**
     * Change the password for the current user account. This function is only available through a JWT token.
     * @summary Change password current user
     * @param changePasswordRequest
     */
    changePasswordCurrentUser(changePasswordRequest: ChangePasswordRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Change the password for a user account. This function is only available through a JWT token.
     * @summary Change password
     * @param userId User ID
     * @param changePasswordRequest
     */
    changePasswordUser(userId: number, changePasswordRequest: ChangePasswordRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Convert current evaluation user account to regular account.
     * @summary Convert current evaluation user
     * @param convertUserRequest
     */
    convertCurrentUser(convertUserRequest: ConvertUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Create a developer profile for the current active user.
     * @summary Create developer profile
     */
    createDeveloperProfile(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateDeveloperProfileResponse>;
    /**
     * Creates an enterprise trial user and a new trial organization, and redirects the user to the new organization. This API is internal (it requires some signed fields), sign up at https://studio.edgeimpulse.com/signup instead.
     * @summary Create enterprise trial user
     * @param createEnterpriseTrialUserRequest Trial request
     */
    createEnterpriseTrialUser(createEnterpriseTrialUserRequest: CreateEnterpriseTrialUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateEnterpriseTrialResponse>;
    /**
     * Create a new user for the Professional Plan and a new project. Note that the Professional plan will not be enabled until the payment is successful. This API is internal (it requires some signed fields), sign up at https://studio.edgeimpulse.com/signup instead.
     * @summary Create Professional Tier user
     * @param createProTierUserRequest
     */
    createProTierUser(createProTierUserRequest: CreateProTierUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateUserResponse>;
    /**
     * Create a new user and project. This API is no longer publicly available. Sign up at https://studio.edgeimpulse.com/signup instead.
     * @summary Create user
     * @param createUserRequest
     */
    createUser(createUserRequest: CreateUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateUserResponse>;
    /**
     * Delete a user. This function is only available through a JWT token, and can only remove the current user.
     * @summary Delete current user
     * @param deleteUserRequest
     */
    deleteCurrentUser(deleteUserRequest: DeleteUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete user profile photo. This function is only available through a JWT token.
     * @summary Delete photo
     */
    deletePhotoCurrentUser(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Delete a user. This function is only available through a JWT token, and can only remove the current user.
     * @summary Delete user
     * @param userId User ID
     * @param deleteUserRequest
     */
    deleteUser(userId: number, deleteUserRequest: DeleteUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Get information about the current user. This function is only available through a JWT token.
     * @summary Get current user
     * @param excludeProjects If set to \&quot;true\&quot;, the \&quot;projects\&quot; field is left empty (will be faster if you call this function a lot). Use &#x60;getCurrentUserProjects&#x60; to get the project list in a separate call.
     */
    getCurrentUser(queryParams?: getCurrentUserQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetUserResponse>;
    /**
     * Get projects for the current user. This returns all projects regardless of whitelabel. This function is only available through a JWT token.
     * @summary Get current user projects
     */
    getCurrentUserProjects(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetUserProjectsResponse>;
    /**
     * Get information about a user. This function is only available through a JWT token.
     * @summary Get user
     * @param userId User ID
     */
    getUser(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetUserResponse>;
    /**
     * Get information about a user through an activation code. This function is only available through a JWT token.
     * @summary Get user by third party activation code
     * @param userByThirdPartyActivationRequest
     */
    getUserByThirdPartyActivationCode(userByThirdPartyActivationRequest: UserByThirdPartyActivationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetUserResponse>;
    /**
     * Tells whether a user is registered and whether it needs to set its password.
     * @summary Get user registration state
     * @param usernameOrEmail Username or email
     */
    getUserNeedToSetPassword(usernameOrEmail: string, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetUserNeedToSetPasswordResponse>;
    /**
     * Get a list of all emails sent by Edge Impulse to the current user. This function is only available through a JWT token, and is not available for all users.
     * @summary List emails
     */
    listEmailsCurrentUser(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListEmailResponse>;
    /**
     * Get a list of all emails sent by Edge Impulse to a user. This function is only available through a JWT token, and is not available for all users.
     * @summary List emails
     * @param userId User ID
     */
    listEmailsUser(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListEmailResponse>;
    /**
     * Get a list of all enterprise trials for a user. This function is only available through a JWT token.
     * @summary Get enterprise trials
     * @param userId User ID
     */
    listEnterpriseTrialsUser(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListEnterpriseTrialsResponse>;
    /**
     * List all organizational storage buckets that the current user has access to. This function is only available through a JWT token.
     * @summary Get buckets current user
     */
    listOrganizationBucketsCurrentUser(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationBucketsUserResponse>;
    /**
     * List all organizational storage buckets that a user has access to. This function is only available through a JWT token.
     * @summary Get buckets
     * @param userId User ID
     */
    listOrganizationBucketsUser(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationBucketsUserResponse>;
    /**
     * List all organizations that the current user is a member of. This function is only available through a JWT token.
     * @summary Get organizations
     */
    listOrganizationsCurrentUser(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationsResponse>;
    /**
     * List all organizations for a user. This function is only available through a JWT token.
     * @summary Get organizations
     * @param userId User ID
     */
    listOrganizationsUser(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<ListOrganizationsResponse>;
    /**
     * Request a new activation code for the current user. This function is only available through a JWT token.
     * @summary Request activation code
     */
    requestActivationCodeCurrentUser(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Request a new activation code. This function is only available through a JWT token.
     * @summary Request activation code
     * @param userId User ID
     */
    requestActivationCodeUser(userId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Request a password reset link for a user.
     * @summary Request reset password
     * @param requestResetPasswordRequest
     */
    requestResetPassword(requestResetPasswordRequest: RequestResetPasswordRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Reset the password for a user.
     * @summary Reset password
     * @param resetPasswordRequest
     */
    resetPassword(resetPasswordRequest: ResetPasswordRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Send feedback to Edge Impulse or get in touch with sales.
     * @summary Send feedback
     * @param userId User ID
     * @param sendUserFeedbackRequest
     */
    sendUserFeedback(userId: number, sendUserFeedbackRequest: SendUserFeedbackRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Send an upgrade to Enterprise request to Edge Impulse.
     * @summary Send upgrade request
     * @param userId User ID
     * @param enterpriseUpgradeOrTrialExtensionRequest
     */
    sendUserUpgradeRequest(userId: number, enterpriseUpgradeOrTrialExtensionRequest: EnterpriseUpgradeOrTrialExtensionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Set the password for a new SSO user. This function is only available through an SSO access token.
     * @summary Set password for SSO user
     * @param userId User ID
     * @param setUserPasswordRequest
     */
    setUserPassword(userId: number, setUserPasswordRequest: SetUserPasswordRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Create an enterprise trial for the current user. Users can only go through a trial once.
     * @summary Start enterprise trial
     * @param startEnterpriseTrialRequest
     */
    startEnterpriseTrial(startEnterpriseTrialRequest: StartEnterpriseTrialRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateEnterpriseTrialResponse>;
    /**
     * Update user properties such as name. This function is only available through a JWT token.
     * @summary Update current user
     * @param updateUserRequest
     */
    updateCurrentUser(updateUserRequest: UpdateUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update user properties such as name. This function is only available through a JWT token.
     * @summary Update user
     * @param userId User ID
     * @param updateUserRequest
     */
    updateUser(userId: number, updateUserRequest: UpdateUserRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Upload a photo for the current user. This function is only available through a JWT token.
     * @summary Upload photo
     * @param photo
     */
    uploadPhotoCurrentUser(params: uploadPhotoCurrentUserFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadUserPhotoResponse>;
    /**
     * Upload a photo for a user. This function is only available through a JWT token, and is not available for all users.
     * @summary Upload photo
     * @param userId User ID
     * @param photo
     */
    uploadPhotoUser(userId: number, params: uploadPhotoUserFormParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UploadUserPhotoResponse>;
    /**
     * Cancel the current subscription.
     * @summary Cancel subscription
     * @param downgradeSubscriptionRequest
     */
    userCancelSubscription(downgradeSubscriptionRequest: DowngradeSubscriptionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Disable MFA on this account using an TOTP token.
     * @summary Remove TOTP MFA key
     * @param userDeleteTotpMfaKeyRequest
     */
    userDeleteTotpMfaKey(userDeleteTotpMfaKeyRequest: UserDeleteTotpMfaKeyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Dismiss a notification
     * @summary Dismiss a notification
     * @param userDismissNotificationRequest
     */
    userDismissNotification(userDismissNotificationRequest: UserDismissNotificationRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Creates a new MFA key, only allowed if the user has no MFA configured. TOTP tokens use SHA-1 algorithm.
     * @summary Generate a new TOTP MFA key
     */
    userGenerateNewTotpMfaKey(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UserGenerateNewMfaKeyResponse>;
    /**
     * Get billable compute metrics for a user. This function is only available to users with an active subscription.
     * @summary Get user billable compute metrics
     */
    userGetSubscriptionMetrics(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UserSubscriptionMetricsResponse>;
    /**
     * Enable MFA on this account using an TOTP token. First create a new key via `userGenerateNewTotpMfaKey`.
     * @summary Set TOTP MFA key
     * @param userSetTotpMfaKeyRequest
     */
    userSetTotpMfaKey(userSetTotpMfaKeyRequest: UserSetTotpMfaKeyRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<UserSetTotpMfaKeyResponse>;
    /**
     * Stop a pending cancellation. If you schedule a subscription to be canceled, and the subscription hasn\'t yet reached the end of the billing period, you can stop the cancellation. After a subscription has been canceled, you can\'t reactivate it.
     * @summary Undo subscription cancellation
     */
    userUndoCancelSubscription(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Upgrade the current subscription.
     * @summary Upgrade subscription
     * @param upgradeSubscriptionRequest
     */
    userUpgradeSubscription(upgradeSubscriptionRequest: UpgradeSubscriptionRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<any>;
    /**
     * Verify whether the reset password code for the user is valid.
     * @summary Verify reset password code
     * @param verifyResetPasswordRequest
     */
    verifyResetPassword(verifyResetPasswordRequest: VerifyResetPasswordRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Verify the signup approval using the provided verification code.
     * @summary Verify signup approval
     * @param activateUserOrVerifyEmailRequest
     */
    verifySignupApproval(activateUserOrVerifyEmailRequest: ActivateUserOrVerifyEmailRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VerifySignupApprovalResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum VlmApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
type getVlmInferenceQueryParams = {
    configId?: number;
};
export type VlmApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class VlmApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: VlmApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: VlmApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: VlmApiOpts);
    get opts(): VlmApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: VlmApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Returns a list of all Vision Language Models (VLMs) supported for the project.
     * @summary Get all VLMs
     * @param projectId Project ID
     */
    getAllModels(projectId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VlmGetAllModelsResponse>;
    /**
     * Returns details of a Vision Language Model (VLM) supported for the project.
     * @summary Get VLM model
     * @param projectId Project ID
     * @param modelId The ID of the VLM model to retrieve
     */
    getModelById(projectId: number, modelId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VlmGetModelResponse>;
    /**
     * Get results of a previous inferencing job for a given VLM learn block. Pass a config ID to get results for a past config version, or leave undefined to get the latest set of results.
     * @summary Get past inference results
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param configId Optional VLM configuration ID
     */
    getVlmInference(projectId: number, learnId: number, queryParams?: getVlmInferenceQueryParams, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<VlmGetInferenceResultsResponse>;
    /**
     * Test a VLM learn block by running inference against samples. If model config is passed, this will also update the config for the given learn block, allowing for quick iteration.
     * @summary Run inference using a VLM learn block
     * @param projectId Project ID
     * @param learnId Learn Block ID, use the impulse functions to retrieve the ID
     * @param vlmInferenceRequest
     */
    runVlmInference(projectId: number, learnId: number, vlmInferenceRequest: VlmInferenceRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<StartVlmInferenceJobResponse>;
    /**
     * Initializes the inference worker, speeding it up for subsequent requests.
     * @summary Warm up a given VLM model
     * @param projectId Project ID
     * @param modelId The ID of the VLM model to retrieve
     */
    warmUpVlmModel(projectId: number, modelId: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}
export {};


/**
 * Edge Impulse API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
export enum WhitelabelsApiApiKeys {
    ApiKeyAuthentication = 0,
    JWTAuthentication = 1,
    JWTHttpHeaderAuthentication = 2
}
export type WhitelabelsApiOpts = {
    extraHeaders?: Record<string, string>;
};
export class WhitelabelsApi {
    protected _basePath: string;
    protected defaultHeaders: Record<string, string>;
    protected _opts: WhitelabelsApiOpts;
    protected authentications: {
        default: Authentication;
        ApiKeyAuthentication: ApiKeyAuth;
        OAuth2: OAuth;
        JWTAuthentication: ApiKeyAuth;
        JWTHttpHeaderAuthentication: ApiKeyAuth;
    };
    protected handleResponse(response: Response | Response, returnType: string | undefined): Promise<any>;
    constructor(basePath?: string, opts?: WhitelabelsApiOpts);
    set basePath(basePath: string);
    get basePath(): string;
    set opts(opts: WhitelabelsApiOpts);
    get opts(): WhitelabelsApiOpts;
    setDefaultAuthentication(auth: Authentication): void;
    setApiKey(key: WhitelabelsApiApiKeys, value: string | undefined): void;
    set accessToken(token: string);
    /**
     * Create a new white label
     * @summary Create a new white label
     * @param createWhitelabelRequest
     */
    createWhitelabel(createWhitelabelRequest: CreateWhitelabelRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<CreateWhitelabelResponse>;
    /**
     * Deletes the white label with the given id.
     * @summary Deletes a white label
     * @param whitelabelIdentifier Whitelabel ID
     */
    deleteWhitelabel(whitelabelIdentifier: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Lists all possible DSP and ML blocks available for this white label.
     * @summary Get impulse blocks
     * @param whitelabelIdentifier Whitelabel ID
     */
    getAllImpulseBlocks(whitelabelIdentifier: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetImpulseBlocksResponse>;
    /**
     * Retrieve the list of registered white labels.
     * @summary List the registered white labels
     */
    getAllWhitelabels(options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetAllWhitelabelsResponse>;
    /**
     * Retrieve all the information about this white label.
     * @summary White label information
     * @param whitelabelIdentifier Whitelabel ID
     */
    getWhitelabel(whitelabelIdentifier: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetWhitelabelResponse>;
    /**
     * Get a white label domain given its unique identifier.
     * @summary Get white label domain
     * @param whitelabelIdentifier Whitelabel ID
     */
    getWhitelabelDomain(whitelabelIdentifier: number, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GetWhitelabelDomainResponse>;
    /**
     * Update some or all of the deployment targets enabled for this white label.
     * @summary Update deployment targets
     * @param whitelabelIdentifier Whitelabel ID
     * @param updateWhitelabelDeploymentTargetsRequest
     */
    updateDeploymentTargets(whitelabelIdentifier: number, updateWhitelabelDeploymentTargetsRequest: UpdateWhitelabelDeploymentTargetsRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
    /**
     * Update the white label with the given id.
     * @summary Update white label
     * @param whitelabelIdentifier Whitelabel ID
     * @param updateWhitelabelInternalRequest
     */
    updateWhitelabel(whitelabelIdentifier: number, updateWhitelabelInternalRequest: UpdateWhitelabelInternalRequest, options?: {
        headers: {
            [name: string]: string;
        };
    }): Promise<GenericApiResponse>;
}


export type AIAction = {
    id: number;
    /**
    * Manually set name (optional)
    */
    name?: string;
    /**
    * Name to show to the user when interacting with this action (e.g. in a table, or when running the action). Will
    * return either "name" (if present), or a name derived from the transformation block.
    */
    displayName: string;
    config: AIActionsConfig;
    previewConfig: AIActionsConfig;
    /**
    * When rendering preview items, the max amount of items to show (pass this into the previewAIActionsSamples)
    */
    maxDataPreviewCount: number;
    /**
    * Number of grid columns to use during preview.
    */
    gridColumnCount: number;
    /**
    * Contains the last preview state, this is filled with whatever was ran last, so when you refresh an AI Action it'll
    * always have the exact same state as before refresh.
    */
    lastPreviewState?: {
        samples: Sample[];
        proposedChanges: AIActionLastPreviewStateProposedChanges[];
    };
    /**
    * After the action runs, add this key/value pair as metadata on the affected samples.
    */
    setMetadataAfterRunning: DspAutotunerResultsAllOfResults[];
    /**
    * If enabled, will load cached results from the previous preview job for unchanged jobs. Disable this if you're
    * developing your own custom AI Labeling job, and want to always re-run all steps.
    */
    cacheUnchangedSteps: boolean;
};


export type AIActionLastPreviewStateProposedChanges = {
    sampleId: number;
    step: number;
    proposedChanges: SampleProposedChanges;
};


export type AIActionsConfig = {
    dataCategory: AIActionsDataCategory;
    /**
    * Metadata key to filter on. Required if dataCategory is equal to "dataWithoutMetadataKey" or "dataWithMetadata".
    */
    dataMetadataKey?: string;
    /**
    * Metadata value to filter on. Required if dataCategory is equal to "dataWithMetadata".
    */
    dataMetadataValue?: string;
    steps: AIActionsConfigStep[];
};


export type AIActionsConfigStep = {
    /**
    * The selected transformation block ID.
    */
    transformationBlockId: number;
    /**
    * Parameters for the transformation block. These map back to the parameters in OrganizationTransformationBlock
    * 'parameters' property.
    */
    parameters: {
        [key: string]: string;
    };
};


export type AIActionsDataCategory = 'allData' | 'unlabeledData' | 'enabledData' | 'dataWithoutMetadataKey' | 'dataWithMetadata';
export const AIActionsDataCategoryValues: string[];


export type AIActionsOperatesOn = 'images_object_detection' | 'images_single_label' | 'audio' | 'other';
export const AIActionsOperatesOnValues: string[];


export type AcceptEulaRequest = {
    name: UserEulaName;
};


export type ActivateUserByThirdPartyActivationCodeRequest = {
    activationCode: string;
    /**
    * Password, minimum length 8 characters.
    */
    password: string;
    /**
    * Your name
    */
    name?: string;
    /**
    * Username, minimum 4 and maximum 30 characters. May contain alphanumeric characters, hyphens, underscores and dots.
    * Validated according to `^(?=.{4,30}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._-]+(?<![_.])$`.
    */
    username: string;
    /**
    * Whether the user accepted the privacy policy
    */
    privacyPolicy?: boolean;
};


export type ActivateUserOrVerifyEmailRequest = {
    /**
    * Activation or verification code (sent via email)
    */
    code: string;
};


export type ActorOAuthClient = {
    type: ActorOAuthClientTypeEnum;
    id: number;
    clientId: string;
    name: string;
    logoUrl?: string;
    user?: CreatedUpdatedByUser;
};
export type ActorOAuthClientTypeEnum = 'oauthClient';
export const ActorOAuthClientTypeEnumValues: string[];


export type ActorProjectApiKey = {
    id: number;
    apiKey: string;
    isDevelopmentKey: boolean;
    name: string;
    created: Date;
    role: ActorProjectApiKeyRoleEnum;
    createdByUser?: CreatedUpdatedByUser;
    /**
    * When this API key was last used.
    */
    lastUsed?: ProjectApiKeyLastUsed;
    /**
    * If the key has a ttl set, when the key will expire
    */
    expires?: Date;
    /**
    * OAuth client_id that created this API key through an OAuth-scoped key endpoint.
    */
    createdViaOAuthClientId?: string;
    type: ActorProjectApiKeyTypeEnum;
};
export type ActorProjectApiKeyRoleEnum = 'admin' | 'readonly' | 'ingestiononly' | 'ingestion_deployment' | 'wladmin';
export const ActorProjectApiKeyRoleEnumValues: string[];
export type ActorProjectApiKeyTypeEnum = 'projectApiKey';
export const ActorProjectApiKeyTypeEnumValues: string[];


export type ActorUser = {
    id: number;
    name: string;
    username: string;
    photo?: string;
    type: ActorUserTypeEnum;
};
export type ActorUserTypeEnum = 'user';
export const ActorUserTypeEnumValues: string[];


export type AddApiKeyRequest = {
    /**
    * Description of the key
    */
    name: string;
    /**
    * Optional: API key. This needs to start with `ei_` and will need to be at least 32 characters long. If this field
    * is not passed in, a new API key is generated for you.
    */
    apiKey?: string;
};


export type AddApiKeyResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * ID of the new API key
    */
    id: number;
    /**
    * New API Key (starts with "ei_...") - this'll be shared only once.
    */
    apiKey: string;
};


export type AddCollaboratorRequest = {
    /**
    * Username or e-mail address
    */
    usernameOrEmail: string;
};


export type AddHmacKeyRequest = {
    /**
    * Description of the key
    */
    name: string;
    /**
    * HMAC key.
    */
    hmacKey: string;
    /**
    * Whether this key should be used as a development key.
    */
    isDevelopmentKey: boolean;
};


export type AddIngestionOnlyProjectApiKeyRequest = {
    /**
    * Description of the key
    */
    name: string;
};


export type AddKerasFilesRequest = {
    zip: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type AddMemberRequest = {
    /**
    * Username or e-mail address
    */
    usernameOrEmail: string;
    role: OrganizationMemberRole;
    /**
    * Only used for 'guest' users. Limits the datasets the user has access to.
    */
    datasets: string[];
};


export type AddOrganizationApiKeyRequest = {
    /**
    * Description of the key
    */
    name: string;
    /**
    * Optional: API key. This needs to start with `ei_` and will need to be at least 32 characters long. If this field
    * is not passed in, a new API key is generated for you.
    */
    apiKey?: string;
    role: AddOrganizationApiKeyRequestRoleEnum;
    /**
    * Optional: time to live in seconds.
    */
    ttl?: number;
};
export type AddOrganizationApiKeyRequestRoleEnum = 'admin' | 'member';
export const AddOrganizationApiKeyRequestRoleEnumValues: string[];


export type AddOrganizationBucketRequest = {
    /**
    * Access key for the storage service (e.g., S3 access key, GCS access key)
    */
    accessKey: string;
    /**
    * Secret key for the storage service (e.g., S3 secret key, GCS secret key)
    */
    secretKey: string;
    /**
    * Endpoint URL for the storage service (e.g., S3 endpoint, custom endpoint for other services)
    */
    endpoint: string;
    /**
    * Name of the storage bucket
    */
    bucket: string;
    /**
    * Region of the storage service (if applicable)
    */
    region: string;
    /**
    * Set this if you don't have access to the root of this bucket. Only used to verify connectivity to this bucket.
    */
    checkConnectivityPrefix?: string;
    storageProvider?: StorageProvider;
};


export type AddOrganizationDataCampaignDashboardRequest = {
    name: string;
    /**
    * List of user IDs to notify for this dashboard (sent daily)
    */
    emailRecipientUids: number[];
    whenToEmail: AddOrganizationDataCampaignDashboardRequestWhenToEmailEnum;
    showNoOfDays: number;
};
export type AddOrganizationDataCampaignDashboardRequestWhenToEmailEnum = 'always' | 'on_changes' | 'never';
export const AddOrganizationDataCampaignDashboardRequestWhenToEmailEnumValues: string[];


export type AddOrganizationDataCampaignDashboardResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dataCampaignDashboardId: number;
};


export type AddOrganizationDataCampaignRequest = {
    id?: number;
    dataCampaignDashboardId: number;
    created?: Date;
    name: string;
    description: string;
    /**
    * List of user IDs that coordinate this campaign
    */
    coordinatorUids: number[];
    logo?: string;
    queries: DataCampaignQuery[];
    links: DataCampaignLink[];
    datasets: string[];
    pipelineIds: number[];
    projectIds: number[];
};


export type AddOrganizationDataCampaignResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dataCampaignId: number;
};


export type AddOrganizationDeployBlockRequest = {
    name: string;
    dockerContainer: string;
    description: string;
    cliArguments: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    photo?: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    integrateUrl?: string;
    privileged?: boolean;
    mountLearnBlock?: boolean;
    supportsEonCompiler?: boolean;
    showOptimizations?: boolean;
    category?: AddOrganizationDeployBlockRequestCategoryEnum;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly?: boolean;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
};
export type AddOrganizationDeployBlockRequestCategoryEnum = 'library' | 'firmware';
export const AddOrganizationDeployBlockRequestCategoryEnumValues: string[];


export type AddOrganizationDspBlockRequest = {
    name: string;
    dockerContainer: string;
    description: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    port: number;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly?: boolean;
};


export type AddOrganizationSecretRequest = {
    name: string;
    description: string;
    secret: string;
};


export type AddOrganizationTransferLearningBlockRequest = {
    name: string;
    dockerContainer: string;
    description: string;
    operatesOn: OrganizationTransferLearningOperatesOn;
    objectDetectionLastLayer?: ObjectDetectionLastLayer;
    implementationVersion: number;
    /**
    * Whether this block is publicly available to Edge Impulse users (if false, then only for members of the owning
    * organization)
    */
    isPublic?: boolean;
    /**
    * If `isPublic` is true, the list of devices (from latencyDevices) for which this model can be shown.
    */
    isPublicForDevices?: string[];
    publicProjectTierAvailability?: PublicProjectTierAvailability;
    /**
    * URL to the source code of this custom learn block.
    */
    repositoryUrl?: string;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
    imageInputScaling?: ImageInputScaling;
    /**
    * If set, requires this block to be scheduled on GPU.
    */
    indRequiresGpu?: boolean;
    /**
    * List of custom model variants produced when this block is trained. This is experimental and may change in the
    * future.
    */
    customModelVariants?: OrganizationTransferLearningBlockCustomVariant[];
    displayCategory?: BlockDisplayCategory;
    /**
    * If set, then this block is no longer available for training; and blockNoLongerAvailableReason should be set.
    */
    indBlockNoLongerAvailable?: boolean;
    /**
    * In Markdown format. Should be set if `indBlockNoLongerAvailable` is true, contains migration information for
    * existing users of this block.
    */
    blockNoLongerAvailableReason?: string;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly?: boolean;
};


export type AddOrganizationTransformationBlockRequest = {
    name: string;
    dockerContainer: string;
    /**
    * Whether to pass the `--metadata` parameter to the container.
    */
    indMetadata: boolean;
    description: string;
    cliArguments: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    additionalMountPoints: TransformationBlockAdditionalMountPoint[];
    operatesOn: AddOrganizationTransformationBlockRequestOperatesOnEnum;
    allowExtraCliArguments?: boolean;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
    /**
    * 15m for 15 minutes, 2h for 2 hours, 1d for 1 day. If not set, the default is 8 hours.
    */
    maxRunningTimeStr?: string;
    isPublic?: boolean;
    publicProjectTierAvailability?: PublicProjectTierAvailability;
    /**
    * URL to the source code of this custom learn block.
    */
    repositoryUrl?: string;
    /**
    * Whether to show this block in 'Data sources'. Only applies for standalone blocks. (defaults to 'true' when not
    * provided)
    */
    showInDataSources?: boolean;
    /**
    * Whether to show this block in 'Create transformation job'. Only applies for standalone blocks.
    */
    showInCreateTransformationJob?: boolean;
    /**
    * Whether to show this block in 'Synthetic data'. Only applies for standalone blocks.
    */
    showInSyntheticData?: boolean;
    /**
    * Whether to show this block in 'AI Labeling'. Only applies for standalone blocks.
    */
    showInAIActions?: boolean;
    environmentVariables?: EnvironmentVariable[];
    /**
    * For AI labeling blocks, this lists the data types that the block supports. If this field is empty then there's no
    * information about supported data types.
    */
    aiActionsOperatesOn?: AIActionsOperatesOn[];
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly?: boolean;
};
export type AddOrganizationTransformationBlockRequestOperatesOnEnum = 'file' | 'directory' | 'dataitem' | 'standalone';
export const AddOrganizationTransformationBlockRequestOperatesOnEnumValues: string[];


export type AddProjectApiKeyRequest = {
    /**
    * Description of the key
    */
    name: string;
    /**
    * Optional: API key. This needs to start with `ei_` and will need to be at least 32 characters long. If this field
    * is not passed in, a new API key is generated for you.
    */
    apiKey?: string;
    /**
    * Whether this key should be used as a development key.
    */
    isDevelopmentKey: boolean;
    role: AddProjectApiKeyRequestRoleEnum;
    /**
    * Optional: time to live in seconds.
    */
    ttl?: number;
};
export type AddProjectApiKeyRequestRoleEnum = 'admin' | 'readonly' | 'ingestiononly' | 'ingestion_deployment';
export const AddProjectApiKeyRequestRoleEnumValues: string[];


export type AdditionalMetric = {
    name: string;
    value: string;
    fullPrecisionValue: number;
    tooltipText?: string;
    link?: string;
};


export type AdminAddDisallowedEmailDomainRequest = {
    domain: string;
};


export type AdminAddOrUpdateSSODomainIdPsRequest = {
    idps: string[];
};


export type AdminAddOrganizationApiKeyRequest = {
    /**
    * Description of the key
    */
    name: string;
    /**
    * Optional: API key. This needs to start with `ei_` and will need to be at least 32 characters long. If this field
    * is not passed in, a new API key is generated for you.
    */
    apiKey?: string;
    role: AdminAddOrganizationApiKeyRequestRoleEnum;
    /**
    * Time to live in seconds. If not set, the key will expire in 1 minute.
    */
    ttl?: number;
};
export type AdminAddOrganizationApiKeyRequestRoleEnum = 'admin' | 'member';
export const AdminAddOrganizationApiKeyRequestRoleEnumValues: string[];


export type AdminAddOrganizationUserRequest = {
    /**
    * Username or email of the user to be added to the project or organization. If no user is provided, the user ID
    * attached to the JWT will be used.
    */
    usernameOrEmail?: string;
    role: OrganizationMemberRole;
    /**
    * Only used for 'guest' users. Limits the datasets the user has access to.
    */
    datasets: string[];
};


export type AdminAddProjectApiKeyRequest = {
    /**
    * Description of the key
    */
    name: string;
    /**
    * Optional: API key. This needs to start with `ei_` and will need to be at least 32 characters long. If this field
    * is not passed in, a new API key is generated for you.
    */
    apiKey?: string;
    /**
    * Time to live in seconds. If not set, the key will expire in 1 minute.
    */
    ttl?: number;
};


export type AdminAddProjectUserRequest = AdminAddUserRequest;


export type AdminAddUserRequest = {
    /**
    * Username or email of the user to be added to the project or organization. If no user is provided, the user ID
    * attached to the JWT will be used.
    */
    usernameOrEmail?: string;
};


export type AdminApiOrganization = {
    id: number;
    /**
    * EdgeImpulse Inc.
    */
    name: string;
    logo?: string;
    headerImg?: string;
    showHeaderImgMask: boolean;
    users: OrganizationUser[];
    isDeveloperProfile: boolean;
    /**
    * Unique identifier of the white label this organization belongs to, if any.
    */
    whitelabelId: number | null;
    /**
    * Name of the white label this organization belongs to, if any.
    */
    whitelabelName?: string;
    /**
    * Array with organizational projects
    */
    projects: Project[];
    /**
    * Unique identifier of the trial this organization belongs to, if any.
    */
    trialId: number | null;
    /**
    * Date when the trial expired, if any. A expired trial has a grace period of 30 days before it's associated
    * organization is deleted.
    */
    trialExpiredDate: Date | null;
    /**
    * Date when the trial was upgraded to a full enterprise account, if any.
    */
    trialUpgradedDate: Date | null;
    /**
    * Date when the organization was created.
    */
    created: Date;
    /**
    * Date when the current contract started, if any.
    */
    contractStartDate?: Date | null;
    /**
    * The date in which the organization was deleted. If the organization is not deleted, this field is not set.
    */
    deletedDate?: Date;
};


export type AdminApiProject = {
    id: number;
    name: string;
    description?: string;
    created?: Date;
    /**
    * User or organization that owns the project
    */
    owner: string;
    ownerUserId?: number;
    ownerOrganizationId?: number;
    lastAccessed?: Date;
    /**
    * Unique identifier of the white label this project belongs to, if any.
    */
    whitelabelId?: number | null;
    tier?: ProjectTierEnum;
    category?: ProjectType;
    deletedDate?: Date;
};


export type AdminApiUser = {
    id: number;
    username: string;
    name: string;
    email: string;
    photo?: string;
    created: Date;
    lastSeen?: Date;
    staffInfo: StaffInfo;
    pending: boolean;
    jobTitle?: string;
    /**
    * List of permissions the user has
    */
    permissions?: Permission[];
    companyName?: string;
    activated: boolean;
    /**
    * Whether the user has configured multi-factor authentication
    */
    mfaConfigured: boolean;
    /**
    * Stripe customer ID, if any.
    */
    stripeCustomerId?: string;
    /**
    * Whether the user has pending payments.
    */
    hasPendingPayments?: boolean;
    tier: UserTierEnum;
    /**
    * List of identity providers (e.g. Google, GitHub) that the user has used to sign in with
    */
    idps?: string[];
    /**
    * Organizations that the user is a member of. Only filled when requesting information about yourself.
    */
    organizations: UserOrganization[];
    projects: Project[];
    /**
    * Experiments the user has access to. Enabling experiments can only be done through a JWT token.
    */
    experiments: UserExperiment[];
    /**
    * Whether this is an ephemeral evaluation account.
    */
    evaluation?: boolean;
    /**
    * Whether this user is an ambassador.
    */
    ambassador?: boolean;
    /**
    * Whether the user is suspended.
    */
    suspended: boolean;
    /**
    * Current or past enterprise trials.
    */
    trials: EnterpriseTrial[];
    /**
    * Metrics for the last 365 days
    */
    dailyMetrics?: DailyMetricsRecord[] | null;
};


export type AdminCreateOauthClientRequest = OauthClientProperties;


export type AdminCreateOauthClientResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Unique identifier of the created entity.
    */
    id: number;
    /**
    * The public, unique identifier assigned to the OAuth client. This value is used by the client application to
    * identify itself during OAuth authentication and authorization flows.
    */
    clientId: string;
    /**
    * A confidential secret known only to the client and the authorization server. The client secret is only shown once
    * at creation and cannot be retrieved later. Users must save this value securely. If the secret is lost or
    * compromised, a new secret must be generated using the adminRotateOauthClientSecret endpoint.
    */
    clientSecret: string;
};


export type AdminCreateOrganizationDataExportRequest = {
    /**
    * Description of the data export
    */
    description: string;
    /**
    * Date when the export will expire. Default is 30 days. Maximum expiration date is 60 days from the creation date.
    */
    expirationDate?: Date;
};


export type AdminCreateOrganizationRequest = {
    /**
    * The name of the organization.
    */
    organizationName: string;
    /**
    * Unique identifier of the administrator of the new organization.
    */
    adminId?: number;
};


export type AdminCreateProjectRequest = {
    /**
    * The name of the project.
    */
    projectName: string;
    projectVisibility?: ProjectVisibility;
    /**
    * Unique identifier of the owner of the new project. Either this parameter or ownerEmail must be set.
    */
    ownerId?: number;
    /**
    * Email of the owner of the new project. Either this parameter or ownerId must be set.
    */
    ownerEmail?: string;
    /**
    * Whether to create an API key. If set to FALSE, the "apiKey" property on the response will be empty. If this field
    * is not set, it will default to TRUE.
    */
    createApiKey?: boolean;
};


export type AdminCreateSignupApprovalRequest = {
    approverEmail: string;
};


export type AdminEnableFeatureRequest = {
    feature: Feature;
};


export type AdminGetDataMigrationResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    migration: Migration;
};


export type AdminGetDataMigrationsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    migrations: Migration[];
};


export type AdminGetDisallowedEmailDomainsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    domains: string[];
};


export type AdminGetMetricsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    metrics: object;
};


export type AdminGetOauthClientResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    oauthClient: OauthClient;
};


export type AdminGetOauthClientsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    oauthClients: OauthClient[];
    /**
    * Total number of OAuth clients in the system.
    */
    totalCount?: number;
};


export type AdminGetOrganizationComputeTimeUsageResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * CPU compute time in seconds of all jobs in the organization (including organizational project jobs).
    */
    cpuComputeTime?: number;
    /**
    * GPU compute time in seconds of all jobs in the organization (including organizational project jobs).
    */
    gpuComputeTime?: number;
    /**
    * Total compute time is the amount of computation time spent in jobs, in minutes used by an organization over the
    * given period, calculated as CPU + GPU minutes.
    */
    totalComputeTime?: number;
};


export type AdminGetOrganizationsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    total: number;
    /**
    * Array with organizations
    */
    organizations: {
        id: number;
        name: string;
        logo?: string;
        created: Date;
        readme?: string;
        experiments?: string[];
        domain?: string;
        whitelabelId?: number;
        billable?: boolean;
        privateProjectCount: number;
        entitlementLimits?: EntitlementLimits;
    }[];
};


export type AdminGetReportResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    report: Report;
};


export type AdminGetReportsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of organization usage reports.
    */
    reports: Report[];
    totalCount: number;
};


export type AdminGetSSOSettingsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    ssoWhitelist: {
        domain: string;
        idps: string[];
    }[];
};


export type AdminGetSignupApprovalRequestResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    created: Date;
    deletedDate?: Date;
    expirationDate: Date;
    status: AdminGetSignupApprovalRequestResponseStatusEnum;
    approverEmail: string;
    verificationCode?: string;
    termsOfServicesVersion: string;
};
export type AdminGetSignupApprovalRequestResponseStatusEnum = 'pending' | 'approved' | 'rejected' | 'error';
export const AdminGetSignupApprovalRequestResponseStatusEnumValues: string[];


export type AdminGetTrashBinResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Total number of entities in the trash bin.
    */
    total: number;
    trashbin?: TrashBinEntity[];
};


export type AdminGetTrialResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    trial: EnterpriseTrial;
};


export type AdminGetUserIdsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    ids: number[];
};


export type AdminGetUserMetricsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    metrics: object;
};


export type AdminGetUserResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    user: AdminApiUser;
};


export type AdminGetUsersResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    total: number;
    users: {
        id: number;
        username: string;
        email: string;
        name: string;
        photo?: string;
        created: Date;
        lastSeen?: Date;
        activated?: boolean;
        from_evaluation?: boolean;
        tier?: UserTierEnum;
        deletedDate?: Date;
    }[];
};


export type AdminListProjects = {
    total: number;
    /**
    * Array with projects
    */
    projects: AdminApiProject[];
};


export type AdminListProjectsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    total: number;
    /**
    * Array with projects
    */
    projects: AdminApiProject[];
};


export type AdminOrganizationInfoResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * CPU compute time in seconds of all jobs in the organization (including organizational project jobs).
    */
    cpuComputeTime?: number;
    /**
    * GPU compute time in seconds of all jobs in the organization (including organizational project jobs).
    */
    gpuComputeTime?: number;
    /**
    * Total compute time is the amount of computation time spent in jobs, in minutes used by an organization over the
    * given period, calculated as CPU + GPU minutes.
    */
    totalComputeTime?: number;
    billable?: boolean;
    entitlementLimits?: EntitlementLimits;
    /**
    * The date from which the compute time for the running contract is calculated.
    */
    computeTimeCurrentContractSince?: Date;
    /**
    * Total storage used by the organization.
    */
    totalStorage?: number;
    /**
    * Metrics for the last 365 days
    */
    dailyMetrics?: DailyMetricsRecord[] | null;
};


export type AdminProjectInfoResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    project: Project;
};


export type AdminProjectKillSwitchResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Number of API keys revoked for this project.
    */
    keysRevoked: number;
    /**
    * Number of active root jobs cancelled for this project.
    */
    jobsCancelled: number;
};


export type AdminRotateOauthClientSecretResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * A confidential secret known only to the client and the authorization server. The client secret is only shown once
    * at creation and cannot be retrieved later. Users must save this value securely. If the secret is lost or
    * compromised, a new secret must be generated using the adminRotateOauthClientSecret endpoint.
    */
    clientSecret: string;
};


export type AdminStartEnterpriseTrialRequest = {
    /**
    * Email of the user requesting the trial. If this email is different to the one stored for the user requesting the
    * trial, it will be used to replace the existing one.
    */
    email?: string;
    /**
    * Name of the user requesting the trial. If this name is different to the one stored for the user requesting the
    * trial, it will be used to replace the existing one.
    */
    name?: string;
    /**
    * Name of the trial organization. All enterprise features are tied to an organization. This organization will be
    * deleted after the trial ends. If no organization name is provided, the user's name will be used.
    */
    organizationName?: string;
    /**
    * Expiration date of the trial. The trial will be set as expired after this date. There will be a grace period of 30
    * days after a trial expires before fully deleting the trial organization. This field is ignored if the trial is
    * requested by a non-admin user, defaulting to 14 days trial.
    */
    expirationDate?: Date;
    /**
    * Notes about the trial. Free form text. This field is ignored if the trial is requested by a non-admin user.
    */
    notes?: string;
    /**
    * Use case of the trial.
    */
    useCase?: string;
    /**
    * Whether the user has ML models in production.
    */
    userHasMLModelsInProduction?: AdminStartEnterpriseTrialRequestUserHasMLModelsInProductionEnum;
    /**
    * Name of the company requesting the trial.
    */
    companyName?: string;
    /**
    * Size of the company requesting the trial. This is a range of number of employees.
    */
    companySize?: string;
    /**
    * Country of the company requesting the trial.
    */
    country?: string;
    /**
    * State or province of the company requesting the trial.
    */
    stateOrProvince?: string;
    /**
    * Origin of the redirect URL returned as result of creating the trial user.
    */
    redirectUrlOrigin?: string;
    /**
    * Query parameters to be appended to the redirect URL returned as result of creating the trial user.
    */
    redirectUrlQueryParams?: string;
    /**
    * ID of the user requesting the trial.
    */
    userId: number;
};
export type AdminStartEnterpriseTrialRequestUserHasMLModelsInProductionEnum = 'yes' | 'no' | 'no, but we will soon';
export const AdminStartEnterpriseTrialRequestUserHasMLModelsInProductionEnumValues: string[];


export type AdminToggleDataMigrationRequest = {
    /**
    * Unique identifier of the data migration
    */
    id: string;
    /**
    * Whether the migration should be queued for execution
    */
    shouldRun: boolean;
};


export type AdminUpdateConfigRequest = {
    /**
    * New config value, given as a JSON string.
    */
    value: string;
};


export type AdminUpdateOauthClientRequest = OauthClientProperties;


export type AdminUpdateOrganizationDataExportRequest = {
    /**
    * Description of the data export
    */
    description?: string;
    /**
    * Date when the export will expire. Default is 30 days. Maximum expiration date is 60 days from the creation date.
    */
    expirationDate?: Date;
};


/**
* Only fields set in this object will be updated.
*/
export type AdminUpdateOrganizationRequest = {
    /**
    * New logo URL, or set to `null` to remove the logo.
    */
    logo?: string;
    /**
    * New leader image URL, or set to `null` to remove the leader.
    */
    headerImg?: string;
    /**
    * New organization name.
    */
    name?: string;
    experiments?: string[];
    /**
    * Readme for the organization (in Markdown)
    */
    readme?: string;
    billable?: boolean;
    entitlementLimits?: EntitlementLimits;
    /**
    * The date in which the organization contract started. Compute time will be calculated from this date.
    */
    contractStartDate?: Date;
    /**
    * The domain of the organization. The organization domain is used to add new users to an organization. For example,
    * new @edgeimpulse.com would be added to the Edge Impulse organization if this organization has edgeimpulse.com as
    * the domain.
    */
    domain?: string;
};


export type AdminUpdateTrialRequest = {
    /**
    * Expiration date of the trial. The trial will be set as expired after this date. There will be a grace period of 30
    * days after a trial expires before fully deleting the trial organization. This field is ignored if the trial is
    * requested by a non-admin user, defaulting to 14 days trial.
    */
    expirationDate?: Date;
    /**
    * Notes about the trial. Free form text. This field is ignored if the trial is requested by a non-admin user.
    */
    notes?: string;
};


export type AdminUpdateUserPermissionsRequest = {
    permissions: Permission[];
};


/**
* Only fields set in this object will be updated.
*/
export type AdminUpdateUserRequest = {
    /**
    * New email. This will also update the forum's email address but the user may need to logout/login back
    */
    email?: string;
    /**
    * New user full name
    */
    name?: string;
    /**
    * Whether the user is active or not. Can only go from inactive to active.
    */
    activated?: boolean;
    /**
    * Whether the user is suspended or not.
    */
    suspended?: boolean;
    /**
    * Reason for suspension
    */
    suspensionReason?: string;
    /**
    * New user job title
    */
    jobTitle?: string;
    /**
    * List of user experiments
    */
    experiments?: string[];
};


export type AkidaEdgeLearningConfig = {
    /**
    * True if Akida Edge Learning model creation is enabled. Other properties will be ignored if this is false.
    */
    enabled: boolean;
    /**
    * Number of additional classes that will be added to the Edge Learning model.
    */
    additionalClasses?: number;
    /**
    * Number of neurons in each class on the last layer in the Edge Learning model.
    */
    neuronsPerClass?: number;
};


export type AllBlocksResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    input: TunerBlock[];
    dsp: TunerBlock[];
    learn: TunerBlock[];
};


export type AllLearnBlocksResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    learnBlocks: {
        type: LearnBlockType;
        title: string;
        author: string;
        description: string;
        name: string;
        organizationModelId?: number;
        experiment?: string;
        displayCategory?: BlockDisplayCategory;
        publicProjectTierAvailability?: PublicProjectTierAvailability;
    }[];
};


/**
* Capacity level for visual anomaly detection. Determines which set of default configurations to use. The higher
* capacity, the higher number of (Gaussian) components, and the more adapted the model becomes to the original
* distribution
*/
export type AnomalyCapacity = 'low' | 'medium' | 'high';
export const AnomalyCapacityValues: string[];


export type AnomalyConfig = {
    dependencies: DependencyData;
    name: string;
    /**
    * Selectable axes for the anomaly detection block
    */
    axes: AnomalyConfigAxes[];
    /**
    * Whether the block is trained
    */
    trained: boolean;
    /**
    * Number of clusters for K-means, or number of components for GMM (in config)
    */
    clusterCount?: number;
    /**
    * Selected clusters (in config)
    */
    selectedAxes: number[];
    /**
    * DEPRECATED, see "thresholds" instead. Minimum confidence rating for this block, scores above this number will be
    * flagged as anomaly.
    */
    minimumConfidenceRating: number;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
};


export type AnomalyConfigAxes = {
    ix: number;
    label: string;
    selected: boolean;
    favourite: boolean;
};


export type AnomalyConfigResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dependencies: DependencyData;
    name: string;
    /**
    * Selectable axes for the anomaly detection block
    */
    axes: AnomalyConfigAxes[];
    /**
    * Whether the block is trained
    */
    trained: boolean;
    /**
    * Number of clusters for K-means, or number of components for GMM (in config)
    */
    clusterCount?: number;
    /**
    * Selected clusters (in config)
    */
    selectedAxes: number[];
    /**
    * DEPRECATED, see "thresholds" instead. Minimum confidence rating for this block, scores above this number will be
    * flagged as anomaly.
    */
    minimumConfidenceRating: number;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
};


export type AnomalyGmmMetadata = {
    /**
    * 2D array of shape (n, m)
    */
    means: number[][];
    /**
    * 3D array of shape (n, m, m)
    */
    covariances: number[][][];
    /**
    * 1D array of shape (n,)
    */
    weights: number[];
};


export type AnomalyGmmMetadataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * 2D array of shape (n, m)
    */
    means: number[][];
    /**
    * 3D array of shape (n, m, m)
    */
    covariances: number[][][];
    /**
    * 1D array of shape (n,)
    */
    weights: number[];
};


export type AnomalyLabelsConfig = {
    /**
    * Labels to treat as anomalous during classification or model testing in Studio, defaults to ['anomaly']
    */
    anomalyLabels: string[];
    /**
    * Labels to treat as non-anomalous during classification or model testing in Studio, defaults to ['no anomaly']
    */
    noAnomalyLabels: string[];
};


export type AnomalyModelMetadata = {
    /**
    * Date when the model was trained
    */
    created: Date;
    /**
    * Scale input for StandardScaler. Values are scaled like this (where `ix` is axis index): `input[ix] = (input[ix] -
    * mean[ix]) / scale[ix];`
    */
    scale: number[];
    /**
    * Mean input for StandardScaler. Values are scaled like this (where `ix` is axis index): `input[ix] = (input[ix] -
    * mean[ix]) / scale[ix];`
    */
    mean: number[];
    /**
    * Trained K-means clusters
    */
    clusters: AnomalyModelMetadataClusters[];
    /**
    * Which axes were included during training (by index)
    */
    axes: number[];
    /**
    * DEPRECATED, see "thresholds" instead. Default minimum confidence rating required before tagging as anomaly, based
    * on scores of training data (GMM only).
    */
    defaultMinimumConfidenceRating: number;
    /**
    * The types of model that are available
    */
    availableModelTypes?: KerasModelTypeEnum[];
    recommendedModelType?: KerasModelTypeEnum;
    /**
    * Metrics for each of the available model types
    */
    modelValidationMetrics?: KerasModelMetadataMetrics[];
    hasTrainedModel?: boolean;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
};


export type AnomalyModelMetadataClusters = {
    /**
    * Center of each cluster (one value per axis)
    */
    center: number[];
    /**
    * Size of the cluster
    */
    maxError: number;
};


export type AnomalyModelMetadataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Date when the model was trained
    */
    created: Date;
    /**
    * Scale input for StandardScaler. Values are scaled like this (where `ix` is axis index): `input[ix] = (input[ix] -
    * mean[ix]) / scale[ix];`
    */
    scale: number[];
    /**
    * Mean input for StandardScaler. Values are scaled like this (where `ix` is axis index): `input[ix] = (input[ix] -
    * mean[ix]) / scale[ix];`
    */
    mean: number[];
    /**
    * Trained K-means clusters
    */
    clusters: AnomalyModelMetadataClusters[];
    /**
    * Which axes were included during training (by index)
    */
    axes: number[];
    /**
    * DEPRECATED, see "thresholds" instead. Default minimum confidence rating required before tagging as anomaly, based
    * on scores of training data (GMM only).
    */
    defaultMinimumConfidenceRating: number;
    /**
    * The types of model that are available
    */
    availableModelTypes?: KerasModelTypeEnum[];
    recommendedModelType?: KerasModelTypeEnum;
    /**
    * Metrics for each of the available model types
    */
    modelValidationMetrics?: KerasModelMetadataMetrics[];
    hasTrainedModel?: boolean;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
};


export type AnomalyResult = {
    /**
    * For visual anomaly detection. An array of bounding box objects, (x, y, width, height, score, label), one per
    * detection in the image. Filtered by the minimum confidence rating of the learn block.
    */
    boxes?: BoundingBoxWithScore[];
    /**
    * 2D array of shape (n, n) with raw anomaly scores for visual anomaly detection, where n can be calculated as ((1/8
    * of image input size)/2 - 1). The scores corresponds to each grid cell in the image's spatial matrix.
    */
    scores?: number[][];
    /**
    * Mean value of the scores.
    */
    meanScore?: number;
    /**
    * Maximum value of the scores.
    */
    maxScore?: number;
};


export type AnomalyTrainedFeaturesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Total number of windows in the data set
    */
    totalSampleCount: number;
    data: {
        /**
        * Data by feature index for this window. Note that this data was scaled by the StandardScaler, use the anomaly
        * metadata to unscale if needed.
        */
        X: {
            [key: string]: number;
        };
        /**
        * Label used for datapoint colorscale in anomaly explorer (for gmm only). Is currently the result of the scoring
        * function.
        */
        label?: number;
    }[];
};


/**
* Specifies limits for your specific application, as available RAM and ROM for the model's operation and the maximum
* allowed latency.
*/
export type ApplicationBudget = {
    latencyPerInferenceMs?: ResourceRange;
    energyPerInferenceJoules?: ResourceRange;
    memoryOverhead?: TargetMemory;
};


/**
* The data augmentation policy to use with image input
*/
export type AugmentationPolicyImageEnum = 'none' | 'all';
export const AugmentationPolicyImageEnumValues: string[];


export type AugmentationPolicySpectrogram = {
    /**
    * True if spectrogram augmentation is enabled. Other properties will be ignored if this is false.
    */
    enabled: boolean;
    /**
    * True if warping along the time axis is enabled.
    */
    warping?: boolean;
    /**
    * The amount of frequency masking to apply.
    */
    freqMasking?: AugmentationPolicySpectrogramFreqMaskingEnum;
    /**
    * The amount of time masking to apply.
    */
    timeMasking?: AugmentationPolicySpectrogramTimeMaskingEnum;
    /**
    * The amount of Gaussian noise to add.
    */
    gaussianNoise?: AugmentationPolicySpectrogramGaussianNoiseEnum;
};
export type AugmentationPolicySpectrogramFreqMaskingEnum = 'none' | 'low' | 'high';
export const AugmentationPolicySpectrogramFreqMaskingEnumValues: string[];
export type AugmentationPolicySpectrogramTimeMaskingEnum = 'none' | 'low' | 'high';
export const AugmentationPolicySpectrogramTimeMaskingEnumValues: string[];
export type AugmentationPolicySpectrogramGaussianNoiseEnum = 'none' | 'low' | 'high';
export const AugmentationPolicySpectrogramGaussianNoiseEnumValues: string[];


export type AuthorizeThirdPartyRequest = {
    /**
    * The URL to redirect to after authorization is completed.
    */
    nextUrl: string;
};


export type AutotuneDspRequest = {
    /**
    * DSP block ID to autotune parameters of
    */
    dspId: number;
    /**
    * Optional updated DSP block config. If undefined, the current saved block config will be used. This enables
    * experimenting with the autotuner using temporary config options, without updating the stored DSP block config.
    */
    config?: {
        [key: string]: string;
    };
};


export type BackToLabelingRequest = {
    /**
    * Defines what should happen to labels during the action. Use "clear-labels" to remove all existing labels.
    */
    labelAction: BackToLabelingRequestLabelActionEnum;
};
export type BackToLabelingRequestLabelActionEnum = 'clear-labels';
export const BackToLabelingRequestLabelActionEnumValues: string[];


export type BatchAddMetadataRequest = {
    metadataKey: string;
    metadataValue: string;
};


export type BatchClearMetadataByKeyRequest = {
    metadataKey: string;
};


export type BatchEditBoundingBoxesRequest = {
    /**
    * List of labels to edit. All bounding boxes with this label will be edited.
    */
    oldLabels: string[];
    /**
    * New label. Set to an empty string to remove the bounding boxes.
    */
    newLabel: string;
};


/**
* Specifies the frequency at which the subscription fee is billed: - `monthly`: Billed once every month. - `yearly`:
* Billed once every year, often at a discounted rate compared to monthly billing.
*/
export type BillingCycle = 'monthly' | 'yearly';
export const BillingCycleValues: string[];


/**
* Category to display this block in the UI.
*/
export type BlockDisplayCategory = 'classical' | 'tao' | 'developer-preview';
export const BlockDisplayCategoryValues: string[];


/**
* Training parameters specific to the type of the learn block. Parameters may be adjusted depending on the model defined
* in the visual layers. Used for our built-in blocks.
*/
export type BlockParameters = {
    /**
    * The backbone to use for feature extraction
    */
    backbone?: string;
    /**
    * The number of layers in the feature extractor (1-3)
    */
    numLayers?: number;
    /**
    * The pool size for the feature extractor
    */
    poolSize?: number;
    /**
    * The sampling ratio for the coreset, used for anomaly scoring
    */
    samplingRatio?: number;
    /**
    * The number of nearest neighbors to consider, used for anomaly scoring
    */
    numNearestNeighbors?: number;
};


export type BlockParamsVisualAnomalyGmm = {
    /**
    * The backbone to use for feature extraction
    */
    backbone?: string;
};


export type BlockParamsVisualAnomalyPatchcore = {
    /**
    * The backbone to use for feature extraction
    */
    backbone?: string;
    /**
    * The number of layers in the feature extractor (1-3)
    */
    numLayers?: number;
    /**
    * The pool size for the feature extractor
    */
    poolSize?: number;
    /**
    * The sampling ratio for the coreset, used for anomaly scoring
    */
    samplingRatio?: number;
    /**
    * The number of nearest neighbors to consider, used for anomaly scoring
    */
    numNearestNeighbors?: number;
};


/**
* Configurable threshold for this block (e.g. minimum score before tagging as an anomaly, or the min. score to save
* bounding boxes)
*/
export type BlockThreshold = {
    /**
    * Identifier to reference the threshold. You'll need to refer to the threshold by this key when you set the
    * threshold).
    */
    key: string;
    /**
    * User-friendly description of the threshold.
    */
    description: string;
    /**
    * Additional help text (shown in the UI under a "?" icon)
    */
    helpText: string;
    /**
    * If the threshold has a suggested value, e.g. a max. absolute error for regression projects; or the min. anomaly
    * score for visual anomaly detection, then this is the numeric value of that threshold.
    */
    suggestedValue?: number;
    /**
    * If the threshold has a suggested value, e.g. a max. absolute error for regression projects; or the min. anomaly
    * score for visual anomaly detection, then this is the stringified value of that threshold.
    */
    suggestedValueText?: string;
    /**
    * Current value of the threshold
    */
    value: number | string;
    /**
    * Optional list of options, will be shown in a dropdown.
    */
    dropdownOptions?: {
        /**
        * Full description of the value
        */
        description: string;
        /**
        * Value, maps back to "BlockThreshold#value"
        */
        value: string;
    }[];
};


export type BlockType = 'official' | 'personal' | 'enterprise' | 'community';
export const BlockTypeValues: string[];


/**
* This has the _absolute values_ for x/y/w/h (so 0..x (where x is the w/h of the image))
*/
export type BoundingBox = {
    label: string;
    x: number;
    y: number;
    width: number;
    height: number;
};


/**
* This has the _ratio_ for x/y/w/h (so 0..1)
*/
export type BoundingBoxWithScore = {
    label: string;
    x: number;
    y: number;
    width: number;
    height: number;
    score: number;
};


export type BuildOnDeviceModelRequest = {
    engine: DeploymentTargetEngine;
    modelType?: KerasModelVariantEnum;
    /**
    * List of custom parameters for this deployment job (see the list of parameters that the block exposes in
    * DeploymentTarget#parameters).
    */
    parameters?: {
        [key: string]: string;
    };
};


export type BuildOnDeviceModelResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Job identifier. Status updates will include this identifier.
    */
    id: number;
    /**
    * Deployment version, use `downloadHistoricDeployment` to later download the deployment using this identifier.
    */
    deploymentVersion: number;
};


export type BuildOrganizationOnDeviceModelRequest = {
    engine: DeploymentTargetEngine;
    deployBlockId: number;
    modelType?: KerasModelVariantEnum;
    /**
    * List of custom parameters for this deployment job (see the list of parameters that the block exposes in
    * DeploymentTarget#parameters).
    */
    parameters?: {
        [key: string]: string;
    };
};


export type BuildPublicDeploymentJobRequest = {
    deploymentType: string;
    modelType: KerasModelVariantEnum;
};


export type BuildPublicDeploymentJobResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Set if a job was created (or was already running) for this deployment. Use this ID to poll to the job logs via
    * 'GetPublicDeploymentStatusResponse'.
    */
    jobId?: number;
    /**
    * Deployment version. Use `downloadHistoricDeployment` to download the deployment using this identifier (once the
    * job is finished).
    */
    deploymentVersion: number;
};


export type CalculateDataQualityMetricsRequest = {
    /**
    * Type of representation to use for calculating metrics.
    */
    representation?: CalculateDataQualityMetricsRequestRepresentationEnum;
};
export type CalculateDataQualityMetricsRequestRepresentationEnum = 'keywords' | 'images' | 'current-impulse' | 'current-impulse-embeddings';
export const CalculateDataQualityMetricsRequestRepresentationEnumValues: string[];


export type CanaryResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Whether the request should be routed to the canary or not.
    */
    routeToCanary: boolean;
};


export type ChangePasswordRequest = {
    currentPassword: string;
    newPassword: string;
};


export type ClassifyJobResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    result: ModelResult[];
    predictions: ModelPrediction[];
    accuracy: {
        totalSummary: {
            good: number;
            bad: number;
        };
        summaryPerClass: {
            [key: string]: {
                good: number;
                bad: number;
            };
        };
        confusionMatrixValues: {
            [key: string]: {
                [key: string]: number;
            };
        };
        allLabels: string[];
        accuracyScore?: number;
        balancedAccuracyScore?: number;
        anomalyAccuracyScore?: number;
        noAnomalyAccuracyScore?: number;
        mseScore?: number;
    };
    additionalMetricsByLearnBlock: {
        learnBlockId: number;
        learnBlockName: string;
        additionalMetrics: AdditionalMetric[];
    }[];
    /**
    * List of all model variants for which classification results exist
    */
    availableVariants: KerasModelVariantEnum[];
    /**
    * If set to true, there are currently no results because thresholds were changed (e.g. on live classification); and
    * what action you can run to get new results the quickest. If the value is "can_regenerate_model_summary" you can
    * run 'regenerateModelTestingSummary'. If the value is "should_rerun_full_job", you need to run 'startClassifyJob'
    * or 'startEvaluateJob'.
    */
    noResultsBecauseThresholdsChanged?: ClassifyJobResponseNoResultsBecauseThresholdsChangedEnum;
};
export type ClassifyJobResponseNoResultsBecauseThresholdsChangedEnum = 'can_regenerate_model_summary' | 'should_rerun_full_job';
export const ClassifyJobResponseNoResultsBecauseThresholdsChangedEnumValues: string[];


export type ClassifyJobResponsePage = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    result: ModelResult[];
    predictions: ModelPrediction[];
    /**
    * Total sample count
    */
    totalCount: number;
};


export type ClassifySampleResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    classifications: ClassifySampleResponseClassification[];
    sample: RawSampleDataWithDataStreamPayloads;
    /**
    * Size of the sliding window (as set by the impulse) in milliseconds.
    */
    windowSizeMs: number;
    /**
    * Number of milliseconds that the sliding window increased with (as set by the impulse)
    */
    windowIncreaseMs: number;
    /**
    * Whether this sample is already in the training database
    */
    alreadyInDatabase: boolean;
    warning?: string;
};


export type ClassifySampleResponseClassification = {
    learnBlock: ImpulseLearnBlock;
    /**
    * Classification result, one item per window.
    */
    result: {
        [key: string]: number;
    }[];
    /**
    * Anomaly scores and computed metrics for visual anomaly detection, one item per window.
    */
    anomalyResult?: AnomalyResult[];
    /**
    * Results of inferencing that returns structured data, such as object detection
    */
    structuredResult?: StructuredClassifyResult[];
    /**
    * DEPRECATED, see "thresholds" instead. The minimum confidence rating for this block. For regression, this is the
    * absolute error (which can be larger than 1).
    */
    minimumConfidenceRating: number;
    /**
    * Structured outputs and computed metrics for some model types (e.g. object detection), one item per window.
    */
    details?: ClassifySampleResponseClassificationDetails[];
    objectDetectionLastLayer?: ObjectDetectionLastLayer;
    /**
    * An array with an expected label per window.
    */
    expectedLabels: StructuredLabel[];
    /**
    * An array with the expected anomaly outcome for each window — either “anomaly” or “no anomaly”. The outcome is
    * determined by which labels are marked as anomalous in the project setup, or by the sample label if no such
    * configuration is defined.
    */
    expectedAnomalyOutcome?: StructuredLabel[];
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
    isMultiLabel?: boolean;
    /**
    * Interval between two windows in "expectedLabels" (1000 / frequency).
    */
    intervalMs: number;
    /**
    * Frequency of the windows in "expectedLabels"
    */
    frequencyHz: number;
};


export type ClassifySampleResponseClassificationDetails = {
    /**
    * Bounding boxes predicted by localization model
    */
    boxes?: number[][];
    /**
    * Labels predicted by localization model
    */
    labels?: number[];
    /**
    * Scores predicted by localization model
    */
    scores?: number[];
    /**
    * For object detection, the COCO mAP computed for the predictions on this image
    */
    mAP?: number;
    /**
    * For FOMO, the F1 score computed for the predictions on this image
    */
    f1?: number;
};


export type ClassifySampleResponseMultipleVariants = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    results?: ClassifySampleResponseVariantResults[];
    sample: RawSampleDataWithDataStreamPayloads;
    /**
    * Size of the sliding window (as set by the impulse) in milliseconds.
    */
    windowSizeMs: number;
    /**
    * Number of milliseconds that the sliding window increased with (as set by the impulse)
    */
    windowIncreaseMs: number;
    /**
    * Whether this sample is already in the training database
    */
    alreadyInDatabase: boolean;
};


export type ClassifySampleResponseVariantResults = {
    variant: KerasModelVariantEnum;
    classifications: ClassifySampleResponseClassification[];
};


export type CloneImpulseRequest = {
    name: string;
};


export type ConvertParquetToCsvRequest = {
    file: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type ConvertParquetToCsvResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    csvFile: string;
};


export type ConvertUserRequest = {
    /**
    * Your name
    */
    name: string;
    /**
    * Username, minimum 4 and maximum 30 characters. May contain alphanumeric characters, hyphens, underscores and dots.
    * Validated according to `^(?=.{4,30}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._-]+(?<![_.])$`.
    */
    username: string;
    /**
    * E-mail address. Will need to be validated before the account will become active.
    */
    email: string;
    /**
    * Password, minimum length 8 characters.
    */
    password: string;
    /**
    * A project will automatically be created. Sets the name of the first project. If not set, this will be derived from
    * the username.
    */
    projectName?: string;
    /**
    * Whether the user accepted the privacy policy
    */
    privacyPolicy: boolean;
    /**
    * CloudFlare Turnstile response token
    */
    turnstileResponse: string;
};


/**
* Describes the results of running the cosine similarity label noise detection method.
*/
export type CosineSimilarityData = {
    /**
    * A list of samples that have windows that are similar to windows of other samples that have a different label.
    */
    similarButDifferentLabel: CosineSimilarityIssue[];
    /**
    * A list of samples that have windows that are dissimilar to windows of other samples that have the same label.
    */
    differentButSameLabel: CosineSimilarityIssue[];
};


/**
* Describes a sample that has potential issues as identified by the cosine similarity label noise detection method.
*/
export type CosineSimilarityIssue = {
    /**
    * The ID of this sample
    */
    id: number;
    sample?: Sample;
    /**
    * The label of this sample, in index form
    */
    label: number;
    /**
    * A list of samples that have windows that are symptomatic of this issue.
    */
    issues: {
        /**
        * The ID of this sample
        */
        id: number;
        sample?: Sample;
        /**
        * The label of this sample, in index form
        */
        label: number;
        /**
        * The windows in this sample that are symptomatic of this issue.
        */
        windows: {
            /**
            * The start time of this window in milliseconds
            */
            windowStart: number;
            /**
            * The end time of this window in milliseconds
            */
            windowEnd: number;
            /**
            * The cosine similarity score between this window and a window from the sample in the parent object.
            */
            score: number;
        }[];
    }[];
};


export type CountSamplesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    count: number;
};


export type CreateCustomBlockUploadLinkRequest = {
    /**
    * file name
    */
    fileName: string;
    /**
    * file size in bytes
    */
    fileSize: number;
    /**
    * hash to identify file changes
    */
    fileHash: string;
    type: CreateCustomBlockUploadLinkRequestTypeEnum;
    blockId: number;
};
export type CreateCustomBlockUploadLinkRequestTypeEnum = 'transform' | 'deploy' | 'dsp' | 'transferLearning';
export const CreateCustomBlockUploadLinkRequestTypeEnumValues: string[];


export type CreateCustomBlockUploadLinkResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * S3 Upload Link
    */
    url?: string;
    /**
    * S3 File Tag
    */
    ETag?: string;
    /**
    * S3 object key for the staged upload
    */
    uploadKey: string;
};


export type CreateDeveloperProfileResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    organizationId: number;
    link?: string;
};


export type CreateDeviceRequest = {
    /**
    * Globally unique device identifier (e.g. MAC address)
    */
    deviceId: string;
    /**
    * Device type, for example the exact model of the device. Should be the same for all similar devices
    */
    deviceType: string;
    /**
    * Whether to throw an error when this device already exists.
    */
    ifNotExists: boolean;
};


export type CreateEnterpriseTrialResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Unique identifier of the created entity.
    */
    id: number;
    /**
    * ID of the user created for the trial, if the user did not already exist.
    */
    userId?: number;
    /**
    * URL to redirect the user to in order to access the enterprise trial.
    */
    redirectUrl?: string;
};


export type CreateEnterpriseTrialUserRequest = {
    /**
    * Email of the user. Only business email addresses are allowed. Emails with free domains like gmail.com or yahoo.com
    * are not allowed.
    */
    email: string;
    /**
    * Name of the user.
    */
    name: string;
    /**
    * Name of the trial organization. All enterprise features are tied to an organization. This organization will be
    * deleted after the trial ends. If no organization name is provided, the user's name will be used.
    */
    organizationName?: string;
    /**
    * Expiration date of the trial. The trial will be set as expired after this date. There will be a grace period of 30
    * days after a trial expires before fully deleting the trial organization. This field is ignored if the trial is
    * requested by a non-admin user, defaulting to 14 days trial.
    */
    expirationDate?: Date;
    /**
    * Notes about the trial. Free form text. This field is ignored if the trial is requested by a non-admin user.
    */
    notes?: string;
    /**
    * Use case of the trial.
    */
    useCase?: string;
    /**
    * Whether the user has ML models in production.
    */
    userHasMLModelsInProduction?: CreateEnterpriseTrialUserRequestUserHasMLModelsInProductionEnum;
    /**
    * Name of the company requesting the trial.
    */
    companyName?: string;
    /**
    * Size of the company requesting the trial. This is a range of number of employees.
    */
    companySize?: string;
    /**
    * Country of the company requesting the trial.
    */
    country?: string;
    /**
    * State or province of the company requesting the trial.
    */
    stateOrProvince?: string;
    /**
    * Origin of the redirect URL returned as result of creating the trial user.
    */
    redirectUrlOrigin?: string;
    /**
    * Query parameters to be appended to the redirect URL returned as result of creating the trial user.
    */
    redirectUrlQueryParams?: string;
    /**
    * Username, minimum 4 and maximum 30 characters. May contain alphanumeric characters, hyphens, underscores and dots.
    * Validated according to `^(?=.{4,30}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._-]+(?<![_.])$`.
    */
    username: string;
    /**
    * Whether the user has accepted the terms of service and privacy policy.
    */
    privacyPolicy: boolean;
    /**
    * Password of the user. Minimum length 8 characters.
    */
    password?: string;
    /**
    * Job title of the user.
    */
    jobTitle?: string;
    /**
    * List of UTM parameters.
    */
    utmParams?: any[];
    /**
    * CloudFlare Turnstile response token
    */
    turnstileResponse: string;
};
export type CreateEnterpriseTrialUserRequestUserHasMLModelsInProductionEnum = 'yes' | 'no' | 'no, but we will soon';
export const CreateEnterpriseTrialUserRequestUserHasMLModelsInProductionEnumValues: string[];


export type CreateEventSubscriptionRequest = {
    /**
    * Monitoring event type to subscribe to.
    */
    eventType: string;
    /**
    * Optional webhook destination ID to route this event subscription to. Set to null to detach.
    */
    webhookId?: string | null;
    /**
    * Optional description for this event subscription.
    */
    description?: string;
    /**
    * Whether this event subscription is enabled. If not set, it will default to true.
    */
    enabled?: boolean;
    /**
    * Optional key-value pair filters applied to event metadata for this destination.
    */
    metadataFilters?: {
        [key: string]: string;
    };
};


export type CreateEventSubscriptionResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    subscription: EventSubscription;
};


export type CreateImpulseRequest = {
    /**
    * Name for this impulse (optional). If no name is provided one is created based on your blocks.
    */
    name?: string;
    /**
    * Input Blocks that are part of this impulse
    */
    inputBlocks: ImpulseInputBlock[];
    /**
    * DSP Blocks that are part of this impulse
    */
    dspBlocks: ImpulseDspBlock[];
    /**
    * Learning Blocks that are part of this impulse
    */
    learnBlocks: ImpulseLearnBlock[];
    /**
    * Post-processing blocks that are part of this impulse
    */
    postProcessingBlocks?: ImpulsePostProcessingBlock[];
    type?: ImpulseType;
};


export type CreateImpulseResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * ID of the new impulse
    */
    id: number;
};


export type CreateMultiProjectDeploymentRequest = {
    impulses: {
        projectId: number;
        impulseId: number;
        variant: KerasModelVariantEnum;
    }[];
    engine: ModelEngineShortEnum;
};


export type CreateNewEmptyImpulseRequest = {
    type?: ImpulseType;
};


export type CreateNewEmptyImpulseResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * ID of the new impulse
    */
    id: number;
    /**
    * Link to redirect the user to afterwards
    */
    redirectUrl: string;
};


export type CreateOrganizationBucketRequest = {
    name: string;
};


export type CreateOrganizationBucketResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Unique identifier of the created entity.
    */
    id: number;
    /**
    * Newly created bucket name
    */
    bucket: string;
};


export type CreateOrganizationPortalRequest = {
    /**
    * The name of the upload portal.
    */
    name: string;
    /**
    * The purpose and description of the upload portal.
    */
    description?: string;
    /**
    * The S3 bucket id to store the uploaded data. Set to '0' to select a bucket hosted by Edge Impulse.
    */
    bucketId: number;
    /**
    * The path in the bucket the upload portal will write to.
    */
    bucketPath: string;
};


export type CreateOrganizationPortalResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Portal ID for the new upload portal
    */
    id: number;
    /**
    * URL to the portal
    */
    url: string;
    /**
    * pre-signed upload URL. Only set if using a non-built-in bucket.
    */
    signedUrl?: string;
    /**
    * Only set if using a non-built-in bucket.
    */
    bucketBucket?: string;
};


export type CreateOrganizationRequest = {
    /**
    * The name of the organization.
    */
    organizationName: string;
};


export type CreateOrganizationResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Organization ID for the new organization
    */
    id: number;
    /**
    * API key for the new organization (this is shown only once)
    */
    apiKey: string;
};


export type CreateOrganizationUsageReportBody = {
    reportStartDate: Date;
    reportEndDate: Date;
};


export type CreatePreviewAIActionsJobRequest = {
    steps: AIActionsConfigStep[];
    sampleIds: number[];
    /**
    * If enabled, will load cached results from the previous preview job for unchanged jobs. Disable this if you're
    * developing your own custom AI Labeling job, and want to always re-run all steps.
    */
    cacheUnchangedSteps: boolean;
};


export type CreateProTierUserRequest = {
    /**
    * Your name
    */
    name: string;
    /**
    * Username, minimum 4 and maximum 30 characters. May contain alphanumeric characters, hyphens, underscores and dots.
    * Validated according to `^(?=.{4,30}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._-]+(?<![_.])$`.
    */
    username: string;
    /**
    * E-mail address. Will need to be validated before the account will become active.
    */
    email: string;
    /**
    * Password, minimum length 8 characters.
    */
    password?: string;
    /**
    * A project will automatically be created. Sets the name of the first project. If not set, this will be derived from
    * the username.
    */
    projectName?: string;
    /**
    * Whether the user accepted the privacy policy
    */
    privacyPolicy: boolean;
    /**
    * Activation token for users created via SSO
    */
    activationToken?: string;
    /**
    * Unique identifier of the identity provider asserting the identity of this user
    */
    identityProvider?: string;
    /**
    * Job title of the user. Optional field
    */
    jobTitle?: string;
    /**
    * Session ID. Optional field
    */
    sessionId?: string;
    /**
    * ACME Inc.
    */
    companyName?: string;
    /**
    * List of UTM parameters.
    */
    utmParams?: any[];
    /**
    * If true, allows signup to proceed despite a potentially invalid email. Note that this will enforce email
    * verification post-signup
    */
    ignoreEmailValidation?: boolean;
    /**
    * CloudFlare Turnstile response token
    */
    turnstileResponse: string;
    /**
    * Date of birth of the user in YYYY-MM-DD format. Optional field.
    */
    dateOfBirth?: string;
    /**
    * Email address to be used for signup approval. Optional field.
    */
    approverEmail?: string;
    /**
    * Origin of the redirect URL returned as result of creating the professional user.
    */
    redirectUrlOrigin?: string;
    /**
    * Query parameters to be appended to the redirect URL returned as result of creating the professional user.
    */
    redirectUrlQueryParams?: string;
};


export type CreateProjectRequest = {
    /**
    * The name of the first project.
    */
    projectName: string;
    projectVisibility?: ProjectVisibility;
    /**
    * The ID of the version that was used to restore this project.
    */
    originalProjectVersionId?: number;
    /**
    * Whether to show the getting started wizard use-case chooser screen after the project is created
    */
    showGettingStartedWizard?: boolean;
    tutorialKey?: TutorialType;
    /**
    * Whether to create an API key. If set to FALSE, the "apiKey" property on the response will be empty. If this field
    * is not set, it will default to TRUE.
    */
    createApiKey?: boolean;
};


export type CreateProjectResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Project ID for the new project
    */
    id: number;
    /**
    * API key for the new project
    */
    apiKey: string;
};


export type CreateSignedUploadLinkRequest = {
    /**
    * file name
    */
    fileName: string;
    /**
    * file size in bytes
    */
    fileSize: number;
    /**
    * hash to identify file changes
    */
    fileHash: string;
};


export type CreateSignedUploadLinkResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * S3 Upload Link
    */
    url?: string;
    /**
    * S3 File Tag
    */
    ETag?: string;
};


export type CreateSyntheticDataRequest = {
    /**
    * The ID of a Synthetic Data transform block ID (public or private)
    */
    transformationBlockId: number;
    /**
    * Properties for this synthetic data block
    */
    parameters: {
        [key: string]: string;
    };
};


export type CreateTestUserRequest = {
    /**
    * Email (default generates test-user-{random}@edgeimpulse.net)
    */
    email?: string;
    /**
    * Password (default generates random)
    */
    password?: string;
    /**
    * Username (default generates benchuser{random})
    */
    username?: string;
    /**
    * Display name (default generates Bench User {random})
    */
    name?: string;
};


export type CreateTestUserResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * User ID of the created test user
    */
    id: number;
    email?: string;
    username?: string;
    /**
    * Generated password (only returned if not provided in request)
    */
    password?: string;
    /**
    * JWT token for immediate authentication
    */
    jwtToken?: string;
};


export type CreateThirdPartyAuthRequest = {
    name: string;
    description: string;
    logo: string;
    domains: string[];
    secretKey?: string;
    apiKey?: string;
};


export type CreateThirdPartyAuthResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    id: number;
    secretKey: string;
    apiKey: string;
};


export type CreateUserRequest = {
    /**
    * Your name
    */
    name: string;
    /**
    * Username, minimum 4 and maximum 30 characters. May contain alphanumeric characters, hyphens, underscores and dots.
    * Validated according to `^(?=.{4,30}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._-]+(?<![_.])$`.
    */
    username: string;
    /**
    * E-mail address. Will need to be validated before the account will become active.
    */
    email: string;
    /**
    * Password, minimum length 8 characters.
    */
    password?: string;
    /**
    * A project will automatically be created. Sets the name of the first project. If not set, this will be derived from
    * the username.
    */
    projectName?: string;
    /**
    * Whether the user accepted the privacy policy
    */
    privacyPolicy: boolean;
    /**
    * Activation token for users created via SSO
    */
    activationToken?: string;
    /**
    * Unique identifier of the identity provider asserting the identity of this user
    */
    identityProvider?: string;
    /**
    * Job title of the user. Optional field
    */
    jobTitle?: string;
    /**
    * Session ID. Optional field
    */
    sessionId?: string;
    /**
    * ACME Inc.
    */
    companyName?: string;
    /**
    * List of UTM parameters.
    */
    utmParams?: any[];
    /**
    * If true, allows signup to proceed despite a potentially invalid email. Note that this will enforce email
    * verification post-signup
    */
    ignoreEmailValidation?: boolean;
    /**
    * CloudFlare Turnstile response token
    */
    turnstileResponse: string;
    /**
    * Date of birth of the user in YYYY-MM-DD format. Optional field.
    */
    dateOfBirth?: string;
    /**
    * Email address to be used for signup approval. Optional field.
    */
    approverEmail?: string;
};


export type CreateUserResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * URL to redirect user to.
    */
    redirectUrl?: string;
    /**
    * User unique identifier
    */
    id?: number;
};


export type CreateUserThirdPartyRequest = {
    /**
    * Your name
    */
    name: string;
    /**
    * Username, minimum 4 and maximum 30 characters. May contain alphanumeric characters, hyphens, underscores and dots.
    * Validated according to `^(?=.{4,30}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._-]+(?<![_.])$`.
    */
    username: string;
    /**
    * E-mail address. Will need to be validated before the account will become active.
    */
    email: string;
    /**
    * A project will automatically be created. Sets the name of the first project. If not set, this will be derived from
    * the username.
    */
    projectName?: string;
    /**
    * Whether the user accepted the privacy policy
    */
    privacyPolicy: boolean;
};


export type CreateUserThirdPartyResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    status: CreateUserThirdPartyResponseStatusEnum;
    jwtToken?: string;
};
export type CreateUserThirdPartyResponseStatusEnum = 'userWasCreated' | 'userNotManagedByThirdParty' | 'userAlreadyExists';
export const CreateUserThirdPartyResponseStatusEnumValues: string[];


export type CreateWebhookDestinationRequest = {
    /**
    * The URL to send the webhook POST requests to. Must start with https://.
    */
    url: string;
    /**
    * Optional description for the webhook destination.
    */
    description?: string;
};


export type CreateWebhookDestinationResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * The unique identifier of the created webhook destination. This ID is used to manage the destination (e.g., update
    * or delete it).
    */
    id: string;
    /**
    * A secret key used to verify the authenticity of the webhook requests sent to the specified URL. It can only be
    * retrieved once at the time of subscription creation, so make sure to store it securely.
    */
    signingSecret: string;
};


export type CreateWhitelabelRequest = {
    /**
    * The name of the white label.
    */
    name: string;
    /**
    * The domain where the white label lives.
    */
    domain: string;
    ownerOrganizationId: number;
    /**
    * The list of allowed identity providers.
    */
    identityProviders?: string[];
    /**
    * Whether this white label accepts password based authentication.
    */
    allowPasswordAuth?: boolean;
    /**
    * The list of deployment targets to show on the UI
    */
    deploymentTargets?: string[];
    /**
    * Custom documentation URL
    */
    documentationUrl?: string;
    /**
    * Whether this white label allow sign ups or not.
    */
    allowSignup?: boolean;
    /**
    * Whether this white label allows the creation of free projects.
    */
    allowFreeProjects?: boolean;
    /**
    * Whether this white label should work in sandboxed mode or not.
    */
    sandboxed?: boolean;
    /**
    * Whether public projects created in this white label scope should be exposed through the Public Projects API or
    * not.
    */
    exposePublicProjects?: boolean;
    /**
    * The list of learning block types to show on the UI
    */
    learningBlocks?: string[];
    /**
    * The maximum number of organizations that can be created under this white label.
    */
    organizationsLimit?: number | null;
    /**
    * Controls whether marketing features (marketing cookies, HubSpot tracking, etc.) are disabled for this whitelabel
    * instance.
    */
    disableMarketingFeatures?: boolean;
    /**
    * Controls whether forum access is disabled for this whitelabel instance.
    */
    disableForumAccess?: boolean;
    /**
    * Custom limits for this whitelabel instance.
    */
    customLimits?: object;
};


export type CreateWhitelabelResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Unique whitelabel identifier
    */
    id: number;
    /**
    * Unique identifier for the theme associated with the white label
    */
    themeId: number;
};


export type CreatedUpdatedByUser = {
    id: number;
    name: string;
    username: string;
    photo?: string;
};


export type CropSampleRequest = {
    /**
    * New start index of the sample
    */
    cropStart: number;
    /**
    * New end index of the sample
    */
    cropEnd: number;
};


export type CropSampleResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    requiresProcessing: boolean;
};


/**
* Describes the results of running the cross validation label noise detection method.
*/
export type CrossValidationData = {
    scores: {
        /**
        * The ID of the sample this window belongs to
        */
        id: number;
        sample?: Sample;
        /**
        * The start time of this window in milliseconds
        */
        windowStart: number;
        /**
        * The end time of this window in milliseconds
        */
        windowEnd: number;
        /**
        * The label of this window, in index form
        */
        label: number;
        /**
        * The probability of this window being the label it was assigned, as estimated by a classifier trained on the
        * whole
        * dataset.
        */
        probability: number;
        /**
        * The z-score of the probability with respect to other class members, so that outliers (i.e. windows whose
        * probability is low) can be easily spotted. This assumes that most correctly labelled class members will have a
        * high probability.
        */
        score: number;
    }[];
};


export type DBAction = 'insert' | 'update' | 'delete';
export const DBActionValues: string[];


export type DSPBlock = {
    type: string;
    title: string;
    author: string;
    description: string;
    name: string;
    recommended: boolean;
    experimental: boolean;
    latestImplementationVersion: number;
    organizationId?: number;
    organizationDspId?: number;
    blockType: BlockType;
    namedAxes?: DSPNamedAxis[];
    /**
    * List of target devices that support this DSP block. If undefined this block works on all targets.
    */
    supportedTargets?: string[];
};


export type DSPConfig = {
    dsp: DSPInfo;
    config?: DSPGroup[];
    configError?: string;
};


export type DSPConfigRequest = {
    config: {
        [key: string]: string;
    };
};


export type DSPConfigResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dsp: DSPInfo;
    config?: DSPGroup[];
    configError?: string;
};


export type DSPGroup = {
    group: string;
    items: DSPGroupItem[];
};


export type DSPGroupItem = {
    name: string;
    value?: string;
    defaultValue: string;
    type: string;
    help?: string;
    param: string;
    selectOptions?: {
        /**
        * What is the string that will be set if this option is selected?
        */
        value?: string;
        selected?: boolean;
        /**
        * What is the label that will be shown to the user for this option?
        */
        optionLabel?: string;
        /**
        * The following options are optional. See Learn Block Auto Config in Notion. Higher priority will get chosen
        * based
        * on limits below.
        */
        priority?: number;
        /**
        * Estimated ROM footprint for this choice. Will be tested against ROM budget in Studio.
        */
        romEstimate?: number;
        needsOps?: string[];
        needsFeatures?: string[];
    }[];
    readonly: boolean;
    shouldShow: boolean;
    showIf?: {
        parameter: string;
        operator: DSPGroupItemShowIfOperatorEnum;
        value: string;
    };
    invalidText?: string;
    /**
    * Interface section to render parameter in.
    */
    section?: DSPGroupItemSectionEnum;
    /**
    * Only valid for type "string". Will render a multiline text area.
    */
    multiline?: boolean;
    required: boolean;
    /**
    * If set, shows a hint below the input.
    */
    hint?: string;
    /**
    * Sets the placeholder text on the input element (for types "string", "int", "float" and "secret")
    */
    placeholder?: string;
    /**
    * If enabled, render a disabled input element with 'Click to set'
    */
    showClickToSet: boolean;
    /**
    * Valid values for parameter.
    */
    valid?: object[];
    /**
    * Recursive definition for items of a parameter with type 'array'.
    */
    items?: object;
    /**
    * Recursive definition for a parameter with type 'object'.
    */
    properties?: object;
    /**
    * Minimum value for parameters of type 'int' or 'float'.
    */
    minVal?: number;
    /**
    * Maximum value for parameters of type 'int' or 'float'.
    */
    maxVal?: number;
};
export type DSPGroupItemShowIfOperatorEnum = 'eq' | 'neq';
export const DSPGroupItemShowIfOperatorEnumValues: string[];
export type DSPGroupItemSectionEnum = 'advanced' | 'augmentation' | 'modelProfiling';
export const DSPGroupItemSectionEnumValues: string[];


export type DSPInfo = {
    id: number;
    name: string;
    windowLength: number;
    type: string;
    classes: string[];
    features: {
        /**
        * Whether this block has generated features
        */
        generated: boolean;
        /**
        * Number of generated features
        */
        count?: number;
        /**
        * Names of the features
        */
        labels?: string[];
        /**
        * Classes that the features were generated on
        */
        classes?: string[];
    };
    /**
    * Expected number of windows that would be generated
    */
    expectedWindowCount: number;
    /**
    * Axes that this block depends on.
    */
    inputAxes: string[];
    performance?: DspPerformance;
    canCalculateFeatureImportance: boolean;
    calculateFeatureImportance: boolean;
    /**
    * Whether this DSP block supports data normalization after features were generated. This is true unless
    * "dontAllowDataNormalization" is set to true in the DSP block's parameters.json.
    */
    canNormalizeData: boolean;
    normalizeData: DSPNormalizeData;
    /**
    * Whether this type of DSP block supports autotuning.
    */
    hasAutoTune?: boolean;
    /**
    * For DSP blocks that support autotuning, this value specifies the minimum block implementation version for which
    * autotuning is supported.
    */
    minimumVersionForAutotune?: number;
    /**
    * Whether autotune results exist for this DSP block.
    */
    hasAutotunerResults?: boolean;
    /**
    * Whether this DSP block uses state.
    */
    usesState?: boolean;
};


export type DSPMetadata = {
    /**
    * Date when the features were created
    */
    created: Date;
    /**
    * Whether features were generated
    */
    generated: boolean;
    dspConfig: {
        [key: string]: string;
    };
    /**
    * Labels in the dataset when generator ran
    */
    labels: string[];
    /**
    * Names of the generated features. Only set if axes have explicit labels.
    */
    featureLabels?: string[];
    windowCount: number;
    /**
    * Number of features for this DSP block
    */
    featureCount: number;
    /**
    * The included samples in this DSP block. Note that these are sorted in the same way as the `npy` files are laid
    * out. So with the `windowCount` parameter you can exactly search back to see which file contributed to which
    * windows there.
    */
    includedSamples: DSPMetadataIncludedSamples[];
    /**
    * Length of the sliding window when generating features.
    */
    windowSizeMs: number;
    /**
    * Increase of the sliding window when generating features.
    */
    windowIncreaseMs: number;
    /**
    * Whether data was zero-padded when generating features.
    */
    padZeros: boolean;
    /**
    * Frequency of the original data in Hz.
    */
    frequency: number;
    /**
    * Information about the output of the DSP block
    */
    outputConfig: DSPMetadataOutputConfig;
    fftUsed?: number[];
    /**
    * The version number of the resampling algorithm used (for resampled time series data only)
    */
    resamplingAlgorithmVersion?: number;
    /**
    * When specified, a job is running (asynchronously) to generate the feature explorer.
    */
    featureExplorerJobId?: number;
    /**
    * If this is set, then the feature explorer job failed (get the status by getting the job logs for
    * 'featureExplorerJobId').
    */
    featureExplorerJobFailed?: boolean;
    /**
    * When specified, a job is running (asynchronously) to generate feature importance.
    */
    featureImportanceJobId?: number;
    /**
    * If this is set, then the feature importance job failed (get the status by getting the job logs for
    * 'featureImportanceJobId').
    */
    featureImportanceJobFailed?: boolean;
};


export type DSPMetadataIncludedSamples = {
    id: number;
    windowCount: number;
};


/**
* Information about the output of the DSP block
*/
export type DSPMetadataOutputConfig = {
    /**
    * Output type of the DSP block
    */
    type: DSPMetadataOutputConfigTypeEnum;
    /**
    * The shape of the block output
    */
    shape: {
        /**
        * Available on all types. Denotes the width of an 'image' or 'spectrogram', or the number of features in a
        * 'flat'
        * block.
        */
        width: number;
        /**
        * Only available for type 'image' and 'spectrogram'
        */
        height?: number;
        /**
        * Only available for type 'image'
        */
        channels?: number;
        /**
        * Number of frames, only available for type 'image'
        */
        frames?: number;
    };
};
export type DSPMetadataOutputConfigTypeEnum = 'image' | 'spectrogram' | 'flat';
export const DSPMetadataOutputConfigTypeEnumValues: string[];


export type DSPMetadataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Date when the features were created
    */
    created: Date;
    /**
    * Whether features were generated
    */
    generated: boolean;
    dspConfig: {
        [key: string]: string;
    };
    /**
    * Labels in the dataset when generator ran
    */
    labels: string[];
    /**
    * Names of the generated features. Only set if axes have explicit labels.
    */
    featureLabels?: string[];
    windowCount: number;
    /**
    * Number of features for this DSP block
    */
    featureCount: number;
    /**
    * The included samples in this DSP block. Note that these are sorted in the same way as the `npy` files are laid
    * out. So with the `windowCount` parameter you can exactly search back to see which file contributed to which
    * windows there.
    */
    includedSamples: DSPMetadataIncludedSamples[];
    /**
    * Length of the sliding window when generating features.
    */
    windowSizeMs: number;
    /**
    * Increase of the sliding window when generating features.
    */
    windowIncreaseMs: number;
    /**
    * Whether data was zero-padded when generating features.
    */
    padZeros: boolean;
    /**
    * Frequency of the original data in Hz.
    */
    frequency: number;
    /**
    * Information about the output of the DSP block
    */
    outputConfig: DSPMetadataOutputConfig;
    fftUsed?: number[];
    /**
    * The version number of the resampling algorithm used (for resampled time series data only)
    */
    resamplingAlgorithmVersion?: number;
    /**
    * When specified, a job is running (asynchronously) to generate the feature explorer.
    */
    featureExplorerJobId?: number;
    /**
    * If this is set, then the feature explorer job failed (get the status by getting the job logs for
    * 'featureExplorerJobId').
    */
    featureExplorerJobFailed?: boolean;
    /**
    * When specified, a job is running (asynchronously) to generate feature importance.
    */
    featureImportanceJobId?: number;
    /**
    * If this is set, then the feature importance job failed (get the status by getting the job logs for
    * 'featureImportanceJobId').
    */
    featureImportanceJobFailed?: boolean;
};


export type DSPNamedAxis = {
    name: string;
    description: string;
    required: boolean;
};


export type DSPNormalizeData = 'none' | 'normalize-channel-standard-scaler';
export const DSPNormalizeDataValues: string[];


export type DailyMetricsRecord = {
    /**
    * Date of the metrics record.
    */
    date: Date;
    /**
    * Total number of users, if the metrics record applies to a non-developer profile organization. For developer
    * profile organizations, we default to 0.
    */
    totalUsers: number;
    /**
    * Total number of staff users, if the metrics record applies to a non-developer profile organization. For developer
    * profile organizations, we default to 0.
    */
    totalStaffUsers: number;
    /**
    * Total number of projects at the end of the metrics record date.
    */
    totalProjects: number;
    /**
    * Total CPU compute time since contract start date, or organization / user creation date, at the end of the metrics
    * record date.
    */
    totalCurrentContractCpuComputeTimeSeconds: number;
    /**
    * Total GPU compute time since contract start date, or organization / user creation date, at the end of the metrics
    * record date.
    */
    totalCurrentContractGpuComputeTimeSeconds: number;
    /**
    * Total compute time since contract start date, or organization / user creation date, at the end of the metrics
    * record date. Compute time is calculated as CPU + 3*GPU compute time.
    */
    totalCurrentContractComputeTimeSeconds: number;
    /**
    * Date from which the total compute time is calculated. This is the contract start date for billing organizations,
    * or organization / user creation date.
    */
    computeTimeCalculatedSince: Date;
    /**
    * Total storage size in bytes at the end of the metrics record date.
    */
    totalStorageSizeBytes: number;
    /**
    * Number of users added during the metrics record date.
    */
    usersAdded: number;
    /**
    * Number of staff users added during the metrics record date.
    */
    staffUsersAdded?: number;
    /**
    * Number of users deleted during the metrics record date.
    */
    usersDeleted: number;
    /**
    * Number of staff users deleted during the metrics record date.
    */
    staffUsersDeleted?: number;
    /**
    * Number of projects added during the metrics record date.
    */
    projectsAdded: number;
    /**
    * Number of projects deleted during the metrics record date.
    */
    projectsDeleted: number;
    /**
    * Total CPU compute time during the metrics record date.
    */
    cpuComputeTimeSeconds: number;
    /**
    * Total GPU compute time during the metrics record date.
    */
    gpuComputeTimeSeconds: number;
    /**
    * Total compute time during the metrics record date. Compute time is calculated as CPU + 3*GPU compute time.
    */
    computeTimeSeconds: number;
    /**
    * Total storage size in bytes added during the metrics record date.
    */
    storageBytesAdded: number;
    /**
    * Total storage size in bytes deleted during the metrics record date.
    */
    storageBytesDeleted: number;
};


export type DataCampaign = {
    id: number;
    dataCampaignDashboardId: number;
    created: Date;
    name: string;
    description: string;
    /**
    * List of user IDs that coordinate this campaign
    */
    coordinatorUids: number[];
    logo?: string;
    queries: DataCampaignQuery[];
    links: DataCampaignLink[];
    datasets: string[];
    pipelineIds: number[];
    projectIds: number[];
};


export type DataCampaignDashboard = {
    id: number;
    created: Date;
    name: string;
    /**
    * List of user IDs to notify for this dashboard (sent daily)
    */
    emailRecipientUids: number[];
    latestScreenshot?: string;
    whenToEmail: DataCampaignDashboardWhenToEmailEnum;
    showNoOfDays: number;
};
export type DataCampaignDashboardWhenToEmailEnum = 'always' | 'on_changes' | 'never';
export const DataCampaignDashboardWhenToEmailEnumValues: string[];


export type DataCampaignGraph = {
    title: string;
    link: string;
    xData: {
        color: string;
        legendText: string;
        popupText: string;
        values: {
            id: number;
            value?: number;
        }[];
        dataset?: string;
        query?: string;
        dataType: DataCampaignGraphXDataDataTypeEnum;
    }[];
    yTicks: Date[];
    nextUpdate: Date;
};
export type DataCampaignGraphXDataDataTypeEnum = 'dataItems' | 'time' | 'percentage';
export const DataCampaignGraphXDataDataTypeEnumValues: string[];


export type DataCampaignLink = {
    icon: string;
    name: string;
    link: string;
};


export type DataCampaignQuery = {
    name: string;
    dataset: string;
    query: string;
};


export type DataExplorerPredictionsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    predictions: ModelPrediction[];
    labels: string[];
    classificationType: DataExplorerPredictionsResponseClassificationTypeEnum;
};
export type DataExplorerPredictionsResponseClassificationTypeEnum = 'classification' | 'regression';
export const DataExplorerPredictionsResponseClassificationTypeEnumValues: string[];


export type DataExplorerSettings = {
    /**
    * Preset to use for the data explorer.
    */
    preset?: DataExplorerSettingsPresetEnum;
    dimensionalityReductionTechnique?: DataExplorerSettingsDimensionalityReductionTechniqueEnum;
    /**
    * Which impulse to use (if preset is either 'current-impulse' or 'current-impulse-embeddings'). If this is undefined
    * then 'defaultImpulseId' is used.
    */
    impulseId?: number;
};
export type DataExplorerSettingsPresetEnum = 'keywords' | 'images' | 'current-impulse' | 'current-impulse-embeddings';
export const DataExplorerSettingsPresetEnumValues: string[];
export type DataExplorerSettingsDimensionalityReductionTechniqueEnum = 'tsne' | 'pca';
export const DataExplorerSettingsDimensionalityReductionTechniqueEnumValues: string[];


export type DatasetRatioData = {
    ratio: DatasetRatioDataRatio;
};


export type DatasetRatioDataRatio = {
    /**
    * Number of training samples after rebalance
    */
    training?: number;
    /**
    * Number of validation samples after rebalance. This is experimental and may change in the future.
    */
    validation?: number;
    /**
    * Number of testing samples after rebalance. This ignores test data with a label that's not in the training dataset.
    */
    testing?: number;
};


export type DatasetSplitOptions = {
    /**
    * Proportion of the dataset to use for training.
    */
    trainingSplitRatio: number;
    /**
    * Proportion of the dataset to use for testing.
    */
    testingSplitRatio: number;
    /**
    * Proportion of the dataset to use for validation. This is experimental and may change in the future.
    */
    validationSplitRatio?: number;
    /**
    * Whether to exclude samples that are marked as disabled.
    */
    excludeDisabledSamples?: boolean;
    /**
    * Optional balancing targets for the split.
    */
    stratifyBy?: {
        /**
        * Whether to stratify by label.
        */
        label?: boolean;
        /**
        * Metadata keys to use as balancing targets. If more than one is selected, they are combined into composite
        * assignment buckets.
        */
        metadataKeys?: string[];
    };
    /**
    * List of metadata keys whose matching values must stay together in a single split. This is useful for leakage
    * prevention across train, validation, and test.
    */
    keepTogetherMetadataKeys?: string[];
};


export type DatasetSplitPreview = {
    assignmentPreview: DatasetSplitPreviewSection;
    balancePreviews: DatasetSplitPreviewSection[];
};


export type DatasetSplitPreviewResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    data: DatasetSplitPreview;
};


export type DatasetSplitPreviewRow = {
    stratValue: string;
    splitCategory: DatasetSplitPreviewRowSplitCategoryEnum;
    sampleCount: number;
    percentWithinGroup: number;
    totalLengthMs?: number;
    percentWithinGroupDuration?: number;
};
export type DatasetSplitPreviewRowSplitCategoryEnum = 'training' | 'testing' | 'validation';
export const DatasetSplitPreviewRowSplitCategoryEnumValues: string[];


export type DatasetSplitPreviewSection = {
    title: string;
    summary?: string;
    keyLabel: string;
    rows: DatasetSplitPreviewRow[];
};


export type DatasetVersion = {
    /**
    * Unique identifier of this dataset version.
    */
    id: number;
    /**
    * Date and time when this dataset version was created.
    */
    created: Date;
    /**
    * A sequential index of this dataset version, starting at 0 for the first version.
    */
    versionIndex: number;
    /**
    * User-editable description of this dataset version.
    */
    description: string | null;
    /**
    * ID of the parent dataset version this version is derived from. Null for the first dataset version.
    */
    parentVersionId: number | null;
    /**
    * ID of the dataset version this version was restored from. Null if not restored.
    */
    restoredFromDatasetVersionId?: number | null;
    type: DatasetVersionType;
    summary: DatasetVersionSummary;
    /**
    * Date and time when this dataset version window opened.
    */
    windowStart: Date;
    /**
    * Date and time when this dataset version window closed.
    */
    windowEnd: Date;
    /**
    * Actors who contributed at least one change in this dataset version window.
    */
    actors: (ActorUser | ActorOAuthClient | ActorProjectApiKey)[];
};


export type DatasetVersionChangeItem = {
    actions: DBAction[];
    sampleId: number;
    /**
    * Partial sample key value pairs before modification. Applies to update events only.
    */
    oldValues?: object;
    /**
    * Partial sample key value pairs after modification. Applies to update events only.
    */
    newValues?: object;
};


export type DatasetVersionPendingWindow = {
    /**
    * Temporary window ID that cannot be used for retrieval. The window is deleted after a successful commit.
    */
    windowId: number;
    /**
    * Date and time when this dataset version window opened.
    */
    windowStart: Date;
    /**
    * Date and time when this dataset version window closed.
    */
    windowEnd: Date | null;
};


export type DatasetVersionRawDataChangeDetailItem = {
    sample: Sample;
    change?: DatasetVersionChangeItem;
};


export type DatasetVersionRawDataChangeDetails = {
    totalCount: number;
    changeDetails: DatasetVersionRawDataChangeDetailItem[];
};


export type DatasetVersionSummary = {
    /**
    * Total number of raw mutation events in this dataset version window. A single sample can contribute multiple
    * events, for example, an insert followed by an update.
    */
    rawEventCountInWindow: number;
    /**
    * Total number of distinct samples that changed in this dataset version window. Each sample is counted once, even if
    * it has multiple mutation events.
    */
    sampleChangesCount: number;
    /**
    * Number of samples with mutation events in this window, grouped by action type. Each action-type count is at most
    * the number of changed samples, but sums across action types can be higher because one sample can contribute to
    * multiple action types.
    */
    actionCounts: {
        /**
        * Number of samples in this window with at least one insert mutation.
        */
        insert?: number;
        /**
        * Number of samples in this window with at least one update mutation.
        */
        update?: number;
        /**
        * Number of samples in this window with at least one delete mutation.
        */
        delete?: number;
    };
};


export type DatasetVersionType = 'auto_save' | 'restore';
export const DatasetVersionTypeValues: string[];


export type DeletePortalFileRequest = {
    /**
    * S3 path (within the portal)
    */
    path: string;
};


export type DeleteTestUserRequest = {
    /**
    * Specific user ID to delete (must have analytics_type='test')
    */
    userId: number;
};


export type DeleteTestUserResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Number of users deleted
    */
    deletedCount?: number;
};


export type DeleteUserRequest = {
    /**
    * User's current password. Required if the user has a password set.
    */
    password?: string;
    /**
    * TOTP Token. Required if a user has multi-factor authentication with a TOTP token enabled. If a user has MFA
    * enabled, but no totpToken is submitted; then an error starting with "ERR_TOTP_TOKEN IS REQUIRED" is returned. Use
    * this to then prompt for an MFA token and re-try this request.
    */
    totpToken?: string;
};


export type DependencyData = {
    /**
    * Set of all labels present in data feeding into this model
    */
    classes: string[];
    blockNames: string[];
    featureCount: number;
    sampleCount: number;
    /**
    * Set of output classes for this model
    */
    outputClasses: string[];
};


export type DeployPretrainedModelInputAudio = {
    inputType: DeployPretrainedModelInputAudioInputTypeEnum;
    frequencyHz: number;
};
export type DeployPretrainedModelInputAudioInputTypeEnum = 'audio';
export const DeployPretrainedModelInputAudioInputTypeEnumValues: string[];


export type DeployPretrainedModelInputImage = {
    inputType: DeployPretrainedModelInputImageInputTypeEnum;
    inputScaling?: ImageInputScaling;
    resizeMode?: ImageInputResizeMode;
};
export type DeployPretrainedModelInputImageInputTypeEnum = 'image';
export const DeployPretrainedModelInputImageInputTypeEnumValues: string[];


export type DeployPretrainedModelInputOther = {
    inputType: DeployPretrainedModelInputOtherInputTypeEnum;
};
export type DeployPretrainedModelInputOtherInputTypeEnum = 'other';
export const DeployPretrainedModelInputOtherInputTypeEnumValues: string[];


export type DeployPretrainedModelInputTimeSeries = {
    inputType: DeployPretrainedModelInputTimeSeriesInputTypeEnum;
    frequencyHz: number;
    windowLengthMs: number;
};
export type DeployPretrainedModelInputTimeSeriesInputTypeEnum = 'time-series';
export const DeployPretrainedModelInputTimeSeriesInputTypeEnumValues: string[];


export type DeployPretrainedModelModelAnomaly = {
    modelType: DeployPretrainedModelModelAnomalyModelTypeEnum;
};
export type DeployPretrainedModelModelAnomalyModelTypeEnum = 'anomaly';
export const DeployPretrainedModelModelAnomalyModelTypeEnumValues: string[];


export type DeployPretrainedModelModelClassification = {
    modelType: DeployPretrainedModelModelClassificationModelTypeEnum;
    labels: string[];
};
export type DeployPretrainedModelModelClassificationModelTypeEnum = 'classification';
export const DeployPretrainedModelModelClassificationModelTypeEnumValues: string[];


export type DeployPretrainedModelModelFreeform = {
    modelType: DeployPretrainedModelModelFreeformModelTypeEnum;
};
export type DeployPretrainedModelModelFreeformModelTypeEnum = 'freeform';
export const DeployPretrainedModelModelFreeformModelTypeEnumValues: string[];


export type DeployPretrainedModelModelObjectDetection = {
    modelType: DeployPretrainedModelModelObjectDetectionModelTypeEnum;
    labels: string[];
    lastLayer: ObjectDetectionLastLayer;
    /**
    * Deprecated: use thresholdValues instead. Threshold for objects (f.e. 0.3).
    */
    minimumConfidence: number;
    /**
    * All configured thresholds for the current model. Valid keys are 'min_score' (object detection models, all but
    * paddleocr-detector); 'min_score_pixel', 'min_score_box', 'unclip_ratio' (paddleocr-detector).
    */
    thresholdValues?: {
        [key: string]: number;
    };
};
export type DeployPretrainedModelModelObjectDetectionModelTypeEnum = 'object-detection';
export const DeployPretrainedModelModelObjectDetectionModelTypeEnumValues: string[];


export type DeployPretrainedModelModelRegression = {
    modelType: DeployPretrainedModelModelRegressionModelTypeEnum;
};
export type DeployPretrainedModelModelRegressionModelTypeEnum = 'regression';
export const DeployPretrainedModelModelRegressionModelTypeEnumValues: string[];


export type DeployPretrainedModelModelVisualAnomaly = {
    modelType: DeployPretrainedModelModelVisualAnomalyModelTypeEnum;
    /**
    * All configured thresholds for the current model. Valid keys are 'min_anomaly_score' and
    * 'anomaly_scoring_aggregation_method'.
    */
    thresholdValues?: {
        [key: string]: ThresholdValue;
    };
};
export type DeployPretrainedModelModelVisualAnomalyModelTypeEnum = 'visual-anomaly';
export const DeployPretrainedModelModelVisualAnomalyModelTypeEnumValues: string[];


export type DeployPretrainedModelRequest = {
    /**
    * A base64 encoded pretrained model
    */
    modelFileBase64: string;
    modelFileType: DeployPretrainedModelRequestModelFileTypeEnum;
    /**
    * The name of the built target. You can find this by listing all deployment targets through
    * `listDeploymentTargetsForProject` (via `GET /v1/api/{projectId}/deployment/targets`) and see the `format` type.
    */
    deploymentType: string;
    engine?: DeploymentTargetEngine;
    modelInfo: DeployPretrainedModelRequestModelInfo;
    /**
    * A base64 encoded .npy file containing the features from your validation set (optional for onnx and saved_model) -
    * used to quantize your model.
    */
    representativeFeaturesBase64?: string;
    deployModelType?: DeployPretrainedModelRequestDeployModelTypeEnum;
    /**
    * Optional, use a specific converter (only for ONNX models).
    */
    useConverter?: DeployPretrainedModelRequestUseConverterEnum;
    /**
    * Optional for ONNX files: overrides the input shape of the model. This is highly suggested if the model has dynamic
    * dimensions. If this field is not set, then all dynamic dimensions will be set to '1'.
    */
    overrideInputShape?: number[];
};
export type DeployPretrainedModelRequestModelFileTypeEnum = 'tflite' | 'onnx' | 'saved_model' | 'lgbm' | 'xgboost' | 'pickle' | 'ngboost';
export const DeployPretrainedModelRequestModelFileTypeEnumValues: string[];
export type DeployPretrainedModelRequestDeployModelTypeEnum = 'int8' | 'float32';
export const DeployPretrainedModelRequestDeployModelTypeEnumValues: string[];
export type DeployPretrainedModelRequestUseConverterEnum = 'onnx-tf' | 'onnx2tf';
export const DeployPretrainedModelRequestUseConverterEnumValues: string[];


export type DeployPretrainedModelRequestModelInfo = {
    input: DeployPretrainedModelInputTimeSeries | DeployPretrainedModelInputAudio | DeployPretrainedModelInputImage | DeployPretrainedModelInputOther;
    model: DeployPretrainedModelModelClassification | DeployPretrainedModelModelRegression | DeployPretrainedModelModelObjectDetection | DeployPretrainedModelModelFreeform | DeployPretrainedModelModelAnomaly | DeployPretrainedModelModelVisualAnomaly;
};


export type DeploymentHistory = {
    /**
    * Date when the model was deployed
    */
    created: Date;
    deploymentVersion: number;
    deploymentFormat: string;
    deploymentTarget?: ProjectDeploymentTarget;
    engine: DeploymentTargetEngine;
    modelType?: KerasModelTypeEnum;
    impulseId: number;
    impulseName: string;
    impulseIsDeleted: boolean;
    createdByUser?: CreatedUpdatedByUser;
    /**
    * Set to true if the deployment no longer exactly matches the impulse it was created from (e.g. model was trained
    * since the deployment was created, or some thresholds have changed)
    */
    impulseHasChangedSinceDeployment: boolean;
    downloadUrl: string;
    /**
    * If set, then this deployment was created by an anonymous user through buildPublicDeploymentJob.
    */
    createdByBuildPublicDeploymentJob: boolean;
};


export type DeploymentTarget = {
    name: string;
    description: string;
    image: string;
    imageClasses: string;
    format: string;
    latencyDevice?: string;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasEonCompiler: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasTensorRT: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasTensaiFlow: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasDRPAI: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasTIDL: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasAkida: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasMemryx: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasStAton: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasCevaNpn: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasNordicAxon: boolean;
    hideOptimizations: boolean;
    badge?: DeploymentTargetBadge;
    uiSection: DeploymentTargetUiSectionEnum;
    customDeployId?: number;
    customDeployOrganizationId?: number;
    integrateUrl?: string;
    ownerOrganizationName?: string;
    supportedEngines: DeploymentTargetEngine[];
    preferredEngine: DeploymentTargetEngine;
    url?: string;
    docsUrl: string;
    firmwareRepoUrl?: string;
    modelVariants: DeploymentTargetVariant[];
    parameters: DSPGroupItem[];
    /**
    * An optional redirect field for integration partners to be shown in addition to the docs link, i.e. for directing
    * users to a partner's website or application once deployment completes. This is experimental and may change in the
    * future.
    */
    redirect?: DeploymentTargetRedirect;
};
export type DeploymentTargetUiSectionEnum = 'library' | 'firmware' | 'mobile' | 'hidden';
export const DeploymentTargetUiSectionEnumValues: string[];


export type DeploymentTargetBadge = {
    name: string;
    description: string;
};


export type DeploymentTargetEngine = 'tflite' | 'tflite-eon' | 'tflite-eon-ram-optimized' | 'tensorrt' | 'tensaiflow' | 'drp-ai' | 'tidl' | 'akida' | 'syntiant' | 'memryx' | 'neox' | 'ethos-linux' | 'st-aton' | 'ceva-npn' | 'nordic-axon' | 'vlm-connector';
export const DeploymentTargetEngineValues: string[];


/**
* An optional redirect field for integration partners to be shown in addition to the docs link, i.e. for directing users
* to a partner's website or application once deployment completes. This is experimental and may change in the future.
*/
export type DeploymentTargetRedirect = {
    url?: string;
    text?: string;
};


export type DeploymentTargetVariant = {
    variant: KerasModelVariantEnum;
    supported: boolean;
    hint?: string;
};


export type DeploymentTargetsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    targets: DeploymentTarget[];
};


export type DetailedImpulse = {
    impulse: Impulse;
    metrics: DetailedImpulseMetric[];
    dspBlockConfigs: {
        blockId: number;
        config: DSPConfig;
        metadata?: DSPMetadata;
    }[];
    learnBlockKerasConfigs: {
        blockId: number;
        config: KerasConfig;
        metadata?: KerasModelMetadata;
    }[];
    learnBlockAnomalyConfigs: {
        blockId: number;
        config: AnomalyConfig;
        metadata?: AnomalyModelMetadata;
        gmmMetadata?: AnomalyGmmMetadata;
    }[];
    postProcessingBlockConfigs: {
        blockId: number;
        config: PostProcessingConfig;
    }[];
    pretrainedModelInfo?: {
        fileName: string;
    };
    /**
    * Whether this impulse contains blocks with "stale" features (i.e. the dataset has changed since features were
    * generated)
    */
    isStale: boolean;
    /**
    * Whether this impulse is configured
    */
    configured: boolean;
    /**
    * Whether this impulse is fully trained and configured
    */
    complete: boolean;
    /**
    * Tags associated with this impulse
    */
    tags: string[];
    /**
    * The source EON Tuner trial ID for impulses created from the EON Tuner
    */
    createdFromTunerTrialId?: number;
    createdByUser?: CreatedUpdatedByUser;
};


export type DetailedImpulseMetric = {
    name: string;
    type: DetailedImpulseMetricTypeEnum;
    filteringType?: DetailedImpulseMetricFilteringType;
    category: DetailedImpulseMetricCategory;
    description: string;
    value: string | boolean;
    title?: string;
    valueForSorting?: number;
    /**
    * Additional help explaining the value for this metric
    */
    valueHint?: string;
};
export type DetailedImpulseMetricTypeEnum = 'core' | 'additional';
export const DetailedImpulseMetricTypeEnumValues: string[];


export type DetailedImpulseMetricCategory = 'impulseMetrics' | 'inputBlockConfig' | 'dspBlockConfig' | 'learnBlockConfig' | 'learnBlockMetrics' | 'postProcessingBlockConfig';
export const DetailedImpulseMetricCategoryValues: string[];


export type DetailedImpulseMetricFilteringType = {
    type: DetailedImpulseMetricFilteringTypeTypeEnum;
    options: string[];
};
export type DetailedImpulseMetricFilteringTypeTypeEnum = 'numeric' | 'string' | 'select' | 'boolean' | 'list';
export const DetailedImpulseMetricFilteringTypeTypeEnumValues: string[];


export type DevelopmentBoardRequest = {
    name: string;
    image: string;
    docsUrl: string;
};


export type DevelopmentBoardRequestUpdate = {
    name?: string;
    image?: string;
    docsUrl?: string;
};


export type DevelopmentBoardResponse = {
    id: number;
    name: string;
    image: string;
    docsUrl: string;
};


export type DevelopmentBoardsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    developmentBoards: DevelopmentBoardResponse[];
};


export type DevelopmentKeys = {
    /**
    * API Key
    */
    apiKey?: string;
    /**
    * HMAC Key
    */
    hmacKey?: string;
};


export type DevelopmentKeysResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * API Key
    */
    apiKey?: string;
    /**
    * HMAC Key
    */
    hmacKey?: string;
};


export type Device = {
    id: number;
    /**
    * Unique identifier (such as MAC address) for a device
    */
    deviceId: string;
    created: Date;
    /**
    * Last message that was received from the device (ignoring keep-alive)
    */
    lastSeen: Date;
    name: string;
    deviceType: string;
    sensors: {
        name: string;
        /**
        * Maximum supported sample length in seconds
        */
        maxSampleLengthS: number;
        /**
        * Supported frequencies for this sensor in Hz.
        */
        frequencies: number[];
    }[];
    /**
    * Whether the device is connected to the remote management interface. This property is deprecated, use
    * `remoteMgmtMode` instead.
    */
    remote_mgmt_connected: boolean;
    /**
    * The remote management host that the device is connected to
    */
    remote_mgmt_host?: string;
    supportsSnapshotStreaming: boolean;
    /**
    * Replaces `remote_mgmt_connected`. Shows whether the device is connected to the remote management interface, and in
    * which mode.
    */
    remoteMgmtMode: DeviceRemoteMgmtModeEnum;
    /**
    * If `remoteMgmtMode` is set to `inference` this object shows information about the model that's ran on device.
    */
    inferenceInfo?: {
        projectId: number;
        projectOwner: string;
        projectName: string;
        deployedVersion: number;
        modelType?: DeviceInferenceInfoModelTypeEnum;
    };
};
export type DeviceRemoteMgmtModeEnum = 'disconnected' | 'ingestion' | 'inference';
export const DeviceRemoteMgmtModeEnumValues: string[];
export type DeviceInferenceInfoModelTypeEnum = 'classification' | 'objectDetection' | 'constrainedObjectDetection';
export const DeviceInferenceInfoModelTypeEnumValues: string[];


export type DeviceDebugStreamType = 'snapshot' | 'inference';
export const DeviceDebugStreamTypeValues: string[];


export type DeviceNameResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Device name
    */
    name?: string;
};


export type DowngradeSubscriptionRequest = {
    /**
    * Reason for downgrading the subscription.
    */
    downgradeReason?: string;
};


export type Download = {
    id?: string;
    name: string;
    type: string;
    size?: string;
    link: string;
    impulseId?: number;
};


export type DownloadPortalFileRequest = {
    /**
    * S3 path (within the portal)
    */
    path: string;
};


export type DownloadPortalFileResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Signed URL to download the file
    */
    url: string;
};


export type DspAutotunerResults = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    results: DspAutotunerResultsAllOfResults[];
};


export type DspAutotunerResultsAllOfResults = {
    key: string;
    value: string;
};


export type DspFeatureImportanceResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasFeatureImportance: boolean;
    labels: {
        [key: string]: {
            features: {
                axis: string;
                importance: number;
            }[];
        };
    };
};


export type DspFeatureLabelsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    labels: string[];
};


export type DspPerformance = {
    latency: number;
    ram: number;
    /**
    * If the project latencyDevice has custom DSP hardware, this value contains a device specific latency metric (eg.
    * cycles)
    */
    customDspString?: string;
};


export type DspPerformanceAllVariantsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of performance estimates for each supported MCU.
    */
    performance?: {
        mcu: string;
        /**
        * Latency estimate, in ms
        */
        latency: number;
        /**
        * RAM estimate, in bytes
        */
        ram: number;
    }[];
};


export type DspRunGraph = {
    /**
    * Name of the graph
    */
    name: string;
    /**
    * Base64 encoded image, only present if type is 'image'
    */
    image?: string;
    /**
    * Mime type of the Base64 encoded image, only present if type is 'image'
    */
    imageMimeType?: string;
    /**
    * Values on the x-axis per plot. Key is the name of the raw feature. Present if type is 'logarithmic' or 'linear'.
    */
    X?: {
        [key: string]: number[];
    };
    /**
    * Values of the y-axis. Present if type is 'logarithmic' or 'linear'.
    */
    y?: number[];
    /**
    * Suggested minimum value of x-axis
    */
    suggestedXMin?: number;
    /**
    * Suggested maxium value of x-axis
    */
    suggestedXMax?: number;
    /**
    * Suggested minimum value of y-axis
    */
    suggestedYMin?: number;
    /**
    * Suggested maximum value of y-axis
    */
    suggestedYMax?: number;
    /**
    * Type of graph (either `logarithmic`, `linear` or `image`)
    */
    type: string;
    /**
    * Width of the graph line (if type is `logarithmic` or `linear`). Default 3.
    */
    lineWidth?: number;
    /**
    * Whether to apply smoothing to the graph.
    */
    smoothing?: boolean;
    /**
    * Labels for the graph x and y axes.
    */
    axisLabels?: {
        X: string;
        y: string;
    };
    /**
    * Indices of points to highlight, per axis.
    */
    highlights?: {
        [key: string]: number[];
    };
};


export type DspRunRequestWithFeatures = {
    /**
    * Array of features. If you have multiple axes the data should be interleaved (e.g. [ax0_val0, ax1_val0, ax2_val0,
    * ax0_val1, ax1_val1, ax2_val1]).
    */
    features: number[];
    /**
    * DSP parameters with values
    */
    params: {
        [key: string]: string;
    };
    /**
    * Whether to generate graphs (will take longer)
    */
    drawGraphs: boolean;
    /**
    * Whether to request performance info (will take longer unless cached)
    */
    requestPerformance: boolean;
};


export type DspRunRequestWithoutFeatures = {
    /**
    * DSP parameters with values
    */
    params: {
        [key: string]: string | null;
    };
    /**
    * Whether to store the DSP parameters as the new default parameters.
    */
    store: boolean;
};


export type DspRunRequestWithoutFeaturesReadOnly = {
    /**
    * DSP parameters with values
    */
    params: {
        [key: string]: string | null;
    };
};


export type DspRunResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Array of processed features. Laid out according to the names in 'labels'
    */
    features: number[];
    /**
    * Graphs to plot to give an insight in how the DSP process ran
    */
    graphs: DspRunGraph[];
    /**
    * Labels of the feature axes
    */
    labels?: string[];
    /**
    * String representation of the DSP state returned
    */
    state_string?: string;
    performance?: DspPerformance;
};


export type DspRunResponseWithSample = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Array of processed features. Laid out according to the names in 'labels'
    */
    features: number[];
    /**
    * Graphs to plot to give an insight in how the DSP process ran
    */
    graphs: DspRunGraph[];
    /**
    * Labels of the feature axes
    */
    labels?: string[];
    /**
    * String representation of the DSP state returned
    */
    state_string?: string;
    /**
    * DEPRECATED. Label at the end of the window (only present for time-series data)
    */
    labelAtEndOfWindow?: string;
    /**
    * Label for the window. How the label is chosen is dependent on the value of "labelingMethodMultiLabel" in the input
    * block.
    */
    labelForWindow?: string;
    sample: RawSampleData;
    performance?: DspPerformance;
    canProfilePerformance: boolean;
};


export type DspSampleFeaturesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Total number of windows in the data set
    */
    totalSampleCount: number;
    data: {
        /**
        * Feature data for this window
        */
        X: number[];
        /**
        * Training label index
        */
        y: number;
        /**
        * Training label string
        */
        yLabel: string;
        sample?: {
            id: number;
            name: string;
            startMs: number;
            endMs: number;
        };
    }[];
    /**
    * When showing the processed features, skip the first X features. This is used in dimensionality reduction where
    * artificial features are introduced in the response (on the first few positions).
    */
    skipFirstFeatures: number;
};


export type DspTrainedFeaturesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Total number of windows in the data set
    */
    totalSampleCount: number;
    data: {
        /**
        * Data by feature index for this window
        */
        X: {
            [key: string]: number;
        };
        /**
        * Training label index
        */
        y: number;
        /**
        * Training label string
        */
        yLabel: string;
        /**
        * All key/value label pairs for samples with multiple labels (i.e. label map datasets).
        */
        structuredYLabel?: {
            [key: string]: string;
        };
        sample?: {
            id: number;
            name: string;
            startMs: number;
            endMs: number;
        };
    }[];
    /**
    * When showing the processed features, skip the first X features. This is used in dimensionality reduction where
    * artificial features are introduced in the response (on the first few positions).
    */
    skipFirstFeatures: number;
};


export type EditSampleLabelRequest = {
    /**
    * New label for this sample
    */
    label?: string;
};


export type EmailValidationRequest = {
    /**
    * E-mail address to validate
    */
    email: string;
};


export type EnterpriseLimit = 'users' | 'projects' | 'compute' | 'storage';
export const EnterpriseLimitValues: string[];


export type EnterpriseLimitsIncreaseRequest = {
    limits: EnterpriseLimit[];
    /**
    * Additional notes for the request. This is optional.
    */
    reason?: string;
};


export type EnterpriseTrial = {
    /**
    * Unique identifier of the trial.
    */
    id: number;
    /**
    * ID of the user who created the trial.
    */
    userId: number;
    /**
    * ID of the organization created for the trial.
    */
    organizationId: number;
    /**
    * Date when the trial was created. Trials start immediately on creation.
    */
    created: Date;
    /**
    * Expiration date of the trial. The trial will be set as expired after this date. There will be a grace period of 30
    * days after a trial expires before fully deleting the trial organization. This field is ignored if the trial is
    * requested by a non-admin user, defaulting to 14 days trial.
    */
    expirationDate: Date;
    /**
    * Notes about the trial. Free form text. This field is ignored if the trial is requested by a non-admin user.
    */
    notes?: string;
    /**
    * Date when the trial actually expired. This is set when the trial is expired by the system.
    */
    expiredDate: Date | null;
    /**
    * Date when the trial was deleted. This is set when the trial is fully deleted by the system.
    */
    deletedDate: Date | null;
    /**
    * Date when the trial was upgraded to a full enterprise account.
    */
    upgradedDate: Date | null;
};


export type EnterpriseUpgradeOrTrialExtensionRequest = {
    /**
    * Answer to the question: 'Why is this the right time for your team to invest in edge AI?'. This is optional.
    */
    reason?: string;
    /**
    * Answer to the question: 'What best describes your use case?'. This is optional.
    */
    useCase?: string;
    /**
    * Answer to the question: 'What is your timeline for solving your problem?'. This is optional.
    */
    timeline?: string;
    /**
    * Answer to the question: 'What are you hoping to achieve with an extension?'. This is optional.
    */
    objective?: string;
    /**
    * The user's trial ID. This is optional.
    */
    trialId?: number;
};


export type EntitlementLimits = {
    /**
    * Storage entitlement, in bytes
    */
    totalStorage?: number;
    /**
    * Total compute time entitlement (CPU + GPU), in seconds
    */
    computeTimePerYear?: number;
    /**
    * GPU compute time entitlement, in seconds
    */
    gpuComputeTimePerYear?: number;
    /**
    * Number of projects allowed for this organization
    */
    numberOfProjects?: number;
    /**
    * Number of users allowed for this organization
    */
    numberOfUsers?: number;
};


export type EntityCreatedResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Unique identifier of the created entity.
    */
    id: number;
};


export type EnvironmentVariable = {
    /**
    * Environmental variable key. Needs to adhere to regex "^[a-zA-Z_]+[a-zA-Z0-9_]*$".
    */
    key: string;
    /**
    * If value is left undefined, only the key is passed in as an environmental variable.
    */
    value?: string;
};


export type EvaluateJobResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    result: ModelVariantStats[];
};


export type EvaluateResultValue = {
    /**
    * The value based on the model alone
    */
    raw?: number;
    /**
    * The value including the result of anomaly detection
    */
    withAnomaly?: number;
};


export type EventSubscription = {
    /**
    * Numeric ID of the event subscription.
    */
    id: number;
    /**
    * Monitoring event type.
    */
    eventType: string;
    /**
    * Optional webhook destination ID this event subscription is attached to.
    */
    webhookId?: string | null;
    /**
    * Optional description for this event subscription.
    */
    description?: string;
    /**
    * Whether this event subscription is enabled.
    */
    enabled: boolean;
    /**
    * Timestamp of when the event subscription was created.
    */
    created: Date;
    /**
    * Optional key-value pair filters applied to event metadata for this destination.
    */
    metadataFilters?: {
        [key: string]: string;
    };
};


/**
* EXPERIMENTAL: Training processor for the impulse-specific-gpu rollout. This field is currently gated by a project
* experiment and may change in future API versions.
*/
export type ExperimentalImpulseSpecificGpuTrainingProcessor = 'cpu' | 'gpu';
export const ExperimentalImpulseSpecificGpuTrainingProcessorValues: string[];


export type ExportBlockResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Job identifier. Status updates will include this identifier.
    */
    id: number;
    exportUrl: string;
};


export type ExportGetUrlResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasExport: boolean;
    /**
    * Set if hasExport is true
    */
    created?: Date;
    /**
    * Set if hasExport is true
    */
    url?: string;
};


export type ExportInferenceHistoryDataRequest = {
    deploymentId: number;
    startTimestamp: number;
    endTimestamp: number;
    /**
    * Optional list of devices to filter by, given as a JSON string
    */
    deviceFilters?: string;
    /**
    * Data export format
    */
    format: ExportInferenceHistoryDataRequestFormatEnum;
};
export type ExportInferenceHistoryDataRequestFormatEnum = 'row-per-summary' | 'row-per-value';
export const ExportInferenceHistoryDataRequestFormatEnumValues: string[];


export type ExportKerasBlockDataRequest = {
    overrideImageInputScaling?: ImageInputScaling;
};


export type ExportOriginalDataRequest = {
    /**
    * Whether to rename the exported file names to an uploader friendly format (e.g. label.filename.cbor)
    */
    uploaderFriendlyFilenames: boolean;
    /**
    * Whether to retain crops and splits (applicable to time-series data only). If this is disabled, then the original
    * files are returned (as they were uploaded).
    */
    retainCrops: boolean;
};


export type ExportWavDataRequest = {
    /**
    * Whether to retain crops and splits. If this is disabled, then the original files are returned (as they were
    * uploaded).
    */
    retainCrops: boolean;
};


/**
* Known feature identifiers.
*/
export type Feature = 'signup-thank-you-page' | 'stripe-live-mode' | 'azure-storage' | 'monthly-compute-limit-enforcement' | 'pay-as-you-go' | 'user-screening-check' | 'oauth2' | 'external-apps-redirect-flow' | 'dataset-versioning';
export const FeatureValues: string[];


export type FinalizeCustomBlockUploadRequest = {
    /**
    * S3 object key for the staged upload
    */
    uploadKey: string;
    /**
    * file name
    */
    fileName: string;
    /**
    * file size in bytes
    */
    fileSize: number;
    /**
    * hash to identify file changes
    */
    fileHash: string;
    type: FinalizeCustomBlockUploadRequestTypeEnum;
    blockId: number;
};
export type FinalizeCustomBlockUploadRequestTypeEnum = 'transform' | 'deploy' | 'dsp' | 'transferLearning';
export const FinalizeCustomBlockUploadRequestTypeEnumValues: string[];


export type FindSegmentSampleRequest = {
    /**
    * If set, the segments are automatically shifted randomly, to make the dataset distribution more uniform.
    */
    shiftSegments: boolean;
    segmentLengthMs: number;
};


export type FindSegmentSampleResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    segments: SegmentSampleRequestSegments[];
};


export type FindSyntiantPosteriorRequest = {
    targetWords: string[];
    referenceSet: FindSyntiantPosteriorRequestReferenceSetEnum;
    wavFile?: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    metaCsvFile?: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    deploymentTarget?: FindSyntiantPosteriorRequestDeploymentTargetEnum;
};
export type FindSyntiantPosteriorRequestReferenceSetEnum = '600_seconds' | 'full' | 'custom' | 'no_calibration';
export const FindSyntiantPosteriorRequestReferenceSetEnumValues: string[];
export type FindSyntiantPosteriorRequestDeploymentTargetEnum = 'syntiant-ndp101' | 'syntiant-ndp101-lib' | 'syntiant-ndp120-lib' | 'syntiant-ndp120-lib-tdk-v14' | 'syntiant-nicla-ndp120' | 'syntiant-avnet-rasyn' | 'syntiant-ndp120-lib-ndp-v1-15-0';
export const FindSyntiantPosteriorRequestDeploymentTargetEnumValues: string[];


export type FindUserResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    users: {
        id: number;
        username: string;
        name: string;
        photo?: string;
        created: Date;
        email: string;
    }[];
};


export type GenerateFeaturesRequest = {
    /**
    * DSP block ID to generate features for
    */
    dspId: number;
    /**
    * Whether to generate feature importance (only when available)
    */
    calculateFeatureImportance?: boolean;
    /**
    * If set, skips feature explorer (used in tests)
    */
    skipFeatureExplorer?: boolean;
    normalizeData?: DSPNormalizeData;
};


export type GenericApiResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
};


export type GetAIActionResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    action: AIAction;
};


export type GetAIActionsProposedChangesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    proposedChanges: AIActionLastPreviewStateProposedChanges[];
};


export type GetAllDetailedImpulsesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    impulses: DetailedImpulse[];
    metricKeysByCategory: {
        category: DetailedImpulseMetricCategory;
        metricKeys: {
            name: string;
            description: string;
            type: GetAllDetailedImpulsesResponseAllOfMetricKeysTypeEnum;
            filteringType?: DetailedImpulseMetricFilteringType;
            showInTable: boolean;
        }[];
    }[];
    /**
    * Which extra impulse information should be shown in the impulses table.
    */
    extraTableColumns: string[];
};
export type GetAllDetailedImpulsesResponseAllOfMetricKeysTypeEnum = 'core' | 'additional';
export const GetAllDetailedImpulsesResponseAllOfMetricKeysTypeEnumValues: string[];


export type GetAllImportedFromResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    data: {
        id: number;
        category: string;
        importedFrom: string;
    }[];
};


export type GetAllImpulsesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    impulses: Impulse[];
};


export type GetAllThirdPartyAuthResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    auths: ThirdPartyAuth[];
};


export type GetAllTransferLearningModelsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    transferLearningModels: TransferLearningModel[];
};


export type GetAllWhitelabelsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    whitelabels: Whitelabel[];
};


export type GetAutoLabelerResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasResults: boolean;
    clusters: {
        label?: string;
        items: {
            sampleId: number;
            maskId: number;
            imageUrl: string;
        }[];
    }[];
    simThreshold: number;
    minObjectSizePx: number;
    maxObjectSizePx?: number;
    whichItemsToInclude: string;
};


export type GetCsvWizardUploadedFileInfo = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasFile: boolean;
    link?: string;
};


export type GetDataExplorerFeaturesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasFeatures: boolean;
    data: {
        /**
        * Data by feature index for this window
        */
        X: {
            [key: string]: number;
        };
        /**
        * Training label index
        */
        y: number;
        /**
        * Training label string
        */
        yLabel: string;
        sample?: {
            id: number;
            name: string;
            startMs: number;
            endMs: number;
            category: GetDataExplorerFeaturesResponseAllOfSampleCategoryEnum;
        };
    }[];
    inputBlock?: ImpulseInputBlock;
};
export type GetDataExplorerFeaturesResponseAllOfSampleCategoryEnum = 'training' | 'testing' | 'validation';
export const GetDataExplorerFeaturesResponseAllOfSampleCategoryEnumValues: string[];


export type GetDataExplorerSettingsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Preset to use for the data explorer.
    */
    preset?: GetDataExplorerSettingsResponsePresetEnum;
    dimensionalityReductionTechnique?: GetDataExplorerSettingsResponseDimensionalityReductionTechniqueEnum;
    /**
    * Which impulse to use (if preset is either 'current-impulse' or 'current-impulse-embeddings'). If this is undefined
    * then 'defaultImpulseId' is used.
    */
    impulseId?: number;
    dimensionalityReductionRecommendation: GetDataExplorerSettingsResponseDimensionalityReductionRecommendationEnum;
};
export type GetDataExplorerSettingsResponsePresetEnum = 'keywords' | 'images' | 'current-impulse' | 'current-impulse-embeddings';
export const GetDataExplorerSettingsResponsePresetEnumValues: string[];
export type GetDataExplorerSettingsResponseDimensionalityReductionTechniqueEnum = 'tsne' | 'pca';
export const GetDataExplorerSettingsResponseDimensionalityReductionTechniqueEnumValues: string[];
export type GetDataExplorerSettingsResponseDimensionalityReductionRecommendationEnum = 'tsne' | 'pca';
export const GetDataExplorerSettingsResponseDimensionalityReductionRecommendationEnumValues: string[];


export type GetDatasetRatioResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    ratio: DatasetRatioDataRatio;
};


export type GetDatasetVersionRawDataChangesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    totalCount: number;
    changeDetails: DatasetVersionRawDataChangeDetailItem[];
};


export type GetDatasetVersionResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    datasetVersion: DatasetVersion;
};


export type GetDeploymentHistoryResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    deployment: DeploymentHistory;
};


export type GetDeploymentResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasDeployment: boolean;
    version?: number;
};


export type GetDeviceResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    device?: Device;
};


export type GetDiversityDataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    data?: {
        labelId?: number;
        maxDistance: number;
        clusterInfos: {
            /**
            * Unique index of the cluster
            */
            idx: number;
            /**
            * Indexes of all windows contained in the cluster (for debugging)
            */
            indexes: number[];
            /**
            * The sample ID and window start and end of every window in the cluster
            */
            windows: number[][];
            /**
            * Details of every sample in the cluster
            */
            samples?: Sample[];
            /**
            * Raw vendi score
            */
            vendiScore: number;
            /**
            * Vendi score expressed as ratio from 0 to 1
            */
            vendiRatio: number;
            /**
            * The number if windows in the cluster
            */
            count: number;
            /**
            * The distance of the cluster from the origin
            */
            distance: number;
            /**
            * The cluster id on the left branch of the dendrogram
            */
            leftIdx: number | null;
            /**
            * The cluster id on the right branch of the dendrogram
            */
            rightIdx: number | null;
        }[];
    }[];
};


export type GetEmailVerificationCodeResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * The verification code associated with the provided email.
    */
    code?: string | null;
};


export type GetEmailVerificationStatusResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Whether the email address has been verified.
    */
    verified: boolean;
};


export type GetEventSubscriptionResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    subscription: EventSubscription;
};


export type GetFeatureFlagsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of feature flags.
    */
    flags: {
        feature: Feature;
        /**
        * Whether the feature is enabled.
        */
        enabled: boolean;
    }[];
};


export type GetFeaturesForPostProcessingSampleResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    features: number[];
};


export type GetHmacDevkeyResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * HMAC Key
    */
    hmacKey?: string;
};


export type GetImpulseBlocksResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    inputBlocks: InputBlock[];
    dspBlocks: DSPBlock[];
    learnBlocks: LearnBlock[];
    postProcessingBlocks: PostProcessingBlock[];
};


export type GetImpulseRecordsRequest = {
    index?: number;
    range?: {
        first?: number;
        last?: number;
    };
    list?: number[];
};


export type GetImpulseResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    impulse?: Impulse;
};


export type GetInferenceHistoryResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    summaryByTime: {
        startTimestamp: number;
        endTimestamp: number;
        data: InferenceHistoryAggregate[];
    }[];
    summaryByDevice: InferenceHistoryAggregate[];
    allClasses: string[];
    allDevices: {
        deviceId: string;
        deviceName: string;
    }[];
    allMetrics: string[];
};


export type GetInferenceMetricsRequest = {
    metrics: {
        /**
        * Metric data to fetch, e.g. "classificationCounter"
        */
        metricKey: string;
        /**
        * Filters, given as a JSON string. Example 1; a basic filter condition (deviceId == 1):
        * '{"key":"deviceId","condition":"EQ","value":"1"}' Example 2; a complex filter combining multiple conditions
        * (deviceId == 1 OR class != "can"):
        * '{"queries":[{"key":"deviceId","condition":"EQ","value":"1"},{"key":"class","condition":"NEQ","value":"can"}],"combinator":"OR"}'
        */
        filters?: string;
        /**
        * Aggregation criteria
        */
        aggregate?: {
            /**
            * Aggregation function to apply
            */
            aggregation?: GetInferenceMetricsRequestAggregateAggregationEnum;
            /**
            * Metric keys to aggregate by; if empty, will aggregate over all metrics. Examples: - [ "deviceId" ] =>
            * aggregates
            * per-device, returning a set of data for each device - [ "deviceId", "class" ] => aggregates per-device and
            * per-class, returning |classes| x |devices| sets of data
            */
            byMetricKeys?: string[];
        };
    }[];
    /**
    * Custom data "split", e.g. querying 28 days of data split by week will return 4 sets of weekly data
    */
    splitBy?: GetInferenceMetricsRequestSplitByEnum;
};
export type GetInferenceMetricsRequestAggregateAggregationEnum = 'avg' | 'min' | 'max' | 'sum';
export const GetInferenceMetricsRequestAggregateAggregationEnumValues: string[];
export type GetInferenceMetricsRequestSplitByEnum = 'daily' | 'weekly' | 'monthly';
export const GetInferenceMetricsRequestSplitByEnumValues: string[];


export type GetInferenceMetricsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Metric data, with one entry per metric, aggregate group, and split.
    */
    data: {
        key: string;
        data: number[];
    }[];
    /**
    * Set of all timestamps for which this data spans
    */
    timestamps: number[];
};


export type GetIntegrationSessionStatusResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    sessionStatus: IntegrationSessionStatus;
};


export type GetJWTRequest = {
    /**
    * Username or e-mail address
    */
    username: string;
    /**
    * Password
    */
    password: string;
    /**
    * Evaluation user UUID
    */
    uuid?: string;
    ssoType?: GetJWTRequestSsoTypeEnum;
    /**
    * Session ID
    */
    sessionId?: string;
    /**
    * TOTP Token. Required if a user has multi-factor authentication with a TOTP token enabled. If a user has MFA
    * enabled, but no totpToken is submitted; then an error starting with "ERR_TOTP_TOKEN IS REQUIRED" is returned. Use
    * this to then prompt for an MFA token and re-login.
    */
    totpToken?: string;
};
export type GetJWTRequestSsoTypeEnum = 'browser' | 'cli';
export const GetJWTRequestSsoTypeEnumValues: string[];


export type GetJWTResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * JWT token, to be used to log in in the future through JWTAuthentication
    */
    token?: string;
    /**
    * Redirect URL to follow to complete login
    */
    redirectUrl?: string;
};


export type GetJobResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    job: Job;
};


export type GetLabelNoiseDataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    data: {
        cosineSimilarity?: CosineSimilarityData;
        neighbors?: NeighborsData;
        crossValidation?: CrossValidationData;
    };
};


export type GetLastDeploymentBuildResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Does the deployment build still exist? (Builds are deleted if they are no longer valid for the project)
    */
    hasBuild: boolean;
    lastBuild?: {
        /**
        * The build version, incremented after each deployment build
        */
        version: number;
        /**
        * Deployment type of the build
        */
        deploymentType: string;
        engine: DeploymentTargetEngine;
        modelType?: KerasModelTypeEnum;
        /**
        * The time this build was created
        */
        created: Date;
    };
    lastDeploymentTarget?: ProjectDeploymentTarget;
};


export type GetModelMonitoringDeploymentsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    deployments: {
        id: number;
        version?: number;
        created: Date;
        deploymentType: string;
        engine?: DeploymentTargetEngine;
        modelType?: KerasModelTypeEnum;
        impulseId?: number;
        impulseName?: string;
    }[];
};


export type GetModelVariantsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * All model variants relevant for all learn blocks in the project
    */
    modelVariants: ProjectModelVariant[];
};


export type GetNewBlockIdResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    blockId: number;
};


export type GetOrganizationBucketResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    bucket: OrganizationBucket;
};


export type GetOrganizationDataCampaignDashboardResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dashboard: DataCampaignDashboard;
};


export type GetOrganizationDataCampaignDashboardsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dashboards: DataCampaignDashboard[];
};


export type GetOrganizationDataCampaignResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    campaign: DataCampaign;
    graphs: DataCampaignGraph[];
};


export type GetOrganizationDataCampaignsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    campaigns: {
        campaign: DataCampaign;
        graphs: DataCampaignGraph[];
    }[];
};


export type GetOrganizationDataExportResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    export: OrganizationDataExport;
};


export type GetOrganizationDataExportsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of organization data exports.
    */
    exports: OrganizationDataExport[];
    totalCount: number;
};


export type GetOrganizationDataItemResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    data: OrganizationDataItem;
};


export type GetOrganizationDataItemTransformJobsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    transformationJobs: {
        id: number;
        transformationJobId: number;
        createProjectId: number;
        created: Date;
        jobId: number;
        jobStarted?: Date;
        jobFinished?: Date;
        jobFinishedSuccessful?: boolean;
        transformationBlockName: string;
        pipelineName?: string;
    }[];
    totalTransformationJobCount: number;
};


export type GetOrganizationDatasetResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dataset: OrganizationDataset;
};


export type GetOrganizationDeployBlockResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    deployBlock: OrganizationDeployBlock;
};


export type GetOrganizationDspBlockResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dspBlock: OrganizationDspBlock;
};


export type GetOrganizationPipelinesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    pipeline: OrganizationPipeline;
};


export type GetOrganizationPortalResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Portal ID for the new upload portal
    */
    id: number;
    /**
    * The name of the upload portal.
    */
    name: string;
    /**
    * The purpose and description of the upload portal.
    */
    description?: string;
    /**
    * The url postfix of the upload portal.
    */
    url: string;
    /**
    * The token used to validate access to the upload portal.
    */
    token: string;
    /**
    * The S3 bucket name to store the uploaded data.
    */
    bucketName: string;
    /**
    * S3 bucket ID. If missing, then this is using the Edge Impulse hosted bucket.
    */
    bucketId?: number;
    /**
    * The S3 bucket path where uploaded data is stored.
    */
    bucketPath: string;
    /**
    * The full S3 bucket path where uploaded data is stored.
    */
    bucketUrl?: string;
    /**
    * The storage provider type (s3, azure, google, other).
    */
    storageProvider?: string;
};


export type GetOrganizationTransferLearningBlockResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    transferLearningBlock: OrganizationTransferLearningBlock;
};


export type GetOrganizationTransformationBlockResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    transformationBlock: OrganizationTransformationBlock;
};


export type GetOrganizationUsageReportResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    report: Report;
};


export type GetPerformanceCalibrationGroundTruthResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    samples: PerformanceCalibrationGroundTruth[];
};


export type GetPerformanceCalibrationParameterSetsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    parameterSets: PerformanceCalibrationParameterSet[];
};


export type GetPerformanceCalibrationParametersResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    params?: PerformanceCalibrationParameters;
};


export type GetPerformanceCalibrationRawResultResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    detections: PerformanceCalibrationRawDetection[];
};


export type GetPerformanceCalibrationStatusResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    available: boolean;
    /**
    * If the current project is unsupported by performance calibration, this field explains the reason why. Otherwise,
    * it is undefined.
    */
    unsupportedProjectError?: string;
    options?: StartPerformanceCalibrationRequest;
};


export type GetPostProcessingFeaturesForSampleResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    results: GetPostProcessingResultsForSampleResponseAllOfResults;
};


export type GetPostProcessingResultsForSampleResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasResults: GetPostProcessingResultsForSampleResponseHasResultsEnum;
    results?: GetPostProcessingResultsForSampleResponseAllOfResults;
    jobIsRunning?: {
        jobId: number;
        config: PostProcessingConfigRequest;
    };
};
export type GetPostProcessingResultsForSampleResponseHasResultsEnum = 'has-results' | 'job-is-running' | 'no-results';
export const GetPostProcessingResultsForSampleResponseHasResultsEnumValues: string[];


export type GetPostProcessingResultsForSampleResponseAllOfResults = {
    objectTracking?: ObjectTrackingPostProcessingResult;
    objectDetection?: ObjectDetectionPostProcessingResult;
};


export type GetPostProcessingResultsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * The names of the variables being tuned, in column order.
    */
    variableNames: string[];
    /**
    * The names of the objectives being minimized, in column order.
    */
    objectiveNames: string[];
    /**
    * The variable values representing the pareto front of optimal solutions.
    */
    variables: number[][];
    /**
    * The objective values that correspond with the variables.
    */
    objectives: number[][];
};


export type GetPretrainedModelResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Whether a specific device was selected for performance profiling
    */
    specificDeviceSelected: boolean;
    /**
    * The types of model that are available
    */
    availableModelTypes: KerasModelTypeEnum[];
    model?: {
        fileName: string;
        profileInfo?: {
            float32?: ProfileModelInfo;
            int8?: ProfileModelInfo;
            table: ProfileModelTable;
        };
        inputs: PretrainedModelTensor[];
        outputs: PretrainedModelTensor[];
        /**
        * If this is set, then we're still profiling this model. Subscribe to job updates to see when it's done
        * (afterward
        * the metadata will be updated).
        */
        profileJobId?: number;
        /**
        * If this is set, then the profiling job failed (get the status by getting the job logs for 'profilingJobId').
        */
        profileJobFailed?: boolean;
        supportsTFLite?: boolean;
    };
    modelInfo?: DeployPretrainedModelRequestModelInfo;
};


export type GetPublicDeploymentStatusResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    job: {
        /**
        * When the job was created.
        */
        created: Date;
        /**
        * When the job was started.
        */
        started?: Date;
        /**
        * When the job was finished.
        */
        finished?: Date;
        /**
        * Whether the job finished successfully. (Set to null if job is not finished)
        */
        finishedSuccessful?: boolean;
    };
    /**
    * Last 1000 log lines for this job.
    */
    logs: JobLogItem[];
};


export type GetPublicMetricsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    projects: number;
    data_samples: number;
    jobs: number;
};


export type GetPublicOrganizationTransformationBlockResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    transformationBlock: PublicOrganizationTransformationBlock;
};


export type GetRawDataMetadataCooccurrenceResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    keyA: string;
    keyB: string;
    category: RawDataCategory;
    sampleCount: number;
    sampleTotalLengthMs: number;
    pairCount: number;
    pairTotalLengthMs: number;
    missingKeyACount: number;
    missingKeyATotalLengthMs: number;
    missingKeyBCount: number;
    missingKeyBTotalLengthMs: number;
    missingEitherCount: number;
    missingEitherTotalLengthMs: number;
    coveragePct: number;
    uniqueKeyAValueCount: number;
    uniqueKeyBValueCount: number;
    keyAValues: string[];
    keyBValues: string[];
    matrix: number[][];
    totalLengthMsMatrix: number[][];
    normalizeApplied: GetRawDataMetadataCooccurrenceResponseNormalizeAppliedEnum;
    normalizedMatrix?: number[][];
    normalizedTotalLengthMsMatrix?: number[][];
};
export type GetRawDataMetadataCooccurrenceResponseNormalizeAppliedEnum = 'none' | 'global';
export const GetRawDataMetadataCooccurrenceResponseNormalizeAppliedEnumValues: string[];


export type GetRawDataMetadataDistributionResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    key: string;
    category: RawDataCategory;
    sampleCount: number;
    totalCount: number;
    missingCount: number;
    coveragePct: number;
    uniqueValueCount: number;
    type: GetRawDataMetadataDistributionResponseTypeEnum;
    buckets: MetadataDistributionBucket[];
    labelBreakdown?: MetadataDistributionLabelBreakdown[];
};
export type GetRawDataMetadataDistributionResponseTypeEnum = 'categorical' | 'numeric';
export const GetRawDataMetadataDistributionResponseTypeEnumValues: string[];


export type GetRawDataProjectMetadataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    metadata: ProjectDatasetMetadataClasses | ProjectDatasetMetadataRegression;
};


export type GetSSODomainIdPsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    idps: string[];
    /**
    * True when the user has no password set and none of their linked IDPs are currently valid. The client should
    * display the password-setup flow instead of the password input.
    */
    needsPasswordSetup?: boolean;
};


export type GetSampleDspResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    sample: Sample;
    payload: RawSamplePayload;
    /**
    * Total number of payload values
    */
    totalPayloadLength: number;
};


export type GetSampleMetadataFilterOptionsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    totalCount: number;
    count: number;
    /**
    * Available metadata filter options that can be supplied to the /raw-data/ endpoint to filter samples
    */
    optionsList: MetadataFilterOptionsOptionsList[];
};


export type GetSampleMetadataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Array with all available sample metadata.
    */
    metadata: SampleMetadata[];
};


export type GetSampleResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    sample: Sample;
    payload: RawSamplePayload;
    /**
    * Total number of payload values
    */
    totalPayloadLength: number;
    datastreamPayloads: RawSampleDataStreamPayloadsDatastreamPayloads[];
};


export type GetStudioConfigResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of config items
    */
    config: {
        /**
        * Config key
        */
        key: string;
        /**
        * Config value (as JSON string)
        */
        value: string;
    }[];
};


export type GetSyntheticDataConfigResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    recentJobs: {
        job: Job;
        samples: Sample[];
    }[];
    lastUsedTransformationBlockId?: number;
    lastUsedParameters?: {
        [key: string]: string;
    };
};


export type GetSyntiantPosteriorResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasPosteriorParameters: boolean;
    parameters?: object;
};


export type GetTargetConstraintsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    targetConstraints?: TargetConstraints;
};


export type GetThemeResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    theme?: Theme;
};


export type GetThemesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    themes: Theme[];
};


export type GetThirdPartyAuthResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    auth: ThirdPartyAuth;
};


export type GetUserNeedToSetPasswordResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * User email
    */
    email?: string;
    /**
    * Whether the user needs to set its password or not
    */
    needPassword?: boolean;
    /**
    * White label domains the user belongs to, if any
    */
    whitelabels?: string[];
    /**
    * Current or past enterprise trials.
    */
    trials?: EnterpriseTrial[];
    /**
    * Whether the user has verified its email address or not
    */
    emailVerified?: boolean;
    /**
    * List of unique identifiers for identity providers associated with the user.
    */
    idps?: string[];
};


export type GetUserProjectsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    projects: Project[];
};


export type GetUserResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    id: number;
    username: string;
    name: string;
    email: string;
    photo?: string;
    created: Date;
    lastSeen?: Date;
    staffInfo: StaffInfo;
    pending: boolean;
    jobTitle?: string;
    /**
    * List of permissions the user has
    */
    permissions?: Permission[];
    companyName?: string;
    activated: boolean;
    /**
    * Whether the user has configured multi-factor authentication
    */
    mfaConfigured: boolean;
    /**
    * Stripe customer ID, if any.
    */
    stripeCustomerId?: string;
    /**
    * Whether the user has pending payments.
    */
    hasPendingPayments?: boolean;
    tier: UserTierEnum;
    /**
    * List of identity providers (e.g. Google, GitHub) that the user has used to sign in with
    */
    idps?: string[];
    /**
    * Organizations that the user is a member of. Only filled when requesting information about yourself.
    */
    organizations: UserOrganization[];
    /**
    * List of all projects. This returns all projects for the user (regardless of whitelabel)
    */
    projects: Project[];
    /**
    * Experiments the user has access to. Enabling experiments can only be done through a JWT token.
    */
    experiments: UserExperiment[];
    /**
    * Whether this is an ephemeral evaluation account.
    */
    evaluation?: boolean;
    /**
    * Whether this user is an ambassador.
    */
    ambassador?: boolean;
    /**
    * List of white labels the user is a member of
    */
    whitelabels?: {
        id: number;
        domain: string;
        name: string;
        ownerOrganizationId: number;
        /**
        * Whether the user is an admin of the white label.
        */
        isAdmin: boolean;
    }[];
    /**
    * Whether the user is suspended.
    */
    suspended: boolean;
    /**
    * Detailed explanation of why the user account was suspended. This could include violations of terms of service,
    * suspicious activity, or administrative actions.
    */
    suspensionReason?: string;
    /**
    * List of notifications to show to the user.
    */
    notifications: string[];
    /**
    * The date at which the user has requested to cancel their subscription.
    */
    subscriptionCancellationRequestDate?: Date;
    /**
    * The date at which the user's subscription will be downgraded due to cancellation.
    */
    subscriptionDowngradeDate?: Date;
    /**
    * The date at which the user's subscription will be automatically terminated due to failed payments.
    */
    subscriptionTerminationDate?: Date;
    /**
    * The start date of the current pay-as-you-go subscription period.
    */
    payAsYouGoSubscriptionPeriodStartDate?: Date;
    /**
    * The end date of the current pay-as-you-go subscription period.
    */
    payAsYouGoSubscriptionPeriodEndDate?: Date;
    /**
    * Whether the user has configured a password
    */
    passwordConfigured: boolean;
    projectsSortOrder: UserProjectsSortOrder;
    activeEnterpriseTrial?: EnterpriseTrial;
    /**
    * Whether the current user has access to enterprise features. This is true if the user is an enterprise user, or has
    * an active enterprise trial.
    */
    hasEnterpriseFeaturesAccess: boolean;
    /**
    * Timezone for the user (or undefined if not specified).
    */
    timezone?: string;
    /**
    * Last 5 accessed projects. This _only_ returns projects for the current whitelabel ID.
    */
    lastAccessedProjects: {
        projects: {
            id: number;
            name: string;
            created: Date;
            lastAccessed?: Date;
        }[];
        hasMoreProjects: boolean;
    };
    /**
    * Number of private projects created by the current user.
    */
    privatePersonalProjectsUsed: number;
    lastAcceptedTermsOfService?: {
        version: string;
        acceptanceDate: Date;
    };
    /**
    * List of all Vendor End-User License Agreements that the user has accepted, or could accept.
    */
    eulas: UserEula[];
};


export type GetWebhookDestinationResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    webhook: WebhookDestination;
};


export type GetWhitelabelDomainResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    domain: string;
    logo?: string;
};


export type GetWhitelabelResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    whitelabel?: Whitelabel;
};


export type HasDataExplorerFeaturesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    hasFeatures: boolean;
    inputBlock?: ImpulseInputBlock;
};


/**
* Input images are resized automatically before training and testing, to match the impulse input shape. This determines
* the resize mode used when the aspect ratio of the input data is different to the aspect ratio of the impulse.
*/
export type ImageInputResizeMode = 'squash' | 'fit-short' | 'fit-long' | 'crop';
export const ImageInputResizeModeValues: string[];


/**
* Normalization that is applied to images. If this is not set then 0..1 is used. "0..1" gives you non-normalized pixels
* between 0 and 1. "-1..1" gives you non-normalized pixels between -1 and 1. "0..255" gives you non-normalized pixels
* between 0 and 255. "-128..127" gives you non-normalized pixels between -128 and 127. "torch" first scales pixels
* between 0 and 1, then applies normalization using the ImageNet dataset (same as `torchvision.transforms.Normalize()`).
* "bgr-subtract-imagenet-mean" scales to 0..255, reorders pixels to BGR, and subtracts the ImageNet mean from each
* channel.
*/
export type ImageInputScaling = '0..1' | '-1..1' | '-128..127' | '0..255' | 'torch' | 'bgr-subtract-imagenet-mean';
export const ImageInputScalingValues: string[];


export type ImportDataFromAnotherProjectJobRequest = {
    projectId: number;
};


export type Impulse = {
    /**
    * ID for this impulse.
    */
    id: number;
    /**
    * Name for this impulse.
    */
    name: string;
    /**
    * Input Blocks that are part of this impulse
    */
    inputBlocks: ImpulseInputBlock[];
    /**
    * DSP Blocks that are part of this impulse
    */
    dspBlocks: ImpulseDspBlock[];
    /**
    * Learning Blocks that are part of this impulse
    */
    learnBlocks: ImpulseLearnBlock[];
    /**
    * Post-processing blocks that are part of this impulse
    */
    postProcessingBlocks: ImpulsePostProcessingBlock[];
    type: ImpulseType;
};


export type ImpulseDspBlock = {
    /**
    * Identifier for this block. Make sure to up this number when creating a new block via `getNewBlockId`, and don't
    * re-use identifiers. If the block hasn't changed, keep the ID as-is. ID must be unique across the project and
    * greather than zero (>0).
    */
    id: number;
    /**
    * Block type
    */
    type: string;
    /**
    * Block name, will be used in menus
    */
    name: string;
    /**
    * Input axes, identified by the name in the name of the axis
    */
    axes: string[];
    /**
    * Block title, used in the impulse UI
    */
    title: string;
    /**
    * Number of features this DSP block outputs per axis. This is only set when the DSP block is configured.
    */
    valuesPerAxis?: number;
    /**
    * The ID of the Input block a DSP block is connected to
    */
    input?: number;
    /**
    * The system component that created the block version (createImpulse | clone | tuner). Cannot be set via API.
    */
    createdBy?: string;
    /**
    * The datetime that the block version was created. Cannot be set via API.
    */
    createdAt?: Date;
    /**
    * Implementation version of the block
    */
    implementationVersion: number;
    organization?: {
        id: number;
        dspId: number;
    };
    /**
    * Required for type 'custom'
    */
    customUrl?: string;
    /**
    * Named axes for the block
    */
    namedAxes?: {
        /**
        * Name of the axis
        */
        name: string;
        /**
        * Description of the axis
        */
        description?: string;
        /**
        * Whether the axis is required
        */
        required?: boolean;
        /**
        * The selected axis for the block
        */
        selectedAxis?: string;
    }[];
};


export type ImpulseInputBlock = {
    /**
    * Identifier for this block. Make sure to up this number when creating a new block via `getNewBlockId`, and don't
    * re-use identifiers. If the block hasn't changed, keep the ID as-is. ID must be unique across the project and
    * greather than zero (>0).
    */
    id: number;
    type: InputBlockType;
    /**
    * Block name, will be used in menus
    */
    name: string;
    /**
    * Block title, used in the impulse UI
    */
    title: string;
    /**
    * Input axes, identified by the name in the name of the axis. If not set, then all axes are selected.
    */
    axes?: string[];
    /**
    * Size of the sliding window in milliseconds
    */
    windowSizeMs?: number;
    /**
    * We use a sliding window to go over the raw data. How many milliseconds to increase the sliding window with for
    * each step.
    */
    windowIncreaseMs?: number;
    /**
    * (Input only) Frequency of the input data in Hz
    */
    frequencyHz?: number;
    /**
    * We use a sliding window to go over the raw data. How many milliseconds to increase the sliding window with for
    * each step in classification mode.
    */
    classificationWindowIncreaseMs?: number;
    /**
    * Whether to zero pad data when a data item is too short
    */
    padZeros?: boolean;
    /**
    * Determines how a single label is assigned to each generated window when source samples contain multiple labels.
    * Available options - end-of-window: use the label active at the end timestamp of the window. - anywhere-in-window:
    * assign one of the configured `labels` when it appears anywhere in the window. - anywhere-in-window-min-percentage:
    * assign one of the configured `labels` only when it covers at least `minPercentage` of the full window. -
    * majority-in-window: assign the label with the highest prevalence across the full window. Tie-breaking: - For
    * count-based modes (anywhere-in-window, anywhere-in-window-min-percentage, and majority-in-window), if two or more
    * candidate labels have equal prevalence, the first encountered label in the window is used.
    */
    labelingMethodMultiLabel?: {
        type: ImpulseInputBlockLabelingMethodMultiLabelTypeEnum;
        /**
        * Required when choosing "anywhere-in-window" or "anywhere-in-window-min-percentage". The list of classes that
        * should trigger detection (e.g. "interference").
        */
        labels?: string[];
        /**
        * Required when choosing "anywhere-in-window-min-percentage". A label is assigned only if it is present in at
        * least
        * this percentage of the full window.
        */
        minPercentage?: number;
    };
    /**
    * Width all images are resized to before training
    */
    imageWidth?: number;
    /**
    * Width all images are resized to before training
    */
    imageHeight?: number;
    resizeMode?: ImageInputResizeMode;
    /**
    * Resize method to use when resizing images
    */
    resizeMethod?: ImpulseInputBlockResizeMethodEnum;
    /**
    * If images are resized using a crop, choose where to anchor the crop
    */
    cropAnchor?: ImpulseInputBlockCropAnchorEnum;
    /**
    * The system component that created the block version (createImpulse | clone | tuner). Cannot be set via API.
    */
    createdBy?: string;
    /**
    * The datetime that the block version was created. Cannot be set via API.
    */
    createdAt?: Date;
    datasetSubset?: ImpulseInputBlockDatasetSubset;
};
export type ImpulseInputBlockLabelingMethodMultiLabelTypeEnum = 'end-of-window' | 'anywhere-in-window' | 'anywhere-in-window-min-percentage' | 'majority-in-window';
export const ImpulseInputBlockLabelingMethodMultiLabelTypeEnumValues: string[];
export type ImpulseInputBlockResizeMethodEnum = 'lanczos3' | 'nearest';
export const ImpulseInputBlockResizeMethodEnumValues: string[];
export type ImpulseInputBlockCropAnchorEnum = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
export const ImpulseInputBlockCropAnchorEnumValues: string[];


/**
* Only generate features for samples where (sample_id + datasetSubsetSeed) % datasetSubset) == 0
*/
export type ImpulseInputBlockDatasetSubset = {
    /**
    * Number between 0 and 100, with the % of data that should be _included_
    */
    includePercentage: number;
    /**
    * Seed number (optional). If not specified, the seed is set to 0.
    */
    seed?: number;
};


export type ImpulseLearnBlock = {
    /**
    * Identifier for this block. Make sure to up this number when creating a new block via `getNewBlockId`, and don't
    * re-use identifiers. If the block hasn't changed, keep the ID as-is. ID must be unique across the project and
    * greather than zero (>0).
    */
    id: number;
    type: LearnBlockType;
    /**
    * Block name, will be used in menus. If a block has a baseBlockId, this field is ignored and the base block's name
    * is used instead.
    */
    name: string;
    /**
    * DSP dependencies, identified by DSP block ID
    */
    dsp: number[];
    /**
    * Block title, used in the impulse UI
    */
    title: string;
    /**
    * The system component that created the block version (createImpulse | clone | tuner). Cannot be set via API.
    */
    createdBy?: string;
    /**
    * The datetime that the block version was created. Cannot be set via API.
    */
    createdAt?: Date;
    trainingProcessor?: ExperimentalImpulseSpecificGpuTrainingProcessor;
};


export type ImpulsePostProcessingBlock = {
    /**
    * Identifier for this block. Make sure to up this number when creating a new block via `getNewBlockId`, and don't
    * re-use identifiers. If the block hasn't changed, keep the ID as-is. ID must be unique across the project and
    * greather than zero (>0).
    */
    id: number;
    /**
    * Block type
    */
    type: string;
    /**
    * Block name, will be used in menus
    */
    name: string;
    /**
    * Block title, used in the impulse UI
    */
    title: string;
    /**
    * The system component that created the block version (createImpulse | clone | tuner). Cannot be set via API.
    */
    createdBy?: string;
    /**
    * The datetime that the block version was created. Cannot be set via API.
    */
    createdAt?: Date;
    /**
    * Implementation version of the block
    */
    implementationVersion: number;
};


/**
* Specifies the type of impulse. Options include: - default: Standard Edge Impulse pipeline. - BYOM: Impulse that
* includes a pretrained model. - VLM: Impulse created as part of a Vision Learning Model (VLM) workflow.
*/
export type ImpulseType = 'default' | 'BYOM' | 'VLM';
export const ImpulseTypeValues: string[];


export type InferenceHistoryAggregate = {
    deviceId: string;
    deviceName: string;
    totalInferences: number;
    totalClassifications: InferenceSummaryMetrics[];
    means: InferenceSummaryMetrics[];
    standardDeviations: InferenceSummaryMetrics[];
    metrics: InferenceSummaryMetrics[];
};


export type InferenceHistoryEntry = {
    label: string;
    value: number;
};


export type InferenceHistoryTimestamp = {
    index: number;
    timestamp: number;
};


export type InferenceSummaryMetrics = {
    key: string;
    value: number;
};


export type InputBlock = {
    type: InputBlockType;
    title: string;
    author: string;
    description: string;
    name: string;
    blockType: BlockType;
};


export type InputBlockType = 'time-series' | 'image' | 'features';
export const InputBlockTypeValues: string[];


export type IntegrationSessionStatus = {
    /**
    * Integration session status
    */
    status: IntegrationSessionStatusStatusEnum;
    /**
    * Any relevant additional information, e.g. the reason the session has stopped or any error messages.
    */
    additionalInfo?: string;
};
export type IntegrationSessionStatusStatusEnum = 'pending' | 'active' | 'error' | 'stopped';
export const IntegrationSessionStatusStatusEnumValues: string[];


export type InviteOrganizationMemberRequest = {
    /**
    * E-mail address
    */
    email: string;
    role: OrganizationMemberRole;
    /**
    * Only used for 'guest' users. Limits the datasets the user has access to.
    */
    datasets: string[];
};


export type Job = {
    /**
    * Job id, use this to refer back to the job. The web socket API also uses this ID.
    */
    id: number;
    /**
    * User-friendly category (e.g. "Training model")
    */
    category: string;
    /**
    * Machine-readable category (e.g. "learn-train-studio-wrapper")
    */
    categoryKey: string;
    /**
    * External job identifier, this can be used to categorize jobs, and recover job status. E.g. set this to 'keras-192'
    * for a Keras learning block with ID 192. When a user refreshes the page you can check whether a job is active for
    * this ID and re-attach.
    */
    key: string;
    /**
    * When the job was created.
    */
    created: Date;
    /**
    * When the job was started.
    */
    started?: Date;
    /**
    * When the job was finished.
    */
    finished?: Date;
    /**
    * Whether the job finished successfully.
    */
    finishedSuccessful?: boolean;
    /**
    * The IDs of users who should be notified when a job is finished.
    */
    jobNotificationUids: number[];
    /**
    * Additional metadata associated with this job.
    */
    additionalInfo?: string;
    /**
    * Job duration time in seconds from start to finished, measured by k8s job watcher.
    */
    computeTime?: number;
    createdByUser?: CreatedUpdatedByUser;
    /**
    * Some job categories keep a counter on the job number, e.g. in synthetic data, so we know what the 1st, 2nd etc.
    * job was in the UI.
    */
    categoryCount?: number;
    /**
    * Structured job metadata
    */
    metadata?: object;
};


export type JobDetails = {
    /**
    * Job id, use this to refer back to the job. The web socket API also uses this ID.
    */
    id: number;
    /**
    * User-friendly category (e.g. "Training model")
    */
    category: string;
    /**
    * Machine-readable category (e.g. "learn-train-studio-wrapper")
    */
    categoryKey: string;
    /**
    * External job identifier, this can be used to categorize jobs, and recover job status. E.g. set this to 'keras-192'
    * for a Keras learning block with ID 192. When a user refreshes the page you can check whether a job is active for
    * this ID and re-attach.
    */
    key: string;
    /**
    * When the job was created.
    */
    created: Date;
    /**
    * When the job was started.
    */
    started?: Date;
    /**
    * When the job was finished.
    */
    finished?: Date;
    /**
    * Whether the job finished successfully.
    */
    finishedSuccessful?: boolean;
    /**
    * The IDs of users who should be notified when a job is finished.
    */
    jobNotificationUids: number[];
    /**
    * Additional metadata associated with this job.
    */
    additionalInfo?: string;
    /**
    * Job duration time in seconds from start to finished, measured by k8s job watcher.
    */
    computeTime?: number;
    createdByUser?: CreatedUpdatedByUser;
    /**
    * Some job categories keep a counter on the job number, e.g. in synthetic data, so we know what the 1st, 2nd etc.
    * job was in the UI.
    */
    categoryCount?: number;
    /**
    * Structured job metadata
    */
    metadata?: object;
    /**
    * List of jobs children isd triggered by this job
    */
    childrenIds?: number[];
    /**
    * List of states the job went through
    */
    states: JobState[];
    /**
    * Job specification (Kubernetes specification or other underlying engine)
    */
    spec?: object;
};


export type JobDetailsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    jobs?: JobDetails[];
};


export type JobFailureDetails = {
    /**
    * short code describing the reason of the failure
    */
    reason?: string;
    /**
    * full description of the failure
    */
    message?: string;
    /**
    * exit code of the failed job process
    */
    exitCode?: number;
};


export type JobLogItem = {
    created: Date;
    data: string;
    logLevel?: JobLogItemLogLevelEnum;
};
export type JobLogItemLogLevelEnum = 'error' | 'warn' | 'info' | 'debug';
export const JobLogItemLogLevelEnumValues: string[];


export type JobLogsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    logs: JobLogItem[];
};


export type JobMetricsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    cpuUsage?: TimeSeriesDataPoint[];
    memoryUsage?: TimeSeriesDataPoint[];
};


export type JobParentTypeEnum = 'project' | 'organization' | 'standalone';
export const JobParentTypeEnumValues: string[];


export type JobState = {
    /**
    * version number (indicates the order of the state)
    */
    version: number;
    /**
    * timestamp when the job transistioned to this new step
    */
    timestamp: Date;
    executionDetails?: JobStateExecutionDetails;
    step: JobStep;
};


export type JobStateExecutionDetails = {
    /**
    * Kubernetes pod name
    */
    podName?: string;
};


export type JobStatus = 'cancelled' | 'creating' | 'failed' | 'pending' | 'running' | 'success';
export const JobStatusValues: string[];


export type JobStep = {
    /**
    * ordinal number representing the step
    */
    ordinal: number;
    /**
    * progress percentage inside the same step example for "scheduled" step, we have the following values: 0%: pod
    * scheduled to some node (but node creation may not be finished yet) 50%: image pulling started 90%: image pulled
    */
    progress?: number;
    /**
    * short name describing the step
    */
    name: string;
    /**
    * execution attempt (starts at 0)
    */
    attempt?: number;
    failureDetails?: JobFailureDetails;
};


export type JobSummaryResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    summary: {
        category: string;
        /**
        * Length per category in milliseconds
        */
        lengthMs: number;
    }[];
};


export type KeepDeviceDebugStreamAliveRequest = {
    streamId: number;
};


export type KerasConfig = {
    dependencies: DependencyData;
    /**
    * Whether the block is trained
    */
    trained: boolean;
    name: string;
    type?: LearnBlockType;
    /**
    * The Keras script. This script might be empty if the mode is visual.
    */
    script: string;
    /**
    * DEPRECATED, see "thresholds" instead. Minimum confidence rating required for the neural network. Scores below this
    * confidence are tagged as uncertain.
    */
    minimumConfidenceRating: number;
    selectedModelType: KerasModelTypeEnum;
    /**
    * The mode (visual or expert) to use for editing this network.
    */
    mode: KerasConfigModeEnum;
    /**
    * The visual layers (if in visual mode) for the neural network. This will be an empty array when in expert mode.
    */
    visualLayers: KerasVisualLayer[];
    /**
    * Number of training cycles. If in expert mode this will be 0.
    */
    trainingCycles: number;
    /**
    * Learning rate (between 0 and 1). If in expert mode this will be 0.
    */
    learningRate: number;
    /**
    * The batch size used during training.
    */
    batchSize?: number;
    /**
    * The default batch size if a value is not configured.
    */
    defaultBatchSize: number;
    /**
    * Python-formatted tuple of input axes
    */
    shape: string;
    /**
    * Train/test split (between 0 and 1)
    */
    trainTestSplit?: number;
    /**
    * Whether to automatically balance class weights, use this for skewed datasets.
    */
    autoClassWeights?: boolean;
    /**
    * Use learned optimizer and ignore learning rate.
    */
    useLearnedOptimizer?: boolean;
    augmentationPolicyImage: AugmentationPolicyImageEnum;
    augmentationPolicySpectrogram?: AugmentationPolicySpectrogram;
    transferLearningModels: TransferLearningModel[];
    /**
    * Whether to profile the i8 model (might take a very long time)
    */
    profileInt8: boolean;
    /**
    * If set, skips creating embeddings and measuring memory (used in tests)
    */
    skipEmbeddingsAndMemory: boolean;
    akidaEdgeLearningConfig?: AkidaEdgeLearningConfig;
    /**
    * This metadata key is used to prevent group data leakage between train and validation datasets.
    */
    customValidationMetadataKey?: string;
    /**
    * Whether the 'Advanced training settings' UI element should be expanded.
    */
    showAdvancedTrainingSettings: boolean;
    /**
    * Whether the 'Augmentation training settings' UI element should be expanded.
    */
    showAugmentationTrainingSettings: boolean;
    /**
    * Training parameters, this list depends on the list of parameters that the model exposes.
    */
    customParameters?: {
        [key: string]: string;
    };
    anomalyCapacity?: AnomalyCapacity;
    lastShownModelVariant?: KerasModelVariantEnum;
    blockParameters?: BlockParameters;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
};
export type KerasConfigModeEnum = 'visual' | 'expert';
export const KerasConfigModeEnumValues: string[];


export type KerasCustomMetric = {
    /**
    * The name of the metric
    */
    name: string;
    /**
    * The value of this metric for this model type
    */
    value: string;
};


export type KerasModelLayer = {
    input: {
        /**
        * Input size
        */
        shape: number;
        /**
        * TensorFlow name
        */
        name: string;
        /**
        * TensorFlow type
        */
        type: string;
    };
    output: {
        /**
        * Output size
        */
        shape: number;
        /**
        * TensorFlow name
        */
        name: string;
        /**
        * TensorFlow type
        */
        type: string;
    };
};


export type KerasModelMetadata = {
    /**
    * Date when the model was trained
    */
    created: Date;
    /**
    * Layers of the neural network
    */
    layers: KerasModelLayer[];
    /**
    * Labels for the output layer
    */
    classNames: string[];
    /**
    * Original labels in the dataset when features were generated, e.g. used to render the feature explorer.
    */
    labels: string[];
    /**
    * The types of model that are available
    */
    availableModelTypes: KerasModelTypeEnum[];
    recommendedModelType: KerasModelTypeEnum;
    /**
    * Metrics for each of the available model types
    */
    modelValidationMetrics: KerasModelMetadataMetrics[];
    hasTrainedModel: boolean;
    mode: KerasModelMode;
    objectDetectionLastLayer?: ObjectDetectionLastLayer;
    imageInputScaling: ImageInputScaling;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
    tensorboardGraphs?: KerasModelMetadataGraph[];
};


export type KerasModelMetadataGraph = {
    /**
    * Graph title
    */
    title: string;
    /**
    * X-axis title
    */
    xLabel?: string;
    /**
    * Y-axis title
    */
    yLabel?: string;
    /**
    * A description for the graph
    */
    description?: string;
    /**
    * Whether this graph should be hidden by default in the Studio UI
    */
    hideInUI?: boolean;
    data: KerasModelMetadataGraphSeries[];
};


export type KerasModelMetadataGraphSeries = {
    title: string;
    values: number[];
};


export type KerasModelMetadataMetrics = {
    type: KerasModelTypeEnum;
    /**
    * The model's loss on the validation set after training
    */
    loss: number;
    /**
    * The model's accuracy on the validation set after training
    */
    accuracy?: number;
    confusionMatrix: number[][];
    /**
    * Precision, recall, F1 and support scores
    */
    report: object;
    onDevicePerformance: {
        mcu: string;
        name: string;
        isDefault: boolean;
        latency: number;
        tflite: {
            ramRequired: number;
            romRequired: number;
            arenaSize: number;
            modelSize: number;
        };
        eon: {
            ramRequired: number;
            romRequired: number;
            arenaSize: number;
            modelSize: number;
        };
        eon_ram_optimized?: {
            ramRequired: number;
            romRequired: number;
            arenaSize: number;
            modelSize: number;
        };
        /**
        * Custom, device-specific performance metrics
        */
        customMetrics?: KerasCustomMetric[];
        /**
        * If false, then no metrics are available for this target
        */
        hasPerformance: boolean;
        /**
        * Specific error during profiling (e.g. model not supported)
        */
        profilingError?: string;
    }[];
    predictions?: ModelPrediction[];
    visualization: KerasModelMetadataMetricsVisualizationEnum;
    isSupportedOnMcu: boolean;
    mcuSupportError?: string;
    /**
    * If this is set, then we're still profiling this model. Subscribe to job updates to see when it's done (afterward
    * the metadata will be updated).
    */
    profilingJobId?: number;
    /**
    * If this is set, then the profiling job failed (get the status by getting the job logs for 'profilingJobId').
    */
    profilingJobFailed?: boolean;
    additionalMetrics: AdditionalMetric[];
};
export type KerasModelMetadataMetricsVisualizationEnum = 'featureExplorer' | 'dataExplorer' | 'none';
export const KerasModelMetadataMetricsVisualizationEnumValues: string[];


export type KerasModelMetadataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Date when the model was trained
    */
    created: Date;
    /**
    * Layers of the neural network
    */
    layers: KerasModelLayer[];
    /**
    * Labels for the output layer
    */
    classNames: string[];
    /**
    * Original labels in the dataset when features were generated, e.g. used to render the feature explorer.
    */
    labels: string[];
    /**
    * The types of model that are available
    */
    availableModelTypes: KerasModelTypeEnum[];
    recommendedModelType: KerasModelTypeEnum;
    /**
    * Metrics for each of the available model types
    */
    modelValidationMetrics: KerasModelMetadataMetrics[];
    hasTrainedModel: boolean;
    mode: KerasModelMode;
    objectDetectionLastLayer?: ObjectDetectionLastLayer;
    imageInputScaling: ImageInputScaling;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
    tensorboardGraphs?: KerasModelMetadataGraph[];
};


export type KerasModelMode = 'classification' | 'regression' | 'object-detection' | 'visual-anomaly' | 'anomaly-gmm' | 'freeform' | 'anomaly';
export const KerasModelModeValues: string[];


export type KerasModelTypeEnum = 'int8' | 'float32' | 'akida' | 'requiresRetrain';
export const KerasModelTypeEnumValues: string[];


export type KerasModelVariantEnum = 'int8' | 'float32' | 'akida';
export const KerasModelVariantEnumValues: string[];


export type KerasResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dependencies: DependencyData;
    /**
    * Whether the block is trained
    */
    trained: boolean;
    name: string;
    type?: LearnBlockType;
    /**
    * The Keras script. This script might be empty if the mode is visual.
    */
    script: string;
    /**
    * DEPRECATED, see "thresholds" instead. Minimum confidence rating required for the neural network. Scores below this
    * confidence are tagged as uncertain.
    */
    minimumConfidenceRating: number;
    selectedModelType: KerasModelTypeEnum;
    /**
    * The mode (visual or expert) to use for editing this network.
    */
    mode: KerasResponseModeEnum;
    /**
    * The visual layers (if in visual mode) for the neural network. This will be an empty array when in expert mode.
    */
    visualLayers: KerasVisualLayer[];
    /**
    * Number of training cycles. If in expert mode this will be 0.
    */
    trainingCycles: number;
    /**
    * Learning rate (between 0 and 1). If in expert mode this will be 0.
    */
    learningRate: number;
    /**
    * The batch size used during training.
    */
    batchSize?: number;
    /**
    * The default batch size if a value is not configured.
    */
    defaultBatchSize: number;
    /**
    * Python-formatted tuple of input axes
    */
    shape: string;
    /**
    * Train/test split (between 0 and 1)
    */
    trainTestSplit?: number;
    /**
    * Whether to automatically balance class weights, use this for skewed datasets.
    */
    autoClassWeights?: boolean;
    /**
    * Use learned optimizer and ignore learning rate.
    */
    useLearnedOptimizer?: boolean;
    augmentationPolicyImage: AugmentationPolicyImageEnum;
    augmentationPolicySpectrogram?: AugmentationPolicySpectrogram;
    transferLearningModels: TransferLearningModel[];
    /**
    * Whether to profile the i8 model (might take a very long time)
    */
    profileInt8: boolean;
    /**
    * If set, skips creating embeddings and measuring memory (used in tests)
    */
    skipEmbeddingsAndMemory: boolean;
    akidaEdgeLearningConfig?: AkidaEdgeLearningConfig;
    /**
    * This metadata key is used to prevent group data leakage between train and validation datasets.
    */
    customValidationMetadataKey?: string;
    /**
    * Whether the 'Advanced training settings' UI element should be expanded.
    */
    showAdvancedTrainingSettings: boolean;
    /**
    * Whether the 'Augmentation training settings' UI element should be expanded.
    */
    showAugmentationTrainingSettings: boolean;
    /**
    * Training parameters, this list depends on the list of parameters that the model exposes.
    */
    customParameters?: {
        [key: string]: string;
    };
    anomalyCapacity?: AnomalyCapacity;
    lastShownModelVariant?: KerasModelVariantEnum;
    blockParameters?: BlockParameters;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds: BlockThreshold[];
};
export type KerasResponseModeEnum = 'visual' | 'expert';
export const KerasResponseModeEnumValues: string[];


export type KerasVisualLayer = {
    type: KerasVisualLayerType;
    /**
    * Number of neurons or filters in this layer (only for dense, conv1d, conv2d) or in the final conv2d layer (only for
    * transfer layers)
    */
    neurons?: number;
    /**
    * Kernel size for the convolutional layers (only for conv1d, conv2d)
    */
    kernelSize?: number;
    /**
    * Fraction of input units to drop (only for dropout) or in the final layer dropout (only for transfer layers)
    */
    dropoutRate?: number;
    /**
    * Number of columns for the reshape operation (only for reshape)
    */
    columns?: number;
    /**
    * Number of convolutional layers before the pooling layer (only for conv1d, conv2d)
    */
    stack?: number;
    enabled?: boolean;
    /**
    * Custom transfer learning model ID (when type is set to transfer_organization)
    */
    organizationModelId?: number;
};


export type KerasVisualLayerType = 'dense' | 'conv1d' | 'conv2d' | 'reshape' | 'flatten' | 'dropout' | 'batchNormalization' | 'transfer_mobilenetv2_a35' | 'transfer_mobilenetv2_a1' | 'transfer_mobilenetv2_a05' | 'transfer_mobilenetv2_160_a1' | 'transfer_mobilenetv2_160_a75' | 'transfer_mobilenetv2_160_a5' | 'transfer_mobilenetv2_160_a35' | 'transfer_mobilenetv1_a25_d100' | 'transfer_mobilenetv1_a2_d100' | 'transfer_mobilenetv1_a1_d100' | 'transfer_kws_mobilenetv1_a1_d100' | 'transfer_kws_mobilenetv2_a35_d100' | 'transfer_kws_syntiant_ndp10x' | 'transfer_kws_conv2d_tiny' | 'object_ssd_mobilenet_v2_fpnlite_320x320' | 'fomo_mobilenet_v2_a01' | 'fomo_mobilenet_v2_a35' | 'transfer_organization' | 'transfer_akidanet_imagenet_160_a100' | 'transfer_akidanet_imagenet_160_a50' | 'transfer_akidanet_imagenet_160_a25' | 'transfer_akidanet_imagenet_224_a100' | 'transfer_akidanet_imagenet_224_a50' | 'transfer_akidanet_imagenet_224_a25' | 'fomo_akidanet_a50' | 'fomo_ad_gmm' | 'fomo_ad_patchcore';
export const KerasVisualLayerTypeValues: string[];


export type LastModificationDateResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    lastModificationDate?: Date;
    lastVersionDate?: Date;
};


/**
* The dataset restore that last updated a sample.
*/
export type LastUpdatedByDatasetVersionRestore = {
    type: LastUpdatedByDatasetVersionRestoreTypeEnum;
    /**
    * The ID of the dataset version that last updated the sample.
    */
    datasetVersionId: number;
    /**
    * A random grouping ID to keep restore snapshots isolated.
    */
    groupKey: string;
    /**
    * The actor that started the dataset restore operation.
    */
    actor?: LastUpdatedByUser | LastUpdatedByProjectApiKey | LastUpdatedByOAuthClient;
};
export type LastUpdatedByDatasetVersionRestoreTypeEnum = 'datasetVersionRestore';
export const LastUpdatedByDatasetVersionRestoreTypeEnumValues: string[];


/**
* The OAuth client that last updated a sample, and the user it is acting on behalf of.
*/
export type LastUpdatedByOAuthClient = {
    type: LastUpdatedByOAuthClientTypeEnum;
    /**
    * The ID of the OAuth client that last updated the sample.
    */
    oauthClientId: string;
    /**
    * The user ID the OAuth client is acting on behalf of.
    */
    userId?: number;
};
export type LastUpdatedByOAuthClientTypeEnum = 'oauthClient';
export const LastUpdatedByOAuthClientTypeEnumValues: string[];


/**
* The project API key that last updated a sample.
*/
export type LastUpdatedByProjectApiKey = {
    type: LastUpdatedByProjectApiKeyTypeEnum;
    /**
    * The ID of the project API key that last updated the sample.
    */
    id: number;
};
export type LastUpdatedByProjectApiKeyTypeEnum = 'projectApiKey';
export const LastUpdatedByProjectApiKeyTypeEnumValues: string[];


/**
* The user who last updated a sample.
*/
export type LastUpdatedByUser = {
    type: LastUpdatedByUserTypeEnum;
    /**
    * The ID of the user that last updated the sample.
    */
    id: number;
};
export type LastUpdatedByUserTypeEnum = 'user';
export const LastUpdatedByUserTypeEnumValues: string[];


export type LatencyDevice = {
    mcu: string;
    name: string;
    selected: boolean;
    int8Latency: number;
    int8ConvLatency: number;
    float32Latency: number;
    float32ConvLatency: number;
    helpText: string;
};


export type LearnBlock = {
    type: string;
    title: string;
    author: string;
    description: string;
    name: string;
    recommended: boolean;
    organizationModelId?: number;
    publicProjectTierAvailability?: PublicProjectTierAvailability;
    /**
    * Whether this block is publicly available to only enterprise users
    */
    isPublicEnterpriseOnly?: boolean;
    blockType: BlockType;
    displayCategory?: BlockDisplayCategory;
    /**
    * List of target devices that support this learn block. If undefined this block works on all targets.
    */
    supportedTargets?: string[];
};


/**
* The type of learning block (anomaly, keras, keras-transfer-image, keras-transfer-kws, keras-object-detection,
* keras-regression, keras-freeform). Each behaves differently.
*/
export type LearnBlockType = 'anomaly' | 'anomaly-gmm' | 'keras' | 'keras-transfer-image' | 'keras-transfer-kws' | 'keras-object-detection' | 'keras-regression' | 'keras-akida' | 'keras-akida-transfer-image' | 'keras-akida-object-detection' | 'keras-visual-anomaly' | 'keras-freeform' | 'keras-anomaly' | 'vlm';
export const LearnBlockTypeValues: string[];


export type ListAIActionsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    actions: AIAction[];
};


export type ListApiKeysResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of API keys.
    */
    apiKeys: ProjectApiKey[];
};


export type ListDatasetVersionsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    pendingWindows: DatasetVersionPendingWindow[];
    datasetVersions: DatasetVersion[];
    totalCount: number;
};


export type ListDeploymentHistoryResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    deployments: DeploymentHistory[];
    totalDeploymentCount: number;
};


export type ListDevicesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    devices: Device[];
};


export type ListEmailResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of emails
    */
    emails: {
        userId?: number;
        projectId?: number;
        from: string;
        to: string;
        created: Date;
        subject: string;
        bodyText: string;
        bodyHTML: string;
        sent: boolean;
        providerResponse: string;
    }[];
};


export type ListEnterpriseTrialsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Current or past enterprise trials.
    */
    trials: EnterpriseTrial[];
};


export type ListEventSubscriptionsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    subscriptions: EventSubscription[];
};


export type ListHmacKeysResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of HMAC keys
    */
    hmacKeys: ProjectHmacKey[];
};


export type ListJobsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Active jobs
    */
    jobs: Job[];
    totalJobCount: number;
};


export type ListModelsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * projectId
    */
    id?: number;
};


export type ListMonitoringEventsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    events: MonitoringEvent[];
};


export type ListOrganizationApiKeysResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of API keys.
    */
    apiKeys: OrganizationApiKey[];
};


export type ListOrganizationBucketsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    buckets: OrganizationBucket[];
};


export type ListOrganizationBucketsUserResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    buckets: {
        id: number;
        organizationId: number;
        organizationName: string;
        /**
        * S3 bucket
        */
        bucket: string;
        /**
        * S3 region
        */
        region: string;
        /**
        * The unique identifier of the white label this bucket belongs to, if any
        */
        whitelabelId: number;
    }[];
};


export type ListOrganizationDataResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    filterParseError?: string;
    data?: {
        id: number;
        name: string;
        bucketId: number;
        bucketName: string;
        bucketPath: string;
        fullBucketPath: string;
        dataset: string;
        totalFileCount: number;
        totalFileSize: number;
        created: Date;
        metadata: {
            [key: string]: string;
        };
        /**
        * String that's passed in to a transformation block in `--metadata` (the metadata + a `dataItemInfo` object)
        */
        metadataStringForCLI: string;
    }[];
    totalFileCount?: number;
    totalDataItemCount?: number;
};


export type ListOrganizationDeployBlocksResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    deployBlocks: OrganizationDeployBlock[];
};


export type ListOrganizationDspBlocksResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dspBlocks: OrganizationDspBlock[];
};


export type ListOrganizationFilesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    filterParseError?: string;
    totalFileSize: number;
    totalFileCount: number;
    totalDataItemCount: number;
    data: OrganizationDataItem[];
};


export type ListOrganizationPipelinesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    pipelines: OrganizationPipeline[];
};


export type ListOrganizationPortalsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    portals: {
        id: number;
        name: string;
        description?: string;
        url: string;
        bucketId: number;
        bucketName: string;
        bucketPath: string;
        bucketUrl: string;
        storageProvider?: string;
        created: Date;
    }[];
};


export type ListOrganizationSecretsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    secrets: {
        id: number;
        name: string;
        description: string;
        created: Date;
        createdByUser?: CreatedUpdatedByUser;
    }[];
};


export type ListOrganizationTransferLearningBlocksResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    transferLearningBlocks: OrganizationTransferLearningBlock[];
};


export type ListOrganizationTransformationBlocksResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    transformationBlocks: OrganizationTransformationBlock[];
};


export type ListOrganizationUsageReportsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of feature flags.
    */
    reports: Report[];
    totalCount: number;
};


export type ListOrganizationsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Array with organizations
    */
    organizations: Organization[];
};


export type ListPortalFilesInFolderRequest = {
    /**
    * S3 prefix
    */
    prefix: string;
    /**
    * Only one S3 page (1000 items typically) is returned. Pass in the continuationToken on the next request to receive
    * the next page.
    */
    continuationToken?: string;
    /**
    * If set, then no files will be returned
    */
    onlyFetchFolders?: boolean;
};


export type ListPortalFilesInFolderResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    files: PortalFile[];
    continuationToken?: string;
};


export type ListProjects = {
    /**
    * Array with projects
    */
    projects: Project[];
};


export type ListProjectsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Array with projects
    */
    projects: Project[];
};


export type ListPublicOrganizationTransformationBlocksResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    transformationBlocks: PublicOrganizationTransformationBlock[];
};


export type ListPublicProjectTypes = {
    /**
    * Array with project types
    */
    projectTypes: ListPublicProjectTypesProjectTypes[];
};


export type ListPublicProjectTypesProjectTypes = {
    value: ProjectType;
    label: string;
};


export type ListPublicProjectTypesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Array with project types
    */
    projectTypes: ListPublicProjectTypesProjectTypes[];
};


export type ListPublicProjects = {
    /**
    * Array with public projects
    */
    projects: ProjectPublicData[];
    totalProjectCount: number;
};


export type ListPublicProjectsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Array with public projects
    */
    projects: ProjectPublicData[];
    totalProjectCount: number;
};


export type ListPublicVersionsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    versions: {
        version: number;
        publicProjectId: number;
        publicProjectUrl: string;
    }[];
};


export type ListSamplesResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    samples: Sample[];
    totalCount: number;
};


export type ListTunerRunsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    runs: TunerRun[];
};


export type ListVersionsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    nextVersion: number;
    versions: {
        id: number;
        version: number;
        description: string;
        bucket: {
            id?: number;
            name?: string;
            organizationName?: string;
            path: string;
            bucket?: string;
        };
        created: Date;
        userId?: number;
        userName?: string;
        userPhoto?: string;
        publicProjectId?: number;
        publicProjectUrl?: string;
        /**
        * Accuracy calculated during training, using validation set.
        */
        trainingAccuracy?: number;
        /**
        * Accuracy on test set.
        */
        testAccuracy?: number;
        /**
        * Mean Average Precision @ IoU=50 on validation set (for object detection projects).
        */
        trainingmAP50?: number;
        /**
        * Mean Average Precision @ IoU=50 on test set (for object detection projects).
        */
        testmAP50?: number;
        /**
        * If your project had multiple impulses, this field indicates which impulse was used to calculate the accuracy
        * metrics.
        */
        accuracyBasedOnImpulse?: string;
        totalSamplesCount?: string;
        license?: PublicProjectLicense;
    }[];
    /**
    * If you have any custom learn blocks (e.g. blocks you pushed through Bring Your Own Model), then these are listed
    * here. We use these to show a warning in the UI that these blocks will also be available in a public version.
    */
    customLearnBlocks: {
        author: string;
        name: string;
    }[];
    /**
    * Whether the 'Run model testing while versioning' checkbox should be enabled.
    */
    runModelTestingWhileVersioning: boolean;
};


export type ListWebhookDestinationsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    webhooks: WebhookDestination[];
};


export type LogAnalyticsEventRequest = {
    /**
    * Optional session ID for users who have not signed in yet. Helps match anonymous activity with user activity once
    * they sign in.
    */
    sessionId?: string;
    eventName: string;
    eventProperties: object;
};


export type LogStdoutResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    stdout: JobLogItem[];
    /**
    * Total number of logs (only the last 1000 lines are returned)
    */
    totalCount: number;
};


export type LogWebsitePageviewRequest = {
    sessionId: string;
    pageUrl: string;
    pageReferrer?: string;
};


export type LoginResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * JWT token, to be used to log in in the future through JWTAuthentication
    */
    token: string;
};


/**
* Describes performance characteristics of a particular memory type
*/
export type MemorySpec = {
    fastBytes?: ResourceRange;
    slowBytes?: ResourceRange;
};


export type MetadataDistributionBucket = {
    label: string;
    count: number;
    totalLengthMs?: number;
    min?: number;
    max?: number;
};


export type MetadataDistributionLabelBreakdown = {
    label: string;
    counts: number[];
    totalLengthMs?: number[];
};


export type MetadataFilterOptions = {
    totalCount: number;
    count: number;
    /**
    * Available metadata filter options that can be supplied to the /raw-data/ endpoint to filter samples
    */
    optionsList: MetadataFilterOptionsOptionsList[];
};


export type MetadataFilterOptionsOptionsList = {
    key: string;
    options: string[];
};


export type MetricsAllVariantsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    metrics?: MetricsForModelVariant[];
};


export type MetricsForModelVariant = {
    variant: KerasModelVariantEnum;
    /**
    * The overall accuracy for the given model variant
    */
    accuracy?: number;
};


export type Migration = {
    /**
    * Unique identifier of the data migration
    */
    id: string;
    /**
    * Migration state. Can be 'paused', 'queued', 'running', 'done', 'failed'
    */
    state: MigrationStateEnum;
    /**
    * Optional. Number of items already processed
    */
    offset?: number;
    /**
    * Optional. The number of items to process in each batch during a migration
    */
    batchSize?: number;
};
export type MigrationStateEnum = 'paused' | 'queued' | 'running' | 'done' | 'failed';
export const MigrationStateEnumValues: string[];


export type ModelEngineShortEnum = 'tflite-eon' | 'tflite-eon-ram-optimized' | 'tflite';
export const ModelEngineShortEnumValues: string[];


export type ModelPrediction = {
    sampleId: number;
    startMs: number;
    endMs: number;
    label?: string;
    prediction: string;
    predictionCorrect?: boolean;
    /**
    * Only set for object detection projects
    */
    f1Score?: number;
    /**
    * Only set for visual anomaly projects. 2D array of shape (n, n) with raw anomaly scores, where n varies based on
    * the image input size and the specific visual anomaly algorithm used. The scores corresponds to each grid cell in
    * the image's spatial matrix.
    */
    anomalyScores?: number[][];
    /**
    * Only set for object detection projects. Coordinates are scaled 0..1, not absolute values.
    */
    boundingBoxes?: BoundingBoxWithScore[];
    /**
    * For samples with structured labels (in the form of a key/value label map), this object will contain per-key
    * prediction info for the sample.
    */
    labelMapPredictions?: {
        [key: string]: string;
    };
};


export type ModelResult = {
    sampleId: number;
    sample: Sample;
    classifications: ClassifySampleResponseClassification[];
};


export type ModelVariantStats = {
    modelType: KerasModelTypeEnum;
    /**
    * The learning block this model variant is from
    */
    learnBlockId: number;
    learnBlockType: LearnBlockType;
    /**
    * A map from actual labels to predicted labels, where actual labels are listed in `trainingLabels` and possible
    * predicted labels are listed in `classificationLabels`.
    */
    confusionMatrix: {
        [key: string]: {
            [key: string]: EvaluateResultValue;
        };
    };
    /**
    * The labels present in the model's training data. These are all present in the first dimension of the confusion
    * matrix.
    */
    trainingLabels: string[];
    /**
    * The possible labels resulting from classification. These may be present in the second dimension of the confusion
    * matrix.
    */
    classificationLabels: string[];
    /**
    * The total number of windows that were evaluated
    */
    totalWindowCount?: number;
    totalCorrectWindowCount?: EvaluateResultValue;
    accuracy: EvaluateResultValue;
};


export type MonitoringEvent = {
    /**
    * Numeric ID of the monitoring event row.
    */
    id: number;
    /**
    * Stable event identifier.
    */
    eventId: string;
    /**
    * Monitoring event type.
    */
    eventType: string;
    /**
    * Event payload.
    */
    payload: {
        [key: string]: object;
    };
    /**
    * Processing status for this event.
    */
    status: MonitoringEventStatusEnum;
    /**
    * Timestamp of when this event was created.
    */
    created: Date;
    /**
    * Timestamp of when this event was processed.
    */
    processedAt?: Date | null;
};
export type MonitoringEventStatusEnum = 'pending' | 'processing' | 'delivered' | 'failed';
export const MonitoringEventStatusEnumValues: string[];


export type MoveRawDataRequest = {
    newCategory: RawDataCategory;
};


/**
* Describes the results of running the nearest neighbors label noise detection method.
*/
export type NeighborsData = {
    /**
    * The label noise score and nearest neighbors for each window of data in the project that shows a potential label
    * noise issue.
    */
    scoresAndNeighbors: NeighborsScore[];
    /**
    * The number of neighbors used in the nearest neighbors algorithm.
    */
    numNeighbors: number;
};


/**
* Describes the label noise score and nearest neighbors for a single window of data in the project that shows a
* potential label noise issue.
*/
export type NeighborsScore = {
    /**
    * The ID of the sample this window belongs to
    */
    id: number;
    sample?: Sample;
    /**
    * The start time of this window in milliseconds
    */
    windowStart: number;
    /**
    * The end time of this window in milliseconds
    */
    windowEnd: number;
    /**
    * The label noise score for this window, from 0 to the total number of windows.
    */
    score: number;
    /**
    * Details of the nearest neighbors to this window
    */
    neighborWindows: {
        /**
        * The ID of the sample this window belongs to
        */
        id: number;
        sample?: Sample;
        /**
        * The start time of this window in milliseconds
        */
        windowStart: number;
        /**
        * The end time of this window in milliseconds
        */
        windowEnd: number;
    }[];
};


export type OAuthScope = 'deployments:create' | 'deployments:delete' | 'deployments:read' | 'deployments:update' | 'devices:create' | 'devices:delete' | 'devices:read' | 'devices:update' | 'jobs:read' | 'organizations:read' | 'projects:apikeys:ingestiononly:create' | 'projects:apikeys:ingestiononly:delete' | 'projects:create' | 'projects:delete' | 'projects:monitoring:write' | 'projects:monitoring:update' | 'projects:monitoring:read' | 'projects:monitoring:delete' | 'projects:read' | 'projects:update' | 'user:read' | 'user:update';
export const OAuthScopeValues: string[];


/**
* Metadata and configuration details for a registered OAuth client application.
*/
export type OauthClient = {
    /**
    * Internal database identifier for the OAuth client. This value is used only within the system and is not exposed to
    * or used by the OAuth client itself.
    */
    id: number;
    /**
    * The public, unique identifier assigned to the OAuth client. This value is shared with the client application and
    * is used to identify the client during OAuth authentication and authorization flows.
    */
    clientId: string;
    /**
    * Human-readable name of the OAuth client application.
    */
    name: string;
    /**
    * Human-readable description providing details about the OAuth client application and its purpose.
    */
    description?: string;
    /**
    * List of allowed redirect URIs for the OAuth client. After successful authorization, users are redirected to one of
    * these URIs. Only these URIs are permitted to prevent redirection attacks.
    */
    redirectUris?: string[];
    /**
    * List of OAuth 2.0 grant types that the client is permitted to use. Common values include 'authorization_code',
    * 'client_credentials', 'refresh_token', etc.
    */
    allowedGrantTypes?: OauthGrantType[];
    /**
    * List of OAuth scopes that the client is allowed to request. Scopes define the level of access the client has to
    * user resources. For example, 'projects:read', 'projects:update', etc.
    */
    scopes?: OAuthScope[];
    /**
    * Timestamp indicating when the OAuth client was registered.
    */
    createdAt: Date;
    /**
    * Unique identifier of the user who registered the OAuth client.
    */
    createdByUserId: number;
    /**
    * Name of the user who registered the OAuth client.
    */
    createdByUserName?: string;
    /**
    * Email address of the user who registered the OAuth client.
    */
    createdByUserEmail?: string;
    /**
    * Indicates whether this OAuth client requires explicit user consent. Internal clients may not require consent.
    */
    requiresConsent?: boolean;
    /**
    * Indicates whether this OAuth client is a public client (e.g. native/SPA using PKCE) and does not require a client
    * secret.
    */
    isPublic?: boolean;
    /**
    * URL of the OAuth client logo.
    */
    logoUrl?: string;
    /**
    * Name of the owner of the OAuth client.
    */
    ownerName?: string;
    /**
    * URL of the owner of the OAuth client.
    */
    ownerUrl?: string;
};


export type OauthClientProperties = {
    /**
    * Name of the OAuth client
    */
    name?: string;
    /**
    * Optional description of the OAuth client
    */
    description?: string;
    /**
    * List of allowed redirect URIs for this client
    */
    redirectUris?: string[];
    /**
    * List of allowed OAuth grant types for this client
    */
    allowedGrantTypes?: OauthGrantType[];
    /**
    * List of allowed scopes for this client
    */
    scopes?: string[];
    /**
    * Indicates whether this OAuth client requires explicit user consent. Internal clients may not require consent.
    */
    requiresConsent?: boolean;
    /**
    * Indicates whether this OAuth client is a public client (e.g. native/SPA using PKCE) and does not require a client
    * secret.
    */
    isPublic?: boolean;
    /**
    * URL of the OAuth client logo
    */
    logoUrl?: string;
    /**
    * Name of the owner of the OAuth client
    */
    ownerName?: string;
    /**
    * URL of the owner of the OAuth client
    */
    ownerUrl?: string;
};


/**
* The OAuth 2.0 grant type as defined in RFC 6749. Determines how the client obtains access tokens from the
* authorization server.
*/
export type OauthGrantType = 'authorization_code' | 'implicit' | 'password' | 'client_credentials' | 'refresh_token';
export const OauthGrantTypeValues: string[];


export type ObjectDetectionAutoLabelRequest = {
    neuralNetwork: ObjectDetectionAutoLabelRequestNeuralNetworkEnum;
};
export type ObjectDetectionAutoLabelRequestNeuralNetworkEnum = 'yolov5' | 'yolo-pro' | 'currentProject';
export const ObjectDetectionAutoLabelRequestNeuralNetworkEnumValues: string[];


export type ObjectDetectionAutoLabelResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    results: {
        label: string;
        x: number;
        y: number;
        width: number;
        height: number;
    }[];
    allLabels: string[];
};


export type ObjectDetectionLabelQueueCountResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    samplesCount: number;
};


export type ObjectDetectionLabelQueueResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    samples: {
        id: number;
    }[];
};


export type ObjectDetectionLastLayer = 'mobilenet-ssd' | 'fomo' | 'yolov2-akida' | 'yolov5' | 'yolov5v5-drpai' | 'yolox' | 'yolov7' | 'yolo-pro' | 'tao-retinanet' | 'tao-ssd' | 'tao-yolov3' | 'tao-yolov4' | 'yolov11' | 'yolov11-abs' | 'paddleocr-detector' | 'qc-face-det-lite' | 'qc-yolox';
export const ObjectDetectionLastLayerValues: string[];


export type ObjectDetectionPostProcessingObject = {
    label: string;
    x: number;
    y: number;
    width: number;
    height: number;
    score: number;
};


export type ObjectDetectionPostProcessingResult = {
    frames: {
        frameIndex: number;
        objects: ObjectDetectionPostProcessingObject[];
    }[];
};


export type ObjectTrackingPostProcessingObject = {
    label: string;
    id: number;
    x: number;
    y: number;
    width: number;
    height: number;
};


export type ObjectTrackingPostProcessingResult = {
    frames: {
        frameIndex: number;
        objects: ObjectTrackingPostProcessingObject[];
    }[];
    parameters: {
        [key: string]: string;
    };
};


export type OptimizeConfig = {
    name?: string;
    /**
    * Target latency in MS
    */
    targetLatency: number;
    /**
    * Target device
    */
    targetDevice: OptimizeConfigTargetDevice;
    compiler?: string[];
    precision?: string[];
    /**
    * Maximum number of training cycles
    */
    trainingCycles?: number;
    /**
    * Maximum number of trials
    */
    tuningMaxTrials?: number;
    /**
    * Maximum number of parallel workers/jobs
    */
    tuningWorkers?: number;
    /**
    * Number of initial trials
    */
    initialTrials?: number;
    /**
    * Number of optimization rounds
    */
    optimizationRounds?: number;
    /**
    * Number of trials per optimization round
    */
    trialsPerOptimizationRound?: number;
    minMACCS?: number;
    maxMACCS?: number;
    /**
    * Tuning algorithm to use to search hyperparameter space
    */
    tuningAlgorithm?: OptimizeConfigTuningAlgorithmEnum;
    notificationOnCompletion?: boolean;
    /**
    * Whether to import metrics for previous EON tuner runs in the same project to accelerate the hyperparameter search
    * process
    */
    importProjectMetrics?: boolean;
    /**
    * Whether to import resource usage (RAM/ROM/latency) metrics to accelerate the hyperparameter search process
    */
    importResourceMetrics?: boolean;
    /**
    * Number of project trials to import
    */
    numImportProjectMetrics?: number;
    /**
    * Number of resource usage trials to import
    */
    numImportResourceMetrics?: number;
    /**
    * Enable standard error of the mean (SEM)
    */
    enableSEM?: boolean;
    /**
    * Standard error of the trial accuracy mean
    */
    accuracySEM?: number;
    /**
    * Standard error of the trial latency mean
    */
    latencySEM?: number;
    /**
    * Hyperparameter optimization objectives and corresponding weights
    */
    optimizationObjectives?: OptimizeConfigOptimizationObjectives[];
    /**
    * Hyperparameter optimization objectives + weights in string format
    */
    rawObjectives?: string;
    /**
    * Model variant to optimize for
    */
    optimizationPrecision?: OptimizeConfigOptimizationPrecisionEnum;
    /**
    * Enable trial level early stopping based on loss metrics during training
    */
    earlyStopping?: boolean;
    /**
    * Stops the EON tuner if the feasible (mean) objective has not improved over the past “window_size” iterations
    */
    earlyStoppingWindowSize?: number;
    /**
    * Threshold (in [0,1]) for considering relative improvement over the best point.
    */
    earlyStoppingImprovementBar?: number;
    /**
    * Enable Multi-fidelity Multi-Objective optimization
    */
    MOMF?: boolean;
    /**
    * Enable verbose logging
    */
    verboseLogging?: boolean;
    /**
    * Disable search constraints
    */
    disableConstraints?: boolean;
    /**
    * Disable trial deduplication
    */
    disableDeduplicate?: boolean;
    /**
    * Maximum total training time in seconds
    */
    maxTotalTrainingTime?: number;
    /**
    * Optional memory override for tuner child jobs (MiB), capped at 65536 MiB.
    */
    tunerChildJobMemoryMiB?: number;
    tunerSpaceOptions?: {
        [key: string]: string[];
    };
    /**
    * List of impulses specifying the EON Tuner search space
    */
    space?: TunerSpaceImpulse[];
    /**
    * Search space template
    */
    searchSpaceTemplate?: OptimizeConfigSearchSpaceTemplate;
    /**
    * Search space source
    */
    searchSpaceSource?: OptimizeConfigSearchSpaceSource;
};
export type OptimizeConfigTuningAlgorithmEnum = 'random' | 'hyperband' | 'bayesian' | 'custom';
export const OptimizeConfigTuningAlgorithmEnumValues: string[];
export type OptimizeConfigOptimizationPrecisionEnum = 'float32' | 'int8';
export const OptimizeConfigOptimizationPrecisionEnumValues: string[];


export type OptimizeConfigOptimizationObjectives = {
    /**
    * Objective to optimize
    */
    objective: string;
    /**
    * Label of the objective
    */
    label: string;
    /**
    * Weight of the objective
    */
    weight: number;
};


export type OptimizeConfigResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    name?: string;
    /**
    * Target latency in MS
    */
    targetLatency: number;
    /**
    * Target device
    */
    targetDevice: OptimizeConfigTargetDevice;
    compiler?: string[];
    precision?: string[];
    /**
    * Maximum number of training cycles
    */
    trainingCycles?: number;
    /**
    * Maximum number of trials
    */
    tuningMaxTrials?: number;
    /**
    * Maximum number of parallel workers/jobs
    */
    tuningWorkers?: number;
    /**
    * Number of initial trials
    */
    initialTrials?: number;
    /**
    * Number of optimization rounds
    */
    optimizationRounds?: number;
    /**
    * Number of trials per optimization round
    */
    trialsPerOptimizationRound?: number;
    minMACCS?: number;
    maxMACCS?: number;
    /**
    * Tuning algorithm to use to search hyperparameter space
    */
    tuningAlgorithm?: OptimizeConfigResponseTuningAlgorithmEnum;
    notificationOnCompletion?: boolean;
    /**
    * Whether to import metrics for previous EON tuner runs in the same project to accelerate the hyperparameter search
    * process
    */
    importProjectMetrics?: boolean;
    /**
    * Whether to import resource usage (RAM/ROM/latency) metrics to accelerate the hyperparameter search process
    */
    importResourceMetrics?: boolean;
    /**
    * Number of project trials to import
    */
    numImportProjectMetrics?: number;
    /**
    * Number of resource usage trials to import
    */
    numImportResourceMetrics?: number;
    /**
    * Enable standard error of the mean (SEM)
    */
    enableSEM?: boolean;
    /**
    * Standard error of the trial accuracy mean
    */
    accuracySEM?: number;
    /**
    * Standard error of the trial latency mean
    */
    latencySEM?: number;
    /**
    * Hyperparameter optimization objectives and corresponding weights
    */
    optimizationObjectives?: OptimizeConfigOptimizationObjectives[];
    /**
    * Hyperparameter optimization objectives + weights in string format
    */
    rawObjectives?: string;
    /**
    * Model variant to optimize for
    */
    optimizationPrecision?: OptimizeConfigResponseOptimizationPrecisionEnum;
    /**
    * Enable trial level early stopping based on loss metrics during training
    */
    earlyStopping?: boolean;
    /**
    * Stops the EON tuner if the feasible (mean) objective has not improved over the past “window_size” iterations
    */
    earlyStoppingWindowSize?: number;
    /**
    * Threshold (in [0,1]) for considering relative improvement over the best point.
    */
    earlyStoppingImprovementBar?: number;
    /**
    * Enable Multi-fidelity Multi-Objective optimization
    */
    MOMF?: boolean;
    /**
    * Enable verbose logging
    */
    verboseLogging?: boolean;
    /**
    * Disable search constraints
    */
    disableConstraints?: boolean;
    /**
    * Disable trial deduplication
    */
    disableDeduplicate?: boolean;
    /**
    * Maximum total training time in seconds
    */
    maxTotalTrainingTime?: number;
    /**
    * Optional memory override for tuner child jobs (MiB), capped at 65536 MiB.
    */
    tunerChildJobMemoryMiB?: number;
    tunerSpaceOptions?: {
        [key: string]: string[];
    };
    /**
    * List of impulses specifying the EON Tuner search space
    */
    space?: TunerSpaceImpulse[];
    /**
    * Search space template
    */
    searchSpaceTemplate?: OptimizeConfigSearchSpaceTemplate;
    /**
    * Search space source
    */
    searchSpaceSource?: OptimizeConfigSearchSpaceSource;
    device?: object;
};
export type OptimizeConfigResponseTuningAlgorithmEnum = 'random' | 'hyperband' | 'bayesian' | 'custom';
export const OptimizeConfigResponseTuningAlgorithmEnumValues: string[];
export type OptimizeConfigResponseOptimizationPrecisionEnum = 'float32' | 'int8';
export const OptimizeConfigResponseOptimizationPrecisionEnumValues: string[];


/**
* Search space source
*/
export type OptimizeConfigSearchSpaceSource = {
    /**
    * Search space source type
    */
    type: OptimizeConfigSearchSpaceSourceTypeEnum;
    /**
    * Search space source template title
    */
    templateTitle?: string;
    /**
    * Search space source run title
    */
    runTitle?: string;
    /**
    * Search space source impulse title
    */
    impulseTitle?: string;
};
export type OptimizeConfigSearchSpaceSourceTypeEnum = 'template' | 'run' | 'impulse' | 'custom';
export const OptimizeConfigSearchSpaceSourceTypeEnumValues: string[];


/**
* Search space template
*/
export type OptimizeConfigSearchSpaceTemplate = {
    /**
    * Search space template identifier
    */
    identifier: OptimizeConfigSearchSpaceTemplateIdentifierEnum;
    /**
    * Whether a classification block should be added to the search space
    */
    classification?: boolean;
    /**
    * Whether an anomaly block should be added to the search space
    */
    anomaly?: boolean;
    /**
    * Whether a regression block should be added to the search space
    */
    regression?: boolean;
};
export type OptimizeConfigSearchSpaceTemplateIdentifierEnum = 'speech_keyword' | 'speech_continuous' | 'audio_event' | 'audio_continuous' | 'visual' | 'motion_event' | 'motion_continuous' | 'audio_syntiant' | 'object_detection_bounding_boxes' | 'object_detection_centroids' | 'visual_ad' | 'object_detection_yolo_pro';
export const OptimizeConfigSearchSpaceTemplateIdentifierEnumValues: string[];


/**
* Target device
*/
export type OptimizeConfigTargetDevice = {
    name: string;
    ram?: number;
    rom?: number;
};


export type OptimizeDSPParametersResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    parameters: object;
};


export type OptimizeSpaceResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * List of impulses specifying the EON Tuner search space
    */
    impulse: TunerSpaceImpulse[];
};


export type OptimizeStateResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    config: OptimizeConfig;
    status: {
        numPendingTrials: number;
        numRunningTrials: number;
        numCompletedTrials: number;
        numFailedTrials: number;
        numReadyWorkers: number;
        numBusyWorkers: number;
        numPendingWorkers: number;
        status: OptimizeStateResponseAllOfStatusStatusEnum;
    };
    /**
    * Actual tuner process, job message events will be tagged with this ID
    */
    tunerJobId?: number;
    /**
    * The coordinator pod, attach the job runner to this process for finished events
    */
    tunerCoordinatorJobId?: number;
    /**
    * Job ID for the initial job this job continuous the hyperparameter search process for.
    */
    continuationJobId?: number;
    /**
    * Tuning algorithm to use to search hyperparameter space
    */
    tuningAlgorithm?: OptimizeStateResponseTuningAlgorithmEnum;
    /**
    * Whether the job is active (if false => finished)
    */
    tunerJobIsRunning: boolean;
    trials: TunerTrial[];
    projectDataType: OptimizeStateResponseProjectDataTypeEnum;
    jobError?: string;
    workers: {
        workerId: string;
        status: OptimizeStateResponseAllOfWorkersStatusEnum;
    }[];
    /**
    * Index of the next run to be created. Used to pre-populate the name of the next run.
    */
    nextRunIndex: number;
    /**
    * Whether the search can be extended to evaluate more candidate models. Extending is possible if the search space
    * contains candidate models that are expected to perform better than the current best candidate. And extending is
    * also possible if the previous run was paused due to the total runtime limit being exceeded.
    */
    canExtendSearch: boolean;
    isWhitelabel: boolean;
    /**
    * Whether the total training time has exceeded the defined limit for the current run.
    */
    totalTrainingTimeExceeded: boolean;
};
export type OptimizeStateResponseAllOfStatusStatusEnum = 'creating' | 'ready' | 'running' | 'completed';
export const OptimizeStateResponseAllOfStatusStatusEnumValues: string[];
export type OptimizeStateResponseTuningAlgorithmEnum = 'random' | 'hyperband' | 'bayesian' | 'custom';
export const OptimizeStateResponseTuningAlgorithmEnumValues: string[];
export type OptimizeStateResponseProjectDataTypeEnum = 'audio' | 'image' | 'motion' | 'other';
export const OptimizeStateResponseProjectDataTypeEnumValues: string[];
export type OptimizeStateResponseAllOfWorkersStatusEnum = 'pending' | 'ready' | 'busy';
export const OptimizeStateResponseAllOfWorkersStatusEnumValues: string[];


export type OptimizeTransferLearningModelsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    models: {
        image: TransferLearningModel[];
        objectDetection: TransferLearningModel[];
        kws: TransferLearningModel[];
        regression: TransferLearningModel[];
        classification: TransferLearningModel[];
        anomaly?: TransferLearningModel[];
        visualAnomaly?: TransferLearningModel[];
    };
};


export type Organization = {
    id: number;
    /**
    * EdgeImpulse Inc.
    */
    name: string;
    logo?: string;
    headerImg?: string;
    showHeaderImgMask: boolean;
    users: OrganizationUser[];
    isDeveloperProfile: boolean;
    /**
    * Unique identifier of the white label this organization belongs to, if any.
    */
    whitelabelId: number | null;
    /**
    * Name of the white label this organization belongs to, if any.
    */
    whitelabelName?: string;
    projects?: Project[];
    /**
    * Unique identifier of the trial this organization belongs to, if any.
    */
    trialId: number | null;
    /**
    * Date when the trial expired, if any. A expired trial has a grace period of 30 days before it's associated
    * organization is deleted.
    */
    trialExpiredDate: Date | null;
    /**
    * Date when the trial was upgraded to a full enterprise account, if any.
    */
    trialUpgradedDate: Date | null;
    /**
    * Date when the organization was created.
    */
    created: Date;
    /**
    * Date when the current contract started, if any.
    */
    contractStartDate?: Date | null;
    /**
    * The date in which the organization was deleted. If the organization is not deleted, this field is not set.
    */
    deletedDate?: Date;
};


export type OrganizationAddDataFileRequest = {
    files: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type OrganizationAddDataFolderRequest = {
    dataset: string;
    bucketId: number;
    bucketPath: string;
    metadataDataset?: string;
    type?: OrganizationDatasetTypeEnum;
};


export type OrganizationAddDataFolderResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dataItemCount: number;
    dataFirstItems: string[];
};


export type OrganizationAddDataItemRequest = {
    name: string;
    bucketId?: number;
    /**
    * Name of the bucket name (as an Edge Impulse name)
    */
    bucketName?: string;
    dataset: string;
    /**
    * Optional path in the bucket to create this data item (files are created under this path).
    */
    bucketPath?: string;
    /**
    * Key-value pair of metadata (in JSON format)
    */
    metadata: string;
    files: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type OrganizationAddDatasetRequest = {
    dataset: string;
    tags: string[];
    category: string;
    type: OrganizationDatasetTypeEnum;
    bucket: {
        /**
        * Bucket ID
        */
        id: number;
        /**
        * Path in the bucket
        */
        path: string;
        /**
        * Number of levels deep for data items, e.g. if you have folder "test/abc", with value 1 "test" will be a data
        * item,
        * with value 2 "test/abc" will be a data item. Only used for "clinical" type.
        */
        dataItemNamingLevelsDeep: number;
    };
};


export type OrganizationApiKey = {
    id: number;
    apiKey: string;
    name: string;
    created: Date;
    role: OrganizationApiKeyRoleEnum;
    isTransformationJobKey: boolean;
    createdByUser?: CreatedUpdatedByUser;
    /**
    * When this API key was last used.
    */
    lastUsed?: ProjectApiKeyLastUsed;
    /**
    * If the key has a ttl set, when the key will expire
    */
    expires?: Date;
};
export type OrganizationApiKeyRoleEnum = 'admin' | 'member';
export const OrganizationApiKeyRoleEnumValues: string[];


export type OrganizationBucket = {
    id: number;
    /**
    * Access key for the storage service
    */
    accessKey: string;
    /**
    * Endpoint URL for the storage service
    */
    endpoint: string;
    /**
    * Name of the storage bucket
    */
    bucket: string;
    /**
    * Region of the storage service (if applicable)
    */
    region: string;
    /**
    * Whether we can reach the bucket
    */
    connected: boolean;
    /**
    * Optional prefix used for connectivity verification when root bucket access is restricted.
    */
    checkConnectivityPrefix?: string;
    storageProvider: StorageProvider;
    /**
    * The name of the storage account for Azure Blob Storage
    */
    storageAccountName?: string;
};


export type OrganizationBulkMetadataRequest = {
    dataset: string;
    csvFile: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type OrganizationComputeTimeUsage = {
    /**
    * CPU compute time in seconds of all jobs in the organization (including organizational project jobs).
    */
    cpuComputeTime?: number;
    /**
    * GPU compute time in seconds of all jobs in the organization (including organizational project jobs).
    */
    gpuComputeTime?: number;
    /**
    * Total compute time is the amount of computation time spent in jobs, in minutes used by an organization over the
    * given period, calculated as CPU + GPU minutes.
    */
    totalComputeTime?: number;
};


export type OrganizationCreateProject = {
    id: number;
    organizationId: number;
    name: string;
    uploadType: OrganizationCreateProjectUploadTypeEnum;
    status: TransformationJobStatusEnum;
    transformJobStatus: TransformationJobStatusEnum;
    uploadJobId?: number;
    uploadJobStatus: TransformationJobStatusEnum;
    uploadJobFilesUploaded?: number;
    projectOwner?: string;
    projectId?: number;
    projectName?: string;
    transformationBlockId?: number;
    builtinTransformationBlock?: object;
    transformationBlockName?: string;
    category: OrganizationCreateProjectCategoryEnum;
    created: Date;
    outputDatasetName?: string;
    outputDatasetBucketId?: number;
    outputDatasetBucketPath?: string;
    totalDownloadFileCount: number;
    totalDownloadFileSize: number;
    totalDownloadFileSizeString: string;
    totalUploadFileCount: number;
    /**
    * Number of transformation jobs that can be ran in parallel
    */
    transformationParallel: number;
    transformationSummary: OrganizationCreateProjectTransformationSummary;
    inProgress: boolean;
    label?: string;
    filterQuery?: string;
    emailRecipientUids?: number[];
    pipelineId?: number;
    pipelineName?: string;
    pipelineRunId?: number;
    pipelineStep?: number;
    operatesOn: TransformationJobOperatesOnEnum;
    /**
    * Total amount of compute used for this job (in seconds)
    */
    totalTimeSpentSeconds: number;
    /**
    * Total amount of compute used (friendly string)
    */
    totalTimeSpentString: string;
    createdByUser?: CreatedUpdatedByUser;
};
export type OrganizationCreateProjectUploadTypeEnum = 'dataset' | 'project';
export const OrganizationCreateProjectUploadTypeEnumValues: string[];
export type OrganizationCreateProjectCategoryEnum = 'training' | 'validation' | 'testing' | 'split';
export const OrganizationCreateProjectCategoryEnumValues: string[];


/**
* Defines the folder structure for writing to the output dataset. Used only when uploading into a default (non-clinical)
* dataset.
*/
export type OrganizationCreateProjectOutputDatasetPathRule = 'no-subfolders' | 'subfolder-per-item' | 'use-full-path';
export const OrganizationCreateProjectOutputDatasetPathRuleValues: string[];


/**
* Filter, given as a dataset and path containing wildcards, used for creating transformation jobs
*/
export type OrganizationCreateProjectPathFilter = {
    /**
    * Dataset name of files to transform
    */
    dataset: string;
    /**
    * Path filter with wildcards, relative to the root of the dataset. For example, /folder/*.json will transform all
    * JSON files in /folder (when operating on files)
    */
    filter: string;
};


/**
* If uploadType is set to 'project', either projectId, newProjectName or projectApiKey is required. projectId and
* newProjectName are only available through JWT tokens. If uploadType is set to 'dataset' then outputDatasetName can be
* set to '' to output in the same dataset, or set to a string to create (or append to) a new dataset.
*/
export type OrganizationCreateProjectRequest = {
    name: string;
    /**
    * Filter in SQL format, used for creating transformation jobs on clinical datasets
    */
    filter?: string;
    /**
    * Set of paths to apply the transformation to, used for creating transformation jobs on default datasets. This
    * option is experimental and may change in the future.
    */
    pathFilters?: OrganizationCreateProjectPathFilter[];
    uploadType?: OrganizationCreateProjectRequestUploadTypeEnum;
    projectId?: number;
    projectVisibility?: ProjectVisibility;
    newProjectName?: string;
    projectApiKey?: string;
    projectHmacKey?: string;
    transformationBlockId?: number;
    builtinTransformationBlock?: object;
    category?: OrganizationCreateProjectRequestCategoryEnum;
    outputDatasetName?: string;
    outputDatasetBucketId?: number;
    /**
    * Path of new dataset within the bucket; used only when creating a new dataset.
    */
    outputDatasetBucketPath?: string;
    /**
    * Path within the selected dataset to upload transformed files into. Used only when uploading into a default
    * (non-clinical) dataset.
    */
    outputPathInDataset?: string;
    outputDatasetPathRule?: OrganizationCreateProjectOutputDatasetPathRule;
    label?: string;
    emailRecipientUids?: number[];
    /**
    * Number of parallel jobs to start
    */
    transformationParallel?: number;
    /**
    * Optional extra arguments for this transformation block
    */
    extraCliArguments?: string;
    /**
    * List of custom parameters for this transformation job (see the list of parameters that the block exposes).
    */
    parameters?: {
        [key: string]: string;
    };
};
export type OrganizationCreateProjectRequestUploadTypeEnum = 'project' | 'dataset';
export const OrganizationCreateProjectRequestUploadTypeEnumValues: string[];
export type OrganizationCreateProjectRequestCategoryEnum = 'training' | 'validation' | 'testing' | 'split';
export const OrganizationCreateProjectRequestCategoryEnumValues: string[];


export type OrganizationCreateProjectResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Project ID for the new project
    */
    createProjectId: number;
    /**
    * DEPRECATED. API key for the new project. This field will always be empty.
    */
    apiKey: string;
};


export type OrganizationCreateProjectStatusResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    status?: OrganizationCreateProjectWithFiles;
};


export type OrganizationCreateProjectTransformationSummary = {
    startedCount: number;
    succeededCount: number;
    finishedCount: number;
    totalFileCount: number;
    /**
    * Total amount of compute used for this job (in seconds)
    */
    totalTimeSpentSeconds: number;
};


export type OrganizationCreateProjectWithFiles = {
    id: number;
    organizationId: number;
    name: string;
    uploadType: OrganizationCreateProjectWithFilesUploadTypeEnum;
    status: TransformationJobStatusEnum;
    transformJobStatus: TransformationJobStatusEnum;
    uploadJobId?: number;
    uploadJobStatus: TransformationJobStatusEnum;
    uploadJobFilesUploaded?: number;
    projectOwner?: string;
    projectId?: number;
    projectName?: string;
    transformationBlockId?: number;
    builtinTransformationBlock?: object;
    transformationBlockName?: string;
    category: OrganizationCreateProjectWithFilesCategoryEnum;
    created: Date;
    outputDatasetName?: string;
    outputDatasetBucketId?: number;
    outputDatasetBucketPath?: string;
    totalDownloadFileCount: number;
    totalDownloadFileSize: number;
    totalDownloadFileSizeString: string;
    totalUploadFileCount: number;
    /**
    * Number of transformation jobs that can be ran in parallel
    */
    transformationParallel: number;
    transformationSummary: OrganizationCreateProjectTransformationSummary;
    inProgress: boolean;
    label?: string;
    filterQuery?: string;
    emailRecipientUids?: number[];
    pipelineId?: number;
    pipelineName?: string;
    pipelineRunId?: number;
    pipelineStep?: number;
    operatesOn: TransformationJobOperatesOnEnum;
    /**
    * Total amount of compute used for this job (in seconds)
    */
    totalTimeSpentSeconds: number;
    /**
    * Total amount of compute used (friendly string)
    */
    totalTimeSpentString: string;
    createdByUser?: CreatedUpdatedByUser;
    files: {
        id: number;
        fileName: string;
        bucketPath: string;
        transformationJobId?: number;
        transformationJobStatus: TransformationJobStatusEnum;
        linkToDataItem: string;
        /**
        * Only set after job was finished
        */
        lengthString: string;
        sourceDatasetType: OrganizationDatasetTypeEnum;
    }[];
    fileCountForFilter: number;
};
export type OrganizationCreateProjectWithFilesUploadTypeEnum = 'dataset' | 'project';
export const OrganizationCreateProjectWithFilesUploadTypeEnumValues: string[];
export type OrganizationCreateProjectWithFilesCategoryEnum = 'training' | 'validation' | 'testing' | 'split';
export const OrganizationCreateProjectWithFilesCategoryEnumValues: string[];


export type OrganizationDataCampaignDiffRequest = {
    queries: {
        dataset: string;
        query: string;
        /**
        * Which point in the graph was clicked (from "graphs.values")
        */
        graphValueId: number;
    }[];
};


export type OrganizationDataCampaignDiffResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    date: Date;
    queries: {
        title: string;
        dataset: string;
        query: string;
        newItems: string[];
        deletedItems: string[];
    }[];
};


export type OrganizationDataExport = {
    id: number;
    created: Date;
    createdByUser?: CreatedUpdatedByUser;
    jobId: number;
    jobFinished: boolean;
    jobFinishedSuccessful: boolean;
    /**
    * Description of the data export
    */
    description?: string;
    /**
    * Date when the export will expire. Default is 30 days. Maximum expiration date is 60 days from the creation date.
    */
    expirationDate: Date;
    downloadUrl?: string;
};


export type OrganizationDataItem = {
    id: number;
    name: string;
    bucketId: number;
    bucketName: string;
    bucketPath: string;
    dataset: string;
    totalFileCount: number;
    totalFileSize: number;
    created: Date;
    metadata: {
        [key: string]: string;
    };
    files: {
        name: string;
        bucketPath: string;
        size: number;
        lastModified?: Date;
    }[];
};


export type OrganizationDataset = {
    dataset: string;
    lastFileCreated: Date;
    totalFileSize: number;
    totalFileCount: number;
    totalItemCount: number;
    totalItemCountChecklistOK: number;
    totalItemCountChecklistFailed: number;
    tags: string[];
    category?: string;
    bucket?: OrganizationDatasetBucket;
    type: OrganizationDatasetTypeEnum;
    /**
    * Location of the dataset within the bucket
    */
    bucketPath?: string;
};


export type OrganizationDatasetBucket = {
    /**
    * Bucket ID
    */
    id: number;
    bucket: string;
    /**
    * Path in the bucket
    */
    path: string;
    /**
    * Full bucket path, incl. protocol (e.g. s3://bucket/path) - to be used in the UI
    */
    fullBucketPathDescription: string;
    /**
    * Number of levels deep for data items, e.g. if you have folder "test/abc", with value 1 "test" will be a data item,
    * with value 2 "test/abc" will be a data item. Only used for "clinical" type.
    */
    dataItemNamingLevelsDeep: number;
};


export type OrganizationDatasetTypeEnum = 'clinical' | 'files';
export const OrganizationDatasetTypeEnumValues: string[];


export type OrganizationDeployBlock = {
    id: number;
    name: string;
    dockerContainer: string;
    dockerContainerManagedByEdgeImpulse: boolean;
    created: Date;
    createdByUser?: CreatedUpdatedByUser;
    lastUpdated?: Date;
    lastUpdatedByUser?: CreatedUpdatedByUser;
    userId?: number;
    userName?: string;
    description: string;
    /**
    * These arguments are passed into the container
    */
    cliArguments: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    photo: string;
    integrateUrl?: string;
    privileged: boolean;
    mountLearnBlock: boolean;
    supportsEonCompiler: boolean;
    showOptimizations: boolean;
    category: OrganizationDeployBlockCategoryEnum;
    sourceCodeAvailable: boolean;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly: boolean;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
    /**
    * List of parameters to be rendered in the UI
    */
    parametersUI?: DSPGroupItem[];
};
export type OrganizationDeployBlockCategoryEnum = 'library' | 'firmware';
export const OrganizationDeployBlockCategoryEnumValues: string[];


export type OrganizationDspBlock = {
    id: number;
    name: string;
    dockerContainer: string;
    dockerContainerManagedByEdgeImpulse: boolean;
    created: Date;
    createdByUser?: CreatedUpdatedByUser;
    lastUpdated?: Date;
    lastUpdatedByUser?: CreatedUpdatedByUser;
    userId?: number;
    userName?: string;
    description: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    port: number;
    isConnected: boolean;
    error?: string;
    sourceCodeAvailable: boolean;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly: boolean;
};


export type OrganizationGetCreateProjectsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    totalJobCount: number;
    jobs: {
        id: number;
        organizationId?: number;
        name: string;
        uploadType: OrganizationGetCreateProjectsResponseAllOfJobsUploadTypeEnum;
        transformJobStatus: TransformationJobStatusEnum;
        uploadJobId?: number;
        uploadJobStatus: TransformationJobStatusEnum;
        projectOwner?: string;
        projectId?: number;
        projectName?: string;
        transformationBlockId?: number;
        builtinTransformationBlock?: object;
        transformationBlockName?: string;
        transformationOperatesOn?: TransformationJobOperatesOnEnum;
        created: Date;
        outputDatasetName?: string;
        outputDatasetBucketId?: number;
        outputDatasetBucketPath?: string;
        totalDownloadFileCount: number;
        totalDownloadFileSize: number;
        totalDownloadFileSizeString: string;
        totalUploadFileCount?: number;
        /**
        * Total amount of compute used for this job (in seconds)
        */
        totalTimeSpentSeconds?: number;
        /**
        * Total amount of compute used (friendly string)
        */
        totalTimeSpentString: string;
        createdByUser?: CreatedUpdatedByUser;
    }[];
};
export type OrganizationGetCreateProjectsResponseAllOfJobsUploadTypeEnum = 'dataset' | 'project';
export const OrganizationGetCreateProjectsResponseAllOfJobsUploadTypeEnumValues: string[];


export type OrganizationInfoResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    organization: Organization;
    datasets: OrganizationDataset[];
    defaultComputeLimits: {
        requestsCpu: number;
        requestsMemory: number;
        limitsCpu: number;
        limitsMemory: number;
    };
    entitlementLimits?: EntitlementLimits;
    /**
    * Experiments that the organization has access to. Enabling experiments can only be done through a JWT token.
    */
    experiments: ProjectInfoResponseAllOfExperiments[];
    /**
    * Present if a readme is set for this project
    */
    readme?: ProjectPublicDataReadme;
    whitelabelId?: number;
    cliLists: {
        objectDetectionLastLayerOptions: {
            label: string;
            value: ObjectDetectionLastLayer;
        }[];
        imageInputScalingOptions: {
            label: string;
            value: ImageInputScaling;
        }[];
    };
    performance: {
        /**
        * Compute time limit per job in minutes (for non-transformation jobs).
        */
        jobLimitM: number;
    };
};


export type OrganizationMemberRole = 'admin' | 'member' | 'guest';
export const OrganizationMemberRoleValues: string[];


export type OrganizationMetricsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    metrics: {
        /**
        * Total compute time of all organizational jobs since the creation of the organization (including organizational
        * project jobs). Compute time is the amount of computation time spent in jobs, in minutes used by an
        * organization
        * over a 12 month period, calculated as CPU + GPU minutes.
        */
        totalJobsComputeTime: number;
        /**
        * Total compute time of all organizational jobs in the current contract (including organizational project jobs).
        * Compute time is the amount of computation time spent in jobs, in minutes used by an organization over a 12
        * month
        * period, calculated as CPU + GPU minutes.
        */
        jobsComputeTimeCurrentYear: number;
        /**
        * The date from which the compute time for the running contract is calculated.
        */
        jobsComputeTimeCurrentYearSince: Date;
        /**
        * CPU compute time of all jobs in the organization in the current contract (including organizational project
        * jobs).
        */
        cpuComputeTimeCurrentContract: number;
        /**
        * GPU compute time of all jobs in the organization in the current contract (including organizational project
        * jobs).
        */
        gpuComputeTimeCurrentContract: number;
        /**
        * Total storage used by the organization.
        */
        totalStorage: number;
        /**
        * Total number of projects owned by the organization.
        */
        projectCount: number;
        /**
        * Total number of users in the organization.
        */
        userCount: number;
    };
};


export type OrganizationPipeline = {
    id: number;
    name: string;
    description: string;
    /**
    * 15m for every 15 minutes, 2h for every 2 hours, 1d for every 1 day
    */
    intervalStr?: string;
    steps: OrganizationPipelineStep[];
    nextRun?: Date;
    created: Date;
    currentRun?: OrganizationPipelineRun;
    lastRun?: OrganizationPipelineRun;
    feedingIntoDataset?: {
        dataset: string;
        datasetLink: string;
        itemCount: number;
        itemCountChecklistOK: number;
        itemCountChecklistError: number;
        datasetType?: OrganizationDatasetTypeEnum;
    };
    feedingIntoProject?: {
        id: number;
        name: string;
        projectLink: string;
        itemCount: number;
    };
    emailRecipientUids: number[];
    lastRunStartError?: string;
    notificationWebhook?: string;
    whenToEmail: OrganizationPipelineWhenToEmailEnum;
};
export type OrganizationPipelineWhenToEmailEnum = 'always' | 'on_new_data' | 'never';
export const OrganizationPipelineWhenToEmailEnumValues: string[];


export type OrganizationPipelineItemCount = {
    itemCount: number;
    itemCountChecklistOK: number;
    itemCountChecklistFailed: number;
};


export type OrganizationPipelineRun = {
    id: number;
    steps: OrganizationPipelineRunStep[];
    created: Date;
    finished?: Date;
    itemCountBefore?: OrganizationPipelineItemCount;
    itemCountAfter?: OrganizationPipelineItemCount;
    /**
    * Number of data items that failed to import into a project (through the s3-to-project, portal-to-project or
    * dataset-to-project) transform blocks
    */
    itemCountImportIntoProjectFailed?: number;
};


export type OrganizationPipelineRunStep = {
    name: string;
    transformationJob?: OrganizationCreateProject;
    filter?: string;
    uploadType?: OrganizationPipelineRunStepUploadTypeEnum;
    projectId?: number;
    newProjectName?: string;
    projectApiKey?: string;
    projectHmacKey?: string;
    transformationBlockId?: number;
    builtinTransformationBlock?: object;
    category?: OrganizationPipelineRunStepCategoryEnum;
    outputDatasetName?: string;
    outputDatasetBucketId?: number;
    outputDatasetBucketPath?: string;
    label?: string;
    extraCliArguments?: string;
    parameters?: {
        [key: string]: string;
    };
};
export type OrganizationPipelineRunStepUploadTypeEnum = 'project' | 'dataset';
export const OrganizationPipelineRunStepUploadTypeEnumValues: string[];
export type OrganizationPipelineRunStepCategoryEnum = 'training' | 'validation' | 'testing' | 'split';
export const OrganizationPipelineRunStepCategoryEnumValues: string[];


export type OrganizationPipelineStep = {
    name: string;
    filter?: string;
    /**
    * Set of paths to apply the transformation to, used for creating transformation jobs on default datasets. This
    * option is experimental and may change in the future.
    */
    pathFilters?: OrganizationCreateProjectPathFilter[];
    uploadType?: OrganizationPipelineStepUploadTypeEnum;
    projectId?: number;
    newProjectName?: string;
    projectApiKey?: string;
    projectHmacKey?: string;
    transformationBlockId?: number;
    builtinTransformationBlock?: object;
    category?: OrganizationPipelineStepCategoryEnum;
    outputDatasetName?: string;
    outputDatasetBucketId?: number;
    outputDatasetBucketPath?: string;
    /**
    * Path within the selected dataset to upload transformed files into. Used only when uploading into a default
    * (non-clinical) dataset.
    */
    outputPathInDataset?: string;
    outputDatasetPathRule?: OrganizationCreateProjectOutputDatasetPathRule;
    label?: string;
    transformationParallel?: number;
    extraCliArguments?: string;
    parameters?: {
        [key: string]: string;
    };
};
export type OrganizationPipelineStepUploadTypeEnum = 'project' | 'dataset';
export const OrganizationPipelineStepUploadTypeEnumValues: string[];
export type OrganizationPipelineStepCategoryEnum = 'training' | 'validation' | 'testing' | 'split';
export const OrganizationPipelineStepCategoryEnumValues: string[];


export type OrganizationTransferLearningBlock = {
    id: number;
    name: string;
    dockerContainer: string;
    dockerContainerManagedByEdgeImpulse: boolean;
    created: Date;
    createdByUser?: CreatedUpdatedByUser;
    lastUpdated?: Date;
    lastUpdatedByUser?: CreatedUpdatedByUser;
    description: string;
    userId?: number;
    userName?: string;
    operatesOn: OrganizationTransferLearningOperatesOn;
    objectDetectionLastLayer?: ObjectDetectionLastLayer;
    implementationVersion: number;
    /**
    * Whether this block is publicly available to Edge Impulse users (if false, then only for members of the owning
    * organization)
    */
    isPublic: boolean;
    /**
    * If `isPublic` is true, the list of devices (from latencyDevices) for which this model can be shown.
    */
    isPublicForDevices: string[];
    publicProjectTierAvailability?: PublicProjectTierAvailability;
    /**
    * Whether this block is publicly available to only enterprise users
    */
    isPublicEnterpriseOnly: boolean;
    /**
    * Whether this block is available to only enterprise users
    */
    enterpriseOnly?: boolean;
    /**
    * URL to the source code of this custom learn block.
    */
    repositoryUrl?: string;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters: object[];
    imageInputScaling?: ImageInputScaling;
    /**
    * If set, requires this block to be scheduled on GPU.
    */
    indRequiresGpu: boolean;
    sourceCodeAvailable: boolean;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly: boolean;
    displayCategory?: BlockDisplayCategory;
    /**
    * List of custom model variants produced when this block is trained. This is experimental and may change in the
    * future.
    */
    customModelVariants?: OrganizationTransferLearningBlockCustomVariant[];
    /**
    * If set, then this block is no longer available for training; and blockNoLongerAvailableReason will be set.
    */
    indBlockNoLongerAvailable: boolean;
    /**
    * In Markdown format. Set if `indBlockNoLongerAvailable` is true, contains migration information for existing users
    * of this block.
    */
    blockNoLongerAvailableReason?: string;
};


export type OrganizationTransferLearningBlockCustomVariant = {
    /**
    * Unique identifier or key for this custom variant
    */
    key: string;
    /**
    * Custom variant display name
    */
    name: string;
    /**
    * The entrypoint command to run custom inferencing for this model variant, via the learn block container
    */
    inferencingEntrypoint: string;
    /**
    * The entrypoint command to run custom profiling for this model variant, via the learn block container
    */
    profilingEntrypoint?: string;
    modelFiles?: OrganizationTransferLearningBlockModelFile[];
};


export type OrganizationTransferLearningBlockModelFile = {
    /**
    * Output artifact unique file ID, in kebab case
    */
    id: string;
    /**
    * Output artifact file name
    */
    name: string;
    /**
    * Output artifact file type
    */
    type: OrganizationTransferLearningBlockModelFileTypeEnum;
    /**
    * Output artifact file description
    */
    description: string;
};
export type OrganizationTransferLearningBlockModelFileTypeEnum = 'binary' | 'json' | 'text';
export const OrganizationTransferLearningBlockModelFileTypeEnumValues: string[];


export type OrganizationTransferLearningOperatesOn = 'object_detection' | 'audio' | 'image' | 'regression' | 'anomaly_detection' | 'visual_anomaly_detection' | 'other' | 'image_akida' | 'object_detection_akida' | 'classification_akida';
export const OrganizationTransferLearningOperatesOnValues: string[];


export type OrganizationTransformationBlock = {
    id: number;
    name: string;
    dockerContainer: string;
    dockerContainerManagedByEdgeImpulse: boolean;
    created: Date;
    createdByUser?: CreatedUpdatedByUser;
    lastUpdated?: Date;
    lastUpdatedByUser?: CreatedUpdatedByUser;
    userId?: number;
    userName?: string;
    description: string;
    /**
    * These arguments are passed into the container
    */
    cliArguments: string;
    indMetadata: boolean;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    additionalMountPoints: TransformationBlockAdditionalMountPoint[];
    operatesOn: TransformationJobOperatesOnEnum;
    allowExtraCliArguments: boolean;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
    /**
    * List of parameters to be rendered in the UI
    */
    parametersUI?: DSPGroupItem[];
    /**
    * 15m for 15 minutes, 2h for 2 hours, 1d for 1 day. If not set, the default is 8 hours.
    */
    maxRunningTimeStr?: string;
    sourceCodeAvailable: boolean;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly: boolean;
    /**
    * URL to the source code of this custom learn block.
    */
    repositoryUrl?: string;
    /**
    * Whether this block is publicly available to Edge Impulse users (if false, then only for members of the owning
    * organization)
    */
    isPublic: boolean;
    publicProjectTierAvailability: PublicProjectTierAvailability;
    /**
    * Whether to show this block in 'Data sources'. Only applies for standalone blocks.
    */
    showInDataSources: boolean;
    /**
    * Whether to show this block in 'Create transformation job'. Only applies for standalone blocks.
    */
    showInCreateTransformationJob: boolean;
    /**
    * Whether to show this block in 'Synthetic data'. Only applies for standalone blocks.
    */
    showInSyntheticData: boolean;
    /**
    * Whether to show this block in 'AI Labeling'. Only applies for standalone blocks.
    */
    showInAIActions: boolean;
    /**
    * Extra environmental variables that are passed into the transformation block (key/value pairs).
    */
    environmentVariables: EnvironmentVariable[];
    /**
    * For AI labeling blocks, this lists the data types that the block supports. If this field is empty then there's no
    * information about supported data types.
    */
    aiActionsOperatesOn?: AIActionsOperatesOn[];
};


export type OrganizationUpdatePipelineBody = {
    name: string;
    description: string;
    /**
    * 15m for every 15 minutes, 2h for every 2 hours, 1d for every 1 day
    */
    intervalStr?: string;
    steps: OrganizationPipelineStep[];
    dataset?: string;
    projectId?: number;
    emailRecipientUids: number[];
    notificationWebhook?: string;
    whenToEmail: OrganizationUpdatePipelineBodyWhenToEmailEnum;
    archived?: boolean;
};
export type OrganizationUpdatePipelineBodyWhenToEmailEnum = 'always' | 'on_new_data' | 'never';
export const OrganizationUpdatePipelineBodyWhenToEmailEnumValues: string[];


export type OrganizationUser = {
    id: number;
    username: string;
    name: string;
    email: string;
    photo?: string;
    created: Date;
    lastSeen?: Date;
    staffInfo: StaffInfo;
    pending: boolean;
    jobTitle?: string;
    /**
    * List of permissions the user has
    */
    permissions?: Permission[];
    companyName?: string;
    /**
    * Whether the user has activated their account or not.
    */
    activated: boolean;
    /**
    * Whether the user has configured multi-factor authentication
    */
    mfaConfigured: boolean;
    /**
    * Stripe customer ID, if any.
    */
    stripeCustomerId?: string;
    /**
    * Whether the user has pending payments.
    */
    hasPendingPayments?: boolean;
    tier?: UserTierEnum;
    /**
    * List of identity providers (e.g. Google, GitHub) that the user has used to sign in with
    */
    idps?: string[];
    added: Date;
    role: OrganizationMemberRole;
    projectCount: number;
    datasets: string[];
    /**
    * Date when the user last accessed the organization data.
    */
    lastAccessToOrganization?: Date;
    /**
    * ID of the last project accessed by the user in the organization.
    */
    lastOrganizationProjectAccessed?: number;
};


export type PerformanceCalibrationDetection = {
    /**
    * The time of the detection in milliseconds
    */
    time: number;
    /**
    * The label that was detected
    */
    label: string;
};


export type PerformanceCalibrationFalsePositive = {
    /**
    * The type of false positive. Incorrect is when a detection matches the wrong ground truth. Duplicate is when the
    * same ground truth was detected more than once. The first correct detection is considered a true positive but
    * subsequent detections are considered false positives. Spurious is when the detection was not associated with any
    * ground truth.
    */
    type: PerformanceCalibrationFalsePositiveTypeEnum;
    /**
    * The time of the detection in milliseconds
    */
    detectionTime: number;
    /**
    * The label of any associated ground truth
    */
    groundTruthLabel?: string;
    /**
    * The start time of any associated ground truth
    */
    groundTruthStart?: number;
    /**
    * All of the sample IDs in the affected region
    */
    sampleIds?: number[];
};
export type PerformanceCalibrationFalsePositiveTypeEnum = 'incorrect' | 'duplicate' | 'spurious';
export const PerformanceCalibrationFalsePositiveTypeEnumValues: string[];


export type PerformanceCalibrationGroundTruth = {
    /**
    * Whether this region is a single sample, a region of background noise, or a region of background noise that
    * contains samples.
    */
    type: PerformanceCalibrationGroundTruthTypeEnum;
    /**
    * Index of the label in the array of all labels
    */
    labelIdx: number;
    /**
    * String label of the sample
    */
    labelString: string;
    /**
    * The start time of the region in milliseconds
    */
    start: number;
    /**
    * The length of the region in milliseconds
    */
    length: number;
    /**
    * If the region contains samples, all the samples within this region
    */
    samples?: {
        /**
        * The ID of the samples in Studio
        */
        id: number;
        /**
        * The start time of the sample in milliseconds
        */
        start: number;
        /**
        * The length of the sample in milliseconds
        */
        length: number;
        /**
        * For debugging. The index of the sample in the original Y array.
        */
        idx: number;
    }[];
};
export type PerformanceCalibrationGroundTruthTypeEnum = 'sample' | 'noise' | 'combined_noise';
export const PerformanceCalibrationGroundTruthTypeEnumValues: string[];


export type PerformanceCalibrationParameterSet = {
    /**
    * All of the detections using this parameter set
    */
    detections: PerformanceCalibrationDetection[];
    /**
    * Whether this is considered the best parameter set
    */
    isBest: boolean;
    /**
    * All of the possible labels in the detections array
    */
    labels: string[];
    aggregateStats: {
        falsePositiveRate: number;
        falseNegativeRate: number;
    };
    stats: {
        label: string;
        truePositives: number;
        falsePositives: number;
        falseNegatives: number;
        trueNegatives: number;
        falsePositiveRate: number;
        falseNegativeRate: number;
        /**
        * The details of every false positive detection.
        */
        falsePositiveDetails?: PerformanceCalibrationFalsePositive[];
        /**
        * The times in ms at which false negatives occurred. These correspond to specific items in the ground truth.
        */
        falseNegativeTimes: number[];
    }[];
    params: PerformanceCalibrationParameters;
    /**
    * The size of the input block window in milliseconds.
    */
    windowSizeMs: number;
};


export type PerformanceCalibrationParameters = {
    /**
    * The post-processing algorithm type.
    */
    type: PerformanceCalibrationParametersTypeEnum;
    /**
    * The version number of the post-processing algorithm.
    */
    version: number;
    parametersStandard?: PerformanceCalibrationParametersStandard;
};
export type PerformanceCalibrationParametersTypeEnum = 'standard';
export const PerformanceCalibrationParametersTypeEnumValues: string[];


export type PerformanceCalibrationParametersStandard = {
    /**
    * The length of the averaging window in milliseconds.
    */
    averageWindowDurationMs: number;
    /**
    * The minimum threshold for detection, from 0-1.
    */
    detectionThreshold: number;
    /**
    * The amount of time new matches will be ignored after a positive result.
    */
    suppressionMs: number;
};


export type PerformanceCalibrationRawDetection = {
    /**
    * The start time of the detected window in milliseconds
    */
    start: number;
    /**
    * The end time of the detected window in milliseconds
    */
    end: number;
    result: number[];
};


export type PerformanceCalibrationSaveParameterSetRequest = {
    params: PerformanceCalibrationParameters;
};


export type PerformanceCalibrationUploadLabeledAudioRequest = {
    zip: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type PerformanceCalibrationUploadLabeledAudioResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    uploadKey: string;
};


export type Permission = 'admin:infra:disallowedEmailDomains:read' | 'admin:infra:disallowedEmailDomains:write' | 'admin:infra:featureFlags:read' | 'admin:infra:featureFlags:write' | 'admin:infra:config:read' | 'admin:infra:config:write' | 'admin:infra:migrations:read' | 'admin:infra:migrations:write' | 'admin:metrics:read' | 'admin:metrics:write' | 'admin:oauth:read' | 'admin:oauth:write' | 'admin:organizations:read' | 'admin:organizations:write' | 'admin:organizations:members:write' | 'admin:projects:members:write' | 'admin:projects:read' | 'admin:projects:write' | 'admin:trashbin:write' | 'admin:trials:read' | 'admin:trials:write' | 'admin:users:permissions:write' | 'admin:users:read' | 'admin:users:signupApprovals:read' | 'admin:users:signupApprovals:write' | 'admin:users:write' | 'admin:jobs:read' | 'admin:emails:verification:code:read' | 'admin:sso:read' | 'admin:sso:domainIdps:write' | 'admin:vlm:model:read' | 'admin:vlm:model:write' | 'projects:limits:write' | 'projects:training:keras:write' | 'projects:data:versioning:write' | 'thirdpartyauth:read' | 'thirdpartyauth:write' | 'users:emails:read' | 'whitelabels:read' | 'whitelabels:write' | 'test:data:write' | 'test:users:read' | 'test:users:write';
export const PermissionValues: string[];


export type PortalFile = {
    name: string;
    addedDate?: Date;
    size?: number;
    ETag?: string;
    path: string;
    type: PortalFileTypeEnum;
};
export type PortalFileTypeEnum = 'folder' | 'file';
export const PortalFileTypeEnumValues: string[];


export type PortalInfoResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    name: string;
    description: string;
    organizationId: number;
    organizationName: string;
    organizationLogo?: string;
    bucketName: string;
};


export type PostProcessingBlock = {
    type: string;
    title: string;
    author: string;
    description: string;
    name: string;
    recommended: boolean;
    experimental: boolean;
    latestImplementationVersion: number;
    blockType: BlockType;
    /**
    * List of target devices that support this DSP block. If undefined this block works on all targets.
    */
    supportedTargets?: string[];
    defaultParameters: DSPGroupItem[];
};


export type PostProcessingConfig = {
    enabled: boolean;
    parameters: DSPGroupItem[];
};


export type PostProcessingConfigRequest = {
    enabled: boolean;
    parameters: {
        [key: string]: string;
    };
};


export type PostProcessingConfigResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    enabled: boolean;
    parameters: DSPGroupItem[];
};


export type PostProcessingFeaturesForSampleRequest = {
    config: PostProcessingConfigRequest;
    variant: KerasModelVariantEnum;
};


export type PretrainedModelTensor = {
    dataType: PretrainedModelTensorDataTypeEnum;
    name: string;
    shape: number[];
    quantizationScale?: number;
    quantizationZeroPoint?: number;
};
export type PretrainedModelTensorDataTypeEnum = 'int8' | 'uint8' | 'float32';
export const PretrainedModelTensorDataTypeEnumValues: string[];


export type PreviewAIActionsSamplesRequest = {
    /**
    * If this is passed in, the `previewConfig` of the AI action is overwritten (requires actionId to be a valid
    * action).
    */
    saveConfig: boolean;
    dataCategory: AIActionsDataCategory;
    /**
    * Metadata key to filter on. Required if dataCategory is equal to "dataWithoutMetadataKey" or "dataWithMetadata".
    */
    dataMetadataKey?: string;
    /**
    * Metadata value to filter on. Required if dataCategory is equal to "dataWithMetadata".
    */
    dataMetadataValue?: string;
    /**
    * Max. amount of data items to return.
    */
    maxDataPreviewCount: number;
};


export type PreviewDefaultFilesInFolderRequest = {
    /**
    * S3 prefix
    */
    prefix: string;
    /**
    * Return either files or folders matching the specified prefix
    */
    itemsToList: PreviewDefaultFilesInFolderRequestItemsToListEnum;
};
export type PreviewDefaultFilesInFolderRequestItemsToListEnum = 'files' | 'folders';
export const PreviewDefaultFilesInFolderRequestItemsToListEnumValues: string[];


export type PreviewDefaultFilesInFolderResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    files: PortalFile[];
    /**
    * True if results are truncated.
    */
    isTruncated?: boolean;
    /**
    * Explains why results are truncated; only present in the response if isTruncated is true. Results can be truncated
    * if there are too many results (more than 500 matches), or if searching for more results is too expensive (for
    * example, the dataset contains many items but very few match the given wildcard).
    */
    truncationReason?: PreviewDefaultFilesInFolderResponseTruncationReasonEnum;
};
export type PreviewDefaultFilesInFolderResponseTruncationReasonEnum = 'too-many-results' | 'too-expensive-search';
export const PreviewDefaultFilesInFolderResponseTruncationReasonEnumValues: string[];


export type PreviewProcessingConfigRequest = {
    enabled: boolean;
    parameters: {
        [key: string]: string;
    };
};


export type ProfileModelInfo = {
    variant: KerasModelVariantEnum;
    device: string;
    tfliteFileSizeBytes: number;
    isSupportedOnMcu: boolean;
    memory?: ProfileModelInfoMemory;
    timePerInferenceMs?: number;
    mcuSupportError?: string;
    /**
    * Custom, device-specific performance metrics
    */
    customMetrics: KerasCustomMetric[];
    /**
    * If false, then no metrics are available for this target
    */
    hasPerformance: boolean;
    /**
    * Specific error during profiling (e.g. model not supported)
    */
    profilingError?: string;
};


export type ProfileModelInfoMemory = {
    tflite?: ProfileModelInfoMemoryDetails;
    eon?: ProfileModelInfoMemoryDetails;
    eonRamOptimized?: ProfileModelInfoMemoryDetails;
};


export type ProfileModelInfoMemoryDetails = {
    /**
    * Estimated amount of RAM required by the model, measured in bytes
    */
    ram: number;
    /**
    * Estimated amount of ROM required by the model, measured in bytes
    */
    rom: number;
    /**
    * Estimated arena size required for model inference, measured in bytes
    */
    arenaSize: number;
};


/**
* Performance for a range of device types. Note that MPU is referred to as CPU in Studio, as MPU and CPU are treated
* equivalent for performance estimation.
*/
export type ProfileModelTable = {
    variant: ProfileModelTableVariantEnum;
    lowEndMcu: ProfileModelTableMcu;
    highEndMcu: ProfileModelTableMcu;
    highEndMcuPlusAccelerator: ProfileModelTableMcu;
    mpu: ProfileModelTableMpu;
    gpuOrMpuAccelerator: ProfileModelTableMpu;
};
export type ProfileModelTableVariantEnum = 'int8' | 'float32';
export const ProfileModelTableVariantEnumValues: string[];


export type ProfileModelTableMcu = {
    description: string;
    timePerInferenceMs?: number;
    memory?: {
        tflite?: {
            ram: number;
            rom: number;
        };
        eon?: {
            ram: number;
            rom: number;
        };
        eonRamOptimized?: {
            ram: number;
            rom: number;
        };
    };
    supported: boolean;
    mcuSupportError?: string;
};


export type ProfileModelTableMpu = {
    description: string;
    timePerInferenceMs?: number;
    rom?: number;
    supported: boolean;
};


export type ProfileTfLiteRequest = {
    /**
    * A base64 encoded TFLite file
    */
    tfliteFileBase64: string;
    /**
    * MCU used for calculating latency, query `latencyDevices` in `listProject` for a list of supported devices (and use
    * the "mcu" property here).
    */
    device: string;
};


export type ProfileTfLiteResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    variant: KerasModelVariantEnum;
    device: string;
    tfliteFileSizeBytes: number;
    isSupportedOnMcu: boolean;
    memory?: ProfileModelInfoMemory;
    timePerInferenceMs?: number;
    mcuSupportError?: string;
    /**
    * Custom, device-specific performance metrics
    */
    customMetrics: KerasCustomMetric[];
    /**
    * If false, then no metrics are available for this target
    */
    hasPerformance: boolean;
    /**
    * Specific error during profiling (e.g. model not supported)
    */
    profilingError?: string;
};


export type Project = {
    id: number;
    name: string;
    description: string;
    created: Date;
    /**
    * User or organization that owns the project
    */
    owner: string;
    lastAccessed?: Date;
    lastModified?: Date;
    /**
    * Details about the last modification
    */
    lastModificationDetails?: string;
    /**
    * Custom logo for this project (not available for all projects)
    */
    logo?: string;
    ownerUserId?: number;
    ownerOrganizationId?: number;
    /**
    * URL of the project owner avatar, if any.
    */
    ownerAvatar?: string;
    ownerIsDeveloperProfile: boolean;
    /**
    * User ID of the developer profile, if any.
    */
    developerProfileUserId?: number;
    collaborators: ProjectCollaborator[];
    labelingMethod: ProjectLabelingMethod;
    /**
    * Metadata about the project
    */
    metadata: object;
    dataExplorerScreenshot?: string;
    /**
    * Whether this is an enterprise project
    */
    isEnterpriseProject: boolean;
    /**
    * Unique identifier of the white label this project belongs to, if any.
    */
    whitelabelId: number | null;
    /**
    * Name of the white label this project belongs to, if any.
    */
    whitelabelName?: string;
    /**
    * List of project tags
    */
    tags?: string[];
    /**
    * Project category
    */
    category?: ProjectCategoryEnum;
    license?: PublicProjectLicense;
    tier: ProjectTierEnum;
    /**
    * Whether this project has been published or not.
    */
    hasPublicVersion: boolean;
    /**
    * Whether this is a public version of a project. A version is a snapshot of a project at a certain point in time,
    * which can be used to periodically save the state of a project. Versions can be private (just for internal use and
    * reference) or public, available to everyone. A public version can be cloned by anyone, restoring the state of the
    * project at the time into a new, separate project.
    */
    isPublic: boolean;
    /**
    * Whether this project allows live, public access. Unlike a public version, a live public project is not fixed in
    * time, and always includes the latest project changes. Similar to public versions, a live public project can be
    * cloned by anyone, creating a new, separate project.
    */
    allowsLivePublicAccess: boolean;
    indPauseProcessingSamples: boolean;
    /**
    * If the project allows public access, whether to list it the public projects overview response. If not listed, the
    * project is still accessible via direct link. If the project does not allow public access, this field has no
    * effect.
    */
    publicProjectListed: boolean;
    deletedDate?: Date;
    fullDeletionDate?: Date;
    scheduledFullDeletionDate?: Date;
};
export type ProjectCategoryEnum = 'Accelerometer' | 'Audio' | 'Images' | 'Keyword spotting' | 'Object detection' | 'Other';
export const ProjectCategoryEnumValues: string[];


export type ProjectApiKey = {
    id: number;
    apiKey: string;
    isDevelopmentKey: boolean;
    name: string;
    created: Date;
    role: ProjectApiKeyRoleEnum;
    createdByUser?: CreatedUpdatedByUser;
    /**
    * When this API key was last used.
    */
    lastUsed?: ProjectApiKeyLastUsed;
    /**
    * If the key has a ttl set, when the key will expire
    */
    expires?: Date;
    /**
    * OAuth client_id that created this API key through an OAuth-scoped key endpoint.
    */
    createdViaOAuthClientId?: string;
};
export type ProjectApiKeyRoleEnum = 'admin' | 'readonly' | 'ingestiononly' | 'ingestion_deployment' | 'wladmin';
export const ProjectApiKeyRoleEnumValues: string[];


/**
* When this API key was last used.
*/
export type ProjectApiKeyLastUsed = {
    date: Date;
    /**
    * If available, the country from which the API key was last used.
    */
    country?: string;
    /**
    * If available, the IP address from which the API key was last used.
    */
    ipAddress?: string;
};


export type ProjectCollaborator = {
    id: number;
    username: string;
    name: string;
    email: string;
    photo?: string;
    created: Date;
    lastSeen?: Date;
    staffInfo: StaffInfo;
    pending: boolean;
    jobTitle?: string;
    /**
    * List of permissions the user has
    */
    permissions?: Permission[];
    companyName?: string;
    /**
    * Whether the user has activated their account or not.
    */
    activated: boolean;
    /**
    * Whether the user has configured multi-factor authentication
    */
    mfaConfigured: boolean;
    /**
    * Stripe customer ID, if any.
    */
    stripeCustomerId?: string;
    /**
    * Whether the user has pending payments.
    */
    hasPendingPayments?: boolean;
    tier?: UserTierEnum;
    /**
    * List of identity providers (e.g. Google, GitHub) that the user has used to sign in with
    */
    idps?: string[];
    isOwner: boolean;
};


export type ProjectDataAxesSummaryResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Summary of the amount of data (in ms.) per sensor axis
    */
    dataAxisSummary: {
        [key: string]: number;
    };
};


export type ProjectDataIntervalResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    intervalMs: number;
    frequencyHz: number;
    /**
    * Only filled if project has "multi_datastreams" experiment enabled. Otherwise an empty array.
    */
    byDatastream: {
        type: ProjectDataIntervalResponseAllOfByDatastreamTypeEnum;
        intervalMs: number;
        frequencyHz: number;
        sensors: {
            /**
            * Name of the axis
            */
            name: string;
            /**
            * Type of data on this axis. Needs to comply to SenML units (see
            * https://www.iana.org/assignments/senml/senml.xhtml).
            */
            units: string;
        }[];
    }[];
};
export type ProjectDataIntervalResponseAllOfByDatastreamTypeEnum = 'video' | 'image' | 'time-series' | 'features';
export const ProjectDataIntervalResponseAllOfByDatastreamTypeEnumValues: string[];


export type ProjectDataSummary = {
    /**
    * Total length (in ms.) of all data in the training set
    */
    totalLengthMs: number;
    /**
    * Labels in the training set
    */
    labels: string[];
    dataCount: number;
};


/**
* Dataset metadata info, for a particular data category, shared between classification and regression data types.
*/
export type ProjectDatasetMetadataBase = {
    type: ProjectDatasetMetadataBaseTypeEnum;
    totalLength: string;
    totalLengthNumber: number;
    maxLengthMs: number;
    minLengthMs: number;
    minFrequency: number;
    maxFrequency: number;
    itemCount: number;
    isTimeseries: boolean;
    isFeatures: boolean;
    metadataFilterOptions: MetadataFilterOptions;
    /**
    * Full list of metadata keys in the project.
    */
    metadataKeys: string[];
    /**
    * Breakdown of the number of samples with mutation events in the dataset version.
    */
    changeActionCounts?: ProjectDatasetMetadataBaseChangeActionCounts;
};
export type ProjectDatasetMetadataBaseTypeEnum = 'classes' | 'regression';
export const ProjectDatasetMetadataBaseTypeEnumValues: string[];


/**
* Breakdown of the number of samples with mutation events in the dataset version.
*/
export type ProjectDatasetMetadataBaseChangeActionCounts = {
    /**
    * Number of samples in this window with at least one insert mutation.
    */
    insert?: number;
    /**
    * Number of samples in this window with at least one update mutation.
    */
    update?: number;
    /**
    * Number of samples in this window with at least one delete mutation.
    */
    delete?: number;
};


/**
* Dataset ratio info for a single category and label
*/
export type ProjectDatasetMetadataCategoryData = {
    /**
    * Total length
    */
    length: number;
    category: RawDataCategory;
    /**
    * Data class name or label
    */
    label: string;
};


export type ProjectDatasetMetadataClasses = {
    ratio: ProjectDatasetMetadataRatioNoRatio | ProjectDatasetMetadataRatioClasses | ProjectDatasetMetadataRatioRegression;
    labelQueueCount: number;
    totalItemCount: number;
    type: ProjectDatasetMetadataClassesTypeEnum;
    training: ProjectDatasetMetadataClassesCategory;
    testing: ProjectDatasetMetadataClassesCategory;
    validation: ProjectDatasetMetadataClassesCategory;
    postProcessing: ProjectDatasetMetadataClassesCategory;
    all: ProjectDatasetMetadataClassesCategory;
};
export type ProjectDatasetMetadataClassesTypeEnum = 'classes';
export const ProjectDatasetMetadataClassesTypeEnumValues: string[];


export type ProjectDatasetMetadataClassesCategory = {
    type: ProjectDatasetMetadataClassesCategoryTypeEnum;
    totalLength: string;
    totalLengthNumber: number;
    maxLengthMs: number;
    minLengthMs: number;
    minFrequency: number;
    maxFrequency: number;
    itemCount: number;
    isTimeseries: boolean;
    isFeatures: boolean;
    metadataFilterOptions: MetadataFilterOptions;
    /**
    * Full list of metadata keys in the project.
    */
    metadataKeys: string[];
    /**
    * Breakdown of the number of samples with mutation events in the dataset version.
    */
    changeActionCounts?: ProjectDatasetMetadataBaseChangeActionCounts;
    fullLabelCount: number;
    labels: RawDataLabelDistributionLabel[];
};
export type ProjectDatasetMetadataClassesCategoryTypeEnum = 'classes';
export const ProjectDatasetMetadataClassesCategoryTypeEnumValues: string[];


/**
* Overall dataset metadata info
*/
export type ProjectDatasetMetadataCommon = {
    ratio: ProjectDatasetMetadataRatioNoRatio | ProjectDatasetMetadataRatioClasses | ProjectDatasetMetadataRatioRegression;
    labelQueueCount: number;
    totalItemCount: number;
};


/**
* Dataset ratio info for a single class
*/
export type ProjectDatasetMetadataRatioClass = {
    /**
    * Training dataset ratio
    */
    trainingRatio: number;
    /**
    * Testing dataset ratio
    */
    testingRatio: number;
    /**
    * Validation dataset ratio
    */
    validationRatio: number;
    /**
    * Class name or label
    */
    label: string;
    /**
    * Total item count
    */
    total: number;
    /**
    * Total training dataset item count
    */
    totalTraining: number;
    /**
    * Total testing dataset item count
    */
    totalTesting: number;
    /**
    * Total validation dataset item count
    */
    totalValidation: number;
    /**
    * Total training dataset item count, given as a UI-friendly string
    */
    totalTrainingStr: string;
    /**
    * Total testing dataset item count, given as a UI-friendly string
    */
    totalTestingStr: string;
    /**
    * Total validation dataset item count, given as a UI-friendly string
    */
    totalValidationStr: string;
};


/**
* Dataset ratio info for classification datasets
*/
export type ProjectDatasetMetadataRatioClasses = {
    type: ProjectDatasetMetadataRatioClassesTypeEnum;
    hasValidationCategory: boolean;
    trainingRatio: number;
    testingRatio: number;
    validationRatio: number;
    showImbalanceTooltip: boolean;
    showRebalanceDataset: boolean;
    showTrainTestSplit: boolean;
    invalidRatioClasses?: ProjectDatasetMetadataRatioClass[];
    allRatioClasses?: ProjectDatasetMetadataRatioClass[];
    categoryData: ProjectDatasetMetadataCategoryData[];
    count: ProjectDatasetMetadataRatioCount;
};
export type ProjectDatasetMetadataRatioClassesTypeEnum = 'classes';
export const ProjectDatasetMetadataRatioClassesTypeEnumValues: string[];


/**
* Per-dataset data count
*/
export type ProjectDatasetMetadataRatioCount = {
    training: number;
    testing: number;
    validation: number;
};


/**
* Placeholder dataset ratio info when no ratio is available
*/
export type ProjectDatasetMetadataRatioNoRatio = {
    type: ProjectDatasetMetadataRatioNoRatioTypeEnum;
    hasValidationCategory: boolean;
    count: ProjectDatasetMetadataRatioCount;
};
export type ProjectDatasetMetadataRatioNoRatioTypeEnum = 'no-ratio';
export const ProjectDatasetMetadataRatioNoRatioTypeEnumValues: string[];


/**
* Dataset ratio info for regression datasets
*/
export type ProjectDatasetMetadataRatioRegression = {
    type: ProjectDatasetMetadataRatioRegressionTypeEnum;
    hasValidationCategory: boolean;
    trainingRatio: number;
    testingRatio: number;
    validationRatio: number;
    categoryData: ProjectDatasetMetadataCategoryData[];
    count: ProjectDatasetMetadataRatioCount;
};
export type ProjectDatasetMetadataRatioRegressionTypeEnum = 'regression';
export const ProjectDatasetMetadataRatioRegressionTypeEnumValues: string[];


export type ProjectDatasetMetadataRegression = {
    ratio: ProjectDatasetMetadataRatioNoRatio | ProjectDatasetMetadataRatioClasses | ProjectDatasetMetadataRatioRegression;
    labelQueueCount: number;
    totalItemCount: number;
    type: ProjectDatasetMetadataRegressionTypeEnum;
    training: ProjectDatasetMetadataRegressionCategory;
    testing: ProjectDatasetMetadataRegressionCategory;
    validation: ProjectDatasetMetadataRegressionCategory;
    postProcessing: ProjectDatasetMetadataRegressionCategory;
    all: ProjectDatasetMetadataRegressionCategory;
};
export type ProjectDatasetMetadataRegressionTypeEnum = 'regression';
export const ProjectDatasetMetadataRegressionTypeEnumValues: string[];


export type ProjectDatasetMetadataRegressionCategory = {
    type: ProjectDatasetMetadataRegressionCategoryTypeEnum;
    totalLength: string;
    totalLengthNumber: number;
    maxLengthMs: number;
    minLengthMs: number;
    minFrequency: number;
    maxFrequency: number;
    itemCount: number;
    isTimeseries: boolean;
    isFeatures: boolean;
    metadataFilterOptions: MetadataFilterOptions;
    /**
    * Full list of metadata keys in the project.
    */
    metadataKeys: string[];
    /**
    * Breakdown of the number of samples with mutation events in the dataset version.
    */
    changeActionCounts?: ProjectDatasetMetadataBaseChangeActionCounts;
    labelsCount: number;
    minLabel: number;
    maxLabel: number;
    valueGroups: RawDataLabelDistributionRegressionValueGroup[];
    groupsPerLabelMapKey?: {
        [key: string]: RawDataLabelDistributionRegressionValueGroupsPerKey;
    };
};
export type ProjectDatasetMetadataRegressionCategoryTypeEnum = 'regression';
export const ProjectDatasetMetadataRegressionCategoryTypeEnumValues: string[];


export type ProjectDeploymentTarget = {
    name: string;
    description: string;
    image: string;
    imageClasses: string;
    format: string;
    latencyDevice?: string;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasEonCompiler: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasTensorRT: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasTensaiFlow: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasDRPAI: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasTIDL: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasAkida: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasMemryx: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasStAton: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasCevaNpn: boolean;
    /**
    * Preferably use supportedEngines / preferredEngine
    */
    hasNordicAxon: boolean;
    hideOptimizations: boolean;
    badge?: DeploymentTargetBadge;
    uiSection: ProjectDeploymentTargetUiSectionEnum;
    customDeployId?: number;
    customDeployOrganizationId?: number;
    integrateUrl?: string;
    ownerOrganizationName?: string;
    supportedEngines: DeploymentTargetEngine[];
    preferredEngine: DeploymentTargetEngine;
    url?: string;
    docsUrl: string;
    firmwareRepoUrl?: string;
    modelVariants: DeploymentTargetVariant[];
    parameters: DSPGroupItem[];
    /**
    * An optional redirect field for integration partners to be shown in addition to the docs link, i.e. for directing
    * users to a partner's website or application once deployment completes. This is experimental and may change in the
    * future.
    */
    redirect?: DeploymentTargetRedirect;
    /**
    * Whether this deployment target is recommended for the project based on connected devices.
    */
    recommendedForProject: boolean;
    /**
    * Whether this deployment target is disabled for the project based on various attributes of the project.
    */
    disabledForProject: boolean;
    /**
    * If the deployment target is disabled for the project, this gives the reason why.
    */
    reasonTargetDisabled?: string;
};
export type ProjectDeploymentTargetUiSectionEnum = 'library' | 'firmware' | 'mobile' | 'hidden';
export const ProjectDeploymentTargetUiSectionEnumValues: string[];


export type ProjectDeploymentTargetsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    targets: ProjectDeploymentTarget[];
};


export type ProjectDismissNotificationRequest = {
    notification: string;
};


export type ProjectDownloadsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    downloads: Download[];
};


export type ProjectHmacKey = {
    id: number;
    hmacKey: string;
    isDevelopmentKey: boolean;
    name: string;
    created: Date;
    createdByUser?: CreatedUpdatedByUser;
};


export type ProjectInfoResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    project: Project;
    developmentKeys: DevelopmentKeys;
    impulse: {
        /**
        * Whether an impulse was created
        */
        created: boolean;
        /**
        * Whether an impulse was configured
        */
        configured: boolean;
        /**
        * Whether an impulse was fully trained and configured
        */
        complete: boolean;
    };
    devices: Device[];
    dataSummary: ProjectDataSummary;
    dataSummaryPerCategory: {
        training: ProjectDataSummary;
        testing: ProjectDataSummary;
        validation: ProjectDataSummary;
        postProcessing: ProjectDataSummary;
    };
    computeTime: {
        /**
        * Start of the current time period.
        */
        periodStartDate: Date;
        /**
        * End of the current time period. This is the date when the compute time resets again.
        */
        periodEndDate: Date;
        /**
        * The amount of compute used for the current time period.
        */
        timeUsedMs: number;
        /**
        * The amount of compute left for the current time period.
        */
        timeLeftMs: number;
    };
    acquisitionSettings: {
        /**
        * Interval during the last acquisition, or the recommended interval based on the data set.
        */
        intervalMs: number;
        /**
        * Length of the last acquisition, or a recommended interval based on the data set.
        */
        lengthMs: number;
        /**
        * Sensor that was used during the last acquisition.
        */
        sensor?: string;
        /**
        * Label that was used during the last acquisition.
        */
        label?: string;
        /**
        * Length of the last sample segment after segmenting a larger sample.
        */
        segmentLength?: number;
        /**
        * Whether to auto-shift segments
        */
        segmentShift: boolean;
        /**
        * Default page size on data acquisition
        */
        defaultPageSize: number;
        /**
        * Default view type on data acquisition
        */
        viewType: ProjectInfoResponseAllOfAcquisitionSettingsViewTypeEnum;
        /**
        * Number of grid columns in non-detailed view
        */
        gridColumnCount: number;
        /**
        * Number of grid columns in detailed view
        */
        gridColumnCountDetailed: number;
        /**
        * If enabled, does not round sample length to hours/minutes/seconds, but always displays sample length in
        * milliseconds. E.g. instead of 1m 32s, this'll say 92,142ms.
        */
        showExactSampleLength: boolean;
        /**
        * If enabled, allows editing bounding box labels directly from the acquisition UI.
        */
        inlineEditBoundingBoxes: boolean;
    };
    collaborators: User[];
    deploySettings: {
        eonCompiler: boolean;
        sensor: ProjectInfoResponseAllOfDeploySettingsSensorEnum;
        arduinoLibraryName: string;
        tinkergenLibraryName: string;
        particleLibraryName: string;
        lastDeployModelEngine?: ModelEngineShortEnum;
    };
    /**
    * Experiments that the project has access to. Enabling experiments can only be done through a JWT token.
    */
    experiments: ProjectInfoResponseAllOfExperiments[];
    latencyDevices: LatencyDevice[];
    urls: {
        /**
        * Base URL for the mobile client. If this is undefined then no development API key is set.
        */
        mobileClient?: string;
        /**
        * Base URL for collecting data with the mobile client from a computer. If this is undefined then no development
        * API
        * key is set.
        */
        mobileClientComputer?: string;
        /**
        * Base URL for running inference with the mobile client. If this is undefined then no development API key is
        * set.
        */
        mobileClientInference?: string;
    };
    showCreateFirstImpulse: boolean;
    showGettingStartedWizard: {
        showWizard: boolean;
        /**
        * Current step of the getting started wizard
        */
        step: number;
        tutorial?: TutorialType;
        /**
        * Classes or labels used in the getting started wizard
        */
        classes?: string[];
    };
    performance: {
        gpu: boolean;
        /**
        * Compute time limit per job in minutes (applies only to DSP and learning jobs).
        */
        jobLimitM: number;
        /**
        * Maximum size for DSP file output
        */
        dspFileSizeMb: number;
        enterprisePerformance: boolean;
        /**
        * Amount of RAM allocated to training jobs
        */
        trainJobRamMb: number;
    };
    /**
    * Present if a readme is set for this project
    */
    readme?: ProjectPublicDataReadme;
    /**
    * The IDs of users who should be notified when a Keras or retrain job is finished.
    */
    trainJobNotificationUids: number[];
    /**
    * The IDs of users who should be notified when a DSP job is finished.
    */
    dspJobNotificationUids: number[];
    /**
    * The IDs of users who should be notified when a model testing job is finished.
    */
    modelTestingJobNotificationUids: number[];
    /**
    * The IDs of users who should be notified when an export job is finished.
    */
    exportJobNotificationUids: number[];
    hasNewTrainingData: boolean;
    /**
    * Config file specifying how to process CSV files.
    */
    csvImportConfig?: object;
    studioUrl: string;
    /**
    * DEPRECATED. To enable the pretrained model flow, set the impulse type property to "BYOM" instead.
    */
    inPretrainedModelFlow: boolean;
    dspPageSize?: number;
    windowJobConcurrency?: number;
    /**
    * Whether to show the actual sensor data in acquisition charts (only applies when you have structured labels)
    */
    showSensorDataInAcquisitionGraph: boolean;
    targetConstraints?: TargetConstraints;
    /**
    * List of notifications to show within the project
    */
    notifications: string[];
    /**
    * Default selected impulse (by ID).
    */
    defaultImpulseId?: number;
    lastShownModelEngine?: ModelEngineShortEnum;
    versioningStorageSizeMib?: number;
    anomalyLabelsConfig?: AnomalyLabelsConfig;
    datasetSplitOptions?: DatasetSplitOptions;
};
export type ProjectInfoResponseAllOfAcquisitionSettingsViewTypeEnum = 'list' | 'grid';
export const ProjectInfoResponseAllOfAcquisitionSettingsViewTypeEnumValues: string[];
export type ProjectInfoResponseAllOfDeploySettingsSensorEnum = 'accelerometer' | 'microphone' | 'camera' | 'positional' | 'environmental' | 'fusion' | 'unknown';
export const ProjectInfoResponseAllOfDeploySettingsSensorEnumValues: string[];


export type ProjectInfoResponseAllOfExperiments = {
    type: string;
    title: string;
    help?: string;
    enabled: boolean;
    showToUser: boolean;
};


export type ProjectInfoSummaryResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    id: number;
    owner: string;
    name: string;
    studioUrl: string;
    viewCount: number;
    cloneCount: number;
};


export type ProjectLabelingMethod = 'single_label' | 'object_detection' | 'label_map';
export const ProjectLabelingMethodValues: string[];


export type ProjectModelVariant = {
    variant: KerasModelVariantEnum;
    /**
    * True if this model variant is the default or "reference variant" for this project
    */
    isReferenceVariant: boolean;
    /**
    * True if profiling for this model variant is enabled for the current project
    */
    isEnabled: boolean;
    /**
    * True if this is the selected model variant for this project, used to keep the same view after refreshing. Update
    * this via defaultProfilingVariant in UpdateProjectRequest.
    */
    isSelected: boolean;
};


export type ProjectPrivateData = {
    lastAccessed?: Date;
    /**
    * Metadata about the project
    */
    metadata: object;
    dataExplorerScreenshot?: string;
    /**
    * Whether this is an enterprise project
    */
    isEnterpriseProject: boolean;
    collaborators?: ProjectCollaborator[];
    /**
    * Unique identifier of the white label this project belongs to, if any.
    */
    whitelabelId: number | null;
};


export type ProjectPublicData = {
    id: number;
    name: string;
    description: string;
    created: Date;
    /**
    * User or organization that owns the project
    */
    owner: string;
    /**
    * URL to the project owner avatar, if any
    */
    ownerAvatar?: string;
    /**
    * URL of the latest public version of the project, if any
    */
    publicUrl: string;
    projectType: ProjectType;
    pageViewCount: number;
    cloneCount: number;
    totalSamplesCount?: string;
    /**
    * Accuracy on training set.
    */
    trainingAccuracy?: number;
    /**
    * Accuracy on test set.
    */
    testAccuracy?: number;
    /**
    * Present if a readme is set for this project
    */
    readme?: ProjectPublicDataReadme;
    /**
    * List of project tags
    */
    tags: string[];
};


/**
* Present if a readme is set for this project
*/
export type ProjectPublicDataReadme = {
    markdown: string;
    html: string;
};


/**
* Project sample metadata
*/
export type ProjectSampleMetadata = {
    /**
    * Array with all available sample metadata.
    */
    metadata: SampleMetadata[];
};


/**
* The project tier. This is "enterprise" for all organization projects, or the user tier for all user projects.
*/
export type ProjectTierEnum = 'free' | 'community-plus' | 'professional' | 'enterprise';
export const ProjectTierEnumValues: string[];


export type ProjectTrainingDataSummaryResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    dataSummary: {
        /**
        * Labels in the training set
        */
        labels: string[];
        dataCount: number;
        /**
        * Whether there are samples in the training dataset that are both time-series data and have multiple labels
        */
        hasTimeseriesDataWithMultipleLabels: boolean;
        /**
        * For labelmap datasets, this property provides a breakdown of labels per attribute or key.
        */
        labelsPerKey?: {
            [key: string]: string[];
        };
    };
};


export type ProjectType = 'kws' | 'audio' | 'object-detection' | 'image' | 'accelerometer' | 'other';
export const ProjectTypeValues: string[];


export type ProjectVersionRequest = {
    /**
    * Data bucket ID. Keep empty to store in Edge Impulse hosted storage.
    */
    bucketId?: number;
    description: string;
    /**
    * Whether to make this version available on a public URL.
    */
    makePublic: boolean;
    /**
    * Whether to run model testing when creating this version (if this value is omitted, it will use the current state
    * of 'runModelTestingWhileVersioning' that is returned in ListVersionsResponse).
    */
    runModelTestingWhileVersioning?: boolean;
};


/**
* The visibility of the project, either public or private. Public projects can be viewed by anyone on the internet and
* edited by collaborators. Private projects can only be viewed and edited by collaborators.
*/
export type ProjectVisibility = 'public' | 'private';
export const ProjectVisibilityValues: string[];


export type PublicOrganizationTransformationBlock = {
    id: number;
    ownerOrganizationId: number;
    ownerOrganizationName: string;
    name: string;
    created: Date;
    lastUpdated?: Date;
    description: string;
    operatesOn: TransformationJobOperatesOnEnum;
    allowExtraCliArguments: boolean;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
    /**
    * List of parameters to be rendered in the UI
    */
    parametersUI?: DSPGroupItem[];
    /**
    * URL to the source code of this custom learn block.
    */
    repositoryUrl?: string;
    /**
    * Whether to show this block in 'Data sources'. Only applies for standalone blocks.
    */
    showInDataSources: boolean;
    /**
    * Whether to show this block in 'Create transformation job'. Only applies for standalone blocks.
    */
    showInCreateTransformationJob: boolean;
    /**
    * Whether to show this block in 'Synthetic data'. Only applies for standalone blocks.
    */
    showInSyntheticData: boolean;
    /**
    * Whether to show this block in 'AI Labeling'. Only applies for standalone blocks.
    */
    showInAIActions: boolean;
    /**
    * For AI labeling blocks, this lists the data types that the block supports. If this field is empty then there's no
    * information about supported data types.
    */
    aiActionsOperatesOn?: AIActionsOperatesOn[];
};


export type PublicProjectLicense = 'Apache-2.0' | 'BSD-3-Clause' | 'BSD-3-Clause-Clear';
export const PublicProjectLicenseValues: string[];


/**
* For public blocks, this indicates the project tiers for which this block is available.
*/
export type PublicProjectTierAvailability = 'enterprise-only' | 'all-projects' | 'all-projects-including-whitelabels';
export const PublicProjectTierAvailabilityValues: string[];


export type RawDataCategory = 'training' | 'testing' | 'validation' | 'post-processing';
export const RawDataCategoryValues: string[];


export type RawDataFilterCategory = 'training' | 'testing' | 'validation' | 'post-processing' | 'all';
export const RawDataFilterCategoryValues: string[];


export type RawDataLabelDistributionLabel = {
    label: string;
    /**
    * Total sample length for the label in milliseconds. For data types without a duration-based total this may be 0.
    */
    totalLength: number;
    /**
    * Total sample length for the label given as a UI-friendly formatted string.
    */
    totalLengthStr: string;
    /**
    * Total sample data count for the label.
    */
    dataCount: number;
};


/**
* Shows a single "bucket" of the data distribution for a regression dataset.
*/
export type RawDataLabelDistributionRegressionValueGroup = {
    /**
    * Group minimum value
    */
    groupMin: number;
    /**
    * Group maximum value
    */
    groupMax: number;
    /**
    * Total sample length within this group in milliseconds. For data types without a duration-based total this may be
    * 0.
    */
    totalLength: number;
    /**
    * Total sample length within this group given as a UI-friendly formatted string.
    */
    totalLengthStr: string;
    /**
    * Total sample data count within this group.
    */
    dataCount: number;
};


/**
* Shows the data distribution for a regression dataset, for a particular label key.
*/
export type RawDataLabelDistributionRegressionValueGroupsPerKey = {
    /**
    * Minimum overall label for this label key.
    */
    minLabel: number;
    /**
    * Maximum overall label for this label key.
    */
    maxLabel: number;
    /**
    * Data distribution for this label key, given on a "global" scale (scaled relative to all label keys).
    */
    valueGroupsGlobalScale: RawDataLabelDistributionRegressionValueGroup[];
    /**
    * Data distribution for this label key, given on a "local" scale (scaled only based on values for this label key).
    */
    valueGroupsLocalScale: RawDataLabelDistributionRegressionValueGroup[];
};


export type RawSampleData = {
    sample: Sample;
    payload: RawSamplePayload;
    /**
    * Total number of payload values
    */
    totalPayloadLength: number;
};


export type RawSampleDataStreamPayloads = {
    datastreamPayloads: RawSampleDataStreamPayloadsDatastreamPayloads[];
};


export type RawSampleDataStreamPayloadsDatastreamPayloads = {
    /**
    * Index of the datastream in the sample (datastreams that are not in the impulse are filtered out here, so you can
    * still find them back).
    */
    index: number;
    payload: RawSamplePayload;
    /**
    * Total number of payload values
    */
    totalPayloadLength: number;
};


export type RawSampleDataWithDataStreamPayloads = {
    sample: Sample;
    payload: RawSamplePayload;
    /**
    * Total number of payload values
    */
    totalPayloadLength: number;
    datastreamPayloads: RawSampleDataStreamPayloadsDatastreamPayloads[];
};


/**
* Sensor readings and metadata
*/
export type RawSamplePayload = {
    /**
    * Unique identifier for this device. **Only** set this when the device has a globally unique identifier (e.g. MAC
    * address).
    */
    device_name?: string;
    /**
    * Device type, for example the exact model of the device. Should be the same for all similar devices.
    */
    device_type: string;
    /**
    * Array with sensor axes
    */
    sensors: Sensor[];
    /**
    * Array of sensor values. One array item per interval, and as many items in this array as there are sensor axes.
    * This type is returned if there are multiple axes.
    */
    values: number[][];
    /**
    * New start index of the cropped sample
    */
    cropStart?: number;
    /**
    * New end index of the cropped sample
    */
    cropEnd?: number;
    /**
    * Interval between two windows (1000 / frequency). If the data was resampled, then this lists the resampled interval
    * for this payload.
    */
    intervalMs: number;
    /**
    * Frequency of the sample. If the data was resampled, then this lists the resampled frequency for this payload.
    */
    frequencyHz: number;
};


export type RebalanceDatasetResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    ratio: DatasetRatioDataRatio;
};


export type RemoveCollaboratorRequest = {
    /**
    * Username or e-mail address
    */
    usernameOrEmail: string;
};


export type RemoveMemberRequest = {
    id: number;
};


export type RenameDeviceRequest = {
    /**
    * New name for this device
    */
    name: string;
};


export type RenamePortalFileRequest = {
    /**
    * S3 path (within the portal)
    */
    oldPath: string;
    /**
    * S3 path (within the portal)
    */
    newPath: string;
};


export type RenameSampleRequest = {
    /**
    * New name for this sample
    */
    name: string;
};


export type Report = {
    id: number;
    created: Date;
    createdByUser?: CreatedUpdatedByUser;
    jobId: number;
    jobFinished: boolean;
    jobFinishedSuccessful: boolean;
    downloadLink?: string;
    reportStartDate: Date;
    reportEndDate: Date;
};


export type RequestEmailVerificationRequest = {
    /**
    * URL to redirect the user after email verification.
    */
    redirectUrl: string;
};


export type RequestResetPasswordRequest = {
    email: string;
};


export type ResetPasswordRequest = {
    email: string;
    code: string;
    newPassword: string;
};


/**
* Describes range of expected availability for an arbitrary resource
*/
export type ResourceRange = {
    minimum?: number;
    maximum?: number;
};


export type RestoreProjectFromPublicRequest = {
    /**
    * Source project ID
    */
    projectId: number;
};


export type RestoreProjectRequest = {
    /**
    * Source project ID
    */
    projectId: number;
    /**
    * Source project API key. This can be omitted if authenticating using a JWT token (you need to be a member of the
    * source project).
    */
    projectApiKey?: string;
    /**
    * Source project version ID
    */
    versionId: number;
};


export type RotateWebhookDestinationSecretResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * A new secret key used to verify the authenticity of the webhook requests sent to the specified URL. It can only be
    * retrieved once at the time of rotation, so make sure to store it securely.
    */
    signingSecret: string;
};


export type RunOrganizationPipelineResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    pipelineRun: OrganizationPipelineRun;
};


export type Sample = {
    id: number;
    filename: string;
    /**
    * Whether signature validation passed
    */
    signatureValidate: boolean;
    signatureMethod?: string;
    /**
    * Either the shared key or the public key that was used to validate the sample
    */
    signatureKey?: string;
    /**
    * Timestamp when the sample was created on device, or if no accurate time was known on device, the time that the
    * file was processed by the ingestion service.
    */
    created: Date;
    /**
    * Timestamp when the sample was last modified.
    */
    lastModified: Date;
    category: RawDataCategory;
    coldstorageFilename: string;
    label: string;
    /**
    * Interval between two windows (1000 / frequency). NOTE: Previously this value could change depending on whether the
    * sample was resampled. This behavior has been removed.
    */
    intervalMs: number;
    /**
    * Frequency of the sample. NOTE: Previously this value could change depending on whether the sample was resampled.
    * This behavior has been removed.
    */
    frequency: number;
    /**
    * DEPRECATED. See "intervalMs".
    */
    originalIntervalMs: number;
    /**
    * DEPRECATED. See "frequency".
    */
    originalFrequency: number;
    deviceName?: string;
    deviceType: string;
    sensors: Sensor[];
    /**
    * Number of readings in this file. If you have multiple datastreams, this is the value count from the datastream
    * with the highest frequency.
    */
    valuesCount: number;
    /**
    * Total length (in ms.) of this file
    */
    totalLengthMs?: number;
    /**
    * Timestamp when the sample was added to the current acquisition bucket.
    */
    added: Date;
    boundingBoxes: BoundingBox[];
    boundingBoxesType: SampleBoundingBoxesTypeEnum;
    chartType: SampleChartTypeEnum;
    thumbnailVideo?: string;
    thumbnailVideoFull?: string;
    /**
    * True if the current sample is excluded from use
    */
    isDisabled: boolean;
    /**
    * True if the current sample is still processing (e.g. for video)
    */
    isProcessing: boolean;
    /**
    * Set when sample is processing and a job has picked up the request
    */
    processingJobId?: number;
    /**
    * Set when processing this sample failed
    */
    processingError: boolean;
    /**
    * Error (only set when processing this sample failed)
    */
    processingErrorString?: string;
    /**
    * Whether the sample is cropped from another sample (and has crop start / end info)
    */
    isCropped: boolean;
    /**
    * Sample free form associated metadata
    */
    metadata?: {
        [key: string]: string;
    };
    /**
    * Unique identifier of the project this sample belongs to
    */
    projectId: number;
    /**
    * Name of the owner of the project this sample belongs to
    */
    projectOwnerName?: string;
    /**
    * Name of the project this sample belongs to
    */
    projectName?: string;
    projectLabelingMethod?: ProjectLabelingMethod;
    /**
    * Data sample SHA 256 hash (including CBOR envelope if applicable)
    */
    sha256Hash: string;
    structuredLabels?: StructuredLabel[];
    structuredLabelsList?: string[];
    /**
    * If this sample was created by a synthetic data job, it's referenced here.
    */
    createdBySyntheticDataJobId?: number;
    imageDimensions?: SampleDatastreamImageDimensions;
    /**
    * Video link, cropped and in original resolution.
    */
    videoUrl?: string;
    /**
    * Video link in original resolution.
    */
    videoUrlFull?: string;
    labelMap?: SampleLabelMapLabels;
    /**
    * Information about the entity that last updated a sample. This can be a user, a project API key, an OAuth client,
    * or a dataset version restore operation.
    */
    lastUpdatedBy?: LastUpdatedByUser | LastUpdatedByProjectApiKey | LastUpdatedByOAuthClient | LastUpdatedByDatasetVersionRestore;
    datastreams: SampleDatastream[];
};
export type SampleBoundingBoxesTypeEnum = 'object_detection' | 'constrained_object_detection';
export const SampleBoundingBoxesTypeEnumValues: string[];
export type SampleChartTypeEnum = 'chart' | 'image' | 'video' | 'table';
export const SampleChartTypeEnumValues: string[];


export type SampleBoundingBoxesRequest = {
    boundingBoxes: BoundingBox[];
};


export type SampleDatastream = {
    index: number;
    chartType: SampleDatastreamChartTypeEnum;
    /**
    * Interval between two windows (1000 / frequency).
    */
    intervalMs: number;
    /**
    * Frequency of the datastream
    */
    frequencyHz: number;
    sensors: Sensor[];
    /**
    * Number of readings in this datastream.
    */
    valuesCount: number;
    imageDimensions?: SampleDatastreamImageDimensions;
    /**
    * Total length (in ms.) of the datastream
    */
    totalLengthMs: number;
};
export type SampleDatastreamChartTypeEnum = 'chart' | 'image' | 'video' | 'table';
export const SampleDatastreamChartTypeEnumValues: string[];


export type SampleDatastreamImageDimensions = {
    width: number;
    height: number;
};


export type SampleKeyValueLabels = {
    type: SampleKeyValueLabelsTypeEnum;
    labels: {
        [key: string]: string;
    };
};
export type SampleKeyValueLabelsTypeEnum = 'key-values';
export const SampleKeyValueLabelsTypeEnumValues: string[];


/**
* Structured sample labels in the form of a key-value map. This property is optional and only defined for samples with
* key-value labels.
*/
export type SampleLabelMapLabels = SampleKeyValueLabels;


export type SampleLabelMapRequest = {
    labelMap: SampleLabelMapLabels;
};


export type SampleMetadata = {
    /**
    * Sample ID
    */
    id: number;
    /**
    * Sample free form associated metadata
    */
    metadata: {
        [key: string]: string;
    };
};


export type SampleProposedChanges = {
    /**
    * New label (single-label)
    */
    label?: string;
    /**
    * True if the current sample should be disabled; or false if it should not be disabled.
    */
    isDisabled?: boolean;
    /**
    * List of bounding boxes. The existing bounding boxes on the sample will be replaced (so if you want to add new
    * bounding boxes, use the existing list as a basis).
    */
    boundingBoxes?: BoundingBox[];
    /**
    * Free form associated metadata. The existing metadata on the sample will be replaced (so if you want to add new
    * metadata, use the existing list as a basis).
    */
    metadata?: {
        [key: string]: string;
    };
    /**
    * New label (multi-label)
    */
    structuredLabels?: StructuredLabel[];
};


export type SavePretrainedModelRequest = {
    input: DeployPretrainedModelInputTimeSeries | DeployPretrainedModelInputAudio | DeployPretrainedModelInputImage | DeployPretrainedModelInputOther;
    model: DeployPretrainedModelModelClassification | DeployPretrainedModelModelRegression | DeployPretrainedModelModelObjectDetection | DeployPretrainedModelModelFreeform | DeployPretrainedModelModelAnomaly | DeployPretrainedModelModelVisualAnomaly;
};


export type ScoreTrialResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    score: number;
    latency: {
        dspMips: number;
        dspMs: number;
        learnMaccs: number;
        learnMs: number;
    };
    ram: {
        dsp: number;
        learn: number;
    };
    rom: {
        dsp: number;
        learn: number;
    };
};


export type SegmentSampleRequest = {
    segments: SegmentSampleRequestSegments[];
};


export type SegmentSampleRequestSegments = {
    startMs: number;
    endMs: number;
};


export type SendUserFeedbackRequest = {
    type: SendUserFeedbackRequestTypeEnum;
    /**
    * The reason the user is contacting Edge Impulse Support.
    */
    subject: string;
    /**
    * The body of the message.
    */
    body: string;
    /**
    * The user's work email address. This is optional, if it's not provided, the registered email will be used.
    */
    workEmail?: string;
    /**
    * The user's company. This is optional.
    */
    company?: string;
    /**
    * The user's job title. This is optional.
    */
    jobTitle?: string;
    /**
    * The user's company size. This is optional.
    */
    companySize?: string;
    /**
    * The user's organization ID. This is optional.
    */
    organizationId?: number;
};
export type SendUserFeedbackRequestTypeEnum = 'feedback';
export const SendUserFeedbackRequestTypeEnumValues: string[];


export type Sensor = {
    /**
    * Index of the sensor (globally, so you can refer back to it in e.g. getSampleAsAudio)
    */
    index: number;
    /**
    * Name of the axis
    */
    name: string;
    /**
    * Type of data on this axis. Needs to comply to SenML units (see
    * https://www.iana.org/assignments/senml/senml.xhtml).
    */
    units: string;
};


export type SetAIActionsOrderRequest = {
    orderByActionId: number[];
};


/**
* Only fields defined in this object are set
*/
export type SetAnomalyParameterRequest = {
    /**
    * DEPRECATED, use "setImpulseThresholds" instead. Minimum confidence score, if the anomaly block scores a sample
    * above this threshold it will be flagged as anomaly.
    */
    minimumConfidenceRating?: number;
};


export type SetImpulseThresholdsRequest = {
    thresholds: {
        /**
        * Learn block ID for which you want to set the threshold
        */
        blockId: number;
        /**
        * Threshold identifier (see BlockThreshold#key)
        */
        key: string;
        /**
        * New threshold value
        */
        value: number | string;
    }[];
    /**
    * Whether a call to this function is allowed to create jobs to regenerate model testing results (e.g. object
    * detection datasets, or large datasets). This option is here because further calls to setImpulseThresholds are
    * blocked while model testing jobs are running (so e.g. live classification has this to FALSE).
    */
    allowCreatingRegenerateModelTestingJobs: boolean;
    /**
    * If set, this'll force the creation of a job to regenerate the model testing results.
    */
    forceRunRegenerateModelTestingInJob?: boolean;
};


export type SetImpulseThresholdsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Whether there were model testing results available before calling this function.
    */
    hadModelTestingResults: boolean;
    /**
    * Altering thresholds invalidates model testing results. We try to regenerate the results where possible. You'll get
    * either "not_regenerated" (e.g. no model testing results, or dataset does not support fast regeneration, like for
    * object detection models); "regenerated" (regeneration successful); "started_job" (regenerate is possible, but
    * requires a job, that was kicked off - e.g. for large test sets); "requires_job" (requires a job, but
    * "allowCreatingRegenerateModelTestingJobs" was false - start a new job manually via regenerateModelTestingSummary).
    * If a job was started then "regenerateModelTestingResultsJobId" is set.
    */
    regenerateModelTestingStatus: SetImpulseThresholdsResponseRegenerateModelTestingStatusEnum;
    /**
    * If there previously were model testing results, and your dataset supports fast re-generation of model testing
    * results (e.g. no object detection blocks), but your dataset is too big to re-generate results inline (e.g. >20K
    * test set samples) - then a job is kicked off to regenerate the results. This field contains the job ID.
    */
    regenerateModelTestingResultsJobId?: number;
};
export type SetImpulseThresholdsResponseRegenerateModelTestingStatusEnum = 'not_regenerated' | 'regenerated' | 'started_job' | 'requires_job';
export const SetImpulseThresholdsResponseRegenerateModelTestingStatusEnumValues: string[];


/**
* Only fields defined in this object are set
*/
export type SetKerasParameterRequest = {
    /**
    * Whether to use visual or expert mode.
    */
    mode?: SetKerasParameterRequestModeEnum;
    /**
    * DEPRECATED, use "setImpulseThresholds" instead. Minimum confidence score, if the neural network scores a sample
    * below this threshold it will be flagged as uncertain.
    */
    minimumConfidenceRating?: number;
    selectedModelType?: KerasModelTypeEnum;
    /**
    * Raw Keras script (only used in expert mode)
    */
    script?: string;
    /**
    * The visual layers for the neural network (only in visual mode).
    */
    visualLayers?: KerasVisualLayer[];
    /**
    * Number of training cycles (only in visual mode).
    */
    trainingCycles?: number;
    /**
    * Learning rate (between 0 and 1) (only in visual mode).
    */
    learningRate?: number;
    /**
    * Batch size used during training (only in visual mode).
    */
    batchSize?: number;
    /**
    * Train/test split (between 0 and 1)
    */
    trainTestSplit?: number;
    /**
    * Whether to automatically balance class weights, use this for skewed datasets.
    */
    autoClassWeights?: boolean;
    /**
    * Use learned optimizer and ignore learning rate.
    */
    useLearnedOptimizer?: boolean;
    augmentationPolicyImage?: AugmentationPolicyImageEnum;
    augmentationPolicySpectrogram?: AugmentationPolicySpectrogram;
    /**
    * Whether to profile the i8 model (might take a very long time)
    */
    profileInt8?: boolean;
    /**
    * If set, skips creating embeddings and measuring memory (used in tests)
    */
    skipEmbeddingsAndMemory?: boolean;
    akidaEdgeLearningConfig?: AkidaEdgeLearningConfig;
    /**
    * If the 'custom validation split' experiment is enabled, this metadata key is used to prevent group data leakage
    * between train and validation datasets.
    */
    customValidationMetadataKey?: string;
    /**
    * Whether the 'Advanced training settings' UI element should be expanded.
    */
    showAdvancedTrainingSettings?: boolean;
    /**
    * Whether the 'Augmentation training settings' UI element should be expanded.
    */
    showAugmentationTrainingSettings?: boolean;
    /**
    * Training parameters, this list depends on the list of parameters that the model exposes.
    */
    customParameters?: {
        [key: string]: string | null;
    };
    anomalyCapacity?: AnomalyCapacity;
    lastShownModelVariant?: KerasModelVariantEnum;
    blockParameters?: BlockParameters;
    trainingProcessor?: ExperimentalImpulseSpecificGpuTrainingProcessor;
};
export type SetKerasParameterRequestModeEnum = 'expert' | 'visual';
export const SetKerasParameterRequestModeEnumValues: string[];


export type SetLegacyImpulseStateInternalRequest = {
    zip: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    impulse: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    config: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type SetMemberDatasetsRequest = {
    datasets: string[];
};


export type SetMemberRoleRequest = {
    role: OrganizationMemberRole;
};


export type SetOptimizeSpaceRequest = {
    space?: {
        /**
        * List of impulses specifying the EON Tuner search space
        */
        impulse: TunerSpaceImpulse[];
    };
};


export type SetOrganizationDataDatasetRequest = {
    dataset: string;
};


/**
* Only parameters set on this object will be updated.
*/
export type SetProjectComputeTimeRequest = {
    /**
    * New job limit in seconds.
    */
    jobLimitM: number;
};


/**
* Only parameters set on this object will be updated.
*/
export type SetProjectDspFileSizeRequest = {
    /**
    * DSP File size in MB (default is 4096 MB)
    */
    dspFileSizeMb: number;
};


export type SetSampleMetadataRequest = {
    metadata?: {
        [key: string]: string;
    };
};


export type SetSampleProposedChangesRequest = {
    /**
    * Job ID of an AI Actions job. This is passed into your job via the --propose-actions argument.
    */
    jobId: number;
    proposedChanges: SampleProposedChanges;
};


export type SetSampleStructuredLabelsRequest = {
    structuredLabels: StructuredLabel[];
};


export type SetSampleVideoDimensionsRequest = {
    width: number;
    height: number;
};


export type SetSyntiantPosteriorRequest = {
    parameters: object;
};


export type SetTunerPrimaryJobRequest = {
    /**
    * Optional name. If no name is provided, the trial name is used.
    */
    name?: string;
};


export type SetUserPasswordRequest = {
    accessToken: string;
    identityProvider: string;
    password: string;
};


export type SocketTokenResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    token: {
        socketToken: string;
        expires: Date;
    };
};


export type SplitSampleInFramesRequest = {
    /**
    * Frames per second to extract from this video.
    */
    fps?: number;
};


export type StaffInfo = {
    isStaff: boolean;
    hasSudoRights: boolean;
    companyName?: string;
};


export type StartClassifyJobRequest = {
    /**
    * Set of model variants to run the classify job against.
    */
    modelVariants?: KerasModelVariantEnum[];
    /**
    * If enabled, skips feature generation altogether. Used e.g. if you update thresholds.
    */
    skipFeatureGeneration?: boolean;
};


export type StartDeviceDebugStreamResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    streamId: number;
};


export type StartDeviceSnapshotDebugStreamRequest = {
    resolution: StartDeviceSnapshotDebugStreamRequestResolutionEnum;
};
export type StartDeviceSnapshotDebugStreamRequestResolutionEnum = 'high' | 'low';
export const StartDeviceSnapshotDebugStreamRequestResolutionEnumValues: string[];


export type StartEnterpriseTrialRequest = {
    /**
    * Email of the user requesting the trial. If this email is different to the one stored for the user requesting the
    * trial, it will be used to replace the existing one.
    */
    email?: string;
    /**
    * Name of the user requesting the trial. If this name is different to the one stored for the user requesting the
    * trial, it will be used to replace the existing one.
    */
    name?: string;
    /**
    * Name of the trial organization. All enterprise features are tied to an organization. This organization will be
    * deleted after the trial ends. If no organization name is provided, the user's name will be used.
    */
    organizationName?: string;
    /**
    * Expiration date of the trial. The trial will be set as expired after this date. There will be a grace period of 30
    * days after a trial expires before fully deleting the trial organization. This field is ignored if the trial is
    * requested by a non-admin user, defaulting to 14 days trial.
    */
    expirationDate?: Date;
    /**
    * Notes about the trial. Free form text. This field is ignored if the trial is requested by a non-admin user.
    */
    notes?: string;
    /**
    * Use case of the trial.
    */
    useCase?: string;
    /**
    * Whether the user has ML models in production.
    */
    userHasMLModelsInProduction?: StartEnterpriseTrialRequestUserHasMLModelsInProductionEnum;
    /**
    * Name of the company requesting the trial.
    */
    companyName?: string;
    /**
    * Size of the company requesting the trial. This is a range of number of employees.
    */
    companySize?: string;
    /**
    * Country of the company requesting the trial.
    */
    country?: string;
    /**
    * State or province of the company requesting the trial.
    */
    stateOrProvince?: string;
    /**
    * Origin of the redirect URL returned as result of creating the trial user.
    */
    redirectUrlOrigin?: string;
    /**
    * Query parameters to be appended to the redirect URL returned as result of creating the trial user.
    */
    redirectUrlQueryParams?: string;
};
export type StartEnterpriseTrialRequestUserHasMLModelsInProductionEnum = 'yes' | 'no' | 'no, but we will soon';
export const StartEnterpriseTrialRequestUserHasMLModelsInProductionEnumValues: string[];


export type StartIntegrationSessionResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Unique integration resource identifier. Pass this to getIntegrationSessionStatus to check the status of the
    * integration session.
    */
    id: string;
};


export type StartJobResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Job identifier. Status updates will include this identifier.
    */
    id: number;
};


export type StartPerformanceCalibrationRequest = {
    /**
    * The label used to signify background noise in the impulse
    */
    backgroundNoiseLabel: string;
    /**
    * Any other labels that should be considered equivalent to background noise
    */
    otherNoiseLabels?: string[];
    /**
    * The key of an uploaded sample. If not present, a synthetic sample will be created.
    */
    uploadKey?: string;
    /**
    * The length of sample to create (required for synthetic samples)
    */
    sampleLengthMinutes?: number;
};


export type StartPostProcessingRequest = {
    variant: KerasModelVariantEnum;
    /**
    * Which dataset to use
    */
    dataset: StartPostProcessingRequestDatasetEnum;
    /**
    * Which algorithm container to use
    */
    algorithm: string;
    /**
    * Which evaluation container to use
    */
    evaluation: string;
    /**
    * The population size for the genetic algorithm
    */
    population?: number;
    /**
    * The maximum number of generations for the genetic algorithm
    */
    maxGenerations?: number;
    /**
    * The tolerance for the design space
    */
    designSpaceTolerance?: number;
    /**
    * The tolerance for the objective space
    */
    objectiveSpaceTolerance?: number;
    /**
    * The number of generations the termination criteria are averaged across
    */
    terminationPeriod?: number;
};
export type StartPostProcessingRequestDatasetEnum = 'training' | 'validation' | 'testing';
export const StartPostProcessingRequestDatasetEnumValues: string[];


export type StartSamplingRequest = {
    /**
    * Label to be used during sampling.
    */
    label: string;
    /**
    * Requested length of the sample (in ms).
    */
    lengthMs: number;
    category: RawDataCategory;
    /**
    * Interval between samples (can be calculated like `1/hz * 1000`)
    */
    intervalMs: number;
    /**
    * The sensor to sample from.
    */
    sensor?: string;
    /**
    * Text color of label displayed on supported clients. Value can be any supported CSS color value
    */
    labelColor?: string;
    /**
    * A hint to supported clients to show the number of samples currently collected
    */
    collectedSampleCount?: number;
    /**
    * A hint to supported clients to show the desired number of samples to be collected
    */
    targetSampleCount?: number;
};


export type StartSamplingResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    id?: number;
};


export type StartTensorBoardSessionRequest = {
    /**
    * IDs of learn blocks to compare in a TensorBoard session
    */
    blockIds: number[];
};


export type StartTrainingRequestAnomaly = {
    /**
    * Which axes (indexes from DSP script) to include in the training set
    */
    axes: number[];
    /**
    * Number of clusters for K-means, or number of components for GMM
    */
    clusterCount?: number;
    /**
    * DEPRECATED, use "thresholds" instead. Minimum confidence rating required before tagging as anomaly
    */
    minimumConfidenceRating: number;
    /**
    * If set, skips creating embeddings and measuring memory (used in tests)
    */
    skipEmbeddingsAndMemory?: boolean;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds?: BlockThreshold[];
};


export type StartVlmInferenceJobResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    jobId: number;
    configId: number;
};


export type StopDeviceDebugStreamRequest = {
    streamId: number;
};


export type StorageProvider = 's3' | 'google' | 'azure' | 'other' | 'edgeimpulse';
export const StorageProviderValues: string[];


export type StoreInferenceHistoryRequest = {
    summaries: {
        start: InferenceHistoryTimestamp;
        end: InferenceHistoryTimestamp;
        classificationCounter: InferenceHistoryEntry[];
        mean: InferenceHistoryEntry[];
        standardDeviation: InferenceHistoryEntry[];
        metrics: object;
    }[];
};


export type StoreSegmentLengthRequest = {
    /**
    * Last segment length in milliseconds.
    */
    segmentLength: number;
};


export type StructuredClassifyResult = {
    /**
    * For object detection. An array of bounding box arrays, (x, y, width, height), one per detection in the image.
    */
    boxes: number[][];
    /**
    * For object detection. An array of labels, one per detection in the image.
    */
    labels?: string[];
    /**
    * For object detection. An array of probability scores, one per detection in the image.
    */
    scores: number[];
    /**
    * For object detection. A score that indicates accuracy compared to the ground truth, if available.
    */
    mAP: number;
    /**
    * For FOMO. A score that combines the precision and recall of a classifier into a single metric, if available.
    */
    f1: number;
    /**
    * A measure of how many of the positive predictions made are correct (true positives).
    */
    precision: number;
    /**
    * A measure of how many of the positive cases the classifier correctly predicted, over all the positive cases.
    */
    recall: number;
    /**
    * Debug info in JSON format
    */
    debugInfoJson?: string;
};


/**
* A structured label contains a label, and the range for which this label is valid. `endIndex` is inclusive. E.g. `{
* startIndex: 10, endIndex: 13, label: 'running' }` means that the values at index 10, 11, 12, 13 are labeled 'running'.
* To get time codes you can multiple by the sample's `intervalMs` property.
*/
export type StructuredLabel = {
    /**
    * Start index of the label (e.g. 0)
    */
    startIndex: number;
    /**
    * End index of the label (e.g. 3). This value is inclusive, so { startIndex: 0, endIndex: 3 } covers 0, 1, 2, 3.
    */
    endIndex: number;
    /**
    * The label for this section.
    */
    label: string;
    labelMap?: SampleLabelMapLabels;
};


export type TargetConstraints = {
    /**
    * A type explaining how the target was chosen. If updating this manually, use the 'user-configured' type
    */
    selectedTargetBasedOn?: TargetConstraintsSelectedTargetBasedOnEnum;
    /**
    * The potential targets for the project, where each entry captures hardware attributes that allow target guidance
    * throughout the Studio workflow. The first target in the list is considered as the selected target for the project.
    */
    targetDevices: TargetConstraintsDevice[];
    /**
    * A list of application budgets to be configured based on target device. An application budget enables guidance on
    * performance and resource usage. The first application budget in the list is considered as the selected budget for
    * the project.
    */
    applicationBudgets: ApplicationBudget[];
};
export type TargetConstraintsSelectedTargetBasedOnEnum = 'user-configured' | 'default' | 'default-accepted' | 'recent-project' | 'connected-device';
export const TargetConstraintsSelectedTargetBasedOnEnumValues: string[];


export type TargetConstraintsDevice = {
    /**
    * Target processors
    */
    processors?: TargetProcessor[];
    /**
    * The exact dev board part number, if available
    */
    board?: string;
    /**
    * Display name in Studio
    */
    name?: string;
    /**
    * MCU identifier, if available
    */
    latencyDevice?: string;
};


/**
* RAM and ROM specifications of target
*/
export type TargetMemory = {
    ram?: MemorySpec;
    rom?: MemorySpec;
};


export type TargetProcessor = {
    /**
    * The exact part number, if available
    */
    part?: string;
    /**
    * Processor type, serving as a broad descriptor for the intended use-case
    */
    format?: string;
    /**
    * Processor family, informing about the processor's instruction set and core design
    */
    architecture?: string;
    /**
    * Processor architecture, informing about the specific processor, if known
    */
    specificArchitecture?: string;
    /**
    * Target accelerator, if any
    */
    accelerator?: string;
    /**
    * Does the target processor have a floating point unit
    */
    fpu?: boolean;
    clockRateMhz?: ResourceRange;
    memory?: TargetMemory;
};


export type TestAddMockModelMonitoringDataRequest = {
    deploymentId: number;
    intervalMs: number;
    dataPointsToGenerate: number;
    startTimestamp?: number;
    /**
    * Optional list of device IDs to generate data for. If undefined, data will be generated for all existing project
    * devices.
    */
    devices?: string[];
};


export type TestPretrainedModelImagesRequest = {
    /**
    * A base64 encoded input image file
    */
    imageFileBase64: string;
    input: {
        resizeMode: ImageInputResizeMode;
        inputScaling: ImageInputScaling;
    };
    model: DeployPretrainedModelModelClassification | DeployPretrainedModelModelRegression | DeployPretrainedModelModelObjectDetection | DeployPretrainedModelModelFreeform | DeployPretrainedModelModelAnomaly | DeployPretrainedModelModelVisualAnomaly;
};


export type TestPretrainedModelRequest = {
    features: number[];
    modelInfo: DeployPretrainedModelRequestModelInfo;
};


export type TestPretrainedModelResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Classification value per label. For a neural network this will be the confidence, for anomalies the anomaly score.
    */
    result?: {
        [key: string]: number;
    };
    boundingBoxes?: BoundingBoxWithScore[];
    freeformResult?: {
        outputTensors: {
            shape: number[];
            dataType: TestPretrainedModelResponseAllOfFreeformResultOutputTensorsDataTypeEnum;
            data: number[];
        }[];
    };
    /**
    * Anomaly scores and computed metrics for visual anomaly detection, one item per window.
    */
    anomalyResult?: AnomalyResult[];
};
export type TestPretrainedModelResponseAllOfFreeformResultOutputTensorsDataTypeEnum = 'int8' | 'uint8' | 'float32';
export const TestPretrainedModelResponseAllOfFreeformResultOutputTensorsDataTypeEnumValues: string[];


export type TestWebhookDestinationResponse = {
    /**
    * Whether the test webhook request was successfully sent and received by the endpoint.
    */
    success: boolean;
    /**
    * If the test webhook request failed, this field contains the error message or reason for failure.
    */
    error?: string;
    /**
    * The delivery status of the test webhook request (e.g., 200 for success, 400 for bad request, etc.). If the request
    * failed to be sent at all (e.g., due to network error), this field may be null and the 'error' field will contain
    * the error message.
    */
    deliveryStatus: number;
    /**
    * The response time of the endpoint in milliseconds.
    */
    responseTimeMs: number;
};


export type Theme = {
    id: number;
    ownerUserId?: number;
    ownerOrganizationId?: number;
    name: string;
    favicon: {
        favicon32?: string;
        favicon57?: string;
        favicon76?: string;
        favicon96?: string;
        favicon120?: string;
        favicon128?: string;
        favicon144?: string;
        favicon152?: string;
        favicon180?: string;
        favicon228?: string;
    };
    logos: {
        primary?: string;
        primaryPng?: string;
        primaryWhite?: string;
        loginLogo?: string;
        loginLogoWhite?: string;
        mark?: string;
        markWhite?: string;
        deviceLogo?: string;
    };
    colors: {
        primaryColor?: string;
        primaryColorRgb?: number[];
        primaryColorGradientEnd?: string;
    };
};


export type ThirdPartyAuth = {
    id: number;
    name: string;
    description: string;
    logo: string;
    domains: string[];
    created: Date;
};


/**
* Current value of the threshold
*/
export type ThresholdValue = string | number;


export type TimeSeriesDataPoint = {
    timestamp: Date;
    value: number;
};


export type TrackObjectsRequest = {
    sourceSampleId: number;
    nextSampleId: number;
};


export type TrackObjectsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    boundingBoxes: BoundingBox[];
};


export type TransferLearningModel = {
    name: string;
    shortName: string;
    abbreviatedName?: string;
    description: string;
    hasNeurons: boolean;
    hasDropout: boolean;
    defaultNeurons?: number;
    defaultDropout?: number;
    defaultLearningRate?: number;
    defaultTrainingCycles?: number;
    hasImageAugmentation?: boolean;
    type: KerasVisualLayerType;
    learnBlockType: LearnBlockType;
    organizationModelId?: number;
    implementationVersion?: number;
    /**
    * URL to the source code of this custom learn block.
    */
    repositoryUrl?: string;
    author: string;
    blockType: BlockType;
    customParameters?: DSPGroupItem[];
    displayCategory?: BlockDisplayCategory;
    /**
    * If this object is set, then you can no longer train this block. The reason (or a migration path) is in the
    * `reasonMarkdown` and `reasonHtml` properties.
    */
    blockNoLongerAvailable?: {
        /**
        * Reason or migration path for current users of this block, in Markdown format.
        */
        reasonMarkdown: string;
        /**
        * Reason or migration path for current users of this block, in HTML format.
        */
        reasonHtml: string;
    };
    /**
    * Whether this block can be switched to expert mode.
    */
    hasExpertMode: boolean;
};


export type TransferOwnershipOrganizationRequest = {
    organizationId: number;
};


export type TransformationBlockAdditionalMountPoint = {
    type: TransformationBlockAdditionalMountPointTypeEnum;
    bucketId?: number;
    portalId?: number;
    mountPoint: string;
};
export type TransformationBlockAdditionalMountPointTypeEnum = 'bucket' | 'portal';
export const TransformationBlockAdditionalMountPointTypeEnumValues: string[];


export type TransformationJobOperatesOnEnum = 'file' | 'directory' | 'standalone';
export const TransformationJobOperatesOnEnumValues: string[];


export type TransformationJobStatusEnum = 'waiting' | 'created' | 'started' | 'finished' | 'failed';
export const TransformationJobStatusEnumValues: string[];


/**
* Represents an entity (either an organization, a user or a project) that has been moved to the trash bin. The entity
* must have either an organizationId, a userId or a projectId, but not multiple of them. At least one of these IDs must
* be present.
*/
export type TrashBinEntity = {
    /**
    * The ID of the entity in the trash bin. This is not the same as the user, project or organization ID.
    */
    id: number;
    /**
    * The ID of the organization in the trash bin. This should only be set if the entity is an organization (userId and
    * projectId should be null in this case).
    */
    organizationId?: number;
    /**
    * The ID of the user in the trash bin. This should only be set if the entity is a user (organizationId and projectId
    * should be null in this case).
    */
    userId?: number;
    /**
    * The ID of the project in the trash bin. This should only be set if the entity is a project (organizationId and
    * userId should be null in this case).
    */
    projectId?: number;
    /**
    * The name of the entity in the trash bin.
    */
    name: string;
    /**
    * The timestamp when the entity was moved to the trash bin.
    */
    deletedAt: Date;
    /**
    * The timestamp when the entity was permanently deleted.
    */
    fullyDeletedAt?: Date;
    /**
    * The email of the user that requested the deletion.
    */
    deletionRequestedByUserEmail: string;
};


export type TunerBlock = {
    type: string;
    title: string;
    blockType: BlockType;
    author?: string;
    description?: string;
    name?: string;
    recommended?: boolean;
    organizationModelId?: number;
    params?: {
        [key: string]: DSPGroupItem;
    };
    defaultConfig?: object;
    variants?: {
        [key: string]: {
            title?: string;
            key?: string;
            regression?: boolean;
            objectDetection?: boolean;
            projectDataType?: string;
            searchSpaceTemplates?: {
                template?: string;
                group?: string;
                blocks?: {
                    input?: {
                        type?: string;
                        variant?: string;
                        params?: object;
                    };
                    dsp?: {
                        type?: string;
                        variant?: string;
                        params?: object;
                    };
                    learn?: {
                        type?: string;
                        variant?: string;
                        params?: object;
                    };
                };
            }[];
            params?: {
                [key: string]: object[];
            };
        };
    };
};


export type TunerCompleteSearch = {
    success: boolean;
};


export type TunerCreateTrialImpulse = {
    id?: string;
    experiment?: string;
    original_trial_id?: string;
    optimizationRound?: number;
    inputBlocks?: any[];
    dspBlocks?: any[];
    learnBlocks?: any[];
};


export type TunerRun = {
    tunerJobId: number;
    tunerCoordinatorJobId: number;
    index: number;
    name?: string;
    created: Date;
    jobStatus: JobStatus;
    continuationJobId?: number;
    /**
    * List of impulses specifying the EON Tuner search space
    */
    space?: TunerSpaceImpulse[];
    /**
    * Whether the run is visible in the UI
    */
    visible: boolean;
};


export type TunerSpaceImpulse = {
    /**
    * Hyperparameters with potential values that can be used in any block in this impulse
    */
    parameters?: object;
    /**
    * Input Blocks that are part of this impulse
    */
    inputBlocks: any[];
    /**
    * DSP Blocks that are part of this impulse
    */
    dspBlocks: any[];
    /**
    * Learning Blocks that are part of this impulse
    */
    learnBlocks: any[][];
};


export type TunerTrial = {
    id: string;
    name: string;
    status: TunerTrialStatusEnum;
    lastCompletedEpoch?: Date;
    lastCompletedTraining?: Date;
    retries?: number;
    currentEpoch?: number;
    workerId?: string;
    blocks: {
        id: number;
        lastActive?: Date;
        retries: number;
        status: TunerTrialBlocksStatusEnum;
        type: TunerTrialBlocksTypeEnum;
        /**
        * Index of corresponding DSP/learn block in the impulse model passed to createTrial()
        */
        modelBlockIndex?: number;
    }[];
    impulse: TunerTrialImpulse;
    experiment?: string;
    original_trial_id?: string;
    model?: {
        [key: string]: object;
    };
    dspJobId?: {
        training?: number;
        testing?: number;
    };
    learnJobId?: number;
    devicePerformance?: {
        [key: string]: object;
    };
    optimizationRound?: number;
    progress?: {
        epoch: number;
        loss: number;
        val_loss: number;
        accuracy: number;
        val_accuracy: number;
    };
    metrics?: {
        test?: {
            float32?: KerasModelMetadataMetrics;
            int8?: KerasModelMetadataMetrics;
        };
        train?: {
            float32?: KerasModelMetadataMetrics;
            int8?: KerasModelMetadataMetrics;
        };
        validation?: {
            float32?: KerasModelMetadataMetrics;
            int8?: KerasModelMetadataMetrics;
        };
    };
    impulseAddedToProject?: {
        impulseId: number;
        link: string;
    };
    createdInPostProcessing?: boolean;
};
export type TunerTrialStatusEnum = 'pending' | 'running' | 'completed' | 'failed';
export const TunerTrialStatusEnumValues: string[];
export type TunerTrialBlocksStatusEnum = 'pending' | 'running' | 'completed' | 'failed';
export const TunerTrialBlocksStatusEnumValues: string[];
export type TunerTrialBlocksTypeEnum = 'input' | 'dsp' | 'learn';
export const TunerTrialBlocksTypeEnumValues: string[];


export type TunerTrialImpulse = {
    inputBlocks?: any[];
    dspBlocks?: any[];
    learnBlocks?: any[];
};


/**
* The type of in-product guided tutorial to show in the getting started wizard
*/
export type TutorialType = 'kws' | 'cv';
export const TutorialTypeValues: string[];


export type UpdateAIActionRequest = {
    /**
    * User-provided name. If no name is set then displayName on the action will be automatically configured based on the
    * transformation block.
    */
    name?: string;
    steps: AIActionsConfigStep[];
    dataCategory: AIActionsDataCategory;
    /**
    * Metadata key to filter on. Required if dataCategory is equal to "dataWithoutMetadataKey" or "dataWithMetadata".
    */
    dataMetadataKey?: string;
    /**
    * Metadata value to filter on. Required if dataCategory is equal to "dataWithMetadata".
    */
    dataMetadataValue?: string;
    /**
    * After the action runs, add this key/value pair as metadata on the affected samples.
    */
    setMetadataAfterRunning: DspAutotunerResultsAllOfResults[];
    /**
    * Numeric value (1..n) where this action should be shown in the action list (and in which order the actions should
    * run when started from a data source).
    */
    sortOrder?: number;
};


export type UpdateDatasetVersionRequest = {
    description: string;
};


export type UpdateEventSubscriptionRequest = {
    /**
    * Monitoring event type to subscribe to.
    */
    eventType?: string;
    /**
    * Optional webhook destination ID to route this event subscription to. Set to null to detach.
    */
    webhookId?: string | null;
    /**
    * Optional description for this event subscription.
    */
    description?: string;
    /**
    * Whether this event subscription is enabled.
    */
    enabled?: boolean;
    /**
    * Optional key-value pair filters applied to event metadata for this destination.
    */
    metadataFilters?: {
        [key: string]: string;
    };
};


export type UpdateImpulseRequest = {
    name?: string;
    tags?: string[];
    type?: ImpulseType;
};


export type UpdateJobRequest = {
    /**
    * The IDs of users who should be notified when a job is finished.
    */
    jobNotificationUids?: number[];
};


export type UpdateOrganizationAddCollaboratorRequest = {
    /**
    * The ID of the project to add the collaborator to.
    */
    projectId: number;
    /**
    * The user ID to add to the project. The user must be an admin of the organization.
    */
    userId: number;
};


export type UpdateOrganizationBucketRequest = {
    /**
    * S3 access key
    */
    accessKey?: string;
    /**
    * S3 secret key
    */
    secretKey?: string;
    /**
    * S3 endpoint
    */
    endpoint?: string;
    /**
    * S3 bucket
    */
    bucket?: string;
    /**
    * S3 region
    */
    region?: string;
    /**
    * Set this if you don't have access to the root of this bucket. Only used to verify connectivity to this bucket.
    */
    checkConnectivityPrefix?: string;
    /**
    * The name of the storage account for Azure Blob Storage
    */
    storageAccountName?: string;
};


export type UpdateOrganizationCreateEmptyProjectRequest = {
    /**
    * The name of the project.
    */
    projectName: string;
    projectVisibility?: ProjectVisibility;
    /**
    * The username or email of the owner of the project. This field is mandatory when authenticating via API key. If no
    * email is provided when authenticating via JWT, the user ID attached to the JWT will be user as project owner.
    */
    projectOwnerUsernameOrEmail?: string;
    /**
    * Whether to show the getting started wizard use-case chooser screen after the project is created
    */
    showGettingStartedWizard?: boolean;
    tutorialKey?: TutorialType;
    /**
    * Whether to create an API key. If set to FALSE, the "apiKey" property on the response will be empty. If this field
    * is not set, it will default to TRUE.
    */
    createApiKey?: boolean;
};


export type UpdateOrganizationCreateProjectRequest = {
    /**
    * Number of transformation jobs that can be ran in parallel
    */
    transformationParallel?: number;
    /**
    * List of user IDs to notify when a Job succeeds
    */
    emailRecipientUids?: number[];
};


export type UpdateOrganizationDataCampaignDashboardRequest = {
    name?: string;
    /**
    * List of user IDs to notify for this dashboard (sent daily)
    */
    emailRecipientUids?: number[];
    whenToEmail?: UpdateOrganizationDataCampaignDashboardRequestWhenToEmailEnum;
    showNoOfDays?: number;
};
export type UpdateOrganizationDataCampaignDashboardRequestWhenToEmailEnum = 'always' | 'on_changes' | 'never';
export const UpdateOrganizationDataCampaignDashboardRequestWhenToEmailEnumValues: string[];


export type UpdateOrganizationDataCampaignRequest = {
    dataCampaignDashboardId?: number;
    name?: string;
    /**
    * List of user IDs that coordinate this campaign
    */
    coordinatorUids?: number[];
    logo?: string;
    description?: string;
    queries?: DataCampaignQuery[];
    links?: DataCampaignLink[];
    datasets?: string[];
    pipelineIds?: number[];
    projectIds?: number[];
};


export type UpdateOrganizationDataItemRequest = {
    name?: string;
    dataset?: string;
    metadata?: {
        [key: string]: string;
    };
};


export type UpdateOrganizationDatasetRequest = {
    dataset?: string;
    tags?: string[];
    category?: string;
    type?: OrganizationDatasetTypeEnum;
    bucket?: {
        /**
        * Bucket ID
        */
        id: number;
        /**
        * Path in the bucket
        */
        path: string;
        /**
        * Number of levels deep for data items, e.g. if you have folder "test/abc", with value 1 "test" will be a data
        * item,
        * with value 2 "test/abc" will be a data item. Only used for "clinical" datasets.
        */
        dataItemNamingLevelsDeep: number;
    };
};


export type UpdateOrganizationDeployBlockRequest = {
    name?: string;
    dockerContainer?: string;
    description?: string;
    cliArguments?: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    photo?: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    integrateUrl?: string;
    privileged?: boolean;
    mountLearnBlock?: boolean;
    supportsEonCompiler?: boolean;
    showOptimizations?: boolean;
    category?: UpdateOrganizationDeployBlockRequestCategoryEnum;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly?: boolean;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
};
export type UpdateOrganizationDeployBlockRequestCategoryEnum = 'library' | 'firmware';
export const UpdateOrganizationDeployBlockRequestCategoryEnumValues: string[];


export type UpdateOrganizationDspBlockRequest = {
    name?: string;
    dockerContainer?: string;
    description?: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    port?: number;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly?: boolean;
};


export type UpdateOrganizationPortalResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * URL to the portal
    */
    url: string;
    /**
    * pre-signed upload URL, only set if not using the Edge Impulse hosted bucket.
    */
    signedUrl?: string;
    /**
    * Only set if not using the Edge Impulse hosted bucket.
    */
    bucketBucket?: string;
};


/**
* Only fields set in this object will be updated.
*/
export type UpdateOrganizationRequest = {
    /**
    * New logo URL, or set to `null` to remove the logo.
    */
    logo?: string;
    /**
    * New leader image URL, or set to `null` to remove the leader.
    */
    headerImg?: string;
    showHeaderImgMask?: boolean;
    /**
    * New organization name.
    */
    name?: string;
    experiments?: string[];
    /**
    * Readme for the organization (in Markdown)
    */
    readme?: string;
    /**
    * New job limit in seconds.
    */
    jobLimitM?: number;
};


export type UpdateOrganizationTransferLearningBlockRequest = {
    name?: string;
    dockerContainer?: string;
    description?: string;
    operatesOn?: OrganizationTransferLearningOperatesOn;
    objectDetectionLastLayer?: ObjectDetectionLastLayer;
    implementationVersion?: number;
    /**
    * Whether this block is publicly available to Edge Impulse users (if false, then only for members of the owning
    * organization)
    */
    isPublic?: boolean;
    /**
    * If `isPublic` is true, the list of devices (from latencyDevices) for which this model can be shown.
    */
    isPublicForDevices?: string[];
    publicProjectTierAvailability?: PublicProjectTierAvailability;
    /**
    * URL to the source code of this custom learn block.
    */
    repositoryUrl?: string;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
    imageInputScaling?: ImageInputScaling;
    /**
    * If set, requires this block to be scheduled on GPU.
    */
    indRequiresGpu?: boolean;
    displayCategory?: BlockDisplayCategory;
    /**
    * List of custom model variants produced when this block is trained. This is experimental and may change in the
    * future.
    */
    customModelVariants?: OrganizationTransferLearningBlockCustomVariant[];
    /**
    * If set, then this block is no longer available for training; and blockNoLongerAvailableReason should be set.
    */
    indBlockNoLongerAvailable?: boolean;
    /**
    * In Markdown format. Should be set if `indBlockNoLongerAvailable` is true, contains migration information for
    * existing users of this block.
    */
    blockNoLongerAvailableReason?: string;
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly?: boolean;
};


export type UpdateOrganizationTransformationBlockRequest = {
    name?: string;
    dockerContainer?: string;
    /**
    * Whether to pass the `--metadata` parameter to the container.
    */
    indMetadata?: boolean;
    description?: string;
    cliArguments?: string;
    requestsCpu?: number;
    requestsMemory?: number;
    limitsCpu?: number;
    limitsMemory?: number;
    additionalMountPoints?: TransformationBlockAdditionalMountPoint[];
    operatesOn?: TransformationJobOperatesOnEnum;
    allowExtraCliArguments?: boolean;
    /**
    * List of parameters, spec'ed according to
    * https://docs.edgeimpulse.com/docs/tips-and-tricks/adding-parameters-to-custom-blocks
    */
    parameters?: object[];
    /**
    * 15m for 15 minutes, 2h for 2 hours, 1d for 1 day. If not set, the default is 8 hours.
    */
    maxRunningTimeStr?: string;
    isPublic?: boolean;
    publicProjectTierAvailability?: PublicProjectTierAvailability;
    /**
    * URL to the source code of this custom learn block.
    */
    repositoryUrl?: string;
    /**
    * Whether to show this block in 'Data sources'. Only applies for standalone blocks.
    */
    showInDataSources?: boolean;
    /**
    * Whether to show this block in 'Create transformation job'. Only applies for standalone blocks.
    */
    showInCreateTransformationJob?: boolean;
    /**
    * Whether to show this block in 'Synthetic data'. Only applies for standalone blocks.
    */
    showInSyntheticData?: boolean;
    /**
    * Whether to show this block in 'AI Labeling'. Only applies for standalone blocks.
    */
    showInAIActions?: boolean;
    environmentVariables?: EnvironmentVariable[];
    /**
    * For AI labeling blocks, this lists the data types that the block supports. If this field is empty then there's no
    * information about supported data types.
    */
    aiActionsOperatesOn?: AIActionsOperatesOn[];
    /**
    * Whether the source code is only available for staff users.
    */
    sourceCodeDownloadStaffOnly?: boolean;
};


/**
* Only fields set in this object will be updated.
*/
export type UpdateProjectRequest = {
    /**
    * New logo URL, or set to `null` to remove the logo.
    */
    logo?: string;
    /**
    * New project name.
    */
    name?: string;
    description?: string;
    projectVisibility?: ProjectVisibility;
    /**
    * If the project allows public access, whether to list it the public projects overview response. If not listed, the
    * project is still accessible via direct link. If the project does not allow public access, this field has no
    * effect.
    */
    publicProjectListed?: boolean;
    /**
    * Call this when clicking the Eon compiler setting
    */
    lastDeployEonCompiler?: boolean;
    lastDeployModelEngine?: ModelEngineShortEnum;
    /**
    * MCU used for calculating latency
    */
    latencyDevice?: string;
    experiments?: string[];
    /**
    * Whether to show the 'Create your first impulse' section on the dashboard
    */
    showCreateFirstImpulse?: boolean;
    labelingMethod?: ProjectLabelingMethod;
    /**
    * Which option was selected in the project type wizard
    */
    selectedProjectTypeInWizard?: UpdateProjectRequestSelectedProjectTypeInWizardEnum;
    /**
    * The next step in the getting started wizard, or set to -1 to clear the getting started wizard
    */
    gettingStartedStep?: number;
    gettingStartedTutorial?: TutorialType;
    /**
    * Classes or labels used in the getting started wizard
    */
    gettingStartedClasses?: string[];
    /**
    * Whether to use GPU for training
    */
    useGpu?: boolean;
    /**
    * Job limit in minutes
    */
    computeTimeLimitM?: number;
    /**
    * DSP file size in MB
    */
    dspFileSizeMb?: number;
    enterprisePerformance?: boolean;
    /**
    * Amount of RAM allocated to training jobs
    */
    trainJobRamMb?: number;
    /**
    * New metadata about the project
    */
    metadata?: object;
    /**
    * Readme for the project (in Markdown)
    */
    readme?: string;
    lastAcquisitionLabel?: string;
    /**
    * The IDs of users who should be notified when a Keras or retrain job is finished.
    */
    trainJobNotificationUids?: number[];
    /**
    * The IDs of users who should be notified when a DSP job is finished.
    */
    dspJobNotificationUids?: number[];
    /**
    * The IDs of users who should be notified when a model testing job is finished.
    */
    modelTestingJobNotificationUids?: number[];
    /**
    * The IDs of users who should be notified when an export job is finished.
    */
    exportJobNotificationUids?: number[];
    /**
    * Config file specifying how to process CSV files. (set to null to clear the config)
    */
    csvImportConfig?: object;
    /**
    * DEPRECATED. To enable the pretrained model flow, set the impulse type property to "BYOM" instead.
    */
    inPretrainedModelFlow?: boolean;
    /**
    * Set to '0' to disable DSP paging
    */
    dspPageSize?: number;
    /**
    * Used to override window job concurrency used during feature generation. This option is experimental and may change
    * in the future.
    */
    windowJobConcurrency?: number;
    /**
    * Used in tests, to ensure samples that need to be processed async are not picked up until the flag is set to FALSE
    * again.
    */
    indPauseProcessingSamples?: boolean;
    /**
    * Whether to show the actual sensor data in acquisition charts (only applies when you have structured labels)
    */
    showSensorDataInAcquisitionGraph?: boolean;
    /**
    * Which deployment target was last selected (used to populate this deployment target again the next time you visit
    * the deployment page). Should match the _format_ property of the response from listDeploymentTargetsForProject.
    */
    lastDeploymentTarget?: string;
    /**
    * Default page size on data acquisition
    */
    dataAcquisitionPageSize?: number;
    /**
    * Default view type on data acquisition
    */
    dataAcquisitionViewType?: UpdateProjectRequestDataAcquisitionViewTypeEnum;
    /**
    * Number of grid columns in non-detailed view on data acquisition
    */
    dataAcquisitionGridColumnCount?: number;
    /**
    * Number of grid columns in detailed view on data acquisition
    */
    dataAcquisitionGridColumnCountDetailed?: number;
    /**
    * If enabled, does not round sample length to hours/minutes/seconds, but always displays sample length in
    * milliseconds. E.g. instead of 1m 32s, this'll say 92,142ms.
    */
    showExactSampleLength?: boolean;
    /**
    * If enabled, allows editing bounding box labels directly from the acquisition UI.
    */
    inlineEditBoundingBoxes?: boolean;
    defaultProfilingVariant?: KerasModelVariantEnum;
    /**
    * Set of model variants enabled by default on the model testing and live classification pages.
    */
    enabledModelProfilingVariants?: KerasModelVariantEnum[];
    /**
    * Which core metrics should be hidden in the impulse list. See 'GetAllDetailedImpulsesResponse' for a list of all
    * metrics.
    */
    impulseListCoreMetricsHiddenColumns?: string[];
    /**
    * Which additional metrics should be shown in the impulse list. See 'GetAllDetailedImpulsesResponse' for a list of
    * all metrics.
    */
    impulseListAdditionalMetricsShownColumns?: string[];
    /**
    * Which extra columns should be shown in the impulse list.
    */
    impulseListExtraColumns?: string[];
    /**
    * Number of grid columns in AI Actions
    */
    aiActionsGridColumnCount?: number;
    lastShownModelEngine?: ModelEngineShortEnum;
    versioningStorageSizeMib?: number;
    anomalyLabelsConfig?: AnomalyLabelsConfig;
};
export type UpdateProjectRequestSelectedProjectTypeInWizardEnum = 'accelerometer' | 'audio' | 'image_classification' | 'object_detection' | 'something_else';
export const UpdateProjectRequestSelectedProjectTypeInWizardEnumValues: string[];
export type UpdateProjectRequestDataAcquisitionViewTypeEnum = 'list' | 'grid';
export const UpdateProjectRequestDataAcquisitionViewTypeEnumValues: string[];


export type UpdateProjectTagsRequest = {
    tags: string[];
};


/**
* Only fields set in this object will be updated.
*/
export type UpdateThemeColorsRequest = {
    /**
    * Primary color in hex format
    */
    primaryColor?: string;
    /**
    * Primary color gradient end in hex format
    */
    primaryColorGradientEnd?: string;
};


/**
* Only fields set in this object will be updated.
*/
export type UpdateThemeLogosRequest = {
    /**
    * Primary logo URL
    */
    primary?: string;
    /**
    * Primary logo for dark background URL
    */
    primaryWhite?: string;
    /**
    * Login logo URL
    */
    login?: string;
    /**
    * Login logo for dark background URL
    */
    loginWhite?: string;
    /**
    * Mark URL
    */
    mark?: string;
    /**
    * Mark for dark background URL
    */
    markWhite?: string;
    /**
    * Device logo URL
    */
    deviceLogo?: string;
};


export type UpdateThirdPartyAuthRequest = {
    name?: string;
    description?: string;
    logo?: string;
    domains?: string[];
};


export type UpdateTunerRunRequest = {
    name?: string;
};


/**
* Only fields set in this object will be updated.
*/
export type UpdateUserRequest = {
    /**
    * New full name
    */
    name?: string;
    /**
    * New job title
    */
    jobTitle?: string;
    /**
    * New company name
    */
    companyName?: string;
    /**
    * List of user experiments
    */
    experiments?: string[];
    projectsSortOrder?: UserProjectsSortOrder;
    /**
    * User timezone.
    */
    timezone?: string;
};


export type UpdateVersionRequest = {
    description?: string;
};


export type UpdateWebhookDestinationRequest = {
    /**
    * The URL to send the webhook POST requests to. Must start with https://.
    */
    url?: string;
    /**
    * Optional description for the webhook destination.
    */
    description?: string;
    /**
    * Whether the webhook destination is currently enabled.
    */
    enabled?: boolean;
};


export type UpdateWhitelabelDefaultDeploymentTargetRequest = {
    /**
    * Name of the default deployment target
    */
    defaultDeploymentTarget: string | null;
};


export type UpdateWhitelabelDeploymentOptionsOrderRequest = {
    /**
    * Optional attribute allowing a whitelabel to customize the order of deployment options in the deployment view,
    * given as an in-order list of deployment options.
    */
    order?: string[];
};


export type UpdateWhitelabelDeploymentTargetsRequest = {
    /**
    * The names of the deployment targets that are enabled for this whitelabel.
    */
    targets?: string[];
};


export type UpdateWhitelabelInternalRequest = {
    /**
    * The maximum number of organizations that can be created under this white label.
    */
    organizationsLimit?: number | null;
    /**
    * Controls whether public entities (like projects, user profiles, etc.) are disabled for this whitelabel instance.
    */
    disablePublicEntities?: boolean;
    /**
    * Controls whether marketing features (marketing cookies, HubSpot tracking, etc.) are disabled for this whitelabel
    * instance.
    */
    disableMarketingFeatures?: boolean;
    /**
    * Controls whether forum access is disabled for this whitelabel instance.
    */
    disableForumAccess?: boolean;
    /**
    * Custom limits for this whitelabel instance.
    */
    customLimits?: object;
};


export type UpdateWhitelabelLearningBlocksRequest = {
    /**
    * The types of the learning blocks that are enabled for this whitelabel.
    */
    learningBlocks?: string[];
};


/**
* Only fields set in this object will be updated.
*/
export type UpdateWhitelabelRequest = {
    supportedProjectTypes?: ProjectType[];
};


export type UpgradeSubscriptionRequest = {
    billingCycle: BillingCycle;
    /**
    * URL to redirect the user to after a successful checkout process.
    */
    successUrl: string;
    /**
    * URL to redirect the user to after the checkout process is canceled.
    */
    cancelUrl: string;
};


export type UploadAssetRequest = {
    image?: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type UploadAssetResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    url?: string;
};


export type UploadCsvWizardUploadedFileRequest = {
    file: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type UploadCustomBlockRequest = {
    tar: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    type: UploadCustomBlockRequestTypeEnum;
    blockId: number;
};
export type UploadCustomBlockRequestTypeEnum = 'transform' | 'deploy' | 'dsp' | 'transferLearning';
export const UploadCustomBlockRequestTypeEnumValues: string[];


export type UploadImageRequest = {
    image: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type UploadKerasFilesRequest = {
    zip: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type UploadPretrainedModelByUrlRequest = {
    modelFileUrl: string;
    modelFileName: string;
    modelFileType: UploadPretrainedModelByUrlRequestModelFileTypeEnum;
    representativeFeatures?: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    /**
    * MCU used for calculating latency, query `latencyDevices` in `listProject` for a list of supported devices (and use
    * the "mcu" property here). If this is kept empty then we'll show an overview of multiple devices.
    */
    device?: string;
    /**
    * Optional for ONNX files: overrides the input shape of the model. This is highly suggested if the model has dynamic
    * dimensions. If this field is not set, then all dynamic dimensions will be set to '1'.
    */
    overrideInputShape?: number[];
};
export type UploadPretrainedModelByUrlRequestModelFileTypeEnum = 'tflite' | 'onnx' | 'saved_model';
export const UploadPretrainedModelByUrlRequestModelFileTypeEnumValues: string[];


export type UploadPretrainedModelRequest = {
    modelFile: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    modelFileName: string;
    modelFileType: UploadPretrainedModelRequestModelFileTypeEnum;
    representativeFeatures?: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
    /**
    * MCU used for calculating latency, query `latencyDevices` in `listProject` for a list of supported devices (and use
    * the "mcu" property here). If this is kept empty then we'll show an overview of multiple devices.
    */
    device?: string;
    /**
    * Optional for ONNX files: overrides the input shape of the model. This is highly suggested if the model has dynamic
    * dimensions. If this field is not set, then all dynamic dimensions will be set to '1'.
    */
    overrideInputShape?: number[];
};
export type UploadPretrainedModelRequestModelFileTypeEnum = 'tflite' | 'onnx' | 'saved_model';
export const UploadPretrainedModelRequestModelFileTypeEnumValues: string[];


export type UploadReadmeImageResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    url: string;
};


export type UploadUserPhotoRequest = {
    photo: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type UploadUserPhotoResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    url: string;
};


export type UploadVersionArchiveRequest = {
    zip: {
        fieldname: string;
        originalname: string;
        encoding: string;
        mimetype: string;
        buffer: ArrayBuffer;
        size: number;
    }[];
};


export type User = {
    id: number;
    username: string;
    name: string;
    email: string;
    photo?: string;
    created: Date;
    lastSeen?: Date;
    staffInfo: StaffInfo;
    pending: boolean;
    jobTitle?: string;
    /**
    * List of permissions the user has
    */
    permissions?: Permission[];
    companyName?: string;
    /**
    * Whether the user has activated their account or not.
    */
    activated: boolean;
    /**
    * Whether the user has configured multi-factor authentication
    */
    mfaConfigured: boolean;
    /**
    * Stripe customer ID, if any.
    */
    stripeCustomerId?: string;
    /**
    * Whether the user has pending payments.
    */
    hasPendingPayments?: boolean;
    tier?: UserTierEnum;
    /**
    * List of identity providers (e.g. Google, GitHub) that the user has used to sign in with
    */
    idps?: string[];
};


export type UserByThirdPartyActivationRequest = {
    activationCode: string;
};


export type UserDeleteTotpMfaKeyRequest = {
    /**
    * Valid TOTP token
    */
    totpToken: string;
};


export type UserDismissNotificationRequest = {
    notification: string;
};


export type UserEula = {
    name: UserEulaName;
    description: string;
    latestVersion: string;
    /**
    * Current accepted version (or undefined if none)
    */
    acceptedVersion?: string;
    link: string;
    userIsCompliant: boolean;
};


export type UserEulaName = 'brainchip' | 'syntiant';
export const UserEulaNameValues: string[];


export type UserExperiment = {
    type: string;
    title: string;
    help?: string;
    enabled: boolean;
    showToUser: boolean;
};


export type UserGenerateNewMfaKeyResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Secret key (use SHA-1).
    */
    key: string;
    /**
    * URL that will be converted into a QR code that can be scanned.
    */
    url: string;
};


export type UserOrganization = {
    id: number;
    name: string;
    logo?: string;
    isDeveloperProfile: boolean;
    /**
    * Unique identifier of the white label this project belongs to, if any.
    */
    whitelabelId: number | null;
    /**
    * Whether the user is admin of this organization or not.
    */
    isAdmin: boolean;
    /**
    * When the organization was created.
    */
    created: Date;
    /**
    * Unique identifier of the trial this organization belongs to, if any.
    */
    trialId: number | null;
    /**
    * Date when the trial expired, if any. A expired trial has a grace period of 30 days before it's associated
    * organization is deleted.
    */
    trialExpiredDate: Date | null;
    /**
    * Date when the trial was upgraded to a full enterprise account, if any.
    */
    trialUpgradedDate: Date | null;
    entitlementLimits: EntitlementLimits;
    /**
    * The total number of users that are a member of this organization.
    */
    userCount: number;
    /**
    * The number of admin users for this organization.
    */
    adminCount: number;
    /**
    * The number of private projects for this organization.
    */
    privateProjectCount: number;
    /**
    * Last time this user accessed this organization.
    */
    lastAccessed?: Date;
    /**
    * Default license for new public projects under this organization.
    */
    publicProjectLicense: {
        name: string;
        link: string;
    };
};


export type UserProjectsSortOrder = 'created-asc' | 'created-desc' | 'added-asc' | 'added-desc' | 'name-asc' | 'name-desc' | 'last-accessed-desc';
export const UserProjectsSortOrderValues: string[];


export type UserSetTotpMfaKeyRequest = {
    /**
    * Secret key obtained through `userGenerateNewMfaKey`.
    */
    key: string;
    /**
    * TOTP token that is valid for the key (to ensure the device is configured correctly)
    */
    totpToken: string;
};


export type UserSetTotpMfaKeyResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * 10 recovery codes, which can be used in case you've lost access to your MFA TOTP app. Recovery codes are single
    * use. Once you've used a recovery code once, it can not be used again.
    */
    recoveryCodes: string[];
};


export type UserSubscriptionMetricsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    metrics?: {
        /**
        * Total compute of all user jobs, running on CPU, in the current billing period.
        */
        computeMinutesCpu: number;
        /**
        * Total compute of all user jobs, running on GPU, in the current billing period.
        */
        computeMinutesGpu: number;
        /**
        * Total compute of all user jobs in the current billing period, calculated as CPU + 3*GPU compute.
        */
        computeMinutesTotal: number;
        /**
        * Overall compute limit for the current billing period.
        */
        computeMinutesLimit: number;
        /**
        * The date at which the current compute billing period will reset.
        */
        computeResetDate?: Date;
    };
    /**
    * Number of compute minutes remaining before reaching the monthly compute limit. This field is only present when the
    * user has fewer than 60 minutes left. Once the limit is reached, users can continue using compute resources by
    * subscribing to the pay-as-you-go plan.
    */
    approachingComputeLimitMinutesLeft?: number;
};


/**
* The user account tier.
*/
export type UserTierEnum = 'free' | 'community-plus' | 'professional' | 'enterprise';
export const UserTierEnumValues: string[];


export type ValidateEmailResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Email address that was checked.
    */
    email: string;
    /**
    * Classification of the email's validity status
    */
    verdict: ValidateEmailResponseVerdictEnum;
    /**
    * This number from 0 to 1 represents the likelihood the email address is valid, expressed as a percentage.
    */
    score: number;
    /**
    * A corrected domain, if a possible typo is detected.
    */
    suggestion?: string;
    /**
    * The first part of the email address (before the @ sign)
    */
    local?: string;
    /**
    * The second part of the email address (after the @ sign)
    */
    host?: string;
};
export type ValidateEmailResponseVerdictEnum = 'Valid' | 'Risky' | 'Invalid';
export const ValidateEmailResponseVerdictEnumValues: string[];


export type VerifyDspBlockUrlRequest = {
    url: string;
};


export type VerifyDspBlockUrlResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    block?: {
        title: string;
        author: string;
        description: string;
        name: string;
        latestImplementationVersion: number;
        namedAxes?: DSPNamedAxis[];
    };
};


export type VerifyEmailResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Email address that was verified.
    */
    email?: string;
    /**
    * ID of the user associated with the verified email address, if any.
    */
    userId?: number;
    /**
    * URL to redirect the user to after email verification.
    */
    redirectUrl?: string;
};


export type VerifyOrganizationBucketRequest = {
    storageProvider?: StorageProvider;
    /**
    * Access key for the storage service: - For S3 and GCS: Use the access key. - For Azure: Use the Storage Account
    * Name.
    */
    accessKey: string;
    /**
    * Secret key for the storage service: - For S3 and GCS: Use the secret key. - For Azure: Use the Storage Account
    * Access Key. Note: You should either pass a `secretKey` value or a `bucketId` value.
    */
    secretKey?: string;
    /**
    * ID of an existing bucket. If provided, the credentials from this bucket will be used unless overridden by the
    * `secretKey` property.
    */
    bucketId?: number;
    /**
    * Name of the storage bucket or container.
    */
    bucket: string;
    /**
    * Endpoint URL for the storage service. For S3-compatible services, Azure, or custom endpoints.
    */
    endpoint: string;
    /**
    * Optional region of the storage service (if applicable).
    */
    region?: string;
    /**
    * Optional prefix within the bucket. Set this if you don't have access to the full bucket or want to limit the
    * scope.
    */
    prefix?: string;
};


/**
* Response object for verifying an organization's bucket connectivity. Workflow: 1. The client initiates verification by
* sending a GET request to /api/organizations/{organizationId}/buckets/verify with bucket and credential details. 2. The
* server responds with this VerifyOrganizationBucketResponse object. 3. The client checks the connectionStatus: - If
* "connected": Verification is complete. Other properties (files, hasInfoLabelsFile, signedUrl) are available. - If
* "connecting": Verification is in progress. The client should continue polling. Other properties are not yet available.
* - If "error": Verification failed. Check connectionError for details. Other properties are not available. 4. If
* connectionStatus is "connecting", the client should periodically poll the endpoint until the status changes to
* "connected" or "error".
*/
export type VerifyOrganizationBucketResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * Indicates the current state of the connectivity verification process. - "connected": Verification successful,
    * other properties are available. - "connecting": Verification in progress, continue polling. - "error":
    * Verification failed, check connectionError for details.
    */
    connectionStatus: VerifyOrganizationBucketResponseConnectionStatusEnum;
    /**
    * Provides additional details if connectionStatus is "error". Helps diagnose verification failures.
    */
    connectionError?: string | null;
    /**
    * Timestamp of when the connectionStatus last changed.
    */
    connectionStatusSince?: Date | null;
    /**
    * Random files from the bucket. Only available when connectionStatus is "connected".
    */
    files?: {
        /**
        * The name of the file.
        */
        name: string;
        /**
        * The size of the file in bytes.
        */
        size: number;
        /**
        * The name of the folder containing the file.
        */
        folderName: string;
    }[];
    /**
    * Indicates whether there are any info.labels files in this bucket. If so, those are used for category/labels. Only
    * available when connectionStatus is "connected".
    */
    hasInfoLabelsFile?: boolean;
    /**
    * A signed URL that allows you to PUT an item, to check whether CORS headers are set up correctly for this bucket.
    * Only available when connectionStatus is "connected".
    */
    signedUrl?: string;
    /**
    * An alternative endpoint URL. Only returned and required for Azure storage accounts, where the endpoint must be
    * reformatted. This field will be undefined for other storage providers.
    */
    endpoint?: string;
};
export type VerifyOrganizationBucketResponseConnectionStatusEnum = 'connected' | 'connecting' | 'error';
export const VerifyOrganizationBucketResponseConnectionStatusEnumValues: string[];


export type VerifyOrganizationExistingBucketRequest = {
    prefix: string;
};


export type VerifyResetPasswordRequest = {
    email: string;
    code: string;
};


export type VerifySignupApprovalResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * The username associated with the signup.
    */
    username: string;
    /**
    * The email address associated with the signup.
    */
    email: string;
};


export type VlmCandidateLabelItem = {
    class: string;
    description: string;
};


export type VlmCandidateLabelMap = {
    version: number;
    candidateLabels: VlmCandidateLabelItem[];
};


export type VlmConfigResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    metadata?: VlmMetadata;
};


export type VlmConfiguration = {
    modelId: number;
    deploymentId?: number;
    candidateLabelsMap?: VlmCandidateLabelMap;
    promptComponents?: VlmPromptComponentConfig;
    parameters?: VlmPromptConfigParameters;
    /**
    * Unique configuration ID, updated each time the config is changed
    */
    configId: number;
};


export type VlmConfigurationBase = {
    modelId: number;
    deploymentId?: number;
    candidateLabelsMap?: VlmCandidateLabelMap;
    promptComponents?: VlmPromptComponentConfig;
    parameters?: VlmPromptConfigParameters;
};


export type VlmGetAllModelsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    models?: VlmModel[];
};


export type VlmGetInferenceResultsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    /**
    * VLM config ID associated with these results
    */
    configId: number;
    results: VlmInferenceResultsResults[];
};


export type VlmGetModelResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    model?: VlmModel;
};


export type VlmInferenceRequest = {
    sampleIds: number[];
    newConfig?: VlmConfigurationBase;
};


export type VlmInferenceResults = {
    /**
    * VLM config ID associated with these results
    */
    configId: number;
    results: VlmInferenceResultsResults[];
};


export type VlmInferenceResultsResults = {
    sample: Sample;
    /**
    * Classification results for the sample, or null for pending results.
    */
    result: {
        [key: string]: number;
    } | null;
};


export type VlmMetadata = {
    name: string;
    /**
    * List of configurable thresholds for this block.
    */
    thresholds?: BlockThreshold[];
    config?: VlmConfiguration;
};


export type VlmModel = {
    modelId: number;
    modelName: string;
    type: VlmModelType;
    description: string;
    /**
    * If true, the warmup endpoint may be called to prepare the model for inference
    */
    requiresWarmup?: boolean;
    /**
    * List of example prompt templates available for insertion. Each template is an array of components defining the
    * prompt text and whether the component is user-editable.
    */
    availablePromptComponents?: VlmPromptComponent[][];
    defaultParameters: DSPGroup[];
};


export type VlmModelType = 'clip' | 'vlmZeroShot';
export const VlmModelTypeValues: string[];


export type VlmPromptComponent = {
    /**
    * The text content of the prompt.
    */
    text: string;
    /**
    * Indicates whether the prompt component can be edited by the user.
    */
    userEditable: boolean;
};


export type VlmPromptComponentConfig = {
    version: number;
    promptComponents: VlmPromptComponent[];
};


export type VlmPromptConfigParamItem = {
    name: string;
    value: string;
};


export type VlmPromptConfigParameters = {
    version: number;
    modelParameters: VlmPromptConfigParamItem[];
};


export type VlmSetConfigResponse = GenericApiResponse;


export type WebhookDestination = {
    /**
    * The unique identifier of the webhook destination.
    */
    id: string;
    /**
    * The URL to which the webhook POST requests are sent.
    */
    url: string;
    /**
    * Description for the webhook destination.
    */
    description?: string;
    /**
    * Whether the webhook destination is currently enabled.
    */
    enabled?: boolean;
    /**
    * Number of consecutive failed webhook deliveries. This can be used to monitor the health of the webhook endpoint.
    */
    consecutiveFailures?: number;
    /**
    * Timestamp of when the webhook destination was created.
    */
    created?: Date;
};


export type Whitelabel = {
    id: number;
    name: string;
    domain: string;
    ownerOrganizationId?: number;
    themeId: number;
    theme?: Theme;
    identityProviders: string[];
    allowPasswordAuth: boolean;
    /**
    * List of deployment targets enabled for this white label
    */
    deploymentTargets: string[];
    /**
    * List of all supported deployment targets
    */
    allDeploymentTargets: string[];
    /**
    * List of custom deployment blocks available to this white label
    */
    customDeploymentBlocks?: {
        /**
        * The name of the custom deployment block
        */
        name: string;
        /**
        * The custom deployment block ID
        */
        id: number;
    }[];
    /**
    * Optional attribute allowing a whitelabel to customize the order of deployment options in the deployment view,
    * given as an in-order list of deployment options.
    */
    deploymentOptionsOrder?: string[];
    allowSignup: boolean;
    allowFreeProjects: boolean;
    exposePublicProjects?: boolean;
    /**
    * The name of the default deployment target for this white label
    */
    defaultDeploymentTarget?: string | null;
    supportedProjectTypes: ProjectType[];
    /**
    * Whether the new project UI should be enabled for this white label or not.
    */
    allowNewProjectUi: boolean;
    /**
    * List of learning blocks enabled for this white label
    */
    learningBlocks: string[];
    /**
    * List of all supported learning blocks
    */
    allLearningBlocks: {
        /**
        * The name of the learning block
        */
        title: string;
        /**
        * The learning block type
        */
        type: string;
    }[];
    developmentBoards: DevelopmentBoardResponse[];
    allDevelopmentBoards: DevelopmentBoardResponse[];
    /**
    * The maximum number of organizations that can be created under this white label.
    */
    organizationsLimit?: number;
    /**
    * Whether public entities (like projects, user profiles, etc.) are disabled for this whitelabel instance.
    */
    disablePublicEntities?: boolean;
    /**
    * Whether marketing features (marketing cookies, HubSpot tracking, etc.) are disabled for this whitelabel instance.
    */
    disableMarketingFeatures?: boolean;
    /**
    * Whether forum access is disabled for this whitelabel instance.
    */
    disableForumAccess?: boolean;
    /**
    * Custom limits for this whitelabel instance.
    */
    customLimits?: object;
};


export type WhitelabelAdminCreateOrganizationRequest = {
    /**
    * The name of the organization.
    */
    organizationName: string;
    /**
    * Unique identifier of the administrator of the new organization.
    */
    adminId?: number;
    /**
    * Email of the administrator of the new organization.
    */
    adminEmail?: string;
};


export type WindowSettings = {
    windowSizeMs: number;
    windowIncreaseMs: number;
    windowIncreasePct: number;
    zeroPadPercentage: number;
    windowCount: number;
    balanceScore: number;
    valid: boolean;
};


export type WindowSettingsResponse = {
    /**
    * Whether the operation succeeded
    */
    success: boolean;
    /**
    * Optional error description (set if 'success' was false)
    */
    error?: string;
    windowSettingsEvent: WindowSettings[];
    windowSettingsContinuous: WindowSettings[];
};


export type EdgeImpulseApiOpts = {
    endpoint?: string;
    debug?: boolean;
    extraHeaders?: {
        [name: string]: string;
    };
};
export type EdgeImpulseApiAuthOpts = {
    method: 'apiKey';
    apiKey: string;
} | {
    method: 'jwtToken';
    jwtToken: string;
};
export class EdgeImpulseApi {
    private _opts;
    admin: AdminApi;
    auth: AuthApi;
    classify: ClassifyApi;
    datasetVersions: DatasetVersionsApi;
    dsp: DSPApi;
    deployment: DeploymentApi;
    devices: DevicesApi;
    export: ExportApi;
    health: HealthApi;
    impulse: ImpulseApi;
    integrations: IntegrationsApi;
    jobs: JobsApi;
    learn: LearnApi;
    login: LoginApi;
    metrics: MetricsApi;
    optimization: OptimizationApi;
    organizationBlocks: OrganizationBlocksApi;
    organizationCreateProject: OrganizationCreateProjectApi;
    organizationData: OrganizationDataApi;
    organizationDataCampaigns: OrganizationDataCampaignsApi;
    organizationJobs: OrganizationJobsApi;
    organizationPipelines: OrganizationPipelinesApi;
    organizationPortals: OrganizationPortalsApi;
    organizations: OrganizationsApi;
    performanceCalibration: PerformanceCalibrationApi;
    postProcessing: PostProcessingApi;
    projects: ProjectsApi;
    rawData: RawDataApi;
    themes: ThemesApi;
    thirdPartyAuth: ThirdPartyAuthApi;
    uploadPortal: UploadPortalApi;
    user: UserApi;
    vlm: VlmApi;
    whitelabels: WhitelabelsApi;
    /**
     * Initialize the API
     * @param opts An object with { auth, endpoint }.
     */
    constructor(opts?: EdgeImpulseApiOpts);
    authenticate(opts: EdgeImpulseApiAuthOpts): Promise<void>;
    runJobUntilCompletion(opts: {
        type: 'project';
        projectId: number;
        jobId: number;
    } | {
        type: 'organization';
        organizationId: number;
        jobId: number;
    }, dataCallback?: (ev: string) => void): Promise<void>;
    private runProjectJobUntilCompletion;
    get studioHost(): string;
    private getProjectWebsocket;
    private runOrgJobUntilCompletion;
    private getOrgWebsocket;
    private sleep;
    private waitForJobImpl;
    private getWebsocketImpl;
}


export type EdgeImpulseApiConstructor = typeof EdgeImpulseApi;


export type EdgeImpulseApiModule = {
    EdgeImpulseApi: EdgeImpulseApiConstructor;
};


declare global {
    const EdgeImpulseApi: EdgeImpulseApiConstructor;
    const EdgeImpulseApiModule: EdgeImpulseApiModule;

    interface Window {
        EdgeImpulseApi: EdgeImpulseApiConstructor;
        EdgeImpulseApiModule: EdgeImpulseApiModule;
    }
}