From e3c9341ce4b5e08863dcdb65dcd143480801c6f9 Mon Sep 17 00:00:00 2001
From: JaiBo <65864145+iafhurtado@users.noreply.github.com>
Date: Sun, 25 Feb 2024 18:27:17 +0100
Subject: [PATCH] fixed index copy and started working on streams
---
package.json | 2 +
packages/nextjs/components/index/data.js | 32 +-
packages/nextjs/components/index/faq.js | 10 +-
packages/nextjs/components/index/hero.tsx | 21 +-
.../nextjs/components/index/testimonials.js | 15 +-
.../nextjs/components/streams/SuperTokens.tsx | 122 +
.../components/streams/abis/CFAv1Forwarder.ts | 239 +
.../components/streams/abis/SuperTokenABI.ts | 887 ++++
packages/nextjs/pages/index.tsx | 34 +-
packages/nextjs/pages/streams.tsx | 14 +
packages/nextjs/public/warrior.png | Bin 0 -> 711639 bytes
yarn.lock | 4382 ++++++++++++++++-
12 files changed, 5575 insertions(+), 183 deletions(-)
create mode 100644 packages/nextjs/components/streams/SuperTokens.tsx
create mode 100644 packages/nextjs/components/streams/abis/CFAv1Forwarder.ts
create mode 100644 packages/nextjs/components/streams/abis/SuperTokenABI.ts
create mode 100644 packages/nextjs/pages/streams.tsx
create mode 100644 packages/nextjs/public/warrior.png
diff --git a/package.json b/package.json
index 9ea450c..8c3aa05 100644
--- a/package.json
+++ b/package.json
@@ -39,6 +39,8 @@
"packageManager": "yarn@3.2.3",
"dependencies": {
"@nextui-org/modal": "^2.0.28",
+ "@superfluid-finance/sdk-core": "^0.6.12",
+ "@superfluid-finance/widget": "^0.4.8",
"@uniswap/sdk-core": "^4.0.10",
"@uniswap/smart-order-router": "^3.21.1",
"@uniswap/v3-sdk": "^3.10.2",
diff --git a/packages/nextjs/components/index/data.js b/packages/nextjs/components/index/data.js
index 2a2e5ca..054ee61 100644
--- a/packages/nextjs/components/index/data.js
+++ b/packages/nextjs/components/index/data.js
@@ -1,4 +1,4 @@
-import benefitOneImg from "../../public/benefit-one.png";
+import benefitOneImg from "../../public/warrior.png";
import benefitTwoImg from "../../public/benefit-two.png";
import {
AdjustmentsHorizontalIcon,
@@ -11,45 +11,45 @@ import {
const benefitOne = {
title: "El primer peso MXN decentralizado",
- desc: "Por medio de contratos inteligentes, $XOC se convierte en una peso MXN digital sin intermediarios de por medio, lo que significa que no está controlada por ningún gobierno o banco central. Esto permite a los usuarios enviar y recibir dinero de forma rápida y segura, sin importar dónde se encuentren.",
+ desc: "$XOC es la encarnación digital del peso mexicano gracias a los contratos inteligentes. Sin intermediarios, esto significa que está libre de control gubernamental o bancario. Así, los usuarios pueden realizar transacciones de manera rápida y segura, sin importar su ubicación.",
image: benefitOneImg,
bullets: [
{
- title: "Tu moneda es codigo en el internet",
- desc: "Es la siguiente evolución del dinero en linea.",
+ title: "Tu moneda, en código en la red:",
+ desc: "Es la evolución natural del dinero digital.",
icon: ,
},
{
- title: "Transacciones rápidas y seguras",
- desc: "Estamos en las redes de Polygon, Gnosis Chain y Optimism.",
+ title: "Transacciones ágiles y seguras:",
+ desc: "Con presencia en las redes de Polygon, Gnosis Chain y Optimism, $XOC garantiza rapidez y seguridad en cada transacción.",
icon: ,
},
{
- title: "Sin intermediarios de por medio",
- desc: "No está controlada por ningún gobierno o banco central.",
+ title: "Sin intermediarios:",
+ desc: "Libre de la influencia gubernamental o bancaria, $XOC te ofrece autonomía y libertad financiera.",
icon: ,
},
],
};
const benefitTwo = {
- title: "Construida por La DAO",
- desc: "Todo surge desde una comunidad de personas que buscan construir un sistema financiero abierto y descentralizado. La DAO es una organización autónoma descentralizada que se encarga de gestionar todo el trabajo requerido para construir en DeFi.",
+ title: "Desarrollado por La DAO",
+ desc: "En el corazón de Scaffold-XOC late el espíritu de una comunidad dedicada a forjar un sistema financiero abierto y descentralizado. La DAO representa una organización autónoma descentralizada que lidera el camino en la construcción de soluciones innovadoras en DeFi.",
image: benefitTwoImg,
bullets: [
{
- title: "Construimos usando herramientas Web3",
- desc: "OpenZeppelin, Scaffold-Eth-2, DaoHaus, Safe y muchas mas...",
+ title: "Construyendo con herramientas Web3:",
+ desc: "Nuestro arsenal está compuesto por las mejores herramientas de Web3, desde OpenZeppelin hasta Scaffold-Eth-2, pasando por DAOHaus y Safe, entre muchas otras. Cada una de estas herramientas es una pieza clave en la construcción de un futuro financiero más inclusivo y accesible.",
icon: ,
},
{
- title: "Una nueva democracia financiera",
- desc: "Todo el trabajo esta direccionado a construir una nueva forma mas justa de hacer finanzas.",
+ title: "Una nueva era de democracia financiera:",
+ desc: "Cada línea de código, cada reunión, cada decisión está orientada hacia la creación de un sistema financiero más equitativo y transparente. Nos comprometemos a impulsar una revolución financiera que brinde oportunidades para todos, sin importar su origen o situación económica.",
icon: ,
},
{
- title: "Encuentra un mentor, o se el que nunca tuviste",
- desc: "Nos encanta onboardear mas y mas gente dispuesta a contribuir.",
+ title: "Encuentra un mentor, o sé el mentor que siempre quisiste tener:",
+ desc: "En La DAO, valoramos el crecimiento personal y profesional. Estamos aquí para guiar y apoyar a aquellos que desean contribuir y aprender. ¡Únete a nosotros y sé parte de esta emocionante jornada hacia un futuro financiero más brillante y equitativo!",
icon: ,
},
],
diff --git a/packages/nextjs/components/index/faq.js b/packages/nextjs/components/index/faq.js
index 35d91cc..1bbf41d 100644
--- a/packages/nextjs/components/index/faq.js
+++ b/packages/nextjs/components/index/faq.js
@@ -5,7 +5,7 @@ const FaqItem = ({ question, answer }) => {
return (
-
+
{question}
@@ -33,22 +33,22 @@ const faqdata = [
{
question: "Como se respalda el valor de cada $XOC?",
answer:
- "Cada $XOC está respaldado por un token ERC20 en la red de Polygon, Gnosis Chain and Optimism, el cual se puede liquidar por el valor equivalente a la deuda en XOC y saldar la cuenta en el proceso, todo confiando en la red de validadores.",
+ "Cada $XOC está respaldado por un token ERC20 en las redes de Polygon, Gnosis Chain y Optimism. Este respaldo garantiza que cada $XOC pueda ser liquidado por su valor equivalente en deuda en $XOC y saldar la cuenta en el proceso, todo respaldado por la red de validadores.",
},
{
question: "Que puedo hacer con $XOC?",
answer:
- "Puedes usar $XOC para pagar tus deudas, comprar bienes y servicios, o simplemente mantenerlo como una reserva de valor como si fuera cualquier otro peso mexicano. Lo mas impactante que puedes hacer es apoyar a la comunidad de La DAO construyendo el siguiente sistema fincanciero abierto y decentralizado.",
+ "Puedes utilizar $XOC para pagar deudas, adquirir bienes y servicios, o simplemente mantenerlo como reserva de valor, al igual que cualquier otro peso mexicano. Además, puedes apoyar a la comunidad de La DAO construyendo el próximo sistema financiero abierto y descentralizado.",
},
{
question: "Quien mantiene todo esto? ",
answer:
- "Usamos un modelo de negocio por medio una DAO, al momento se llama solo 'La DAO' quien se encarga de gestionar todo el trabajo requerido para construir en DeFi.",
+ "Utilizamos un modelo de negocio basado en una DAO, actualmente conocida como 'La DAO'. Esta organización autónoma descentralizada se encarga de gestionar todo el trabajo necesario para construir en DeFi.",
},
{
question: "Como me involucro? ",
answer:
- "Puedes comprar $XOC en cualquier exchange que lo ofrezca, o puedes participar en la DAO y ayudar a construir el futuro de las finanzas descentralizadas. Si tienes alguna habilidad que creas que pueda ser útil, no dudes en contactarnos.",
+ "Puedes adquirir $XOC en cualquier exchange que lo ofrezca, o participar en la DAO y contribuir a la construcción del futuro de las finanzas descentralizadas. Si tienes habilidades que crees que puedan ser útiles, no dudes en contactarnos.",
},
];
diff --git a/packages/nextjs/components/index/hero.tsx b/packages/nextjs/components/index/hero.tsx
index 6439ab2..b8adb5a 100644
--- a/packages/nextjs/components/index/hero.tsx
+++ b/packages/nextjs/components/index/hero.tsx
@@ -95,22 +95,27 @@ const Hero = () => {
Bienvenidos
A Scaffold-XOC
-
- Este proyecto open-source es construido con{" "}
+
+ ¡Nos complace tenerte aquí!
+
+
+ Scaffold-XOC es un proyecto de código abierto diseñado con{" "}
- scaffold-eth-2
+ Scaffold-Eth-2.
{" "}
- lo que significa que puedes clonar el codigo y usarlo a tu favor. Incluye algunas funciones conectadas a
- los contratos de $XOC, incluyendo el ERC-20 y el protocolo para acuñar y quemar el stablecoin y una
- interfaz de usuario sencilla con la que interactuar.
+ Esto significa que puedes clonar el código y empezar a utilizarlo fácilmente. Incluye funciones conectadas
+ a los contratos de $XOC y el protocolo para acuñar y quemar el stablecoin. Además, cuenta con una interfaz
+ de usuario intuitiva para que puedas empezar a interactuar de forma sencilla.
-
- Compra tus primeros 100 $XOC para apoyar a los desarrolladores de este proyecto.
+
+ ¡No importa tu nivel de experiencia! Ya seas un experto en tecnología blockchain o estés dando tus
+ primeros pasos, Scaffold-XOC está aquí para ayudarte a comprender y utilizar $XOC de manera fácil y
+ accesible. ¡Explora, aprende y únete a la revolución de las finanzas descentralizadas con Scaffold-XOC!
diff --git a/packages/nextjs/components/index/testimonials.js b/packages/nextjs/components/index/testimonials.js
index 39094b7..ef97cb0 100644
--- a/packages/nextjs/components/index/testimonials.js
+++ b/packages/nextjs/components/index/testimonials.js
@@ -12,30 +12,29 @@ const Testimonials = () => {
- Share a real testimonial
- that hits some of your benefits from one of your popular customer.
+ $XOC revolucionó mi desarrollo financiero. Rápido, seguro y empoderador. Gracias por abrir
+ posibilidades.
-
+
- Make sure you only pick the right sentence
- to keep it short and simple.
+ Con $XOC, las transacciones son rápidas y seguras. Me siento parte de una comunidad sólida .
-
+
- This is an awesome landing page template I've seen. I would use this for anything.
+ $XOC simplifica mis transacciones. Empoderamiento financiero y acceso a DeFi. ¡Gracias por la revolución!
-
+
diff --git a/packages/nextjs/components/streams/SuperTokens.tsx b/packages/nextjs/components/streams/SuperTokens.tsx
new file mode 100644
index 0000000..47dfab7
--- /dev/null
+++ b/packages/nextjs/components/streams/SuperTokens.tsx
@@ -0,0 +1,122 @@
+import React, { useState } from "react";
+import { xocolatlABI } from "../xoc-dapp/abis/xocabis";
+import { CFAv1ForwarderABI } from "./abis/CFAv1Forwarder";
+import { SuperTokenABI } from "./abis/SuperTokenABI";
+import { useAccount } from "wagmi";
+import { useContractWrite } from "wagmi";
+
+const SupertokensComponent: React.FC = () => {
+ const { address } = useAccount();
+ const [approveAmount, setApproveAmount] = useState("");
+ const [receiverAddress, setReceiverAddress] = useState("");
+ const [deleteAddress, setDeleteAddress] = useState("");
+ const [upgradeAmount, setUpgradeAmount] = useState("");
+ const [downgradeAmount, setDowngradeAmount] = useState("");
+
+ const { write: approveUpgrade } = useContractWrite({
+ address: "0xa411c9Aa00E020e4f88Bc19996d29c5B7ADB4ACf",
+ abi: xocolatlABI,
+ functionName: "approve",
+ args: ["0x2c6dAB164dB072a8E2163fc5A547F229dc185C9f", approveAmount],
+ });
+
+ const { write: upgrade } = useContractWrite({
+ address: "0x36d9a149895d905D117C38F3090f4344B76Ec9F4",
+ abi: SuperTokenABI,
+ functionName: "upgrade",
+ args: [upgradeAmount],
+ });
+
+ const { write: downgrade } = useContractWrite({
+ address: "0x36d9a149895d905D117C38F3090f4344B76Ec9F4",
+ abi: SuperTokenABI,
+ functionName: "downgrade",
+ args: [downgradeAmount],
+ });
+
+ const { write: forwarder } = useContractWrite({
+ address: "0xcfA132E353cB4E398080B9700609bb008eceB125",
+ abi: CFAv1ForwarderABI,
+ functionName: "setFlowrate",
+ args: ["0x36d9a149895d905D117C38F3090f4344B76Ec9F4", receiverAddress, BigInt(100)],
+ });
+
+ const { write: deleteFlow } = useContractWrite({
+ address: "0xcfA132E353cB4E398080B9700609bb008eceB125",
+ abi: CFAv1ForwarderABI,
+ functionName: "deleteFlow",
+ args: ["0x36d9a149895d905D117C38F3090f4344B76Ec9F4", address, deleteAddress, "0x0"],
+ });
+
+ return (
+ <>
+
+
Approve Upgrade
+ setApproveAmount(e.target.value)}
+ />
+ approveUpgrade()}>
+ Approve Upgrade
+
+
+
+
Upgrade
+ setUpgradeAmount(e.target.value)}
+ />
+ upgrade()}>
+ Upgrade
+
+
+
+
Downgrade
+ setDowngradeAmount(e.target.value)}
+ />
+ downgrade()}>
+ Downgrade
+
+
+
+
Set Flowrate
+ setReceiverAddress(e.target.value)}
+ />
+ forwarder()}>
+ Set Flowrate
+
+
+
+
Delete Flowrate
+ setDeleteAddress(e.target.value)}
+ />
+ deleteFlow()}>
+ Delete Flowrate
+
+
+ >
+ );
+};
+
+export default SupertokensComponent;
diff --git a/packages/nextjs/components/streams/abis/CFAv1Forwarder.ts b/packages/nextjs/components/streams/abis/CFAv1Forwarder.ts
new file mode 100644
index 0000000..4457561
--- /dev/null
+++ b/packages/nextjs/components/streams/abis/CFAv1Forwarder.ts
@@ -0,0 +1,239 @@
+export const CFAv1ForwarderABI = [
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperfluid",
+ name: "host",
+ type: "address",
+ },
+ ],
+ stateMutability: "nonpayable",
+ type: "constructor",
+ },
+ { inputs: [], name: "CFA_FWD_INVALID_FLOW_RATE", type: "error" },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "sender", type: "address" },
+ { internalType: "address", name: "receiver", type: "address" },
+ { internalType: "int96", name: "flowrate", type: "int96" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "createFlow",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "sender", type: "address" },
+ { internalType: "address", name: "receiver", type: "address" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "deleteFlow",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "account", type: "address" },
+ ],
+ name: "getAccountFlowInfo",
+ outputs: [
+ { internalType: "uint256", name: "lastUpdated", type: "uint256" },
+ { internalType: "int96", name: "flowrate", type: "int96" },
+ { internalType: "uint256", name: "deposit", type: "uint256" },
+ { internalType: "uint256", name: "owedDeposit", type: "uint256" },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "account", type: "address" },
+ ],
+ name: "getAccountFlowrate",
+ outputs: [{ internalType: "int96", name: "flowrate", type: "int96" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "int96", name: "flowrate", type: "int96" },
+ ],
+ name: "getBufferAmountByFlowrate",
+ outputs: [{ internalType: "uint256", name: "bufferAmount", type: "uint256" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "sender", type: "address" },
+ { internalType: "address", name: "receiver", type: "address" },
+ ],
+ name: "getFlowInfo",
+ outputs: [
+ { internalType: "uint256", name: "lastUpdated", type: "uint256" },
+ { internalType: "int96", name: "flowrate", type: "int96" },
+ { internalType: "uint256", name: "deposit", type: "uint256" },
+ { internalType: "uint256", name: "owedDeposit", type: "uint256" },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "sender", type: "address" },
+ { internalType: "address", name: "flowOperator", type: "address" },
+ ],
+ name: "getFlowOperatorPermissions",
+ outputs: [
+ { internalType: "uint8", name: "permissions", type: "uint8" },
+ { internalType: "int96", name: "flowrateAllowance", type: "int96" },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "sender", type: "address" },
+ { internalType: "address", name: "receiver", type: "address" },
+ ],
+ name: "getFlowrate",
+ outputs: [{ internalType: "int96", name: "flowrate", type: "int96" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "flowOperator", type: "address" },
+ ],
+ name: "grantPermissions",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "flowOperator", type: "address" },
+ ],
+ name: "revokePermissions",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "receiver", type: "address" },
+ { internalType: "int96", name: "flowrate", type: "int96" },
+ ],
+ name: "setFlowrate",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "sender", type: "address" },
+ { internalType: "address", name: "receiver", type: "address" },
+ { internalType: "int96", name: "flowrate", type: "int96" },
+ ],
+ name: "setFlowrateFrom",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "sender", type: "address" },
+ { internalType: "address", name: "receiver", type: "address" },
+ { internalType: "int96", name: "flowrate", type: "int96" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "updateFlow",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "contract ISuperToken",
+ name: "token",
+ type: "address",
+ },
+ { internalType: "address", name: "flowOperator", type: "address" },
+ { internalType: "uint8", name: "permissions", type: "uint8" },
+ { internalType: "int96", name: "flowrateAllowance", type: "int96" },
+ ],
+ name: "updateFlowOperatorPermissions",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+];
diff --git a/packages/nextjs/components/streams/abis/SuperTokenABI.ts b/packages/nextjs/components/streams/abis/SuperTokenABI.ts
new file mode 100644
index 0000000..c6487f6
--- /dev/null
+++ b/packages/nextjs/components/streams/abis/SuperTokenABI.ts
@@ -0,0 +1,887 @@
+export const SuperTokenABI = [
+ {
+ inputs: [
+ { internalType: "contract ISuperfluid", name: "host", type: "address" },
+ { internalType: "contract IConstantOutflowNFT", name: "constantOutflowNFT", type: "address" },
+ { internalType: "contract IConstantInflowNFT", name: "constantInflowNFT", type: "address" },
+ { internalType: "contract IPoolAdminNFT", name: "poolAdminNFT", type: "address" },
+ { internalType: "contract IPoolMemberNFT", name: "poolMemberNFT", type: "address" },
+ ],
+ stateMutability: "nonpayable",
+ type: "constructor",
+ },
+ { inputs: [], name: "SF_TOKEN_AGREEMENT_ALREADY_EXISTS", type: "error" },
+ { inputs: [], name: "SF_TOKEN_AGREEMENT_DOES_NOT_EXIST", type: "error" },
+ { inputs: [], name: "SF_TOKEN_BURN_INSUFFICIENT_BALANCE", type: "error" },
+ { inputs: [], name: "SF_TOKEN_MOVE_INSUFFICIENT_BALANCE", type: "error" },
+ { inputs: [], name: "SF_TOKEN_ONLY_HOST", type: "error" },
+ { inputs: [], name: "SF_TOKEN_ONLY_LISTED_AGREEMENT", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_MINT_TO_ZERO_ADDRESS", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_NFT_PROXY_ADDRESS_CHANGED", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_NO_UNDERLYING_TOKEN", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_ONLY_ADMIN", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_ONLY_GOV_OWNER", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_ONLY_SELF", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS", type: "error" },
+ { inputs: [], name: "SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS", type: "error" },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "oldAdmin", type: "address" },
+ { indexed: true, internalType: "address", name: "newAdmin", type: "address" },
+ ],
+ name: "AdminChanged",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "agreementClass", type: "address" },
+ { indexed: false, internalType: "bytes32", name: "id", type: "bytes32" },
+ { indexed: false, internalType: "bytes32[]", name: "data", type: "bytes32[]" },
+ ],
+ name: "AgreementCreated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "agreementClass", type: "address" },
+ { indexed: false, internalType: "bytes32", name: "id", type: "bytes32" },
+ { indexed: true, internalType: "address", name: "penaltyAccount", type: "address" },
+ { indexed: true, internalType: "address", name: "rewardAccount", type: "address" },
+ { indexed: false, internalType: "uint256", name: "rewardAmount", type: "uint256" },
+ ],
+ name: "AgreementLiquidated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: false, internalType: "address", name: "liquidatorAccount", type: "address" },
+ { indexed: true, internalType: "address", name: "agreementClass", type: "address" },
+ { indexed: false, internalType: "bytes32", name: "id", type: "bytes32" },
+ { indexed: true, internalType: "address", name: "penaltyAccount", type: "address" },
+ { indexed: true, internalType: "address", name: "bondAccount", type: "address" },
+ { indexed: false, internalType: "uint256", name: "rewardAmount", type: "uint256" },
+ { indexed: false, internalType: "uint256", name: "bailoutAmount", type: "uint256" },
+ ],
+ name: "AgreementLiquidatedBy",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "agreementClass", type: "address" },
+ { indexed: false, internalType: "bytes32", name: "id", type: "bytes32" },
+ { indexed: true, internalType: "address", name: "liquidatorAccount", type: "address" },
+ { indexed: true, internalType: "address", name: "targetAccount", type: "address" },
+ { indexed: false, internalType: "address", name: "rewardAmountReceiver", type: "address" },
+ { indexed: false, internalType: "uint256", name: "rewardAmount", type: "uint256" },
+ { indexed: false, internalType: "int256", name: "targetAccountBalanceDelta", type: "int256" },
+ { indexed: false, internalType: "bytes", name: "liquidationTypeData", type: "bytes" },
+ ],
+ name: "AgreementLiquidatedV2",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "agreementClass", type: "address" },
+ { indexed: true, internalType: "address", name: "account", type: "address" },
+ { indexed: false, internalType: "uint256", name: "slotId", type: "uint256" },
+ ],
+ name: "AgreementStateUpdated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "agreementClass", type: "address" },
+ { indexed: false, internalType: "bytes32", name: "id", type: "bytes32" },
+ ],
+ name: "AgreementTerminated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "agreementClass", type: "address" },
+ { indexed: false, internalType: "bytes32", name: "id", type: "bytes32" },
+ { indexed: false, internalType: "bytes32[]", name: "data", type: "bytes32[]" },
+ ],
+ name: "AgreementUpdated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "owner", type: "address" },
+ { indexed: true, internalType: "address", name: "spender", type: "address" },
+ { indexed: false, internalType: "uint256", name: "value", type: "uint256" },
+ ],
+ name: "Approval",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "operator", type: "address" },
+ { indexed: true, internalType: "address", name: "tokenHolder", type: "address" },
+ ],
+ name: "AuthorizedOperator",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "bailoutAccount", type: "address" },
+ { indexed: false, internalType: "uint256", name: "bailoutAmount", type: "uint256" },
+ ],
+ name: "Bailout",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "operator", type: "address" },
+ { indexed: true, internalType: "address", name: "from", type: "address" },
+ { indexed: false, internalType: "uint256", name: "amount", type: "uint256" },
+ { indexed: false, internalType: "bytes", name: "data", type: "bytes" },
+ { indexed: false, internalType: "bytes", name: "operatorData", type: "bytes" },
+ ],
+ name: "Burned",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: false, internalType: "bytes32", name: "uuid", type: "bytes32" },
+ { indexed: false, internalType: "address", name: "codeAddress", type: "address" },
+ ],
+ name: "CodeUpdated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "contract IConstantInflowNFT", name: "constantInflowNFT", type: "address" },
+ ],
+ name: "ConstantInflowNFTCreated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "contract IConstantOutflowNFT", name: "constantOutflowNFT", type: "address" },
+ ],
+ name: "ConstantOutflowNFTCreated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [{ indexed: false, internalType: "uint8", name: "version", type: "uint8" }],
+ name: "Initialized",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "operator", type: "address" },
+ { indexed: true, internalType: "address", name: "to", type: "address" },
+ { indexed: false, internalType: "uint256", name: "amount", type: "uint256" },
+ { indexed: false, internalType: "bytes", name: "data", type: "bytes" },
+ { indexed: false, internalType: "bytes", name: "operatorData", type: "bytes" },
+ ],
+ name: "Minted",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [{ indexed: true, internalType: "contract IPoolAdminNFT", name: "poolAdminNFT", type: "address" }],
+ name: "PoolAdminNFTCreated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [{ indexed: true, internalType: "contract IPoolMemberNFT", name: "poolMemberNFT", type: "address" }],
+ name: "PoolMemberNFTCreated",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "operator", type: "address" },
+ { indexed: true, internalType: "address", name: "tokenHolder", type: "address" },
+ ],
+ name: "RevokedOperator",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "operator", type: "address" },
+ { indexed: true, internalType: "address", name: "from", type: "address" },
+ { indexed: true, internalType: "address", name: "to", type: "address" },
+ { indexed: false, internalType: "uint256", name: "amount", type: "uint256" },
+ { indexed: false, internalType: "bytes", name: "data", type: "bytes" },
+ { indexed: false, internalType: "bytes", name: "operatorData", type: "bytes" },
+ ],
+ name: "Sent",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "account", type: "address" },
+ { indexed: false, internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "TokenDowngraded",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "account", type: "address" },
+ { indexed: false, internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "TokenUpgraded",
+ type: "event",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ { indexed: true, internalType: "address", name: "from", type: "address" },
+ { indexed: true, internalType: "address", name: "to", type: "address" },
+ { indexed: false, internalType: "uint256", name: "value", type: "uint256" },
+ ],
+ name: "Transfer",
+ type: "event",
+ },
+ {
+ inputs: [],
+ name: "CONSTANT_INFLOW_NFT",
+ outputs: [{ internalType: "contract IConstantInflowNFT", name: "", type: "address" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "CONSTANT_OUTFLOW_NFT",
+ outputs: [{ internalType: "contract IConstantOutflowNFT", name: "", type: "address" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "POOL_ADMIN_NFT",
+ outputs: [{ internalType: "contract IPoolAdminNFT", name: "", type: "address" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "POOL_MEMBER_NFT",
+ outputs: [{ internalType: "contract IPoolMemberNFT", name: "", type: "address" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "address", name: "spender", type: "address" },
+ ],
+ name: "allowance",
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "approve",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "operator", type: "address" }],
+ name: "authorizeOperator",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "account", type: "address" }],
+ name: "balanceOf",
+ outputs: [{ internalType: "uint256", name: "balance", type: "uint256" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "burn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ { inputs: [], name: "castrate", outputs: [], stateMutability: "nonpayable", type: "function" },
+ {
+ inputs: [{ internalType: "address", name: "newAdmin", type: "address" }],
+ name: "changeAdmin",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "bytes32", name: "id", type: "bytes32" },
+ { internalType: "bytes32[]", name: "data", type: "bytes32[]" },
+ ],
+ name: "createAgreement",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "decimals",
+ outputs: [{ internalType: "uint8", name: "", type: "uint8" }],
+ stateMutability: "pure",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "uint256", name: "subtractedValue", type: "uint256" },
+ ],
+ name: "decreaseAllowance",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "defaultOperators",
+ outputs: [{ internalType: "address[]", name: "", type: "address[]" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }],
+ name: "downgrade",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "to", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "downgradeTo",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "account", type: "address" }],
+ name: "getAccountActiveAgreements",
+ outputs: [{ internalType: "contract ISuperAgreement[]", name: "", type: "address[]" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "getAdmin",
+ outputs: [{ internalType: "address", name: "", type: "address" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "agreementClass", type: "address" },
+ { internalType: "bytes32", name: "id", type: "bytes32" },
+ { internalType: "uint256", name: "dataLength", type: "uint256" },
+ ],
+ name: "getAgreementData",
+ outputs: [{ internalType: "bytes32[]", name: "data", type: "bytes32[]" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "agreementClass", type: "address" },
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "slotId", type: "uint256" },
+ { internalType: "uint256", name: "dataLength", type: "uint256" },
+ ],
+ name: "getAgreementStateSlot",
+ outputs: [{ internalType: "bytes32[]", name: "slotData", type: "bytes32[]" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "getCodeAddress",
+ outputs: [{ internalType: "address", name: "codeAddress", type: "address" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "getHost",
+ outputs: [{ internalType: "address", name: "host", type: "address" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "getUnderlyingDecimals",
+ outputs: [{ internalType: "uint8", name: "", type: "uint8" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "getUnderlyingToken",
+ outputs: [{ internalType: "address", name: "", type: "address" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "granularity",
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
+ stateMutability: "pure",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "uint256", name: "addedValue", type: "uint256" },
+ ],
+ name: "increaseAllowance",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "contract IERC20", name: "underlyingToken", type: "address" },
+ { internalType: "uint8", name: "underlyingDecimals", type: "uint8" },
+ { internalType: "string", name: "n", type: "string" },
+ { internalType: "string", name: "s", type: "string" },
+ ],
+ name: "initialize",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "contract IERC20", name: "underlyingToken", type: "address" },
+ { internalType: "uint8", name: "underlyingDecimals", type: "uint8" },
+ { internalType: "string", name: "n", type: "string" },
+ { internalType: "string", name: "s", type: "string" },
+ { internalType: "address", name: "admin", type: "address" },
+ ],
+ name: "initializeWithAdmin",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "timestamp", type: "uint256" },
+ ],
+ name: "isAccountCritical",
+ outputs: [{ internalType: "bool", name: "isCritical", type: "bool" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "account", type: "address" }],
+ name: "isAccountCriticalNow",
+ outputs: [{ internalType: "bool", name: "isCritical", type: "bool" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "timestamp", type: "uint256" },
+ ],
+ name: "isAccountSolvent",
+ outputs: [{ internalType: "bool", name: "isSolvent", type: "bool" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "account", type: "address" }],
+ name: "isAccountSolventNow",
+ outputs: [{ internalType: "bool", name: "isSolvent", type: "bool" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "operator", type: "address" },
+ { internalType: "address", name: "tokenHolder", type: "address" },
+ ],
+ name: "isOperatorFor",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "bytes32", name: "id", type: "bytes32" },
+ { internalType: "bytes", name: "liquidationTypeData", type: "bytes" },
+ { internalType: "address", name: "liquidatorAccount", type: "address" },
+ { internalType: "bool", name: "useDefaultRewardAccount", type: "bool" },
+ { internalType: "address", name: "targetAccount", type: "address" },
+ { internalType: "uint256", name: "rewardAmount", type: "uint256" },
+ { internalType: "int256", name: "targetAccountBalanceDelta", type: "int256" },
+ ],
+ name: "makeLiquidationPayoutsV2",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "name",
+ outputs: [{ internalType: "string", name: "", type: "string" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "operationApprove",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "uint256", name: "subtractedValue", type: "uint256" },
+ ],
+ name: "operationDecreaseAllowance",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "operationDowngrade",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "uint256", name: "addedValue", type: "uint256" },
+ ],
+ name: "operationIncreaseAllowance",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "address", name: "recipient", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "operationSend",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "address", name: "recipient", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "operationTransferFrom",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "operationUpgrade",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ { internalType: "bytes", name: "operatorData", type: "bytes" },
+ ],
+ name: "operatorBurn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "sender", type: "address" },
+ { internalType: "address", name: "recipient", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ { internalType: "bytes", name: "operatorData", type: "bytes" },
+ ],
+ name: "operatorSend",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "proxiableUUID",
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
+ stateMutability: "pure",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "timestamp", type: "uint256" },
+ ],
+ name: "realtimeBalanceOf",
+ outputs: [
+ { internalType: "int256", name: "availableBalance", type: "int256" },
+ { internalType: "uint256", name: "deposit", type: "uint256" },
+ { internalType: "uint256", name: "owedDeposit", type: "uint256" },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "account", type: "address" }],
+ name: "realtimeBalanceOfNow",
+ outputs: [
+ { internalType: "int256", name: "availableBalance", type: "int256" },
+ { internalType: "uint256", name: "deposit", type: "uint256" },
+ { internalType: "uint256", name: "owedDeposit", type: "uint256" },
+ { internalType: "uint256", name: "timestamp", type: "uint256" },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "operator", type: "address" }],
+ name: "revokeOperator",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "selfApproveFor",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "selfBurn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "selfMint",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "holder", type: "address" },
+ { internalType: "address", name: "spender", type: "address" },
+ { internalType: "address", name: "recipient", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "selfTransferFrom",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "recipient", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "send",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "int256", name: "delta", type: "int256" },
+ ],
+ name: "settleBalance",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "symbol",
+ outputs: [{ internalType: "string", name: "", type: "string" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "bytes32", name: "id", type: "bytes32" },
+ { internalType: "uint256", name: "dataLength", type: "uint256" },
+ ],
+ name: "terminateAgreement",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }],
+ name: "toUnderlyingAmount",
+ outputs: [
+ { internalType: "uint256", name: "underlyingAmount", type: "uint256" },
+ { internalType: "uint256", name: "adjustedAmount", type: "uint256" },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "totalSupply",
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "recipient", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "transfer",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "recipient", type: "address" }],
+ name: "transferAll",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "holder", type: "address" },
+ { internalType: "address", name: "recipient", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ ],
+ name: "transferFrom",
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "bytes32", name: "id", type: "bytes32" },
+ { internalType: "bytes32[]", name: "data", type: "bytes32[]" },
+ ],
+ name: "updateAgreementData",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "account", type: "address" },
+ { internalType: "uint256", name: "slotId", type: "uint256" },
+ { internalType: "bytes32[]", name: "slotData", type: "bytes32[]" },
+ ],
+ name: "updateAgreementStateSlot",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "address", name: "newAddress", type: "address" }],
+ name: "updateCode",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }],
+ name: "upgrade",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "address", name: "to", type: "address" },
+ { internalType: "uint256", name: "amount", type: "uint256" },
+ { internalType: "bytes", name: "userData", type: "bytes" },
+ ],
+ name: "upgradeTo",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+];
diff --git a/packages/nextjs/pages/index.tsx b/packages/nextjs/pages/index.tsx
index a5f4e8b..0e8766e 100644
--- a/packages/nextjs/pages/index.tsx
+++ b/packages/nextjs/pages/index.tsx
@@ -28,22 +28,34 @@ const Home: NextPage = () => {
/>
-
- El uso de $XOC es la unica forma de integrarte a la comunidad emergente Web3 que estar creciendo en México y el
- mundo. Aquí te dejamos algunos beneficios de usar $XOC.
+
+ $XOC te abre las puertas a la creciente comunidad de Web3, tanto en México como en el mundo. Descubre los
+ múltiples beneficios que ofrece:
-
- Aprende como funciona la magia de $XOC y como puedes empezar a usarlo. Aquí te dejamos un video para que te des
- una idea de como funciona el protocolo y donde queda mas trabajo por hacer.
-
-
- Aqui te dejamos algunos testimonios de la comunidad emergente que esta construyendo y ya esta usando $XOC y como
- les ha cambiado la vida.
+ {/*
+
+
¿Te preguntas cómo se lleva a cabo la magia de $XOC? ¿Quieres entender cómo funciona este innovador protocolo y cómo puedes comenzar a usarlo? ¡No busques más! Te presentamos un video que te llevará paso a paso a través del fascinante mundo de $XOC.
+
+
Descubre la magia de $XOC:
+
+
+ Aprende cómo funciona el protocolo.
+ Descubre las posibilidades que ofrece.
+ Prepárate para ser parte de la revolución financiera.
+ ¡Prepárate para una experiencia visual que te dejará con ganas de más!
+
+
+ */}
+
+
+ Descubre los testimonios auténticos de aquellos que forman parte de la vibrante comunidad que está construyendo
+ y utilizando $XOC. Desde experiencias transformadoras hasta historias de éxito, aquí encontrarás la inspiración
+ que necesitas para unirte a esta emocionante revolución financiera.
-
+
Esta sección es para responder preguntas frecuentes de la comunidad emergente alrededor de $XOC y todo ese
desmadre.
diff --git a/packages/nextjs/pages/streams.tsx b/packages/nextjs/pages/streams.tsx
new file mode 100644
index 0000000..cf29660
--- /dev/null
+++ b/packages/nextjs/pages/streams.tsx
@@ -0,0 +1,14 @@
+import { MetaHeader } from "../components/MetaHeader";
+import type { NextPage } from "next";
+import SuperTokens from "~~/components/streams/SuperTokens";
+
+const Streams: NextPage = () => {
+ return (
+ <>
+
+
+ >
+ );
+};
+
+export default Streams;
diff --git a/packages/nextjs/public/warrior.png b/packages/nextjs/public/warrior.png
new file mode 100644
index 0000000000000000000000000000000000000000..4fda9d09a56c00125665191a800341b887d09664
GIT binary patch
literal 711639
zcmX`Sb5v$w_dgt_sU}UfZCg`Kw(Yx`Y}>YVXWN);+jq8IlY4u9&+~ovT4$Yg&Y$~S
zXYUX84p)#9NBDvB0}KodK~mzk5*XOGB``3^beQj7Z|2sk!oF_cj!NRfVAWH2CtnZW
z%!Fixz`*Ka;oc0PzMf(2Bs3ktz)+n2bAfM~61stbeHKan7E*E3JAZeLvy%2840|u1
z;y$QY)3*h-+#ODO?wK*Mruk$4B!Zz!0ZaWRITL1Nr~Y{!LHt3fm=`A;k&L#UEF7T`
zzRwVz`zsC%obGJ`Y_HS(uH)~a?(%Zu6@%xg%E_y@d;O`3bJG>5<#qGT*)01$o$?}e
z>zRd>{bmGCm+Sw<`jN!ov~2u!5(_oMa*fmXaRcQ
zajGEX^tY(CE2eXs_?R451X5IjY+MvL#pWQJI8M#jH3{dnV-M`YcI5hGK8F(dvMrTu
z$ZW)RMQFV`G7R`!IasVn@H1eq1=*srN<>rG`>`<*MsKYq
z?SfT)XRY7k8=ev{^vyVyG&%lOvS^TBxV1jyG}BhfiTYbI%S>fnXCvJX=lIq;Qdg%F
zu}-=8)0`KsIu1S>-}Y73#I6iObWD=G^!iq{^K~j5adpJ2@QUbbF9S#DE1K2Pd$G0i
z;c9Z%%#OyK1xW%kSM%c5M&F$mb^_p1>NOuwnQ%OJk~F}05`-YDOg|W#ni503XGmt;
z9oV1u?F0d?Sv#~K81PR1APyE&cewo(*S`$3=NsIVd~ZdHF&
zZi9(~-E?Bdf{%OT+=jb3hM|V%-|@wt|5nH}DZ)mWETb^rkdz~x{taUhbz%+f$}A!p
z$iinN=2Q⩔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