import { Lang } from './types/interface'; // Async function to get storage with key async function getStorage (key: string): Promise { return await new Promise((resolve, reject) => { chrome.storage.sync.get(key, (result) => { if (chrome.runtime.lastError != null) { reject(chrome.runtime.lastError); } else { resolve(result[key]); } }); }); } // Async function to set storage key async function setStorage (key: string, value: any): Promise { await new Promise((resolve, reject) => { chrome.storage.sync.set({ [key]: value }, () => { if (chrome.runtime.lastError != null) { reject(chrome.runtime.lastError); } else { resolve(''); } }); }); } // Async function to clear storage key async function clearStorage (key: string): Promise { await new Promise((resolve, reject) => { chrome.storage.sync.remove(key, () => { if (chrome.runtime.lastError != null) { reject(chrome.runtime.lastError); } else { resolve(''); } }); }); } async function getGPTApiKey (): Promise { return await getStorage('gpt-api-key'); } async function setGPTApiKey (key: string): Promise { await setStorage('gpt-api-key', key); } async function getLang (): Promise { return await getStorage('lang'); } async function setLang (lang: Lang): Promise { await setStorage('lang', lang); } async function setRate (rate: number): Promise { await setStorage('rate', rate); } async function getRate (): Promise { return await getStorage('rate'); } async function setEnabled (enabled: boolean): Promise { await setStorage('enabled', enabled); } async function getEnabled (): Promise { return await getStorage('enabled'); } export { getStorage, setStorage, clearStorage, getGPTApiKey, setGPTApiKey, getLang, setLang, setRate, getRate, setEnabled, getEnabled };