import { APIBase } from '@dvn/core/api/apiBase';
import { GetSessionResponse } from '@dvn/kimlik/api/dto/CreateSession';
import { AxiosDefaults } from 'axios';
import { CreateSessionResponse } from './dto';
import { QueryResponse, UpdateResponse } from "@dvn/core/api";
import { ApiKey } from "@dvn/kimlik/api/models/api-key";
import { SAMLConfig } from "@dvn/kimlik/api/models/saml-config";
export declare const STORAGE_KEY_KIMLIK_USER_ID = "kimlik_uid";
export declare const STORAGE_KEY_KIMLIK_TOKEN = "kimlik_token";
export interface KimlikApi {
  activateUser: (email: string, firstName: string, lastName: string, password: string) => Promise<CreateSessionResponse>;
  addAuthInterceptor: (token: string) => void;
  getSession: () => Promise<GetSessionResponse>;
  login: (email: string, password: string) => Promise<CreateSessionResponse>;
  logout: () => Promise<{}>;
  register: (email: string, firstName: string, lastName: string, password: string) => Promise<CreateSessionResponse>;
  getUsers: () => Promise<QueryResponse>;
  createApiKey: (data: Partial<ApiKey>) => Promise<CreateAPIKeyResponse>;
  updateApiKey: (id: string, data: Partial<ApiKey>) => Promise<UpdateResponse>;
  getApiKeys: () => Promise<QueryResponse>;
  deleteApiKey: (id: string) => Promise<{}>;
  createSAMLConfig: (data: Partial<SAMLConfig>) => Promise<SAMLConfig>;
  updateSAMLConfig: (id: string, data: Partial<SAMLConfig>) => Promise<UpdateResponse>;
  getSAMLConfigs: () => Promise<QueryResponse>;
  deleteSAMLConfig: (id: string) => Promise<{}>;
}
export interface CreateAPIKeyResponse {
  name: string;
  keyId: string;
  key: string;
}
export declare class KimlikApiImpl implements KimlikApi {
  api: APIBase;
  constructor(endpoint: string, defaultHeaders?: object);
  getDefaults(): AxiosDefaults;
  register: (email: string, firstName: string, lastName: string, password: string) => Promise<CreateSessionResponse>;
  login: (email: string, password: string) => Promise<CreateSessionResponse>;
  activateUser: (email: string, firstName: string, lastName: string, password: string) => Promise<CreateSessionResponse>;
  logout: () => Promise<{}>;
  addAuthInterceptor: (token: string) => void;
  getSession: () => Promise<GetSessionResponse>;
  getUsers: () => Promise<QueryResponse>;
  createApiKey: (data: Partial<ApiKey>) => Promise<CreateAPIKeyResponse>;
  getApiKeys: () => Promise<QueryResponse>;
  updateApiKey: (id: string, data: Partial<ApiKey>) => Promise<UpdateResponse>;
  deleteApiKey: (id: string) => Promise<unknown>;
  createSAMLConfig: (data: Partial<SAMLConfig>) => Promise<SAMLConfig>;
  getSAMLConfigs: () => Promise<QueryResponse>;
  updateSAMLConfig: (id: string, data: Partial<SAMLConfig>) => Promise<UpdateResponse>;
  deleteSAMLConfig: (id: string) => Promise<unknown>;
}
