+ ),
+ },
{
title: turboIntegrations.starter.name,
description: turboIntegrations.starter.description,
diff --git a/data/turbo-integrations.ts b/data/turbo-integrations.ts
index 4d26d3ff..4422d7c6 100644
--- a/data/turbo-integrations.ts
+++ b/data/turbo-integrations.ts
@@ -208,6 +208,15 @@ export const turboIntegrations = {
category: "services",
imgDark: "/integrations/defi-llama.png",
},
+ tally: {
+ name: "Tally",
+ href: "/integration/tally",
+ url: "https://docs.tally.xyz",
+ description: "Tally is a frontend for onchain decentralized organizations.",
+ category: "services",
+ imgLight: "/integrations/tally.png",
+ imgDark: "/integrations/tally.png",
+ },
starter: {
name: "Starter Template",
href: "/integration/starter",
diff --git a/integrations/tally/autogen/schema.ts b/integrations/tally/autogen/schema.ts
new file mode 100644
index 00000000..349abc82
--- /dev/null
+++ b/integrations/tally/autogen/schema.ts
@@ -0,0 +1,2030 @@
+export type Maybe = T | null
+export type InputMaybe = Maybe
+export type Exact = {
+ [K in keyof T]: T[K]
+}
+export type MakeOptional = Omit & {
+ [SubKey in K]?: Maybe
+}
+export type MakeMaybe = Omit & {
+ [SubKey in K]: Maybe
+}
+/** All built-in and custom scalars, mapped to their actual values */
+export type Scalars = {
+ ID: string
+ String: string
+ Boolean: boolean
+ Int: number
+ Float: number
+ AccountID: string
+ Address: string
+ AssetID: string
+ BigInt: string
+ BlockID: any
+ Bytes: string
+ Bytes32: string
+ ChainID: string
+ Cursor: any
+ HashID: any
+ Long: number
+ Timestamp: string
+ Upload: any
+}
+
+/** Key for use with this API. See https://docs.tally.xyz/tally-api/welcome#request-an-api-key for how to request & use! */
+export type ApiKey = {
+ /** Last four characters of original generated key */
+ lastFour: Scalars["String"]
+ /** User generated name to differentiate keys */
+ name: Scalars["String"]
+}
+
+/** A Blockchain `Account` with its associated metadata, participations and activity. */
+export type Account = {
+ /** AccountActivity (votes, proposals created, etc). Currently only supports on chain governance. */
+ activity?: Maybe>
+ /** EVM Address for this `Account` */
+ address: Scalars["Address"]
+ /** List of APIKeys generated for this account. See https://docs.tally.xyz/tally-api/welcome#request-an-api-key for how to request & use! */
+ apiKeys?: Maybe>
+ /** `Account` bio set on Tally */
+ bio: Scalars["String"]
+ /** `Account` email set on Tally */
+ email: Scalars["String"]
+ /** Ethereum Name Service Name */
+ ens?: Maybe
+ /** Feature flags */
+ features?: Maybe>
+ id: Scalars["ID"]
+ /**
+ * Linked Identities: i.e. ENS, Twitter stored in Tally
+ * @deprecated ens, twitter available on `Account` type
+ */
+ identities?: Maybe
+ /** `Account` name set on Tally */
+ name: Scalars["String"]
+ /** Organizations the Account is a member of. Can be filtered to get only specific roles. */
+ organizations?: Maybe>
+ otherLinks?: Maybe>>
+ /** Governances where an `Account` has a token balance or delegations along with `Account` `Participation`: votes, proposals, stats, delegations, etc. */
+ participations: Array
+ /** Picture URL */
+ picture?: Maybe
+ /** Twitter handle */
+ twitter?: Maybe
+}
+
+/** A Blockchain `Account` with its associated metadata, participations and activity. */
+export type AccountActivityArgs = {
+ governanceIds?: InputMaybe>
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+/** A Blockchain `Account` with its associated metadata, participations and activity. */
+export type AccountOrganizationsArgs = {
+ pagination?: InputMaybe
+ roles?: InputMaybe>
+ sort?: InputMaybe
+}
+
+/** A Blockchain `Account` with its associated metadata, participations and activity. */
+export type AccountParticipationsArgs = {
+ governanceIds?: InputMaybe>
+ includeInactive?: InputMaybe
+ pagination?: InputMaybe
+}
+
+export type AccountActivitySort = {
+ field?: InputMaybe
+ order?: InputMaybe
+}
+
+export enum AccountActivitySortField {
+ BlockTimestamp = "BLOCK_TIMESTAMP",
+}
+
+export type ActivityItem = Proposal | Vote
+
+export type AddAdmin = {
+ address: Scalars["String"]
+ role: OrganizationRole
+}
+
+export type AddressInfo = {
+ accounts: Array
+ /** Returns a list of `AddressInfo` Activity for a given address across all chains supported by Tally. Currently only supports on chain governances. */
+ activity?: Maybe>
+ address: Scalars["Address"]
+ /** Account used for SIWE (auth). */
+ ethAccount: Account
+ participations: Array
+}
+
+export type AddressInfoActivityArgs = {
+ governanceIds?: InputMaybe>
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+export type AddressInfoParticipationsArgs = {
+ governanceIds?: InputMaybe>
+ pagination?: InputMaybe
+}
+
+export type Block = {
+ id: Scalars["BlockID"]
+ number: Scalars["Long"]
+ timestamp: Scalars["Timestamp"]
+}
+
+export type BlockIdInput = {
+ blockNumber: Scalars["Long"]
+ chain: Scalars["ChainID"]
+}
+
+/** Chain data in the models are only loaded on server startup. If changed please restart the api servers. */
+export type Chain = {
+ /** API url of the block explorer */
+ blockExplorerURL: Scalars["String"]
+ /** Average block time in seconds. */
+ blockTime: Scalars["Float"]
+ /** Chain as parameter found in the eip. */
+ chain: Scalars["String"]
+ /** The id in eip155:chain_id */
+ id: Scalars["ChainID"]
+ /** Boolean true if it is a testnet, false if it's not. */
+ isTestnet: Scalars["Boolean"]
+ /** If chain is an L2, the L1 id in format eip155:chain_id */
+ layer1Id?: Maybe
+ /** Chain name with removed redundancy and unnecessary words. e.g.: Ethereum Rinkeby */
+ mediumName: Scalars["String"]
+ /** Chain name as found in eip lists. e.g.: Ethereum Testnet Rinkeby */
+ name: Scalars["String"]
+ /** Data from chain native currency. */
+ nativeCurrency: NativeCurrency
+ /** Chain short name as found in eip lists. The Acronym of it. e.g.: rin */
+ shortName: Scalars["String"]
+ /** Icon SVG of the chain logo. */
+ svg?: Maybe
+ /** Boolean true if Tenderly supports simulations. */
+ tenderlySupport: Scalars["Boolean"]
+ /** Boolean true if L2 depends on L1 for voting period, false if it doesn't. */
+ useLayer1VotingPeriod: Scalars["Boolean"]
+}
+
+export type Collectible = {
+ ID: Scalars["ID"]
+ address: Scalars["String"]
+ description?: Maybe
+ imageURI?: Maybe
+ logoURI: Scalars["String"]
+ metadata?: Maybe
+ name?: Maybe
+ tokenName: Scalars["String"]
+ tokenSymbol: Scalars["String"]
+ uri?: Maybe
+}
+
+export type Confirmation = {
+ owner: Account
+ signature: Scalars["Bytes"]
+ signatureType: Scalars["String"]
+ submissionDate: Scalars["Timestamp"]
+}
+
+export type ContactInformation = {
+ discord: Scalars["String"]
+ email: Scalars["String"]
+ name: Scalars["String"]
+ twitter: Scalars["String"]
+}
+
+export type ContactInformationInput = {
+ discord: Scalars["String"]
+ email: Scalars["String"]
+ name: Scalars["String"]
+ twitter: Scalars["String"]
+}
+
+export type Contracts = {
+ governor: GovernorContract
+ tokens: Array
+}
+
+/** A single parameter used in a method. */
+export type DecodedParameter = {
+ /** Decoded calls in the case of a `transactions` parameter on multisend contract or similar. */
+ calls?: Maybe>
+ name: Scalars["String"]
+ type: Scalars["String"]
+ value: Scalars["Bytes"]
+}
+
+export type Delegate = {
+ account: Account
+ address: Scalars["Address"]
+ participation: Participation
+}
+
+export type DelegateSort = {
+ field?: InputMaybe
+ order?: InputMaybe
+}
+
+export enum DelegateSortField {
+ Created = "CREATED",
+ Delegations = "DELEGATIONS",
+ HasDelegateStatement = "HAS_DELEGATE_STATEMENT",
+ HasEns = "HAS_ENS",
+ ProposalsCreated = "PROPOSALS_CREATED",
+ TokensOwned = "TOKENS_OWNED",
+ Updated = "UPDATED",
+ VotingWeight = "VOTING_WEIGHT",
+}
+
+export type DelegateStatement = {
+ dataSource: DelegateStatementSource
+ dataSourceURL?: Maybe
+ delegateAddress: Scalars["Address"]
+ delegateStatement: Scalars["String"]
+ delegateStatementSummary?: Maybe
+ discourseProfileLink?: Maybe
+ discourseUserName?: Maybe
+ id: Scalars["ID"]
+ organizationID: Scalars["String"]
+ seekingDelegations?: Maybe
+}
+
+export enum DelegateStatementSource {
+ Script = "SCRIPT",
+ User = "USER",
+}
+
+export type Delegation = {
+ /** The `Block` when the `Delegation` took place */
+ block: Block
+ /** Actor who is delegating their voting power */
+ delegator: Account
+ /** The `Account` this voting power was delegated to before this `Delegation` event */
+ from: Account
+ /** The `Account` to whom the voting power is not delegated */
+ to: Account
+ /** `Token` contract where this `Delegation` was created */
+ token: Token
+ /** Voting Power delegated at time of delegation */
+ votingPower: Scalars["BigInt"]
+ /** @deprecated renamed for clarity to `votingPower` */
+ weight: Scalars["BigInt"]
+}
+
+export type DelegationWeightChange = {
+ block?: Maybe
+ delegate: Account
+ hash?: Maybe
+ netChange: Scalars["BigInt"]
+ newBalance: Scalars["BigInt"]
+ prevBalance: Scalars["BigInt"]
+ timestamp: Scalars["Timestamp"]
+ token: Token
+}
+
+export type DelegationWeightChangeSort = {
+ field?: InputMaybe
+ order?: InputMaybe
+}
+
+export enum DelegationWeightChangeSortField {
+ Created = "CREATED",
+ NetChange = "NET_CHANGE",
+ NewBalance = "NEW_BALANCE",
+ OldBalance = "OLD_BALANCE",
+}
+
+export type DelegationWeightStats = {
+ in: Scalars["BigInt"]
+ out: Scalars["BigInt"]
+}
+
+/** Executable payload of a proposal. This is contains four arrays each of which contain an element for each action included. */
+export type Executable = {
+ /** Call data sent */
+ callDatas: Array
+ /** Method signatures for the target. Only set in Alpha and Bravo style Governors. */
+ signatures: Array
+ /** Contract targets */
+ targets: Array
+ /** Amount of native asset to be transferred */
+ values: Array
+}
+
+/** Describes what happens if a given `Proposal` or `GnosisSafeTransaction` is executed. A call can have an unlimited amount of nested parameters which can have their own calls in the case of a common initial call to a multisend contract. */
+export type ExecutableCall = {
+ /** Input data that will be sent to the target method. Individual parameters derived from this data are available on the parameters field if decoding succeeds. */
+ data?: Maybe
+ /** Media context i.e. invoice file */
+ media?: Maybe
+ /** Transfer recipe memo */
+ memo?: Maybe
+ /** Method to be called on the target smart contract. */
+ method?: Maybe
+ /** `DecodedParameter`s sent to the method on the target contract. */
+ parameters?: Maybe>
+ /** Tally `Recipe` that was used to create this call. */
+ recipe?: Maybe
+ simulations?: Maybe>
+ /** `AccountID` of contract that will be called. */
+ target: Scalars["AccountID"]
+ /** Amount of native asset that will be sent to the target contract & method. */
+ value?: Maybe
+}
+
+export type Feature = Node & {
+ id: Scalars["ID"]
+ name: Scalars["String"]
+}
+
+/** A connection to a list of featues. */
+export type FeatureConnection = {
+ /** A list of edges. */
+ edges?: Maybe>>
+ /** Information to aid in pagination. */
+ pageInfo: PageInfo
+ /** Identifies the total count of features in the connection. */
+ totalCount: Scalars["Int"]
+}
+
+/** An edge in a feature connection. */
+export type FeatureEdge = {
+ /** A cursor for use in pagination. */
+ cursor: Scalars["Cursor"]
+ /** The item at the end of the edge. */
+ node?: Maybe
+}
+
+export type FeatureOrder = {
+ direction: OrderDirection
+ field?: InputMaybe
+}
+
+export enum FeatureOrderField {
+ Name = "NAME",
+}
+
+export type FeatureState = {
+ account?: Maybe
+ enabled: Scalars["Boolean"]
+ governance?: Maybe
+ name: Scalars["String"]
+ organization?: Maybe
+}
+
+/** The `File` type, represents the response of uploading a file. */
+export type File = {
+ contentType: Scalars["String"]
+ id: Scalars["String"]
+ metadata: Image
+ name: Scalars["String"]
+ url: Scalars["String"]
+}
+
+export type GnosisSafe = {
+ /** Values of all Tokens in this Gnosis Safe */
+ balance?: Maybe
+ collectibles?: Maybe>>
+ /** GnosisSafe smart contract AccountID. */
+ id: Scalars["AccountID"]
+ /** GnosisSafe name to help distinguish it. */
+ name?: Maybe
+ /** A counter of the amount of transactions executed on the safe. */
+ nonce: Scalars["Int"]
+ /** A list of owner Accounts. The Account includes participations, but we haven't included gnosis safe owners or signers in the participations yet. */
+ owners: Array
+ /** The amount of confirmations (owner signatures) that are required to execute a transaction. */
+ threshold: Scalars["Int"]
+ /** GnosisSafe smart contract version. */
+ version: Scalars["String"]
+}
+
+/** A transaction can be `SUBMITTED` or `EXECUTED`. An `EXECUTED` transaction will include a block and an on chain txHashID. */
+export type GnosisSafeTransaction = {
+ /** `Block` at which this safe transaction was executed. */
+ block?: Maybe
+ /** Describes what happens if it is executed. This includes a `target` smart contract address as well as the method and input data being used to make the call. A call can have an unlimited amount of nested `parameters` which can have their own calls in the case of a common initial call to a multisend contract. Each call includes a `recipe` placeholder if the call was created on Tally. */
+ call?: Maybe
+ /** All the owners that have signed the transaction. */
+ confirmations: Array
+ /** Chain scoped safeTxHash- https://github.com/safe-global/safe-contracts/blob/da66b45ec87d2fb6da7dfd837b29eacdb9a604c5/contracts/GnosisSafe.sol#L353-L394. */
+ id: Scalars["HashID"]
+ /** Current counter of multisig transactions executed on this safe. No two transactions on this contract will have the same `nonce`. */
+ nonce?: Maybe
+ /** `GnosisSafe` smart contract AccountID. */
+ safeID: Scalars["AccountID"]
+ /** Chain scoped safeTxHash- https://github.com/safe-global/safe-contracts/blob/da66b45ec87d2fb6da7dfd837b29eacdb9a604c5/contracts/GnosisSafe.sol#L353-L394. */
+ safeTxHashID?: Maybe
+ /** Executed transaction verified signatures. */
+ signatures?: Maybe
+ /** A list of all states the transaction has been through with a timestamp. A transaction can be `SUBMITTED` or `EXECUTED`. Similar to a governor proposal. */
+ statusChanges: Array
+ /** Ethereum transaction hash of the executed transaction. */
+ txHashID?: Maybe
+}
+
+export type GnosisStatusChange = {
+ timestamp: Scalars["Timestamp"]
+ type: GnosisStatusChangeType
+}
+
+export enum GnosisStatusChangeType {
+ Executed = "EXECUTED",
+ Submitted = "SUBMITTED",
+}
+
+export type Governance = {
+ active: Scalars["Boolean"]
+ balance: Scalars["BigInt"]
+ chainId: Scalars["ChainID"]
+ contracts: Contracts
+ delegatedVotingPower: Scalars["BigInt"]
+ delegates: Array
+ features?: Maybe>
+ id: Scalars["AccountID"]
+ kind: MultiGovernanceSupport
+ name: Scalars["String"]
+ organization: Organization
+ parameters: GovernanceParameters
+ proposals: Array
+ quorum: Scalars["BigInt"]
+ slug: Scalars["String"]
+ stats: GovernanceStats
+ tallyProposals: Array
+ timelockId?: Maybe
+ tokens: Array
+}
+
+export type GovernanceBalanceArgs = {
+ id: Scalars["AccountID"]
+}
+
+export type GovernanceDelegatedVotingPowerArgs = {
+ id: Scalars["AccountID"]
+}
+
+export type GovernanceDelegatesArgs = {
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+export type GovernanceProposalsArgs = {
+ pagination?: InputMaybe
+ proposalIds?: InputMaybe>
+ proposerIds?: InputMaybe>
+ proposers?: InputMaybe>
+ sort?: InputMaybe
+}
+
+export type GovernanceTallyProposalsArgs = {
+ creatorIds?: InputMaybe>
+ ids?: InputMaybe>
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+export type GovernanceArgs = {
+ id: Scalars["AccountID"]
+ start: Scalars["Long"]
+ type: GovernanceType
+}
+
+export type GovernanceParameters =
+ | GovernorAaveParameters
+ | GovernorAlphaParameters
+ | GovernorBravoParameters
+ | OpenZeppelinGovernorParameters
+
+export type GovernanceSort = {
+ field?: InputMaybe
+ order?: InputMaybe
+}
+
+export enum GovernanceSortField {
+ ActiveProposals = "ACTIVE_PROPOSALS",
+ TotalProposals = "TOTAL_PROPOSALS",
+}
+
+export type GovernanceStats = {
+ proposals: ProposalStats
+ tokens: GovernanceTokenStats
+}
+
+export type GovernanceSync = {
+ id: Scalars["AccountID"]
+ start: Scalars["Long"]
+ tokenId: Scalars["AssetID"]
+ type: GovernanceType
+}
+
+export type GovernanceTokenStats = {
+ delegatedVotingPower: Scalars["BigInt"]
+ owners: Scalars["Int"]
+ supply: Scalars["BigInt"]
+ voters: Scalars["Int"]
+}
+
+export enum GovernanceType {
+ Aave = "AAVE",
+ Governoralpha = "GOVERNORALPHA",
+ Governorbravo = "GOVERNORBRAVO",
+ Openzeppelingovernor = "OPENZEPPELINGOVERNOR",
+}
+
+export type GovernanceTypeData = {
+ name: Scalars["String"]
+ type: GovernanceType
+}
+
+/** Core type that describes an onchain Governor contract */
+export type Governor = {
+ /** Current tokens owned by a particular address */
+ balance: Scalars["BigInt"]
+ /** Current voting power of a particular address */
+ delegatedVotingPower: Scalars["BigInt"]
+ /** List of users that can currently create proposals and vote. */
+ delegates: Array
+ id: Scalars["AccountID"]
+ /** Last block that Tally has indexed. Sometimes our indexer needs to catch up. Our indexer is usually ~1min behind depending on chain so we don't serve data that might later be reorged. */
+ lastIndexedBlock: Block
+ /** Tally name of the governor contract */
+ name: Scalars["String"]
+ parameters: GovernorParameters
+ /** Counts of total, active, failed, and passed proosals. */
+ proposalStats: ProposalStats
+ /** Proposals created using this Governor contract */
+ proposals: Array
+ /** The minumum amount of votes (total or for depending on type) that are currently required to pass a proposal. */
+ quorum: Scalars["BigInt"]
+ /** Tally slug used for this goverance: tally.xyz/gov/[slug] */
+ slug: Scalars["String"]
+ /** Chain scoped address of the timelock contract for this governor if it exists. */
+ timelockId?: Maybe
+ /** List of related tokens used to operate this contract. Most governors only have one. */
+ tokens: Array
+ /** Governor contract type */
+ type: GovernorType
+}
+
+/** Core type that describes an onchain Governor contract */
+export type GovernorBalanceArgs = {
+ id: Scalars["AccountID"]
+}
+
+/** Core type that describes an onchain Governor contract */
+export type GovernorDelegatedVotingPowerArgs = {
+ id: Scalars["AccountID"]
+}
+
+/** Core type that describes an onchain Governor contract */
+export type GovernorDelegatesArgs = {
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+/** Core type that describes an onchain Governor contract */
+export type GovernorProposalsArgs = {
+ pagination?: InputMaybe
+ proposalIds?: InputMaybe>
+ proposerIds?: InputMaybe>
+ proposers?: InputMaybe>
+ sort?: InputMaybe
+}
+
+export type GovernorAaveParameters = {
+ proposalThreshold: Scalars["BigInt"]
+ quorumDenominator?: Maybe
+ quorumNumerator?: Maybe
+ quorumVotes?: Maybe
+ votingDelay: Scalars["BigInt"]
+ votingPeriod: Scalars["BigInt"]
+}
+
+export type GovernorAlphaParameters = {
+ /** Amount of votes needed to create a proposal */
+ proposalThreshold: Scalars["BigInt"]
+ /** If the governor supports fractional quorum the denominatior of the quorum fraction */
+ quorumDenominator?: Maybe
+ /** If the governor supports fractional quorum the numerator of the quorum fraction */
+ quorumNumerator?: Maybe
+ /** Amount of votes needed for a proposal to qualify for passing */
+ quorumVotes?: Maybe
+ /** Amount of blocks before a proposal can be voted on */
+ votingDelay: Scalars["BigInt"]
+ /** Amount of blocks a proposal remains active */
+ votingPeriod: Scalars["BigInt"]
+}
+
+export type GovernorBravoParameters = {
+ /** Amount of votes needed to create a proposal */
+ proposalThreshold: Scalars["BigInt"]
+ /** If the governor supports fractional quorum the denominatior of the quorum fraction */
+ quorumDenominator?: Maybe
+ /** If the governor supports fractional quorum the numerator of the quorum fraction */
+ quorumNumerator?: Maybe
+ /** Amount of votes needed for a proposal to qualify for passing */
+ quorumVotes?: Maybe
+ /** Amount of blocks before a proposal can be voted on */
+ votingDelay: Scalars["BigInt"]
+ /** Amount of blocks a proposal remains active */
+ votingPeriod: Scalars["BigInt"]
+}
+
+export type GovernorContract = {
+ address: Scalars["Address"]
+ lastBlock: Scalars["Long"]
+ type: GovernanceType
+}
+
+export type GovernorExecutableCallInput = {
+ /** Input data that will be sent to the target method. Individual parameters derived from this data are available on the parameters field if decoding succeeds. */
+ data: Scalars["Bytes"]
+ /** Media context i.e. invoice file */
+ media?: InputMaybe
+ /** Transfer recipe memo */
+ memo?: InputMaybe
+ /** Method to be called on the target smart contract. */
+ method?: InputMaybe
+ /** Tally `Recipe` that was used to create this call. */
+ recipe: Recipe
+ /** `AccountID` of contract that will be called. */
+ target: Scalars["AccountID"]
+ /** Amount of native asset that will be sent to the target contract & method. */
+ value: Scalars["BigInt"]
+}
+
+export type GovernorParameters =
+ | GovernorAaveParameters
+ | GovernorAlphaParameters
+ | GovernorBravoParameters
+ | OpenZeppelinGovernorParameters
+
+export type GovernorSort = {
+ field?: InputMaybe
+ order?: InputMaybe
+}
+
+export enum GovernorSortField {
+ ActiveProposals = "ACTIVE_PROPOSALS",
+ TotalProposals = "TOTAL_PROPOSALS",
+}
+
+/** Current token stats */
+export type GovernorTokenStats = {
+ /** Total delegated voting power from `DelegateVotesChanged` events */
+ delegatedVotingPower: Scalars["BigInt"]
+ /** Number of addresses with non-zero balances of this token derived from `Transfer` events */
+ owners: Scalars["Int"]
+ /** Supply derived from `Transfer` events */
+ supply: Scalars["BigInt"]
+ /** Number of addresses with non-zero voting power of this token derived from `DelegateVotesChanged` events */
+ voters: Scalars["Int"]
+}
+
+/** Governor contract type */
+export enum GovernorType {
+ Aave = "AAVE",
+ Governoralpha = "GOVERNORALPHA",
+ Governorbravo = "GOVERNORBRAVO",
+ Openzeppelingovernor = "OPENZEPPELINGOVERNOR",
+}
+
+/** Identity Providers associated with an `Account`. */
+export type Identities = {
+ /** Ethereum Name Service */
+ ens?: Maybe
+ twitter?: Maybe
+}
+
+export type IdentitiesInput = {
+ twitter?: InputMaybe
+}
+
+export type Image = {
+ thumbnail?: Maybe
+ url?: Maybe
+}
+
+export type Member = {
+ account: Account
+ id: Scalars["ID"]
+ organization: Organization
+ /** Number of polls the member has voted on. */
+ pollVotesCount: Scalars["Int"]
+ role: OrganizationRole
+}
+
+export type MemberSort = {
+ field: MemberSortField
+ order: SortOrder
+}
+
+export enum MemberSortField {
+ PollsVoteCount = "POLLS_VOTE_COUNT",
+}
+
+export enum MultiGovernanceSupport {
+ MultiGovPrimary = "MULTI_GOV_PRIMARY",
+ MultiGovSecondary = "MULTI_GOV_SECONDARY",
+ SingleGov = "SINGLE_GOV",
+}
+
+export type Mutation = {
+ analyticsBackfill: Scalars["Boolean"]
+ /** Creates an API Key for the logged in User */
+ createAPIKey: Scalars["String"]
+ /** Creates an API User and returns a key that can be used to access the API */
+ createAPIUser: Scalars["String"]
+ createDelegateStatement: DelegateStatement
+ /** Creates a Governance on Tally associated with an Organization. If the Governance is already indexed it only updates the Organization. */
+ createGovernance: Scalars["Boolean"]
+ /** Creates an organization with a governor and token. */
+ createGovernorOrganization: Organization
+ /** Creates an organization for a group. Adds a demo proposal for that group. */
+ createGroupOrganization: Organization
+ createOrganization: Organization
+ createPoll: Scalars["String"]
+ /** Creates a `TallyProposal`. Returns a TallyProposal ID. */
+ createProposal: Scalars["ID"]
+ createProposalActionAttempt: Scalars["Boolean"]
+ /** Creates a `TallyProposal` with a `Poll`, which immediately begins voting. Returns a Poll ID. */
+ createProposalWithPoll: Scalars["ID"]
+ /** Creates a `TallyProposal` with a `Poll` for a Group. Returns a Poll ID. */
+ createProposalWithPollForGroup: Scalars["ID"]
+ /** Much like governors we can add a safe to an existing DAO. A DAO can have an unlimited amount of `GnosisSafe`s. */
+ createSafe: Scalars["Boolean"]
+ /** Begins indexer sync for the requested token */
+ createToken: Scalars["Boolean"]
+ /** Creates a `VoteAttempt` with the user intended vote and support data */
+ createVoteAttempt: Scalars["Boolean"]
+ deleteSync: Scalars["Boolean"]
+ /** Adds the authenticated user to the organization. */
+ joinOrganization: Scalars["Boolean"]
+ /** Links a Governance to an Organization if it is unlinked. Fails if Governance doesn't exist or isn't indexed. */
+ linkGovernance: Governance
+ login: Scalars["String"]
+ logout: Scalars["Boolean"]
+ runProposalSimulation: Array
+ /** Unlinks a Safe from it's Organization for linking to other Organizations */
+ unlinkGnosisSafe: Scalars["Boolean"]
+ /** Unlinks a Governance from it's Organization for linking to other Organizations */
+ unlinkGovernance: Governance
+ /** Updates tally stored `Account` metadata (name, bio, picture, email, identity providers, etc) */
+ updateAccount: Scalars["Boolean"]
+ /** Updates an Account for a user via their account id */
+ updateAccountByID: Scalars["Boolean"]
+ updateChain: Chain
+ updateFeature: FeatureState
+ /** Updates a Governance data using the given input parameters */
+ updateGovernance: Governance
+ updateOrganization: Organization
+ /** Updates the admins of organization. `remove` should be a list of member IDs. */
+ updateOrganizationAdmins: Scalars["Boolean"]
+ /** Updates the organization password. */
+ updateOrganizationPassword: Scalars["Boolean"]
+ /** Updates the voting parameters of organization. */
+ updateOrganizationVotingParameters: Scalars["Boolean"]
+ updateParametersOZ: Scalars["Boolean"]
+ /** Updates a `TallyProposal`. */
+ updateProposal: Scalars["Boolean"]
+ /** We are able to use updateSafe to change a gnosis safe name. */
+ updateSafe: Scalars["Boolean"]
+ upload: File
+ vote: Scalars["Boolean"]
+}
+
+export type MutationCreateApiKeyArgs = {
+ name?: InputMaybe
+}
+
+export type MutationCreateApiUserArgs = {
+ email: Scalars["String"]
+}
+
+export type MutationCreateDelegateStatementArgs = {
+ dataSource: DelegateStatementSource
+ dataSourceURL?: InputMaybe
+ delegateAddress: Scalars["Address"]
+ delegateStatement: Scalars["String"]
+ delegateStatementSummary?: InputMaybe
+ discourseProfileLink?: InputMaybe
+ discourseUserName?: InputMaybe
+ organizationID: Scalars["String"]
+ seekingDelegations?: InputMaybe
+}
+
+export type MutationCreateGovernanceArgs = {
+ address: Scalars["Address"]
+ chainId: Scalars["ChainID"]
+ name?: InputMaybe
+ organization: Scalars["ID"]
+ slug?: InputMaybe
+ start: Scalars["Long"]
+ tokenId: Scalars["AssetID"]
+ type: GovernanceType
+}
+
+export type MutationCreateGovernorOrganizationArgs = {
+ governanceArgs: GovernanceArgs
+ orgArgs: OrganizationArgs
+ tokenArgs: TokenArgs
+}
+
+export type MutationCreateGroupOrganizationArgs = {
+ orgArgs: OrganizationArgs
+}
+
+export type MutationCreateOrganizationArgs = {
+ color?: InputMaybe
+ contact?: InputMaybe
+ description?: InputMaybe
+ icon?: InputMaybe
+ name: Scalars["String"]
+ orgUxVersion: OrgUxVersion
+ socialProfiles?: InputMaybe
+ website?: InputMaybe
+}
+
+export type MutationCreatePollArgs = {
+ proposalId: Scalars["ID"]
+}
+
+export type MutationCreateProposalArgs = {
+ choices?: InputMaybe>
+ description: Scalars["String"]
+ governanceId: Scalars["AccountID"]
+ governorExecutableCalls: Array
+ simulationValue?: InputMaybe
+ title: Scalars["String"]
+ txHash?: InputMaybe
+}
+
+export type MutationCreateProposalActionAttemptArgs = {
+ actionType: ProposalActionType
+ actionUser: Scalars["AccountID"]
+ governanceId: Scalars["AccountID"]
+ proposalId: Scalars["ID"]
+ txID: Scalars["Bytes32"]
+}
+
+export type MutationCreateProposalWithPollArgs = {
+ choices?: InputMaybe>
+ description: Scalars["String"]
+ governanceId: Scalars["AccountID"]
+ title: Scalars["String"]
+}
+
+export type MutationCreateProposalWithPollForGroupArgs = {
+ choices?: InputMaybe>
+ description: Scalars["String"]
+ organizationId: Scalars["ID"]
+ title: Scalars["String"]
+}
+
+export type MutationCreateSafeArgs = {
+ id: Scalars["AccountID"]
+ name?: InputMaybe
+ organization: Scalars["ID"]
+}
+
+export type MutationCreateTokenArgs = {
+ id: Scalars["AssetID"]
+ start: Scalars["Long"]
+}
+
+export type MutationCreateVoteAttemptArgs = {
+ governanceId: Scalars["AccountID"]
+ proposalId: Scalars["ID"]
+ support: SupportType
+ txID: Scalars["Bytes32"]
+ voter: Scalars["AccountID"]
+}
+
+export type MutationDeleteSyncArgs = {
+ accountID?: InputMaybe
+}
+
+export type MutationJoinOrganizationArgs = {
+ id: Scalars["ID"]
+ password?: InputMaybe
+}
+
+export type MutationLinkGovernanceArgs = {
+ id: Scalars["AccountID"]
+ organizationId: Scalars["ID"]
+}
+
+export type MutationLoginArgs = {
+ message: Scalars["String"]
+ signature: Scalars["String"]
+}
+
+export type MutationRunProposalSimulationArgs = {
+ proposalID: Scalars["ID"]
+ value?: InputMaybe
+}
+
+export type MutationUnlinkGnosisSafeArgs = {
+ id: Scalars["AccountID"]
+}
+
+export type MutationUnlinkGovernanceArgs = {
+ id: Scalars["AccountID"]
+}
+
+export type MutationUpdateAccountArgs = {
+ bio?: InputMaybe
+ email?: InputMaybe
+ identities?: InputMaybe
+ name?: InputMaybe
+ otherLinks?: InputMaybe>>
+ picture?: InputMaybe
+}
+
+export type MutationUpdateAccountByIdArgs = {
+ bio?: InputMaybe
+ email?: InputMaybe
+ id: Scalars["AccountID"]
+ identities?: InputMaybe
+ name?: InputMaybe
+ otherLinks?: InputMaybe>>
+ picture?: InputMaybe
+}
+
+export type MutationUpdateChainArgs = {
+ blockExplorerURL?: InputMaybe
+ id: Scalars["ChainID"]
+ rpcURL?: InputMaybe
+}
+
+export type MutationUpdateFeatureArgs = {
+ accountID?: InputMaybe
+ governanceID?: InputMaybe
+ name: Scalars["String"]
+ organizationID?: InputMaybe
+ value: Scalars["Boolean"]
+}
+
+export type MutationUpdateGovernanceArgs = {
+ active?: InputMaybe
+ governanceId: Scalars["AccountID"]
+ name?: InputMaybe
+ slug?: InputMaybe
+}
+
+export type MutationUpdateOrganizationArgs = {
+ color?: InputMaybe
+ contact?: InputMaybe
+ description?: InputMaybe
+ icon?: InputMaybe
+ id: Scalars["ID"]
+ name?: InputMaybe
+ slug?: InputMaybe
+ socialProfiles?: InputMaybe
+ website?: InputMaybe
+}
+
+export type MutationUpdateOrganizationAdminsArgs = {
+ add?: InputMaybe>
+ id: Scalars["ID"]
+ remove?: InputMaybe>
+}
+
+export type MutationUpdateOrganizationPasswordArgs = {
+ id: Scalars["ID"]
+ password: Scalars["String"]
+}
+
+export type MutationUpdateOrganizationVotingParametersArgs = {
+ id: Scalars["ID"]
+ parameters: UpdateVoteParameters
+}
+
+export type MutationUpdateProposalArgs = {
+ governanceId: Scalars["AccountID"]
+ proposalId: Scalars["ID"]
+ update: UpdateProposalInput
+}
+
+export type MutationUpdateSafeArgs = {
+ id: Scalars["AccountID"]
+ name: Scalars["String"]
+}
+
+export type MutationUploadArgs = {
+ file: UploadFile
+}
+
+export type MutationVoteArgs = {
+ choice?: InputMaybe
+ message: Scalars["String"]
+ pollId: Scalars["ID"]
+ reason?: InputMaybe
+ signature: Scalars["String"]
+ support?: InputMaybe
+}
+
+export type NativeCurrency = {
+ /** Decimals of the Currency. e.g.: 18 */
+ decimals: Scalars["Long"]
+ /** Name of the Currency. e.g.: Ether */
+ name: Scalars["String"]
+ /** Symbol of the Currency. e.g.: ETH */
+ symbol: Scalars["String"]
+}
+
+/**
+ * An object with an ID.
+ * Follows the [Relay Global Object Identification Specification](https://relay.dev/graphql/objectidentification.htm)
+ */
+export type Node = {
+ /** The id of the object. */
+ id: Scalars["ID"]
+}
+
+export type OpenZeppelinGovernorParameters = {
+ /** Amount of votes needed to create a proposal */
+ proposalThreshold: Scalars["BigInt"]
+ /** If the governor supports fractional quorum the denominatior of the quorum fraction */
+ quorumDenominator?: Maybe
+ /** If the governor supports fractional quorum the numerator of the quorum fraction */
+ quorumNumerator?: Maybe
+ /** Amount of votes needed for a proposal to qualify for passing */
+ quorumVotes?: Maybe
+ /** Amount of blocks before a proposal can be voted on */
+ votingDelay: Scalars["BigInt"]
+ /** Amount of blocks a proposal remains active */
+ votingPeriod: Scalars["BigInt"]
+}
+
+export enum OrderDirection {
+ Asc = "ASC",
+ Desc = "DESC",
+}
+
+export type OrgMember = {
+ id: Scalars["AccountID"]
+ role?: InputMaybe
+}
+
+export enum OrgUxVersion {
+ Governor = "governor",
+ Tokenless = "tokenless",
+}
+
+export type Organization = {
+ /** Can only be accessed by a TallyAdmin or Organization Admin */
+ adminData?: Maybe
+ creator?: Maybe
+ description?: Maybe
+ features?: Maybe>
+ governances: Array
+ id: Scalars["ID"]
+ /** Returns members of the organization, optional `roles` filter. */
+ members: Array
+ myRole?: Maybe
+ name: Scalars["String"]
+ requiresPasswordToJoin: Scalars["Boolean"]
+ slug: Scalars["String"]
+ socialProfiles?: Maybe
+ /** Organization type, for UX purposes only. */
+ uxVersion: OrgUxVersion
+ visual: Visual
+ votingParameters?: Maybe
+ website?: Maybe
+}
+
+export type OrganizationGovernancesArgs = {
+ chainIds?: InputMaybe>
+ ids?: InputMaybe>
+ includeInactive?: InputMaybe
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+export type OrganizationMembersArgs = {
+ pagination?: InputMaybe
+ roles?: InputMaybe>
+ sort?: InputMaybe
+}
+
+export type OrganizationAdminData = {
+ contact?: Maybe
+ password?: Maybe
+}
+
+export type OrganizationArgs = {
+ description?: InputMaybe
+ name: Scalars["String"]
+}
+
+export enum OrganizationRole {
+ Admin = "ADMIN",
+ Member = "MEMBER",
+ Superadmin = "SUPERADMIN",
+}
+
+export type OrganizationSort = {
+ field?: InputMaybe
+ order?: InputMaybe
+}
+
+export enum OrganizationSortField {
+ Id = "ID",
+ Name = "NAME",
+}
+
+export type OtherLink = {
+ label: Scalars["String"]
+ value: Scalars["String"]
+}
+
+export type OtherLinkInput = {
+ label: Scalars["String"]
+ value: Scalars["String"]
+}
+
+export type PageInfo = {
+ /** When paginating forwards, the cursor to continue. */
+ endCursor?: Maybe
+ /** When paginating forwards, are there more items? */
+ hasNextPage: Scalars["Boolean"]
+ /** When paginating backwards, are there more items? */
+ hasPreviousPage: Scalars["Boolean"]
+ /** When paginating backwards, the cursor to continue. */
+ startCursor?: Maybe
+}
+
+export type Pagination = {
+ limit?: InputMaybe
+ offset?: InputMaybe
+}
+
+/** Convenience type representing the activity a particular `Account` has in a `Governor` contract or it's related `Token` contract. */
+export type Participation = {
+ account: Account
+ /** Delegation of voting power of this `account` to another `account`. An `account` can delegate to itself and often that is required in order for voting power to be counted. */
+ delegationOut?: Maybe
+ /** Delegations of voting power made to this `account` */
+ delegationsIn: Array
+ /** @deprecated use `governor` selector instead */
+ governance: Governance
+ governor: Governor
+ /** Proposals created by this `account` */
+ proposals: Array
+ /** Aggregations of account activity in this governor */
+ stats: ParticipationStats
+ /** Votes made by the `account` on the `governor` */
+ votes: Array
+ /** Query voting power changes for this `account` on this `governor`. You can request all changes or aggregate over an interval using the `interval` parameter. */
+ votingPowerChanges: Array
+ /** @deprecated `votingPowerChanges` is a better name */
+ weightChanges: Array
+}
+
+/** Convenience type representing the activity a particular `Account` has in a `Governor` contract or it's related `Token` contract. */
+export type ParticipationDelegationsInArgs = {
+ pagination?: InputMaybe
+}
+
+/** Convenience type representing the activity a particular `Account` has in a `Governor` contract or it's related `Token` contract. */
+export type ParticipationProposalsArgs = {
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+/** Convenience type representing the activity a particular `Account` has in a `Governor` contract or it's related `Token` contract. */
+export type ParticipationVotesArgs = {
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+/** Convenience type representing the activity a particular `Account` has in a `Governor` contract or it's related `Token` contract. */
+export type ParticipationVotingPowerChangesArgs = {
+ earliest?: InputMaybe
+ interval?: InputMaybe
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+/** Convenience type representing the activity a particular `Account` has in a `Governor` contract or it's related `Token` contract. */
+export type ParticipationWeightChangesArgs = {
+ earliest?: InputMaybe
+ interval?: InputMaybe
+ pagination?: InputMaybe
+ sort?: InputMaybe
+}
+
+export type ParticipationDelegationStats = {
+ /** Total count of delegations to this `Account` including self-delegation if present */
+ total: Scalars["Int"]
+}
+
+export type ParticipationProposalStats = {
+ /** Number of proposals created by this `Account */
+ total: Scalars["Int"]
+}
+
+/** Number of votes on the last 10 proposals if there are at least ten made on this contract. If there are not 10 proposals the amount of proposals is provided as `recentProposalCount`. */
+export type ParticipationRate = {
+ /** 10 or the number of proposals on this `Governor` if less than 10 */
+ recentProposalCount: Scalars["Int"]
+ /** Number of votes on the last 10 proposals on this `Governor` */
+ recentVoteCount: Scalars["Int"]
+}
+
+/** Statistics about an `Account`'s participation in a `Governor` */
+export type ParticipationStats = {
+ /** Current overall number of delegations that delegate non-zero voting power */
+ activeDelegationCount: Scalars["Int"]
+ /** Number of proposals created by this `Account */
+ createdProposalsCount: Scalars["Int"]
+ /** Current overall number of delegations include those that delegate zero voting power */
+ delegationCount: Scalars["Int"]
+ /** @deprecated use `delegationCount` or `activeDelegationCount` instead. */
+ delegations: ParticipationDelegationStats
+ /** @deprecated use `recentParticipationRate` instead. */
+ participationRate: ParticipationRate
+ /** @deprecated use `createdProposalsCount` instead. */
+ proposals: ParticipationProposalStats
+ /** Number of votes on the last 10 proposals if there are at least ten made on this contract. If there are not at least 10 proposals the amount of proposals is provided as `recentProposalCount`. */
+ recentParticipationRate: ParticipationRate
+ /** Current number of tokens owned by this `Account` */
+ tokenBalance: Scalars["BigInt"]
+ /** Number of votes made by this `Account` */
+ voteCount: Scalars["Int"]
+ /** @deprecated use `voteCount` instead. */
+ votes: ParticipationVoteStats
+ /** Current voting power information including total in & out */
+ votingPower: ParticipationVotingPowerStats
+ /** @deprecated use `votingPower` instead. */
+ weight: ParticipationWeightStats
+}
+
+/** Statistics about an `Account`'s participation in a `Governor` */
+export type ParticipationStatsDelegationsArgs = {
+ excludeZeroWeight?: InputMaybe
+}
+
+export type ParticipationVoteStats = {
+ /** Number of votes made by this `Account` */
+ total: Scalars["Int"]
+}
+
+export type ParticipationVotingPowerStats = {
+ /** Total current voting power delegated to this `Account` including self-delegation if present */
+ in: Scalars["BigInt"]
+ /** Total current voting power for this `Account` */
+ net: Scalars["BigInt"]
+ /** Total voting power delegated to another `Account` */
+ out: Scalars["BigInt"]
+}
+
+export type ParticipationWeightStats = {
+ /** Total current voting power delegated in/out of this `Account` */
+ delegations: DelegationWeightStats
+ /** Current number of tokens owned by this `Account` */
+ owned: Scalars["BigInt"]
+ /** Total current voting power for this `Account` */
+ total: Scalars["BigInt"]
+}
+
+export type Poll = {
+ author: Account
+ createdAt: Scalars["Timestamp"]
+ end: Scalars["BigInt"]
+ endTs: Scalars["Timestamp"]
+ id: Scalars["ID"]
+ myVotingPower: Scalars["BigInt"]
+ pollVoteStats?: Maybe>
+ quorum: Scalars["BigInt"]
+ snapshot: Scalars["BigInt"]
+ start: Scalars["BigInt"]
+ startTs: Scalars["Timestamp"]
+ status: PollStatus
+ tallyProposal: TallyProposal
+ voteStats?: Maybe>
+ votes?: Maybe>
+}
+
+export type PollVotesArgs = {
+ pagination?: InputMaybe
+}
+
+export enum PollStatus {
+ Active = "ACTIVE",
+ Draft = "DRAFT",
+ Ended = "ENDED",
+}
+
+export type PollVote = {
+ createdAt: Scalars["Timestamp"]
+ id: Scalars["ID"]
+ reason?: Maybe
+ support: Scalars["String"]
+ voter: Account
+ weight: Scalars["BigInt"]
+}
+
+export type PollVoteStat = {
+ percent: Scalars["Float"]
+ support: Scalars["String"]
+ votes: Scalars["BigInt"]
+ weight: Scalars["BigInt"]
+}
+
+/** Core type that describes a proposal created by an onchain Governor contract */
+export type Proposal = {
+ /**
+ * `Block` at proposal creation
+ * @deprecated selector `createdTransaction` contains the creation block
+ */
+ block: Block
+ /** `Transaction` that created this proposal */
+ createdTransaction: Transaction
+ /** Proposal description onchain */
+ description: Scalars["String"]
+ /** Last block when you can cast a vote */
+ end: Block
+ /** Time at which a proposal can be executed */
+ eta?: Maybe
+ /** Payload that can be executed after the proposal passes */
+ executable: Executable
+ /**
+ * Governor contract details
+ * @deprecated selector `Governor` returns the new type
+ */
+ governance: Governance
+ /**
+ * Governor contract `AccountID`
+ * @deprecated selector `Governor` contains governor contract `id`
+ */
+ governanceId: Scalars["AccountID"]
+ /** Governor contract details */
+ governor: Governor
+ /**
+ * Hash of `Transaction` that created this proposal
+ * @deprecated selector `createdTransaction` contains the creation transaction hash
+ */
+ hash: Scalars["String"]
+ /** Chain Scoped onchain Proposal ID */
+ id: Scalars["ID"]
+ /** `Account` that created this proposal */
+ proposer: Account
+ /** First block when you can cast a vote, also the time when quorum is established */
+ start: Block
+ /** List of state transitions for this proposal. The last `StatusChange` is the current state. */
+ statusChanges?: Maybe