import { initContract } from '@ts-rest/core'; import { z } from 'zod'; import { errorResponseSchema } from '../schemas/common.schemas'; import { groupBuyCampaignSchema, groupBuyOptInResponseSchema, groupBuyOptInSchema, } from '../schemas/shopkeeper-group-buy.schemas'; const c = initContract(); export const shopkeeperGroupBuyContract = c.router({ listCampaigns: { method: 'GET', path: '/shopkeeper/group-buy/campaigns', query: z.object({ market: z.string().optional(), }), responses: { 200: z.object({ campaigns: z.array(groupBuyCampaignSchema) }), 401: errorResponseSchema, }, summary: 'List active group-buy campaigns for the shop market', }, optIn: { method: 'POST', path: '/shopkeeper/group-buy/opt-in', body: groupBuyOptInSchema, responses: { 200: groupBuyOptInResponseSchema, 400: errorResponseSchema, 401: errorResponseSchema, 404: errorResponseSchema, }, summary: 'Opt into a group-buy campaign with a quantity', }, });