diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 0000000..4678774 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/src/app/api/adobe/route.ts b/src/app/api/adobe/route.ts deleted file mode 100644 index db45637..0000000 --- a/src/app/api/adobe/route.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -if (!process.env.ADOBE_API_KEY || !process.env.ADOBE_CLIENT_SECRET) { - throw new Error('Adobe API credentials not configured') -} - -const ADOBE_API_URL = 'https://firefly-api.adobe.io - -export async function POST(req: NextRequest): Promise { - try { - const { prompt } = await req.json() - - if (!prompt) { - return NextResponse.json( - { error: 'Prompt is required' }, - { status: 400 } - ) - } - - // Adobe Firefly API request - const response = await fetch(ADOBE_API_URL, { - method: 'POST', - headers: { - 'x-api-key': process.env.ADOBE_API_KEY, - 'Authorization': `Bearer ${process.env.ADOBE_API_KEY}`, - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - prompt: prompt, - n: 1, - size: { width: 1024, height: 1024 }, - styles: ["default"], - seed: Math.floor(Math.random() * 1000000), - quality: "standard", - contentClass: "photo" - }), - }) - - if (!response.ok) { - const errorData = await response.json() - console.error('Adobe API error:', errorData) - throw new Error(`Adobe API error: ${response.status}`) - } - - const data = await response.json() - console.log('Adobe generation result:', data) - - // Extract the image URL from the response - const imageUrl = data.outputs?.[0]?.image - - if (!imageUrl) { - throw new Error('No image URL in response') - } - - return NextResponse.json({ imageUrl }) - } catch (error) { - console.error('Adobe generation error:', error) - return NextResponse.json( - { error: error instanceof Error ? error.message : 'Failed to generate image' }, - { status: 500 } - ) - } -} - -export const dynamic = 'force-dynamic' diff --git a/src/app/api/gemini/route.ts b/src/app/api/gemini/route.ts deleted file mode 100644 index d2ae571..0000000 --- a/src/app/api/gemini/route.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' -import { GoogleGenerativeAI } from '@google/generative-ai' - -if (!process.env.GEMINI_API_KEY) { - throw new Error('GEMINI_API_KEY is not configured in environment variables') -} - -const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY) -const model = genAI.getGenerativeModel({ model: "gemini-1.5-pro" }) - -export async function POST(req: NextRequest): Promise { - try { - const { prompt } = await req.json() - - if (!prompt) { - return NextResponse.json( - { error: 'Prompt is required' }, - { status: 400 } - ) - } - - const result = await model.generateContent(prompt) - const response = await result.response - const text = response.text() - - console.log('Gemini generation result:', text) - return NextResponse.json({ response: text }) - } catch (error) { - console.error('Gemini generation error:', error) - return NextResponse.json( - { error: error instanceof Error ? error.message : 'Failed to generate text' }, - { status: 500 } - ) - } -} - -export const dynamic = 'force-dynamic' diff --git a/src/app/api/grok/route.ts b/src/app/api/grok/route.ts deleted file mode 100644 index 17c6bb9..0000000 --- a/src/app/api/grok/route.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' -import OpenAI from "openai"; - -if (!process.env.XAI_API_KEY) { - throw new Error('XAI_API_KEY is not configured in environment variables') -} - -const GROK_API_URL = 'https://api.openai.com/v1' - -export async function POST(req: NextRequest): Promise { - try { - const { prompt } = await req.json() - - if (!prompt) { - return NextResponse.json( - { error: 'Prompt is required' }, - { status: 400 } - ) - } - -const openai = new OpenAI({ - apiKey: process.env.XAI_API_KEY, - baseURL: GROK_API_URL, -}); - -const image = await openai.images.generate({ model: "dall-e-3", prompt: prompt }); - - - // Extract the image URL from Grok's response - const imageUrl = image.data[0].url - - if (!imageUrl) { - console.error('No image in response:', data) - throw new Error('No image generated in Grok API result') - } - - return NextResponse.json({ imageUrl }) - } catch (error) { - console.error('Grok generation error:', error) - return NextResponse.json( - { error: error instanceof Error ? error.message : 'Failed to generate image' }, - { status: 500 } - ) - } -} - -export const dynamic = 'force-dynamic' diff --git a/src/app/page.tsx b/src/app/page.tsx index 21a1d98..2c5d97a 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -11,6 +11,12 @@ interface WalletState { publicKey: string | null } +declare global { + interface Window { + solflare: any; // Or use a more specific type if available + } +} + const Page: React.FC = (): React.ReactElement => { const [walletState, setWalletState] = useState({ connected: false, diff --git a/src/services/paymentService.ts b/src/services/paymentService.ts index eecdca7..7a3e6e0 100644 --- a/src/services/paymentService.ts +++ b/src/services/paymentService.ts @@ -3,7 +3,7 @@ import { TOKEN_PROGRAM_ID, createTransferInstruction, getAssociatedTokenAddress, - createAssociatedTokenAccountInstruction as createATAInstruction, + createAssociatedTokenAccountInstruction, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'