export type KanaBaseGroupClientConfig = {
  endpoint?: string;
  version?: string;
  onError?: (error: Error) => Promise<void>;
  retry?: (error: Error, retryNumber: number) => boolean;
};
export type KanaGroupTokenClientConfig = KanaBaseGroupClientConfig & {
  groupToken: string;
};
export type KanaPublicApiKeyClientConfig = KanaBaseGroupClientConfig & {
  apiKey: string;
  groupId: string;
};

export type KanaGroupClientConfig =
  | KanaGroupTokenClientConfig
  | KanaPublicApiKeyClientConfig;

export type KanaGroupClientFullConfig = {
  endpoint: string;
  version: string;
  onError?: (error: Error) => Promise<void>;
  retry?: (error: Error, retryNumber: number) => boolean;
} & (
  | { type: 'GroupToken'; groupToken: string }
  | { type: 'PublicApiKey'; apiKey: string; groupId: string }
);
