interface Yearfield {
  year: number | Date;
  month:number | null;
  day:number | null;
}

interface tzConfig{
  day:string;
  month:string;
  day:string;
}

interface CalendarPlusResponse{
  day?:number;
  month?: number;
  year?: number;
  greYear?: number;
  greMonth?: number;
  greDay?: number;
  tz?: tzConfig;
  term?: string;
  sings?: string;
  lunarFestival?: string;
  gerFestival?: string;
}

export declare interface CalendarPlus extends Yearfield{
  getAll(year?: Date | number, month?: number, day?: number):CalendarPlusResponse;
  setFestival(year?: object, type: boolean): void;
  getFestival(year?: Date | number, month?: number, day?: number): string;
  getTerm(year?: Date | number, month?: number, day?: number): string;
  getSigns(year?: Date | number): string;
  getTZ(year?: Date | number, month?: number, day?: number): tzConfig;
  getMonth(year?: Date | number, month?: number): Yearfield;
  getDay(year?: Date | number, month?: number, day?: number): Yearfield;
}

export default function lunarCalendarPlus(year?:Date | number, month?: number, day?: number):CalendarPlus {}

