From fb4420b1d307ade697a3934242be37885492705c Mon Sep 17 00:00:00 2001 From: Alex Rea Date: Mon, 12 Aug 2024 12:40:44 +0100 Subject: [PATCH 01/44] First pass at dev environment for proxy colonies --- docker/colony-cdapp-dev-env-network | 4 +- docker/colony-cdapp-dev-env-network-remote | 17 +++++++ ...ony-cdapp-dev-env-network-wormhole-relayer | 33 +++++++++++++ .../colony-cdapp-dev-env-orchestration.yaml | 47 ++++++++++++++++++ docker/files/network-remote/run.sh.base | 17 +++++++ .../network-wormhole-relayer/run.sh.base | 48 +++++++++++++++++++ docker/files/network/run.sh.base | 2 +- package.json | 6 ++- 8 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 docker/colony-cdapp-dev-env-network-remote create mode 100644 docker/colony-cdapp-dev-env-network-wormhole-relayer create mode 100644 docker/files/network-remote/run.sh.base create mode 100644 docker/files/network-wormhole-relayer/run.sh.base diff --git a/docker/colony-cdapp-dev-env-network b/docker/colony-cdapp-dev-env-network index 682a3d1f053..82f2048ef71 100644 --- a/docker/colony-cdapp-dev-env-network +++ b/docker/colony-cdapp-dev-env-network @@ -1,6 +1,6 @@ FROM colony-cdapp-dev-env/base:latest -ENV NETWORK_HASH=3f8df23173f840226fb8da42547e12664f10c290 +ENV NETWORK_HASH=4c3f6981329d46341cb8dea57746224e2d7c38eb # Declare volumes to set up metadata VOLUME [ "/colonyCDapp/amplify/mock-data" ] @@ -33,6 +33,8 @@ RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | b # Install required network dependencies RUN pnpm i --frozen-lockfile +RUN npx hardhat compile + # Initialize the justification tree cache # To avoid the error spewed by the miner at startup RUN echo "{}" > ./packages/reputation-miner/justificationTreeCache.json diff --git a/docker/colony-cdapp-dev-env-network-remote b/docker/colony-cdapp-dev-env-network-remote new file mode 100644 index 00000000000..255ec87d630 --- /dev/null +++ b/docker/colony-cdapp-dev-env-network-remote @@ -0,0 +1,17 @@ +FROM colony-cdapp-dev-env/network:latest +# Add dependencies from the host +# Note: these are listed individually so that if they change, they won't affect +# the build of the other images +ADD docker/files/network-remote/run.sh.base /colonyCDappBackend/run.sh + +WORKDIR /colonyCDappBackend + +# Open up ports to the docker image +# Ganache +EXPOSE 8545 + +# Make the run script executable +RUN chmod +x ./run.sh + +# Battlecruiser Operational! +CMD [ "./run.sh" ] diff --git a/docker/colony-cdapp-dev-env-network-wormhole-relayer b/docker/colony-cdapp-dev-env-network-wormhole-relayer new file mode 100644 index 00000000000..3f880ebf52e --- /dev/null +++ b/docker/colony-cdapp-dev-env-network-wormhole-relayer @@ -0,0 +1,33 @@ +FROM colony-cdapp-dev-env/network:latest +# Add dependencies from the host +# Note: these are listed individually so that if they change, they won't affect +# the build of the other images +ADD docker/files/network-wormhole-relayer/run.sh.base /colonyCDappBackend/run.sh + +WORKDIR /colonyCDappBackend + +# Open up ports to the docker image +# Ganache +# EXPOSE 8545 + +RUN apt-get update +RUN apt-get install -y ca-certificates curl +RUN install -m 0755 -d /etc/apt/keyrings +RUN curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc +RUN chmod a+r /etc/apt/keyrings/docker.asc + +# Add the repository to Apt sources: +RUN echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + tee /etc/apt/sources.list.d/docker.list > /dev/null +RUN apt-get update +RUN apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + +RUN cd ./colonyNetwork/lib/wormhole/sdk/js-proto-node && npm i + +# Make the run script executable +RUN chmod +x ./run.sh + +# Battlecruiser Operational! +CMD [ "./run.sh" ] diff --git a/docker/colony-cdapp-dev-env-orchestration.yaml b/docker/colony-cdapp-dev-env-orchestration.yaml index d70736b51ca..0aa216319b9 100644 --- a/docker/colony-cdapp-dev-env-orchestration.yaml +++ b/docker/colony-cdapp-dev-env-orchestration.yaml @@ -26,6 +26,40 @@ services: amplify-setup: condition: service_completed_successfully + network-contracts-remote: + container_name: 'network-remote' + image: colony-cdapp-dev-env/network-remote:latest + volumes: + - 'amplify-mock-data:/colonyCDapp/amplify/mock-data' + ports: + - '8546:8545' + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:8545'] + interval: 5s + retries: 1000 + depends_on: + amplify-setup: + condition: service_completed_successfully + environment: + CHAIN_ID: 265669101 + + network-contracts-remote-2: + container_name: 'network-remote-2' + image: colony-cdapp-dev-env/network-remote:latest + volumes: + - 'amplify-mock-data:/colonyCDapp/amplify/mock-data' + ports: + - '8547:8545' + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:8545'] + interval: 5s + retries: 1000 + depends_on: + amplify-setup: + condition: service_completed_successfully + environment: + CHAIN_ID: 265669102 + reputation-monitor: container_name: 'monitor' image: colony-cdapp-dev-env/reputation-monitor:latest @@ -95,6 +129,19 @@ services: network-contracts: condition: service_healthy + wormhole-relayer: + container_name: 'wormhole-relayer' + image: colony-cdapp-dev-env/network-wormhole-relayer:latest + volumes: + - '/var/run/docker.sock:/var/run/docker.sock' + depends_on: + network-contracts: + condition: service_healthy + network-contracts-remote: + condition: service_healthy + network-contracts-remote-2: + condition: service_healthy + volumes: amplify-backend: amplify-mock-data: diff --git a/docker/files/network-remote/run.sh.base b/docker/files/network-remote/run.sh.base new file mode 100644 index 00000000000..06beccf9be2 --- /dev/null +++ b/docker/files/network-remote/run.sh.base @@ -0,0 +1,17 @@ +#!/bin/bash + +cd colonyNetwork + +# Ganache + +# Uncomment the line below if you need ganache to run in verbose mode +# sed -i 's/100000000000000000000" >\/dev\/null 2>&1/100000000000000000000" --verbose/g' scripts/start-blockchain-client.sh +# sed -i 's/--db $DBPATH/--db $DBPATH --server.host "0.0.0.0"/g' scripts/start-blockchain-client.sh +pnpm run start:blockchain:client + +# Colony Network Contracts + +npx hardhat compile +npx hardhat deploy-proxy-network --network development + +sleep infinity \ No newline at end of file diff --git a/docker/files/network-wormhole-relayer/run.sh.base b/docker/files/network-wormhole-relayer/run.sh.base new file mode 100644 index 00000000000..0c3c343cd2a --- /dev/null +++ b/docker/files/network-wormhole-relayer/run.sh.base @@ -0,0 +1,48 @@ +#!/bin/bash +cd ./colonyNetwork/lib/wormhole/ && DOCKER_BUILDKIT=1 docker build --target node-export -f Dockerfile.proto -o type=local,dest=. . +cd ../.. && npx tsc --esModuleInterop --downlevelIteration ./scripts/mockGuardianSpy.ts + +cd ./lib/safe-contracts + +# This is the private key for the first account we create on ganache, so has ether to pay for gas fees +rm -rf ./deployments/custom +PK="0x0355596cdb5e5242ad082c4fe3f8bbe48c9dba843fe1f99dd8272f487e70efae" NODE_URL=http://network:8545 npx hardhat deploy --network custom + +rm -rf ./deployments/custom +PK="0x0355596cdb5e5242ad082c4fe3f8bbe48c9dba843fe1f99dd8272f487e70efae" NODE_URL=http://network-remote:8545 npx hardhat deploy --network custom + +rm -rf ./deployments/custom +PK="0x0355596cdb5e5242ad082c4fe3f8bbe48c9dba843fe1f99dd8272f487e70efae" NODE_URL=http://network-remote-2:8545 npx hardhat deploy --network custom + +cd ../../ + +echo "const wormhole = require("@certusone/wormhole-sdk"); + +module.exports = { + chains: { + [wormhole.CHAIN_ID_ARBITRUM_SEPOLIA]: { + endpoints: ["http://localhost:8545"], + colonyBridgeAddress: "0x633899227A3BC1f79de097149E1E3C8097c07b1a", + payForGas: true, + evmChainId: 265669100, + }, + [wormhole.CHAIN_ID_SEPOLIA]: { + endpoints: ["http://localhost:8546"], + colonyBridgeAddress: "0x161944B5601a7d3004E20d4Ca823F710838Ea1be", + payForGas: true, + evmChainId: 265669101, + }, + [wormhole.CHAIN_ID_OPTIMISM_SEPOLIA]: { + endpoints: ["http://localhost:8547"], + colonyBridgeAddress: "0x161944B5601a7d3004E20d4Ca823F710838Ea1be", + payForGas: false, + evmChainId: 265669102, + }, + } + }, +}; +" > ./packages/wormhole-relayer/config.js + +node -e 'require("./scripts/setup-bridging-contracts.js").setupBridging("http://network:8545", ["http://network-remote:8545", "http://network-remote-2:8545"])' + +sleep infinity \ No newline at end of file diff --git a/docker/files/network/run.sh.base b/docker/files/network/run.sh.base index a831289454c..ea421a39166 100644 --- a/docker/files/network/run.sh.base +++ b/docker/files/network/run.sh.base @@ -7,7 +7,7 @@ cd colonyNetwork # Uncomment the line below if you need ganache to run in verbose mode # sed -i 's/100000000000000000000" >\/dev\/null 2>&1/100000000000000000000" --verbose/g' scripts/start-blockchain-client.sh # sed -i 's/--db $DBPATH/--db $DBPATH --server.host "0.0.0.0"/g' scripts/start-blockchain-client.sh -pnpm run start:blockchain:client & +pnpm run start:blockchain:client # Colony Network Contracts diff --git a/package.json b/package.json index 0e1ac7f8486..1322d1ed298 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,8 @@ "scripts": { "docker:build:base": "DOCKER_BUILDKIT=1 docker build --build-arg AMAZON_ARCH_FLAG=$(bash scripts/amazon-arch-flag.sh) --tag colony-cdapp-dev-env/base --file ./docker/colony-cdapp-dev-env-base .", "docker:build:network": "DOCKER_BUILDKIT=1 docker build --tag colony-cdapp-dev-env/network --file ./docker/colony-cdapp-dev-env-network .", + "docker:build:network-remote": "DOCKER_BUILDKIT=1 docker build --tag colony-cdapp-dev-env/network-remote --file ./docker/colony-cdapp-dev-env-network-remote .", + "docker:build:network-wormhole-relayer": "DOCKER_BUILDKIT=1 docker build --tag colony-cdapp-dev-env/network-wormhole-relayer --file ./docker/colony-cdapp-dev-env-network-wormhole-relayer .", "docker:build:monitor": "DOCKER_BUILDKIT=1 docker build --tag colony-cdapp-dev-env/reputation-monitor --file ./docker/colony-cdapp-dev-env-reputation-monitor .", "docker:build:mocking": "DOCKER_BUILDKIT=1 docker build --tag colony-cdapp-dev-env/mocking --file ./docker/colony-cdapp-dev-env-mocking .", "docker:build:ingestor": "DOCKER_BUILDKIT=1 docker build --ulimit nofile=5000:5000 --tag colony-cdapp-dev-env/block-ingestor --file ./docker/colony-cdapp-dev-env-block-ingestor .", @@ -13,8 +15,8 @@ "docker:build:safe": "DOCKER_BUILDKIT=1 docker build --tag colony-cdapp-dev-env/safe --file ./docker/colony-cdapp-dev-env-safe .", "docker:build:auth": "DOCKER_BUILDKIT=1 docker build --tag colony-cdapp-dev-env/auth-proxy --file ./docker/colony-cdapp-dev-env-auth-proxy .", "docker:build:bridge": "DOCKER_BUILDKIT=1 docker build --tag colony-cdapp-dev-env/mocking --file ./docker/colony-cdapp-dev-env-mocking .", - "docker:build:core": "npm run docker:build:base && npm run docker:build:network && npm run docker:build:monitor && npm run docker:build:ingestor && npm run docker:build:amplify && npm run docker:build:auth", - "docker:build:all": "npm run docker:build:base && npm run docker:build:network && npm run docker:build:monitor && npm run docker:build:ingestor && npm run docker:build:amplify && npm run docker:build:auth && npm run docker:build:mocking", + "docker:build:core": "npm run docker:build:base && npm run docker:build:network && npm run docker:build:network-remote && npm run docker:build:network-wormhole-relayer && npm run docker:build:monitor && npm run docker:build:mocking && npm run docker:build:ingestor && npm run docker:build:amplify && npm run docker:build:auth", + "docker:build:all": "npm run docker:build:base && npm run docker:build:network && npm run docker:build:network-remote && && npm run docker:build:network-wormhole-relayer && npm run docker:build:monitor && npm run docker:build:mocking && npm run docker:build:ingestor && npm run docker:build:amplify && npm run docker:build:safe && npm run docker:build:auth", "docker:compose:core": "docker compose --file docker/colony-cdapp-dev-env-orchestration.yaml", "docker:compose:all": "docker compose --file docker/colony-cdapp-dev-env-orchestration-all.yaml", "dev": "npm run watch-amplify & npm run generate-notifications-dev-key && npm run docker:build:core && npm run docker:compose:core up -- --force-recreate -V", From 13e8c4986bc8440675ccca977202f97ea10d806f Mon Sep 17 00:00:00 2001 From: Alex Rea Date: Wed, 20 Nov 2024 16:02:59 +0000 Subject: [PATCH 02/44] Give hardhat:cmd ability to execute on other chains --- scripts/hardhat-cmd.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/hardhat-cmd.js b/scripts/hardhat-cmd.js index 5c230676861..8f88693c9c5 100755 --- a/scripts/hardhat-cmd.js +++ b/scripts/hardhat-cmd.js @@ -3,7 +3,7 @@ const { exec } = require('node:child_process'); const parseArgs = require('minimist') -strings = ['hash', 'data', 'from', 'to']; +strings = ['hash', 'data', 'from', 'to', 'network']; const argv = parseArgs(process.argv.slice(2), { string: strings }); const action = argv._[0]; @@ -11,11 +11,16 @@ delete argv._; let cmdFlags = ''; for (const [k, v] of Object.entries(argv)) { - cmdFlags += `--${k} ${v} `; + if (k !== 'network') { // network is an argument for docker, not hardhat + cmdFlags += `--${k} ${v} `; + } }; +let network = argv.network || 'network'; + + const hardhatCmd = `npx hardhat ${action} ${cmdFlags.trim()}`; -const fullCmd = `docker exec -t network bash -c \"cd colonyNetwork && ${hardhatCmd}\"`; +const fullCmd = `docker exec -t ${network} bash -c \"cd colonyNetwork && ${hardhatCmd}\"`; exec(fullCmd, (error, stdout, stderr) => { if (error) { From 5a4e18f2f664b4b49c3416108f373ad894b491aa Mon Sep 17 00:00:00 2001 From: Alex Rea Date: Mon, 2 Dec 2024 15:10:51 +0000 Subject: [PATCH 03/44] Add and expose WormholeScan mock API --- docker/colony-cdapp-dev-env-network | 2 +- docker/colony-cdapp-dev-env-orchestration.yaml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/colony-cdapp-dev-env-network b/docker/colony-cdapp-dev-env-network index 82f2048ef71..cd59480b840 100644 --- a/docker/colony-cdapp-dev-env-network +++ b/docker/colony-cdapp-dev-env-network @@ -1,6 +1,6 @@ FROM colony-cdapp-dev-env/base:latest -ENV NETWORK_HASH=4c3f6981329d46341cb8dea57746224e2d7c38eb +ENV NETWORK_HASH=6c475e08c2acaaf8d2da99e6dafaf8bfe4771ce6 # Declare volumes to set up metadata VOLUME [ "/colonyCDapp/amplify/mock-data" ] diff --git a/docker/colony-cdapp-dev-env-orchestration.yaml b/docker/colony-cdapp-dev-env-orchestration.yaml index 0aa216319b9..3300cbf5254 100644 --- a/docker/colony-cdapp-dev-env-orchestration.yaml +++ b/docker/colony-cdapp-dev-env-orchestration.yaml @@ -134,6 +134,8 @@ services: image: colony-cdapp-dev-env/network-wormhole-relayer:latest volumes: - '/var/run/docker.sock:/var/run/docker.sock' + ports: + - '3007:3001' depends_on: network-contracts: condition: service_healthy From c2686aa129cdcea7cef0933c97bdc1d8b6952c4b Mon Sep 17 00:00:00 2001 From: Alex Rea Date: Wed, 22 Jan 2025 12:09:30 +0000 Subject: [PATCH 04/44] Spy shouldn't wait for txs in dev environment --- docker/colony-cdapp-dev-env-network | 2 +- docker/files/network-wormhole-relayer/run.sh.base | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/colony-cdapp-dev-env-network b/docker/colony-cdapp-dev-env-network index cd59480b840..9835013e173 100644 --- a/docker/colony-cdapp-dev-env-network +++ b/docker/colony-cdapp-dev-env-network @@ -1,6 +1,6 @@ FROM colony-cdapp-dev-env/base:latest -ENV NETWORK_HASH=6c475e08c2acaaf8d2da99e6dafaf8bfe4771ce6 +ENV NETWORK_HASH=095066406a0a025d97352a77c265d78bd2bddcb2 # Declare volumes to set up metadata VOLUME [ "/colonyCDapp/amplify/mock-data" ] diff --git a/docker/files/network-wormhole-relayer/run.sh.base b/docker/files/network-wormhole-relayer/run.sh.base index 0c3c343cd2a..9180a2189f9 100644 --- a/docker/files/network-wormhole-relayer/run.sh.base +++ b/docker/files/network-wormhole-relayer/run.sh.base @@ -43,6 +43,6 @@ module.exports = { }; " > ./packages/wormhole-relayer/config.js -node -e 'require("./scripts/setup-bridging-contracts.js").setupBridging("http://network:8545", ["http://network-remote:8545", "http://network-remote-2:8545"])' +node -e 'require("./scripts/setup-bridging-contracts.js").setupBridging("http://network:8545", ["http://network-remote:8545", "http://network-remote-2:8545"], false)' sleep infinity \ No newline at end of file From dd55e9a6f825c5b6f7178b122314e545d8e5246d Mon Sep 17 00:00:00 2001 From: Chris Maniewski Date: Mon, 21 Oct 2024 12:09:16 +0200 Subject: [PATCH 05/44] fix: nix dev shell --- flake.nix | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index 8523bf19df1..c82673a4742 100644 --- a/flake.nix +++ b/flake.nix @@ -8,16 +8,12 @@ outputs = { self, - nixpkgs_node + nixpkgs_node, }: { devShell.x86_64-linux = with nixpkgs_node.legacyPackages.x86_64-linux; mkShell { buildInputs = [nodejs_20 zsh]; - shellHook = '' - if [ -n "$SHELL" ]; then - exec $SHELL - fi - ''; + shellHook = "exec zsh"; }; }; } From 5b817b2316343dac019f303d9bba771531c743af Mon Sep 17 00:00:00 2001 From: Chris Maniewski Date: Wed, 30 Oct 2024 23:00:44 +0800 Subject: [PATCH 06/44] feat: add method to get a CustomContract in ColonyManager --- .gitignore | 1 + .../colony-cdapp-dev-env-orchestration.yaml | 6 +- package-lock.json | 12 +- src/constants/abis.ts | 3449 +++++++++++++++++ src/context/ColonyManager.ts | 36 + 5 files changed, 3489 insertions(+), 15 deletions(-) create mode 100644 src/constants/abis.ts diff --git a/.gitignore b/.gitignore index c2f6e984622..1ad30c9e9f7 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ cypress/screenshots /playwright-report/ /blob-report/ /playwright/.cache/ +/network-files .vscode .DS_Store diff --git a/docker/colony-cdapp-dev-env-orchestration.yaml b/docker/colony-cdapp-dev-env-orchestration.yaml index 3300cbf5254..fcda1e4d47c 100644 --- a/docker/colony-cdapp-dev-env-orchestration.yaml +++ b/docker/colony-cdapp-dev-env-orchestration.yaml @@ -8,12 +8,12 @@ services: - 'amplify-mock-data:/mock-data' - '../amplify/backend/:/backend-repo' command: '/bin/bash -c "rm -rf /backend/* && rm -rf /mock-data/* && touch /backend/.initialized && touch /mock-data/.initialized && cp -r /backend-repo/* /backend/ && chown -R $(id -u node):$(id -g node) /backend && chown -R $(id -u node):$(id -g node) /mock-data"' - network-contracts: container_name: 'network' image: colony-cdapp-dev-env/network:latest volumes: - 'amplify-mock-data:/colonyCDapp/amplify/mock-data' + - '../network-files/:/colonyCDappBackend/colonyNetwork/artifacts' ports: - '8545:8545' - '3002:3002' @@ -70,7 +70,6 @@ services: depends_on: network-contracts: condition: service_healthy - block-ingestor: container_name: 'ingestor' image: colony-cdapp-dev-env/block-ingestor:latest @@ -83,7 +82,6 @@ services: condition: service_healthy amplify: condition: service_healthy - amplify: container_name: 'amplify' image: colony-cdapp-dev-env/amplify:latest @@ -107,7 +105,6 @@ services: test: ['CMD', 'curl', '-f', 'http://localhost:9200'] interval: 5s retries: 1000 - auth-proxy: container_name: 'auth' image: colony-cdapp-dev-env/auth-proxy:latest @@ -116,7 +113,6 @@ services: depends_on: amplify: condition: service_healthy - network-files: container_name: 'network-files' image: colony-cdapp-dev-env/base:latest diff --git a/package-lock.json b/package-lock.json index b4d6a3b87d9..4b83fe29218 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16581,8 +16581,7 @@ "node_modules/array-timsort": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "license": "MIT" + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==" }, "node_modules/array-union": { "version": "2.1.0", @@ -19466,8 +19465,7 @@ "node_modules/comment-json/node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/comment-parser": { "version": "1.4.1", @@ -21630,7 +21628,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -33046,7 +33043,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -52756,7 +52752,6 @@ "version": "3.8.9", "resolved": "https://registry.npmjs.org/typia/-/typia-3.8.9.tgz", "integrity": "sha512-yvQ67nhtzme+rnEUZfSOIgxBOHYrrQ3WBU1J4SrAhI3ntBhSelYwGiJkeaCvqchzK6O1RoIs3kCBS4XHIlp2NA==", - "license": "MIT", "dependencies": { "commander": "^10.0.0", "comment-json": "^4.2.3", @@ -52774,7 +52769,6 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", "engines": { "node": ">=14" } @@ -52783,7 +52777,6 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", - "license": "MIT", "dependencies": { "drange": "^1.0.2", "ret": "^0.2.0" @@ -52796,7 +52789,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", - "license": "MIT", "engines": { "node": ">=4" } diff --git a/src/constants/abis.ts b/src/constants/abis.ts new file mode 100644 index 00000000000..28825f84405 --- /dev/null +++ b/src/constants/abis.ts @@ -0,0 +1,3449 @@ +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Colony +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +export const colonyAbi = [ + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'txHash', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'metadata', + internalType: 'string', + type: 'string', + indexed: false, + }, + ], + name: 'Annotation', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'user', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'skillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'amount', + internalType: 'int256', + type: 'int256', + indexed: false, + }, + ], + name: 'ArbitraryReputationUpdate', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'target', + internalType: 'address', + type: 'address', + indexed: false, + }, + { name: 'data', internalType: 'bytes', type: 'bytes', indexed: false }, + { name: 'success', internalType: 'bool', type: 'bool', indexed: false }, + ], + name: 'ArbitraryTransaction', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'auction', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'quantity', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'AuctionCreated', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'bridgeAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'BridgeSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'colonyId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'colonyAddress', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ColonyAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'users', + internalType: 'address[]', + type: 'address[]', + indexed: false, + }, + { + name: 'amounts', + internalType: 'int256[]', + type: 'int256[]', + indexed: false, + }, + ], + name: 'ColonyBootstrapped', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false }, + { + name: 'payoutRemainder', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ColonyFundsClaimed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'fromPot', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'toPot', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ColonyFundsMovedBetweenFundingPots', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'colonyNetwork', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ColonyInitialised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'label', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'ColonyLabelRegistered', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'metadata', + internalType: 'string', + type: 'string', + indexed: false, + }, + ], + name: 'ColonyMetadata', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'metadata', + internalType: 'string', + type: 'string', + indexed: false, + }, + ], + name: 'ColonyMetadataDelta', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'resolver', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ColonyNetworkInitialised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'rewardInverse', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ColonyRewardInverseSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { name: 'user', internalType: 'address', type: 'address', indexed: true }, + { + name: 'domainId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { name: 'role', internalType: 'uint8', type: 'uint8', indexed: true }, + { name: 'setTo', internalType: 'bool', type: 'bool', indexed: false }, + ], + name: 'ColonyRoleSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'oldVersion', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'newVersion', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ColonyUpgraded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'version', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'resolver', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ColonyVersionAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'domainId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'DomainAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'domainId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'deprecated', + internalType: 'bool', + type: 'bool', + indexed: false, + }, + ], + name: 'DomainDeprecated', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'domainId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false }, + { + name: 'payoutRemainder', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'DomainFundsClaimed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'domainId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'metadata', + internalType: 'string', + type: 'string', + indexed: false, + }, + ], + name: 'DomainMetadata', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExpenditureAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'ExpenditureCancelled', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { name: 'slot', internalType: 'uint256', type: 'uint256', indexed: true }, + { + name: 'claimDelay', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExpenditureClaimDelaySet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'ExpenditureFinalized', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'globalClaimDelay', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExpenditureGlobalClaimDelaySet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'ExpenditureLocked', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'metadata', + internalType: 'string', + type: 'string', + indexed: false, + }, + ], + name: 'ExpenditureMetadataSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { name: 'slot', internalType: 'uint256', type: 'uint256', indexed: true }, + { + name: 'payoutModifier', + internalType: 'int256', + type: 'int256', + indexed: false, + }, + ], + name: 'ExpenditurePayoutModifierSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { name: 'slot', internalType: 'uint256', type: 'uint256', indexed: true }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExpenditurePayoutSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { name: 'slot', internalType: 'uint256', type: 'uint256', indexed: true }, + { + name: 'recipient', + internalType: 'address', + type: 'address', + indexed: true, + }, + ], + name: 'ExpenditureRecipientSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { name: 'slot', internalType: 'uint256', type: 'uint256', indexed: true }, + { + name: 'skillId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'ExpenditureSkillSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'storageSlot', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { name: 'mask', internalType: 'bool[]', type: 'bool[]', indexed: false }, + { + name: 'keys', + internalType: 'bytes32[]', + type: 'bytes32[]', + indexed: false, + }, + { + name: 'value', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'ExpenditureStateChanged', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'expenditureId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'owner', + internalType: 'address', + type: 'address', + indexed: true, + }, + ], + name: 'ExpenditureTransferred', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'version', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExtensionAddedToNetwork', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'deprecated', + internalType: 'bool', + type: 'bool', + indexed: false, + }, + ], + name: 'ExtensionDeprecated', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'version', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExtensionInstalled', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + ], + name: 'ExtensionUninstalled', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'version', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExtensionUpgraded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'fundingPotId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'FundingPotAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'localSkillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'LocalSkillAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'localSkillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'deprecated', + internalType: 'bool', + type: 'bool', + indexed: false, + }, + ], + name: 'LocalSkillDeprecated', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'authority', + internalType: 'address', + type: 'address', + indexed: true, + }, + ], + name: 'LogSetAuthority', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'owner', + internalType: 'address', + type: 'address', + indexed: true, + }, + ], + name: 'LogSetOwner', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'metaColony', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'rootSkillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'MetaColonyCreated', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'userAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'relayerAddress', + internalType: 'address payable', + type: 'address', + indexed: false, + }, + { name: 'payload', internalType: 'bytes', type: 'bytes', indexed: false }, + ], + name: 'MetaTransactionExecuted', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'miningCycleResolver', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'MiningCycleResolverSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'feeInverse', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'NetworkFeeInverseSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'paymentId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'PaymentAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'paymentId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'PaymentFinalized', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'paymentId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'PaymentPayoutSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'paymentId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'recipient', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'PaymentRecipientSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'paymentId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'skillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'PaymentSkillSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'fundingPotId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'PayoutClaimed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { name: 'id', internalType: 'uint256', type: 'uint256', indexed: false }, + { + name: 'slot', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'tokenPayout', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'PayoutClaimed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: '_chainId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: '_token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: '_amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ProxyColonyFundsClaimed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'destinationChainId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'salt', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'ProxyColonyRequested', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'ens', internalType: 'address', type: 'address', indexed: false }, + { + name: 'rootNode', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'RegistrarInitialised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'miner', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'tokensLost', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationMinerPenalised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'hash', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + { + name: 'nLeaves', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationMiningCycleComplete', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'inactiveReputationMiningCycle', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ReputationMiningInitialised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationMiningRewardSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'newHash', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + { + name: 'newNLeaves', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'stakers', + internalType: 'address[]', + type: 'address[]', + indexed: false, + }, + { + name: 'reward', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationRootHashSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'count', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationUpdateSentToBridge', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'count', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationUpdateStored', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'rewardPayoutId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'user', + internalType: 'address', + type: 'address', + indexed: false, + }, + { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false }, + { + name: 'rewardRemainder', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'RewardPayoutClaimed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'rewardPayoutId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'RewardPayoutCycleEnded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'rewardPayoutId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'RewardPayoutCycleStarted', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'skillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'parentSkillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'SkillAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'TaskAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'specificationHash', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'TaskBriefSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'TaskCanceled', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'reviewerAddresses', + internalType: 'address[]', + type: 'address[]', + indexed: false, + }, + ], + name: 'TaskChangedViaSignatures', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'TaskCompleted', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'deliverableHash', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'TaskDeliverableSubmitted', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'dueDate', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'TaskDueDateSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'TaskFinalized', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'role', + internalType: 'enum ColonyDataTypes.TaskRole', + type: 'uint8', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'TaskPayoutSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'role', + internalType: 'enum ColonyDataTypes.TaskRole', + type: 'uint8', + indexed: false, + }, + { name: 'user', internalType: 'address', type: 'address', indexed: true }, + ], + name: 'TaskRoleUserSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'skillId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'TaskSkillSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'taskId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'role', + internalType: 'enum ColonyDataTypes.TaskRole', + type: 'uint8', + indexed: false, + }, + { name: 'rating', internalType: 'uint8', type: 'uint8', indexed: false }, + ], + name: 'TaskWorkRatingRevealed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'tokenAuthorityAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'TokenAuthorityDeployed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'tokenAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'TokenDeployed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'tokenLocking', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'TokenLockingAddressSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'TokenUnlocked', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { name: 'status', internalType: 'bool', type: 'bool', indexed: false }, + ], + name: 'TokenWhitelisted', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'TokensBurned', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'agent', + internalType: 'address', + type: 'address', + indexed: false, + }, + { name: 'who', internalType: 'address', type: 'address', indexed: false }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'TokensMinted', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'user', internalType: 'address', type: 'address', indexed: true }, + { + name: 'label', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'UserLabelRegistered', + }, + { + type: 'function', + inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + name: 'DEPRECATED_taskWorkRatings', + outputs: [ + { name: 'count', internalType: 'uint256', type: 'uint256' }, + { name: 'timestamp', internalType: 'uint256', type: 'uint256' }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_extensionId', internalType: 'bytes32', type: 'bytes32' }, + { name: '_resolver', internalType: 'address', type: 'address' }, + ], + name: 'addExtensionToNetwork', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [], + name: 'addLocalSkill', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_version', internalType: 'uint256', type: 'uint256' }, + { name: '_resolver', internalType: 'address', type: 'address' }, + ], + name: 'addNetworkColonyVersion', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_txHash', internalType: 'bytes32', type: 'bytes32' }, + { name: '_metadata', internalType: 'string', type: 'string' }, + ], + name: 'annotateTransaction', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_approvee', internalType: 'address', type: 'address' }, + { name: '_domainId', internalType: 'uint256', type: 'uint256' }, + { name: '_amount', internalType: 'uint256', type: 'uint256' }, + ], + name: 'approveStake', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [], + name: 'authority', + outputs: [ + { name: '', internalType: 'contract DSAuthority', type: 'address' }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_users', internalType: 'address[]', type: 'address[]' }, + { name: '_amounts', internalType: 'int256[]', type: 'int256[]' }, + ], + name: 'bootstrapColony', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_token', internalType: 'address', type: 'address' }, + { name: '_amount', internalType: 'uint256', type: 'uint256' }, + ], + name: 'burnTokens', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '_slot', internalType: 'uint256', type: 'uint256' }], + name: 'checkNotAdditionalProtectedVariable', + outputs: [], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: '_destinationChainId', internalType: 'uint256', type: 'uint256' }, + { name: '_salt', internalType: 'bytes32', type: 'bytes32' }, + ], + name: 'createProxyColony', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_domainId', internalType: 'uint256', type: 'uint256' }, + { name: '_amount', internalType: 'uint256', type: 'uint256' }, + ], + name: 'deobligateStake', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_extensionId', internalType: 'bytes32', type: 'bytes32' }, + { name: '_deprecated', internalType: 'bool', type: 'bool' }, + ], + name: 'deprecateExtension', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_localSkillId', internalType: 'uint256', type: 'uint256' }, + { name: '_deprecated', internalType: 'bool', type: 'bool' }, + ], + name: 'deprecateLocalSkill', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + name: 'domains', + outputs: [ + { name: 'skillId', internalType: 'uint256', type: 'uint256' }, + { name: 'fundingPotId', internalType: 'uint256', type: 'uint256' }, + { name: 'deprecated', internalType: 'bool', type: 'bool' }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_metadata', internalType: 'string', type: 'string' }], + name: 'editColony', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_metadataDelta', internalType: 'string', type: 'string' }, + ], + name: 'editColonyByDelta', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_permissionDomainId', internalType: 'uint256', type: 'uint256' }, + { name: '_childSkillIndex', internalType: 'uint256', type: 'uint256' }, + { name: '_domainId', internalType: 'uint256', type: 'uint256' }, + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_amount', internalType: 'int256', type: 'int256' }, + ], + name: 'emitDomainReputationPenalty', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_domainId', internalType: 'uint256', type: 'uint256' }, + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_amount', internalType: 'int256', type: 'int256' }, + ], + name: 'emitDomainReputationReward', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_skillId', internalType: 'uint256', type: 'uint256' }, + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_amount', internalType: 'int256', type: 'int256' }, + ], + name: 'emitSkillReputationPenalty', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_skillId', internalType: 'uint256', type: 'uint256' }, + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_amount', internalType: 'int256', type: 'int256' }, + ], + name: 'emitSkillReputationReward', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_payload', internalType: 'bytes', type: 'bytes' }, + { name: '_sigR', internalType: 'bytes32', type: 'bytes32' }, + { name: '_sigS', internalType: 'bytes32', type: 'bytes32' }, + { name: '_sigV', internalType: 'uint8', type: 'uint8' }, + ], + name: 'executeMetaTransaction', + outputs: [{ name: 'returnData', internalType: 'bytes', type: 'bytes' }], + stateMutability: 'payable', + }, + { + type: 'function', + inputs: [], + name: 'finishUpgrade', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_obligator', internalType: 'address', type: 'address' }, + { name: '_domainId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'getApproval', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getColonyNetwork', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_localSkillId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'getLocalSkill', + outputs: [ + { + name: 'localSkill', + internalType: 'struct ColonyDataTypes.LocalSkill', + type: 'tuple', + components: [ + { name: 'exists', internalType: 'bool', type: 'bool' }, + { name: 'deprecated', internalType: 'bool', type: 'bool' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_user', internalType: 'address', type: 'address' }], + name: 'getMetatransactionNonce', + outputs: [{ name: 'nonce', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_obligator', internalType: 'address', type: 'address' }, + { name: '_domainId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'getObligation', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_id', internalType: 'uint256', type: 'uint256' }], + name: 'getPayment', + outputs: [ + { + name: '', + internalType: 'struct ColonyDataTypes.Payment', + type: 'tuple', + components: [ + { + name: 'recipient', + internalType: 'address payable', + type: 'address', + }, + { name: 'finalized', internalType: 'bool', type: 'bool' }, + { name: 'fundingPotId', internalType: 'uint256', type: 'uint256' }, + { name: 'domainId', internalType: 'uint256', type: 'uint256' }, + { name: 'skills', internalType: 'uint256[]', type: 'uint256[]' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getPaymentCount', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getRootLocalSkill', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_id', internalType: 'uint256', type: 'uint256' }], + name: 'getTask', + outputs: [ + { name: '', internalType: 'bytes32', type: 'bytes32' }, + { name: '', internalType: 'bytes32', type: 'bytes32' }, + { + name: '', + internalType: 'enum ColonyDataTypes.TaskStatus', + type: 'uint8', + }, + { name: '', internalType: 'uint256', type: 'uint256' }, + { name: '', internalType: 'uint256', type: 'uint256' }, + { name: '', internalType: 'uint256', type: 'uint256' }, + { name: '', internalType: 'uint256', type: 'uint256' }, + { name: '', internalType: 'uint256[]', type: 'uint256[]' }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_id', internalType: 'uint256', type: 'uint256' }], + name: 'getTaskChangeNonce', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getTaskCount', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_id', internalType: 'uint256', type: 'uint256' }, + { name: '_role', internalType: 'uint8', type: 'uint8' }, + ], + name: 'getTaskRole', + outputs: [ + { + name: 'role', + internalType: 'struct ColonyDataTypes.Role', + type: 'tuple', + components: [ + { name: 'user', internalType: 'address payable', type: 'address' }, + { name: 'rateFail', internalType: 'bool', type: 'bool' }, + { + name: 'rating', + internalType: 'enum ColonyDataTypes.TaskRatings', + type: 'uint8', + }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_id', internalType: 'uint256', type: 'uint256' }, + { name: '_role', internalType: 'uint8', type: 'uint8' }, + ], + name: 'getTaskWorkRatingSecret', + outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_id', internalType: 'uint256', type: 'uint256' }], + name: 'getTaskWorkRatingSecretsInfo', + outputs: [ + { name: '', internalType: 'uint256', type: 'uint256' }, + { name: '', internalType: 'uint256', type: 'uint256' }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getToken', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_token', internalType: 'address', type: 'address' }, + { name: '_spender', internalType: 'address', type: 'address' }, + ], + name: 'getTokenApproval', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_token', internalType: 'address', type: 'address' }], + name: 'getTotalTokenApproval', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'miningChainId', internalType: 'uint256', type: 'uint256' }, + { name: 'newHash', internalType: 'bytes32', type: 'bytes32' }, + { name: 'newNLeaves', internalType: 'uint256', type: 'uint256' }, + ], + name: 'initialiseReputationMining', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_extensionId', internalType: 'bytes32', type: 'bytes32' }, + { name: '_version', internalType: 'uint256', type: 'uint256' }, + ], + name: 'installExtension', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '_wad', internalType: 'uint256', type: 'uint256' }], + name: 'mintTokens', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_guy', internalType: 'address', type: 'address' }, + { name: '_wad', internalType: 'uint256', type: 'uint256' }, + ], + name: 'mintTokensFor', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }], + name: 'multicall', + outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_domainId', internalType: 'uint256', type: 'uint256' }, + { name: '_amount', internalType: 'uint256', type: 'uint256' }, + ], + name: 'obligateStake', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [], + name: 'owner', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'colonyName', internalType: 'string', type: 'string' }, + { name: 'orbitdb', internalType: 'string', type: 'string' }, + ], + name: 'registerColonyLabel', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { + name: 'authority_', + internalType: 'contract DSAuthority', + type: 'address', + }, + ], + name: 'setAuthority', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_bridgeAddress', internalType: 'address', type: 'address' }, + ], + name: 'setColonyBridgeAddress', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '_feeInverse', internalType: 'uint256', type: 'uint256' }], + name: 'setNetworkFeeInverse', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: 'owner_', internalType: 'address', type: 'address' }], + name: 'setOwner', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_token', internalType: 'address', type: 'address' }, + { name: '_status', internalType: 'bool', type: 'bool' }, + ], + name: 'setPayoutWhitelist', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '_amount', internalType: 'uint256', type: 'uint256' }], + name: 'setReputationMiningCycleReward', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_permissionDomainId', internalType: 'uint256', type: 'uint256' }, + { name: '_childSkillIndex', internalType: 'uint256', type: 'uint256' }, + { name: '_obligator', internalType: 'address', type: 'address' }, + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_domainId', internalType: 'uint256', type: 'uint256' }, + { name: '_amount', internalType: 'uint256', type: 'uint256' }, + { name: '_beneficiary', internalType: 'address', type: 'address' }, + ], + name: 'transferStake', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_extensionId', internalType: 'bytes32', type: 'bytes32' }, + ], + name: 'uninstallExtension', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [], + name: 'unlockToken', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: 'orbitdb', internalType: 'string', type: 'string' }], + name: 'updateColonyOrbitDB', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '_newVersion', internalType: 'uint256', type: 'uint256' }], + name: 'upgrade', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_extensionId', internalType: 'bytes32', type: 'bytes32' }, + { name: '_newVersion', internalType: 'uint256', type: 'uint256' }, + ], + name: 'upgradeExtension', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: 'permissionDomainId', internalType: 'uint256', type: 'uint256' }, + { name: 'childSkillIndex', internalType: 'uint256', type: 'uint256' }, + { name: 'childDomainId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'validateDomainInheritance', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_nonce', internalType: 'uint256', type: 'uint256' }, + { name: '_chainId', internalType: 'uint256', type: 'uint256' }, + { name: '_payload', internalType: 'bytes', type: 'bytes' }, + { name: '_sigR', internalType: 'bytes32', type: 'bytes32' }, + { name: '_sigS', internalType: 'bytes32', type: 'bytes32' }, + { name: '_sigV', internalType: 'uint8', type: 'uint8' }, + ], + name: 'verify', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'key', internalType: 'bytes', type: 'bytes' }, + { name: 'value', internalType: 'bytes', type: 'bytes' }, + { name: 'branchMask', internalType: 'uint256', type: 'uint256' }, + { name: 'siblings', internalType: 'bytes32[]', type: 'bytes32[]' }, + ], + name: 'verifyReputationProof', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'version', + outputs: [ + { name: 'colonyVersion', internalType: 'uint256', type: 'uint256' }, + ], + stateMutability: 'pure', + }, +] as const + +export const colonyAddress = + '0x777760996135F0791E2e1a74aFAA060711197778' as const + +export const colonyConfig = { address: colonyAddress, abi: colonyAbi } as const + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ColonyNetwork +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +export const colonyNetworkAbi = [ + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'auction', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'quantity', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'AuctionCreated', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'bridgeAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'BridgeSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'colonyId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + { + name: 'colonyAddress', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ColonyAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'label', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'ColonyLabelRegistered', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'resolver', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ColonyNetworkInitialised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'version', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'resolver', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ColonyVersionAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'version', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExtensionAddedToNetwork', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'deprecated', + internalType: 'bool', + type: 'bool', + indexed: false, + }, + ], + name: 'ExtensionDeprecated', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'version', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExtensionInstalled', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + ], + name: 'ExtensionUninstalled', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'extensionId', + internalType: 'bytes32', + type: 'bytes32', + indexed: true, + }, + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'version', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ExtensionUpgraded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'authority', + internalType: 'address', + type: 'address', + indexed: true, + }, + ], + name: 'LogSetAuthority', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'owner', + internalType: 'address', + type: 'address', + indexed: true, + }, + ], + name: 'LogSetOwner', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'metaColony', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'rootSkillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'MetaColonyCreated', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'userAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'relayerAddress', + internalType: 'address payable', + type: 'address', + indexed: false, + }, + { name: 'payload', internalType: 'bytes', type: 'bytes', indexed: false }, + ], + name: 'MetaTransactionExecuted', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'miningCycleResolver', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'MiningCycleResolverSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'feeInverse', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'NetworkFeeInverseSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'destinationChainId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'salt', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'ProxyColonyRequested', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'ens', internalType: 'address', type: 'address', indexed: false }, + { + name: 'rootNode', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'RegistrarInitialised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'miner', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'tokensLost', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationMinerPenalised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'hash', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + { + name: 'nLeaves', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationMiningCycleComplete', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'inactiveReputationMiningCycle', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'ReputationMiningInitialised', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationMiningRewardSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'newHash', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + { + name: 'newNLeaves', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'stakers', + internalType: 'address[]', + type: 'address[]', + indexed: false, + }, + { + name: 'reward', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationRootHashSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'count', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationUpdateSentToBridge', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'colony', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'count', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'ReputationUpdateStored', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'skillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'parentSkillId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'SkillAdded', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'tokenAuthorityAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'TokenAuthorityDeployed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'tokenAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'TokenDeployed', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'tokenLocking', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'TokenLockingAddressSet', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'token', + internalType: 'address', + type: 'address', + indexed: false, + }, + { name: 'status', internalType: 'bool', type: 'bool', indexed: false }, + ], + name: 'TokenWhitelisted', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'user', internalType: 'address', type: 'address', indexed: true }, + { + name: 'label', + internalType: 'bytes32', + type: 'bytes32', + indexed: false, + }, + ], + name: 'UserLabelRegistered', + }, + { + type: 'function', + inputs: [ + { name: '_version', internalType: 'uint256', type: 'uint256' }, + { name: '_resolver', internalType: 'address', type: 'address' }, + ], + name: 'addColonyVersion', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [], + name: 'authority', + outputs: [ + { name: '', internalType: 'contract DSAuthority', type: 'address' }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_chainId', internalType: 'uint256', type: 'uint256' }, + { name: '_payload', internalType: 'bytes', type: 'bytes' }, + ], + name: 'bridgeMessage', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_chainId', internalType: 'uint256', type: 'uint256' }, + { name: '_payload', internalType: 'bytes', type: 'bytes' }, + ], + name: 'bridgeMessageToNetwork', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '_slot', internalType: 'uint256', type: 'uint256' }], + name: 'checkNotAdditionalProtectedVariable', + outputs: [], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_payload', internalType: 'bytes', type: 'bytes' }, + { name: '_sigR', internalType: 'bytes32', type: 'bytes32' }, + { name: '_sigS', internalType: 'bytes32', type: 'bytes32' }, + { name: '_sigV', internalType: 'uint8', type: 'uint8' }, + ], + name: 'executeMetaTransaction', + outputs: [{ name: 'returnData', internalType: 'bytes', type: 'bytes' }], + stateMutability: 'payable', + }, + { + type: 'function', + inputs: [{ name: '_id', internalType: 'uint256', type: 'uint256' }], + name: 'getColony', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getColonyCount', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_version', internalType: 'uint256', type: 'uint256' }], + name: 'getColonyVersionResolver', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getCurrentColonyVersion', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getFeeInverse', + outputs: [ + { name: '_feeInverse', internalType: 'uint256', type: 'uint256' }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getMetaColony', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_user', internalType: 'address', type: 'address' }], + name: 'getMetatransactionNonce', + outputs: [{ name: 'nonce', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getMiningChainId', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_token', internalType: 'address', type: 'address' }], + name: 'getPayoutWhitelist', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getReputationMiningSkillId', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getReputationRootHash', + outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getReputationRootHashNLeaves', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getReputationRootHashNNodes', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: '_skillId', internalType: 'uint256', type: 'uint256' }], + name: 'getSkill', + outputs: [ + { + name: 'skill', + internalType: 'struct ColonyNetworkDataTypes.Skill', + type: 'tuple', + components: [ + { name: 'nParents', internalType: 'uint128', type: 'uint128' }, + { name: 'nChildren', internalType: 'uint128', type: 'uint128' }, + { name: 'parents', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'children', internalType: 'uint256[]', type: 'uint256[]' }, + { + name: 'DEPRECATED_globalSkill', + internalType: 'bool', + type: 'bool', + }, + { name: 'DEPRECATED_deprecated', internalType: 'bool', type: 'bool' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getSkillCount', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'getTokenLocking', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: '_resolver', internalType: 'address', type: 'address' }, + { name: '_version', internalType: 'uint256', type: 'uint256' }, + ], + name: 'initialise', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '_colony', internalType: 'address', type: 'address' }], + name: 'isColony', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }], + name: 'multicall', + outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [], + name: 'owner', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { + name: 'authority_', + internalType: 'contract DSAuthority', + type: 'address', + }, + ], + name: 'setAuthority', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: '_feeInverse', internalType: 'uint256', type: 'uint256' }], + name: 'setFeeInverse', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: 'owner_', internalType: 'address', type: 'address' }], + name: 'setOwner', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_token', internalType: 'address', type: 'address' }, + { name: '_status', internalType: 'bool', type: 'bool' }, + ], + name: 'setPayoutWhitelist', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_tokenLocking', internalType: 'address', type: 'address' }, + ], + name: 'setTokenLocking', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: '_user', internalType: 'address', type: 'address' }, + { name: '_nonce', internalType: 'uint256', type: 'uint256' }, + { name: '_chainId', internalType: 'uint256', type: 'uint256' }, + { name: '_payload', internalType: 'bytes', type: 'bytes' }, + { name: '_sigR', internalType: 'bytes32', type: 'bytes32' }, + { name: '_sigS', internalType: 'bytes32', type: 'bytes32' }, + { name: '_sigV', internalType: 'uint8', type: 'uint8' }, + ], + name: 'verify', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, +] as const + +export const colonyNetworkAddress = + '0x777760996135F0791E2e1a74aFAa060711197777' as const + +export const colonyNetworkConfig = { + address: colonyNetworkAddress, + abi: colonyNetworkAbi, +} as const diff --git a/src/context/ColonyManager.ts b/src/context/ColonyManager.ts index f2bf29af48a..5a2a5805775 100644 --- a/src/context/ColonyManager.ts +++ b/src/context/ColonyManager.ts @@ -11,9 +11,12 @@ import { type AnyColonyClient, type AnyMultisigPermissionsClient, } from '@colony/colony-js'; +import { type Abi, CustomContract, ContractConfig } from '@colony/sdk'; import { type Signer, type providers } from 'ethers'; +import { DEFAULT_NETWORK } from '~constants/index.ts'; import { type Address } from '~types/index.ts'; +import { ColonyJSNetworkMapping } from '~types/network.ts'; import { isAddress } from '~utils/web3/index.ts'; export default class ColonyManager { @@ -21,6 +24,8 @@ export default class ColonyManager { colonyClients: Map>; + customContracts: Map>; + extensionClients: Map>; tokenClients: Map>; @@ -38,6 +43,7 @@ export default class ColonyManager { this.extensionClients = new Map(); this.tokenClients = new Map(); this.tokenLockingClients = new Map(); + this.customContracts = new Map(); this.networkClient = networkClient; this.provider = networkClient.provider; this.signer = networkClient.signer; @@ -252,4 +258,34 @@ export default class ColonyManager { } return clientPromise; } + + /* + * Get a custom colony contract by address and ABI (using Colony SDK) + * + * @example + * ```ts + * import { abi as colonyNetworkAbi } from '../../network-files/contracts/colonyNetwork/ColonyNetwork.sol/ColonyNetwork.json'; + * const networkAddress = import.meta.env.NETWORK_CONTRACT_ADDRESS || ColonyNetworkAddress[DEFAULT_NETWORK]; + * const customColonyNetwork = colonyManager.getCustomContract(networkAddress, colonyNetworkAbi); + * ``` + */ + getCustomContract(address: string, abi: A): CustomContract { + const reputationOracleEndpoint = import.meta.env.REPUTATION_ORACLE_ENDPOINT + ? new URL(import.meta.env.REPUTATION_ORACLE_ENDPOINT) + : new URL(`/reputation`, window.location.origin); + + const metaTxBroadcasterEndpoint = `${import.meta.env.METATX_BROADCASTER_ENDPOINT}/broadcast`; + + const config = new ContractConfig(this.signer || this.provider, { + metaTxBroadcasterEndpoint, + network: ColonyJSNetworkMapping[DEFAULT_NETWORK], + reputationOracleEndpoint: reputationOracleEndpoint.toString(), + }); + + if (this.customContracts.has(address)) { + return this.customContracts.get(address) as CustomContract; + } + + return new CustomContract(address as `0x${string}`, abi, config); + } } From ff668429bd2e802d2411e1c1be41c8ee44af64d7 Mon Sep 17 00:00:00 2001 From: Chris Maniewski Date: Thu, 7 Nov 2024 12:14:42 +0700 Subject: [PATCH 07/44] feat: use wagmi/cli to generate type-safe abis --- .eslintignore | 1 + .gitignore | 3 + .../colony-cdapp-dev-env-orchestration.yaml | 1 - package-lock.json | 937 +++++++++++++++--- package.json | 1 + wagmi.config.ts | 46 + 6 files changed, 873 insertions(+), 116 deletions(-) create mode 100644 wagmi.config.ts diff --git a/.eslintignore b/.eslintignore index 0695b3a7c17..8231691c915 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,6 +3,7 @@ scripts postcss.config.js webpack.* src/graphql/generated.ts +src/constants/abis.ts # amplify diff --git a/.gitignore b/.gitignore index 1ad30c9e9f7..27c502ff9c8 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,9 @@ cypress/screenshots /playwright/.cache/ /network-files +# abis generated by wagmi cli +src/constants/abis.ts + .vscode .DS_Store diff --git a/docker/colony-cdapp-dev-env-orchestration.yaml b/docker/colony-cdapp-dev-env-orchestration.yaml index fcda1e4d47c..8de28c34b1d 100644 --- a/docker/colony-cdapp-dev-env-orchestration.yaml +++ b/docker/colony-cdapp-dev-env-orchestration.yaml @@ -13,7 +13,6 @@ services: image: colony-cdapp-dev-env/network:latest volumes: - 'amplify-mock-data:/colonyCDapp/amplify/mock-data' - - '../network-files/:/colonyCDappBackend/colonyNetwork/artifacts' ports: - '8545:8545' - '3002:3002' diff --git a/package-lock.json b/package-lock.json index 4b83fe29218..eaa1274d381 100644 --- a/package-lock.json +++ b/package-lock.json @@ -158,6 +158,7 @@ "@typescript-eslint/eslint-plugin": "^6.20.0", "@typescript-eslint/parser": "^6.20.0", "@vitejs/plugin-react-swc": "^3.6.0", + "@wagmi/cli": "^2.1.17", "autoprefixer": "^10.4.16", "compare-versions": "^6.1.0", "cross-fetch": "^4.0.0", @@ -226,6 +227,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", + "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==", + "dev": true + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -7299,11 +7306,27 @@ "react": ">= 16.14.0 < 19.0.0" } }, + "node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@noble/hashes": { - "version": "1.3.2", - "license": "MIT", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", "engines": { - "node": ">= 16" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" @@ -7926,6 +7949,42 @@ "win32" ] }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "dev": true, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "dev": true, + "dependencies": { + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", + "dev": true, + "dependencies": { + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@sideway/address": { "version": "4.1.4", "license": "BSD-3-Clause", @@ -14431,6 +14490,507 @@ "dev": true, "license": "MIT" }, + "node_modules/@wagmi/cli": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/@wagmi/cli/-/cli-2.1.17.tgz", + "integrity": "sha512-xnXxFwXkexUhkAevgUBiuYdKpwCpM+V5sdwSaHkjV3RG6pTKFBHywdxj+k6OTtDH9ygb7Xh+Rf4c6q6nJjxpbA==", + "dev": true, + "dependencies": { + "abitype": "^1.0.4", + "bundle-require": "^4.0.2", + "cac": "^6.7.14", + "change-case": "^5.4.4", + "chokidar": "4.0.1", + "dedent": "^0.7.0", + "dotenv": "^16.3.1", + "dotenv-expand": "^10.0.0", + "esbuild": "^0.19.0", + "execa": "^8.0.1", + "fdir": "^6.1.1", + "find-up": "^6.3.0", + "fs-extra": "^11.2.0", + "ora": "^6.3.1", + "pathe": "^1.1.2", + "picocolors": "^1.0.0", + "picomatch": "^3.0.0", + "prettier": "^3.0.3", + "viem": "2.x", + "zod": "^3.22.2" + }, + "bin": { + "wagmi": "dist/esm/cli.js" + }, + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@wagmi/cli/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@wagmi/cli/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wagmi/cli/node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true + }, + "node_modules/@wagmi/cli/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wagmi/cli/node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@wagmi/cli/node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/@wagmi/cli/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@wagmi/cli/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@wagmi/cli/node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/ora": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", + "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@wagmi/cli/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/@wagmi/cli/node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@wagmi/cli/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wagmi/cli/node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@wagmi/cli/node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/@wagmi/cli/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@wagmi/cli/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@wagmi/cli/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wagmi/cli/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@web3-onboard/common": { "version": "2.3.3", "license": "MIT", @@ -18241,6 +18801,21 @@ "dev": true, "license": "MIT" }, + "node_modules/bundle-require": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.2.1.tgz", + "integrity": "sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==", + "dev": true, + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -18270,6 +18845,15 @@ "node": ">= 0.8" } }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -22316,10 +22900,11 @@ } }, "node_modules/esbuild": { - "version": "0.18.20", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -22327,28 +22912,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" } }, "node_modules/esbuild-plugin-alias": { @@ -22371,15 +22957,30 @@ "esbuild": ">=0.12 <1" } }, + "node_modules/esbuild/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/esbuild/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -22389,14 +22990,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -22406,14 +23006,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -22423,14 +23022,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -22440,14 +23038,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -22457,14 +23054,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -22474,14 +23070,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -22491,14 +23086,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22508,14 +23102,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22525,14 +23118,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", "cpu": [ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22542,14 +23134,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", "cpu": [ "loong64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22559,14 +23150,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", "cpu": [ "mips64el" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22576,14 +23166,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", "cpu": [ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22593,14 +23182,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", "cpu": [ "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22610,14 +23198,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", "cpu": [ "s390x" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22627,14 +23214,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -22644,14 +23230,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "netbsd" @@ -22661,14 +23246,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -22678,14 +23262,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "sunos" @@ -22695,14 +23278,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -22712,14 +23294,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", "cpu": [ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -22729,14 +23310,13 @@ } }, "node_modules/esbuild/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -36985,6 +37565,21 @@ "ws": "*" } }, + "node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "peerDependencies": { + "ws": "*" + } + }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -41692,6 +42287,15 @@ "node": ">=4" } }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -50253,6 +50857,32 @@ "node": ">= 0.8" } }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "dev": true, + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stdin-discarder/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -53835,6 +54465,58 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/viem": { + "version": "2.21.42", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.21.42.tgz", + "integrity": "sha512-PWBb3iaVFAzLWUaNrYLweOGwHPTQid5J4HfERh/WjJgixbAFwb4ZEc1leRfygvgJPtqUGdYNapvw9b2k2FoCAg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.11.0", + "@noble/curves": "1.6.0", + "@noble/hashes": "1.5.0", + "@scure/bip32": "1.5.0", + "@scure/bip39": "1.4.0", + "abitype": "1.0.6", + "isows": "1.0.6", + "webauthn-p256": "0.0.10", + "ws": "8.18.0" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/viem/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/vite": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", @@ -54334,6 +55016,22 @@ "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.0.tgz", "integrity": "sha512-ohj72kbtVWCpKYMxcbJ+xaOBV3En76hW47j52dG+tEGG36LZQgfFw5yHl9xyjmosy3XUMn8d/GBUAy4YPM839w==" }, + "node_modules/webauthn-p256": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/webauthn-p256/-/webauthn-p256-0.0.10.tgz", + "integrity": "sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "dependencies": { + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0" + } + }, "node_modules/webcrypto": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/webcrypto/-/webcrypto-0.1.1.tgz", @@ -54880,6 +55578,15 @@ "zen-observable": "0.8.15" } }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "devOptional": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zustand": { "version": "4.5.5", "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.5.tgz", diff --git a/package.json b/package.json index 1322d1ed298..a89d8f862c4 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,7 @@ "@typescript-eslint/eslint-plugin": "^6.20.0", "@typescript-eslint/parser": "^6.20.0", "@vitejs/plugin-react-swc": "^3.6.0", + "@wagmi/cli": "^2.1.17", "autoprefixer": "^10.4.16", "compare-versions": "^6.1.0", "cross-fetch": "^4.0.0", diff --git a/wagmi.config.ts b/wagmi.config.ts new file mode 100644 index 00000000000..5820893f70a --- /dev/null +++ b/wagmi.config.ts @@ -0,0 +1,46 @@ +import { defineConfig } from '@wagmi/cli'; +import { fetch } from '@wagmi/cli/plugins'; +import { type Address} from 'viem' + +interface Contract { + name: string; + address: Address; + path: string; +} + +const contracts: Contract[] = [ + { + name: 'ColonyNetwork', + // This is a little weird as the fetch plugin really requires an address, which is a bit too limiting + // Just change this to something unique for every contract ABI we need (made up or actual address) + address: '0x777760996135F0791E2e1a74aFAa060711197777', + path: 'colonyNetwork/ColonyNetwork.sol/ColonyNetwork.json', + }, +]; + +export default defineConfig({ + out: 'src/constants/abis.ts', + contracts: [], + plugins: [ + fetch({ + contracts, + async parse({ response }) { + const { abi } = await response.json(); + return abi; + }, + request(contract) { + if (!contract.address ) { + throw new Error('Contract address is required') + } + const contractDefinition = contracts.find(({ address }) => address === contract.address); + if (!contractDefinition) { + throw new Error(`Could not find contract with address ${contract.address}`) + } + return { + // Anyone remember trufflepig? + url: `http://localhost:3006/artifacts/contracts/${contractDefinition.path}` + } + }, + }), + ], +}); From 227e9b7e31e1da82d8c68ccdb424ade7fdcdd39d Mon Sep 17 00:00:00 2001 From: Bassgeta Date: Tue, 19 Nov 2024 15:59:29 +0100 Subject: [PATCH 08/44] wip: create proxy colony UI --- .../colonycdapp/schema/proxyColonies.graphql | 21 ++++ .../api/colonycdapp/schema/schema.graphql | 4 + package.json | 3 +- .../v5/frame/ColonyHome/ColonyHome.tsx | 2 + .../TmpProxyColonyDeploy.tsx | 43 ++++++++ .../TmpProxyColonyDeploy/constants.ts | 8 ++ src/constants/proxyColonies.ts | 16 +++ src/graphql/fragments/colony.graphql | 1 + src/graphql/generated.ts | 53 ++++++++- src/redux/actionTypes.ts | 6 + .../sagas/proxyColonies/createProxyColony.ts | 104 ++++++++++++++++++ src/redux/sagas/proxyColonies/index.ts | 7 ++ src/redux/sagas/setupUserContext.ts | 2 + src/redux/types/actions/index.ts | 4 +- src/redux/types/actions/proxyColonies.ts | 17 +++ src/types/proxyColonies.ts | 4 + src/types/transactions.ts | 2 + wagmi.config.ts | 24 ++-- 18 files changed, 308 insertions(+), 13 deletions(-) create mode 100644 amplify/backend/api/colonycdapp/schema/proxyColonies.graphql create mode 100644 src/components/v5/frame/ColonyHome/partials/TmpProxyColonyDeploy/TmpProxyColonyDeploy.tsx create mode 100644 src/components/v5/frame/ColonyHome/partials/TmpProxyColonyDeploy/constants.ts create mode 100644 src/constants/proxyColonies.ts create mode 100644 src/redux/sagas/proxyColonies/createProxyColony.ts create mode 100644 src/redux/sagas/proxyColonies/index.ts create mode 100644 src/redux/types/actions/proxyColonies.ts create mode 100644 src/types/proxyColonies.ts diff --git a/amplify/backend/api/colonycdapp/schema/proxyColonies.graphql b/amplify/backend/api/colonycdapp/schema/proxyColonies.graphql new file mode 100644 index 00000000000..5f92e294cce --- /dev/null +++ b/amplify/backend/api/colonycdapp/schema/proxyColonies.graphql @@ -0,0 +1,21 @@ +""" +Table representing a deployed proxy colony +""" +type ProxyColony @model { + """ + id in the format of colonyAddress_chainId + """ + id: ID! + """ + Address of the colony on the blockchain + """ + colonyAddress: ID! + """ + The chainId it's deployed on + """ + chainId: String! + """ + A flag that tells us if the proxy is active or not + """ + isActive: Boolean! +} diff --git a/amplify/backend/api/colonycdapp/schema/schema.graphql b/amplify/backend/api/colonycdapp/schema/schema.graphql index 1a8ab3871e9..92cff1f1637 100644 --- a/amplify/backend/api/colonycdapp/schema/schema.graphql +++ b/amplify/backend/api/colonycdapp/schema/schema.graphql @@ -1542,6 +1542,10 @@ type Colony @model { """ name: String! @index(name: "byName", queryField: "getColonyByName") """ + The block number the colony was created attached + """ + createdAtBlock: Int + """ The unique address of the native token of the Colony """ nativeTokenId: ID! diff --git a/package.json b/package.json index a89d8f862c4..d55696c5636 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,8 @@ "e2e:install": "npx playwright install --with-deps", "e2e": "playwright test --project=chromium", "e2e:ui": "playwright test --ui", - "generate-notifications-dev-key": "node scripts/generate-local-notifications-key" + "generate-notifications-dev-key": "node scripts/generate-local-notifications-key", + "wagmi-generate": "wagmi generate" }, "repository": { "type": "git", diff --git a/src/components/v5/frame/ColonyHome/ColonyHome.tsx b/src/components/v5/frame/ColonyHome/ColonyHome.tsx index ae282b86234..95a857d7f7e 100644 --- a/src/components/v5/frame/ColonyHome/ColonyHome.tsx +++ b/src/components/v5/frame/ColonyHome/ColonyHome.tsx @@ -17,6 +17,7 @@ import DashboardHeader from './partials/DashboardHeader/index.ts'; import FundsCards from './partials/FundsCards/index.ts'; import LeaveColonyModal from './partials/LeaveColonyModal/index.ts'; import ReputationChart from './partials/ReputationChart/index.ts'; +import { TmpProxyColonyDeploy } from './partials/TmpProxyColonyDeploy/TmpProxyColonyDeploy.tsx'; import TotalInOutBalance from './partials/TotalInOutBalance/TotalInOutBalance.tsx'; const displayName = 'v5.frame.ColonyHome'; @@ -37,6 +38,7 @@ const ColonyHome = () => { +
diff --git a/src/components/v5/frame/ColonyHome/partials/TmpProxyColonyDeploy/TmpProxyColonyDeploy.tsx b/src/components/v5/frame/ColonyHome/partials/TmpProxyColonyDeploy/TmpProxyColonyDeploy.tsx new file mode 100644 index 00000000000..7095c6d735c --- /dev/null +++ b/src/components/v5/frame/ColonyHome/partials/TmpProxyColonyDeploy/TmpProxyColonyDeploy.tsx @@ -0,0 +1,43 @@ +import React, { useState } from 'react'; + +import { useColonyContext } from '~context/ColonyContext/ColonyContext.ts'; +import useAsyncFunction from '~hooks/useAsyncFunction.ts'; +import { ActionTypes } from '~redux/actionTypes.ts'; +import Select from '~v5/common/Fields/Select/Select.tsx'; +import Button from '~v5/shared/Button/Button.tsx'; + +import { SUPPORTED_CHAINS_OPTIONS } from './constants.ts'; + +export const TmpProxyColonyDeploy = () => { + const { colony } = useColonyContext(); + const [chainId, setChainId] = useState(undefined); + + const createProxyColony = useAsyncFunction({ + submit: ActionTypes.PROXY_COLONY_CREATE, + error: ActionTypes.PROXY_COLONY_CREATE_ERROR, + success: ActionTypes.PROXY_COLONY_CREATE_SUCCESS, + }); + + const handleClick = async () => { + await createProxyColony({ + colonyAddress: colony.colonyAddress, + createdAtBlock: colony.createdAtBlock, + foreignChainId: chainId, + }); + }; + + return ( +
+ { - setChainId(option?.value ? Number(option.value) : undefined); - }} - /> - -
    - {proxyColoniesResponse.data?.getProxyColoniesByColonyAddress?.items.map( - (proxyColony) => { - return ( -
  • - Status on chain {proxyColony?.chainId}: - {proxyColony?.isActive ? 'deployed' : 'not deployed'} -
  • - ); - }, - )} -
-
- ); -}; diff --git a/src/components/v5/frame/ColonyHome/partials/TmpProxyColonyDeploy/constants.ts b/src/components/v5/frame/ColonyHome/partials/TmpProxyColonyDeploy/constants.ts deleted file mode 100644 index 0d9d43839db..00000000000 --- a/src/components/v5/frame/ColonyHome/partials/TmpProxyColonyDeploy/constants.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { SUPPORTED_CHAINS } from '~constants/proxyColonies.ts'; - -export const SUPPORTED_CHAINS_OPTIONS = SUPPORTED_CHAINS.map( - (supportedChain) => ({ - value: supportedChain.chainId, - label: supportedChain.name, - }), -); diff --git a/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx b/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx index 6db92caa8fd..3ab0b2f1ca0 100644 --- a/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx +++ b/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx @@ -42,6 +42,7 @@ const SearchItem: FC = ({ isDisabled, isComingSoon, isNew, + icon: Icon, avatar, showAvatar, color, @@ -82,6 +83,7 @@ const SearchItem: FC = ({ }} >
+ {Icon && } {color && !isLabelVisible && (
= ({ children }) => { ); const guidedToursFeature = useFeatureFlag(FeatureFlag.GUIDED_TOURS); const arbitraryTxsAction = useFeatureFlag(FeatureFlag.ARBITRARY_TXS_ACTION); + const supportedChainsAction = useFeatureFlag( + FeatureFlag.SUPPORTED_CHAINS_ACTION, + ); const featureFlags: Record< FeatureFlag, @@ -46,12 +49,14 @@ const FeatureFlagsContextProvider: FC = ({ children }) => { [FeatureFlag.CRYPTO_TO_FIAT_WITHDRAWALS]: cryptoToFiatWithdrawalsFeature, [FeatureFlag.GUIDED_TOURS]: guidedToursFeature, [FeatureFlag.ARBITRARY_TXS_ACTION]: arbitraryTxsAction, + [FeatureFlag.SUPPORTED_CHAINS_ACTION]: supportedChainsAction, }), [ cryptoToFiatFeature, cryptoToFiatWithdrawalsFeature, guidedToursFeature, arbitraryTxsAction, + supportedChainsAction, ], ); diff --git a/src/context/FeatureFlagsContext/types.ts b/src/context/FeatureFlagsContext/types.ts index 43a4f214141..2354b390335 100644 --- a/src/context/FeatureFlagsContext/types.ts +++ b/src/context/FeatureFlagsContext/types.ts @@ -3,6 +3,7 @@ export enum FeatureFlag { CRYPTO_TO_FIAT_WITHDRAWALS = 'CRYPTO_TO_FIAT_WITHDRAWALS', GUIDED_TOURS = 'GUIDED_TOURS', ARBITRARY_TXS_ACTION = 'ARBITRARY_TXS_ACTION', + SUPPORTED_CHAINS_ACTION = 'SUPPORTED_CHAINS_ACTION', } export interface FeatureFlagValue { diff --git a/src/graphql/fragments/actions.graphql b/src/graphql/fragments/actions.graphql index d4c4dd3b812..924c7279ed0 100644 --- a/src/graphql/fragments/actions.graphql +++ b/src/graphql/fragments/actions.graphql @@ -152,6 +152,9 @@ fragment ColonyAction on ColonyAction { contractAddress encodedFunction } + multiChainInfo { + targetChainId + } } fragment ApprovedTokenChanges on ApprovedTokenChanges { diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index db158274f35..316c64bd9ef 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -728,6 +728,8 @@ export enum ColonyActionType { ReleaseStagedPayments = 'RELEASE_STAGED_PAYMENTS', /** An action related to a motion to release a staged payment */ ReleaseStagedPaymentsMotion = 'RELEASE_STAGED_PAYMENTS_MOTION', + /** An action related to disabling a proxy colony */ + RemoveProxyColony = 'REMOVE_PROXY_COLONY', /** An action related to removing verified members */ RemoveVerifiedMembers = 'REMOVE_VERIFIED_MEMBERS', RemoveVerifiedMembersMotion = 'REMOVE_VERIFIED_MEMBERS_MOTION', @@ -10466,7 +10468,7 @@ export type VotingReputationParamsInput = { voterRewardFraction: Scalars['String']; }; -export type ColonyActionFragment = { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null }; +export type ColonyActionFragment = { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null }; export type ApprovedTokenChangesFragment = { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array }; @@ -10570,7 +10572,7 @@ export type SafeTransactionDataFragment = { __typename?: 'SafeTransactionData', export type SafeTransactionFragment = { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null }; -export type UserStakeFragment = { __typename?: 'UserStake', id: string, amount: string, isClaimed: boolean, createdAt: string, type?: UserStakeType | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null }; +export type UserStakeFragment = { __typename?: 'UserStake', id: string, amount: string, isClaimed: boolean, createdAt: string, type?: UserStakeType | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null }; export type TokenFragment = { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }; @@ -10813,14 +10815,14 @@ export type GetColonyActionsQueryVariables = Exact<{ }>; -export type GetColonyActionsQuery = { __typename?: 'Query', getActionsByColony?: { __typename?: 'ModelColonyActionConnection', nextToken?: string | null, items: Array<{ __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null> } | null }; +export type GetColonyActionsQuery = { __typename?: 'Query', getActionsByColony?: { __typename?: 'ModelColonyActionConnection', nextToken?: string | null, items: Array<{ __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null> } | null }; export type GetColonyActionQueryVariables = Exact<{ transactionHash: Scalars['ID']; }>; -export type GetColonyActionQuery = { __typename?: 'Query', getColonyAction?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null }; +export type GetColonyActionQuery = { __typename?: 'Query', getColonyAction?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null }; export type GetColonyMotionQueryVariables = Exact<{ id: Scalars['ID']; @@ -10865,7 +10867,7 @@ export type SearchActionsQueryVariables = Exact<{ }>; -export type SearchActionsQuery = { __typename?: 'Query', searchColonyActions?: { __typename?: 'SearchableColonyActionConnection', nextToken?: string | null, items: Array<{ __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null> } | null }; +export type SearchActionsQuery = { __typename?: 'Query', searchColonyActions?: { __typename?: 'SearchableColonyActionConnection', nextToken?: string | null, items: Array<{ __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null> } | null }; export type OnCreateColonyActionMetadataSubscriptionVariables = Exact<{ [key: string]: never; }>; @@ -11202,7 +11204,7 @@ export type GetUserStakesQueryVariables = Exact<{ }>; -export type GetUserStakesQuery = { __typename?: 'Query', getUserStakes?: { __typename?: 'ModelUserStakeConnection', items: Array<{ __typename?: 'UserStake', id: string, amount: string, isClaimed: boolean, createdAt: string, type?: UserStakeType | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null } | null> } | null }; +export type GetUserStakesQuery = { __typename?: 'Query', getUserStakes?: { __typename?: 'ModelUserStakeConnection', items: Array<{ __typename?: 'UserStake', id: string, amount: string, isClaimed: boolean, createdAt: string, type?: UserStakeType | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null } | null> } | null }; export type GetTokenByAddressQueryVariables = Exact<{ address: Scalars['ID']; @@ -12456,6 +12458,9 @@ export const ColonyActionFragmentDoc = gql` contractAddress encodedFunction } + multiChainInfo { + targetChainId + } } ${UserDisplayFragmentDoc} ${PublicColonyFragmentDoc} diff --git a/src/i18n/en-actions.ts b/src/i18n/en-actions.ts index 388c87de1f0..d54b46f3d37 100644 --- a/src/i18n/en-actions.ts +++ b/src/i18n/en-actions.ts @@ -71,6 +71,8 @@ const actionsMessageDescriptors = { 1 {Arbitrary transaction with method {arbitraryMethod} by {initiator}} other {Arbitrary transaction with multiple methods by {initiator}} }} + ${ColonyActionType.AddProxyColony} {Add support for {chain} chain by {initiator}} + ${ColonyActionType.RemoveProxyColony} {Remove support for {chain} chain by {initiator}} ${ExtendedColonyActionType.AddSafe} {Add Safe from {chainName}} ${ExtendedColonyActionType.RemoveSafe} {Remove Safe} ${ExtendedColonyActionType.SafeMultipleTransactions} ${safeActionTitle} @@ -135,9 +137,14 @@ const actionsMessageDescriptors = { ${ColonyActionType.ManageTokens} {Manage tokens} ${ColonyActionType.ManageTokensMotion} {Manage tokens} ${ColonyActionType.ManageTokensMultisig} {Manage tokens} +<<<<<<< HEAD ${ColonyActionType.MakeArbitraryTransaction} {Custom transactions} ${ColonyActionType.MakeArbitraryTransactionsMotion} {Custom transactions} ${ColonyActionType.MakeArbitraryTransactionsMultisig} {Custom transactions} +======= + ${ColonyActionType.AddProxyColony} {Manage supported chains} + ${ColonyActionType.RemoveProxyColony} {Manage supported chains} +>>>>>>> 6aee3801c (Feat: Add manage supported chain action) ${ExtendedColonyActionType.StagedPayment} {Staged payment} ${ExtendedColonyActionType.AddSafe} {Add Safe} ${ExtendedColonyActionType.RemoveSafe} {Remove Safe} diff --git a/src/i18n/en.json b/src/i18n/en.json index 9e486d0cd90..af909e1eb46 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -184,6 +184,9 @@ "button.addFunds": "Add funds", "button.apply": "Apply", "button.confirmDeletion": "Yes, confirm deletion", + "button.manageChains": "Manage chains", + "button.addChain": "Add chain", + "button.removeChain": "Remove chain", "input.resetText": "Cancel", "label.amount": "Amount", "label.username": "Username", @@ -337,6 +340,8 @@ "transaction.group.tokenUnlockAction.description": "Unlocking native Token", "transaction.group.releaseExpenditure.title": "Release Expenditure", "transaction.group.releaseExpenditure.description": "Releasing expenditure", + "transaction.group.createProxyColony.title": "Add Chain Support", + "transaction.group.removeProxyColony.title": "Remove Chain Support", "transaction.group.arbitraryTxs.title": "Custom Transactions", "transaction.group.arbitraryTxs.description": "Custom Transactions", @@ -378,6 +383,8 @@ "transaction.ColonyClient.unlockToken.title": "Unlocking Token", "transaction.ColonyClient.upgrade.title": "Colony Version Upgrade", "transaction.ColonyClient.upgradeExtension.title": "Upgrade Colony Extension", + "transaction.ColonyClient.createProxyColony.title": "Add Chain Support", + "transaction.ColonyClient.removeProxyColony.title": "Remove Chain Support", "transaction.NetworkClient.createColonyForFrontend.title": "Create Colony", @@ -935,6 +942,8 @@ "actions.description.managePermissions": "Manage authority for members to take actions", "actions.editColonyDetails": "Edit colony details", "actions.description.editColonyDetails": "Update details about the colony", + "actions.manageSupportedChains": "Manage supported chains", + "actions.description.manageSupportedChains": "Add and remove chain support for the colony", "actions.upgradeColonyVersion": "Upgrade colony version", "actions.description.upgradeColonyVersion": "Access new features and security updates", "actions.manageVerifiedMembers": "Manage verified members", @@ -1182,6 +1191,12 @@ "actionSidebar.externalLinks": "External links", "actionSidebar.approvedTokens": "Approved tokens", "actionSidebar.advancedPayments": "Advanced Payments", + "actionSidebar.manageSupportedChains": "Add/remove", + "actionSidebar.manageSupportedChains.placeholder": "Select option", + "actionSidebar.manageSupportedChains.title": "Select chain support option", + "actionSidebar.chain": "Chain", + "actionSidebar.chain.placeholder": "Select chain", + "actionSidebar.chain.title": "Available chains", "actionSidebar.manageVerifiedMembers.table.title": "Selected members", "actionSidebar.manageVerifiedMembers.table.column.members": "Members", "actionSidebar.emptyTitle": "No results to display", @@ -1191,6 +1206,8 @@ "actionSidebar.changeActionModal.title": "Do you wish to change the action?", "actionSidebar.option.addMembers": "Add members", "actionSidebar.option.removeMembers": "Remove members", + "actionSidebar.option.addSupportedChain": "Add chain support", + "actionSidebar.option.removeSupportedChain": "Remove chain support", "actionSidebar.mint.token.permission.error": "You don't have the right permissions to create this action type. Please choose another action type.", "actionSidebar.placeholder.teamName": "Enter team name", "actionSidebar.placeholder.purpose": "Enter short description", @@ -1203,6 +1220,10 @@ "actionSidebar.tooltip.actionType": "Identifies the type of action.", "actionSidebar.tooltip.decisionMethod": "Mechanism behind the decision-making process.", "actionSidebar.tooltip.manageMembers": "Whether members are being added or removed.", + "actionSidebar.tooltip.manageSupportedChains": "Whether support for chains are being added or removed.", + "actionSidebar.tooltip.chain.notSelected": "Chain in which support should be added or removed.", + "actionSidebar.tooltip.chain.add": "Chain you want to add support for.", + "actionSidebar.tooltip.chain.remove": "Chain you want to remove support for.", "actionSidebar.tooltip.createdIn": "Team responsible for decision-making and action execution.", "actionSidebar.tooltip.description": "Provide a description for why this action is being performed including any relevant details.", "actionSidebar.tooltip.simplePayment.from": "Team source of the funds.", @@ -1680,6 +1701,8 @@ "errors.milestone.required": "Name is required in {paymentIndex, selectordinal, one {#st} two {#nd} few {#rd} other {#th}} milestone", "errors.milestone.characters": "{paymentIndex, selectordinal, one {#st} two {#nd} few {#rd} other {#th}} milestone exceeds limit of 80 characters.", "errors.fundFrom.required": "Fund from field is required", + "errors.chain.required": "Please select a chain", + "errors.manageSupportedChain.required": "Please select an operation", "editColony.socialLinks.custom": "Custom URL", "editColony.socialLinks.discord": "Discord URL", "editColony.socialLinks.github": "Github URL", diff --git a/src/redux/actionTypes.ts b/src/redux/actionTypes.ts index 3811cc9bc2d..7d34679f835 100644 --- a/src/redux/actionTypes.ts +++ b/src/redux/actionTypes.ts @@ -331,4 +331,7 @@ export enum ActionTypes { PROXY_COLONY_CREATE = 'PROXY_COLONY_CREATE', PROXY_COLONY_CREATE_SUCCESS = 'PROXY_COLONY_CREATE_SUCCESS', PROXY_COLONY_CREATE_ERROR = 'PROXY_COLONY_CREATE_ERROR', + PROXY_COLONY_REMOVE = 'PROXY_COLONY_REMOVE', + PROXY_COLONY_REMOVE_SUCCESS = 'PROXY_COLONY_REMOVE_SUCCESS', + PROXY_COLONY_REMOVE_ERROR = 'PROXY_COLONY_REMOVE_ERROR', } diff --git a/src/redux/sagas/proxyColonies/createProxyColony.ts b/src/redux/sagas/proxyColonies/createProxyColony.ts index 45e7c885dbb..c712b883488 100644 --- a/src/redux/sagas/proxyColonies/createProxyColony.ts +++ b/src/redux/sagas/proxyColonies/createProxyColony.ts @@ -1,7 +1,7 @@ import { ClientType } from '@colony/colony-js'; import { type CustomContract } from '@colony/sdk'; import { utils } from 'ethers'; -import { put, takeEvery } from 'redux-saga/effects'; +import { call, fork, put, takeEvery } from 'redux-saga/effects'; import { colonyAbi } from '~constants/abis.ts'; import { ContextModule, getContext } from '~context/index.ts'; @@ -16,29 +16,57 @@ import { addTransactionToDb } from '~state/transactionState.ts'; import { TransactionStatus } from '~types/graphql.ts'; import { TRANSACTION_METHODS } from '~types/transactions.ts'; -import { getColonyManager, putError } from '../utils/index.ts'; +import { + createTransaction, + createTransactionChannels, + getTxChannel, +} from '../transactions/createTransaction.ts'; +import { + createActionMetadataInDB, + getColonyManager, + putError, + takeFrom, + uploadAnnotation, +} from '../utils/index.ts'; export type CreateProxyColonyPayload = Action['payload']; // @TODO if metatx are enabled sent a metaTx instead of tx +// @TODO we need to add the annotationMessage and the customActionTitle +// @TODO we need to add re-enable logic if the proxy colony was already deployed function* createProxyColony({ - payload: { colonyAddress, creationSalt, foreignChainId }, + payload: { + colonyAddress, + creationSalt, + foreignChainId, + customActionTitle, + annotationMessage, + }, + meta: { id: metaId, setTxHash }, meta, }: Action) { + let txChannel; const batchKey = TRANSACTION_METHODS.CreateProxyColony; + const { annotateCreateProxyColony } = yield createTransactionChannels( + metaId, + ['annotateCreateProxyColony'], + ); + const colonyManager = yield getColonyManager(); const { address } = getContext(ContextModule.Wallet); const walletAddress = utils.getAddress(address); try { + txChannel = yield call(getTxChannel, metaId); + const proxyColonyContract: CustomContract = colonyManager.getCustomContract(colonyAddress, colonyAbi); const params = [foreignChainId, creationSalt]; - yield addTransactionToDb(meta.id, { + yield addTransactionToDb(metaId, { context: ClientType.ColonyClient, // @NOTE we want to add a new context type createdAt: new Date(), methodName: 'createProxyColony', @@ -47,11 +75,26 @@ function* createProxyColony({ status: TransactionStatus.Ready, group: { key: batchKey, - id: meta.id, + id: metaId, index: 0, }, }); + if (annotationMessage) { + yield fork(createTransaction, annotateCreateProxyColony.id, { + context: ClientType.ColonyClient, + methodName: 'annotateTransaction', + identifier: colonyAddress, + params: [], + group: { + key: batchKey, + id: metaId, + index: 1, + }, + ready: false, + }); + } + const [transaction, waitForMined] = yield proxyColonyContract .createTxCreator('createProxyColony', [ BigInt(foreignChainId), @@ -62,14 +105,14 @@ function* createProxyColony({ gasLimit: BigInt(10_000_000), }); - put(transactionSent(meta.id)); + put(transactionSent(metaId)); if (!transaction || !transaction.blockHash || !transaction.blockNumber) { throw new Error('Invalid transaction'); // @TODO add more info } put( - transactionHashReceived(meta.id, { + transactionHashReceived(metaId, { hash: transaction.hash, blockNumber: transaction.blockNumber, blockHash: transaction.blockHash, @@ -81,8 +124,26 @@ function* createProxyColony({ const [eventData, receipt] = yield waitForMined(); - put(transactionReceiptReceived(meta.id, { params, receipt })); - put(transactionSucceeded(meta.id, { eventData, receipt, params })); + put(transactionReceiptReceived(metaId, { params, receipt })); + put(transactionSucceeded(metaId, { eventData, receipt, params })); + + if (annotationMessage) { + yield takeFrom( + annotateCreateProxyColony.channel, + ActionTypes.TRANSACTION_CREATED, + ); + } + + yield createActionMetadataInDB(transaction.hash, customActionTitle); + + if (annotationMessage) { + yield uploadAnnotation({ + txChannel: annotateCreateProxyColony, + message: annotationMessage, + txHash: transaction.hash, + }); + } + setTxHash?.(transaction.hash); yield put({ type: ActionTypes.PROXY_COLONY_CREATE_SUCCESS, @@ -91,6 +152,8 @@ function* createProxyColony({ }); } catch (error) { yield putError(ActionTypes.PROXY_COLONY_CREATE_ERROR, error, meta); + } finally { + txChannel.close(); } } diff --git a/src/redux/sagas/proxyColonies/disableProxyColony.ts b/src/redux/sagas/proxyColonies/disableProxyColony.ts new file mode 100644 index 00000000000..7bf38e8e646 --- /dev/null +++ b/src/redux/sagas/proxyColonies/disableProxyColony.ts @@ -0,0 +1,129 @@ +import { ClientType } from '@colony/colony-js'; +import { fork, put, takeEvery } from 'redux-saga/effects'; + +import { type Action, ActionTypes, type AllActions } from '~redux'; +import { transactionSetParams } from '~state/transactionState.ts'; +import { TRANSACTION_METHODS } from '~types/transactions.ts'; +import { takeFrom } from '~utils/saga/effects.ts'; + +import { + createTransaction, + createTransactionChannels, + waitForTxResult, +} from '../transactions/createTransaction.ts'; +import { + createActionMetadataInDB, + initiateTransaction, + putError, + uploadAnnotation, +} from '../utils/index.ts'; +import { getDisableProxyColonyOperation } from '../utils/metadataDelta.ts'; + +export type RemoveProxyColonyPayload = + Action['payload']; + +// @TODO if metatx are enabled sent a metaTx instead of tx +function* disableProxyColonyAction({ + payload: { + colonyAddress, + foreignChainId, + customActionTitle, + annotationMessage, + }, + meta: { id: metaId, setTxHash }, + meta, +}: Action) { + const batchKey = TRANSACTION_METHODS.RemoveProxyColony; + + const { disableProxyColony, annotateDisableProxyColony } = + yield createTransactionChannels(metaId, [ + 'disableProxyColony', + 'annotateDisableProxyColony', + ]); + + if (!colonyAddress) { + throw new Error( + 'No colony address set for disableProxyColonyAction transaction', + ); + } + + try { + yield fork(createTransaction, disableProxyColony.id, { + context: ClientType.ColonyClient, + methodName: 'editColonyByDelta', + identifier: colonyAddress, + params: [], + group: { + key: batchKey, + id: metaId, + index: 0, + }, + ready: false, + }); + + if (annotationMessage) { + yield fork(createTransaction, annotateDisableProxyColony.id, { + context: ClientType.ColonyClient, + methodName: 'annotateTransaction', + identifier: colonyAddress, + params: [], + group: { + key: batchKey, + id: metaId, + index: 1, + }, + ready: false, + }); + } + + yield takeFrom(disableProxyColony.channel, ActionTypes.TRANSACTION_CREATED); + if (annotationMessage) { + yield takeFrom( + annotateDisableProxyColony.channel, + ActionTypes.TRANSACTION_CREATED, + ); + } + + yield transactionSetParams(disableProxyColony.id, [ + JSON.stringify( + getDisableProxyColonyOperation([foreignChainId.toString()]), + ), + ]); + + yield initiateTransaction(disableProxyColony.id); + + const { + payload: { + receipt: { transactionHash: txHash }, + }, + } = yield waitForTxResult(disableProxyColony.channel); + + yield createActionMetadataInDB(txHash, customActionTitle); + + if (annotationMessage) { + yield uploadAnnotation({ + txChannel: annotateDisableProxyColony, + message: annotationMessage, + txHash, + }); + } + + setTxHash?.(txHash); + + yield put({ + type: ActionTypes.PROXY_COLONY_REMOVE_SUCCESS, + payload: {}, + meta, + }); + } catch (error) { + yield putError(ActionTypes.PROXY_COLONY_REMOVE_ERROR, error, meta); + } finally { + [disableProxyColony, annotateDisableProxyColony].forEach((channel) => + channel.channel.close(), + ); + } +} + +export default function* disableProxyColonySaga() { + yield takeEvery(ActionTypes.PROXY_COLONY_REMOVE, disableProxyColonyAction); +} diff --git a/src/redux/sagas/proxyColonies/index.ts b/src/redux/sagas/proxyColonies/index.ts index 7a5730cc1d6..7ec683accf9 100644 --- a/src/redux/sagas/proxyColonies/index.ts +++ b/src/redux/sagas/proxyColonies/index.ts @@ -1,7 +1,8 @@ import { all, call } from 'redux-saga/effects'; import createProxyColonySaga from './createProxyColony.ts'; +import disableProxyColonySaga from './disableProxyColony.ts'; export default function* proxyColonySagas() { - yield all([call(createProxyColonySaga)]); + yield all([call(createProxyColonySaga), call(disableProxyColonySaga)]); } diff --git a/src/redux/sagas/utils/metadataDelta.ts b/src/redux/sagas/utils/metadataDelta.ts index 524a031c538..b5a46d7db1a 100644 --- a/src/redux/sagas/utils/metadataDelta.ts +++ b/src/redux/sagas/utils/metadataDelta.ts @@ -2,6 +2,7 @@ enum MetadataDeltaActionType { ADD_VERIFIED_MEMBERS = 'ADD_VERIFIED_MEMBERS', REMOVE_VERIFIED_MEMBERS = 'REMOVE_VERIFIED_MEMBERS', MANAGE_TOKENS = 'MANAGE_TOKENS', + DISABLE_PROXY_COLONY = 'DISABLE_PROXY_COLONY', } type AddVerifiedMembersOperation = { @@ -19,6 +20,11 @@ type ManageTokensOperation = { payload: string[] | unknown[]; }; +type DisableProxyColonyOperation = { + type: MetadataDeltaActionType.DISABLE_PROXY_COLONY; + payload: string[] | unknown[]; +}; + export type MetadataDeltaOperation = | AddVerifiedMembersOperation | RemoveVerifiedMembersOperation @@ -50,3 +56,12 @@ export const getManageTokensOperation = ( payload: tokenAddresses, }; }; + +export const getDisableProxyColonyOperation = ( + payload: string[], +): DisableProxyColonyOperation => { + return { + type: MetadataDeltaActionType.DISABLE_PROXY_COLONY, + payload, + }; +}; diff --git a/src/redux/types/actions/proxyColonies.ts b/src/redux/types/actions/proxyColonies.ts index 32aa092590d..9c5656a71ec 100644 --- a/src/redux/types/actions/proxyColonies.ts +++ b/src/redux/types/actions/proxyColonies.ts @@ -1,7 +1,11 @@ import { type ActionTypes } from '~redux/actionTypes.ts'; import { type Address } from '~types/index.ts'; -import { type ErrorActionType, type UniqueActionType } from './index.ts'; +import { + type MetaWithSetter, + type ErrorActionType, + type UniqueActionType, +} from './index.ts'; export type ProxyColoniesActionTypes = | UniqueActionType< @@ -10,8 +14,22 @@ export type ProxyColoniesActionTypes = colonyAddress: Address; foreignChainId: number; creationSalt: `0x${string}`; + annotationMessage?: string; + customActionTitle: string; }, - object + MetaWithSetter > | ErrorActionType - | UniqueActionType; + | UniqueActionType + | UniqueActionType< + ActionTypes.PROXY_COLONY_REMOVE, + { + colonyAddress: Address; + foreignChainId: number; + annotationMessage?: string; + customActionTitle: string; + }, + MetaWithSetter + > + | ErrorActionType + | UniqueActionType; diff --git a/src/types/proxyColonies.ts b/src/types/proxyColonies.ts index 7f020b19a14..b5a556a1ac1 100644 --- a/src/types/proxyColonies.ts +++ b/src/types/proxyColonies.ts @@ -1,4 +1,8 @@ +import { type Icon } from '@phosphor-icons/react'; + export interface SupportedChain { name: string; chainId: number; + icon: Icon; + isDisabled?: boolean; } diff --git a/src/types/transactions.ts b/src/types/transactions.ts index 92761e56934..07393d85375 100644 --- a/src/types/transactions.ts +++ b/src/types/transactions.ts @@ -116,4 +116,5 @@ export enum TRANSACTION_METHODS { VoteOnMultiSig = 'voteOnMultiSig', // Proxy colonies CreateProxyColony = 'createProxyColony', + RemoveProxyColony = 'removeProxyColony', } diff --git a/src/utils/proxyColonies.ts b/src/utils/proxyColonies.ts new file mode 100644 index 00000000000..dec58fa086b --- /dev/null +++ b/src/utils/proxyColonies.ts @@ -0,0 +1,12 @@ +import { SUPPORTED_CHAINS } from '~constants/proxyColonies.ts'; + +import { isNil } from './lodash.ts'; + +export const findSupportedChain = (chainId: number | undefined | null) => { + if (isNil(chainId)) { + return null; + } + return SUPPORTED_CHAINS.find( + (supportedChain) => supportedChain.chainId === chainId, + ); +}; From 7c18c3d0eeb2259a1b23cd079de5212a70bc0513 Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Tue, 14 Jan 2025 11:32:03 +0100 Subject: [PATCH 22/44] Fix: Action list index when ManageSupportedChains is disabled Fix: Action list index when ManageSupportedChains is disabled --- .../v5/common/ActionSidebar/hooks/useActionsList.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/v5/common/ActionSidebar/hooks/useActionsList.ts b/src/components/v5/common/ActionSidebar/hooks/useActionsList.ts index 24d3a9f0934..6b61c6fb14e 100644 --- a/src/components/v5/common/ActionSidebar/hooks/useActionsList.ts +++ b/src/components/v5/common/ActionSidebar/hooks/useActionsList.ts @@ -163,10 +163,11 @@ const useActionsList = () => { } if (!isFeatureFlagSupportedChainsEnabled) { - const supportedChainsIndex = actionsListOptions[4].options.findIndex( - ({ value }) => value === Action.ManageSupportedChains, - ); - actionsListOptions[5].options.splice(supportedChainsIndex, 1); + const manageSupportedChainsIndex = + actionsListOptions[4].options.findIndex( + ({ value }) => value === Action.ManageSupportedChains, + ); + actionsListOptions[4].options.splice(manageSupportedChainsIndex, 1); } if (!isStagedExpenditureEnabled) { From 06e5c4ea59dcf68f6f3f3945a96edb0ebb0fe8d0 Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:23:25 +0100 Subject: [PATCH 23/44] Feat: Re-enable deployed proxy colony Feat: Re-enable deployed proxy colony --- .../hooks/useFilterChainSelectField.ts | 16 +-- .../forms/ManageSupportedChainsForm/hooks.ts | 38 +++-- .../proxyColonies/useDeployedChainIds.ts | 24 ++++ src/redux/actionTypes.ts | 3 + .../sagas/proxyColonies/enableProxyColony.ts | 132 ++++++++++++++++++ src/redux/sagas/proxyColonies/index.ts | 7 +- src/redux/sagas/utils/metadataDelta.ts | 15 ++ src/redux/types/actions/proxyColonies.ts | 14 +- 8 files changed, 226 insertions(+), 23 deletions(-) create mode 100644 src/hooks/proxyColonies/useDeployedChainIds.ts create mode 100644 src/redux/sagas/proxyColonies/enableProxyColony.ts diff --git a/src/components/v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts b/src/components/v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts index a4fd4cb44a4..2c35ad0c49e 100644 --- a/src/components/v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts +++ b/src/components/v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts @@ -1,5 +1,4 @@ -import { useColonyContext } from '~context/ColonyContext/ColonyContext.ts'; -import { useGetProxyColoniesQuery } from '~gql'; +import { useDeployedChainIds } from '~hooks/proxyColonies/useDeployedChainIds.ts'; import { MANAGE_SUPPORTED_CHAINS_FIELD_NAME, @@ -14,18 +13,9 @@ export const useFilterChainSelectField = () => { ManageEntityOperation.Remove, ); - const { colony } = useColonyContext(); - const { data } = useGetProxyColoniesQuery({ - variables: { - colonyAddress: colony.colonyAddress, - }, - fetchPolicy: 'cache-and-network', + const activeProxyColoniesChainIds = useDeployedChainIds({ + filterFn: (deployedProxyColony) => deployedProxyColony?.isActive, }); - const deployedProxyColonies = - data?.getProxyColoniesByColonyAddress?.items || []; - const activeProxyColoniesChainIds = deployedProxyColonies - .filter((deployedProxyColony) => deployedProxyColony?.isActive) - .map((deployedProxyColony) => deployedProxyColony?.chainId); const filterFn = (chainId) => isRemoveOperation diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts index 08f70b32329..bd61cfde422 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts @@ -1,11 +1,14 @@ import { Id } from '@colony/sdk'; import { useCallback, useMemo } from 'react'; +import { useWatch } from 'react-hook-form'; import { type DeepPartial } from 'redux'; import { useColonyContext } from '~context/ColonyContext/ColonyContext.ts'; +import { useDeployedChainIds } from '~hooks/proxyColonies/useDeployedChainIds.ts'; import { ActionTypes } from '~redux'; import { mapPayload } from '~utils/actions.ts'; import { + CHAIN_FIELD_NAME, MANAGE_SUPPORTED_CHAINS_FIELD_NAME, ManageEntityOperation, } from '~v5/common/ActionSidebar/consts.ts'; @@ -19,22 +22,41 @@ import { } from './consts.ts'; import { getManageSupportedChainsPayload } from './utils.ts'; -export const useManageSupportedChainsForm = ( - getFormOptions: ActionFormBaseProps['getFormOptions'], -) => { - const { colony } = useColonyContext(); - +const useActionType = () => { const isRemoveOperation = useCheckOperationType( MANAGE_SUPPORTED_CHAINS_FIELD_NAME, ManageEntityOperation.Remove, ); + const chainId = useWatch({ name: CHAIN_FIELD_NAME }); + const disabledProxyColoniesChainIds = useDeployedChainIds({ + filterFn: (deployedProxyColony) => !deployedProxyColony?.isActive, + }); + const isChainDisabled = disabledProxyColoniesChainIds.includes( + chainId?.toString(), + ); + + if (isRemoveOperation) { + return ActionTypes.PROXY_COLONY_REMOVE; + } + + if (isChainDisabled) { + return ActionTypes.PROXY_COLONY_ENABLE; + } + + return ActionTypes.PROXY_COLONY_CREATE; +}; + +export const useManageSupportedChainsForm = ( + getFormOptions: ActionFormBaseProps['getFormOptions'], +) => { + const { colony } = useColonyContext(); + const actionType = useActionType(); + useActionFormBaseHook({ getFormOptions, validationSchema, - actionType: isRemoveOperation - ? ActionTypes.PROXY_COLONY_REMOVE - : ActionTypes.PROXY_COLONY_CREATE, + actionType, // eslint-disable-next-line react-hooks/exhaustive-deps transform: useCallback( mapPayload((values: ManageSupportedChainsFormValues) => diff --git a/src/hooks/proxyColonies/useDeployedChainIds.ts b/src/hooks/proxyColonies/useDeployedChainIds.ts new file mode 100644 index 00000000000..359c6cc25c3 --- /dev/null +++ b/src/hooks/proxyColonies/useDeployedChainIds.ts @@ -0,0 +1,24 @@ +import { useColonyContext } from '~context/ColonyContext/ColonyContext.ts'; +import { type ProxyColony, useGetProxyColoniesQuery } from '~gql'; +import { notNull } from '~utils/arrays/index.ts'; + +export const useDeployedChainIds = ({ + filterFn = notNull, +}: { + filterFn: (x: ProxyColony) => boolean; +}) => { + const { colony } = useColonyContext(); + const { data } = useGetProxyColoniesQuery({ + variables: { + colonyAddress: colony.colonyAddress, + }, + fetchPolicy: 'network-only', + }); + const deployedProxyColonies = + data?.getProxyColoniesByColonyAddress?.items || []; + const deployedChainIds = deployedProxyColonies + .filter(filterFn) + .map((deployedProxyColony) => deployedProxyColony?.chainId); + + return deployedChainIds; +}; diff --git a/src/redux/actionTypes.ts b/src/redux/actionTypes.ts index 7d34679f835..5bc3d539ecf 100644 --- a/src/redux/actionTypes.ts +++ b/src/redux/actionTypes.ts @@ -334,4 +334,7 @@ export enum ActionTypes { PROXY_COLONY_REMOVE = 'PROXY_COLONY_REMOVE', PROXY_COLONY_REMOVE_SUCCESS = 'PROXY_COLONY_REMOVE_SUCCESS', PROXY_COLONY_REMOVE_ERROR = 'PROXY_COLONY_REMOVE_ERROR', + PROXY_COLONY_ENABLE = 'PROXY_COLONY_ENABLE', + PROXY_COLONY_ENABLE_SUCCESS = 'PROXY_COLONY_ENABLE_SUCCESS', + PROXY_COLONY_ENABLE_ERROR = 'PROXY_COLONY_ENABLE_ERROR', } diff --git a/src/redux/sagas/proxyColonies/enableProxyColony.ts b/src/redux/sagas/proxyColonies/enableProxyColony.ts new file mode 100644 index 00000000000..2876e0ec631 --- /dev/null +++ b/src/redux/sagas/proxyColonies/enableProxyColony.ts @@ -0,0 +1,132 @@ +import { ClientType } from '@colony/colony-js'; +import { fork, put, takeEvery } from 'redux-saga/effects'; + +import { type Action, ActionTypes, type AllActions } from '~redux'; +import { transactionSetParams } from '~state/transactionState.ts'; +import { TRANSACTION_METHODS } from '~types/transactions.ts'; +import { takeFrom } from '~utils/saga/effects.ts'; + +import { + createTransaction, + createTransactionChannels, + waitForTxResult, +} from '../transactions/createTransaction.ts'; +import { + createActionMetadataInDB, + initiateTransaction, + putError, + uploadAnnotation, +} from '../utils/index.ts'; +import { getEnableProxyColonyOperation } from '../utils/metadataDelta.ts'; + +export type EnableProxyColonyPayload = + Action['payload']; + +// @TODO if metatx are enabled sent a metaTx instead of tx +function* enableProxyColonyAction({ + payload: { + colonyAddress, + foreignChainId, + customActionTitle, + annotationMessage, + }, + meta: { id: metaId, setTxHash }, + meta, +}: Action) { + const batchKey = TRANSACTION_METHODS.CreateProxyColony; + + const { enableProxyColony, annotateEnableProxyColony } = + yield createTransactionChannels(metaId, [ + 'enableProxyColony', + 'annotateEnableProxyColony', + ]); + + if (!colonyAddress) { + throw new Error( + 'No colony address set for enableProxyColonyAction transaction', + ); + } + + try { + yield fork(createTransaction, enableProxyColony.id, { + context: ClientType.ColonyClient, + methodName: 'editColonyByDelta', + identifier: colonyAddress, + params: [], + group: { + key: batchKey, + id: metaId, + index: 0, + }, + ready: false, + }); + + if (annotationMessage) { + yield fork(createTransaction, annotateEnableProxyColony.id, { + context: ClientType.ColonyClient, + methodName: 'annotateTransaction', + identifier: colonyAddress, + params: [], + group: { + key: batchKey, + id: metaId, + index: 1, + }, + ready: false, + }); + } + + yield takeFrom(enableProxyColony.channel, ActionTypes.TRANSACTION_CREATED); + if (annotationMessage) { + yield takeFrom( + annotateEnableProxyColony.channel, + ActionTypes.TRANSACTION_CREATED, + ); + } + + yield transactionSetParams(enableProxyColony.id, [ + JSON.stringify( + getEnableProxyColonyOperation([foreignChainId.toString()]), + ), + ]); + + yield initiateTransaction(enableProxyColony.id); + + const { + payload: { + receipt: { transactionHash: txHash }, + }, + } = yield waitForTxResult(enableProxyColony.channel); + + // eslint-disable-next-line no-console + console.log('PROXY COLONY ENABLE TXHASH', txHash, customActionTitle); + + yield createActionMetadataInDB(txHash, customActionTitle); + + if (annotationMessage) { + yield uploadAnnotation({ + txChannel: annotateEnableProxyColony, + message: annotationMessage, + txHash, + }); + } + + setTxHash?.(txHash); + + yield put({ + type: ActionTypes.PROXY_COLONY_ENABLE_SUCCESS, + payload: {}, + meta, + }); + } catch (error) { + yield putError(ActionTypes.PROXY_COLONY_ENABLE_ERROR, error, meta); + } finally { + [enableProxyColony, annotateEnableProxyColony].forEach((channel) => + channel.channel.close(), + ); + } +} + +export default function* enableProxyColonySaga() { + yield takeEvery(ActionTypes.PROXY_COLONY_ENABLE, enableProxyColonyAction); +} diff --git a/src/redux/sagas/proxyColonies/index.ts b/src/redux/sagas/proxyColonies/index.ts index 7ec683accf9..2ec60dca6d1 100644 --- a/src/redux/sagas/proxyColonies/index.ts +++ b/src/redux/sagas/proxyColonies/index.ts @@ -2,7 +2,12 @@ import { all, call } from 'redux-saga/effects'; import createProxyColonySaga from './createProxyColony.ts'; import disableProxyColonySaga from './disableProxyColony.ts'; +import enableProxyColonySaga from './enableProxyColony.ts'; export default function* proxyColonySagas() { - yield all([call(createProxyColonySaga), call(disableProxyColonySaga)]); + yield all([ + call(createProxyColonySaga), + call(enableProxyColonySaga), + call(disableProxyColonySaga), + ]); } diff --git a/src/redux/sagas/utils/metadataDelta.ts b/src/redux/sagas/utils/metadataDelta.ts index b5a46d7db1a..47f8e00bce6 100644 --- a/src/redux/sagas/utils/metadataDelta.ts +++ b/src/redux/sagas/utils/metadataDelta.ts @@ -3,6 +3,7 @@ enum MetadataDeltaActionType { REMOVE_VERIFIED_MEMBERS = 'REMOVE_VERIFIED_MEMBERS', MANAGE_TOKENS = 'MANAGE_TOKENS', DISABLE_PROXY_COLONY = 'DISABLE_PROXY_COLONY', + ENABLE_PROXY_COLONY = 'ENABLE_PROXY_COLONY', } type AddVerifiedMembersOperation = { @@ -25,6 +26,11 @@ type DisableProxyColonyOperation = { payload: string[] | unknown[]; }; +type EnableProxyColonyOperation = { + type: MetadataDeltaActionType.ENABLE_PROXY_COLONY; + payload: string[] | unknown[]; +}; + export type MetadataDeltaOperation = | AddVerifiedMembersOperation | RemoveVerifiedMembersOperation @@ -65,3 +71,12 @@ export const getDisableProxyColonyOperation = ( payload, }; }; + +export const getEnableProxyColonyOperation = ( + payload: string[], +): EnableProxyColonyOperation => { + return { + type: MetadataDeltaActionType.ENABLE_PROXY_COLONY, + payload, + }; +}; diff --git a/src/redux/types/actions/proxyColonies.ts b/src/redux/types/actions/proxyColonies.ts index 9c5656a71ec..410f432d0e3 100644 --- a/src/redux/types/actions/proxyColonies.ts +++ b/src/redux/types/actions/proxyColonies.ts @@ -32,4 +32,16 @@ export type ProxyColoniesActionTypes = MetaWithSetter > | ErrorActionType - | UniqueActionType; + | UniqueActionType + | UniqueActionType< + ActionTypes.PROXY_COLONY_ENABLE, + { + colonyAddress: Address; + foreignChainId: number; + annotationMessage?: string; + customActionTitle: string; + }, + MetaWithSetter + > + | ErrorActionType + | UniqueActionType; From 001d0b1929b918f0ab89f0e0ceed2fcbd07672b6 Mon Sep 17 00:00:00 2001 From: Bassgeta Date: Tue, 7 Jan 2025 11:57:28 +0100 Subject: [PATCH 24/44] feat: create proxy colony motion --- .../api/colonycdapp/schema/schema.graphql | 1 + .../ManageSupportedChainsForm.tsx | 1 - .../forms/ManageSupportedChainsForm/hooks.ts | 9 + .../CompletedAction/CompletedAction.tsx | 2 + src/constants/actions.ts | 1 + src/graphql/generated.ts | 1 + src/i18n/en-actions.ts | 2 + src/redux/actionTypes.ts | 3 + src/redux/sagas/motions/index.ts | 2 + .../proxyColonies/createProxyColony.ts | 189 ++++++++++++++++++ .../sagas/motions/proxyColonies/index.ts | 1 + src/redux/types/actions/motion.ts | 18 ++ 12 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 src/redux/sagas/motions/proxyColonies/createProxyColony.ts create mode 100644 src/redux/sagas/motions/proxyColonies/index.ts diff --git a/amplify/backend/api/colonycdapp/schema/schema.graphql b/amplify/backend/api/colonycdapp/schema/schema.graphql index b08661d79f4..3f483e3fb00 100644 --- a/amplify/backend/api/colonycdapp/schema/schema.graphql +++ b/amplify/backend/api/colonycdapp/schema/schema.graphql @@ -906,6 +906,7 @@ enum ColonyActionType { An action related to creating a proxy colony """ ADD_PROXY_COLONY + ADD_PROXY_COLONY_MOTION """ An action related to disabling a proxy colony """ diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx index 69da64d1c17..65003df543f 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx @@ -36,7 +36,6 @@ const ManageSupportedChainsForm: FC = ({ const chainSelectFilterFn = useFilterChainSelectField(); const decisionMethodFilterFn = createUnsupportedDecisionMethodFilter([ DecisionMethod.MultiSig, - DecisionMethod.Reputation, ]); const isRemoveOperation = useCheckOperationType( MANAGE_SUPPORTED_CHAINS_FIELD_NAME, diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts index bd61cfde422..7045e001b81 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts @@ -6,9 +6,11 @@ import { type DeepPartial } from 'redux'; import { useColonyContext } from '~context/ColonyContext/ColonyContext.ts'; import { useDeployedChainIds } from '~hooks/proxyColonies/useDeployedChainIds.ts'; import { ActionTypes } from '~redux'; +import { DecisionMethod } from '~types/actions.ts'; import { mapPayload } from '~utils/actions.ts'; import { CHAIN_FIELD_NAME, + DECISION_METHOD_FIELD_NAME, MANAGE_SUPPORTED_CHAINS_FIELD_NAME, ManageEntityOperation, } from '~v5/common/ActionSidebar/consts.ts'; @@ -23,6 +25,9 @@ import { import { getManageSupportedChainsPayload } from './utils.ts'; const useActionType = () => { + const decisionMethod: DecisionMethod | undefined = useWatch({ + name: DECISION_METHOD_FIELD_NAME, + }); const isRemoveOperation = useCheckOperationType( MANAGE_SUPPORTED_CHAINS_FIELD_NAME, ManageEntityOperation.Remove, @@ -44,6 +49,10 @@ const useActionType = () => { return ActionTypes.PROXY_COLONY_ENABLE; } + if (decisionMethod === DecisionMethod.Reputation) { + return ActionTypes.MOTION_PROXY_COLONY_CREATE; + } + return ActionTypes.PROXY_COLONY_CREATE; }; diff --git a/src/components/v5/common/CompletedAction/CompletedAction.tsx b/src/components/v5/common/CompletedAction/CompletedAction.tsx index c1694aa5aff..64c6c81dccc 100644 --- a/src/components/v5/common/CompletedAction/CompletedAction.tsx +++ b/src/components/v5/common/CompletedAction/CompletedAction.tsx @@ -83,6 +83,7 @@ const CompletedAction = ({ action }: ICompletedAction) => { return ; case ColonyActionType.AddProxyColony: case ColonyActionType.RemoveProxyColony: + case ColonyActionType.AddProxyColonyMotion: return ; case ColonyActionType.EmitDomainReputationReward: case ColonyActionType.EmitDomainReputationRewardMotion: @@ -153,6 +154,7 @@ const CompletedAction = ({ action }: ICompletedAction) => { case ColonyActionType.ReleaseStagedPaymentsMotion: case ColonyActionType.MakeArbitraryTransactionsMotion: case ColonyActionType.EditExpenditureMotion: + case ColonyActionType.AddProxyColonyMotion: case ColonyActionType.FundExpenditureMotion: { const { motionData } = action; diff --git a/src/constants/actions.ts b/src/constants/actions.ts index 48643d299f4..9190b60e502 100644 --- a/src/constants/actions.ts +++ b/src/constants/actions.ts @@ -32,6 +32,7 @@ export const PERMISSIONS_NEEDED_FOR_ACTION = { SplitPayment: [[ColonyRole.Administration]], StagedPayment: [[ColonyRole.Administration]], ArbitraryTxs: [[ColonyRole.Root]], + ManageSupportedChains: [[ColonyRole.Root]], }; export enum Action { diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index 316c64bd9ef..5fc7d9b077d 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -626,6 +626,7 @@ export type ColonyActionRolesInput = { export enum ColonyActionType { /** An action related to creating a proxy colony */ AddProxyColony = 'ADD_PROXY_COLONY', + AddProxyColonyMotion = 'ADD_PROXY_COLONY_MOTION', /** An action related to adding verified members */ AddVerifiedMembers = 'ADD_VERIFIED_MEMBERS', AddVerifiedMembersMotion = 'ADD_VERIFIED_MEMBERS_MOTION', diff --git a/src/i18n/en-actions.ts b/src/i18n/en-actions.ts index d54b46f3d37..b946870a5f3 100644 --- a/src/i18n/en-actions.ts +++ b/src/i18n/en-actions.ts @@ -72,6 +72,7 @@ const actionsMessageDescriptors = { other {Arbitrary transaction with multiple methods by {initiator}} }} ${ColonyActionType.AddProxyColony} {Add support for {chain} chain by {initiator}} + ${ColonyActionType.AddProxyColonyMotion} {Add support for {chain} chain by {initiator}} ${ColonyActionType.RemoveProxyColony} {Remove support for {chain} chain by {initiator}} ${ExtendedColonyActionType.AddSafe} {Add Safe from {chainName}} ${ExtendedColonyActionType.RemoveSafe} {Remove Safe} @@ -143,6 +144,7 @@ const actionsMessageDescriptors = { ${ColonyActionType.MakeArbitraryTransactionsMultisig} {Custom transactions} ======= ${ColonyActionType.AddProxyColony} {Manage supported chains} + ${ColonyActionType.AddProxyColonyMotion} {Manage supported chains} ${ColonyActionType.RemoveProxyColony} {Manage supported chains} >>>>>>> 6aee3801c (Feat: Add manage supported chain action) ${ExtendedColonyActionType.StagedPayment} {Staged payment} diff --git a/src/redux/actionTypes.ts b/src/redux/actionTypes.ts index 5bc3d539ecf..6507edbc358 100644 --- a/src/redux/actionTypes.ts +++ b/src/redux/actionTypes.ts @@ -181,6 +181,9 @@ export enum ActionTypes { MOTION_ARBITRARY_TRANSACTION = 'MOTION_ARBITRARY_TRANSACTION', MOTION_ARBITRARY_TRANSACTION_SUCCESS = 'MOTION_ARBITRARY_TRANSACTION_SUCCESS', MOTION_ARBITRARY_TRANSACTION_ERROR = 'MOTION_ARBITRARY_TRANSACTION_ERROR', + MOTION_PROXY_COLONY_CREATE = 'MOTION_PROXY_COLONY_CREATE ', + MOTION_PROXY_COLONY_CREATE_SUCCESS = 'MOTION_PROXY_COLONY_CREATE_SUCCESS ', + MOTION_PROXY_COLONY_CREATE_ERROR = 'MOTION_PROXY_COLONY_CREATE_ERROR', // Multisig MULTISIG_VOTE = 'MULTISIG_VOTE', diff --git a/src/redux/sagas/motions/index.ts b/src/redux/sagas/motions/index.ts index d1192b438b6..9bb9f9f5fea 100644 --- a/src/redux/sagas/motions/index.ts +++ b/src/redux/sagas/motions/index.ts @@ -24,6 +24,7 @@ import manageTokensMotionSaga from './manageTokens.ts'; import manageVerifiedMembersMotionSaga from './manageVerifiedMembers.ts'; import moveFundsMotionSaga from './moveFundsMotion.ts'; import paymentMotionSaga from './paymentMotion.ts'; +import { createProxyColonyMotionSaga } from './proxyColonies/index.ts'; import revealVoteMotionSaga from './revealVoteMotion.ts'; import rootMotionSaga from './rootMotion.ts'; import stakeMotionSaga from './stakeMotion.ts'; @@ -57,5 +58,6 @@ export default function* actionsSagas() { call(initiateSafeTransactionMotionSaga), call(manageTokensMotionSaga), call(arbitraryTxMotionSaga), + call(createProxyColonyMotionSaga), ]); } diff --git a/src/redux/sagas/motions/proxyColonies/createProxyColony.ts b/src/redux/sagas/motions/proxyColonies/createProxyColony.ts new file mode 100644 index 00000000000..c925ae4f0cd --- /dev/null +++ b/src/redux/sagas/motions/proxyColonies/createProxyColony.ts @@ -0,0 +1,189 @@ +import { ClientType, Id } from '@colony/colony-js'; +import { type CustomContract } from '@colony/sdk'; +import { AddressZero } from '@ethersproject/constants'; +import { BigNumber } from 'ethers'; +import { call, fork, put, takeEvery } from 'redux-saga/effects'; + +import { colonyAbi } from '~constants/abis.ts'; +import { type ColonyManager } from '~context/index.ts'; +import { ActionTypes } from '~redux/actionTypes.ts'; +import { + createTransaction, + createTransactionChannels, + getTxChannel, + waitForTxResult, +} from '~redux/sagas/transactions/index.ts'; +import { + putError, + takeFrom, + getColonyManager, + uploadAnnotation, + initiateTransaction, + createActionMetadataInDB, + getChildIndexLocal, +} from '~redux/sagas/utils/index.ts'; +import { type AllActions, type Action } from '~redux/types/actions/index.ts'; +import { TRANSACTION_METHODS } from '~types/transactions.ts'; + +function* createProxyColonyMotionSaga({ + payload: { + colonyAddress, + creationSalt, + foreignChainId, + customActionTitle, + annotationMessage, + colonyDomains, + }, + meta: { id: metaId, setTxHash }, + meta, +}: Action) { + let txChannel; + try { + const colonyManager: ColonyManager = yield getColonyManager(); + + const colonyClient = yield colonyManager.getClient( + ClientType.ColonyClient, + colonyAddress, + ); + + const proxyColonyContract: CustomContract = + colonyManager.getCustomContract(colonyAddress, colonyAbi); + + const encodedAction = yield proxyColonyContract + .createTxCreator('createProxyColony', [ + BigInt(foreignChainId), + creationSalt, + ] as any) + .tx() + .encode(); + + txChannel = yield call(getTxChannel, metaId); + + // setup batch ids and channels + const batchKey = TRANSACTION_METHODS.CreateMotion; + + const { createMotion, annotateRootMotion } = + yield createTransactionChannels(metaId, [ + 'createMotion', + 'annotateRootMotion', + ]); + + // eslint-disable-next-line no-inner-declarations + function* getCreateMotionParams() { + const rootDomain = colonyDomains.find((domain) => + BigNumber.from(domain.nativeId).eq(Id.RootDomain), + ); + + if (!rootDomain) { + throw new Error('Cannot find rootDomain in colony domains'); + } + + const childSkillIndex = yield call(getChildIndexLocal, { + networkClient: colonyClient.networkClient, + parentDomainNativeId: rootDomain.nativeId, + parentDomainSkillId: rootDomain.nativeSkillId, + domainNativeId: rootDomain.nativeId, + domainSkillId: rootDomain.nativeSkillId, + }); + const { skillId } = yield call( + [colonyClient, colonyClient.getDomain], + Id.RootDomain, + ); + + const { key, value, branchMask, siblings } = yield call( + colonyClient.getReputation, + skillId, + AddressZero, + ); + + return { + context: ClientType.VotingReputationClient, + methodName: 'createMotion', + identifier: colonyAddress, + params: [ + Id.RootDomain, + childSkillIndex, + AddressZero, + encodedAction, + key, + value, + branchMask, + siblings, + ], + group: { + key: batchKey, + id: metaId, + index: 0, + }, + ready: false, + }; + } + + const transactionParams = yield getCreateMotionParams(); + // create transactions + yield fork(createTransaction, createMotion.id, transactionParams); + + if (annotationMessage) { + yield fork(createTransaction, annotateRootMotion.id, { + context: ClientType.ColonyClient, + methodName: 'annotateTransaction', + identifier: colonyAddress, + params: [], + group: { + key: batchKey, + id: metaId, + index: 1, + }, + ready: false, + }); + } + + yield takeFrom(createMotion.channel, ActionTypes.TRANSACTION_CREATED); + if (annotationMessage) { + yield takeFrom( + annotateRootMotion.channel, + ActionTypes.TRANSACTION_CREATED, + ); + } + + yield initiateTransaction(createMotion.id); + + const { + payload: { + receipt: { transactionHash: txHash }, + }, + } = yield waitForTxResult(createMotion.channel); + + yield createActionMetadataInDB(txHash, customActionTitle); + + if (annotationMessage) { + yield uploadAnnotation({ + txChannel: annotateRootMotion, + message: annotationMessage, + txHash, + }); + } + + setTxHash?.(txHash); + + yield put({ + type: ActionTypes.MOTION_PROXY_COLONY_CREATE_SUCCESS, + meta, + }); + } catch (caughtError) { + yield putError( + ActionTypes.MOTION_PROXY_COLONY_CREATE_ERROR, + caughtError, + meta, + ); + } finally { + txChannel.close(); + } +} + +export default function* createProxyColonyMotion() { + yield takeEvery( + ActionTypes.MOTION_PROXY_COLONY_CREATE, + createProxyColonyMotionSaga, + ); +} diff --git a/src/redux/sagas/motions/proxyColonies/index.ts b/src/redux/sagas/motions/proxyColonies/index.ts new file mode 100644 index 00000000000..5bf853903a3 --- /dev/null +++ b/src/redux/sagas/motions/proxyColonies/index.ts @@ -0,0 +1 @@ +export { default as createProxyColonyMotionSaga } from './createProxyColony.ts'; diff --git a/src/redux/types/actions/motion.ts b/src/redux/types/actions/motion.ts index 746f057077e..dc34a23dc77 100644 --- a/src/redux/types/actions/motion.ts +++ b/src/redux/types/actions/motion.ts @@ -495,4 +495,22 @@ export type MotionActionTypes = | ActionTypeWithMeta< ActionTypes.MOTION_ARBITRARY_TRANSACTION_SUCCESS, MetaWithSetter + > + | UniqueActionType< + ActionTypes.MOTION_PROXY_COLONY_CREATE, + { + colonyAddress: Address; + customActionTitle: string; + annotationMessage?: string; + colonyRoles: ColonyRoleFragment[]; + colonyDomains: Domain[]; + foreignChainId: number; + creationSalt: string; + }, + MetaWithSetter + > + | ErrorActionType + | ActionTypeWithMeta< + ActionTypes.MOTION_PROXY_COLONY_CREATE_SUCCESS, + MetaWithSetter >; From 6b0ed4e76204669ea2e3b6a3ee37959ae13ed711 Mon Sep 17 00:00:00 2001 From: Bassgeta Date: Fri, 10 Jan 2025 16:28:32 +0100 Subject: [PATCH 25/44] feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized --- .../api/colonycdapp/schema/schema.graphql | 32 +++++++++ src/graphql/generated.ts | 70 +++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/amplify/backend/api/colonycdapp/schema/schema.graphql b/amplify/backend/api/colonycdapp/schema/schema.graphql index 3f483e3fb00..d85c9e1cf16 100644 --- a/amplify/backend/api/colonycdapp/schema/schema.graphql +++ b/amplify/backend/api/colonycdapp/schema/schema.graphql @@ -2903,6 +2903,18 @@ type ColonyMultiSig @model { """ expenditureId: ID @index(name: "byExpenditureId", queryField: "getMultiSigByExpenditureId") + """ + The action txHash that was triggered upon motion finalization + """ + finalizationActionId: ID + @index( + name: "byFinalizationActionId" + queryField: "getColonyMultiSigByFinalizationActionId" + ) + """ + Expanded `ColonyAction` + """ + finalizationActionData: ColonyAction @hasOne(fields: ["finalizationActionId"]) } """ Represents a Motion within a Colony @@ -3038,6 +3050,18 @@ type ColonyMotion @model { the details of tokens and amounts to be funded """ expenditureFunding: [ExpenditureFundingItem!] + """ + The action txHash that was triggered upon motion finalization + """ + finalizationActionId: ID + @index( + name: "byFinalizationActionId" + queryField: "getColonyMotionByFinalizationActionId" + ) + """ + Expanded `ColonyAction` + """ + finalizationActionData: ColonyAction @hasOne(fields: ["finalizationActionId"]) } type ExpenditureFundingItem { @@ -3556,6 +3580,14 @@ type ColonyAction @model @searchable { Multichain info if the action is bridged """ multiChainInfo: MultiChainInfo + """ + The motion action txHash that this action finalized + """ + finalizedActionId: ID + """ + Expanded `ColonyAction` + """ + finalizedActionData: ColonyAction @hasOne(fields: ["finalizedActionId"]) } type MultiChainInfo { diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index 5fc7d9b077d..6a2ea069239 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -469,6 +469,10 @@ export type ColonyAction = { expenditureSlotChanges?: Maybe; /** Ids of the staged payment slots released by the action, if any */ expenditureSlotIds?: Maybe>; + /** Expanded `ColonyAction` */ + finalizedActionData?: Maybe; + /** The motion action txHash that this action finalized */ + finalizedActionId?: Maybe; /** The source Domain of the action, if applicable */ fromDomain?: Maybe; /** The source Domain identifier, if applicable */ @@ -1128,6 +1132,10 @@ export type ColonyMotion = { expenditureId?: Maybe; /** Ids of the staged payment slots to be released if the motion pass, if any */ expenditureSlotIds?: Maybe>; + /** Expanded `ColonyAction` */ + finalizationActionData?: Maybe; + /** The action txHash that was triggered upon motion finalization */ + finalizationActionId?: Maybe; /** Simple flag indicating whether both sides of staking have been activated */ hasObjection: Scalars['Boolean']; /** @@ -1217,6 +1225,7 @@ export type ColonyMultiSig = { executedBy?: Maybe; /** Extended user object for given executedBy */ executedByUser?: Maybe; +<<<<<<< HEAD /** * In case of multiple funding actions in a multisig, when funding an expenditure, array containing * the details of tokens and amounts to be funded @@ -1224,6 +1233,12 @@ export type ColonyMultiSig = { expenditureFunding?: Maybe>; /** Expenditure associated with the motion, if any */ expenditureId?: Maybe; +======= + /** Expanded `ColonyAction` */ + finalizationActionData?: Maybe; + /** The action txHash that was triggered upon motion finalization */ + finalizationActionId?: Maybe; +>>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) /** Whether the underlying action completed */ hasActionCompleted: Scalars['Boolean']; /** @@ -1484,6 +1499,7 @@ export type CreateColonyActionInput = { expenditureId?: InputMaybe; expenditureSlotChanges?: InputMaybe; expenditureSlotIds?: InputMaybe>; + finalizedActionId?: InputMaybe; fromDomainId?: InputMaybe; fromPotId?: InputMaybe; id?: InputMaybe; @@ -1650,6 +1666,7 @@ export type CreateColonyMotionInput = { expenditureFunding?: InputMaybe>; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe>; + finalizationActionId?: InputMaybe; hasObjection: Scalars['Boolean']; id?: InputMaybe; isDecision: Scalars['Boolean']; @@ -1677,8 +1694,12 @@ export type CreateColonyMultiSigInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; +<<<<<<< HEAD expenditureFunding?: InputMaybe>; expenditureId?: InputMaybe; +======= + finalizationActionId?: InputMaybe; +>>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted: Scalars['Boolean']; id?: InputMaybe; isDecision: Scalars['Boolean']; @@ -2951,6 +2972,7 @@ export type ModelColonyActionConditionInput = { createdAt?: InputMaybe; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe; + finalizedActionId?: InputMaybe; fromDomainId?: InputMaybe; fromPotId?: InputMaybe; individualEvents?: InputMaybe; @@ -2996,6 +3018,7 @@ export type ModelColonyActionFilterInput = { createdAt?: InputMaybe; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe; + finalizedActionId?: InputMaybe; fromDomainId?: InputMaybe; fromPotId?: InputMaybe; id?: InputMaybe; @@ -3324,6 +3347,7 @@ export type ModelColonyMotionConditionInput = { createdBy?: InputMaybe; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe; + finalizationActionId?: InputMaybe; hasObjection?: InputMaybe; isDecision?: InputMaybe; isFinalized?: InputMaybe; @@ -3352,6 +3376,7 @@ export type ModelColonyMotionFilterInput = { createdBy?: InputMaybe; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe; + finalizationActionId?: InputMaybe; hasObjection?: InputMaybe; id?: InputMaybe; isDecision?: InputMaybe; @@ -3376,7 +3401,11 @@ export type ModelColonyMultiSigConditionInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; +<<<<<<< HEAD expenditureId?: InputMaybe; +======= + finalizationActionId?: InputMaybe; +>>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted?: InputMaybe; isDecision?: InputMaybe; isExecuted?: InputMaybe; @@ -3404,7 +3433,11 @@ export type ModelColonyMultiSigFilterInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; +<<<<<<< HEAD expenditureId?: InputMaybe; +======= + finalizationActionId?: InputMaybe; +>>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted?: InputMaybe; id?: InputMaybe; isDecision?: InputMaybe; @@ -4316,6 +4349,7 @@ export type ModelSubscriptionColonyActionFilterInput = { createdAt?: InputMaybe; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe; + finalizedActionId?: InputMaybe; fromDomainId?: InputMaybe; fromPotId?: InputMaybe; id?: InputMaybe; @@ -4461,6 +4495,7 @@ export type ModelSubscriptionColonyMotionFilterInput = { createdBy?: InputMaybe; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe; + finalizationActionId?: InputMaybe; hasObjection?: InputMaybe; id?: InputMaybe; isDecision?: InputMaybe; @@ -4484,7 +4519,11 @@ export type ModelSubscriptionColonyMultiSigFilterInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; +<<<<<<< HEAD expenditureId?: InputMaybe; +======= + finalizationActionId?: InputMaybe; +>>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted?: InputMaybe; id?: InputMaybe; isDecision?: InputMaybe; @@ -6813,7 +6852,9 @@ export type Query = { getColonyMemberInvite?: Maybe; getColonyMetadata?: Maybe; getColonyMotion?: Maybe; + getColonyMotionByFinalizationActionId?: Maybe; getColonyMultiSig?: Maybe; + getColonyMultiSigByFinalizationActionId?: Maybe; getColonyRole?: Maybe; getColonyTokens?: Maybe; getContractEvent?: Maybe; @@ -7157,12 +7198,32 @@ export type QueryGetColonyMotionArgs = { }; +/** Root query type */ +export type QueryGetColonyMotionByFinalizationActionIdArgs = { + filter?: InputMaybe; + finalizationActionId: Scalars['ID']; + limit?: InputMaybe; + nextToken?: InputMaybe; + sortDirection?: InputMaybe; +}; + + /** Root query type */ export type QueryGetColonyMultiSigArgs = { id: Scalars['ID']; }; +/** Root query type */ +export type QueryGetColonyMultiSigByFinalizationActionIdArgs = { + filter?: InputMaybe; + finalizationActionId: Scalars['ID']; + limit?: InputMaybe; + nextToken?: InputMaybe; + sortDirection?: InputMaybe; +}; + + /** Root query type */ export type QueryGetColonyRoleArgs = { id: Scalars['ID']; @@ -8286,6 +8347,7 @@ export enum SearchableColonyActionAggregateField { CreatedAt = 'createdAt', ExpenditureId = 'expenditureId', ExpenditureSlotIds = 'expenditureSlotIds', + FinalizedActionId = 'finalizedActionId', FromDomainId = 'fromDomainId', FromPotId = 'fromPotId', Id = 'id', @@ -8339,6 +8401,7 @@ export type SearchableColonyActionFilterInput = { createdAt?: InputMaybe; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe; + finalizedActionId?: InputMaybe; fromDomainId?: InputMaybe; fromPotId?: InputMaybe; id?: InputMaybe; @@ -8384,6 +8447,7 @@ export enum SearchableColonyActionSortableFields { CreatedAt = 'createdAt', ExpenditureId = 'expenditureId', ExpenditureSlotIds = 'expenditureSlotIds', + FinalizedActionId = 'finalizedActionId', FromDomainId = 'fromDomainId', FromPotId = 'fromPotId', Id = 'id', @@ -9719,6 +9783,7 @@ export type UpdateColonyActionInput = { expenditureId?: InputMaybe; expenditureSlotChanges?: InputMaybe; expenditureSlotIds?: InputMaybe>; + finalizedActionId?: InputMaybe; fromDomainId?: InputMaybe; fromPotId?: InputMaybe; id: Scalars['ID']; @@ -9863,6 +9928,7 @@ export type UpdateColonyMotionInput = { expenditureFunding?: InputMaybe>; expenditureId?: InputMaybe; expenditureSlotIds?: InputMaybe>; + finalizationActionId?: InputMaybe; hasObjection?: InputMaybe; id: Scalars['ID']; isDecision?: InputMaybe; @@ -9890,8 +9956,12 @@ export type UpdateColonyMultiSigInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; +<<<<<<< HEAD expenditureFunding?: InputMaybe>; expenditureId?: InputMaybe; +======= + finalizationActionId?: InputMaybe; +>>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted?: InputMaybe; id: Scalars['ID']; isDecision?: InputMaybe; From 46e26f4e93de463313182bf8be37e32ef2d480aa Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Thu, 26 Dec 2024 21:26:20 +0100 Subject: [PATCH 26/44] Refactor: Search select component and usage Refactor: Search select component and usage --- .../common/ActionSidebar/ActionTypeSelect.tsx | 4 +- .../ActionSidebar/hooks/useActionsList.ts | 9 +- .../hooks/useFilterChainSelectField.ts | 6 +- .../hooks/useFilterCreatedInField.ts | 7 +- .../partials/ChainSelect/ChainSelect.tsx | 9 +- .../partials/ChainSelect/hooks.ts | 7 +- .../NonVerifiedMembersSelect.tsx | 4 +- .../TeamColorField/TeamColorField.tsx | 2 + .../partials/TeamsSelect/TeamsSelect.tsx | 4 +- .../partials/TeamsSelect/types.ts | 7 +- .../partials/UserSelect/UserSelect.tsx | 2 + .../partials/UserSelect/types.ts | 7 +- .../VerifiedMembersSelect.tsx | 4 +- .../v5/common/ActionSidebar/utils.ts | 6 +- .../v5/shared/SearchSelect/SearchSelect.tsx | 334 ++++++------------ .../v5/shared/SearchSelect/hooks.ts | 77 +++- .../AccordionWrapper/AccordionWrapper.tsx | 50 +++ .../CheckboxSearchItem/CheckboxSearchItem.tsx | 182 +++------- .../partials/CheckboxSearchItem/types.ts | 10 +- .../OptionRenderer/IconOptionRenderer.tsx | 19 + .../OptionRenderer/TeamOptionRenderer.tsx | 38 ++ .../OptionRenderer/TokenOptionRenderer.tsx | 29 ++ .../OptionRenderer/UserOptionRenderer.tsx | 32 ++ .../WithBadgesOptionRenderer.tsx | 35 ++ .../partials/SearchGroup/SearchGroup.tsx | 63 ++++ .../partials/SearchItem/SearchItem.tsx | 170 +++------ .../SearchSelect/partials/SearchItem/types.ts | 10 +- .../v5/shared/SearchSelect/types.ts | 71 +++- .../v5/shared/SearchSelect/utils.ts | 27 +- src/hooks/useTeamsOptions.ts | 5 +- 30 files changed, 699 insertions(+), 531 deletions(-) create mode 100644 src/components/v5/shared/SearchSelect/partials/AccordionWrapper/AccordionWrapper.tsx create mode 100644 src/components/v5/shared/SearchSelect/partials/OptionRenderer/IconOptionRenderer.tsx create mode 100644 src/components/v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx create mode 100644 src/components/v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx create mode 100644 src/components/v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx create mode 100644 src/components/v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx create mode 100644 src/components/v5/shared/SearchSelect/partials/SearchGroup/SearchGroup.tsx diff --git a/src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx b/src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx index acc5e5e5b6e..98c9ed61041 100644 --- a/src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx +++ b/src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx @@ -9,7 +9,8 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useToggle from '~hooks/useToggle/index.ts'; import { formatText } from '~utils/intl.ts'; import Modal from '~v5/shared/Modal/index.ts'; -import SearchSelect from '~v5/shared/SearchSelect/index.ts'; +import { WithBadgesOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx'; +import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import ActionFormRow from '../ActionFormRow/index.ts'; @@ -107,6 +108,7 @@ const ActionTypeSelect: FC = ({ className }) => { registerContainerRef(ref); portalElementRef.current = ref; }} + renderOption={WithBadgesOptionRenderer} items={actionsList} onSelect={(action) => { toggleSelectOff(); diff --git a/src/components/v5/common/ActionSidebar/hooks/useActionsList.ts b/src/components/v5/common/ActionSidebar/hooks/useActionsList.ts index 6b61c6fb14e..bde5c9d0989 100644 --- a/src/components/v5/common/ActionSidebar/hooks/useActionsList.ts +++ b/src/components/v5/common/ActionSidebar/hooks/useActionsList.ts @@ -4,7 +4,10 @@ import { Action } from '~constants/actions.ts'; import { useColonyContext } from '~context/ColonyContext/ColonyContext.ts'; import { useFeatureFlagsContext } from '~context/FeatureFlagsContext/FeatureFlagsContext.ts'; import useEnabledExtensions from '~hooks/useEnabledExtensions.ts'; -import { type SearchSelectOptionProps } from '~v5/shared/SearchSelect/types.ts'; +import { + type SearchSelectOptionProps, + type WithBadgesOption, +} from '~v5/shared/SearchSelect/types.ts'; const useActionsList = () => { const { colony } = useColonyContext(); @@ -19,8 +22,8 @@ const useActionsList = () => { featureFlags.SUPPORTED_CHAINS_ACTION?.isLoading || featureFlags.SUPPORTED_CHAINS_ACTION?.isEnabled; - return useMemo((): SearchSelectOptionProps[] => { - const actionsListOptions: SearchSelectOptionProps[] = [ + return useMemo((): SearchSelectOptionProps[] => { + const actionsListOptions: SearchSelectOptionProps[] = [ { key: '1', title: { id: 'actions.payments' }, diff --git a/src/components/v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts b/src/components/v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts index 2c35ad0c49e..2e93bfba787 100644 --- a/src/components/v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts +++ b/src/components/v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts @@ -1,4 +1,8 @@ import { useDeployedChainIds } from '~hooks/proxyColonies/useDeployedChainIds.ts'; +import { + type SearchSelectOption, + type IconOption, +} from '~v5/shared/SearchSelect/types.ts'; import { MANAGE_SUPPORTED_CHAINS_FIELD_NAME, @@ -17,7 +21,7 @@ export const useFilterChainSelectField = () => { filterFn: (deployedProxyColony) => deployedProxyColony?.isActive, }); - const filterFn = (chainId) => + const filterFn = ({ value: chainId }: SearchSelectOption) => isRemoveOperation ? activeProxyColoniesChainIds.includes(chainId.toString()) : !activeProxyColoniesChainIds.includes(chainId.toString()); diff --git a/src/components/v5/common/ActionSidebar/hooks/useFilterCreatedInField.ts b/src/components/v5/common/ActionSidebar/hooks/useFilterCreatedInField.ts index e615775134b..8c567148d95 100644 --- a/src/components/v5/common/ActionSidebar/hooks/useFilterCreatedInField.ts +++ b/src/components/v5/common/ActionSidebar/hooks/useFilterCreatedInField.ts @@ -3,7 +3,10 @@ import { useEffect } from 'react'; import { useFormContext } from 'react-hook-form'; import { DecisionMethod } from '~types/actions.ts'; -import { type SearchSelectOption } from '~v5/shared/SearchSelect/types.ts'; +import { + type SearchSelectOption, + type TeamOption, +} from '~v5/shared/SearchSelect/types.ts'; import { CREATED_IN_FIELD_NAME, @@ -45,7 +48,7 @@ const useFilterCreatedInField = ( } }, [onlyAllowRoot, decisionMethod, selectedTeam, setValue]); - const createdInFilterFn = (team: SearchSelectOption): boolean => { + const createdInFilterFn = (team: SearchSelectOption): boolean => { if (onlyAllowRoot) return !!team.isRoot; if (!selectedTeam) return true; diff --git a/src/components/v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx b/src/components/v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx index 425861ed116..f1ed6e64937 100644 --- a/src/components/v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx @@ -7,8 +7,12 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useToggle from '~hooks/useToggle/index.ts'; import { formatText } from '~utils/intl.ts'; import ChainBadge from '~v5/common/Pills/ChainBadge/ChainBadge.tsx'; +import { IconOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/IconOptionRenderer.tsx'; import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; -import { type SearchSelectOption } from '~v5/shared/SearchSelect/types.ts'; +import { + type SearchSelectOption, + type IconOption, +} from '~v5/shared/SearchSelect/types.ts'; import { useChainOptions } from './hooks.ts'; @@ -18,7 +22,7 @@ interface ChainSelectProps { name: string; disabled?: boolean; readOnly?: boolean; - filterOptionsFn?: (option: SearchSelectOption) => boolean; + filterOptionsFn?: (option: SearchSelectOption) => boolean; } const ChainSelect: FC = ({ @@ -117,6 +121,7 @@ const ChainSelect: FC = ({ toggleChainSelectOff(); }} + renderOption={IconOptionRenderer} className="z-sidebar" /> )} diff --git a/src/components/v5/common/ActionSidebar/partials/ChainSelect/hooks.ts b/src/components/v5/common/ActionSidebar/partials/ChainSelect/hooks.ts index ed64657417e..93f33a829df 100644 --- a/src/components/v5/common/ActionSidebar/partials/ChainSelect/hooks.ts +++ b/src/components/v5/common/ActionSidebar/partials/ChainSelect/hooks.ts @@ -5,15 +5,12 @@ import { SUPPORTED_CHAINS } from '~constants/proxyColonies.ts'; export const useChainOptions = (filterOptionsFn) => { const chainOptions = useMemo( () => - SUPPORTED_CHAINS.filter( - (supportedChainConfig) => - filterOptionsFn && filterOptionsFn(supportedChainConfig.chainId), - ).map(({ icon, chainId, name, isDisabled }) => ({ + SUPPORTED_CHAINS.map(({ icon, chainId, name, isDisabled }) => ({ icon, isDisabled, value: chainId, label: name, - })), + })).filter((option) => filterOptionsFn && filterOptionsFn(option)), [filterOptionsFn], ); diff --git a/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx b/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx index 6bfd0591c21..4ff3f45518c 100644 --- a/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx @@ -9,7 +9,8 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useToggle from '~hooks/useToggle/index.ts'; import { formatText } from '~utils/intl.ts'; import Button from '~v5/shared/Button/Button.tsx'; -import SearchSelect from '~v5/shared/SearchSelect/index.ts'; +import { UserOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx'; +import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import UserAvatar from '~v5/shared/UserAvatar/index.ts'; import { useNonVerifiedMembersSelect } from './hooks.ts'; @@ -143,6 +144,7 @@ const NonVerifiedMembersSelect: FC = ({ {isUserSelectVisible && ( = ({ name, disabled }) => { toggleOffDecisionSelect(); }} isLabelVisible={false} + renderOption={TeamOptionRenderer} /> diff --git a/src/components/v5/common/ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx b/src/components/v5/common/ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx index c48791deefb..96cea26b0be 100644 --- a/src/components/v5/common/ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx @@ -8,7 +8,8 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useTeamsOptions from '~hooks/useTeamsOptions.ts'; import useToggle from '~hooks/useToggle/index.ts'; import TeamBadge from '~v5/common/Pills/TeamBadge/index.ts'; -import SearchSelect from '~v5/shared/SearchSelect/index.ts'; +import { TeamOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx'; +import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import { type TeamSelectProps } from './types.ts'; @@ -98,6 +99,7 @@ const TeamsSelect: FC = ({ {isTeamSelectVisible && ( { registerContainerRef(ref); portalElementRef.current = ref; diff --git a/src/components/v5/common/ActionSidebar/partials/TeamsSelect/types.ts b/src/components/v5/common/ActionSidebar/partials/TeamsSelect/types.ts index 4f882145e6a..ce60eab133f 100644 --- a/src/components/v5/common/ActionSidebar/partials/TeamsSelect/types.ts +++ b/src/components/v5/common/ActionSidebar/partials/TeamsSelect/types.ts @@ -1,8 +1,11 @@ -import { type SearchSelectOption } from '~v5/shared/SearchSelect/types.ts'; +import { + type SearchSelectOption, + type TeamOption, +} from '~v5/shared/SearchSelect/types.ts'; export interface TeamSelectProps { name: string; readonly?: boolean; - filterOptionsFn?: (option: SearchSelectOption) => boolean; + filterOptionsFn?: (option: SearchSelectOption) => boolean; disabled?: boolean; } diff --git a/src/components/v5/common/ActionSidebar/partials/UserSelect/UserSelect.tsx b/src/components/v5/common/ActionSidebar/partials/UserSelect/UserSelect.tsx index 5467f3b7e50..a19368013a0 100644 --- a/src/components/v5/common/ActionSidebar/partials/UserSelect/UserSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/UserSelect/UserSelect.tsx @@ -13,6 +13,7 @@ import Tooltip from '~shared/Extensions/Tooltip/Tooltip.tsx'; import { type User } from '~types/graphql.ts'; import { formatText } from '~utils/intl.ts'; import { splitWalletAddress } from '~utils/splitWalletAddress.ts'; +import { UserOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx'; import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import UserAvatar from '~v5/shared/UserAvatar/index.ts'; import UserInfoPopover from '~v5/shared/UserInfoPopover/UserInfoPopover.tsx'; @@ -218,6 +219,7 @@ const UserSelect: FC = ({ {selectedUserContent} {isUserSelectVisible && ( boolean; + filterOptionsFn?: (option: SearchSelectOption) => boolean; tooltipContent?: React.ReactNode; - options?: SearchSelectOptionProps & { + options?: SearchSelectOptionProps & { isLoading?: boolean; }; } // @TODO this is a temporary workaround, need to fix SearchSelect types -export interface UserSearchSelectOption extends SearchSelectOption { +export interface UserSearchSelectOption extends SearchSelectOption { label: string; } diff --git a/src/components/v5/common/ActionSidebar/partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx b/src/components/v5/common/ActionSidebar/partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx index 2aee29393d8..7628a0970f9 100644 --- a/src/components/v5/common/ActionSidebar/partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx @@ -10,7 +10,8 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useToggle from '~hooks/useToggle/index.ts'; import { formatText } from '~utils/intl.ts'; import Button from '~v5/shared/Button/Button.tsx'; -import SearchSelect from '~v5/shared/SearchSelect/index.ts'; +import { UserOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx'; +import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import UserAvatar from '~v5/shared/UserAvatar/index.ts'; import { useVerifiedMembersSelect } from './hooks.ts'; @@ -149,6 +150,7 @@ const VerifiedMembersSelect: FC = ({ {isUserSelectVisible && ( { const actionName = action diff --git a/src/components/v5/shared/SearchSelect/SearchSelect.tsx b/src/components/v5/shared/SearchSelect/SearchSelect.tsx index 6141b10267b..dbc67bb0e8d 100644 --- a/src/components/v5/shared/SearchSelect/SearchSelect.tsx +++ b/src/components/v5/shared/SearchSelect/SearchSelect.tsx @@ -1,243 +1,129 @@ -import { Binoculars, CaretDown, CaretUp } from '@phosphor-icons/react'; +import { Binoculars } from '@phosphor-icons/react'; import clsx from 'clsx'; -import { AnimatePresence, motion } from 'framer-motion'; -import debounce from 'lodash/debounce'; -import React, { - type FC, - useCallback, - useEffect, - useMemo, - useState, -} from 'react'; +import React, { type FC } from 'react'; -import { accordionAnimation } from '~constants/accordionAnimation.ts'; import { useMobile } from '~hooks/index.ts'; import { SpinnerLoader } from '~shared/Preloaders/index.ts'; import { formatText } from '~utils/intl.ts'; import EmptyContent from '~v5/common/EmptyContent/index.ts'; +import MenuContainer from '~v5/shared/MenuContainer/index.ts'; import Portal from '~v5/shared/Portal/index.ts'; -import MenuContainer from '../MenuContainer/index.ts'; - -import { useSearchSelect } from './hooks.ts'; -import CheckboxSearchItem from './partials/CheckboxSearchItem/index.ts'; +import { useAccordion, useFilterItems, useSearch } from './hooks.ts'; +import { SearchGroup } from './partials/SearchGroup/SearchGroup.tsx'; import SearchInput from './partials/SearchInput/index.ts'; -import SearchItem from './partials/SearchItem/index.ts'; import { type SearchSelectProps } from './types.ts'; const displayName = 'v5.SearchSelect'; -const SearchSelect = React.forwardRef( - ( - { - items, - onSelect, - isLoading, - hideSearchOnMobile, - onSearch, - showEmptyContent = true, - state, - message, - checkboxesList, - additionalButtons, - className, - placeholder, - shouldReturnAddresses = false, - }, - ref, - ) => { - const [searchValue, setSearchValue] = useState(''); - const [debouncedSearchValue, setDebouncedSearchValue] = useState(''); - const isMobile = useMobile(); - const filteredList = useSearchSelect( - items, - debouncedSearchValue, - shouldReturnAddresses, - ); - - useEffect(() => { - const debounceTimeout = setTimeout(() => { - setDebouncedSearchValue(searchValue); - }, 500); - - return () => clearTimeout(debounceTimeout); - }, [searchValue]); - - const defaultOpenedAccordions = useMemo( - () => - items.filter(({ isAccordion }) => isAccordion).map(({ key }) => key), - [items], - ); - - const [openedAccordions, setOpenedAccordions] = useState( - defaultOpenedAccordions, - ); - - const handleSearch = useMemo( - () => debounce(setDebouncedSearchValue, 500), - [setDebouncedSearchValue], - ); - - const onChange = useCallback( - (value: string) => { - onSearch?.(value); - setSearchValue(value); - if (value) { - handleSearch(value); - } else { - setDebouncedSearchValue(''); - } - }, - [handleSearch, onSearch], - ); - - const handleAccordionClick = useCallback((key: string) => { - setOpenedAccordions((prev) => { - if (prev.includes(key)) { - return prev.filter((item) => item !== key); - } - - return [...prev, key]; - }); - }, []); - - const content = ( - <> -
0 || showEmptyContent, - })} - > - {isMobile && hideSearchOnMobile ? ( -

- {formatText({ id: 'actions.selectActionType' })} -

- ) : ( - - )} -
- {isLoading && ( -
- -
+const SearchSelectInner = ( + { + items, + onSelect, + isLoading, + hideSearchOnMobile, + onSearch, + showEmptyContent = true, + state, + message, + checkboxesList, + additionalButtons, + className, + placeholder, + renderOption, + shouldReturnAddresses = false, + }: SearchSelectProps, + ref: React.ForwardedRef, +) => { + const isMobile = useMobile(); + + const { openedAccordions, onAccordionClick } = useAccordion(items); + const { searchValue, debouncedSearchValue, onChange } = useSearch( + '', + onSearch, + ); + const filteredList = useFilterItems(items, debouncedSearchValue, shouldReturnAddresses); + + const content = ( + <> +
0 || showEmptyContent, + })} + > + {isMobile && hideSearchOnMobile ? ( +

+ {formatText({ id: 'actions.selectActionType' })} +

+ ) : ( + )} - {!isLoading && ( -
-
- {filteredList.length > 0 - ? filteredList.map(({ options, title, isAccordion, key }) => - isAccordion ? ( -
-
-
- {formatText(title)} -
- -
- - {openedAccordions.includes(key) && ( - - {checkboxesList ? ( - - ) : ( - - )} - - )} - -
- ) : ( -
-
- {formatText(title)} -
- {checkboxesList ? ( - - ) : ( - - )} -
- ), - ) - : showEmptyContent && ( - - )} -
+
+ {isLoading && ( +
+ +
+ )} + {!isLoading && ( +
+
+ {filteredList.length > 0 + ? filteredList.map(({ key, ...rest }) => ( + onAccordionClick(key)} + onSelect={onSelect} + isOpen={openedAccordions.includes(key)} + renderOption={renderOption} + checkboxesList={checkboxesList} + /> + )) + : showEmptyContent && ( + + )}
+
+ )} + + ); + + return ( + + - ); - - return ( - - - {content} - {additionalButtons} - - - ); - }, -); + hasShadow + rounded="s" + ref={ref} + > + {content} + {additionalButtons} + + + ); +}; + +const SearchSelect = React.forwardRef(SearchSelectInner) as ( + props: SearchSelectProps & { ref?: React.ForwardedRef }, +) => ReturnType; (SearchSelect as FC).displayName = displayName; diff --git a/src/components/v5/shared/SearchSelect/hooks.ts b/src/components/v5/shared/SearchSelect/hooks.ts index 4f2f0e3fcb8..023d78626b5 100644 --- a/src/components/v5/shared/SearchSelect/hooks.ts +++ b/src/components/v5/shared/SearchSelect/hooks.ts @@ -1,12 +1,16 @@ import { utils } from 'ethers'; -import { useMemo } from 'react'; +import debounce from 'lodash/debounce'; +import { useMemo, useState, useEffect, useCallback } from 'react'; import { formatText } from '~utils/intl.ts'; -import { type SearchSelectOptionProps } from './types.ts'; +import { + isUserSearchSelectOption, + type SearchSelectOptionProps, +} from './types.ts'; -export const useSearchSelect = ( - items: SearchSelectOptionProps[], +export const useFilterItems = ( + items: SearchSelectOptionProps[], searchValue: string, shouldReturnAddresses: boolean, ) => { @@ -40,7 +44,11 @@ export const useSearchSelect = ( return [ { ...item.options[0], - avatar: item.options[0]?.showAvatar ? '' : undefined, + avatar: + isUserSearchSelectOption(item.options[0]) && + item.options[0]?.showAvatar + ? '' + : undefined, value: searchValue, label: searchValue, walletAddress: searchValue, @@ -66,3 +74,62 @@ export const useSearchSelect = ( return filteredOptions; }; + +export const useAccordion = (items: SearchSelectOptionProps[]) => { + const defaultOpenedAccordions = useMemo( + () => items.filter(({ isAccordion }) => isAccordion).map(({ key }) => key), + [items], + ); + + const [openedAccordions, setOpenedAccordions] = useState( + defaultOpenedAccordions, + ); + + const onAccordionClick = useCallback((key: string) => { + setOpenedAccordions((prev) => { + if (prev.includes(key)) { + return prev.filter((item) => item !== key); + } + + return [...prev, key]; + }); + }, []); + + return { openedAccordions, onAccordionClick }; +}; + +export const useSearch = ( + initialSearchValue: string, + onSearch?: (value: string) => void, +) => { + const [searchValue, setSearchValue] = useState(initialSearchValue); + const [debouncedSearchValue, setDebouncedSearchValue] = useState(''); + + useEffect(() => { + const debounceTimeout = setTimeout(() => { + setDebouncedSearchValue(searchValue); + }, 500); + + return () => clearTimeout(debounceTimeout); + }, [searchValue]); + + const handleSearch = useMemo( + () => debounce((value: string) => setDebouncedSearchValue(value), 500), + [], + ); + + const onChange = useCallback( + (value: string) => { + onSearch?.(value); + setSearchValue(value); + if (value) { + handleSearch(value); + } else { + setDebouncedSearchValue(''); + } + }, + [handleSearch, onSearch], + ); + + return { searchValue, debouncedSearchValue, onChange }; +}; diff --git a/src/components/v5/shared/SearchSelect/partials/AccordionWrapper/AccordionWrapper.tsx b/src/components/v5/shared/SearchSelect/partials/AccordionWrapper/AccordionWrapper.tsx new file mode 100644 index 00000000000..f4ff53d9eab --- /dev/null +++ b/src/components/v5/shared/SearchSelect/partials/AccordionWrapper/AccordionWrapper.tsx @@ -0,0 +1,50 @@ +import { CaretUp, CaretDown } from '@phosphor-icons/react'; +import { AnimatePresence, motion } from 'framer-motion'; +import React from 'react'; +import { type FC, type PropsWithChildren } from 'react'; + +import { accordionAnimation } from '~constants/accordionAnimation.ts'; + +interface AccordionWrapperProps extends PropsWithChildren { + title: React.ReactNode; + onClick: () => void; + isOpen?: boolean; +} + +export const AccordionWrapper: FC = ({ + title, + children, + onClick, + isOpen, +}) => { + return ( +
+
+ {title} + +
+ + {isOpen && ( + + {children} + + )} + +
+ ); +}; diff --git a/src/components/v5/shared/SearchSelect/partials/CheckboxSearchItem/CheckboxSearchItem.tsx b/src/components/v5/shared/SearchSelect/partials/CheckboxSearchItem/CheckboxSearchItem.tsx index 7d29a664c27..794faf039dc 100644 --- a/src/components/v5/shared/SearchSelect/partials/CheckboxSearchItem/CheckboxSearchItem.tsx +++ b/src/components/v5/shared/SearchSelect/partials/CheckboxSearchItem/CheckboxSearchItem.tsx @@ -1,18 +1,14 @@ -import { SealCheck } from '@phosphor-icons/react'; import clsx from 'clsx'; -import React, { type FC } from 'react'; +import React from 'react'; -import { DomainColor } from '~gql'; import { useMobile } from '~hooks/index.ts'; -import MaskedAddress from '~shared/MaskedAddress/MaskedAddress.tsx'; -import { getEnumValueFromKey } from '~utils/getEnumValueFromKey.ts'; import { formatText } from '~utils/intl.ts'; -import { getTeamColor } from '~utils/teams.ts'; import Checkbox from '~v5/common/Checkbox/Checkbox.tsx'; import ExtensionsStatusBadge from '~v5/common/Pills/ExtensionStatusBadge/index.ts'; -import { sortDisabled } from '~v5/shared/SearchSelect/utils.ts'; -import { TokenAvatar } from '~v5/shared/TokenAvatar/TokenAvatar.tsx'; -import UserAvatar from '~v5/shared/UserAvatar/index.ts'; +import { + hasOptionVisualElement, + sortDisabled, +} from '~v5/shared/SearchSelect/utils.ts'; import { SearchItemLabelText } from '../SearchItemLabelText/index.tsx'; @@ -20,12 +16,13 @@ import { type CheckboxSearchItemProps } from './types.ts'; const displayName = 'v5.SearchSelect.partials.CheckboxSearchItem'; -const CheckboxSearchItem: FC = ({ +const CheckboxSearchItem = ({ options, onChange, checkboxesList, isLabelVisible = true, -}) => { + renderOption, +}: CheckboxSearchItemProps) => { const isMobile = useMobile(); return ( @@ -37,126 +34,59 @@ const CheckboxSearchItem: FC = ({ 'sm:w-[12.75rem]': !isLabelVisible && isMobile, })} > - {sortDisabled(options).map( - ({ - label, - value, - isDisabled, - avatar, - showAvatar, - color, - walletAddress = '', - token, - isVerified, - }) => { - const firstDisabledOption = options.filter( - (option) => option.isDisabled, - )[0]; - const labelText = formatText(label || ''); + {sortDisabled(options).map((option) => { + const { value, isDisabled } = option; + const firstDisabledOption = options.filter((o) => o.isDisabled)[0]; - const hasAvatar = showAvatar || !!color || !!token; - const teamColor = getTeamColor( - color ? getEnumValueFromKey(DomainColor, color) : undefined, - ); + const hasVisual = hasOptionVisualElement(option); - return ( -
  • -
  • - ); - }, - )} +
    + )} + + + + ); + })} ); }; diff --git a/src/components/v5/shared/SearchSelect/partials/CheckboxSearchItem/types.ts b/src/components/v5/shared/SearchSelect/partials/CheckboxSearchItem/types.ts index c5d204b118f..705e40773c2 100644 --- a/src/components/v5/shared/SearchSelect/partials/CheckboxSearchItem/types.ts +++ b/src/components/v5/shared/SearchSelect/partials/CheckboxSearchItem/types.ts @@ -1,8 +1,12 @@ -import { type SearchSelectOption } from '~v5/shared/SearchSelect/types.ts'; +import { + type SearchSelectOption, + type SearchSelectProps, +} from '~v5/shared/SearchSelect/types.ts'; -export interface CheckboxSearchItemProps { +export interface CheckboxSearchItemProps + extends Pick, 'renderOption'> { checkboxesList?: string[]; - options: SearchSelectOption[]; + options: SearchSelectOption[]; onChange?: (value: string | number) => void; isLabelVisible?: boolean; } diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/IconOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/IconOptionRenderer.tsx new file mode 100644 index 00000000000..a9e9c0ff4f0 --- /dev/null +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/IconOptionRenderer.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import { formatText } from '~utils/intl.ts'; +import { type IconOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; + +export const IconOptionRenderer: IconOptionRendererProps = ( + option, + isLabelVisible, +) => { + const { icon: Icon, label } = option; + const labelText = formatText(label || ''); + + return ( + <> + {Icon && } + {isLabelVisible && labelText} + + ); +}; diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx new file mode 100644 index 00000000000..19cdd75cdcd --- /dev/null +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx @@ -0,0 +1,38 @@ +import clsx from 'clsx'; +import React from 'react'; + +import { DomainColor } from '~gql'; +import { useMobile } from '~hooks'; +import { getEnumValueFromKey } from '~utils/getEnumValueFromKey.ts'; +import { formatText } from '~utils/intl.ts'; +import { getTeamColor } from '~utils/teams.ts'; +import { type TeamOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; + +export const TeamOptionRenderer: TeamOptionRendererProps = ( + option, + isLabelVisible, +) => { + const isMobile = useMobile(); + const { color, label } = option; + const labelText = formatText(label || ''); + const teamColor = getTeamColor( + color ? getEnumValueFromKey(DomainColor, color) : undefined, + ); + + return ( + <> + {color && !isLabelVisible && ( +
    + )} + {color && isLabelVisible && ( + + )} + {isLabelVisible && labelText} + + ); +}; diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx new file mode 100644 index 00000000000..5e0b8c227ea --- /dev/null +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +import { formatText } from '~utils/intl.ts'; +import { type TokenOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; +import { TokenAvatar } from '~v5/shared/TokenAvatar/TokenAvatar.tsx'; + +export const TokenOptionRenderer: TokenOptionRendererProps = ( + option, + isLabelVisible, +) => { + const { token, label } = option; + const labelText = formatText(label || ''); + + return ( + <> + {!!token && ( +
    + +
    + )} + {isLabelVisible && labelText} + + ); +}; diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx new file mode 100644 index 00000000000..9590b1c283d --- /dev/null +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx @@ -0,0 +1,32 @@ +import { SealCheck } from '@phosphor-icons/react'; +import React from 'react'; + +import { formatText } from '~utils/intl.ts'; +import { type UserOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; +import UserAvatar from '~v5/shared/UserAvatar/UserAvatar.tsx'; + +export const UserOptionRenderer: UserOptionRendererProps = ( + option, + isLabelVisible, +) => { + const { showAvatar, avatar, walletAddress = '', label, isVerified } = option; + const labelText = formatText(label || ''); + + return ( + <> + {showAvatar && ( + 0 ? avatar : undefined} + userAddress={walletAddress} + size={20} + /> + )} + {isLabelVisible && labelText} + {!label && {walletAddress}} + {isVerified && ( + + )} + + ); +}; diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx new file mode 100644 index 00000000000..7c1e4eb20c5 --- /dev/null +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx @@ -0,0 +1,35 @@ +import React from 'react'; + +import { formatText } from '~utils/intl.ts'; +import ExtensionsStatusBadge from '~v5/common/Pills/ExtensionStatusBadge/index.ts'; +import { type WithBadgesOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; + +export const WithBadgesOptionRenderer: WithBadgesOptionRendererProps = ( + option, + isLabelVisible, +) => { + const { label, isComingSoon, isNew } = option; + const labelText = formatText(label || ''); + + return ( + <> + {isLabelVisible && labelText} + {isComingSoon && ( +
    + +
    + )} + {isNew && ( +
    + +
    + )} + + ); +}; diff --git a/src/components/v5/shared/SearchSelect/partials/SearchGroup/SearchGroup.tsx b/src/components/v5/shared/SearchSelect/partials/SearchGroup/SearchGroup.tsx new file mode 100644 index 00000000000..76207cdd475 --- /dev/null +++ b/src/components/v5/shared/SearchSelect/partials/SearchGroup/SearchGroup.tsx @@ -0,0 +1,63 @@ +import React from 'react'; + +import { formatText } from '~utils/intl.ts'; +import { + type SearchSelectOptionProps, + type SearchSelectProps, +} from '~v5/shared/SearchSelect/types.ts'; + +import { AccordionWrapper } from '../AccordionWrapper/AccordionWrapper.tsx'; +import CheckboxSearchItem from '../CheckboxSearchItem/CheckboxSearchItem.tsx'; +import SearchItem from '../SearchItem/SearchItem.tsx'; + +type SearchGroupProps = SearchSelectOptionProps & + Pick, 'checkboxesList' | 'onSelect' | 'renderOption'> & { + onClick: () => void; + isOpen?: boolean; + }; + +export const SearchGroup = ({ + isAccordion, + options, + title: titleDescriptor, + checkboxesList, + onClick, + onSelect, + renderOption, + isOpen, +}: SearchGroupProps) => { + const title = ( +
    + {formatText(titleDescriptor)} +
    + ); + const content = checkboxesList ? ( + + ) : ( + + ); + + if (isAccordion) { + return ( + + {content} + + ); + } + + return ( +
    + {title} + {content} +
    + ); +}; diff --git a/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx b/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx index 3ab0b2f1ca0..f82b51957b5 100644 --- a/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx +++ b/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx @@ -1,29 +1,22 @@ -import { CircleWavyCheck } from '@phosphor-icons/react'; import clsx from 'clsx'; -import React, { type FC } from 'react'; +import React from 'react'; -import { DomainColor } from '~gql'; import { useMobile } from '~hooks/index.ts'; -import MaskedAddress from '~shared/MaskedAddress/MaskedAddress.tsx'; -import { getEnumValueFromKey } from '~utils/getEnumValueFromKey.ts'; -import { formatText } from '~utils/intl.ts'; -import { getTeamColor } from '~utils/teams.ts'; -import ExtensionsStatusBadge from '~v5/common/Pills/ExtensionStatusBadge/index.ts'; -import { sortDisabled } from '~v5/shared/SearchSelect/utils.ts'; -import { TokenAvatar } from '~v5/shared/TokenAvatar/TokenAvatar.tsx'; -import { UserAvatar } from '~v5/shared/UserAvatar/UserAvatar.tsx'; - -import { SearchItemLabelText } from '../SearchItemLabelText/index.tsx'; +import { + hasOptionVisualElement, + sortDisabled, +} from '~v5/shared/SearchSelect/utils.ts'; import { type SearchItemProps } from './types.ts'; const displayName = 'v5.SearchSelect.partials.SearchItem'; -const SearchItem: FC = ({ +const SearchItem = ({ options, onChange, isLabelVisible = true, -}) => { + renderOption, +}: SearchItemProps) => { const isMobile = useMobile(); return ( @@ -35,122 +28,43 @@ const SearchItem: FC = ({ 'sm:w-[12.75rem]': !isLabelVisible && isMobile, })} > - {sortDisabled(options).map( - ({ - label, - value, - isDisabled, - isComingSoon, - isNew, - icon: Icon, - avatar, - showAvatar, - color, - walletAddress = '', - token, - isVerified, - }) => { - const labelText = formatText(label || ''); + {sortDisabled(options).map((option) => { + const { value, isDisabled } = option; - const hasAvatar = showAvatar || !!color || !!token; - const teamColor = getTeamColor( - color ? getEnumValueFromKey(DomainColor, color) : undefined, - ); + const hasVisual = hasOptionVisualElement(option); - return ( -
  • + -
  • - ); - }, - )} +
    + {renderOption(option, isLabelVisible)} +
    + + + ); + })} ); }; diff --git a/src/components/v5/shared/SearchSelect/partials/SearchItem/types.ts b/src/components/v5/shared/SearchSelect/partials/SearchItem/types.ts index 6cba842a1af..80f4dd990f9 100644 --- a/src/components/v5/shared/SearchSelect/partials/SearchItem/types.ts +++ b/src/components/v5/shared/SearchSelect/partials/SearchItem/types.ts @@ -1,7 +1,11 @@ -import { type SearchSelectOption } from '~v5/shared/SearchSelect/types.ts'; +import { + type SearchSelectProps, + type SearchSelectOption, +} from '~v5/shared/SearchSelect/types.ts'; -export interface SearchItemProps { - options: SearchSelectOption[]; +export interface SearchItemProps + extends Pick, 'renderOption'> { + options: SearchSelectOption[]; onChange?: (value: string | number) => void; isLabelVisible?: boolean; } diff --git a/src/components/v5/shared/SearchSelect/types.ts b/src/components/v5/shared/SearchSelect/types.ts index e9d5ab3a38f..d5f3cb91d42 100644 --- a/src/components/v5/shared/SearchSelect/types.ts +++ b/src/components/v5/shared/SearchSelect/types.ts @@ -4,8 +4,13 @@ import { type MessageDescriptor } from 'react-intl'; import { type TokenFragment } from '~gql'; import { type BaseFieldProps } from '~v5/common/Fields/types.ts'; -export interface SearchSelectProps extends BaseFieldProps { - items: SearchSelectOptionProps[]; +export type OptionRenderer = ( + option: SearchSelectOption, + isLabelVisible?: boolean, +) => React.ReactNode; + +export interface SearchSelectProps extends BaseFieldProps { + items: SearchSelectOptionProps[]; onSelect?: (value: string) => void; isLoading?: boolean; className?: string; @@ -17,30 +22,72 @@ export interface SearchSelectProps extends BaseFieldProps { additionalButtons?: React.ReactNode; placeholder?: string; shouldReturnAddresses?: boolean; + renderOption: OptionRenderer; } -export interface SearchSelectOptionProps { +export interface SearchSelectOptionProps { key: string; title: MessageDescriptor; isAccordion?: boolean; - options: SearchSelectOption[]; + options: SearchSelectOption[]; } -export interface SearchSelectOption { - label: MessageDescriptor | string; +export type SearchSelectOption = T & { value: string | number; + label: MessageDescriptor | string; isDisabled?: boolean; +}; + +export interface WithBadgesOption { isComingSoon?: boolean; isNew?: boolean; +} + +export type WithBadgesOptionRendererProps = OptionRenderer; + +export interface UserOption { avatar?: string; - thumbnail?: string; showAvatar?: boolean; - color?: string; - icon?: Icon; walletAddress?: string; - nativeId?: number; - token?: TokenFragment; - isRoot?: boolean; isVerified?: boolean; userReputation?: string; + thumbnail?: string; +} + +export type UserOptionRendererProps = OptionRenderer; + +export interface TokenOption { + token: TokenFragment; } + +export type TokenOptionRendererProps = OptionRenderer; + +export interface TeamOption { + color?: string; + isRoot?: boolean; +} + +export type TeamOptionRendererProps = OptionRenderer; + +export interface IconOption { + icon: Icon; +} + +export type IconOptionRendererProps = OptionRenderer; + +export type AllSearchSelectOptions = + | UserOption + | TeamOption + | TokenOption + | IconOption + | WithBadgesOption; + +export const isUserSearchSelectOption = ( + option: SearchSelectOption, +): option is SearchSelectOption => { + if ('walletAddress' in option && option.walletAddress) { + return true; + } + + return false; +}; diff --git a/src/components/v5/shared/SearchSelect/utils.ts b/src/components/v5/shared/SearchSelect/utils.ts index df0b0d66235..aefc40d7546 100644 --- a/src/components/v5/shared/SearchSelect/utils.ts +++ b/src/components/v5/shared/SearchSelect/utils.ts @@ -1,8 +1,31 @@ -import { type SearchSelectOption } from './types.ts'; +import { + type IconOption, + type TeamOption, + type TokenOption, + type UserOption, + type SearchSelectOption, +} from './types.ts'; -export const sortDisabled = (options: SearchSelectOption[]) => { +export const sortDisabled = (options: SearchSelectOption[]) => { const enabled = options.filter((option) => !option.isDisabled); const disabled = options.filter((option) => option.isDisabled); return [...enabled, ...disabled]; }; + +type OptionWithVisual = UserOption | TeamOption | TokenOption | IconOption; + +export const hasOptionVisualElement = ( + option: SearchSelectOption, +): boolean => { + if ( + ('showAvatar' in option && option.showAvatar) || + ('color' in option && option.color) || + ('token' in option && !!option.token) || + ('icon' in option && !option.icon) + ) { + return true; + } + + return false; +}; diff --git a/src/hooks/useTeamsOptions.ts b/src/hooks/useTeamsOptions.ts index 9f71de76e14..c7a4a48884a 100644 --- a/src/hooks/useTeamsOptions.ts +++ b/src/hooks/useTeamsOptions.ts @@ -3,6 +3,7 @@ import { type Domain, DomainColor } from '~types/graphql.ts'; import { notNull } from '~utils/arrays/index.ts'; import { getDomainNameFallback } from '~utils/domains.ts'; import { + type TeamOption, type SearchSelectOption, type SearchSelectOptionProps, } from '~v5/shared/SearchSelect/types.ts'; @@ -23,8 +24,8 @@ const sortByReputationAndName = (a: Domain, b: Domain) => { }; const useTeamsOptions = ( - filterOptionsFn?: (option: SearchSelectOption) => boolean, -): SearchSelectOptionProps['options'] => { + filterOptionsFn?: (option: SearchSelectOption) => boolean, +): SearchSelectOptionProps['options'] => { const { colony: { domains }, } = useColonyContext(); From 5f64d2f1420b61b6697c404612f60ea5762119b2 Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Fri, 27 Dec 2024 10:41:25 +0100 Subject: [PATCH 27/44] Refactor: Update TokenSearchSelect to use SearchSelect Refactor: Update TokenSearchSelect to use SearchSelect --- .../TokenSearchItem/TokenSearchItem.tsx | 54 ------ .../partials/TokenSearchItem/types.ts | 13 -- .../partials/TokenSearchItem/utils.ts | 8 - .../TokenSearchSelect/TokenSearchSelect.tsx | 181 ++++-------------- .../partials/TokenSearchSelect/hooks.ts | 27 ++- .../partials/TokenSearchSelect/types.ts | 10 +- .../partials/TokenSelect/types.ts | 7 +- .../v5/shared/SearchSelect/SearchSelect.tsx | 21 +- .../v5/shared/SearchSelect/hooks.ts | 7 + .../partials/SearchGroup/SearchGroup.tsx | 4 +- .../v5/shared/SearchSelect/types.ts | 6 +- .../TokenSelectContext/TokenSelectContext.ts | 13 +- .../TokenSelectContextProvider.tsx | 9 +- 13 files changed, 115 insertions(+), 245 deletions(-) delete mode 100644 src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/TokenSearchItem.tsx delete mode 100644 src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/types.ts delete mode 100644 src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/utils.ts diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/TokenSearchItem.tsx b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/TokenSearchItem.tsx deleted file mode 100644 index 2e5938453b2..00000000000 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/TokenSearchItem.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import clsx from 'clsx'; -import React, { type FC } from 'react'; - -import { TokenAvatar } from '~v5/shared/TokenAvatar/TokenAvatar.tsx'; - -import { type TokenSearchItemProps } from './types.ts'; -import { sortDisabled } from './utils.ts'; - -const displayName = - 'v5.common.ActionsContent.partials.TokenSelect.partials.TokenSearchItem'; - -const TokenSearchItem: FC = ({ - options, - onOptionClick, -}) => ( -
      - {sortDisabled(options).map(({ label, value, isDisabled, token }) => ( -
    • - -
    • - ))} -
    -); - -TokenSearchItem.displayName = displayName; - -export default TokenSearchItem; diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/types.ts b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/types.ts deleted file mode 100644 index cd25a13ae0b..00000000000 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/types.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { type TokenFragment } from '~gql'; - -export interface TokenSearchItemOption { - label: string; - value: string | number; - isDisabled?: boolean; - token?: TokenFragment; -} - -export interface TokenSearchItemProps { - options: TokenSearchItemOption[]; - onOptionClick?: (value: string | number) => void; -} diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/utils.ts b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/utils.ts deleted file mode 100644 index d2d1286e493..00000000000 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/utils.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { type TokenSearchItemOption } from './types.ts'; - -export const sortDisabled = (options: TokenSearchItemOption[]) => { - const enabled = options.filter((option) => !option.isDisabled); - const disabled = options.filter((option) => option.isDisabled); - - return [...enabled, ...disabled]; -}; diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx index a4011bca229..c781a953c9e 100644 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx @@ -1,25 +1,11 @@ import { Binoculars, Coin } from '@phosphor-icons/react'; -import clsx from 'clsx'; -import debounce from 'lodash/debounce'; -import React, { - type FC, - useCallback, - useEffect, - useMemo, - useState, -} from 'react'; +import React, { type FC, useState } from 'react'; import { useTokenSelectContext } from '~context/TokenSelectContext/TokenSelectContext.ts'; -import { useMobile } from '~hooks/index.ts'; -import { SpinnerLoader } from '~shared/Preloaders/index.ts'; -import { formatText } from '~utils/intl.ts'; import EmptyContent from '~v5/common/EmptyContent/index.ts'; import { FieldState } from '~v5/common/Fields/consts.ts'; -import MenuContainer from '~v5/shared/MenuContainer/MenuContainer.tsx'; -import Portal from '~v5/shared/Portal/index.ts'; -import SearchInput from '~v5/shared/SearchSelect/partials/SearchInput/SearchInput.tsx'; - -import TokenSearchItem from '../TokenSearchItem/TokenSearchItem.tsx'; +import { TokenOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx'; +import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import { useSearchSelect } from './hooks.ts'; import { type TokenSearchSelectProps } from './types.ts'; @@ -45,135 +31,50 @@ const TokenSearchSelect = React.forwardRef< }, ref, ) => { - const { isLoading: isTokensListDataLoading } = useTokenSelectContext(); - - const [searchValue, setSearchValue] = useState(''); const [debouncedSearchValue, setDebouncedSearchValue] = useState(''); - const isMobile = useMobile(); - const { - filteredOptions, - loading: loadingTokenData, - suggestedOptions, - } = useSearchSelect(debouncedSearchValue, filterOptionsFn); - const hasError = state && state === FieldState.Error; - - useEffect(() => { - const debounceTimeout = setTimeout(() => { - setDebouncedSearchValue(searchValue); - }, 500); - - return () => clearTimeout(debounceTimeout); - }, [searchValue]); - - const handleSearch = useMemo( - () => debounce(setDebouncedSearchValue, 500), - [setDebouncedSearchValue], + const { isLoading: isTokensListDataLoading } = useTokenSelectContext(); + const { items, loading: loadingTokenData } = useSearchSelect( + debouncedSearchValue, + filterOptionsFn, ); - const onChange = useCallback( - (value: string) => { - onSearch?.(value); - setSearchValue(value); - if (value) { - handleSearch(value); - } else { - setDebouncedSearchValue(''); - } - }, - [handleSearch, onSearch], - ); + const handleDebouncedSearch = (value: string) => { + setDebouncedSearchValue(value); + }; return ( - - -
    - {isMobile && hideSearchOnMobile ? ( -

    - {formatText({ id: 'actions.selectActionType' })} -

    - ) : ( - - )} -
    -
    - {isLoading || isTokensListDataLoading || loadingTokenData ? ( - - ) : ( - <> - {(debouncedSearchValue && !!filteredOptions.length) || - (!debouncedSearchValue && !!suggestedOptions.length) ? ( -
    - {!debouncedSearchValue && ( -
    - {formatText({ - id: 'manageTokensTable.suggestedTokens', - })} -
    - )} - -
    - ) : ( - <> - {!hasError && ( - - )} - - )} - - )} -
    - {additionalButtons} -
    -
    + + } + /> ); }, ); diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/hooks.ts b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/hooks.ts index 50a370437a0..0d545ce54ba 100644 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/hooks.ts +++ b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/hooks.ts @@ -4,12 +4,14 @@ import { useEffect, useMemo } from 'react'; import { useTokenSelectContext } from '~context/TokenSelectContext/TokenSelectContext.ts'; import { useGetTokenFromEverywhereQuery } from '~gql'; import { formatText } from '~utils/intl.ts'; - -import { type TokenSearchItemOption } from '../TokenSearchItem/types.ts'; +import { + type TokenOption, + type SearchSelectOption, +} from '~v5/shared/SearchSelect/types.ts'; export const useSearchSelect = ( searchValue: string, - filterOptionsFn?: (option: TokenSearchItemOption) => boolean, + filterOptionsFn?: (option: SearchSelectOption) => boolean, ) => { const { setOptions, options, suggestedOptions } = useTokenSelectContext(); @@ -55,7 +57,7 @@ export const useSearchSelect = ( } }, [setOptions, tokenData?.getTokenFromEverywhere?.items]); - const searchedOptions: TokenSearchItemOption[] = useMemo( + const searchedOptions: SearchSelectOption[] = useMemo( () => options.filter((option) => { const searchQuery = searchValue.toLowerCase(); @@ -89,9 +91,22 @@ export const useSearchSelect = ( [filterOptionsFn, suggestedOptions], ); + const items = useMemo(() => { + return [ + { + key: 'tokens', + title: !searchValue + ? { + id: 'manageTokensTable.suggestedTokens', + } + : undefined, + options: searchValue ? filteredOptions : filteredSuggestedOptions, + }, + ]; + }, [searchValue, filteredOptions, filteredSuggestedOptions]); + return { - filteredOptions, loading, - suggestedOptions: filteredSuggestedOptions, + items, }; }; diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/types.ts b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/types.ts index 7ae51b39ad5..7f282f592e0 100644 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/types.ts +++ b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/types.ts @@ -1,11 +1,13 @@ import { type BaseFieldProps } from '~v5/common/Fields/types.ts'; - -import { type TokenSearchItemOption } from '../TokenSearchItem/types.ts'; +import { + type TokenOption, + type SearchSelectOption, +} from '~v5/shared/SearchSelect/types.ts'; export interface TokenSearchSelectOptionProps { key: string; title: string; - options: TokenSearchItemOption[]; + options: SearchSelectOption[]; } export interface TokenSearchSelectProps extends BaseFieldProps { @@ -16,5 +18,5 @@ export interface TokenSearchSelectProps extends BaseFieldProps { onSearch?: (value: string) => void; readonly?: boolean; additionalButtons?: React.ReactNode; - filterOptionsFn?: (option: TokenSearchItemOption) => boolean; + filterOptionsFn?: (option: SearchSelectOption) => boolean; } diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/types.ts b/src/components/v5/common/ActionSidebar/partials/TokenSelect/types.ts index 8b9f0c4fea9..e61b296d790 100644 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/types.ts +++ b/src/components/v5/common/ActionSidebar/partials/TokenSelect/types.ts @@ -1,8 +1,11 @@ -import { type TokenSearchItemOption } from './partials/TokenSearchItem/types.ts'; +import { + type TokenOption, + type SearchSelectOption, +} from '~v5/shared/SearchSelect/types.ts'; export interface TokenSelectProps { name: string; disabled?: boolean; readOnly?: boolean; - filterOptionsFn?: (option: TokenSearchItemOption) => boolean; + filterOptionsFn?: (option: SearchSelectOption) => boolean; } diff --git a/src/components/v5/shared/SearchSelect/SearchSelect.tsx b/src/components/v5/shared/SearchSelect/SearchSelect.tsx index dbc67bb0e8d..59adfdc44e9 100644 --- a/src/components/v5/shared/SearchSelect/SearchSelect.tsx +++ b/src/components/v5/shared/SearchSelect/SearchSelect.tsx @@ -23,7 +23,9 @@ const SearchSelectInner = ( isLoading, hideSearchOnMobile, onSearch, + onDebouncedSearch, showEmptyContent = true, + emptyContent, state, message, checkboxesList, @@ -41,9 +43,20 @@ const SearchSelectInner = ( const { searchValue, debouncedSearchValue, onChange } = useSearch( '', onSearch, + onDebouncedSearch, ); const filteredList = useFilterItems(items, debouncedSearchValue, shouldReturnAddresses); + const contentFallback = + showEmptyContent && + (emptyContent || ( + + )); + const content = ( <>
    ( checkboxesList={checkboxesList} /> )) - : showEmptyContent && ( - - )} + : contentFallback}
    )} diff --git a/src/components/v5/shared/SearchSelect/hooks.ts b/src/components/v5/shared/SearchSelect/hooks.ts index 023d78626b5..d8f7405b938 100644 --- a/src/components/v5/shared/SearchSelect/hooks.ts +++ b/src/components/v5/shared/SearchSelect/hooks.ts @@ -101,6 +101,7 @@ export const useAccordion = (items: SearchSelectOptionProps[]) => { export const useSearch = ( initialSearchValue: string, onSearch?: (value: string) => void, + onDebouncedSearch?: (value: string) => void, ) => { const [searchValue, setSearchValue] = useState(initialSearchValue); const [debouncedSearchValue, setDebouncedSearchValue] = useState(''); @@ -113,6 +114,12 @@ export const useSearch = ( return () => clearTimeout(debounceTimeout); }, [searchValue]); + useEffect(() => { + onDebouncedSearch?.(debouncedSearchValue); + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [debouncedSearchValue]); + const handleSearch = useMemo( () => debounce((value: string) => setDebouncedSearchValue(value), 500), [], diff --git a/src/components/v5/shared/SearchSelect/partials/SearchGroup/SearchGroup.tsx b/src/components/v5/shared/SearchSelect/partials/SearchGroup/SearchGroup.tsx index 76207cdd475..bd105284518 100644 --- a/src/components/v5/shared/SearchSelect/partials/SearchGroup/SearchGroup.tsx +++ b/src/components/v5/shared/SearchSelect/partials/SearchGroup/SearchGroup.tsx @@ -26,11 +26,11 @@ export const SearchGroup = ({ renderOption, isOpen, }: SearchGroupProps) => { - const title = ( + const title = titleDescriptor ? (
    {formatText(titleDescriptor)}
    - ); + ) : null; const content = checkboxesList ? ( extends BaseFieldProps { className?: string; hideSearchOnMobile?: boolean; onSearch?: (value: string) => void; + onDebouncedSearch?: (value: string) => void; showEmptyContent?: boolean; + emptyContent?: React.ReactNode; readonly?: boolean; checkboxesList?: string[]; additionalButtons?: React.ReactNode; @@ -27,7 +29,7 @@ export interface SearchSelectProps extends BaseFieldProps { export interface SearchSelectOptionProps { key: string; - title: MessageDescriptor; + title?: MessageDescriptor; isAccordion?: boolean; options: SearchSelectOption[]; } @@ -57,7 +59,7 @@ export interface UserOption { export type UserOptionRendererProps = OptionRenderer; export interface TokenOption { - token: TokenFragment; + token?: TokenFragment; } export type TokenOptionRendererProps = OptionRenderer; diff --git a/src/context/TokenSelectContext/TokenSelectContext.ts b/src/context/TokenSelectContext/TokenSelectContext.ts index 68628a3f52d..386a800ef83 100644 --- a/src/context/TokenSelectContext/TokenSelectContext.ts +++ b/src/context/TokenSelectContext/TokenSelectContext.ts @@ -1,14 +1,19 @@ import { createContext, useContext } from 'react'; -import { type TokenSearchItemOption } from '~v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/types.ts'; +import { + type TokenOption, + type SearchSelectOption, +} from '~v5/shared/SearchSelect/types.ts'; export const TokenSelectContext = createContext< | { isLoading?: boolean; setIsLoading: React.Dispatch>; - setOptions: React.Dispatch>; - options: TokenSearchItemOption[]; - suggestedOptions: TokenSearchItemOption[]; + setOptions: React.Dispatch< + React.SetStateAction[]> + >; + options: SearchSelectOption[]; + suggestedOptions: SearchSelectOption[]; } | undefined >(undefined); diff --git a/src/context/TokenSelectContext/TokenSelectContextProvider.tsx b/src/context/TokenSelectContext/TokenSelectContextProvider.tsx index 762d19b9c37..a32e183faf9 100644 --- a/src/context/TokenSelectContext/TokenSelectContextProvider.tsx +++ b/src/context/TokenSelectContext/TokenSelectContextProvider.tsx @@ -8,7 +8,10 @@ import React, { import { useGetTokensListQuery } from '~gql'; import { useGetAllTokens } from '~hooks/useGetAllTokens.ts'; import { notNull } from '~utils/arrays/index.ts'; -import { type TokenSearchItemOption } from '~v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchItem/types.ts'; +import { + type TokenOption, + type SearchSelectOption, +} from '~v5/shared/SearchSelect/types.ts'; import { TokenSelectContext } from './TokenSelectContext.ts'; @@ -56,7 +59,7 @@ const TokenSelectContextProvider: FC = ({ children }) => { [tokensListData], ); - const suggestedOptions: TokenSearchItemOption[] = predefinedTokens + const suggestedOptions: SearchSelectOption[] = predefinedTokens .filter((token, index, self) => { return ( index === self.findIndex((t) => t.tokenAddress === token.tokenAddress) @@ -68,7 +71,7 @@ const TokenSelectContextProvider: FC = ({ children }) => { token: item, })); - const allTokensOptions: TokenSearchItemOption[] = [ + const allTokensOptions: SearchSelectOption[] = [ ...(allTokens.flatMap(({ token }) => token).filter(notNull) ?? []), ].map((item) => ({ label: item.name, From 480a60a6f807d1c11bdf504e6aead3714d467e24 Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Fri, 27 Dec 2024 10:59:50 +0100 Subject: [PATCH 28/44] Refactor: Rename search select option renderers and pass isMobile prop Refactor: Rename search select option renderers and pass isMobile prop --- src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx | 4 ++-- .../ActionSidebar/partials/ChainSelect/ChainSelect.tsx | 4 ++-- .../NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx | 4 ++-- .../ActionSidebar/partials/TeamColorField/TeamColorField.tsx | 4 ++-- .../ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx | 4 ++-- .../partials/TokenSearchSelect/TokenSearchSelect.tsx | 4 ++-- .../common/ActionSidebar/partials/UserSelect/UserSelect.tsx | 4 ++-- .../partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx | 4 ++-- .../partials/OptionRenderer/IconOptionRenderer.tsx | 2 +- .../partials/OptionRenderer/TeamOptionRenderer.tsx | 5 ++--- .../partials/OptionRenderer/TokenOptionRenderer.tsx | 2 +- .../partials/OptionRenderer/UserOptionRenderer.tsx | 2 +- .../partials/OptionRenderer/WithBadgesOptionRenderer.tsx | 2 +- .../shared/SearchSelect/partials/SearchItem/SearchItem.tsx | 2 +- src/components/v5/shared/SearchSelect/types.ts | 1 + 15 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx b/src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx index 98c9ed61041..b88cacb67db 100644 --- a/src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx +++ b/src/components/v5/common/ActionSidebar/ActionTypeSelect.tsx @@ -9,7 +9,7 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useToggle from '~hooks/useToggle/index.ts'; import { formatText } from '~utils/intl.ts'; import Modal from '~v5/shared/Modal/index.ts'; -import { WithBadgesOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx'; +import { renderWithBadgesOption } from '~v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx'; import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import ActionFormRow from '../ActionFormRow/index.ts'; @@ -108,7 +108,7 @@ const ActionTypeSelect: FC = ({ className }) => { registerContainerRef(ref); portalElementRef.current = ref; }} - renderOption={WithBadgesOptionRenderer} + renderOption={renderWithBadgesOption} items={actionsList} onSelect={(action) => { toggleSelectOff(); diff --git a/src/components/v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx b/src/components/v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx index f1ed6e64937..ee30ece4043 100644 --- a/src/components/v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx @@ -7,7 +7,7 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useToggle from '~hooks/useToggle/index.ts'; import { formatText } from '~utils/intl.ts'; import ChainBadge from '~v5/common/Pills/ChainBadge/ChainBadge.tsx'; -import { IconOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/IconOptionRenderer.tsx'; +import { renderIconOption } from '~v5/shared/SearchSelect/partials/OptionRenderer/IconOptionRenderer.tsx'; import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import { type SearchSelectOption, @@ -121,7 +121,7 @@ const ChainSelect: FC = ({ toggleChainSelectOff(); }} - renderOption={IconOptionRenderer} + renderOption={renderIconOption} className="z-sidebar" /> )} diff --git a/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx b/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx index 4ff3f45518c..1ab63f1c06b 100644 --- a/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx @@ -9,7 +9,7 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useToggle from '~hooks/useToggle/index.ts'; import { formatText } from '~utils/intl.ts'; import Button from '~v5/shared/Button/Button.tsx'; -import { UserOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx'; +import { renderUserOption } from '~v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx'; import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import UserAvatar from '~v5/shared/UserAvatar/index.ts'; @@ -144,7 +144,7 @@ const NonVerifiedMembersSelect: FC = ({ {isUserSelectVisible && ( = ({ name, disabled }) => { toggleOffDecisionSelect(); }} isLabelVisible={false} - renderOption={TeamOptionRenderer} + renderOption={renderTeamOption} /> diff --git a/src/components/v5/common/ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx b/src/components/v5/common/ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx index 96cea26b0be..dc4ec22cdf8 100644 --- a/src/components/v5/common/ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/TeamsSelect/TeamsSelect.tsx @@ -8,7 +8,7 @@ import useRelativePortalElement from '~hooks/useRelativePortalElement.ts'; import useTeamsOptions from '~hooks/useTeamsOptions.ts'; import useToggle from '~hooks/useToggle/index.ts'; import TeamBadge from '~v5/common/Pills/TeamBadge/index.ts'; -import { TeamOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx'; +import { renderTeamOption } from '~v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx'; import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import { type TeamSelectProps } from './types.ts'; @@ -99,7 +99,7 @@ const TeamsSelect: FC = ({ {isTeamSelectVisible && ( { registerContainerRef(ref); portalElementRef.current = ref; diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx index c781a953c9e..52de097d4f9 100644 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx @@ -4,7 +4,7 @@ import React, { type FC, useState } from 'react'; import { useTokenSelectContext } from '~context/TokenSelectContext/TokenSelectContext.ts'; import EmptyContent from '~v5/common/EmptyContent/index.ts'; import { FieldState } from '~v5/common/Fields/consts.ts'; -import { TokenOptionRenderer } from '~v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx'; +import { renderTokenOption } from '~v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx'; import SearchSelect from '~v5/shared/SearchSelect/SearchSelect.tsx'; import { useSearchSelect } from './hooks.ts'; @@ -47,7 +47,7 @@ const TokenSearchSelect = React.forwardRef< = ({ {selectedUserContent} {isUserSelectVisible && ( = ({ {isUserSelectVisible && ( { diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx index 19cdd75cdcd..d6f3eb56668 100644 --- a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TeamOptionRenderer.tsx @@ -2,17 +2,16 @@ import clsx from 'clsx'; import React from 'react'; import { DomainColor } from '~gql'; -import { useMobile } from '~hooks'; import { getEnumValueFromKey } from '~utils/getEnumValueFromKey.ts'; import { formatText } from '~utils/intl.ts'; import { getTeamColor } from '~utils/teams.ts'; import { type TeamOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; -export const TeamOptionRenderer: TeamOptionRendererProps = ( +export const renderTeamOption: TeamOptionRendererProps = ( option, isLabelVisible, + isMobile, ) => { - const isMobile = useMobile(); const { color, label } = option; const labelText = formatText(label || ''); const teamColor = getTeamColor( diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx index 5e0b8c227ea..2f15a962a35 100644 --- a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/TokenOptionRenderer.tsx @@ -4,7 +4,7 @@ import { formatText } from '~utils/intl.ts'; import { type TokenOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; import { TokenAvatar } from '~v5/shared/TokenAvatar/TokenAvatar.tsx'; -export const TokenOptionRenderer: TokenOptionRendererProps = ( +export const renderTokenOption: TokenOptionRendererProps = ( option, isLabelVisible, ) => { diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx index 9590b1c283d..7395b0f5b8b 100644 --- a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/UserOptionRenderer.tsx @@ -5,7 +5,7 @@ import { formatText } from '~utils/intl.ts'; import { type UserOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; import UserAvatar from '~v5/shared/UserAvatar/UserAvatar.tsx'; -export const UserOptionRenderer: UserOptionRendererProps = ( +export const renderUserOption: UserOptionRendererProps = ( option, isLabelVisible, ) => { diff --git a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx index 7c1e4eb20c5..880fdf5ec62 100644 --- a/src/components/v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx +++ b/src/components/v5/shared/SearchSelect/partials/OptionRenderer/WithBadgesOptionRenderer.tsx @@ -4,7 +4,7 @@ import { formatText } from '~utils/intl.ts'; import ExtensionsStatusBadge from '~v5/common/Pills/ExtensionStatusBadge/index.ts'; import { type WithBadgesOptionRendererProps } from '~v5/shared/SearchSelect/types.ts'; -export const WithBadgesOptionRenderer: WithBadgesOptionRendererProps = ( +export const renderWithBadgesOption: WithBadgesOptionRendererProps = ( option, isLabelVisible, ) => { diff --git a/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx b/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx index f82b51957b5..bc4883f3741 100644 --- a/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx +++ b/src/components/v5/shared/SearchSelect/partials/SearchItem/SearchItem.tsx @@ -59,7 +59,7 @@ const SearchItem = ({ }} >
    - {renderOption(option, isLabelVisible)} + {renderOption(option, isLabelVisible, isMobile)}
    diff --git a/src/components/v5/shared/SearchSelect/types.ts b/src/components/v5/shared/SearchSelect/types.ts index ab53fa77271..a52e2f92953 100644 --- a/src/components/v5/shared/SearchSelect/types.ts +++ b/src/components/v5/shared/SearchSelect/types.ts @@ -7,6 +7,7 @@ import { type BaseFieldProps } from '~v5/common/Fields/types.ts'; export type OptionRenderer = ( option: SearchSelectOption, isLabelVisible?: boolean, + isMobile?: boolean, ) => React.ReactNode; export interface SearchSelectProps extends BaseFieldProps { From 8e55ef5a8c0092f3025dc94dfb5d9fbb047e86ea Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Wed, 8 Jan 2025 18:17:02 +0100 Subject: [PATCH 29/44] Fix: Add showSearchValueAsOption flag to SearchSelect Fix: Add showSearchValueAsOption flag to SearchSelect and refactor useFilterItems hook --- .../NonVerifiedMembersSelect.tsx | 2 +- .../TokenSearchSelect/TokenSearchSelect.tsx | 1 + .../partials/UserSelect/UserSelect.tsx | 3 +- .../VerifiedMembersSelect.tsx | 1 + .../v5/shared/SearchSelect/SearchSelect.tsx | 4 +- .../v5/shared/SearchSelect/hooks.ts | 99 +++++++++---------- .../v5/shared/SearchSelect/types.ts | 1 + 7 files changed, 54 insertions(+), 57 deletions(-) diff --git a/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx b/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx index 1ab63f1c06b..d8083582d32 100644 --- a/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/NonVerifiedMembersSelect/NonVerifiedMembersSelect.tsx @@ -156,7 +156,7 @@ const NonVerifiedMembersSelect: FC = ({ 'left-6 right-[1.9rem] w-auto': isMobile, })} showEmptyContent - shouldReturnAddresses + showSearchValueAsOption additionalButtons={ isMobile && (
    diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx index 52de097d4f9..ba2ee79d82d 100644 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx @@ -54,6 +54,7 @@ const TokenSearchSelect = React.forwardRef< onSearch={onSearch} onDebouncedSearch={handleDebouncedSearch} showEmptyContent={!hasError} + showSearchValueAsOption additionalButtons={additionalButtons} hideSearchOnMobile={hideSearchOnMobile} message={message} diff --git a/src/components/v5/common/ActionSidebar/partials/UserSelect/UserSelect.tsx b/src/components/v5/common/ActionSidebar/partials/UserSelect/UserSelect.tsx index deaa4dcb9a2..a58ed941cb6 100644 --- a/src/components/v5/common/ActionSidebar/partials/UserSelect/UserSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/UserSelect/UserSelect.tsx @@ -234,7 +234,8 @@ const UserSelect: FC = ({ }} isLoading={usersOptions.isLoading} className="z-sidebar" - shouldReturnAddresses + showEmptyContent={false} + showSearchValueAsOption /> )} diff --git a/src/components/v5/common/ActionSidebar/partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx b/src/components/v5/common/ActionSidebar/partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx index 442b6fdad0c..b43a4a5faad 100644 --- a/src/components/v5/common/ActionSidebar/partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/VerifiedMembersSelect/VerifiedMembersSelect.tsx @@ -162,6 +162,7 @@ const VerifiedMembersSelect: FC = ({ 'left-6 right-[1.9rem] w-auto': isMobile, })} showEmptyContent + showSearchValueAsOption additionalButtons={ isMobile && (
    diff --git a/src/components/v5/shared/SearchSelect/SearchSelect.tsx b/src/components/v5/shared/SearchSelect/SearchSelect.tsx index 59adfdc44e9..7c54bd0bcfc 100644 --- a/src/components/v5/shared/SearchSelect/SearchSelect.tsx +++ b/src/components/v5/shared/SearchSelect/SearchSelect.tsx @@ -25,6 +25,7 @@ const SearchSelectInner = ( onSearch, onDebouncedSearch, showEmptyContent = true, + showSearchValueAsOption = false, emptyContent, state, message, @@ -33,7 +34,6 @@ const SearchSelectInner = ( className, placeholder, renderOption, - shouldReturnAddresses = false, }: SearchSelectProps, ref: React.ForwardedRef, ) => { @@ -45,7 +45,7 @@ const SearchSelectInner = ( onSearch, onDebouncedSearch, ); - const filteredList = useFilterItems(items, debouncedSearchValue, shouldReturnAddresses); + const filteredList = useFilterItems(items, debouncedSearchValue, showSearchValueAsOption); const contentFallback = showEmptyContent && diff --git a/src/components/v5/shared/SearchSelect/hooks.ts b/src/components/v5/shared/SearchSelect/hooks.ts index d8f7405b938..32bcd3dbbe8 100644 --- a/src/components/v5/shared/SearchSelect/hooks.ts +++ b/src/components/v5/shared/SearchSelect/hooks.ts @@ -12,60 +12,53 @@ import { export const useFilterItems = ( items: SearchSelectOptionProps[], searchValue: string, - shouldReturnAddresses: boolean, + showSearchValueAsOption?: boolean, ) => { - const searchedOptions = useMemo( - () => - items.map((item) => { - const filteredOptions = item.options.filter((option) => { - const searchQuery = searchValue.toLowerCase(); - const optionValue = - typeof option.value === 'string' - ? option.value.replace('-', ' ').toLowerCase() - : option.value; - const optionUserName = formatText(option.label).toLowerCase(); - - return [optionValue, optionUserName].some((value) => - value.toString().includes(searchQuery), - ); - }); - - const options = (() => { - if (filteredOptions.length > 0) { - return filteredOptions; - } - - if ( - shouldReturnAddresses && - searchValue && - utils.isHexString(searchValue) - ) { - // Return search value as an option - return [ - { - ...item.options[0], - avatar: - isUserSearchSelectOption(item.options[0]) && - item.options[0]?.showAvatar - ? '' - : undefined, - value: searchValue, - label: searchValue, - walletAddress: searchValue, - }, - ]; - } - - return []; - })(); - - return { - ...item, - options, - }; - }), - [items, searchValue, shouldReturnAddresses], - ); + const searchedOptions = useMemo(() => { + const normalizeOptionValue = (value) => + typeof value === 'string' + ? value.toLowerCase().replace('-', ' ') + : value.toString(); + + const normalizeOptionLabel = (label) => formatText(label).toLowerCase(); + + const matchesSearch = (value, searchQuery) => value.includes(searchQuery); + + const getFallbackOption = (item) => ({ + ...item.options[0], + avatar: + isUserSearchSelectOption(item.options[0]) && item.options[0].showAvatar + ? '' + : undefined, + value: searchValue, + label: searchValue, + walletAddress: searchValue, + }); + + const searchQuery = searchValue.toLowerCase(); + + return items.map((item) => { + const filteredOptions = item.options.filter((option) => + [ + normalizeOptionValue(option.value), + normalizeOptionLabel(option.label), + ].some((value) => matchesSearch(value, searchQuery)), + ); + const shouldShowFallback = + searchValue && + !filteredOptions.length && + showSearchValueAsOption && + utils.isHexString(searchValue) && + item.options[0]; + + return { + ...item, + options: shouldShowFallback + ? [getFallbackOption(item)] + : filteredOptions, + }; + }); + }, [items, searchValue, showSearchValueAsOption]); const filteredOptions = useMemo( () => searchedOptions.filter((item) => item.options.length > 0), diff --git a/src/components/v5/shared/SearchSelect/types.ts b/src/components/v5/shared/SearchSelect/types.ts index a52e2f92953..0cfd05e3800 100644 --- a/src/components/v5/shared/SearchSelect/types.ts +++ b/src/components/v5/shared/SearchSelect/types.ts @@ -19,6 +19,7 @@ export interface SearchSelectProps extends BaseFieldProps { onSearch?: (value: string) => void; onDebouncedSearch?: (value: string) => void; showEmptyContent?: boolean; + showSearchValueAsOption?: boolean; emptyContent?: React.ReactNode; readonly?: boolean; checkboxesList?: string[]; From a23c3d709ca3bd76513082e25f9938c4c2a3d6f5 Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Mon, 13 Jan 2025 20:44:31 +0100 Subject: [PATCH 30/44] Refactor: Changes for TokenSearchSelect after review Refactor: Changes for TokenSearchSelect after review --- .../TokenSearchSelect/TokenSearchSelect.tsx | 24 +++++++--- .../partials/TokenSearchSelect/hooks.ts | 44 +++---------------- .../v5/shared/SearchSelect/SearchSelect.tsx | 11 +++-- .../v5/shared/SearchSelect/hooks.ts | 14 +----- .../v5/shared/SearchSelect/types.ts | 1 - 5 files changed, 32 insertions(+), 62 deletions(-) diff --git a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx index ba2ee79d82d..783f3b5fa06 100644 --- a/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx +++ b/src/components/v5/common/ActionSidebar/partials/TokenSelect/partials/TokenSearchSelect/TokenSearchSelect.tsx @@ -1,5 +1,6 @@ import { Binoculars, Coin } from '@phosphor-icons/react'; -import React, { type FC, useState } from 'react'; +import debounce from 'lodash/debounce'; +import React, { type FC, useCallback, useState } from 'react'; import { useTokenSelectContext } from '~context/TokenSelectContext/TokenSelectContext.ts'; import EmptyContent from '~v5/common/EmptyContent/index.ts'; @@ -39,9 +40,21 @@ const TokenSearchSelect = React.forwardRef< filterOptionsFn, ); - const handleDebouncedSearch = (value: string) => { - setDebouncedSearchValue(value); - }; + // eslint-disable-next-line react-hooks/exhaustive-deps + const handleSetDebouncedSearchValue = useCallback( + debounce((value: string) => { + setDebouncedSearchValue(value); + }, 500), + [], + ); + + const handleSearch = useCallback( + (value: string) => { + onSearch?.(value); + handleSetDebouncedSearchValue(value); + }, + [onSearch, handleSetDebouncedSearchValue], + ); return ( [] = useMemo( - () => - options.filter((option) => { - const searchQuery = searchValue.toLowerCase(); - const optionValue = - typeof option.value === 'string' - ? option.value.replace('-', ' ').toLowerCase() - : option.value; - const optionUserName = formatText(option.label).toLowerCase(); - - return [optionValue, optionUserName].some((value) => - value.toString().includes(searchQuery), - ); - }), - - [options, searchValue], - ); - - const filteredOptions = useMemo( - () => - filterOptionsFn - ? searchedOptions.filter(filterOptionsFn) - : searchedOptions, - [filterOptionsFn, searchedOptions], - ); - - const filteredSuggestedOptions = useMemo( - () => - filterOptionsFn - ? suggestedOptions.filter(filterOptionsFn) - : suggestedOptions, - [filterOptionsFn, suggestedOptions], - ); - const items = useMemo(() => { + const sourceOptions = searchValue ? options : suggestedOptions; + const filteredOptions = filterOptionsFn + ? sourceOptions.filter(filterOptionsFn) + : sourceOptions; + return [ { key: 'tokens', @@ -100,10 +70,10 @@ export const useSearchSelect = ( id: 'manageTokensTable.suggestedTokens', } : undefined, - options: searchValue ? filteredOptions : filteredSuggestedOptions, + options: filteredOptions, }, ]; - }, [searchValue, filteredOptions, filteredSuggestedOptions]); + }, [searchValue, options, suggestedOptions, filterOptionsFn]); return { loading, diff --git a/src/components/v5/shared/SearchSelect/SearchSelect.tsx b/src/components/v5/shared/SearchSelect/SearchSelect.tsx index 7c54bd0bcfc..52440a6a607 100644 --- a/src/components/v5/shared/SearchSelect/SearchSelect.tsx +++ b/src/components/v5/shared/SearchSelect/SearchSelect.tsx @@ -23,7 +23,6 @@ const SearchSelectInner = ( isLoading, hideSearchOnMobile, onSearch, - onDebouncedSearch, showEmptyContent = true, showSearchValueAsOption = false, emptyContent, @@ -40,12 +39,12 @@ const SearchSelectInner = ( const isMobile = useMobile(); const { openedAccordions, onAccordionClick } = useAccordion(items); - const { searchValue, debouncedSearchValue, onChange } = useSearch( - '', - onSearch, - onDebouncedSearch, + const { searchValue, debouncedSearchValue, onChange } = useSearch(onSearch); + const filteredList = useFilterItems( + items, + debouncedSearchValue, + showSearchValueAsOption, ); - const filteredList = useFilterItems(items, debouncedSearchValue, showSearchValueAsOption); const contentFallback = showEmptyContent && diff --git a/src/components/v5/shared/SearchSelect/hooks.ts b/src/components/v5/shared/SearchSelect/hooks.ts index 32bcd3dbbe8..9dac886120c 100644 --- a/src/components/v5/shared/SearchSelect/hooks.ts +++ b/src/components/v5/shared/SearchSelect/hooks.ts @@ -91,12 +91,8 @@ export const useAccordion = (items: SearchSelectOptionProps[]) => { return { openedAccordions, onAccordionClick }; }; -export const useSearch = ( - initialSearchValue: string, - onSearch?: (value: string) => void, - onDebouncedSearch?: (value: string) => void, -) => { - const [searchValue, setSearchValue] = useState(initialSearchValue); +export const useSearch = (onSearch?: (value: string) => void) => { + const [searchValue, setSearchValue] = useState(''); const [debouncedSearchValue, setDebouncedSearchValue] = useState(''); useEffect(() => { @@ -107,12 +103,6 @@ export const useSearch = ( return () => clearTimeout(debounceTimeout); }, [searchValue]); - useEffect(() => { - onDebouncedSearch?.(debouncedSearchValue); - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [debouncedSearchValue]); - const handleSearch = useMemo( () => debounce((value: string) => setDebouncedSearchValue(value), 500), [], diff --git a/src/components/v5/shared/SearchSelect/types.ts b/src/components/v5/shared/SearchSelect/types.ts index 0cfd05e3800..26944f212df 100644 --- a/src/components/v5/shared/SearchSelect/types.ts +++ b/src/components/v5/shared/SearchSelect/types.ts @@ -17,7 +17,6 @@ export interface SearchSelectProps extends BaseFieldProps { className?: string; hideSearchOnMobile?: boolean; onSearch?: (value: string) => void; - onDebouncedSearch?: (value: string) => void; showEmptyContent?: boolean; showSearchValueAsOption?: boolean; emptyContent?: React.ReactNode; From a1a9c608db73bb4c955408cdea55fb6c8b5c8bb6 Mon Sep 17 00:00:00 2001 From: Dave Creaser Date: Thu, 9 Jan 2025 15:35:23 +0000 Subject: [PATCH 31/44] Feat: Allow addition of proxy colonies with multisig --- .../api/colonycdapp/schema/schema.graphql | 1 + .../hooks/permissions/helpers.ts | 3 ++ .../ManageSupportedChainsForm.tsx | 7 +--- .../forms/ManageSupportedChainsForm/hooks.ts | 5 ++- .../CompletedAction/CompletedAction.tsx | 1 + src/graphql/generated.ts | 1 + src/i18n/en-actions.ts | 2 + .../proxyColonies/createProxyColony.ts | 41 +++++++++++++++++++ src/redux/types/actions/motion.ts | 1 + src/utils/multiSig/index.ts | 3 ++ 10 files changed, 58 insertions(+), 7 deletions(-) diff --git a/amplify/backend/api/colonycdapp/schema/schema.graphql b/amplify/backend/api/colonycdapp/schema/schema.graphql index d85c9e1cf16..b78bf9c6c4b 100644 --- a/amplify/backend/api/colonycdapp/schema/schema.graphql +++ b/amplify/backend/api/colonycdapp/schema/schema.graphql @@ -907,6 +907,7 @@ enum ColonyActionType { """ ADD_PROXY_COLONY ADD_PROXY_COLONY_MOTION + ADD_PROXY_COLONY_MULTISIG """ An action related to disabling a proxy colony """ diff --git a/src/components/v5/common/ActionSidebar/hooks/permissions/helpers.ts b/src/components/v5/common/ActionSidebar/hooks/permissions/helpers.ts index aecab9d9511..e4ea30c32dd 100644 --- a/src/components/v5/common/ActionSidebar/hooks/permissions/helpers.ts +++ b/src/components/v5/common/ActionSidebar/hooks/permissions/helpers.ts @@ -109,6 +109,9 @@ export const getPermissionsNeededForAction = ( case Action.ArbitraryTxs: { return PERMISSIONS_NEEDED_FOR_ACTION.ArbitraryTxs; } + case Action.ManageSupportedChains: { + return PERMISSIONS_NEEDED_FOR_ACTION.ManageSupportedChains; + } default: return undefined; diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx index 65003df543f..c0a69f1565d 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx @@ -2,7 +2,6 @@ import { Link, PlusMinus } from '@phosphor-icons/react'; import React, { type FC } from 'react'; import { useFormContext } from 'react-hook-form'; -import { DecisionMethod } from '~types/actions.ts'; import { formatText } from '~utils/intl.ts'; import ActionFormRow from '~v5/common/ActionFormRow/ActionFormRow.tsx'; import { @@ -17,7 +16,6 @@ import ChainSelect from '~v5/common/ActionSidebar/partials/ChainSelect/ChainSele import DecisionMethodField from '~v5/common/ActionSidebar/partials/DecisionMethodField/DecisionMethodField.tsx'; import Description from '~v5/common/ActionSidebar/partials/Description/Description.tsx'; import { type ActionFormBaseProps } from '~v5/common/ActionSidebar/types.ts'; -import { createUnsupportedDecisionMethodFilter } from '~v5/common/ActionSidebar/utils.ts'; import { FormCardSelect } from '~v5/common/Fields/CardSelect/index.ts'; import { getManageSupportedChainsOptions } from './consts.ts'; @@ -34,9 +32,6 @@ const ManageSupportedChainsForm: FC = ({ const { resetField } = useFormContext(); const hasNoDecisionMethods = useHasNoDecisionMethods(); const chainSelectFilterFn = useFilterChainSelectField(); - const decisionMethodFilterFn = createUnsupportedDecisionMethodFilter([ - DecisionMethod.MultiSig, - ]); const isRemoveOperation = useCheckOperationType( MANAGE_SUPPORTED_CHAINS_FIELD_NAME, ManageEntityOperation.Remove, @@ -97,7 +92,7 @@ const ManageSupportedChainsForm: FC = ({ filterOptionsFn={chainSelectFilterFn} /> - + ); diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts index 7045e001b81..b5e8be2b699 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts @@ -49,7 +49,10 @@ const useActionType = () => { return ActionTypes.PROXY_COLONY_ENABLE; } - if (decisionMethod === DecisionMethod.Reputation) { + if ( + decisionMethod === DecisionMethod.Reputation || + decisionMethod === DecisionMethod.MultiSig + ) { return ActionTypes.MOTION_PROXY_COLONY_CREATE; } diff --git a/src/components/v5/common/CompletedAction/CompletedAction.tsx b/src/components/v5/common/CompletedAction/CompletedAction.tsx index 64c6c81dccc..03ae700d4c0 100644 --- a/src/components/v5/common/CompletedAction/CompletedAction.tsx +++ b/src/components/v5/common/CompletedAction/CompletedAction.tsx @@ -84,6 +84,7 @@ const CompletedAction = ({ action }: ICompletedAction) => { case ColonyActionType.AddProxyColony: case ColonyActionType.RemoveProxyColony: case ColonyActionType.AddProxyColonyMotion: + case ColonyActionType.AddProxyColonyMultisig: return ; case ColonyActionType.EmitDomainReputationReward: case ColonyActionType.EmitDomainReputationRewardMotion: diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index 6a2ea069239..b22becdefe6 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -631,6 +631,7 @@ export enum ColonyActionType { /** An action related to creating a proxy colony */ AddProxyColony = 'ADD_PROXY_COLONY', AddProxyColonyMotion = 'ADD_PROXY_COLONY_MOTION', + AddProxyColonyMultisig = 'ADD_PROXY_COLONY_MULTISIG', /** An action related to adding verified members */ AddVerifiedMembers = 'ADD_VERIFIED_MEMBERS', AddVerifiedMembersMotion = 'ADD_VERIFIED_MEMBERS_MOTION', diff --git a/src/i18n/en-actions.ts b/src/i18n/en-actions.ts index b946870a5f3..f1175560964 100644 --- a/src/i18n/en-actions.ts +++ b/src/i18n/en-actions.ts @@ -73,6 +73,7 @@ const actionsMessageDescriptors = { }} ${ColonyActionType.AddProxyColony} {Add support for {chain} chain by {initiator}} ${ColonyActionType.AddProxyColonyMotion} {Add support for {chain} chain by {initiator}} + ${ColonyActionType.AddProxyColonyMultisig} {Add support for {chain} chain by {initiator}} ${ColonyActionType.RemoveProxyColony} {Remove support for {chain} chain by {initiator}} ${ExtendedColonyActionType.AddSafe} {Add Safe from {chainName}} ${ExtendedColonyActionType.RemoveSafe} {Remove Safe} @@ -145,6 +146,7 @@ const actionsMessageDescriptors = { ======= ${ColonyActionType.AddProxyColony} {Manage supported chains} ${ColonyActionType.AddProxyColonyMotion} {Manage supported chains} + ${ColonyActionType.AddProxyColonyMultisig} {Manage supported chains} ${ColonyActionType.RemoveProxyColony} {Manage supported chains} >>>>>>> 6aee3801c (Feat: Add manage supported chain action) ${ExtendedColonyActionType.StagedPayment} {Staged payment} diff --git a/src/redux/sagas/motions/proxyColonies/createProxyColony.ts b/src/redux/sagas/motions/proxyColonies/createProxyColony.ts index c925ae4f0cd..b9b5ad500e6 100644 --- a/src/redux/sagas/motions/proxyColonies/createProxyColony.ts +++ b/src/redux/sagas/motions/proxyColonies/createProxyColony.ts @@ -4,7 +4,9 @@ import { AddressZero } from '@ethersproject/constants'; import { BigNumber } from 'ethers'; import { call, fork, put, takeEvery } from 'redux-saga/effects'; +import { ADDRESS_ZERO } from '~constants'; import { colonyAbi } from '~constants/abis.ts'; +import { PERMISSIONS_NEEDED_FOR_ACTION } from '~constants/actions.ts'; import { type ColonyManager } from '~context/index.ts'; import { ActionTypes } from '~redux/actionTypes.ts'; import { @@ -21,6 +23,7 @@ import { initiateTransaction, createActionMetadataInDB, getChildIndexLocal, + getPermissionProofsLocal, } from '~redux/sagas/utils/index.ts'; import { type AllActions, type Action } from '~redux/types/actions/index.ts'; import { TRANSACTION_METHODS } from '~types/transactions.ts'; @@ -32,7 +35,9 @@ function* createProxyColonyMotionSaga({ foreignChainId, customActionTitle, annotationMessage, + colonyRoles, colonyDomains, + isMultiSig = false, }, meta: { id: metaId, setTxHash }, meta, @@ -70,6 +75,42 @@ function* createProxyColonyMotionSaga({ // eslint-disable-next-line no-inner-declarations function* getCreateMotionParams() { + if (isMultiSig) { + const initiatorAddress = yield colonyClient.signer.getAddress(); + + // Permission proofs for the user creating the multi-sig motion + const [, childSkillIndex] = yield call(getPermissionProofsLocal, { + networkClient: colonyClient.networkClient, + colonyRoles, + colonyDomains, + requiredDomainId: Id.RootDomain, + requiredColonyRoles: + PERMISSIONS_NEEDED_FOR_ACTION.ManageSupportedChains, + // The address of the user creating the multi-sig motion + permissionAddress: initiatorAddress, + // The user must have multi-sig permissions + isMultiSig: true, + }); + + return { + context: ClientType.MultisigPermissionsClient, + methodName: TRANSACTION_METHODS.CreateMotion, + identifier: colonyAddress, + params: [ + Id.RootDomain, + childSkillIndex, + [ADDRESS_ZERO], + [encodedAction], + ], + group: { + key: batchKey, + id: metaId, + index: 0, + }, + ready: false, + }; + } + const rootDomain = colonyDomains.find((domain) => BigNumber.from(domain.nativeId).eq(Id.RootDomain), ); diff --git a/src/redux/types/actions/motion.ts b/src/redux/types/actions/motion.ts index dc34a23dc77..a8e357535da 100644 --- a/src/redux/types/actions/motion.ts +++ b/src/redux/types/actions/motion.ts @@ -506,6 +506,7 @@ export type MotionActionTypes = colonyDomains: Domain[]; foreignChainId: number; creationSalt: string; + isMultiSig: boolean; }, MetaWithSetter > diff --git a/src/utils/multiSig/index.ts b/src/utils/multiSig/index.ts index 383baf904f7..1a579af02f0 100644 --- a/src/utils/multiSig/index.ts +++ b/src/utils/multiSig/index.ts @@ -74,6 +74,9 @@ export const getRolesNeededForMultiSigAction = ({ case ColonyActionType.MakeArbitraryTransactionsMultisig: permissions = PERMISSIONS_NEEDED_FOR_ACTION.ArbitraryTxs; break; + case ColonyActionType.AddProxyColonyMultisig: + permissions = PERMISSIONS_NEEDED_FOR_ACTION.ManageSupportedChains; + break; default: permissions = undefined; break; From b80eb483911b8d78c09873d3f1b3b28067acd263 Mon Sep 17 00:00:00 2001 From: Romeo Ledesma Date: Tue, 14 Jan 2025 22:55:39 +0800 Subject: [PATCH 32/44] feat: enable disable proxy colony via reputation --- .../api/colonycdapp/schema/schema.graphql | 1 + .../ManageSupportedChainsForm.tsx | 11 +- .../forms/ManageSupportedChainsForm/hooks.ts | 14 ++ .../CompletedAction/CompletedAction.tsx | 2 + src/graphql/generated.ts | 1 + src/i18n/en-actions.ts | 5 + src/redux/actionTypes.ts | 3 + src/redux/sagas/motions/index.ts | 6 +- .../proxyColonies/enableDisableProxyColony.ts | 199 ++++++++++++++++++ .../sagas/motions/proxyColonies/index.ts | 1 + src/redux/types/actions/motion.ts | 21 ++ 11 files changed, 262 insertions(+), 2 deletions(-) create mode 100644 src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts diff --git a/amplify/backend/api/colonycdapp/schema/schema.graphql b/amplify/backend/api/colonycdapp/schema/schema.graphql index b78bf9c6c4b..c2164af3b48 100644 --- a/amplify/backend/api/colonycdapp/schema/schema.graphql +++ b/amplify/backend/api/colonycdapp/schema/schema.graphql @@ -912,6 +912,7 @@ enum ColonyActionType { An action related to disabling a proxy colony """ REMOVE_PROXY_COLONY + REMOVE_PROXY_COLONY_MOTION } """ diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx index c0a69f1565d..91eb3ca7a6b 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx @@ -2,6 +2,7 @@ import { Link, PlusMinus } from '@phosphor-icons/react'; import React, { type FC } from 'react'; import { useFormContext } from 'react-hook-form'; +import { DecisionMethod } from '~types/actions.ts'; import { formatText } from '~utils/intl.ts'; import ActionFormRow from '~v5/common/ActionFormRow/ActionFormRow.tsx'; import { @@ -12,10 +13,13 @@ import { import useHasNoDecisionMethods from '~v5/common/ActionSidebar/hooks/permissions/useHasNoDecisionMethods.ts'; import { useCheckOperationType } from '~v5/common/ActionSidebar/hooks/useCheckOperationType.ts'; import { useFilterChainSelectField } from '~v5/common/ActionSidebar/hooks/useFilterChainSelectField.ts'; +import useFilterCreatedInField from '~v5/common/ActionSidebar/hooks/useFilterCreatedInField.ts'; import ChainSelect from '~v5/common/ActionSidebar/partials/ChainSelect/ChainSelect.tsx'; +import CreatedIn from '~v5/common/ActionSidebar/partials/CreatedIn/index.ts'; import DecisionMethodField from '~v5/common/ActionSidebar/partials/DecisionMethodField/DecisionMethodField.tsx'; import Description from '~v5/common/ActionSidebar/partials/Description/Description.tsx'; import { type ActionFormBaseProps } from '~v5/common/ActionSidebar/types.ts'; +import { createUnsupportedDecisionMethodFilter } from '~v5/common/ActionSidebar/utils.ts'; import { FormCardSelect } from '~v5/common/Fields/CardSelect/index.ts'; import { getManageSupportedChainsOptions } from './consts.ts'; @@ -32,6 +36,10 @@ const ManageSupportedChainsForm: FC = ({ const { resetField } = useFormContext(); const hasNoDecisionMethods = useHasNoDecisionMethods(); const chainSelectFilterFn = useFilterChainSelectField(); + const decisionMethodFilterFn = createUnsupportedDecisionMethodFilter([ + DecisionMethod.MultiSig, + ]); + const createdInFilterFn = useFilterCreatedInField('from'); const isRemoveOperation = useCheckOperationType( MANAGE_SUPPORTED_CHAINS_FIELD_NAME, ManageEntityOperation.Remove, @@ -92,7 +100,8 @@ const ManageSupportedChainsForm: FC = ({ filterOptionsFn={chainSelectFilterFn} /> - + + ); diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts index b5e8be2b699..f7443f3a47d 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/hooks.ts @@ -41,6 +41,20 @@ const useActionType = () => { chainId?.toString(), ); + /** + * This assumes that we only have Permissions, Reputation & Multi-Sig + * Update this once we start to support more decision methods + */ + if ( + (isRemoveOperation || isChainDisabled) && + decisionMethod !== DecisionMethod.Permissions + ) { + return ActionTypes.MOTION_PROXY_COLONY_ENABLE_DISABLE; + } + + /** + * @TODO Consider unifying the permissions saga for enabling & disabling as well + */ if (isRemoveOperation) { return ActionTypes.PROXY_COLONY_REMOVE; } diff --git a/src/components/v5/common/CompletedAction/CompletedAction.tsx b/src/components/v5/common/CompletedAction/CompletedAction.tsx index 03ae700d4c0..b178e9d91d2 100644 --- a/src/components/v5/common/CompletedAction/CompletedAction.tsx +++ b/src/components/v5/common/CompletedAction/CompletedAction.tsx @@ -84,6 +84,7 @@ const CompletedAction = ({ action }: ICompletedAction) => { case ColonyActionType.AddProxyColony: case ColonyActionType.RemoveProxyColony: case ColonyActionType.AddProxyColonyMotion: + case ColonyActionType.RemoveProxyColonyMotion: case ColonyActionType.AddProxyColonyMultisig: return ; case ColonyActionType.EmitDomainReputationReward: @@ -156,6 +157,7 @@ const CompletedAction = ({ action }: ICompletedAction) => { case ColonyActionType.MakeArbitraryTransactionsMotion: case ColonyActionType.EditExpenditureMotion: case ColonyActionType.AddProxyColonyMotion: + case ColonyActionType.RemoveProxyColonyMotion: case ColonyActionType.FundExpenditureMotion: { const { motionData } = action; diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index b22becdefe6..2a52cf4fcd9 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -736,6 +736,7 @@ export enum ColonyActionType { ReleaseStagedPaymentsMotion = 'RELEASE_STAGED_PAYMENTS_MOTION', /** An action related to disabling a proxy colony */ RemoveProxyColony = 'REMOVE_PROXY_COLONY', + RemoveProxyColonyMotion = 'REMOVE_PROXY_COLONY_MOTION', /** An action related to removing verified members */ RemoveVerifiedMembers = 'REMOVE_VERIFIED_MEMBERS', RemoveVerifiedMembersMotion = 'REMOVE_VERIFIED_MEMBERS_MOTION', diff --git a/src/i18n/en-actions.ts b/src/i18n/en-actions.ts index f1175560964..56ed2834e8b 100644 --- a/src/i18n/en-actions.ts +++ b/src/i18n/en-actions.ts @@ -75,6 +75,7 @@ const actionsMessageDescriptors = { ${ColonyActionType.AddProxyColonyMotion} {Add support for {chain} chain by {initiator}} ${ColonyActionType.AddProxyColonyMultisig} {Add support for {chain} chain by {initiator}} ${ColonyActionType.RemoveProxyColony} {Remove support for {chain} chain by {initiator}} + ${ColonyActionType.RemoveProxyColonyMotion} {Remove support for {chain} chain by {initiator}} ${ExtendedColonyActionType.AddSafe} {Add Safe from {chainName}} ${ExtendedColonyActionType.RemoveSafe} {Remove Safe} ${ExtendedColonyActionType.SafeMultipleTransactions} ${safeActionTitle} @@ -148,7 +149,11 @@ const actionsMessageDescriptors = { ${ColonyActionType.AddProxyColonyMotion} {Manage supported chains} ${ColonyActionType.AddProxyColonyMultisig} {Manage supported chains} ${ColonyActionType.RemoveProxyColony} {Manage supported chains} +<<<<<<< HEAD >>>>>>> 6aee3801c (Feat: Add manage supported chain action) +======= + ${ColonyActionType.RemoveProxyColonyMotion} {Manage supported chains} +>>>>>>> 45dad0337 (feat: enable disable proxy colony via reputation) ${ExtendedColonyActionType.StagedPayment} {Staged payment} ${ExtendedColonyActionType.AddSafe} {Add Safe} ${ExtendedColonyActionType.RemoveSafe} {Remove Safe} diff --git a/src/redux/actionTypes.ts b/src/redux/actionTypes.ts index 6507edbc358..086f0e6a50e 100644 --- a/src/redux/actionTypes.ts +++ b/src/redux/actionTypes.ts @@ -184,6 +184,9 @@ export enum ActionTypes { MOTION_PROXY_COLONY_CREATE = 'MOTION_PROXY_COLONY_CREATE ', MOTION_PROXY_COLONY_CREATE_SUCCESS = 'MOTION_PROXY_COLONY_CREATE_SUCCESS ', MOTION_PROXY_COLONY_CREATE_ERROR = 'MOTION_PROXY_COLONY_CREATE_ERROR', + MOTION_PROXY_COLONY_ENABLE_DISABLE = 'MOTION_PROXY_COLONY_ENABLE_DISABLE', + MOTION_PROXY_COLONY_ENABLE_DISABLE_SUCCESS = 'MOTION_PROXY_COLONY_ENABLE_DISABLE_SUCCESS', + MOTION_PROXY_COLONY_ENABLE_DISABLE_ERROR = 'MOTION_PROXY_COLONY_ENABLE_DISABLE_ERROR', // Multisig MULTISIG_VOTE = 'MULTISIG_VOTE', diff --git a/src/redux/sagas/motions/index.ts b/src/redux/sagas/motions/index.ts index 9bb9f9f5fea..2e7b2241b08 100644 --- a/src/redux/sagas/motions/index.ts +++ b/src/redux/sagas/motions/index.ts @@ -24,7 +24,10 @@ import manageTokensMotionSaga from './manageTokens.ts'; import manageVerifiedMembersMotionSaga from './manageVerifiedMembers.ts'; import moveFundsMotionSaga from './moveFundsMotion.ts'; import paymentMotionSaga from './paymentMotion.ts'; -import { createProxyColonyMotionSaga } from './proxyColonies/index.ts'; +import { + createProxyColonyMotionSaga, + enableDisableProxyColonyMotionSaga, +} from './proxyColonies/index.ts'; import revealVoteMotionSaga from './revealVoteMotion.ts'; import rootMotionSaga from './rootMotion.ts'; import stakeMotionSaga from './stakeMotion.ts'; @@ -59,5 +62,6 @@ export default function* actionsSagas() { call(manageTokensMotionSaga), call(arbitraryTxMotionSaga), call(createProxyColonyMotionSaga), + call(enableDisableProxyColonyMotionSaga), ]); } diff --git a/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts b/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts new file mode 100644 index 00000000000..9f9a95323ee --- /dev/null +++ b/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts @@ -0,0 +1,199 @@ +import { ClientType, Id } from '@colony/colony-js'; +import { type CustomContract } from '@colony/sdk'; +import { AddressZero } from '@ethersproject/constants'; +import { BigNumber } from 'ethers'; +import { call, fork, put, takeEvery } from 'redux-saga/effects'; + +import { colonyAbi } from '~constants/abis.ts'; +import { type ColonyManager } from '~context/index.ts'; +import { ActionTypes } from '~redux/actionTypes.ts'; +import { + createTransaction, + createTransactionChannels, + getTxChannel, + waitForTxResult, +} from '~redux/sagas/transactions/index.ts'; +import { + putError, + takeFrom, + getColonyManager, + uploadAnnotation, + initiateTransaction, + createActionMetadataInDB, + getChildIndexLocal, +} from '~redux/sagas/utils/index.ts'; +import { + getDisableProxyColonyOperation, + getEnableProxyColonyOperation, +} from '~redux/sagas/utils/metadataDelta.ts'; +import { type AllActions, type Action } from '~redux/types/actions/index.ts'; +import { TRANSACTION_METHODS } from '~types/transactions.ts'; +import { ManageEntityOperation } from '~v5/common/ActionSidebar/consts.ts'; + +function* enableDisableProxyColonyMotionSaga({ + payload: { + colonyAddress, + foreignChainId, + customActionTitle, + annotationMessage, + colonyDomains, + operation, + }, + meta: { id: metaId, setTxHash }, + meta, +}: Action) { + let txChannel; + + const isEnableOperation = operation === ManageEntityOperation.Add; + + try { + const colonyManager: ColonyManager = yield getColonyManager(); + + const colonyClient = yield colonyManager.getClient( + ClientType.ColonyClient, + colonyAddress, + ); + + const proxyColonyContract: CustomContract = + colonyManager.getCustomContract(colonyAddress, colonyAbi); + + const editColonyByDeltaOperation = isEnableOperation + ? getEnableProxyColonyOperation + : getDisableProxyColonyOperation; + + const encodedAction = yield proxyColonyContract + .createTxCreator('editColonyByDelta', [ + JSON.stringify(editColonyByDeltaOperation([foreignChainId.toString()])), + ]) + .tx() + .encode(); + + txChannel = yield call(getTxChannel, metaId); + + const batchKey = TRANSACTION_METHODS.CreateMotion; + + const { createMotion, annotateRootMotion } = + yield createTransactionChannels(metaId, [ + 'createMotion', + 'annotateRootMotion', + ]); + + // eslint-disable-next-line no-inner-declarations + function* getCreateMotionParams() { + const rootDomain = colonyDomains.find((domain) => + BigNumber.from(domain.nativeId).eq(Id.RootDomain), + ); + + if (!rootDomain) { + throw new Error('Cannot find rootDomain in colony domains'); + } + + const childSkillIndex = yield call(getChildIndexLocal, { + networkClient: colonyClient.networkClient, + parentDomainNativeId: rootDomain.nativeId, + parentDomainSkillId: rootDomain.nativeSkillId, + domainNativeId: rootDomain.nativeId, + domainSkillId: rootDomain.nativeSkillId, + }); + const { skillId } = yield call( + [colonyClient, colonyClient.getDomain], + Id.RootDomain, + ); + + const { key, value, branchMask, siblings } = yield call( + colonyClient.getReputation, + skillId, + AddressZero, + ); + + return { + context: ClientType.VotingReputationClient, + methodName: 'createMotion', + identifier: colonyAddress, + params: [ + Id.RootDomain, + childSkillIndex, + AddressZero, + encodedAction, + key, + value, + branchMask, + siblings, + ], + group: { + key: batchKey, + id: metaId, + index: 0, + }, + ready: false, + }; + } + + const transactionParams = yield getCreateMotionParams(); + + yield fork(createTransaction, createMotion.id, transactionParams); + + if (annotationMessage) { + yield fork(createTransaction, annotateRootMotion.id, { + context: ClientType.ColonyClient, + methodName: 'annotateTransaction', + identifier: colonyAddress, + params: [], + group: { + key: batchKey, + id: metaId, + index: 1, + }, + ready: false, + }); + } + + yield takeFrom(createMotion.channel, ActionTypes.TRANSACTION_CREATED); + if (annotationMessage) { + yield takeFrom( + annotateRootMotion.channel, + ActionTypes.TRANSACTION_CREATED, + ); + } + + yield initiateTransaction(createMotion.id); + + const { + payload: { + receipt: { transactionHash: txHash }, + }, + } = yield waitForTxResult(createMotion.channel); + + yield createActionMetadataInDB(txHash, customActionTitle); + + if (annotationMessage) { + yield uploadAnnotation({ + txChannel: annotateRootMotion, + message: annotationMessage, + txHash, + }); + } + + setTxHash?.(txHash); + + yield put({ + type: ActionTypes.MOTION_PROXY_COLONY_ENABLE_DISABLE_SUCCESS, + meta, + }); + } catch (caughtError) { + yield putError( + ActionTypes.MOTION_PROXY_COLONY_ENABLE_DISABLE_ERROR, + caughtError, + meta, + ); + } finally { + txChannel.close(); + } +} + +export default function* createProxyColonyMotion() { + yield takeEvery( + ActionTypes.MOTION_PROXY_COLONY_ENABLE_DISABLE, + enableDisableProxyColonyMotionSaga, + ); +} diff --git a/src/redux/sagas/motions/proxyColonies/index.ts b/src/redux/sagas/motions/proxyColonies/index.ts index 5bf853903a3..1dc32be7394 100644 --- a/src/redux/sagas/motions/proxyColonies/index.ts +++ b/src/redux/sagas/motions/proxyColonies/index.ts @@ -1 +1,2 @@ export { default as createProxyColonyMotionSaga } from './createProxyColony.ts'; +export { default as enableDisableProxyColonyMotionSaga } from './enableDisableProxyColony.ts'; diff --git a/src/redux/types/actions/motion.ts b/src/redux/types/actions/motion.ts index a8e357535da..64cb4f9941b 100644 --- a/src/redux/types/actions/motion.ts +++ b/src/redux/types/actions/motion.ts @@ -18,6 +18,7 @@ import { type Address, type ManageVerifiedMembersOperation, } from '~types/index.ts'; +import { type ManageEntityOperation } from '~v5/common/ActionSidebar/consts.ts'; import { type AddTransactionTableModel } from '~v5/common/ActionSidebar/partials/forms/ArbitraryTxsForm/types.ts'; import { type OneTxPaymentPayload } from './colonyActions.ts'; @@ -514,4 +515,24 @@ export type MotionActionTypes = | ActionTypeWithMeta< ActionTypes.MOTION_PROXY_COLONY_CREATE_SUCCESS, MetaWithSetter + > + | UniqueActionType< + ActionTypes.MOTION_PROXY_COLONY_ENABLE_DISABLE, + { + colonyAddress: Address; + customActionTitle: string; + annotationMessage?: string; + colonyDomains: Domain[]; + foreignChainId: number; + operation: ManageEntityOperation; + }, + MetaWithSetter + > + | ErrorActionType< + ActionTypes.MOTION_PROXY_COLONY_ENABLE_DISABLE_ERROR, + object + > + | ActionTypeWithMeta< + ActionTypes.MOTION_PROXY_COLONY_ENABLE_DISABLE_SUCCESS, + MetaWithSetter >; From 790a90bd869dd0529d78dd538bee7dcfe682b466 Mon Sep 17 00:00:00 2001 From: Romeo Ledesma Date: Wed, 15 Jan 2025 05:32:19 +0800 Subject: [PATCH 33/44] feat: update block ingestor hash and use constant form field var --- .../ManageSupportedChainsForm/ManageSupportedChainsForm.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx index 91eb3ca7a6b..898e41170c7 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx @@ -7,6 +7,7 @@ import { formatText } from '~utils/intl.ts'; import ActionFormRow from '~v5/common/ActionFormRow/ActionFormRow.tsx'; import { CHAIN_FIELD_NAME, + FROM_FIELD_NAME, MANAGE_SUPPORTED_CHAINS_FIELD_NAME, ManageEntityOperation, } from '~v5/common/ActionSidebar/consts.ts'; @@ -39,7 +40,7 @@ const ManageSupportedChainsForm: FC = ({ const decisionMethodFilterFn = createUnsupportedDecisionMethodFilter([ DecisionMethod.MultiSig, ]); - const createdInFilterFn = useFilterCreatedInField('from'); + const createdInFilterFn = useFilterCreatedInField(FROM_FIELD_NAME); const isRemoveOperation = useCheckOperationType( MANAGE_SUPPORTED_CHAINS_FIELD_NAME, ManageEntityOperation.Remove, From 75e46d136e73c8687a0a6a449997ca60499aa569 Mon Sep 17 00:00:00 2001 From: Romeo Ledesma Date: Wed, 15 Jan 2025 21:58:09 +0800 Subject: [PATCH 34/44] feat: prefer encodeFunctionData usage --- .../proxyColonies/enableDisableProxyColony.ts | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts b/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts index 9f9a95323ee..7188d442135 100644 --- a/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts +++ b/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts @@ -1,10 +1,8 @@ import { ClientType, Id } from '@colony/colony-js'; -import { type CustomContract } from '@colony/sdk'; import { AddressZero } from '@ethersproject/constants'; import { BigNumber } from 'ethers'; import { call, fork, put, takeEvery } from 'redux-saga/effects'; -import { colonyAbi } from '~constants/abis.ts'; import { type ColonyManager } from '~context/index.ts'; import { ActionTypes } from '~redux/actionTypes.ts'; import { @@ -54,28 +52,23 @@ function* enableDisableProxyColonyMotionSaga({ colonyAddress, ); - const proxyColonyContract: CustomContract = - colonyManager.getCustomContract(colonyAddress, colonyAbi); - const editColonyByDeltaOperation = isEnableOperation ? getEnableProxyColonyOperation : getDisableProxyColonyOperation; - const encodedAction = yield proxyColonyContract - .createTxCreator('editColonyByDelta', [ - JSON.stringify(editColonyByDeltaOperation([foreignChainId.toString()])), - ]) - .tx() - .encode(); + const encodedAction = colonyClient.interface.encodeFunctionData( + TRANSACTION_METHODS.EditColonyByDelta, + [JSON.stringify(editColonyByDeltaOperation([foreignChainId.toString()]))], + ); txChannel = yield call(getTxChannel, metaId); const batchKey = TRANSACTION_METHODS.CreateMotion; - const { createMotion, annotateRootMotion } = + const { manageProxyColonyMotion, annotateManageProxyColonyMotion } = yield createTransactionChannels(metaId, [ - 'createMotion', - 'annotateRootMotion', + 'manageProxyColonyMotion', + 'annotateManageProxyColonyMotion', ]); // eslint-disable-next-line no-inner-declarations @@ -131,10 +124,14 @@ function* enableDisableProxyColonyMotionSaga({ const transactionParams = yield getCreateMotionParams(); - yield fork(createTransaction, createMotion.id, transactionParams); + yield fork( + createTransaction, + manageProxyColonyMotion.id, + transactionParams, + ); if (annotationMessage) { - yield fork(createTransaction, annotateRootMotion.id, { + yield fork(createTransaction, annotateManageProxyColonyMotion.id, { context: ClientType.ColonyClient, methodName: 'annotateTransaction', identifier: colonyAddress, @@ -148,27 +145,30 @@ function* enableDisableProxyColonyMotionSaga({ }); } - yield takeFrom(createMotion.channel, ActionTypes.TRANSACTION_CREATED); + yield takeFrom( + manageProxyColonyMotion.channel, + ActionTypes.TRANSACTION_CREATED, + ); if (annotationMessage) { yield takeFrom( - annotateRootMotion.channel, + annotateManageProxyColonyMotion.channel, ActionTypes.TRANSACTION_CREATED, ); } - yield initiateTransaction(createMotion.id); + yield initiateTransaction(manageProxyColonyMotion.id); const { payload: { receipt: { transactionHash: txHash }, }, - } = yield waitForTxResult(createMotion.channel); + } = yield waitForTxResult(manageProxyColonyMotion.channel); yield createActionMetadataInDB(txHash, customActionTitle); if (annotationMessage) { yield uploadAnnotation({ - txChannel: annotateRootMotion, + txChannel: annotateManageProxyColonyMotion, message: annotationMessage, txHash, }); From 22975abe7b52d5aae8467ac487422816a3375322 Mon Sep 17 00:00:00 2001 From: Romeo Ledesma Date: Mon, 13 Jan 2025 19:38:27 +0800 Subject: [PATCH 35/44] feat: add support for enabling and disable proxy colonies via multi-sig --- .../api/colonycdapp/schema/schema.graphql | 1 + .../ManageSupportedChainsForm.tsx | 7 +--- .../CompletedAction/CompletedAction.tsx | 4 +- src/graphql/generated.ts | 1 + src/i18n/en-actions.ts | 8 +--- .../proxyColonies/enableDisableProxyColony.ts | 41 +++++++++++++++++++ src/redux/types/actions/motion.ts | 2 + src/utils/multiSig/index.ts | 1 + 8 files changed, 52 insertions(+), 13 deletions(-) diff --git a/amplify/backend/api/colonycdapp/schema/schema.graphql b/amplify/backend/api/colonycdapp/schema/schema.graphql index c2164af3b48..54b5b4f0a0e 100644 --- a/amplify/backend/api/colonycdapp/schema/schema.graphql +++ b/amplify/backend/api/colonycdapp/schema/schema.graphql @@ -913,6 +913,7 @@ enum ColonyActionType { """ REMOVE_PROXY_COLONY REMOVE_PROXY_COLONY_MOTION + REMOVE_PROXY_COLONY_MULTISIG } """ diff --git a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx index 898e41170c7..b08535c3268 100644 --- a/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx +++ b/src/components/v5/common/ActionSidebar/partials/forms/ManageSupportedChainsForm/ManageSupportedChainsForm.tsx @@ -2,7 +2,6 @@ import { Link, PlusMinus } from '@phosphor-icons/react'; import React, { type FC } from 'react'; import { useFormContext } from 'react-hook-form'; -import { DecisionMethod } from '~types/actions.ts'; import { formatText } from '~utils/intl.ts'; import ActionFormRow from '~v5/common/ActionFormRow/ActionFormRow.tsx'; import { @@ -20,7 +19,6 @@ import CreatedIn from '~v5/common/ActionSidebar/partials/CreatedIn/index.ts'; import DecisionMethodField from '~v5/common/ActionSidebar/partials/DecisionMethodField/DecisionMethodField.tsx'; import Description from '~v5/common/ActionSidebar/partials/Description/Description.tsx'; import { type ActionFormBaseProps } from '~v5/common/ActionSidebar/types.ts'; -import { createUnsupportedDecisionMethodFilter } from '~v5/common/ActionSidebar/utils.ts'; import { FormCardSelect } from '~v5/common/Fields/CardSelect/index.ts'; import { getManageSupportedChainsOptions } from './consts.ts'; @@ -37,9 +35,6 @@ const ManageSupportedChainsForm: FC = ({ const { resetField } = useFormContext(); const hasNoDecisionMethods = useHasNoDecisionMethods(); const chainSelectFilterFn = useFilterChainSelectField(); - const decisionMethodFilterFn = createUnsupportedDecisionMethodFilter([ - DecisionMethod.MultiSig, - ]); const createdInFilterFn = useFilterCreatedInField(FROM_FIELD_NAME); const isRemoveOperation = useCheckOperationType( MANAGE_SUPPORTED_CHAINS_FIELD_NAME, @@ -101,7 +96,7 @@ const ManageSupportedChainsForm: FC = ({ filterOptionsFn={chainSelectFilterFn} /> - + diff --git a/src/components/v5/common/CompletedAction/CompletedAction.tsx b/src/components/v5/common/CompletedAction/CompletedAction.tsx index b178e9d91d2..061c33b7861 100644 --- a/src/components/v5/common/CompletedAction/CompletedAction.tsx +++ b/src/components/v5/common/CompletedAction/CompletedAction.tsx @@ -82,10 +82,12 @@ const CompletedAction = ({ action }: ICompletedAction) => { case ColonyActionType.RemoveVerifiedMembersMultisig: return ; case ColonyActionType.AddProxyColony: - case ColonyActionType.RemoveProxyColony: case ColonyActionType.AddProxyColonyMotion: case ColonyActionType.RemoveProxyColonyMotion: case ColonyActionType.AddProxyColonyMultisig: + case ColonyActionType.RemoveProxyColony: + case ColonyActionType.RemoveProxyColonyMotion: + case ColonyActionType.RemoveProxyColonyMultisig: return ; case ColonyActionType.EmitDomainReputationReward: case ColonyActionType.EmitDomainReputationRewardMotion: diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index 2a52cf4fcd9..51c949a0dec 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -737,6 +737,7 @@ export enum ColonyActionType { /** An action related to disabling a proxy colony */ RemoveProxyColony = 'REMOVE_PROXY_COLONY', RemoveProxyColonyMotion = 'REMOVE_PROXY_COLONY_MOTION', + RemoveProxyColonyMultisig = 'REMOVE_PROXY_COLONY_MULTISIG', /** An action related to removing verified members */ RemoveVerifiedMembers = 'REMOVE_VERIFIED_MEMBERS', RemoveVerifiedMembersMotion = 'REMOVE_VERIFIED_MEMBERS_MOTION', diff --git a/src/i18n/en-actions.ts b/src/i18n/en-actions.ts index 56ed2834e8b..3fb5a436e26 100644 --- a/src/i18n/en-actions.ts +++ b/src/i18n/en-actions.ts @@ -76,6 +76,7 @@ const actionsMessageDescriptors = { ${ColonyActionType.AddProxyColonyMultisig} {Add support for {chain} chain by {initiator}} ${ColonyActionType.RemoveProxyColony} {Remove support for {chain} chain by {initiator}} ${ColonyActionType.RemoveProxyColonyMotion} {Remove support for {chain} chain by {initiator}} + ${ColonyActionType.RemoveProxyColonyMultisig} {Remove support for {chain} chain by {initiator}} ${ExtendedColonyActionType.AddSafe} {Add Safe from {chainName}} ${ExtendedColonyActionType.RemoveSafe} {Remove Safe} ${ExtendedColonyActionType.SafeMultipleTransactions} ${safeActionTitle} @@ -140,20 +141,15 @@ const actionsMessageDescriptors = { ${ColonyActionType.ManageTokens} {Manage tokens} ${ColonyActionType.ManageTokensMotion} {Manage tokens} ${ColonyActionType.ManageTokensMultisig} {Manage tokens} -<<<<<<< HEAD ${ColonyActionType.MakeArbitraryTransaction} {Custom transactions} ${ColonyActionType.MakeArbitraryTransactionsMotion} {Custom transactions} ${ColonyActionType.MakeArbitraryTransactionsMultisig} {Custom transactions} -======= ${ColonyActionType.AddProxyColony} {Manage supported chains} ${ColonyActionType.AddProxyColonyMotion} {Manage supported chains} ${ColonyActionType.AddProxyColonyMultisig} {Manage supported chains} ${ColonyActionType.RemoveProxyColony} {Manage supported chains} -<<<<<<< HEAD ->>>>>>> 6aee3801c (Feat: Add manage supported chain action) -======= ${ColonyActionType.RemoveProxyColonyMotion} {Manage supported chains} ->>>>>>> 45dad0337 (feat: enable disable proxy colony via reputation) + ${ColonyActionType.RemoveProxyColonyMultisig} {Manage supported chains} ${ExtendedColonyActionType.StagedPayment} {Staged payment} ${ExtendedColonyActionType.AddSafe} {Add Safe} ${ExtendedColonyActionType.RemoveSafe} {Remove Safe} diff --git a/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts b/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts index 7188d442135..5cdfb033af9 100644 --- a/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts +++ b/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts @@ -3,6 +3,8 @@ import { AddressZero } from '@ethersproject/constants'; import { BigNumber } from 'ethers'; import { call, fork, put, takeEvery } from 'redux-saga/effects'; +import { PERMISSIONS_NEEDED_FOR_ACTION } from '~constants/actions.ts'; +import { ADDRESS_ZERO } from '~constants/index.ts'; import { type ColonyManager } from '~context/index.ts'; import { ActionTypes } from '~redux/actionTypes.ts'; import { @@ -19,6 +21,7 @@ import { initiateTransaction, createActionMetadataInDB, getChildIndexLocal, + getPermissionProofsLocal, } from '~redux/sagas/utils/index.ts'; import { getDisableProxyColonyOperation, @@ -36,6 +39,8 @@ function* enableDisableProxyColonyMotionSaga({ annotationMessage, colonyDomains, operation, + colonyRoles, + isMultiSig, }, meta: { id: metaId, setTxHash }, meta, @@ -73,6 +78,42 @@ function* enableDisableProxyColonyMotionSaga({ // eslint-disable-next-line no-inner-declarations function* getCreateMotionParams() { + if (isMultiSig) { + const initiatorAddress = yield colonyClient.signer.getAddress(); + + // Permission proofs for the user creating the multi-sig motion + const [, childSkillIndex] = yield call(getPermissionProofsLocal, { + networkClient: colonyClient.networkClient, + colonyRoles, + colonyDomains, + requiredDomainId: Id.RootDomain, + requiredColonyRoles: + PERMISSIONS_NEEDED_FOR_ACTION.ManageSupportedChains, + // The address of the user creating the multi-sig motion + permissionAddress: initiatorAddress, + // The user must have multi-sig permissions + isMultiSig: true, + }); + + return { + context: ClientType.MultisigPermissionsClient, + methodName: TRANSACTION_METHODS.CreateMotion, + identifier: colonyAddress, + params: [ + Id.RootDomain, + childSkillIndex, + [ADDRESS_ZERO], + [encodedAction], + ], + group: { + key: batchKey, + id: metaId, + index: 0, + }, + ready: false, + }; + } + const rootDomain = colonyDomains.find((domain) => BigNumber.from(domain.nativeId).eq(Id.RootDomain), ); diff --git a/src/redux/types/actions/motion.ts b/src/redux/types/actions/motion.ts index 64cb4f9941b..3a4ab343cfa 100644 --- a/src/redux/types/actions/motion.ts +++ b/src/redux/types/actions/motion.ts @@ -525,6 +525,8 @@ export type MotionActionTypes = colonyDomains: Domain[]; foreignChainId: number; operation: ManageEntityOperation; + colonyRoles: ColonyRoleFragment[]; + isMultiSig?: boolean; }, MetaWithSetter > diff --git a/src/utils/multiSig/index.ts b/src/utils/multiSig/index.ts index 1a579af02f0..3230df57e29 100644 --- a/src/utils/multiSig/index.ts +++ b/src/utils/multiSig/index.ts @@ -75,6 +75,7 @@ export const getRolesNeededForMultiSigAction = ({ permissions = PERMISSIONS_NEEDED_FOR_ACTION.ArbitraryTxs; break; case ColonyActionType.AddProxyColonyMultisig: + case ColonyActionType.RemoveProxyColonyMultisig: permissions = PERMISSIONS_NEEDED_FOR_ACTION.ManageSupportedChains; break; default: From 7c77745b0f9b5294e05df8c5316552076f681de1 Mon Sep 17 00:00:00 2001 From: Romeo Ledesma Date: Mon, 13 Jan 2025 21:06:14 +0800 Subject: [PATCH 36/44] feat: add getMultiSigMotionParams util --- .../colony-cdapp-dev-env-proxy-block-ingestor | 2 +- .../v5/common/ActionSidebar/utils.ts | 2 +- .../CompletedAction/CompletedAction.tsx | 1 - src/graphql/generated.ts | 18 ---- .../proxyColonies/createProxyColony.ts | 2 +- .../proxyColonies/enableDisableProxyColony.ts | 34 ++----- .../sagas/proxyColonies/createProxyColony.ts | 4 +- .../sagas/proxyColonies/disableProxyColony.ts | 2 +- .../sagas/proxyColonies/enableProxyColony.ts | 2 +- .../sagas/utils/getMultiSigMotionParams.ts | 89 +++++++++++++++++++ 10 files changed, 104 insertions(+), 52 deletions(-) create mode 100644 src/redux/sagas/utils/getMultiSigMotionParams.ts diff --git a/docker/colony-cdapp-dev-env-proxy-block-ingestor b/docker/colony-cdapp-dev-env-proxy-block-ingestor index 9cd33a8250d..71a5fa00680 100644 --- a/docker/colony-cdapp-dev-env-proxy-block-ingestor +++ b/docker/colony-cdapp-dev-env-proxy-block-ingestor @@ -1,7 +1,7 @@ FROM colony-cdapp-dev-env/base:latest # @TODO maybe add a PROXY_BLOCK_INGESTOR_HASH and fallback to BLOCK_INGESTOR_HASH -ENV BLOCK_INGESTOR_HASH=719f62c82285fc20cba66a17acfff623dcbf56f5 +ENV BLOCK_INGESTOR_HASH=bf4b78c5bf02a69521bbe78ae6cfcbda61730793 # @TODO do we need here a contract to be in the format: # { # name: 'ColonyNetwork', diff --git a/src/components/v5/common/ActionSidebar/utils.ts b/src/components/v5/common/ActionSidebar/utils.ts index 686b4128a30..e0846fcfa32 100644 --- a/src/components/v5/common/ActionSidebar/utils.ts +++ b/src/components/v5/common/ActionSidebar/utils.ts @@ -13,13 +13,13 @@ import { removeCacheEntry, CacheQueryKeys } from '~utils/queries.ts'; import { splitAddress } from '~utils/strings.ts'; import { type SearchSelectOption } from '~v5/shared/SearchSelect/types.ts'; +import { type GroupListItem } from './partials/GroupedAction/types.ts'; import { GROUP_FUNDS_LIST, GROUP_TEAMS_LIST, GROUP_ADMIN_LIST, } from './partials/ManageColonyGroup/GroupList.ts'; import { GROUP_LIST } from './partials/PaymentGroup/GroupList.ts'; -import { GroupListItem } from './partials/GroupedAction/types.ts'; export const translateAction = (action?: Action) => { const actionName = action diff --git a/src/components/v5/common/CompletedAction/CompletedAction.tsx b/src/components/v5/common/CompletedAction/CompletedAction.tsx index 061c33b7861..166b9e0253b 100644 --- a/src/components/v5/common/CompletedAction/CompletedAction.tsx +++ b/src/components/v5/common/CompletedAction/CompletedAction.tsx @@ -83,7 +83,6 @@ const CompletedAction = ({ action }: ICompletedAction) => { return ; case ColonyActionType.AddProxyColony: case ColonyActionType.AddProxyColonyMotion: - case ColonyActionType.RemoveProxyColonyMotion: case ColonyActionType.AddProxyColonyMultisig: case ColonyActionType.RemoveProxyColony: case ColonyActionType.RemoveProxyColonyMotion: diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index 51c949a0dec..c86a40beec9 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -1228,7 +1228,6 @@ export type ColonyMultiSig = { executedBy?: Maybe; /** Extended user object for given executedBy */ executedByUser?: Maybe; -<<<<<<< HEAD /** * In case of multiple funding actions in a multisig, when funding an expenditure, array containing * the details of tokens and amounts to be funded @@ -1236,12 +1235,10 @@ export type ColonyMultiSig = { expenditureFunding?: Maybe>; /** Expenditure associated with the motion, if any */ expenditureId?: Maybe; -======= /** Expanded `ColonyAction` */ finalizationActionData?: Maybe; /** The action txHash that was triggered upon motion finalization */ finalizationActionId?: Maybe; ->>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) /** Whether the underlying action completed */ hasActionCompleted: Scalars['Boolean']; /** @@ -1697,12 +1694,9 @@ export type CreateColonyMultiSigInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; -<<<<<<< HEAD expenditureFunding?: InputMaybe>; expenditureId?: InputMaybe; -======= finalizationActionId?: InputMaybe; ->>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted: Scalars['Boolean']; id?: InputMaybe; isDecision: Scalars['Boolean']; @@ -3404,11 +3398,8 @@ export type ModelColonyMultiSigConditionInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; -<<<<<<< HEAD expenditureId?: InputMaybe; -======= finalizationActionId?: InputMaybe; ->>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted?: InputMaybe; isDecision?: InputMaybe; isExecuted?: InputMaybe; @@ -3436,11 +3427,8 @@ export type ModelColonyMultiSigFilterInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; -<<<<<<< HEAD expenditureId?: InputMaybe; -======= finalizationActionId?: InputMaybe; ->>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted?: InputMaybe; id?: InputMaybe; isDecision?: InputMaybe; @@ -4522,11 +4510,8 @@ export type ModelSubscriptionColonyMultiSigFilterInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; -<<<<<<< HEAD expenditureId?: InputMaybe; -======= finalizationActionId?: InputMaybe; ->>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted?: InputMaybe; id?: InputMaybe; isDecision?: InputMaybe; @@ -9959,12 +9944,9 @@ export type UpdateColonyMultiSigInput = { createdAt?: InputMaybe; executedAt?: InputMaybe; executedBy?: InputMaybe; -<<<<<<< HEAD expenditureFunding?: InputMaybe>; expenditureId?: InputMaybe; -======= finalizationActionId?: InputMaybe; ->>>>>>> 2be129c35 (feat: add finalization action info to multisig and motions, and add a reference to the action an action finalized) hasActionCompleted?: InputMaybe; id: Scalars['ID']; isDecision?: InputMaybe; diff --git a/src/redux/sagas/motions/proxyColonies/createProxyColony.ts b/src/redux/sagas/motions/proxyColonies/createProxyColony.ts index b9b5ad500e6..38cfad6371e 100644 --- a/src/redux/sagas/motions/proxyColonies/createProxyColony.ts +++ b/src/redux/sagas/motions/proxyColonies/createProxyColony.ts @@ -195,7 +195,7 @@ function* createProxyColonyMotionSaga({ }, } = yield waitForTxResult(createMotion.channel); - yield createActionMetadataInDB(txHash, customActionTitle); + yield createActionMetadataInDB(txHash, { customTitle: customActionTitle }); if (annotationMessage) { yield uploadAnnotation({ diff --git a/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts b/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts index 5cdfb033af9..2ba48c01577 100644 --- a/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts +++ b/src/redux/sagas/motions/proxyColonies/enableDisableProxyColony.ts @@ -4,7 +4,6 @@ import { BigNumber } from 'ethers'; import { call, fork, put, takeEvery } from 'redux-saga/effects'; import { PERMISSIONS_NEEDED_FOR_ACTION } from '~constants/actions.ts'; -import { ADDRESS_ZERO } from '~constants/index.ts'; import { type ColonyManager } from '~context/index.ts'; import { ActionTypes } from '~redux/actionTypes.ts'; import { @@ -13,6 +12,7 @@ import { getTxChannel, waitForTxResult, } from '~redux/sagas/transactions/index.ts'; +import getMultiSigMotionParams from '~redux/sagas/utils/getMultiSigMotionParams.ts'; import { putError, takeFrom, @@ -21,7 +21,6 @@ import { initiateTransaction, createActionMetadataInDB, getChildIndexLocal, - getPermissionProofsLocal, } from '~redux/sagas/utils/index.ts'; import { getDisableProxyColonyOperation, @@ -79,39 +78,20 @@ function* enableDisableProxyColonyMotionSaga({ // eslint-disable-next-line no-inner-declarations function* getCreateMotionParams() { if (isMultiSig) { - const initiatorAddress = yield colonyClient.signer.getAddress(); - - // Permission proofs for the user creating the multi-sig motion - const [, childSkillIndex] = yield call(getPermissionProofsLocal, { - networkClient: colonyClient.networkClient, + return yield call(getMultiSigMotionParams, { + colonyClient, colonyRoles, + colonyAddress, colonyDomains, - requiredDomainId: Id.RootDomain, + encodedAction, requiredColonyRoles: PERMISSIONS_NEEDED_FOR_ACTION.ManageSupportedChains, - // The address of the user creating the multi-sig motion - permissionAddress: initiatorAddress, - // The user must have multi-sig permissions - isMultiSig: true, - }); - - return { - context: ClientType.MultisigPermissionsClient, - methodName: TRANSACTION_METHODS.CreateMotion, - identifier: colonyAddress, - params: [ - Id.RootDomain, - childSkillIndex, - [ADDRESS_ZERO], - [encodedAction], - ], group: { key: batchKey, id: metaId, index: 0, }, - ready: false, - }; + }); } const rootDomain = colonyDomains.find((domain) => @@ -205,7 +185,7 @@ function* enableDisableProxyColonyMotionSaga({ }, } = yield waitForTxResult(manageProxyColonyMotion.channel); - yield createActionMetadataInDB(txHash, customActionTitle); + yield createActionMetadataInDB(txHash, { customTitle: customActionTitle }); if (annotationMessage) { yield uploadAnnotation({ diff --git a/src/redux/sagas/proxyColonies/createProxyColony.ts b/src/redux/sagas/proxyColonies/createProxyColony.ts index c712b883488..9bd47e71970 100644 --- a/src/redux/sagas/proxyColonies/createProxyColony.ts +++ b/src/redux/sagas/proxyColonies/createProxyColony.ts @@ -134,7 +134,9 @@ function* createProxyColony({ ); } - yield createActionMetadataInDB(transaction.hash, customActionTitle); + yield createActionMetadataInDB(transaction.hash, { + customTitle: customActionTitle, + }); if (annotationMessage) { yield uploadAnnotation({ diff --git a/src/redux/sagas/proxyColonies/disableProxyColony.ts b/src/redux/sagas/proxyColonies/disableProxyColony.ts index 7bf38e8e646..32027ff9811 100644 --- a/src/redux/sagas/proxyColonies/disableProxyColony.ts +++ b/src/redux/sagas/proxyColonies/disableProxyColony.ts @@ -98,7 +98,7 @@ function* disableProxyColonyAction({ }, } = yield waitForTxResult(disableProxyColony.channel); - yield createActionMetadataInDB(txHash, customActionTitle); + yield createActionMetadataInDB(txHash, { customTitle: customActionTitle }); if (annotationMessage) { yield uploadAnnotation({ diff --git a/src/redux/sagas/proxyColonies/enableProxyColony.ts b/src/redux/sagas/proxyColonies/enableProxyColony.ts index 2876e0ec631..c44428e86a0 100644 --- a/src/redux/sagas/proxyColonies/enableProxyColony.ts +++ b/src/redux/sagas/proxyColonies/enableProxyColony.ts @@ -101,7 +101,7 @@ function* enableProxyColonyAction({ // eslint-disable-next-line no-console console.log('PROXY COLONY ENABLE TXHASH', txHash, customActionTitle); - yield createActionMetadataInDB(txHash, customActionTitle); + yield createActionMetadataInDB(txHash, { customTitle: customActionTitle }); if (annotationMessage) { yield uploadAnnotation({ diff --git a/src/redux/sagas/utils/getMultiSigMotionParams.ts b/src/redux/sagas/utils/getMultiSigMotionParams.ts new file mode 100644 index 00000000000..82180791257 --- /dev/null +++ b/src/redux/sagas/utils/getMultiSigMotionParams.ts @@ -0,0 +1,89 @@ +import { + ClientType, + type ColonyRole, + Id, + type AnyColonyClient, +} from '@colony/colony-js'; +import { call } from 'redux-saga/effects'; + +import { ADDRESS_ZERO } from '~constants'; +import { type ColonyRoleFragment } from '~gql'; +import { type Domain } from '~types/graphql.ts'; +import { TRANSACTION_METHODS } from '~types/transactions.ts'; + +import { getPermissionProofsLocal } from './proofs.ts'; + +interface IGetMultiSigMotionParams { + permissionAddress?: string; + colonyClient: AnyColonyClient; + colonyAddress: string; + colonyRoles: ColonyRoleFragment[]; + colonyDomains: Domain[]; + requiredColonyRoles: ColonyRole[][]; + encodedAction: string; + isMultiSig?: boolean; + group: { + key: string; + id: string; + index: number; + }; + ready?: boolean; + requiredDomainId?: Id; + targetAddressOverride?: string; +} + +/** + * @TODO Sagas that can easily benefit from this: + * - editColonyMotion + * - manageTokens + * - manageVerifiedMembers + * - rootMotion + */ +function* getMultiSigMotionParams({ + permissionAddress, + colonyClient, + colonyAddress, + colonyDomains, + colonyRoles, + requiredColonyRoles, + encodedAction, + isMultiSig = true, + group, + ready = false, + requiredDomainId = Id.RootDomain, + targetAddressOverride, +}: IGetMultiSigMotionParams) { + const { networkClient, signer } = colonyClient; + + const finalPermissionAddress = + permissionAddress ?? (yield signer.getAddress()); + + const [permissionDomainId, childSkillIndex] = yield call( + getPermissionProofsLocal, + { + networkClient, + colonyRoles, + colonyDomains, + requiredDomainId, + requiredColonyRoles, + permissionAddress: finalPermissionAddress, + isMultiSig, + }, + ); + + return { + context: ClientType.MultisigPermissionsClient, + methodName: TRANSACTION_METHODS.CreateMotion, + identifier: colonyAddress, + params: [ + permissionDomainId, + childSkillIndex, + [targetAddressOverride ?? ADDRESS_ZERO], + [encodedAction], + ], + group, + ready, + }; +} + +export default getMultiSigMotionParams; From c447602426602a017996331868fd91f79ce9fecd Mon Sep 17 00:00:00 2001 From: Dave Creaser Date: Thu, 16 Jan 2025 16:53:40 +0000 Subject: [PATCH 37/44] Move targetChainId up to the top level of colonyAction --- .../api/colonycdapp/schema/schema.graphql | 5 ++++- docker/colony-cdapp-dev-env-proxy-block-ingestor | 2 +- .../helpers/mapItemToMessageFormat.tsx | 4 +--- .../ManageSupportedChain.tsx | 4 ++-- src/graphql/fragments/actions.graphql | 4 +--- src/graphql/generated.ts | 16 +++++++++++----- 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/amplify/backend/api/colonycdapp/schema/schema.graphql b/amplify/backend/api/colonycdapp/schema/schema.graphql index 54b5b4f0a0e..b6a8b712d15 100644 --- a/amplify/backend/api/colonycdapp/schema/schema.graphql +++ b/amplify/backend/api/colonycdapp/schema/schema.graphql @@ -3584,6 +3584,10 @@ type ColonyAction @model @searchable { """ multiChainInfo: MultiChainInfo """ + Target chain id if the action is on a proxy colony chain + """ + targetChainId: Int + """ The motion action txHash that this action finalized """ finalizedActionId: ID @@ -3594,7 +3598,6 @@ type ColonyAction @model @searchable { } type MultiChainInfo { - targetChainId: Int! completed: Boolean! wormholeInfo: ActionWormholeInfo } diff --git a/docker/colony-cdapp-dev-env-proxy-block-ingestor b/docker/colony-cdapp-dev-env-proxy-block-ingestor index 71a5fa00680..bd923415e8e 100644 --- a/docker/colony-cdapp-dev-env-proxy-block-ingestor +++ b/docker/colony-cdapp-dev-env-proxy-block-ingestor @@ -1,7 +1,7 @@ FROM colony-cdapp-dev-env/base:latest # @TODO maybe add a PROXY_BLOCK_INGESTOR_HASH and fallback to BLOCK_INGESTOR_HASH -ENV BLOCK_INGESTOR_HASH=bf4b78c5bf02a69521bbe78ae6cfcbda61730793 +ENV BLOCK_INGESTOR_HASH=008fe77fd7a4787619653ae309e6e9597b9b6c80 # @TODO do we need here a contract to be in the format: # { # name: 'ColonyNetwork', diff --git a/src/components/common/ColonyActions/helpers/mapItemToMessageFormat.tsx b/src/components/common/ColonyActions/helpers/mapItemToMessageFormat.tsx index b50d679776b..50c2c35a05c 100644 --- a/src/components/common/ColonyActions/helpers/mapItemToMessageFormat.tsx +++ b/src/components/common/ColonyActions/helpers/mapItemToMessageFormat.tsx @@ -210,9 +210,7 @@ const getExpenditureStagesData = ( }; const getProxyColonyDeployedChain = (actionData: ColonyAction) => { - const chainInfo = findSupportedChain( - actionData?.multiChainInfo?.targetChainId, - ); + const chainInfo = findSupportedChain(actionData?.targetChainId); return chainInfo?.name; }; diff --git a/src/components/v5/common/CompletedAction/partials/ManageSupportedChain/ManageSupportedChain.tsx b/src/components/v5/common/CompletedAction/partials/ManageSupportedChain/ManageSupportedChain.tsx index 807b65917aa..faad55b1843 100644 --- a/src/components/v5/common/CompletedAction/partials/ManageSupportedChain/ManageSupportedChain.tsx +++ b/src/components/v5/common/CompletedAction/partials/ManageSupportedChain/ManageSupportedChain.tsx @@ -50,10 +50,10 @@ const ManageSupportedChain: FC = ({ action }) => { annotation, transactionHash, metadata, - multiChainInfo, + targetChainId, } = action; const decisionMethod = useDecisionMethod(action); - const chainInfo = findSupportedChain(multiChainInfo?.targetChainId); + const chainInfo = findSupportedChain(targetChainId); const isAddOperation = action.type.startsWith( ColonyActionType.AddProxyColony, ); diff --git a/src/graphql/fragments/actions.graphql b/src/graphql/fragments/actions.graphql index 924c7279ed0..90f33c768ba 100644 --- a/src/graphql/fragments/actions.graphql +++ b/src/graphql/fragments/actions.graphql @@ -152,9 +152,7 @@ fragment ColonyAction on ColonyAction { contractAddress encodedFunction } - multiChainInfo { - targetChainId - } + targetChainId } fragment ApprovedTokenChanges on ApprovedTokenChanges { diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index c86a40beec9..6a8a8ebc266 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -559,6 +559,8 @@ export type ColonyAction = { * Currently it is impossible to tell the reason for the action being hidden from the actions list */ showInActionsList: Scalars['Boolean']; + /** Target chain id if the action is on a proxy colony chain */ + targetChainId?: Maybe; /** The target Domain of the action, if applicable */ toDomain?: Maybe; /** The target Domain identifier, if applicable */ @@ -1524,6 +1526,7 @@ export type CreateColonyActionInput = { rolesAreMultiSig?: InputMaybe; rootHash: Scalars['String']; showInActionsList: Scalars['Boolean']; + targetChainId?: InputMaybe; toDomainId?: InputMaybe; toPotId?: InputMaybe; tokenAddress?: InputMaybe; @@ -2992,6 +2995,7 @@ export type ModelColonyActionConditionInput = { rolesAreMultiSig?: InputMaybe; rootHash?: InputMaybe; showInActionsList?: InputMaybe; + targetChainId?: InputMaybe; toDomainId?: InputMaybe; toPotId?: InputMaybe; tokenAddress?: InputMaybe; @@ -3039,6 +3043,7 @@ export type ModelColonyActionFilterInput = { rolesAreMultiSig?: InputMaybe; rootHash?: InputMaybe; showInActionsList?: InputMaybe; + targetChainId?: InputMaybe; toDomainId?: InputMaybe; toPotId?: InputMaybe; tokenAddress?: InputMaybe; @@ -4363,6 +4368,7 @@ export type ModelSubscriptionColonyActionFilterInput = { rolesAreMultiSig?: InputMaybe; rootHash?: InputMaybe; showInActionsList?: InputMaybe; + targetChainId?: InputMaybe; toDomainId?: InputMaybe; toPotId?: InputMaybe; tokenAddress?: InputMaybe; @@ -5329,13 +5335,11 @@ export type MotionStateHistoryInput = { export type MultiChainInfo = { __typename?: 'MultiChainInfo'; completed: Scalars['Boolean']; - targetChainId: Scalars['Int']; wormholeInfo?: Maybe; }; export type MultiChainInfoInput = { completed: Scalars['Boolean']; - targetChainId: Scalars['Int']; wormholeInfo?: InputMaybe; }; @@ -8357,6 +8361,7 @@ export enum SearchableColonyActionAggregateField { RolesAreMultiSig = 'rolesAreMultiSig', RootHash = 'rootHash', ShowInActionsList = 'showInActionsList', + TargetChainId = 'targetChainId', ToDomainId = 'toDomainId', ToPotId = 'toPotId', TokenAddress = 'tokenAddress', @@ -8413,6 +8418,7 @@ export type SearchableColonyActionFilterInput = { rolesAreMultiSig?: InputMaybe; rootHash?: InputMaybe; showInActionsList?: InputMaybe; + targetChainId?: InputMaybe; toDomainId?: InputMaybe; toPotId?: InputMaybe; tokenAddress?: InputMaybe; @@ -8457,6 +8463,7 @@ export enum SearchableColonyActionSortableFields { RolesAreMultiSig = 'rolesAreMultiSig', RootHash = 'rootHash', ShowInActionsList = 'showInActionsList', + TargetChainId = 'targetChainId', ToDomainId = 'toDomainId', ToPotId = 'toPotId', TokenAddress = 'tokenAddress', @@ -9796,6 +9803,7 @@ export type UpdateColonyActionInput = { rolesAreMultiSig?: InputMaybe; rootHash?: InputMaybe; showInActionsList?: InputMaybe; + targetChainId?: InputMaybe; toDomainId?: InputMaybe; toPotId?: InputMaybe; tokenAddress?: InputMaybe; @@ -12514,9 +12522,7 @@ export const ColonyActionFragmentDoc = gql` contractAddress encodedFunction } - multiChainInfo { - targetChainId - } + targetChainId } ${UserDisplayFragmentDoc} ${PublicColonyFragmentDoc} From a45f5f1fcfc1d30af2cd2f8cd8f96d9ef06ec59e Mon Sep 17 00:00:00 2001 From: Dave Creaser Date: Tue, 21 Jan 2025 17:35:07 +0000 Subject: [PATCH 38/44] Codegen after rebase --- src/graphql/generated.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index 6a8a8ebc266..f23acab093e 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -10532,7 +10532,7 @@ export type VotingReputationParamsInput = { voterRewardFraction: Scalars['String']; }; -export type ColonyActionFragment = { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null }; +export type ColonyActionFragment = { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, targetChainId?: number | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null }; export type ApprovedTokenChangesFragment = { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array }; @@ -10636,7 +10636,7 @@ export type SafeTransactionDataFragment = { __typename?: 'SafeTransactionData', export type SafeTransactionFragment = { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null }; -export type UserStakeFragment = { __typename?: 'UserStake', id: string, amount: string, isClaimed: boolean, createdAt: string, type?: UserStakeType | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null }; +export type UserStakeFragment = { __typename?: 'UserStake', id: string, amount: string, isClaimed: boolean, createdAt: string, type?: UserStakeType | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, targetChainId?: number | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null }; export type TokenFragment = { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }; @@ -10879,14 +10879,14 @@ export type GetColonyActionsQueryVariables = Exact<{ }>; -export type GetColonyActionsQuery = { __typename?: 'Query', getActionsByColony?: { __typename?: 'ModelColonyActionConnection', nextToken?: string | null, items: Array<{ __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null> } | null }; +export type GetColonyActionsQuery = { __typename?: 'Query', getActionsByColony?: { __typename?: 'ModelColonyActionConnection', nextToken?: string | null, items: Array<{ __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, targetChainId?: number | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null> } | null }; export type GetColonyActionQueryVariables = Exact<{ transactionHash: Scalars['ID']; }>; -export type GetColonyActionQuery = { __typename?: 'Query', getColonyAction?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null }; +export type GetColonyActionQuery = { __typename?: 'Query', getColonyAction?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, targetChainId?: number | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null }; export type GetColonyMotionQueryVariables = Exact<{ id: Scalars['ID']; @@ -10931,7 +10931,7 @@ export type SearchActionsQueryVariables = Exact<{ }>; -export type SearchActionsQuery = { __typename?: 'Query', searchColonyActions?: { __typename?: 'SearchableColonyActionConnection', nextToken?: string | null, items: Array<{ __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null> } | null }; +export type SearchActionsQuery = { __typename?: 'Query', searchColonyActions?: { __typename?: 'SearchableColonyActionConnection', nextToken?: string | null, items: Array<{ __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, targetChainId?: number | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null> } | null }; export type OnCreateColonyActionMetadataSubscriptionVariables = Exact<{ [key: string]: never; }>; @@ -11268,7 +11268,7 @@ export type GetUserStakesQueryVariables = Exact<{ }>; -export type GetUserStakesQuery = { __typename?: 'Query', getUserStakes?: { __typename?: 'ModelUserStakeConnection', items: Array<{ __typename?: 'UserStake', id: string, amount: string, isClaimed: boolean, createdAt: string, type?: UserStakeType | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null, multiChainInfo?: { __typename?: 'MultiChainInfo', targetChainId: number } | null } | null } | null> } | null }; +export type GetUserStakesQuery = { __typename?: 'Query', getUserStakes?: { __typename?: 'ModelUserStakeConnection', items: Array<{ __typename?: 'UserStake', id: string, amount: string, isClaimed: boolean, createdAt: string, type?: UserStakeType | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType, blockNumber: number, initiatorAddress: string, recipientAddress?: string | null, amount?: string | null, networkFee?: string | null, tokenAddress?: string | null, createdAt: string, newColonyVersion?: number | null, rolesAreMultiSig?: boolean | null, individualEvents?: string | null, isMotion?: boolean | null, showInActionsList: boolean, members?: Array | null, rootHash: string, expenditureId?: string | null, isMultiSig?: boolean | null, multiSigId?: string | null, targetChainId?: number | null, transactionHash: string, colonyAddress: string, initiatorUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, initiatorColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, initiatorExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, initiatorToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipientUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, recipientColony?: { __typename?: 'Colony', name: string, version: number, reputation?: string | null, expendituresGlobalClaimDelay?: string | null, private?: boolean | null, lastUpdatedContributorsWithReputation?: string | null, colonyAddress: string, metadata?: { __typename?: 'ColonyMetadata', avatar?: string | null, displayName: string, thumbnail?: string | null, description?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', link: string, name: ExternalLinks }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, colonyCreateEvent?: { __typename?: 'ColonyCreateEvent', blockNumber: number, creationSalt: string } | null, nativeToken: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string }, status?: { __typename?: 'ColonyStatus', recovery?: boolean | null, nativeToken?: { __typename?: 'NativeTokenStatus', mintable?: boolean | null, unlockable?: boolean | null, unlocked?: boolean | null } | null } | null, chainMetadata: { __typename?: 'ChainMetadata', chainId: string, network?: Network | null }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, motionsWithUnclaimedStakes?: Array<{ __typename?: 'ColonyUnclaimedStake', motionId: string, unclaimedRewards: Array<{ __typename?: 'StakerRewards', address: string, rewards: { __typename?: 'MotionStakeValues', nay: string, yay: string } }> }> | null, domains?: { __typename?: 'ModelDomainConnection', items: Array<{ __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null> } | null, balances?: { __typename?: 'ColonyBalances', items?: Array<{ __typename?: 'ColonyBalance', id: string, balance: string, domain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> | null } | null, fundsClaimData?: { __typename?: 'ModelColonyFundsClaimConnection', items: Array<{ __typename?: 'ColonyFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, chainFundsClaim?: { __typename?: 'ColonyChainFundsClaim', id: string, createdAtBlock: number, createdAt: string, amount: string, isClaimed?: boolean | null } | null, roles?: { __typename?: 'ModelColonyRoleConnection', items: Array<{ __typename?: 'ColonyRole', id: string, targetAddress: string, role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, isMultiSig?: boolean | null, domain: { __typename?: 'Domain', id: string, nativeId: number } } | null> } | null, colonyMemberInvite?: { __typename?: 'ColonyMemberInvite', id: string, invitesRemaining: number } | null } | null, recipientExtension?: { __typename?: 'ColonyExtension', hash: string, installedBy: string, installedAt: number, isDeprecated: boolean, isDeleted: boolean, isInitialized: boolean, address: string, colonyAddress: string, currentVersion: number, params?: { __typename?: 'ExtensionParams', votingReputation?: { __typename?: 'VotingReputationParams', maxVoteFraction: string, totalStakeFraction: string, voterRewardFraction: string, userMinStakeFraction: string, stakePeriod: string, submitPeriod: string, revealPeriod: string, escalationPeriod: string } | null, stakedExpenditure?: { __typename?: 'StakedExpenditureParams', stakeFraction: string } | null, multiSig?: { __typename?: 'MultiSigParams', colonyThreshold: number, domainThresholds?: Array<{ __typename?: 'MultiSigDomainConfig', domainId: string, domainThreshold: number } | null> | null } | null } | null } | null, recipientToken?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, fromDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, toDomain?: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null } | null, roles?: { __typename?: 'ColonyActionRoles', role_0?: boolean | null, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null } | null, payments?: Array<{ __typename?: 'Payment', amount: string, tokenAddress: string, recipientAddress: string }> | null, motionData?: { __typename?: 'ColonyMotion', remainingStakes: Array, userMinStake: string, requiredStake: string, nativeMotionDomainId: string, isFinalized: boolean, skillRep: string, repSubmitted: string, hasObjection: boolean, isDecision: boolean, transactionHash: string, createdAt: string, createdBy: string, expenditureSlotIds?: Array | null, databaseMotionId: string, motionId: string, motionStakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, usersStakes: Array<{ __typename?: 'UserMotionStakes', address: string, stakes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } } }>, motionDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, stakerRewards: Array<{ __typename?: 'StakerRewards', address: string, isClaimed: boolean, rewards: { __typename?: 'MotionStakeValues', yay: string, nay: string } }>, voterRewards?: { __typename?: 'ModelVoterRewardsHistoryConnection', items: Array<{ __typename?: 'VoterRewardsHistory', userAddress: string, amount: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, voterRecord: Array<{ __typename?: 'VoterRecord', address: string, voteCount: string, vote?: number | null }>, revealedVotes: { __typename?: 'MotionStakes', raw: { __typename?: 'MotionStakeValues', yay: string, nay: string }, percentage: { __typename?: 'MotionStakeValues', yay: string, nay: string } }, motionStateHistory: { __typename?: 'MotionStateHistory', hasVoted: boolean, hasPassed: boolean, hasFailed: boolean, hasFailedNotFinalizable: boolean, inRevealPhase: boolean, yaySideFullyStakedAt?: string | null, naySideFullyStakedAt?: string | null, allVotesSubmittedAt?: string | null, allVotesRevealedAt?: string | null, endedAt?: string | null, finalizedAt?: string | null }, messages?: { __typename?: 'ModelMotionMessageConnection', items: Array<{ __typename?: 'MotionMessage', initiatorAddress: string, name: string, messageKey: string, vote?: string | null, amount?: string | null, createdAt: string, initiatorUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null } | null> } | null, objectionAnnotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, action?: { __typename?: 'ColonyAction', type: ColonyActionType } | null } | null, colony: { __typename?: 'Colony', name: string, colonyAddress: string, nativeToken: { __typename?: 'Token', name: string, nativeTokenDecimals: number, nativeTokenSymbol: string, tokenAddress: string }, tokens?: { __typename?: 'ModelColonyTokensConnection', items: Array<{ __typename?: 'ColonyTokens', colonyTokensId: string, token: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } } | null> } | null, metadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null }, pendingDomainMetadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null, pendingColonyMetadata?: { __typename?: 'ColonyMetadata', displayName: string, avatar?: string | null, description?: string | null, thumbnail?: string | null, externalLinks?: Array<{ __typename?: 'ExternalLink', name: ExternalLinks, link: string }> | null, objective?: { __typename?: 'ColonyObjective', title: string, description: string, progress: number } | null, changelog?: Array<{ __typename?: 'ColonyMetadataChangelog', transactionHash: string, newDisplayName: string, oldDisplayName: string, hasAvatarChanged: boolean, hasDescriptionChanged?: boolean | null, haveExternalLinksChanged?: boolean | null, hasObjectiveChanged?: boolean | null, newSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null, oldSafes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null }> | null, safes?: Array<{ __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }> | null } | null, annotation?: { __typename?: 'Annotation', createdAt: string, message: string } | null, decisionData?: { __typename?: 'ColonyDecision', title: string, description: string, motionDomainId: number, walletAddress: string, createdAt: string, actionId: string, colonyAddress: string } | null, safeTransaction?: { __typename?: 'SafeTransaction', id: string, safe: { __typename?: 'Safe', name: string, address: string, chainId: string, moduleContractAddress: string }, transactions?: { __typename?: 'ModelSafeTransactionDataConnection', items: Array<{ __typename?: 'SafeTransactionData', transactionType: SafeTransactionType, amount?: string | null, rawAmount?: string | null, data?: string | null, abi?: string | null, contractFunction?: string | null, token?: { __typename?: 'Token', decimals: number, name: string, symbol: string, type?: TokenType | null, avatar?: string | null, thumbnail?: string | null, tokenAddress: string } | null, recipient?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, contract?: { __typename?: 'SimpleTarget', id: string, walletAddress: string, profile: { __typename?: 'SimpleTargetProfile', avatarHash?: string | null, displayName?: string | null } } | null, nft?: { __typename?: 'NFT', id: string, walletAddress: string, profile: { __typename?: 'NFTProfile', displayName: string } } | null, nftData?: { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string } | null, functionParams?: Array<{ __typename?: 'FunctionParam', name: string, type: string, value: string } | null> | null } | null> } | null } | null, metadata?: { __typename?: 'ColonyActionMetadata', customTitle: string, arbitraryTxAbis?: Array<{ __typename?: 'ArbitraryTxAbi', contractAddress: string, jsonAbi: string }> | null } | null, multiSigData?: { __typename?: 'ColonyMultiSig', id: string, nativeMultiSigId: string, createdAt: string, multiSigDomainId: string, nativeMultiSigDomainId: string, requiredPermissions: number, transactionHash: string, isExecuted: boolean, hasActionCompleted: boolean, isRejected: boolean, isDecision: boolean, executedAt?: string | null, executedBy?: string | null, rejectedAt?: string | null, rejectedBy?: string | null, multiSigDomain: { __typename?: 'Domain', id: string, nativeId: number, isRoot: boolean, nativeFundingPotId: number, nativeSkillId: string, reputation?: string | null, reputationPercentage?: string | null, metadata?: { __typename?: 'DomainMetadata', name: string, color: DomainColor, description?: string | null, id: string, changelog?: Array<{ __typename?: 'DomainMetadataChangelog', transactionHash: string, oldName: string, newName: string, oldColor: DomainColor, newColor: DomainColor, oldDescription?: string | null, newDescription?: string | null }> | null } | null }, signatures?: { __typename?: 'ModelMultiSigUserSignatureConnection', items: Array<{ __typename?: 'MultiSigUserSignature', id: string, role: number, userAddress: string, multiSigId: string, vote: MultiSigVote, createdAt: string, updatedAt: string, user: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } } | null> } | null, executedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null, rejectedByUser?: { __typename?: 'User', walletAddress: string, profile?: { __typename?: 'Profile', displayName?: string | null, displayNameChanged?: string | null, avatar?: string | null, thumbnail?: string | null } | null } | null } | null, approvedTokenChanges?: { __typename?: 'ApprovedTokenChanges', added: Array, removed: Array, unaffected: Array } | null, expenditure?: { __typename?: 'Expenditure', isStaked: boolean, type: ExpenditureType, metadata?: { __typename?: 'ExpenditureMetadata', distributionType?: SplitPaymentDistributionType | null } | null, creatingActions?: { __typename?: 'ModelColonyActionConnection', items: Array<{ __typename?: 'ColonyAction', transactionHash: string } | null> } | null } | null, arbitraryTransactions?: Array<{ __typename?: 'ColonyActionArbitraryTransaction', contractAddress: string, encodedFunction: string }> | null } | null } | null> } | null }; export type GetTokenByAddressQueryVariables = Exact<{ address: Scalars['ID']; From 7a3b888cc3d6721e83eb0f076fc130964f2c2ea8 Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Wed, 22 Jan 2025 10:54:58 +0100 Subject: [PATCH 39/44] Refactor: Remove unused var from docker and unused supported chains --- .../colony-cdapp-dev-env-proxy-block-ingestor | 11 ++------ docker/files/proxy-block-ingestor/run.sh.base | 4 --- .../v5/common/ActionSidebar/utils.ts | 3 +- src/constants/proxyColonies.ts | 28 +++++++++---------- 4 files changed, 18 insertions(+), 28 deletions(-) diff --git a/docker/colony-cdapp-dev-env-proxy-block-ingestor b/docker/colony-cdapp-dev-env-proxy-block-ingestor index bd923415e8e..2fb0c2f1fcb 100644 --- a/docker/colony-cdapp-dev-env-proxy-block-ingestor +++ b/docker/colony-cdapp-dev-env-proxy-block-ingestor @@ -1,15 +1,8 @@ FROM colony-cdapp-dev-env/base:latest # @TODO maybe add a PROXY_BLOCK_INGESTOR_HASH and fallback to BLOCK_INGESTOR_HASH -ENV BLOCK_INGESTOR_HASH=008fe77fd7a4787619653ae309e6e9597b9b6c80 -# @TODO do we need here a contract to be in the format: -# { -# name: 'ColonyNetwork', -# address: '0x777760996135F0791E2e1a74aFAa060711197777', -# path: 'colonyNetwork/ColonyNetwork.sol/ColonyNetwork.json', -# }, -# also the RPC url needs to be different for each chain -ENV CONTRACT_ADDRESSES='["0x777760996135F0791E2e1a74aFAa060711197777", "0x777760996135F0791E2e1a74aFAa060711197778"]' +ENV BLOCK_INGESTOR_HASH=983e0b68472b8f7f7406352679e29b2d2d4d49c0 + ENV CHAIN_RPC_ENDPOINTS='["http://network-contracts-remote:8545", "http://network-contracts-remote-2:8545"]' ENV STATS_PORTS='["10002", "10003"]' diff --git a/docker/files/proxy-block-ingestor/run.sh.base b/docker/files/proxy-block-ingestor/run.sh.base index 78f4b9ac9a0..13a79613296 100644 --- a/docker/files/proxy-block-ingestor/run.sh.base +++ b/docker/files/proxy-block-ingestor/run.sh.base @@ -17,9 +17,6 @@ else INDEX=$((CONTAINER_REPLICA_NUMBER - 1)) fi -CONTRACT_ADDRESSES_ARRAY=($(echo "$CONTRACT_ADDRESSES" | jq -r '.[]')) -CONTRACT_ADDRESS=${CONTRACT_ADDRESSES_ARRAY[$INDEX]} - echo "Used contract address: $CONTRACT_ADDRESS" CHAIN_RPC_ENDPOINTS_ARRAY=($(echo "$CHAIN_RPC_ENDPOINTS" | jq -r '.[]')) @@ -37,7 +34,6 @@ wget http://network-files:3006/etherrouter-address.json # Write to env file... echo "CHAIN_NETWORK_CONTRACT=`jq -r .etherRouterAddress etherrouter-address.json`" >> apps/proxy-chain/.env -echo "CONTRACT_ADDRESS=$CONTRACT_ADDRESS" >> apps/proxy-chain/.env echo "CHAIN_RPC_ENDPOINT=$CHAIN_RPC_ENDPOINT" >> apps/proxy-chain/.env echo "STATS_PORT=$STATS_PORT" >> apps/proxy-chain/.env diff --git a/src/components/v5/common/ActionSidebar/utils.ts b/src/components/v5/common/ActionSidebar/utils.ts index e0846fcfa32..8a18316483a 100644 --- a/src/components/v5/common/ActionSidebar/utils.ts +++ b/src/components/v5/common/ActionSidebar/utils.ts @@ -20,6 +20,7 @@ import { GROUP_ADMIN_LIST, } from './partials/ManageColonyGroup/GroupList.ts'; import { GROUP_LIST } from './partials/PaymentGroup/GroupList.ts'; +import { type UserSearchSelectOption } from './partials/UserSelect/types.ts'; export const translateAction = (action?: Action) => { const actionName = action @@ -200,7 +201,7 @@ export const getActionGroup = (actionType: Action) => { export const formatMembersSelectOptions = ( members: ColonyContributorFragment[], isVerified = true, -): SearchSelectOption[] => { +): SearchSelectOption[] => { return members.map((member, index) => { const { walletAddress, profile } = member.user || {}; diff --git a/src/constants/proxyColonies.ts b/src/constants/proxyColonies.ts index 99efec22799..612d3f95ac9 100644 --- a/src/constants/proxyColonies.ts +++ b/src/constants/proxyColonies.ts @@ -7,17 +7,20 @@ import PolygonIcon from '~icons/PolygonIcon.tsx'; import { type SupportedChain } from '~types/proxyColonies.ts'; // @TODO this probably needs to be setup more dynamically, but let's hardcode it for now -const ETHEREUM_NETWORK = { - name: 'Ethereum', - chainId: 265669101, - icon: EthereumIcon, -}; const POLYGON_NETWORK = { name: 'Polygon', - chainId: 265669102, + chainId: 265669101, icon: PolygonIcon, }; +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const ETHEREUM_NETWORK = { + name: 'Ethereum', + chainId: 265669102, + icon: EthereumIcon, +}; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars const BASE_NETWORK = { name: 'Base', chainId: 265669103, @@ -25,12 +28,15 @@ const BASE_NETWORK = { isDisabled: true, }; +// eslint-disable-next-line @typescript-eslint/no-unused-vars const OPTIMISM_NETWORK = { name: 'Optimism', chainId: 265669104, icon: OptimismIcon, isDisabled: true, }; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars const AVALANCHE_NETWORK = { name: 'Avalanche', chainId: 265669105, @@ -38,6 +44,7 @@ const AVALANCHE_NETWORK = { isDisabled: true, }; +// eslint-disable-next-line @typescript-eslint/no-unused-vars const BINANCE_NETWORK = { name: 'Binance', chainId: 265669106, @@ -45,11 +52,4 @@ const BINANCE_NETWORK = { isDisabled: true, }; -export const SUPPORTED_CHAINS: SupportedChain[] = [ - ETHEREUM_NETWORK, - POLYGON_NETWORK, - BASE_NETWORK, - OPTIMISM_NETWORK, - AVALANCHE_NETWORK, - BINANCE_NETWORK, -]; +export const SUPPORTED_CHAINS: SupportedChain[] = [POLYGON_NETWORK]; From f24d5a137be17a073b791f6a51a7aeb695c2596c Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Wed, 22 Jan 2025 13:29:36 +0100 Subject: [PATCH 40/44] Feat: Fetch available chains from DB and update SUPPORTED_CHAINS config Feat: Fetch available chains from DB and update SUPPORTED_CHAINS config --- .../colonycdapp/schema/proxyColonies.graphql | 11 ++ .../helpers/mapItemToMessageFormat.tsx | 2 +- .../ManageSupportedChainsDescription.tsx | 2 +- .../partials/ChainSelect/hooks.ts | 35 ++-- .../ManageSupportedChain.tsx | 2 +- src/constants/index.ts | 30 ++++ src/constants/proxyColonies.ts | 67 ++------ src/graphql/fragments/proxyColonies.graphql | 5 + src/graphql/generated.ts | 159 ++++++++++++++++++ src/graphql/queries/proxyColonies.graphql | 8 + src/utils/proxyColonies.ts | 2 +- 11 files changed, 254 insertions(+), 69 deletions(-) diff --git a/amplify/backend/api/colonycdapp/schema/proxyColonies.graphql b/amplify/backend/api/colonycdapp/schema/proxyColonies.graphql index 54a70db4a5b..8d672669a11 100644 --- a/amplify/backend/api/colonycdapp/schema/proxyColonies.graphql +++ b/amplify/backend/api/colonycdapp/schema/proxyColonies.graphql @@ -22,3 +22,14 @@ type ProxyColony @model { """ isActive: Boolean! } + +type SupportedChain @model { + """ + The chainId of the supported chain + """ + id: ID! + """ + A flag that tells us if the supported chain is active or not + """ + isActive: Boolean +} diff --git a/src/components/common/ColonyActions/helpers/mapItemToMessageFormat.tsx b/src/components/common/ColonyActions/helpers/mapItemToMessageFormat.tsx index 50c2c35a05c..9c4c0e88ddb 100644 --- a/src/components/common/ColonyActions/helpers/mapItemToMessageFormat.tsx +++ b/src/components/common/ColonyActions/helpers/mapItemToMessageFormat.tsx @@ -212,7 +212,7 @@ const getExpenditureStagesData = ( const getProxyColonyDeployedChain = (actionData: ColonyAction) => { const chainInfo = findSupportedChain(actionData?.targetChainId); - return chainInfo?.name; + return chainInfo?.shortName; }; export const useMapColonyActionToExpectedFormat = ({ diff --git a/src/components/v5/common/ActionSidebar/partials/ActionSidebarDescription/partials/ManageSupportedChainsDescription.tsx b/src/components/v5/common/ActionSidebar/partials/ActionSidebarDescription/partials/ManageSupportedChainsDescription.tsx index 4ef049b8214..09f9bb4ddf3 100644 --- a/src/components/v5/common/ActionSidebar/partials/ActionSidebarDescription/partials/ManageSupportedChainsDescription.tsx +++ b/src/components/v5/common/ActionSidebar/partials/ActionSidebarDescription/partials/ManageSupportedChainsDescription.tsx @@ -40,7 +40,7 @@ export const ManageSupportedChainsDescription = () => { { - const chainOptions = useMemo( - () => - SUPPORTED_CHAINS.map(({ icon, chainId, name, isDisabled }) => ({ - icon, - isDisabled, - value: chainId, - label: name, - })).filter((option) => filterOptionsFn && filterOptionsFn(option)), - [filterOptionsFn], - ); + const { data } = useGetSupportedChainsQuery(); + + const chainOptions = useMemo(() => { + return (data?.listSupportedChains?.items ?? []) + .map((chain) => { + const chainConfig = SUPPORTED_CHAINS.find( + (supportedChain) => supportedChain.chainId === chain?.id, + ); + if (!chainConfig) { + return null; + } + + return { + icon: chainConfig.icon ?? GanacheIcon, + isDisabled: !chain?.isActive, + value: chainConfig.chainId, + label: chainConfig.shortName, + }; + }) + .filter(notNull) + .filter((option) => filterOptionsFn && filterOptionsFn(option)); + }, [data, filterOptionsFn]); return chainOptions; }; diff --git a/src/components/v5/common/CompletedAction/partials/ManageSupportedChain/ManageSupportedChain.tsx b/src/components/v5/common/CompletedAction/partials/ManageSupportedChain/ManageSupportedChain.tsx index faad55b1843..5573317769f 100644 --- a/src/components/v5/common/CompletedAction/partials/ManageSupportedChain/ManageSupportedChain.tsx +++ b/src/components/v5/common/CompletedAction/partials/ManageSupportedChain/ManageSupportedChain.tsx @@ -75,7 +75,7 @@ const ManageSupportedChain: FC = ({ action }) => { }, { actionType: action.type, - chain: chainInfo?.name, + chain: chainInfo?.shortName, initiator: initiatorUser || initiatorAddress ? ( ; }; +export type CreateSupportedChainInput = { + id?: InputMaybe; + isActive?: InputMaybe; +}; + export type CreateTokenExchangeRateInput = { date: Scalars['AWSDateTime']; id?: InputMaybe; @@ -2224,6 +2229,10 @@ export type DeleteStreamingPaymentMetadataInput = { id: Scalars['ID']; }; +export type DeleteSupportedChainInput = { + id: Scalars['ID']; +}; + export type DeleteTokenExchangeRateInput = { id: Scalars['ID']; }; @@ -4849,6 +4858,13 @@ export type ModelSubscriptionStringInput = { notIn?: InputMaybe>>; }; +export type ModelSubscriptionSupportedChainFilterInput = { + and?: InputMaybe>>; + id?: InputMaybe; + isActive?: InputMaybe; + or?: InputMaybe>>; +}; + export type ModelSubscriptionTokenExchangeRateFilterInput = { and?: InputMaybe>>; date?: InputMaybe; @@ -4941,6 +4957,27 @@ export type ModelSubscriptionVoterRewardsHistoryFilterInput = { userAddress?: InputMaybe; }; +export type ModelSupportedChainConditionInput = { + and?: InputMaybe>>; + isActive?: InputMaybe; + not?: InputMaybe; + or?: InputMaybe>>; +}; + +export type ModelSupportedChainConnection = { + __typename?: 'ModelSupportedChainConnection'; + items: Array>; + nextToken?: Maybe; +}; + +export type ModelSupportedChainFilterInput = { + and?: InputMaybe>>; + id?: InputMaybe; + isActive?: InputMaybe; + not?: InputMaybe; + or?: InputMaybe>>; +}; + export type ModelSupportedCurrenciesInput = { eq?: InputMaybe; ne?: InputMaybe; @@ -5433,6 +5470,7 @@ export type Mutation = { createSafeTransactionData?: Maybe; createStreamingPayment?: Maybe; createStreamingPaymentMetadata?: Maybe; + createSupportedChain?: Maybe; createToken?: Maybe; createTokenExchangeRate?: Maybe; createTransaction?: Maybe; @@ -5482,6 +5520,7 @@ export type Mutation = { deleteSafeTransactionData?: Maybe; deleteStreamingPayment?: Maybe; deleteStreamingPaymentMetadata?: Maybe; + deleteSupportedChain?: Maybe; deleteToken?: Maybe; deleteTokenExchangeRate?: Maybe; deleteTransaction?: Maybe; @@ -5531,6 +5570,7 @@ export type Mutation = { updateSafeTransactionData?: Maybe; updateStreamingPayment?: Maybe; updateStreamingPaymentMetadata?: Maybe; + updateSupportedChain?: Maybe; updateToken?: Maybe; updateTokenExchangeRate?: Maybe; updateTransaction?: Maybe; @@ -5833,6 +5873,13 @@ export type MutationCreateStreamingPaymentMetadataArgs = { }; +/** Root mutation type */ +export type MutationCreateSupportedChainArgs = { + condition?: InputMaybe; + input: CreateSupportedChainInput; +}; + + /** Root mutation type */ export type MutationCreateTokenArgs = { condition?: InputMaybe; @@ -6160,6 +6207,13 @@ export type MutationDeleteStreamingPaymentMetadataArgs = { }; +/** Root mutation type */ +export type MutationDeleteSupportedChainArgs = { + condition?: InputMaybe; + input: DeleteSupportedChainInput; +}; + + /** Root mutation type */ export type MutationDeleteTokenArgs = { condition?: InputMaybe; @@ -6487,6 +6541,13 @@ export type MutationUpdateStreamingPaymentMetadataArgs = { }; +/** Root mutation type */ +export type MutationUpdateSupportedChainArgs = { + condition?: InputMaybe; + input: UpdateSupportedChainInput; +}; + + /** Root mutation type */ export type MutationUpdateTokenArgs = { condition?: InputMaybe; @@ -6904,6 +6965,7 @@ export type Query = { getSafeTransactionStatus?: Maybe>; getStreamingPayment?: Maybe; getStreamingPaymentMetadata?: Maybe; + getSupportedChain?: Maybe; getToken?: Maybe; getTokenByAddress?: Maybe; getTokenExchangeRate?: Maybe; @@ -6969,6 +7031,7 @@ export type Query = { listSafeTransactions?: Maybe; listStreamingPaymentMetadata?: Maybe; listStreamingPayments?: Maybe; + listSupportedChains?: Maybe; listTokenExchangeRates?: Maybe; listTokens?: Maybe; listTransactions?: Maybe; @@ -7657,6 +7720,12 @@ export type QueryGetStreamingPaymentMetadataArgs = { }; +/** Root query type */ +export type QueryGetSupportedChainArgs = { + id: Scalars['ID']; +}; + + /** Root query type */ export type QueryGetTokenArgs = { id: Scalars['ID']; @@ -8134,6 +8203,14 @@ export type QueryListStreamingPaymentsArgs = { }; +/** Root query type */ +export type QueryListSupportedChainsArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + nextToken?: InputMaybe; +}; + + /** Root query type */ export type QueryListTokenExchangeRatesArgs = { filter?: InputMaybe; @@ -8734,6 +8811,7 @@ export type Subscription = { onCreateSafeTransactionData?: Maybe; onCreateStreamingPayment?: Maybe; onCreateStreamingPaymentMetadata?: Maybe; + onCreateSupportedChain?: Maybe; onCreateToken?: Maybe; onCreateTokenExchangeRate?: Maybe; onCreateTransaction?: Maybe; @@ -8779,6 +8857,7 @@ export type Subscription = { onDeleteSafeTransactionData?: Maybe; onDeleteStreamingPayment?: Maybe; onDeleteStreamingPaymentMetadata?: Maybe; + onDeleteSupportedChain?: Maybe; onDeleteToken?: Maybe; onDeleteTokenExchangeRate?: Maybe; onDeleteTransaction?: Maybe; @@ -8824,6 +8903,7 @@ export type Subscription = { onUpdateSafeTransactionData?: Maybe; onUpdateStreamingPayment?: Maybe; onUpdateStreamingPaymentMetadata?: Maybe; + onUpdateSupportedChain?: Maybe; onUpdateToken?: Maybe; onUpdateTokenExchangeRate?: Maybe; onUpdateTransaction?: Maybe; @@ -9024,6 +9104,11 @@ export type SubscriptionOnCreateStreamingPaymentMetadataArgs = { }; +export type SubscriptionOnCreateSupportedChainArgs = { + filter?: InputMaybe; +}; + + export type SubscriptionOnCreateTokenArgs = { filter?: InputMaybe; }; @@ -9249,6 +9334,11 @@ export type SubscriptionOnDeleteStreamingPaymentMetadataArgs = { }; +export type SubscriptionOnDeleteSupportedChainArgs = { + filter?: InputMaybe; +}; + + export type SubscriptionOnDeleteTokenArgs = { filter?: InputMaybe; }; @@ -9474,6 +9564,11 @@ export type SubscriptionOnUpdateStreamingPaymentMetadataArgs = { }; +export type SubscriptionOnUpdateSupportedChainArgs = { + filter?: InputMaybe; +}; + + export type SubscriptionOnUpdateTokenArgs = { filter?: InputMaybe; }; @@ -9508,6 +9603,16 @@ export type SubscriptionOnUpdateVoterRewardsHistoryArgs = { filter?: InputMaybe; }; +export type SupportedChain = { + __typename?: 'SupportedChain'; + createdAt: Scalars['AWSDateTime']; + /** The chainId of the supported chain */ + id: Scalars['ID']; + /** A flag that tells us if the supported chain is active or not */ + isActive?: Maybe; + updatedAt: Scalars['AWSDateTime']; +}; + /** Represents the currencies/tokens that users' balances can be converted to (for display purposes) */ export enum SupportedCurrencies { Brl = 'BRL', @@ -10230,6 +10335,11 @@ export type UpdateStreamingPaymentMetadataInput = { limitAmount?: InputMaybe; }; +export type UpdateSupportedChainInput = { + id: Scalars['ID']; + isActive?: InputMaybe; +}; + export type UpdateTokenExchangeRateInput = { date?: InputMaybe; id: Scalars['ID']; @@ -10626,6 +10736,8 @@ export type LiquidationAddressFragment = { __typename?: 'LiquidationAddress', id export type ProxyColonyFragment = { __typename?: 'ProxyColony', id: string, colonyAddress: string, chainId: string, isActive: boolean }; +export type SupportedChainFragment = { __typename?: 'SupportedChain', id: string, isActive?: boolean | null }; + export type ColonyUserRoleFragment = { __typename?: 'ColonyRole', id: string, targetAddress: string, role_1?: boolean | null, role_2?: boolean | null, role_3?: boolean | null, role_5?: boolean | null, role_6?: boolean | null, targetUser?: { __typename?: 'User', bridgeCustomerId?: string | null, walletAddress: string, profile?: { __typename?: 'Profile', avatar?: string | null, bio?: string | null, displayName?: string | null, displayNameChanged?: string | null, email?: string | null, location?: string | null, thumbnail?: string | null, website?: string | null, preferredCurrency?: SupportedCurrencies | null, isAutoOfframpEnabled?: boolean | null, meta?: { __typename?: 'ProfileMetadata', metatransactionsEnabled?: boolean | null, decentralizedModeEnabled?: boolean | null, customRpc?: string | null } | null } | null, privateBetaInviteCode?: { __typename?: 'PrivateBetaInviteCode', id: string, shareableInvites?: number | null } | null, notificationsData?: { __typename?: 'NotificationsData', magicbellUserId: string, notificationsDisabled: boolean, mutedColonyAddresses: Array, paymentNotificationsDisabled: boolean, mentionNotificationsDisabled: boolean, adminNotificationsDisabled: boolean } | null } | null }; export type NftDataFragment = { __typename?: 'NFTData', address: string, description?: string | null, id: string, imageUri?: string | null, logoUri: string, name?: string | null, tokenName: string, tokenSymbol: string, uri: string }; @@ -11248,6 +11360,11 @@ export type GetProxyColoniesQueryVariables = Exact<{ export type GetProxyColoniesQuery = { __typename?: 'Query', getProxyColoniesByColonyAddress?: { __typename?: 'ModelProxyColonyConnection', items: Array<{ __typename?: 'ProxyColony', id: string, colonyAddress: string, chainId: string, isActive: boolean } | null> } | null }; +export type GetSupportedChainsQueryVariables = Exact<{ [key: string]: never; }>; + + +export type GetSupportedChainsQuery = { __typename?: 'Query', listSupportedChains?: { __typename?: 'ModelSupportedChainConnection', items: Array<{ __typename?: 'SupportedChain', id: string, isActive?: boolean | null } | null> } | null }; + export type GetColonyHistoricRoleRolesQueryVariables = Exact<{ id: Scalars['ID']; }>; @@ -12045,6 +12162,12 @@ export const ProxyColonyFragmentDoc = gql` isActive } `; +export const SupportedChainFragmentDoc = gql` + fragment SupportedChain on SupportedChain { + id + isActive +} + `; export const ColonyUserRoleFragmentDoc = gql` fragment ColonyUserRole on ColonyRole { id @@ -15708,6 +15831,42 @@ export function useGetProxyColoniesLazyQuery(baseOptions?: Apollo.LazyQueryHookO export type GetProxyColoniesQueryHookResult = ReturnType; export type GetProxyColoniesLazyQueryHookResult = ReturnType; export type GetProxyColoniesQueryResult = Apollo.QueryResult; +export const GetSupportedChainsDocument = gql` + query GetSupportedChains { + listSupportedChains { + items { + ...SupportedChain + } + } +} + ${SupportedChainFragmentDoc}`; + +/** + * __useGetSupportedChainsQuery__ + * + * To run a query within a React component, call `useGetSupportedChainsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetSupportedChainsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetSupportedChainsQuery({ + * variables: { + * }, + * }); + */ +export function useGetSupportedChainsQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetSupportedChainsDocument, options); + } +export function useGetSupportedChainsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetSupportedChainsDocument, options); + } +export type GetSupportedChainsQueryHookResult = ReturnType; +export type GetSupportedChainsLazyQueryHookResult = ReturnType; +export type GetSupportedChainsQueryResult = Apollo.QueryResult; export const GetColonyHistoricRoleRolesDocument = gql` query GetColonyHistoricRoleRoles($id: ID!) { getColonyHistoricRole(id: $id) { diff --git a/src/graphql/queries/proxyColonies.graphql b/src/graphql/queries/proxyColonies.graphql index b81f6b87a90..41b8f2cf00a 100644 --- a/src/graphql/queries/proxyColonies.graphql +++ b/src/graphql/queries/proxyColonies.graphql @@ -5,3 +5,11 @@ query GetProxyColonies($colonyAddress: ID!) { } } } + +query GetSupportedChains { + listSupportedChains { + items { + ...SupportedChain + } + } +} diff --git a/src/utils/proxyColonies.ts b/src/utils/proxyColonies.ts index dec58fa086b..2f973594739 100644 --- a/src/utils/proxyColonies.ts +++ b/src/utils/proxyColonies.ts @@ -7,6 +7,6 @@ export const findSupportedChain = (chainId: number | undefined | null) => { return null; } return SUPPORTED_CHAINS.find( - (supportedChain) => supportedChain.chainId === chainId, + (supportedChain) => supportedChain.chainId === chainId.toString(), ); }; From 7aaa1f6f59d40fd47bfb2769ea73aa3d835eeb85 Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Wed, 22 Jan 2025 15:03:23 +0100 Subject: [PATCH 41/44] Fix: Add AMOY_NETWORK to supported chains config Fix: Add AMOY_NETWORK to supported chains config --- src/constants/proxyColonies.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/constants/proxyColonies.ts b/src/constants/proxyColonies.ts index ff5aab84a0d..6d3e0b1fb30 100644 --- a/src/constants/proxyColonies.ts +++ b/src/constants/proxyColonies.ts @@ -1,5 +1,6 @@ import { POLYGON_NETWORK, + AMOY_NETWORK, GANACHE_NETWORK_1, GANACHE_NETWORK_2, type NetworkInfo, @@ -7,6 +8,7 @@ import { export const SUPPORTED_CHAINS: NetworkInfo[] = [ POLYGON_NETWORK, + AMOY_NETWORK, GANACHE_NETWORK_1, GANACHE_NETWORK_2, ]; From aae7706f74bfd7207817d32344518d2abd0db383 Mon Sep 17 00:00:00 2001 From: Mihaela-Ioana Mot <32430018+mmioana@users.noreply.github.com> Date: Wed, 22 Jan 2025 15:09:45 +0100 Subject: [PATCH 42/44] Chore: Update block ingestors hash Chore: Update block ingestors hash --- docker/colony-cdapp-dev-env-proxy-block-ingestor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/colony-cdapp-dev-env-proxy-block-ingestor b/docker/colony-cdapp-dev-env-proxy-block-ingestor index 2fb0c2f1fcb..2d8f7d9b62a 100644 --- a/docker/colony-cdapp-dev-env-proxy-block-ingestor +++ b/docker/colony-cdapp-dev-env-proxy-block-ingestor @@ -1,7 +1,7 @@ FROM colony-cdapp-dev-env/base:latest # @TODO maybe add a PROXY_BLOCK_INGESTOR_HASH and fallback to BLOCK_INGESTOR_HASH -ENV BLOCK_INGESTOR_HASH=983e0b68472b8f7f7406352679e29b2d2d4d49c0 +ENV BLOCK_INGESTOR_HASH=4ac06d5744f8ada7b80047afd586da4d82898436 ENV CHAIN_RPC_ENDPOINTS='["http://network-contracts-remote:8545", "http://network-contracts-remote-2:8545"]' ENV STATS_PORTS='["10002", "10003"]' From f572f9b87b8c80005ebe56b4ff695b970e812f18 Mon Sep 17 00:00:00 2001 From: Bassgeta Date: Tue, 28 Jan 2025 16:09:15 +0100 Subject: [PATCH 43/44] feat: decouple multiChainInfo to a new model --- .../api/colonycdapp/schema/schema.graphql | 15 +- .../colony-cdapp-dev-env-proxy-block-ingestor | 2 +- src/graphql/generated.ts | 133 ++++++++++++++++-- 3 files changed, 138 insertions(+), 12 deletions(-) diff --git a/amplify/backend/api/colonycdapp/schema/schema.graphql b/amplify/backend/api/colonycdapp/schema/schema.graphql index b6a8b712d15..aec0441487a 100644 --- a/amplify/backend/api/colonycdapp/schema/schema.graphql +++ b/amplify/backend/api/colonycdapp/schema/schema.graphql @@ -3580,9 +3580,13 @@ type ColonyAction @model @searchable { expenditureSlotIds: [Int!] arbitraryTransactions: [ColonyActionArbitraryTransaction!] """ + The id of the multichain info entry + """ + multiChainInfoId: ID + """ Multichain info if the action is bridged """ - multiChainInfo: MultiChainInfo + multiChainInfo: MultiChainInfo @hasOne(fields: ["multiChainInfoId"]) """ Target chain id if the action is on a proxy colony chain """ @@ -3597,8 +3601,13 @@ type ColonyAction @model @searchable { finalizedActionData: ColonyAction @hasOne(fields: ["finalizedActionId"]) } -type MultiChainInfo { - completed: Boolean! +type MultiChainInfo @model { + """ + The format is txHash_chainId + """ + id: ID! + completedOnMainChain: Boolean! + completedOnProxyChain: Boolean! wormholeInfo: ActionWormholeInfo } diff --git a/docker/colony-cdapp-dev-env-proxy-block-ingestor b/docker/colony-cdapp-dev-env-proxy-block-ingestor index 2d8f7d9b62a..5bbc1a1c3e1 100644 --- a/docker/colony-cdapp-dev-env-proxy-block-ingestor +++ b/docker/colony-cdapp-dev-env-proxy-block-ingestor @@ -1,7 +1,7 @@ FROM colony-cdapp-dev-env/base:latest # @TODO maybe add a PROXY_BLOCK_INGESTOR_HASH and fallback to BLOCK_INGESTOR_HASH -ENV BLOCK_INGESTOR_HASH=4ac06d5744f8ada7b80047afd586da4d82898436 +ENV BLOCK_INGESTOR_HASH=1b39cf385254c2117dff2e0e8a0c9578c549ed6e ENV CHAIN_RPC_ENDPOINTS='["http://network-contracts-remote:8545", "http://network-contracts-remote-2:8545"]' ENV STATS_PORTS='["10002", "10003"]' diff --git a/src/graphql/generated.ts b/src/graphql/generated.ts index 1ffa2607b31..1acadabc3ae 100644 --- a/src/graphql/generated.ts +++ b/src/graphql/generated.ts @@ -514,6 +514,8 @@ export type ColonyAction = { motionId?: Maybe; /** Multichain info if the action is bridged */ multiChainInfo?: Maybe; + /** The id of the multichain info entry */ + multiChainInfoId?: Maybe; /** Expanded `ColonyMultiSig` for the corresponding `multiSigId` */ multiSigData?: Maybe; /** The internal database id of the multiSig */ @@ -638,6 +640,8 @@ export enum ColonyActionType { AddVerifiedMembers = 'ADD_VERIFIED_MEMBERS', AddVerifiedMembersMotion = 'ADD_VERIFIED_MEMBERS_MOTION', AddVerifiedMembersMultisig = 'ADD_VERIFIED_MEMBERS_MULTISIG', + /** An action related to arbitrary transaction */ + ArbitraryTx = 'ARBITRARY_TX', /** An action related to canceling an expenditure */ CancelExpenditure = 'CANCEL_EXPENDITURE', /** An action related to a motion to cancel an expenditure */ @@ -1513,7 +1517,7 @@ export type CreateColonyActionInput = { members?: InputMaybe>; motionDomainId?: InputMaybe; motionId?: InputMaybe; - multiChainInfo?: InputMaybe; + multiChainInfoId?: InputMaybe; multiSigId?: InputMaybe; networkFee?: InputMaybe; newColonyVersion?: InputMaybe; @@ -1853,6 +1857,13 @@ export type CreateMotionMessageInput = { vote?: InputMaybe; }; +export type CreateMultiChainInfoInput = { + completedOnMainChain: Scalars['Boolean']; + completedOnProxyChain: Scalars['Boolean']; + id?: InputMaybe; + wormholeInfo?: InputMaybe; +}; + export type CreateMultiSigUserSignatureInput = { colonyAddress: Scalars['ID']; createdAt?: InputMaybe; @@ -2189,6 +2200,10 @@ export type DeleteMotionMessageInput = { id: Scalars['ID']; }; +export type DeleteMultiChainInfoInput = { + id: Scalars['ID']; +}; + export type DeleteMultiSigUserSignatureInput = { id: Scalars['ID']; }; @@ -2992,6 +3007,7 @@ export type ModelColonyActionConditionInput = { members?: InputMaybe; motionDomainId?: InputMaybe; motionId?: InputMaybe; + multiChainInfoId?: InputMaybe; multiSigId?: InputMaybe; networkFee?: InputMaybe; newColonyVersion?: InputMaybe; @@ -3040,6 +3056,7 @@ export type ModelColonyActionFilterInput = { members?: InputMaybe; motionDomainId?: InputMaybe; motionId?: InputMaybe; + multiChainInfoId?: InputMaybe; multiSigId?: InputMaybe; networkFee?: InputMaybe; newColonyVersion?: InputMaybe; @@ -3973,6 +3990,29 @@ export type ModelMotionMessageFilterInput = { vote?: InputMaybe; }; +export type ModelMultiChainInfoConditionInput = { + and?: InputMaybe>>; + completedOnMainChain?: InputMaybe; + completedOnProxyChain?: InputMaybe; + not?: InputMaybe; + or?: InputMaybe>>; +}; + +export type ModelMultiChainInfoConnection = { + __typename?: 'ModelMultiChainInfoConnection'; + items: Array>; + nextToken?: Maybe; +}; + +export type ModelMultiChainInfoFilterInput = { + and?: InputMaybe>>; + completedOnMainChain?: InputMaybe; + completedOnProxyChain?: InputMaybe; + id?: InputMaybe; + not?: InputMaybe; + or?: InputMaybe>>; +}; + export type ModelMultiSigUserSignatureConditionInput = { and?: InputMaybe>>; colonyAddress?: InputMaybe; @@ -4366,6 +4406,7 @@ export type ModelSubscriptionColonyActionFilterInput = { members?: InputMaybe; motionDomainId?: InputMaybe; motionId?: InputMaybe; + multiChainInfoId?: InputMaybe; multiSigId?: InputMaybe; networkFee?: InputMaybe; newColonyVersion?: InputMaybe; @@ -4737,6 +4778,14 @@ export type ModelSubscriptionMotionMessageFilterInput = { vote?: InputMaybe; }; +export type ModelSubscriptionMultiChainInfoFilterInput = { + and?: InputMaybe>>; + completedOnMainChain?: InputMaybe; + completedOnProxyChain?: InputMaybe; + id?: InputMaybe; + or?: InputMaybe>>; +}; + export type ModelSubscriptionMultiSigUserSignatureFilterInput = { and?: InputMaybe>>; colonyAddress?: InputMaybe; @@ -5371,15 +5420,15 @@ export type MotionStateHistoryInput = { export type MultiChainInfo = { __typename?: 'MultiChainInfo'; - completed: Scalars['Boolean']; + completedOnMainChain: Scalars['Boolean']; + completedOnProxyChain: Scalars['Boolean']; + createdAt: Scalars['AWSDateTime']; + /** The format is txHash_chainId */ + id: Scalars['ID']; + updatedAt: Scalars['AWSDateTime']; wormholeInfo?: Maybe; }; -export type MultiChainInfoInput = { - completed: Scalars['Boolean']; - wormholeInfo?: InputMaybe; -}; - export type MultiSigDomainConfig = { __typename?: 'MultiSigDomainConfig'; domainId: Scalars['ID']; @@ -5460,6 +5509,7 @@ export type Mutation = { createIngestorStats?: Maybe; createLiquidationAddress?: Maybe; createMotionMessage?: Maybe; + createMultiChainInfo?: Maybe; createMultiSigUserSignature?: Maybe; createNotificationsData?: Maybe; createPrivateBetaInviteCode?: Maybe; @@ -5510,6 +5560,7 @@ export type Mutation = { deleteIngestorStats?: Maybe; deleteLiquidationAddress?: Maybe; deleteMotionMessage?: Maybe; + deleteMultiChainInfo?: Maybe; deleteMultiSigUserSignature?: Maybe; deleteNotificationsData?: Maybe; deletePrivateBetaInviteCode?: Maybe; @@ -5560,6 +5611,7 @@ export type Mutation = { updateIngestorStats?: Maybe; updateLiquidationAddress?: Maybe; updateMotionMessage?: Maybe; + updateMultiChainInfo?: Maybe; updateMultiSigUserSignature?: Maybe; updateNotificationsData?: Maybe; updatePrivateBetaInviteCode?: Maybe; @@ -5803,6 +5855,13 @@ export type MutationCreateMotionMessageArgs = { }; +/** Root mutation type */ +export type MutationCreateMultiChainInfoArgs = { + condition?: InputMaybe; + input: CreateMultiChainInfoInput; +}; + + /** Root mutation type */ export type MutationCreateMultiSigUserSignatureArgs = { condition?: InputMaybe; @@ -6137,6 +6196,13 @@ export type MutationDeleteMotionMessageArgs = { }; +/** Root mutation type */ +export type MutationDeleteMultiChainInfoArgs = { + condition?: InputMaybe; + input: DeleteMultiChainInfoInput; +}; + + /** Root mutation type */ export type MutationDeleteMultiSigUserSignatureArgs = { condition?: InputMaybe; @@ -6471,6 +6537,13 @@ export type MutationUpdateMotionMessageArgs = { }; +/** Root mutation type */ +export type MutationUpdateMultiChainInfoArgs = { + condition?: InputMaybe; + input: UpdateMultiChainInfoInput; +}; + + /** Root mutation type */ export type MutationUpdateMultiSigUserSignatureArgs = { condition?: InputMaybe; @@ -6944,6 +7017,7 @@ export type Query = { /** Get the timeout for the current period of a motion */ getMotionTimeoutPeriods?: Maybe; getMotionVoterRewards?: Maybe; + getMultiChainInfo?: Maybe; getMultiSigByColonyAddress?: Maybe; getMultiSigByExpenditureId?: Maybe; getMultiSigByTransactionHash?: Maybe; @@ -7021,6 +7095,7 @@ export type Query = { listIngestorStats?: Maybe; listLiquidationAddresses?: Maybe; listMotionMessages?: Maybe; + listMultiChainInfos?: Maybe; listMultiSigUserSignatures?: Maybe; listNotificationsData?: Maybe; listPrivateBetaInviteCodes?: Maybe; @@ -7551,6 +7626,12 @@ export type QueryGetMotionVoterRewardsArgs = { }; +/** Root query type */ +export type QueryGetMultiChainInfoArgs = { + id: Scalars['ID']; +}; + + /** Root query type */ export type QueryGetMultiSigByColonyAddressArgs = { colonyAddress: Scalars['ID']; @@ -8121,6 +8202,14 @@ export type QueryListMotionMessagesArgs = { }; +/** Root query type */ +export type QueryListMultiChainInfosArgs = { + filter?: InputMaybe; + limit?: InputMaybe; + nextToken?: InputMaybe; +}; + + /** Root query type */ export type QueryListMultiSigUserSignaturesArgs = { filter?: InputMaybe; @@ -8428,6 +8517,7 @@ export enum SearchableColonyActionAggregateField { Members = 'members', MotionDomainId = 'motionDomainId', MotionId = 'motionId', + MultiChainInfoId = 'multiChainInfoId', MultiSigId = 'multiSigId', NetworkFee = 'networkFee', NewColonyVersion = 'newColonyVersion', @@ -8483,6 +8573,7 @@ export type SearchableColonyActionFilterInput = { members?: InputMaybe; motionDomainId?: InputMaybe; motionId?: InputMaybe; + multiChainInfoId?: InputMaybe; multiSigId?: InputMaybe; networkFee?: InputMaybe; newColonyVersion?: InputMaybe; @@ -8530,6 +8621,7 @@ export enum SearchableColonyActionSortableFields { Members = 'members', MotionDomainId = 'motionDomainId', MotionId = 'motionId', + MultiChainInfoId = 'multiChainInfoId', MultiSigId = 'multiSigId', NetworkFee = 'networkFee', NewColonyVersion = 'newColonyVersion', @@ -8801,6 +8893,7 @@ export type Subscription = { onCreateIngestorStats?: Maybe; onCreateLiquidationAddress?: Maybe; onCreateMotionMessage?: Maybe; + onCreateMultiChainInfo?: Maybe; onCreateMultiSigUserSignature?: Maybe; onCreateNotificationsData?: Maybe; onCreatePrivateBetaInviteCode?: Maybe; @@ -8847,6 +8940,7 @@ export type Subscription = { onDeleteIngestorStats?: Maybe; onDeleteLiquidationAddress?: Maybe; onDeleteMotionMessage?: Maybe; + onDeleteMultiChainInfo?: Maybe; onDeleteMultiSigUserSignature?: Maybe; onDeleteNotificationsData?: Maybe; onDeletePrivateBetaInviteCode?: Maybe; @@ -8893,6 +8987,7 @@ export type Subscription = { onUpdateIngestorStats?: Maybe; onUpdateLiquidationAddress?: Maybe; onUpdateMotionMessage?: Maybe; + onUpdateMultiChainInfo?: Maybe; onUpdateMultiSigUserSignature?: Maybe; onUpdateNotificationsData?: Maybe; onUpdatePrivateBetaInviteCode?: Maybe; @@ -9054,6 +9149,11 @@ export type SubscriptionOnCreateMotionMessageArgs = { }; +export type SubscriptionOnCreateMultiChainInfoArgs = { + filter?: InputMaybe; +}; + + export type SubscriptionOnCreateMultiSigUserSignatureArgs = { filter?: InputMaybe; }; @@ -9284,6 +9384,11 @@ export type SubscriptionOnDeleteMotionMessageArgs = { }; +export type SubscriptionOnDeleteMultiChainInfoArgs = { + filter?: InputMaybe; +}; + + export type SubscriptionOnDeleteMultiSigUserSignatureArgs = { filter?: InputMaybe; }; @@ -9514,6 +9619,11 @@ export type SubscriptionOnUpdateMotionMessageArgs = { }; +export type SubscriptionOnUpdateMultiChainInfoArgs = { + filter?: InputMaybe; +}; + + export type SubscriptionOnUpdateMultiSigUserSignatureArgs = { filter?: InputMaybe; }; @@ -9895,7 +10005,7 @@ export type UpdateColonyActionInput = { members?: InputMaybe>; motionDomainId?: InputMaybe; motionId?: InputMaybe; - multiChainInfo?: InputMaybe; + multiChainInfoId?: InputMaybe; multiSigId?: InputMaybe; networkFee?: InputMaybe; newColonyVersion?: InputMaybe; @@ -10241,6 +10351,13 @@ export type UpdateMotionMessageInput = { vote?: InputMaybe; }; +export type UpdateMultiChainInfoInput = { + completedOnMainChain?: InputMaybe; + completedOnProxyChain?: InputMaybe; + id: Scalars['ID']; + wormholeInfo?: InputMaybe; +}; + export type UpdateMultiSigUserSignatureInput = { colonyAddress?: InputMaybe; createdAt?: InputMaybe; From 57b1137521a99618df18eaa80da79f1ab496200e Mon Sep 17 00:00:00 2001 From: Sam Gibbs <34915414+iamsamgibbs@users.noreply.github.com> Date: Tue, 4 Feb 2025 16:38:50 +0000 Subject: [PATCH 44/44] Fix: yield put in createProxy saga --- docker/colony-cdapp-dev-env-block-ingestor | 2 +- docker/colony-cdapp-dev-env-proxy-block-ingestor | 2 +- src/redux/sagas/proxyColonies/createProxyColony.ts | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/colony-cdapp-dev-env-block-ingestor b/docker/colony-cdapp-dev-env-block-ingestor index 57d14f8a852..6b444039a83 100644 --- a/docker/colony-cdapp-dev-env-block-ingestor +++ b/docker/colony-cdapp-dev-env-block-ingestor @@ -1,6 +1,6 @@ FROM colony-cdapp-dev-env/base:latest -ENV BLOCK_INGESTOR_HASH=844f5a387f7d2bb22c47bbc1b26d8eba4daf10e3 +ENV BLOCK_INGESTOR_HASH=71d4194a488cd8e15682df2c792ffe40056192d0 # Declare volumes to set up metadata VOLUME [ "/colonyCDapp/amplify/mock-data" ] diff --git a/docker/colony-cdapp-dev-env-proxy-block-ingestor b/docker/colony-cdapp-dev-env-proxy-block-ingestor index 5bbc1a1c3e1..c665a67e35e 100644 --- a/docker/colony-cdapp-dev-env-proxy-block-ingestor +++ b/docker/colony-cdapp-dev-env-proxy-block-ingestor @@ -1,7 +1,7 @@ FROM colony-cdapp-dev-env/base:latest # @TODO maybe add a PROXY_BLOCK_INGESTOR_HASH and fallback to BLOCK_INGESTOR_HASH -ENV BLOCK_INGESTOR_HASH=1b39cf385254c2117dff2e0e8a0c9578c549ed6e +ENV BLOCK_INGESTOR_HASH=71d4194a488cd8e15682df2c792ffe40056192d0 ENV CHAIN_RPC_ENDPOINTS='["http://network-contracts-remote:8545", "http://network-contracts-remote-2:8545"]' ENV STATS_PORTS='["10002", "10003"]' diff --git a/src/redux/sagas/proxyColonies/createProxyColony.ts b/src/redux/sagas/proxyColonies/createProxyColony.ts index 9bd47e71970..0420a3bacad 100644 --- a/src/redux/sagas/proxyColonies/createProxyColony.ts +++ b/src/redux/sagas/proxyColonies/createProxyColony.ts @@ -105,13 +105,13 @@ function* createProxyColony({ gasLimit: BigInt(10_000_000), }); - put(transactionSent(metaId)); + yield put(transactionSent(metaId)); if (!transaction || !transaction.blockHash || !transaction.blockNumber) { throw new Error('Invalid transaction'); // @TODO add more info } - put( + yield put( transactionHashReceived(metaId, { hash: transaction.hash, blockNumber: transaction.blockNumber, @@ -124,8 +124,8 @@ function* createProxyColony({ const [eventData, receipt] = yield waitForMined(); - put(transactionReceiptReceived(metaId, { params, receipt })); - put(transactionSucceeded(metaId, { eventData, receipt, params })); + yield put(transactionReceiptReceived(metaId, { params, receipt })); + yield put(transactionSucceeded(metaId, { eventData, receipt, params })); if (annotationMessage) { yield takeFrom(