import { AxiosInstance, AxiosRequestConfig, AxiosResponse, ResponseType } from 'axios';
export interface Coordinate {
    /** @format double */
    x?: number;
    /** @format double */
    y?: number;
    /** @format double */
    z?: number;
    coordinate?: Coordinate;
    /** @format double */
    m?: number;
}
export interface CoordinateSequence {
    /** @format int32 */
    dimension?: number;
    /** @format int32 */
    measures?: number;
}
export type CoordinateSequenceFactory = object;
export interface Envelope {
    null?: boolean;
    /** @format double */
    minX?: number;
    /** @format double */
    maxX?: number;
    /** @format double */
    minY?: number;
    /** @format double */
    maxY?: number;
    /** @format double */
    height?: number;
    /** @format double */
    width?: number;
    /** @format double */
    area?: number;
}
export interface ErrorResponse {
    userMessage?: string;
    cause?: string;
}
export interface LoginWithPasswordParams {
    login: string;
    password: string;
}
export interface UserRegion {
    uuid?: string;
    regionSymbol?: string;
}
export interface AppUser {
    /** @format int32 */
    id?: number;
    login: string;
    password?: string;
    firstName?: string;
    lastName?: string;
    description?: string;
    email: string;
    phone?: string;
    status?: 'REQ_CONFIRM' | 'ACTIVE' | 'BLOCKED';
    source?: 'GEM' | 'LDAP';
    addres?: string;
    passwordHistory?: string;
    passwordChangeUrl?: string;
    /** @format date-time */
    passwordChangeExpiration?: string;
    /** @format date-time */
    passwordLastChange?: string;
    userRegions?: UserRegion[];
    userMod?: string;
    /** @format date-time */
    dateMod?: string;
    consent?: boolean;
    /** @format date-time */
    consentExpirationDate?: string;
    substitutedUser?: AppUser;
    controllingInspector?: boolean;
    rolesList?: string[];
    userGroups?: number[];
}
export interface AuthResult {
    result?: string;
    token?: string;
    userAccount?: AppUser;
    passwordExpired?: boolean;
}
export type LoginWithPasswordData = {
    response: AuthResult;
};
export interface Geometry {
    envelope?: Geometry;
    factory?: GeometryFactory;
    userData?: object;
    /** @format double */
    length?: number;
    empty?: boolean;
    valid?: boolean;
    /** @format int32 */
    dimension?: number;
    /** @format int32 */
    boundaryDimension?: number;
    /** @format int32 */
    srid?: number;
    geometryType?: string;
    rectangle?: boolean;
    boundary?: Geometry;
    envelopeInternal?: Envelope;
    centroid?: Point;
    interiorPoint?: Point;
    /** @format int32 */
    numGeometries?: number;
    coordinates?: Coordinate[];
    coordinate?: Coordinate;
    simple?: boolean;
    precisionModel?: PrecisionModel;
    /** @format double */
    area?: number;
    /** @format int32 */
    numPoints?: number;
}
export interface GeometryFactory {
    precisionModel?: PrecisionModel;
    coordinateSequenceFactory?: CoordinateSequenceFactory;
    /** @format int32 */
    srid?: number;
}
/** Nowa reprezentacja polączona z objektem sprawy */
export interface MapRepresentationCreateDTO {
    geometries: MapRepresentationCreateSingleDTO[];
    /** @format int32 */
    layerId: number;
}
export interface MapRepresentationCreateSingleDTO {
    /** @format int32 */
    id?: number;
    geometry: Geometry;
}
export interface Point {
    envelope?: Geometry;
    factory?: GeometryFactory;
    userData?: object;
    coordinates?: Coordinate[];
    empty?: boolean;
    /** @format int32 */
    dimension?: number;
    /** @format int32 */
    boundaryDimension?: number;
    geometryType?: string;
    boundary?: Geometry;
    coordinateSequence?: CoordinateSequence;
    coordinate?: Coordinate;
    simple?: boolean;
    /** @format double */
    x?: number;
    /** @format double */
    y?: number;
    /** @format int32 */
    numPoints?: number;
    /** @format double */
    length?: number;
    valid?: boolean;
    /** @format int32 */
    srid?: number;
    rectangle?: boolean;
    envelopeInternal?: Envelope;
    centroid?: Point;
    interiorPoint?: Point;
    /** @format int32 */
    numGeometries?: number;
    precisionModel?: PrecisionModel;
    /** @format double */
    area?: number;
}
export interface PrecisionModel {
    /** @format double */
    scale?: number;
    type?: Type;
    floating?: boolean;
    /** @format int32 */
    maximumSignificantDigits?: number;
    /** @format double */
    offsetX?: number;
    /** @format double */
    offsetY?: number;
}
export type Type = object;
export interface Pageable {
    /**
     * @format int32
     * @min 0
     */
    page?: number;
    /**
     * @format int32
     * @min 1
     */
    size?: number;
    sort?: string[];
}
export interface PageableObject {
    /** @format int64 */
    offset?: number;
    sort?: SortObject;
    /** @format int32 */
    pageNumber?: number;
    /** @format int32 */
    pageSize?: number;
    unpaged?: boolean;
    paged?: boolean;
}
export interface SortObject {
    sorted?: boolean;
    unsorted?: boolean;
    empty?: boolean;
}
export interface CaseAndCaseObjectInfoDTO {
    /** @format int32 */
    caseObjectId?: number;
    caseNumber?: string;
    caseObjectName?: string;
}
export interface MapRepresentationDTO {
    /** @format int32 */
    id?: number;
    geometry?: Geometry;
    main?: boolean;
    /** @format int32 */
    layerId?: number;
    relatedCaseObjects?: CaseAndCaseObjectInfoDTO[];
}
export interface InspectorDTO {
    /** @format int32 */
    id?: number;
    phone?: string;
    firstName?: string;
    lastName?: string;
}
export interface DecisionSimpleDTO {
    /** @format int32 */
    id?: number;
    number?: string;
}
export interface CaseSearchCriteria {
    /**
     * filter all fields by general search text
     * @minLength 3
     * @maxLength 2147483647
     */
    generalSearchText?: string;
    filter?: string;
}
export interface DecisionCaseBreadcrumbDTO {
    /** @format int32 */
    decisionId?: number;
    decisionNumber?: string;
    /** @format int32 */
    caseId?: number;
    caseNumber?: string;
    /** @format int32 */
    mainApplicationId?: number;
    mainApplicationNumber?: string;
}
export interface ClientSimpleDTO {
    /** @format int32 */
    id?: number;
    nip?: string;
    pesel?: string;
    city?: string;
    street?: string;
    email?: string;
    organizationName?: string;
    firstName?: string;
    lastName?: string;
    streetNo?: string;
    apartmentNo?: string;
    zipCode?: string;
    phoneNo?: string;
    stakeholderType?: 'AGENT' | 'EXECUTOR' | 'INVESTOR' | 'RESPONSIBLE_PERSON' | 'CONSTRUCTION_MANAGER' | 'SUPERVISION_INSPECTOR' | 'OWNER' | 'COOWNER' | 'SPOUSE' | 'TO_MESSAGE' | 'PARTY_ORGANIZE';
}
export interface CaseDTO {
    /** @format int32 */
    id?: number;
    number?: string;
    type?: string;
    status?: 'NEW' | 'IN_PROGRESS' | 'COMPLETED' | 'RESUMED';
    inspector?: InspectorDTO;
    street?: string;
    comment?: string;
    exportData?: Record<string, object>;
    jrwa?: string;
    inspectorDisplayName?: string;
    inspectorInitials?: string;
    inspectorPhone?: string;
    controllingInspectorDisplayName?: string;
    controllingInspectorInitials?: string;
    controllingInspectorPhone?: string;
    /** @format int32 */
    typeId?: number;
    /** @format int32 */
    inspectorId?: number;
    /** @format int32 */
    controllingInspectorId?: number;
    controllingInspector?: InspectorDTO;
    /** @format date-time */
    occupationFrom?: string;
    /** @format date-time */
    occupationTo?: string;
    /** @format date-time */
    startDate?: string;
    /** @format date-time */
    endDate?: string;
    /** @format date-time */
    responseDeadline?: string;
    caseBreadcrumb?: DecisionCaseBreadcrumbDTO;
    /** @uniqueItems true */
    stakeholders?: ClientSimpleDTO[];
    /** @uniqueItems true */
    decisions?: DecisionSimpleDTO[];
    /** @uniqueItems true */
    attachmentIds?: number[];
}
export interface PageCaseDTO {
    /** @format int64 */
    totalElements?: number;
    /** @format int32 */
    totalPages?: number;
    /** @format int32 */
    size?: number;
    content?: CaseDTO[];
    /** @format int32 */
    number?: number;
    sort?: SortObject;
    pageable?: PageableObject;
    first?: boolean;
    last?: boolean;
    /** @format int32 */
    numberOfElements?: number;
    empty?: boolean;
}
export type UpdateMapRepresentationData = any;
export type DeleteMapRepresentationData = any;
export type QueryMapRepresentationsByCaseObjectIdData = {
    response: MapRepresentationDTO[];
};
export type AddMapRepresentationData = any;
export type AssignExistingMapRepresentationData = any;
export interface QueryMapRepresentationsByCaseNumberParams {
    /** Numer sprawy, wyszukanie */
    caseNumber: string;
}
export type QueryMapRepresentationsByCaseNumberData = {
    response: MapRepresentationDTO[];
};
export interface Search3Params extends CaseSearchCriteria, Pageable {
    /** Kryteria wyszukiwania */
    mine?: boolean;
}
export type Search3Data = {
    response: PageCaseDTO;
};
export interface GEMRoad {
    id: number;
    category: string;
    road_name: string;
    name: string;
    road_number: string;
    start_mileage: number;
    end_mileage: number;
}
export type QueryRoadsData = {
    response: GEMRoad[];
};
export type QueryParamsType = Record<string | number, any>;
export interface FullRequestParams extends Omit<AxiosRequestConfig, 'data' | 'params' | 'url' | 'responseType'> {
    /** set parameter to `true` for call `securityWorker` for this request */
    secure?: boolean;
    /** request path */
    path: string;
    /** content type of request body */
    type?: ContentType;
    /** query params */
    query?: QueryParamsType;
    /** format of response (i.e. response.json() -> format: "json") */
    format?: ResponseType;
    /** request body */
    body?: unknown;
}
export type RequestParams = Omit<FullRequestParams, 'body' | 'method' | 'query' | 'path'>;
export interface ApiConfig<SecurityDataType = unknown> extends Omit<AxiosRequestConfig, 'data' | 'cancelToken'> {
    securityWorker?: (securityData: SecurityDataType | null) => Promise<AxiosRequestConfig | void> | AxiosRequestConfig | void;
    secure?: boolean;
    format?: ResponseType;
}
export declare enum ContentType {
    Json = "application/json",
    FormData = "multipart/form-data",
    UrlEncoded = "application/x-www-form-urlencoded",
    Text = "text/plain"
}
export declare class HttpClient<SecurityDataType = unknown> {
    instance: AxiosInstance;
    private securityData;
    private securityWorker?;
    private secure?;
    private format?;
    constructor({ securityWorker, secure, format, ...axiosConfig }?: ApiConfig<SecurityDataType>);
    setSecurityData: (data: SecurityDataType | null) => void;
    protected mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig;
    protected stringifyFormItem(formItem: unknown): string;
    protected createFormData(input: Record<string, unknown>): FormData;
    request: <T = any, _E = any>({ secure, path, type, query, format, body, ...params }: FullRequestParams) => Promise<AxiosResponse<T>>;
}
/**
 * @title SmartGem API
 * @version dev
 * @baseUrl /api
 */
