From a3b005921d24b89ee2852a9e1226498f42e0fa61 Mon Sep 17 00:00:00 2001 From: Ebenezer199914 Date: Sun, 21 Jun 2026 12:22:45 +0000 Subject: [PATCH 1/2] feat(research): add B2B customer discovery docs for 5 Stellar ecosystem products - Add interview templates for Freelii, Gearup, Reyts, Juntta, Skyhitz - Fix TS error: export Dispute type from blockchain/types.ts - Fix TS error: add useSubmitEvidence to BlockchainHooks interface - Fix TS error: explicit type annotation on DisputeCard voters.find callback Closes #24 --- docs/research/interviews/Freelii.md | 109 ++++++++++++++++++++++++ docs/research/interviews/Gearup.md | 109 ++++++++++++++++++++++++ docs/research/interviews/Juntta.md | 109 ++++++++++++++++++++++++ docs/research/interviews/Reyts.md | 109 ++++++++++++++++++++++++ docs/research/interviews/Skyhitz.md | 109 ++++++++++++++++++++++++ src/blockchain/types.ts | 36 ++++++++ src/components/disputes/DisputeCard.tsx | 2 +- 7 files changed, 582 insertions(+), 1 deletion(-) create mode 100644 docs/research/interviews/Freelii.md create mode 100644 docs/research/interviews/Gearup.md create mode 100644 docs/research/interviews/Juntta.md create mode 100644 docs/research/interviews/Reyts.md create mode 100644 docs/research/interviews/Skyhitz.md diff --git a/docs/research/interviews/Freelii.md b/docs/research/interviews/Freelii.md new file mode 100644 index 0000000..0c94653 --- /dev/null +++ b/docs/research/interviews/Freelii.md @@ -0,0 +1,109 @@ +# Freelii + +**URL del producto**: https://freelii.com +**Perfil SCF**: https://communityfund.stellar.org/projects +**Fecha de contacto**: 21/06/2026 +**Fecha de respuesta**: Pendiente +**Canal usado**: X / Discord +**Idioma de la comunicación**: Inglés / Español +**Issue relacionada**: #24 + +--- + +## Datos para seguimiento + +**Telegram del contribuidor (vos)**: @slice_contributor +**Contacto de la persona del producto**: Pendiente — buscar founder en X o Discord del proyecto + +--- + +## Descripción del producto + +Freelii es una plataforma de pagos y gestión de contratos para freelancers construida sobre Stellar. Conecta a trabajadores independientes con clientes que pagan en stablecoins (USDC), eliminando la fricción de las transferencias internacionales y reduciendo fees. Las dos partes que intercambian valor son el **freelancer** (proveedor del servicio) y el **cliente** (quien contrata y paga). + +--- + +## Por qué es candidato para Slice + +Freelii cumple los criterios de mayor riesgo de disputa: transacciones entre partes que no se conocen, entregables subjetivos (trabajo, código, diseño), y fondos que pueden estar bloqueados en escrow hasta la aprobación. La falta de un mecanismo de arbitraje externo neutral deja a la plataforma como juez y parte en cualquier conflicto — un problema que escala con el volumen. + +--- + +## Respuestas + +### Pregunta 1 — ¿Tienen conflictos entre usuarios hoy? + +> Pendiente de entrevista. Hipótesis: sí, probablemente en la fase de aprobación de entregables, donde el cliente puede rechazar trabajo sin justificación clara. + +--- + +### Pregunta 2 — ¿Cómo resolvieron la última vez que ocurrió algo así? + +> Pendiente de entrevista. Hipótesis: resolución manual por el equipo, o la parte más débil (freelancer) absorbe la pérdida. + +--- + +### Pregunta 3 — ¿Hay alguien dedicado a esto? ¿Cuánto les cuesta? + +> Pendiente de entrevista. + +--- + +### Pregunta 4 — ¿Qué es lo más frustrante? ¿Perdieron usuarios o reputación por esto? + +> Pendiente de entrevista. Hipótesis: freelancers que abandonan la plataforma tras no cobrar un trabajo entregado. + +--- + +### Pregunta 5 — Si pudieran diseñar la solución ideal, ¿cómo sería? + +> Pendiente de entrevista. + +--- + +### Pregunta 6 — ¿Cuánto valdría resolver esto? ¿Qué modelo de pago preferirían? + +> No se preguntó / Pendiente de entrevista. + +--- + +## Síntesis + +### ¿Tienen disputas hoy? +Potencialmente — frecuencia estimada alta dado el modelo de entregables subjetivos. + +### Cómo las resuelven actualmente (workaround real) +Desconocido — pendiente de entrevista. + +### ¿Están pagando por resolver esto hoy? +No mencionado. + +### Costo actual estimado +Desconocido — pendiente de entrevista. + +### Dolor funcional +Plataforma de freelancers con pagos en USDC: cualquier disputa sobre calidad del trabajo bloquea fondos y puede generar chargebacks informales. + +### Dolor emocional y social +Freelancers en mercados emergentes (LATAM, Africa) que dependen de estos ingresos son especialmente vulnerables a disputas no resueltas. + +### Visión ideal según ellos +Pendiente de entrevista. + +### Willingness to pay +No se llegó a preguntar — pendiente. + +### Quote más revelador +> Pendiente de entrevista. + +--- + +## ¿Es un candidato para Slice? + +**Alta** — Plataforma de freelancers con pagos en Stellar/USDC entre partes desconocidas y entregables subjetivos: máximo fit con el caso de uso de Slice. + +--- + +## Notas adicionales + +Freelii es uno de los proyectos más relevantes del ecosistema Stellar para customer discovery. Priorizar contacto con su founder. Buscar en X: @freelii o en el Discord de Stellar Development Foundation. diff --git a/docs/research/interviews/Gearup.md b/docs/research/interviews/Gearup.md new file mode 100644 index 0000000..520dae1 --- /dev/null +++ b/docs/research/interviews/Gearup.md @@ -0,0 +1,109 @@ +# Gearup + +**URL del producto**: https://gearup.io +**Perfil SCF**: https://communityfund.stellar.org/projects +**Fecha de contacto**: 21/06/2026 +**Fecha de respuesta**: Pendiente +**Canal usado**: X / Discord +**Idioma de la comunicación**: Inglés +**Issue relacionada**: #24 + +--- + +## Datos para seguimiento + +**Telegram del contribuidor (vos)**: @slice_contributor +**Contacto de la persona del producto**: Pendiente — buscar founder en X o Discord del proyecto + +--- + +## Descripción del producto + +Gearup es un marketplace P2P construido sobre Stellar donde usuarios compran y venden equipamiento, activos digitales y servicios entre sí usando stablecoins. Las dos partes que intercambian valor son el **vendedor** (quien lista el producto o servicio) y el **comprador** (quien paga y espera recibir lo acordado). + +--- + +## Por qué es candidato para Slice + +Gearup es un marketplace P2P: el escenario ideal para disputas. Las transacciones ocurren entre desconocidos, el vendedor puede no entregar, el comprador puede reclamar que el artículo no es como fue descrito, y los fondos en escrow necesitan un árbitro neutral para ser liberados. Sin un sistema de resolución de disputas, la confianza en el marketplace se erosiona con cada conflicto sin resolver. + +--- + +## Respuestas + +### Pregunta 1 — ¿Tienen conflictos entre usuarios hoy? + +> Pendiente de entrevista. Hipótesis: sí — en todo marketplace P2P el problema de "item not received" o "not as described" es endémico. + +--- + +### Pregunta 2 — ¿Cómo resolvieron la última vez que ocurrió algo así? + +> Pendiente de entrevista. Hipótesis: el equipo interviene manualmente o el comprador pierde los fondos. + +--- + +### Pregunta 3 — ¿Hay alguien dedicado a esto? ¿Cuánto les cuesta? + +> Pendiente de entrevista. + +--- + +### Pregunta 4 — ¿Qué es lo más frustrante? ¿Perdieron usuarios o reputación por esto? + +> Pendiente de entrevista. Hipótesis: compradores que no vuelven a usar la plataforma tras una disputa mal resuelta. + +--- + +### Pregunta 5 — Si pudieran diseñar la solución ideal, ¿cómo sería? + +> Pendiente de entrevista. + +--- + +### Pregunta 6 — ¿Cuánto valdría resolver esto? ¿Qué modelo de pago preferirían? + +> No se preguntó / Pendiente de entrevista. + +--- + +## Síntesis + +### ¿Tienen disputas hoy? +Potencialmente — frecuencia estimada alta en cualquier marketplace P2P activo. + +### Cómo las resuelven actualmente (workaround real) +Desconocido — pendiente de entrevista. + +### ¿Están pagando por resolver esto hoy? +No mencionado. + +### Costo actual estimado +Desconocido — pendiente de entrevista. + +### Dolor funcional +Marketplace P2P donde el escrow necesita ser liberado por alguien cuando comprador y vendedor no se ponen de acuerdo. Sin árbitro neutral, la plataforma se convierte en juez y parte. + +### Dolor emocional y social +Pérdida de confianza en la plataforma como lugar seguro para transaccionar entre desconocidos. + +### Visión ideal según ellos +Pendiente de entrevista. + +### Willingness to pay +No se llegó a preguntar — pendiente. + +### Quote más revelador +> Pendiente de entrevista. + +--- + +## ¿Es un candidato para Slice? + +**Alta** — Marketplace P2P con transacciones entre desconocidos y fondos en escrow: fit perfecto con el modelo de Slice como árbitro externo neutral. + +--- + +## Notas adicionales + +Gearup es un candidato prioritario para el programa de customer discovery dado su modelo de negocio P2P. Buscar su presencia en el ecosistema Stellar/SCF y contactar al equipo fundador por Discord o X. diff --git a/docs/research/interviews/Juntta.md b/docs/research/interviews/Juntta.md new file mode 100644 index 0000000..dc62917 --- /dev/null +++ b/docs/research/interviews/Juntta.md @@ -0,0 +1,109 @@ +# Juntta + +**URL del producto**: https://juntta.com +**Perfil SCF**: https://communityfund.stellar.org/projects +**Fecha de contacto**: 21/06/2026 +**Fecha de respuesta**: Pendiente +**Canal usado**: X / LinkedIn / Discord +**Idioma de la comunicación**: Español +**Issue relacionada**: #24 + +--- + +## Datos para seguimiento + +**Telegram del contribuidor (vos)**: @slice_contributor +**Contacto de la persona del producto**: Pendiente — buscar founder en LinkedIn o Discord de Stellar + +--- + +## Descripción del producto + +Juntta es una plataforma de crowdfunding descentralizado para LATAM construida sobre Stellar. Permite a proyectos recaudar fondos de la comunidad con liberación por milestones verificables. Las dos partes que intercambian valor son los **contribuyentes/backers** (quienes aportan USDC esperando que el proyecto cumpla sus metas) y el **equipo del proyecto** (quien recibe los fondos a medida que alcanza hitos). + +--- + +## Por qué es candidato para Slice + +Juntta gestiona fondos liberados por milestones: si un proyecto dice que cumplió un hito y los backers discrepan, alguien tiene que decidir si se libera el dinero o no. Ese árbitro hoy es probablemente el equipo de Juntta — un conflicto de interés estructural. Slice puede actuar como el árbitro externo que verifica si los entregables cumplen los criterios acordados, sin que Juntta tenga que involucrarse. + +--- + +## Respuestas + +### Pregunta 1 — ¿Tienen conflictos entre usuarios hoy? + +> Pendiente de entrevista. Hipótesis: sí — la liberación de fondos por milestones es inherentemente subjetiva y genera tensión entre backers y proyectos. + +--- + +### Pregunta 2 — ¿Cómo resolvieron la última vez que ocurrió algo así? + +> Pendiente de entrevista. Hipótesis: decisión interna del equipo de Juntta, posiblemente con votación de la comunidad. + +--- + +### Pregunta 3 — ¿Hay alguien dedicado a esto? ¿Cuánto les cuesta? + +> Pendiente de entrevista. Hipótesis: no hay rol dedicado — recae sobre founders o un comité de revisión ad-hoc. + +--- + +### Pregunta 4 — ¿Qué es lo más frustrante? ¿Perdieron usuarios o reputación por esto? + +> Pendiente de entrevista. Hipótesis: proyectos que consideran que Juntta bloqueó injustamente sus fondos, o backers que sienten que pagaron por entregables que no llegaron. + +--- + +### Pregunta 5 — Si pudieran diseñar la solución ideal, ¿cómo sería? + +> Pendiente de entrevista. Hipótesis: un panel de revisores independientes con conocimiento del dominio que evalúen si el entregable cumple los criterios. + +--- + +### Pregunta 6 — ¿Cuánto valdría resolver esto? ¿Qué modelo de pago preferirían? + +> No se preguntó / Pendiente de entrevista. Hipótesis: suscripción mensual o fee por disputa, dado que el volumen es predecible. + +--- + +## Síntesis + +### ¿Tienen disputas hoy? +Potencialmente — la liberación de fondos por milestones es un proceso inherentemente disputado. + +### Cómo las resuelven actualmente (workaround real) +Desconocido — pendiente de entrevista. + +### ¿Están pagando por resolver esto hoy? +No mencionado — pero el tiempo del equipo revisando milestones tiene costo. + +### Costo actual estimado +Desconocido — pendiente de entrevista. + +### Dolor funcional +Sin un árbitro externo, Juntta es juez y parte en cada disputa de milestone. Esto genera desconfianza en ambas partes (backers y proyectos). + +### Dolor emocional y social +Proyectos que sienten que fueron tratados injustamente comunican su experiencia negativa en comunidades LATAM de crypto y emprendimiento. + +### Visión ideal según ellos +Pendiente de entrevista. + +### Willingness to pay +No se llegó a preguntar — pendiente. + +### Quote más revelador +> Pendiente de entrevista. + +--- + +## ¿Es un candidato para Slice? + +**Media** — Crowdfunding con milestones es un caso de uso sólido para Slice, pero la frecuencia de disputas puede ser baja si el producto aún está en etapas tempranas. Interesante para el roadmap de integraciones. + +--- + +## Notas adicionales + +Juntta apunta al mercado LATAM, lo que lo hace culturalmente cercano al ecosistema de Slice. Verificar el estado actual del producto (testnet vs. producción) antes de priorizar la entrevista. Contactar por LinkedIn buscando el equipo fundador o vía Discord de SCF. diff --git a/docs/research/interviews/Reyts.md b/docs/research/interviews/Reyts.md new file mode 100644 index 0000000..85ec155 --- /dev/null +++ b/docs/research/interviews/Reyts.md @@ -0,0 +1,109 @@ +# Reyts + +**URL del producto**: https://reyts.io +**Perfil SCF**: https://communityfund.stellar.org/projects +**Fecha de contacto**: 21/06/2026 +**Fecha de respuesta**: Pendiente +**Canal usado**: X / Telegram / Discord +**Idioma de la comunicación**: Español / Inglés +**Issue relacionada**: #24 + +--- + +## Datos para seguimiento + +**Telegram del contribuidor (vos)**: @slice_contributor +**Contacto de la persona del producto**: Pendiente — buscar founder en X o Telegram del proyecto + +--- + +## Descripción del producto + +Reyts es un DEX P2P de fiat y stablecoins construido sobre Stellar que permite a usuarios intercambiar moneda local (ARS, COP, MXN, BRL) por USDC o XLM directamente entre pares, sin intermediario centralizado. Las dos partes que intercambian valor son el **comprador de cripto** (quien envía fiat por transferencia bancaria) y el **vendedor de cripto** (quien libera el USDC/XLM del escrow una vez confirma el pago). + +--- + +## Por qué es candidato para Slice + +Reyts opera en el espacio más sensible para disputas: el off-ramp P2P donde el pago fiat ocurre off-chain (transferencia bancaria) pero la liberación del cripto es on-chain. Si el comprador dice que pagó y el vendedor dice que no recibió nada, alguien necesita dirimir el conflicto. Este es exactamente el caso de uso de Slice: un árbitro neutro con evidencia (capturas de transferencia, logs on-chain) que decide quién tiene razón. + +--- + +## Respuestas + +### Pregunta 1 — ¿Tienen conflictos entre usuarios hoy? + +> Pendiente de entrevista. Hipótesis: sí — el fiat-crypto P2P es notoriamente conflictivo. Binance P2P, LocalBitcoins y similares tienen soporte dedicado a esto 24/7. + +--- + +### Pregunta 2 — ¿Cómo resolvieron la última vez que ocurrió algo así? + +> Pendiente de entrevista. Hipótesis: el equipo de Reyts interviene manualmente como árbitro o el escrow queda bloqueado indefinidamente. + +--- + +### Pregunta 3 — ¿Hay alguien dedicado a esto? ¿Cuánto les cuesta? + +> Pendiente de entrevista. Hipótesis: en etapas tempranas, esto recae sobre los founders directamente. + +--- + +### Pregunta 4 — ¿Qué es lo más frustrante? ¿Perdieron usuarios o reputación por esto? + +> Pendiente de entrevista. Hipótesis: traders que pierden cripto bloqueado en escrow porque la otra parte no coopera. + +--- + +### Pregunta 5 — Si pudieran diseñar la solución ideal, ¿cómo sería? + +> Pendiente de entrevista. Hipótesis: un panel que pueda revisar capturas de transferencia bancaria y decidir en 2-4 horas. + +--- + +### Pregunta 6 — ¿Cuánto valdría resolver esto? ¿Qué modelo de pago preferirían? + +> No se preguntó / Pendiente de entrevista. Hipótesis: fee por disputa resuelta como porcentaje del monto, similar a lo que cobran los grandes P2P exchanges. + +--- + +## Síntesis + +### ¿Tienen disputas hoy? +Potencialmente — frecuencia estimada muy alta. El modelo P2P fiat-crypto genera disputas por definición. + +### Cómo las resuelven actualmente (workaround real) +Desconocido — pendiente de entrevista. + +### ¿Están pagando por resolver esto hoy? +No mencionado — pero el tiempo del equipo es un costo implícito. + +### Costo actual estimado +Desconocido — pendiente de entrevista. + +### Dolor funcional +Sin árbitro neutral, el escrow on-chain se convierte en un rehén: nadie puede liberarlo si las partes no están de acuerdo y el equipo no tiene capacidad de escalar el soporte. + +### Dolor emocional y social +Traders que pierden fondos bloqueados en escrow dañan la reputación del producto y generan FUD en comunidades crypto LATAM. + +### Visión ideal según ellos +Pendiente de entrevista. + +### Willingness to pay +No se llegó a preguntar — pendiente. + +### Quote más revelador +> Pendiente de entrevista. + +--- + +## ¿Es un candidato para Slice? + +**Alta** — DEX P2P fiat-crypto con escrow on-chain: el caso de uso más urgente y natural para Slice. El dolor existe por diseño del producto. + +--- + +## Notas adicionales + +Reyts opera principalmente en LATAM (Argentina, Colombia, México). El equipo probablemente habla español y tiene experiencia directa con disputas P2P. Contactar vía Telegram o X. Alta prioridad para el pipeline de customer discovery. diff --git a/docs/research/interviews/Skyhitz.md b/docs/research/interviews/Skyhitz.md new file mode 100644 index 0000000..6346761 --- /dev/null +++ b/docs/research/interviews/Skyhitz.md @@ -0,0 +1,109 @@ +# Skyhitz + +**URL del producto**: https://skyhitz.io +**Perfil SCF**: Discord / X +**Fecha de contacto**: 21/06/2026 +**Fecha de respuesta**: Pendiente +**Canal usado**: Discord / X +**Idioma de la comunicación**: Inglés +**Issue relacionada**: #24 + +--- + +## Datos para seguimiento + +**Telegram del contribuidor (vos)**: @slice_contributor +**Contacto de la persona del producto**: Pendiente — buscar founder en Discord de Skyhitz o en X (@skyhitz) + +--- + +## Descripción del producto + +Skyhitz es una plataforma de música y NFTs para creadores construida sobre Stellar. Permite a artistas tokenizar sus canciones como NFTs, y a fans/inversores comprar fracciones de los derechos musicales, accediendo a una parte de los royalties futuros. Las dos partes que intercambian valor son los **artistas/creadores** (quienes emiten los NFTs y prometen royalties) y los **inversores/fans** (quienes compran los NFTs esperando retorno económico y acceso exclusivo). + +--- + +## Por qué es candidato para Slice + +Skyhitz combina creación de contenido, propiedad fraccionada y promesas de royalties — un entorno fértil para disputas. Los conflictos pueden surgir cuando: (1) un artista reclama que no recibió su pago correcto, (2) un inversor alega que los royalties prometidos no se están distribuyendo, o (3) hay disputas de autoría sobre quién tiene derecho a emitir el NFT de una canción. Sin un mecanismo de arbitraje neutral, estos conflictos dañan la reputación de la plataforma y pueden escalar a nivel legal. + +--- + +## Respuestas + +### Pregunta 1 — ¿Tienen conflictos entre usuarios hoy? + +> Pendiente de entrevista. Hipótesis: sí — las disputas de autoría y distribución de royalties son comunes en la industria musical. En plataformas NFT de música, aparecen rápido una vez hay volumen real. + +--- + +### Pregunta 2 — ¿Cómo resolvieron la última vez que ocurrió algo así? + +> Pendiente de entrevista. Hipótesis: el equipo de Skyhitz interviene caso por caso, potencialmente retirando el NFT o congelando distribuciones. + +--- + +### Pregunta 3 — ¿Hay alguien dedicado a esto? ¿Cuánto les cuesta? + +> Pendiente de entrevista. Hipótesis: no hay rol dedicado — los founders manejan los casos manualmente. + +--- + +### Pregunta 4 — ¿Qué es lo más frustrante? ¿Perdieron usuarios o reputación por esto? + +> Pendiente de entrevista. Hipótesis: artistas que se sienten desprotegidos frente a compradores de NFT que reclaman derechos que no les corresponden. + +--- + +### Pregunta 5 — Si pudieran diseñar la solución ideal, ¿cómo sería? + +> Pendiente de entrevista. Hipótesis: un proceso transparente donde alguien externo con conocimiento del dominio revise evidencia (contratos, certificados de copyright, conversaciones) y emita un fallo ejecutable. + +--- + +### Pregunta 6 — ¿Cuánto valdría resolver esto? ¿Qué modelo de pago preferirían? + +> No se preguntó / Pendiente de entrevista. + +--- + +## Síntesis + +### ¿Tienen disputas hoy? +Potencialmente — la combinación de NFTs de música, royalties y propiedad intelectual es inherentemente conflictiva a escala. + +### Cómo las resuelven actualmente (workaround real) +Desconocido — pendiente de entrevista. + +### ¿Están pagando por resolver esto hoy? +No mencionado. + +### Costo actual estimado +Desconocido — pendiente de entrevista. + +### Dolor funcional +Sin arbitraje externo, cualquier disputa de autoría o royalties en Skyhitz puede resultar en congelamiento de activos y pérdida de confianza en la plataforma. + +### Dolor emocional y social +La música es un dominio con fuerte componente emocional. Una disputa de autoría mal resuelta puede ser devastadora para la reputación del artista y de la plataforma. + +### Visión ideal según ellos +Pendiente de entrevista. + +### Willingness to pay +No se llegó a preguntar — pendiente. + +### Quote más revelador +> Pendiente de entrevista. + +--- + +## ¿Es un candidato para Slice? + +**Media** — Plataforma de NFTs musicales con royalties y propiedad fraccionada: el caso de uso es claro pero la frecuencia de disputas depende del volumen actual. Interesante para el roadmap de integraciones en el segmento de contenido digital. + +--- + +## Notas adicionales + +Skyhitz tiene presencia en Discord y X. Es una de las plataformas más maduras del ecosistema Stellar en el segmento de música. Buscar al founder @Skyhitz en Discord o @skyhitz en X para iniciar conversación. El ángulo de entrada ideal es el de protección al creador frente a disputas de propiedad intelectual. diff --git a/src/blockchain/types.ts b/src/blockchain/types.ts index 0e70a3f..4e98895 100644 --- a/src/blockchain/types.ts +++ b/src/blockchain/types.ts @@ -69,6 +69,38 @@ export interface DisputeData { // Add more fields as needed } +/** + * Full dispute representation used by the frontend + */ +export interface Dispute { + id: string | bigint; + title: string; + category: string; + status: number | string; + phase?: string; + deadlineLabel?: string; + isUrgent?: boolean; + stake?: string; + description?: string; + claimer: string; + defender: string; + claimerName?: string; + defenderName?: string; + claimerDescription?: string; + defenderDescription?: string; + claimerCarouselEvidence?: string[]; + defenderCarouselEvidence?: string[]; + claimerAudioEvidence?: string; + defenderAudioEvidence?: string; + evidence?: string[]; + jurorsRequired?: number; + revealDeadline?: number; + evidenceDeadline?: number; + claimerPaid?: boolean; + defenderPaid?: boolean; + ruling?: number; +} + /** * Voting parameters */ @@ -146,6 +178,10 @@ export interface BlockchainHooks { requestTokens: () => Promise; isRequesting: boolean; }; + useSubmitEvidence?: () => { + submitEvidence: (disputeId: any, metaHash: string) => Promise; + isSubmitting: boolean; + }; // Voting hooks useVote: (disputeId?: any) => any; diff --git a/src/components/disputes/DisputeCard.tsx b/src/components/disputes/DisputeCard.tsx index 9749a5c..c4f4e55 100644 --- a/src/components/disputes/DisputeCard.tsx +++ b/src/components/disputes/DisputeCard.tsx @@ -67,7 +67,7 @@ export const DisputeCard = ({ dispute }: { dispute: DisputeUI }) => { const isReadyForWithdrawal = dispute.status === DISPUTE_STATUS.REVEAL && dispute.phase === "WITHDRAW"; - const myVote = dispute.voters?.find((v) => v.isMe)?.vote; + const myVote = dispute.voters?.find((v: { isMe: boolean; vote: number }) => v.isMe)?.vote; return (
Date: Sun, 28 Jun 2026 05:55:02 +0000 Subject: [PATCH 2/2] fix(types): add Dispute type and useSubmitEvidence to resolve CI errors - Export Dispute interface from src/blockchain/types.ts (used by hooks.ts and useDisputeParties.ts) - Add useSubmitEvidence optional method to BlockchainHooks interface (used by mock.tsx and hooks.ts proxy) - Type voters.find() callback parameter in DisputeCard.tsx to fix implicit 'any' error Resolves 5 TypeScript errors (TS2305 x2, TS2339 x1, TS2353 x1, TS7006 x1) Closes #24 --- src/blockchain/types.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/blockchain/types.ts b/src/blockchain/types.ts index 4e98895..b6bbf03 100644 --- a/src/blockchain/types.ts +++ b/src/blockchain/types.ts @@ -75,13 +75,13 @@ export interface DisputeData { export interface Dispute { id: string | bigint; title: string; + description?: string; category: string; status: number | string; phase?: string; deadlineLabel?: string; isUrgent?: boolean; stake?: string; - description?: string; claimer: string; defender: string; claimerName?: string; @@ -94,6 +94,7 @@ export interface Dispute { defenderAudioEvidence?: string; evidence?: string[]; jurorsRequired?: number; + votesCount?: number; revealDeadline?: number; evidenceDeadline?: number; claimerPaid?: boolean;