interface CookiesConfig {
  expireTimes: string | number | Date;
  path?: string;
  domain?: string;
  secure?: boolean;
  sameSite?: string;
}
interface VueCookies {
  /**
   * Set global config
   */
  config(config: CookiesConfig): void;

  /**
   * Set a cookie
   */
  set(
    keyName: string,
    value: string,
    expireTimes?: string | number | Date,
    path?: string,
    domain?: string,
    secure?: boolean,
    sameSite?: string
  ): this;

  /**
   * Get a cookie
   */
  get(keyName: string): string;

  /**
   * Remove a cookie
   */
  remove(keyName: string, path?: string, domain?: string): boolean;

  /**
   * Exist a cookie name
   */
  isKey(keyName: string): boolean;

  /**
   * Get All cookie name
   */
  keys(): string[];
}

export { VueCookies, CookiesConfig };