export declare class Api<SecurityDataType extends unknown> extends HttpClient<SecurityDataType> {
    rloV2: {
        /**
         * No description
         *
         * @tags rlo-v2/case-objects/{id}/map-representation
         * @name UpdateMapRepresentation
         * @summary Edycja reprezentacji na mapie
         * @request PUT:/rlo-v2/case-objects/{id}/map-representation/{mapRepresentationId}
         * @secure
         * @response `201` `UpdateMapRepresentationData` Created
         * @response `400` `string` Bad Request
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         */
        updateMapRepresentation: (id: number, mapRepresentationId: number, data: MapRepresentationCreateDTO, params?: RequestParams) => Promise<AxiosResponse<any, any>>;
        /**
         * No description
         *
         * @tags rlo-v2/case-objects/{id}/map-representation
         * @name DeleteMapRepresentation
         * @summary Usuwa powiązanie reprezentacji na mapie z objektem sprawy
         * @request DELETE:/rlo-v2/case-objects/{id}/map-representation/{mapRepresentationId}
         * @secure
         * @response `201` `DeleteMapRepresentationData` Created
         * @response `400` `string` Bad Request
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         */
        deleteMapRepresentation: (id: number, mapRepresentationId: number, params?: RequestParams) => Promise<AxiosResponse<any, any>>;
        /**
         * No description
         *
         * @tags rlo-v2/case-objects/{id}/map-representation
         * @name QueryMapRepresentationsByCaseObjectId
         * @summary Pobiera reprezentację na mapie oraz zależne od tej reprezentacji po id objektu sprawy
         * @request GET:/rlo-v2/case-objects/{id}/map-representation
         * @secure
         * @response `200` `QueryMapRepresentationsByCaseObjectIdData` OK
         * @response `400` `string` Bad Request
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         */
        queryMapRepresentationsByCaseObjectId: (id: number, params?: RequestParams) => Promise<AxiosResponse<QueryMapRepresentationsByCaseObjectIdData, any>>;
        /**
         * No description
         *
         * @tags rlo-v2/case-objects/{id}/map-representation
         * @name AddMapRepresentation
         * @summary Dodaje nową reprezentację na mapie
         * @request POST:/rlo-v2/case-objects/{id}/map-representation
         * @secure
         * @response `201` `AddMapRepresentationData` Created
         * @response `400` `string` Bad Request
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         */
        addMapRepresentation: (id: number, data: MapRepresentationCreateDTO, params?: RequestParams) => Promise<AxiosResponse<any, any>>;
        /**
         * No description
         *
         * @tags rlo-v2/case-objects/{id}/map-representation
         * @name AssignExistingMapRepresentation
         * @summary Przypisuje istniejącą reprezentację na mapie do objektu sprawy
         * @request POST:/rlo-v2/case-objects/{id}/map-representation/{mapRepresentationId}/assign
         * @secure
         * @response `201` `AssignExistingMapRepresentationData` Created
         * @response `400` `string` Bad Request
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         */
        assignExistingMapRepresentation: (id: number, mapRepresentationId: number, params?: RequestParams) => Promise<AxiosResponse<any, any>>;
        /**
         * No description
         *
         * @tags rlo-v2/map-representation
         * @name QueryMapRepresentationsByCaseNumber
         * @summary Pobiera reprezentację na mapie po numerze sprawy
         * @request GET:/rlo-v2/map-representation/cases
         * @secure
         * @response `200` `QueryMapRepresentationsByCaseNumberData` OK
         * @response `400` `string` Bad Request
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         */
        queryMapRepresentationsByCaseNumber: (query: QueryMapRepresentationsByCaseNumberParams, params?: RequestParams) => Promise<AxiosResponse<QueryMapRepresentationsByCaseNumberData, any>>;
        /**
         * No description
         *
         * @tags rlo-v2/cases
         * @name Search3
         * @summary Wyszukuje sprawy po zadanych kryteriach
         * @request GET:/rlo-v2/cases/search
         * @secure
         * @response `200` `Search3Data` OK
         * @response `400` `string` Bad Request
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         */
        search3: (query: Search3Params, params?: RequestParams) => Promise<AxiosResponse<Search3Data, any>>;
    };
    road: {
        /**
         * No description
         *
         * @tags /road
         * @name QueryRoads1
         * @summary Zwraca listę dróg
         * @request GET:/road
         * @secure
         * @response `200` `QueryRoads1Data` Pobieranie zakończone sukcesem
         * @response `400` `string` Bad Request
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         * @response `500` `(GEMRoad)[]` Wewnętrzny błąd serwera
         */
        queryRoads: (params?: RequestParams) => Promise<AxiosResponse<QueryRoadsData, any>>;
    };
    user: {
        /**
         * No description
         *
         * @tags /user
         * @name LoginWithPassword
         * @summary Logowanie
         * @request POST:/user/login/password
         * @secure
         * @response `200` `LoginWithPasswordData` OK
         * @response `400` `string` Bad Request
         * @response `403` `ErrorResponse` Forbidden
         * @response `404` `string` Not Found
         * @response `406` `string` Not Acceptable
         * @response `409` `string` Conflict
         */
        loginWithPassword: (query: LoginWithPasswordParams, params?: RequestParams) => Promise<AxiosResponse<LoginWithPasswordData, any>>;
    };
}
