@dorafactory/maci-sdk 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -0
- package/dist/index.mjs.map +1 -1
- package/dist/libs/contract/types.d.ts +3 -15
- package/dist/libs/contract/utils.d.ts +1 -1
- package/dist/types/index.d.ts +14 -0
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/libs/contract/contract.ts +1 -2
- package/src/libs/contract/types.ts +3 -18
- package/src/libs/contract/utils.ts +5 -1
- package/src/types/index.ts +17 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/libs/errors/index.ts","../src/libs/http/http.ts","../src/libs/errors/types.ts","../src/libs/query/account.ts","../src/libs/const.ts","../src/libs/query/circuit.ts","../src/utils/index.ts","../src/libs/query/operator.ts","../src/libs/query/round.ts","../src/libs/query/transaction.ts","../src/libs/query/proof.ts","../src/libs/indexer/indexer.ts","../src/libs/contract/config.ts","../src/libs/contract/ts/Maci.client.ts","../src/libs/contract/ts/AMaci.client.ts","../src/libs/contract/ts/Registry.client.ts","../src/libs/contract/ts/OracleMaci.client.ts","../src/libs/contract/vars.ts","../src/libs/contract/utils.ts","../src/libs/contract/contract.ts","../src/maci.ts"],"sourcesContent":["export * from './libs';\nexport type * from './types';\nexport * from './libs/const';\nexport { MaciClient } from './maci';\nexport { Http } from './libs/http';\nexport { Round } from './libs/query';\nexport { Account } from './libs/query';\nexport { Circuit } from './libs/query';\nexport { Operator } from './libs/query';\nexport { Proof } from './libs/query';\nexport { Transaction } from './libs/query';\n","export class BaseError extends Error {\n constructor(message: string, public code: number, public type: string) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\nexport class HttpError extends BaseError {\n constructor(message: string, code: number) {\n super(message, code, 'ERROR_HTTP');\n }\n}\n\nexport class GraphQLError extends BaseError {\n constructor(message: string) {\n super(message, 400, 'ERROR_GRAPHQL');\n }\n}\n\nexport class ValidationError extends BaseError {\n constructor(message: string) {\n super(message, 400, 'ERROR_VALIDATION');\n }\n}\n\nexport class NotFoundError extends BaseError {\n constructor(message: string) {\n super(message, 404, 'ERROR_NOT_FOUND');\n }\n}\n\nexport class ParseError extends BaseError {\n constructor(message: string) {\n super(message, 500, 'ERROR_PARSE');\n }\n}\n\nexport type ErrorType =\n | BaseError\n | Error\n | HttpError\n | NotFoundError\n | ValidationError\n | ParseError\n | GraphQLError;\n\nexport function handleError(error: ErrorType) {\n if (!(error instanceof Error)) {\n return {\n code: 500,\n error: {\n message: 'Unknown error occurred',\n type: `ERROR_UNKNOWN`,\n },\n };\n }\n\n switch (true) {\n case error instanceof HttpError:\n return {\n code: (error as HttpError).code,\n error: {\n message: error.message,\n type: 'ERROR_HTTP',\n },\n };\n\n case error instanceof GraphQLError:\n return {\n code: 400,\n error: {\n message: error.message,\n type: 'ERROR_GRAPHQL',\n },\n };\n\n case error instanceof ValidationError:\n return {\n code: 400,\n error: {\n message: error.message,\n type: 'ERROR_VALIDATION',\n },\n };\n\n case error instanceof NotFoundError:\n return {\n code: 404,\n error: {\n message: error.message,\n type: 'ERROR_NOT_FOUND',\n },\n };\n\n case error instanceof ParseError:\n return {\n code: 500,\n error: {\n message: error.message,\n type: 'ERROR_PARSE',\n },\n };\n\n case error instanceof BaseError:\n return {\n code: (error as BaseError).code,\n error: {\n message: error.message,\n type: (error as BaseError).type,\n },\n };\n\n default:\n return {\n code: 500,\n error: {\n message: error.message || 'Internal server error',\n type: 'ERROR_UNKNOWN',\n },\n };\n }\n}\n","import {\n BaseError,\n HttpError,\n GraphQLError,\n ParseError,\n} from '../errors';\n\nexport type FetchOptions = RequestInit & {\n next?: {\n revalidate?: boolean | number;\n };\n};\n\nexport class Http {\n private apiEndpoint: string;\n private restEndpoint: string;\n private defaultOptions?: FetchOptions;\n\n constructor(\n apiEndpoint: string,\n restEndpoint: string,\n private customFetch?: typeof fetch,\n defaultOptions?: FetchOptions\n ) {\n this.apiEndpoint = apiEndpoint;\n this.restEndpoint = restEndpoint;\n this.defaultOptions = defaultOptions;\n }\n\n private getFetch() {\n return this.customFetch || fetch;\n }\n\n async fetch(url: string): Promise<Response> {\n try {\n const fetchFn = this.getFetch();\n const response = await fetchFn(url, {\n ...this.defaultOptions,\n });\n\n if (!response.ok) {\n throw new HttpError(\n `HTTP error! status: ${response.status}`,\n response.status\n );\n }\n\n return response;\n } catch (error) {\n if (error instanceof HttpError) {\n throw error;\n }\n throw new HttpError(`Failed to fetch: ${(error as Error).message}`, 500);\n }\n }\n\n async fetchGraphql<T>(\n query: string,\n after: string,\n limit: number | null = 10\n ): Promise<T> {\n try {\n const isFirstPage = after === 'first';\n const fetchFn = this.getFetch();\n\n const response = await fetchFn(this.apiEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify({\n query,\n variables: { limit, after: isFirstPage ? undefined : after },\n }),\n ...this.defaultOptions,\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n\n if (errorData.errors?.[0]?.message?.includes('Syntax Error')) {\n throw new GraphQLError(\n `GraphQL syntax error: ${errorData.errors[0].message}`\n );\n }\n\n if (errorData.errors?.length > 0) {\n throw new GraphQLError(\n errorData.errors[0].message || 'Unknown GraphQL error'\n );\n }\n\n throw new HttpError(\n `HTTP error: ${JSON.stringify(errorData)}`,\n response.status\n );\n }\n\n const data = await response.json();\n\n if (data.errors) {\n throw new GraphQLError(\n data.errors[0]?.message || 'GraphQL query failed'\n );\n }\n\n return data;\n } catch (error) {\n if (error instanceof BaseError) {\n throw error;\n }\n if (error instanceof SyntaxError) {\n throw new ParseError('Failed to parse JSON response');\n }\n throw new HttpError(\n `Failed to fetch GraphQL: ${(error as Error).message}`,\n 500\n );\n }\n }\n\n async fetchRest(path: string): Promise<any> {\n try {\n const fetchFn = this.getFetch();\n const response = await fetchFn(`${this.restEndpoint}${path}`, {\n ...this.defaultOptions,\n });\n\n if (!response.ok) {\n throw new HttpError(\n `HTTP error! status: ${response.status}`,\n response.status\n );\n }\n\n try {\n return await response.json();\n } catch (error) {\n throw new ParseError('Failed to parse JSON response');\n }\n } catch (error) {\n if (error instanceof BaseError) {\n throw error;\n }\n throw new HttpError(\n `Failed to fetch REST: ${(error as Error).message}`,\n 500\n );\n }\n }\n}\n","export const ERROR = {\n ERROR_ADDRESS_NOT_FOUND: 'ERROR_ADDRESS_NOT_FOUND',\n ERROR_CIRCUIT_NOT_FOUND: 'ERROR_CIRCUIT_NOT_FOUND',\n ERROR_OPERATOR_INVALID_ADDRESS: 'ERROR_OPERATOR_INVALID_ADDRESS',\n ERROR_OPERATOR_NOT_FOUND: 'ERROR_OPERATOR_NOT_FOUND',\n ERROR_OPERATORS_NOT_FOUND: 'ERROR_OPERATORS_NOT_FOUND',\n ERROR_PROOF_NOT_FOUND: 'ERROR_PROOF_NOT_FOUND',\n ERROR_ROUND_INVALID_ADDRESS: 'ERROR_ROUND_INVALID_ADDRESS',\n ERROR_ROUND_INVALID_STATUS: 'ERROR_ROUND_INVALID_STATUS',\n ERROR_ROUND_NOT_FOUND: 'ERROR_ROUND_NOT_FOUND',\n ERROR_ROUNDS_NOT_FOUND: 'ERROR_ROUNDS_NOT_FOUND',\n ERROR_TRANSACTION_NOT_FOUND: 'ERROR_TRANSACTION_NOT_FOUND',\n ERROR_TRANSACTIONS_NOT_FOUND: 'ERROR_TRANSACTIONS_NOT_FOUND',\n};\n","import { Http } from '../http';\nimport { BalanceResponse } from '../../types';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Account {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async balanceOf(address: string): Promise<BalanceResponse> {\n try {\n const path = `/cosmos/bank/v1beta1/balances/${address}/by_denom?denom=peaka`;\n const data = await this.http.fetchRest(path);\n\n if (data['code'] === undefined) {\n const response: BalanceResponse = {\n code: 200,\n data: {\n balance: data['balance']['amount'],\n },\n };\n return response;\n } else {\n return {\n code: 404,\n error: {\n message: 'Address not found',\n type: ERROR.ERROR_ADDRESS_NOT_FOUND,\n },\n };\n }\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import type { CircuitType } from '../types';\n\nexport const circuits: Record<string, CircuitType> = {\n 'maci-1p1v': {\n maciType: 'MACI',\n circuitType: '1p1v',\n displayName: 'MACI-1p1v',\n repoUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/tree/main/circuits/maci',\n zipUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/archive/refs/heads/main.zip',\n },\n 'maci-qv': {\n maciType: 'MACI',\n circuitType: 'QV',\n displayName: 'MACI-QV',\n repoUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/tree/main/circuits/maci',\n zipUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/archive/refs/heads/main.zip',\n },\n 'amaci-1p1v': {\n maciType: 'aMACI',\n circuitType: '1p1v',\n displayName: 'aMACI-1p1v',\n repoUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/tree/main/circuits/amaci',\n zipUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/archive/refs/heads/main.zip',\n },\n 'amaci-qv': {\n maciType: 'aMACI',\n circuitType: 'QV',\n displayName: 'aMACI-QV',\n repoUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/tree/main/circuits/amaci',\n zipUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/archive/refs/heads/main.zip',\n },\n};\n\nexport const validator_operator_set = {\n doravaloper12yk434ut3un4wx0rult2aww89rsrel8nhmp387: {\n operator_address: '',\n account_address: 'dora12yk434ut3un4wx0rult2aww89rsrel8nydy83p',\n allocation: '22571615985356796592128',\n allocation_dora: 22571.615985356795,\n moniker: '𝐥𝐞𝐬𝐧𝐢𝐤 | 𝐔𝐓𝐒𝐀',\n program_voting_power: 0.06432895760166438,\n tokens: '200731587709257889972292',\n },\n doravaloper15frh0nn3v4yp3vv6sk4pn6jg9l8rt82f7uqfk5: {\n operator_address: '',\n account_address: 'dora15frh0nn3v4yp3vv6sk4pn6jg9l8rt82fd29lqt',\n allocation: '33745159209325474873344',\n allocation_dora: 33745.15920932547,\n moniker: 'NomadValidator',\n program_voting_power: 0.09617348254756773,\n tokens: '300099000000000000000000',\n },\n doravaloper1ddewp74vd2w8jhth2p0uazmc8ajgtcuf3ntqgn: {\n operator_address: '',\n account_address: 'dora1ddewp74vd2w8jhth2p0uazmc8ajgtcufz9wk7v',\n allocation: '40789397021635754590208',\n allocation_dora: 40789.397021635756,\n moniker: 'polkachu.com',\n program_voting_power: 0.11624951413777938,\n tokens: '362744095556470434789338',\n },\n doravaloper1gh8j89jtc2vx6d3y4ehllcdlvluwa49w6xmjsm: {\n operator_address: '',\n account_address: 'dora1gh8j89jtc2vx6d3y4ehllcdlvluwa49wfs7yxy',\n allocation: '33743029941764137943040',\n allocation_dora: 33743.029941764136,\n moniker: 'ITRocket',\n program_voting_power: 0.09616741414897524,\n tokens: '300080064215405665352721',\n },\n doravaloper1j8ru7p8zctup6grfwuga6ndrjj7v88wzn407x7: {\n operator_address: '',\n account_address: 'dora1j8ru7p8zctup6grfwuga6ndrjj7v88wzqr2gsp',\n allocation: '22646525272055477174272',\n allocation_dora: 22646.525272055478,\n moniker: 'StakeUs',\n program_voting_power: 0.06454244857772638,\n tokens: '201397763319500000000000',\n },\n doravaloper1l5zz0kkjt2n7nllsrymy96mc2v2gehda0zc85s: {\n operator_address: '',\n account_address: 'dora1l5zz0kkjt2n7nllsrymy96mc2v2gehdau5a3z0',\n allocation: '22622846742220005965824',\n allocation_dora: 22622.846742220005,\n moniker: 'BlackNodes',\n program_voting_power: 0.06447496492290769,\n tokens: '201187187838702364379121',\n },\n doravaloper1m9v3txhhtadjxpv09gwjhhs344qsxgfscwxjkg: {\n operator_address: '',\n account_address: 'dora1m9v3txhhtadjxpv09gwjhhs344qsxgfstcryqh',\n allocation: '22549006983854435598336',\n allocation_dora: 22549.006983854437,\n moniker: '👋 79anvi 🍀',\n program_voting_power: 0.06426452209558432,\n tokens: '200530523648490887200824',\n },\n doravaloper1tu8006g60t62zwgwf5knkaujv0uzhp2a6wh94h: {\n operator_address: '',\n account_address: 'dora1tu8006g60t62zwgwf5knkaujv0uzhp2afcjnrg',\n allocation: '39369183740744815345664',\n allocation_dora: 39369.18374074482,\n moniker: 'Citadel.one',\n program_voting_power: 0.11220191559671686,\n tokens: '350114000000000000000000',\n },\n doravaloper1x5z0tkafrgyeuqkrwfjr933vghjxchqnqlhcdw: {\n operator_address: '',\n account_address: 'dora1x5z0tkafrgyeuqkrwfjr933vghjxchqnnfjwm3',\n allocation: '22611521290904268701696',\n allocation_dora: 22611.521290904268,\n moniker: '1ce',\n program_voting_power: 0.064442687460896,\n tokens: '201086469492900000000000',\n },\n doravaloper1z6kfew2nhuh02szc2hdecw4fqey2d32auucvux: {\n operator_address: '',\n account_address: 'dora1z6kfew2nhuh02szc2hdecw4fqey2d32a02a62e',\n allocation: '45246951843662957379584',\n allocation_dora: 45246.95184366296,\n moniker: 'Nodes.Guru',\n program_voting_power: 0.12895351616135226,\n tokens: '402385566389000000000006',\n },\n doravaloper1zzne8ufazycklx4j6mgc987t8ykd6wxu63223v: {\n operator_address: '',\n account_address: 'dora1zzne8ufazycklx4j6mgc987t8ykd6wxu63223v',\n allocation: '44982761968475888943104',\n allocation_dora: 44982.76196847589,\n moniker: 'ZKV',\n program_voting_power: 0.12820057674882976,\n tokens: '400036100000000000000000',\n },\n};\n\nexport interface NetworkConfig {\n network: string;\n chainId: string;\n rpcEndpoint: string;\n restEndpoint: string;\n apiEndpoint: string;\n certificateApiEndpoint: string;\n registryAddress: string;\n maciCodeId: number;\n oracleCodeId: number;\n oracleWhitelistBackendPubkey: string;\n oracleFeegrantOperator: string;\n}\n\nexport function getDefaultParams(\n network: 'mainnet' | 'testnet' = 'mainnet'\n): NetworkConfig {\n switch (network) {\n case 'mainnet':\n return {\n network: 'mainnet',\n chainId: 'vota-ash',\n rpcEndpoint: 'https://vota-rpc.dorafactory.org',\n restEndpoint: 'https://vota-rest.dorafactory.org',\n apiEndpoint: 'https://vota-api.dorafactory.org',\n certificateApiEndpoint: 'https://vota-certificate-api.dorafactory.org',\n registryAddress:\n 'dora1smg5qp5trjdkcekdjssqpjehdjf6n4cjss0clyvqcud3t3u3948s8rmgg4',\n maciCodeId: 106,\n oracleCodeId: 111,\n oracleWhitelistBackendPubkey:\n 'A61YtCv2ibMZmDeM02nEElil8wlHx1tLKogBk5dPgf/Q',\n oracleFeegrantOperator: 'dora16s9tljk8dy9ae335yvyzlm8gvkypx9228q8pq8',\n };\n case 'testnet':\n return {\n network: 'testnet',\n chainId: 'vota-testnet',\n rpcEndpoint: 'https://vota-testnet-rpc.dorafactory.org',\n restEndpoint: 'https://vota-testnet-rest.dorafactory.org',\n apiEndpoint: 'https://vota-testnet-api.dorafactory.org',\n certificateApiEndpoint:\n 'https://vota-testnet-certificate-api.dorafactory.org',\n registryAddress:\n 'dora13c8aecstyxrhax9znvvh5zey89edrmd2k5va57pxvpe3fxtfsfeqlhsjnd',\n maciCodeId: 107,\n oracleCodeId: 110,\n oracleWhitelistBackendPubkey:\n 'AoYo/zENN/JquagPdG0/NMbWBBYxOM8BVN677mBXJKJQ',\n oracleFeegrantOperator: 'dora1xp0twdzsdeq4qg3c64v66552deax8zmvq4zw78',\n };\n }\n}\n","import { Http } from '../../libs';\nimport {\n CircuitResponse,\n CircuitsCountGraphqlResponse,\n CircuitType,\n CircuitsResponse,\n} from '../../types';\nimport { circuits } from '../const';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Circuit {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async getCircuitByName(name: string): Promise<CircuitResponse> {\n try {\n const circuitName = name;\n const circuitData: CircuitType = circuits[circuitName];\n\n if (circuitData === undefined) {\n return {\n code: 404,\n error: {\n message: `Circuit ${circuitName} not found`,\n type: ERROR.ERROR_CIRCUIT_NOT_FOUND,\n },\n };\n }\n\n const CIRCUIT_ROUNDS_COUNT_QUERY = `\n query {\n rounds(filter: { circuitName: { equalTo: \"${circuitData.displayName}\" } }) {\n totalCount\n }\n }\n `;\n const circuitRoundsCountResponse =\n await this.http.fetchGraphql<CircuitsCountGraphqlResponse>(\n CIRCUIT_ROUNDS_COUNT_QUERY,\n ''\n );\n\n circuitData.roundCount =\n circuitRoundsCountResponse.data.rounds.totalCount;\n\n const response: CircuitResponse = {\n code: 200,\n data: {\n circuit: circuitData,\n },\n };\n\n return response;\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n\n async getCircuits(): Promise<CircuitsResponse> {\n try {\n const circuitsArray: CircuitType[] = Object.values(circuits).sort(\n (a, b) => a.displayName.localeCompare(b.displayName)\n );\n\n const circuitsWithRoundCount = await Promise.all(\n circuitsArray.map(async (circuit) => {\n const CIRCUIT_ROUNDS_COUNT_QUERY = `\n query {\n rounds(filter: { circuitName: { equalTo: \"${circuit.displayName}\" } }) {\n totalCount\n }\n }\n `;\n const circuitRoundsCountResponse: CircuitsCountGraphqlResponse =\n await this.http.fetchGraphql(CIRCUIT_ROUNDS_COUNT_QUERY, '');\n return {\n ...circuit,\n roundCount: circuitRoundsCountResponse.data.rounds.totalCount,\n };\n })\n );\n\n const response: CircuitsResponse = {\n code: 200,\n data: {\n circuits: circuitsWithRoundCount,\n },\n };\n\n return response;\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import { decode } from 'bech32';\n\nfunction verifyIsBech32(address: string): Error | undefined {\n try {\n decode(address);\n } catch (error) {\n return error instanceof Error ? error : new Error('Unknown error');\n }\n\n return undefined;\n}\n\nexport function isValidAddress(address: string): boolean {\n // An address is valid if it starts with `dora` and is Bech32 format.\n return address.startsWith('dora') && verifyIsBech32(address) === undefined;\n}\n\n// export async function fetchBaseUrl(url: string) {\n// const response = await fetch(url);\n// return response;\n// }\n\n// export async function fetchPages<T>(\n// query: string,\n// after: string,\n// limit: number | null = 10\n// ): Promise<T> {\n// const isFirstPage = after === 'first';\n// // after = isFirstPage ? null : after;\n\n// const response = await fetch(apiEndpoint, {\n// method: 'POST',\n// headers: {\n// 'Content-Type': 'application/json',\n// Accept: 'application/json',\n// },\n// body: JSON.stringify({\n// query,\n// variables: { limit, after: isFirstPage ? undefined : after },\n// }),\n// }).then((res) => res.json());\n\n// return response;\n// }\n","import { ERROR } from '../errors/types';\nimport { Http } from '../../libs';\nimport {\n OperatorsGraphqlResponse,\n RoundsCountGraphqlResponse,\n OperatorResponse,\n OperatorsResponse,\n} from '../../types';\nimport { isValidAddress } from '../../utils';\nimport { handleError, ErrorType } from '../errors';\n\nexport class Operator {\n public http: Http;\n public amaciRegistryContract: string;\n\n constructor(http: Http, amaciRegistryContract: string) {\n this.http = http;\n this.amaciRegistryContract = amaciRegistryContract;\n }\n\n async getOperatorByAddress(address: string): Promise<OperatorResponse> {\n try {\n if (!isValidAddress(address)) {\n return {\n code: 400,\n error: {\n message: 'Invalid operator address format',\n type: ERROR.ERROR_OPERATOR_INVALID_ADDRESS,\n },\n };\n }\n\n const OPERATORS_QUERY = `query {\n operators(filter: { operatorAddress: { equalTo: \"${address}\" } }) {\n edges {\n node {\n id\n validatorAddress\n operatorAddress\n coordinatorPubkeyX\n coordinatorPubkeyY\n identity\n }\n }\n }\n }`;\n\n const response = await this.http.fetchGraphql<OperatorsGraphqlResponse>(\n OPERATORS_QUERY,\n ''\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.operators ||\n !response.data.operators.edges ||\n response.data.operators.edges.length === 0\n ) {\n return {\n code: 404,\n error: {\n message: `No operator found for address ${address}`,\n type: ERROR.ERROR_OPERATOR_NOT_FOUND,\n },\n };\n }\n\n const operatorResponse = response.data.operators.edges[0].node;\n\n if (\n operatorResponse.operatorAddress === '' ||\n operatorResponse.coordinatorPubkeyX === ''\n ) {\n operatorResponse.activeRoundsCount = 0;\n operatorResponse.completedRoundsCount = 0;\n } else {\n const ROUNDS_QUERY = `query {\n activeRoundsCount: rounds(filter: {\n period: {notEqualTo: \"Ended\"},\n operator: {equalTo: \"${operatorResponse.operatorAddress}\"},\n caller: {equalTo: \"${this.amaciRegistryContract}\"}\n }) {\n totalCount\n }\n completedRoundsCount: rounds(filter: {\n period: {equalTo: \"Ended\"},\n operator: {equalTo: \"${operatorResponse.operatorAddress}\"},\n caller: {equalTo: \"${this.amaciRegistryContract}\"}\n }) {\n totalCount\n }\n }`;\n\n const roundsCount =\n await this.http.fetchGraphql<RoundsCountGraphqlResponse>(\n ROUNDS_QUERY,\n ''\n );\n operatorResponse.activeRoundsCount =\n roundsCount.data.activeRoundsCount.totalCount;\n operatorResponse.completedRoundsCount =\n roundsCount.data.completedRoundsCount.totalCount;\n }\n\n operatorResponse.logoUrl = '';\n operatorResponse.moniker = '';\n const identity = response.data.operators.edges[0].node.identity;\n\n const keybaseUrl = `https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=${identity}`;\n const keybaseResponse = await this.http.fetch(keybaseUrl);\n const keybaseData = await keybaseResponse.json();\n\n if (keybaseData.status.code === 0) {\n if (keybaseData.them[0]?.pictures?.primary?.url) {\n operatorResponse.logoUrl = keybaseData.them[0].pictures.primary.url;\n }\n if (keybaseData.them[0]?.basics?.username_cased) {\n operatorResponse.moniker = keybaseData.them[0].profile.full_name;\n }\n }\n const operator: OperatorResponse = {\n code: 200,\n data: {\n operator: operatorResponse,\n },\n };\n return operator;\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n\n async getOperators(\n after: string,\n limit?: number\n ): Promise<OperatorsResponse> {\n try {\n const OPERATORS_QUERY = `query ($limit: Int, $after: Cursor) {\n operators(first: $limit, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n validatorAddress\n operatorAddress\n coordinatorPubkeyX\n coordinatorPubkeyY\n identity\n }\n }\n }\n }`;\n\n const response = await this.http.fetchGraphql<OperatorsGraphqlResponse>(\n OPERATORS_QUERY,\n after,\n limit\n );\n if (\n !response ||\n !response.data ||\n !response.data.operators ||\n !response.data.operators.edges\n ) {\n return {\n code: 404,\n error: {\n message: 'No operators found',\n type: ERROR.ERROR_OPERATORS_NOT_FOUND,\n },\n };\n }\n const operatorsWithRounds = await Promise.all(\n response.data.operators.edges.map(async (edge) => {\n const operator = edge.node;\n if (\n operator.operatorAddress === '' ||\n operator.coordinatorPubkeyX === ''\n ) {\n operator.activeRoundsCount = 0;\n operator.completedRoundsCount = 0;\n return operator;\n }\n const ROUNDS_QUERY = `query {\n activeRoundsCount: rounds(filter: {\n period: {notEqualTo: \"Ended\"},\n operator: {equalTo: \"${operator.operatorAddress}\"},\n caller: {equalTo: \"${this.amaciRegistryContract}\"}\n }) {\n totalCount\n }\n completedRoundsCount: rounds(filter: {\n period: {equalTo: \"Ended\"},\n operator: {equalTo: \"${operator.operatorAddress}\"},\n caller: {equalTo: \"${this.amaciRegistryContract}\"}\n }) {\n totalCount\n }\n }`;\n\n const roundsCount =\n await this.http.fetchGraphql<RoundsCountGraphqlResponse>(\n ROUNDS_QUERY,\n ''\n );\n operator.activeRoundsCount =\n roundsCount.data.activeRoundsCount.totalCount;\n operator.completedRoundsCount =\n roundsCount.data.completedRoundsCount.totalCount;\n\n return operator;\n })\n );\n\n response.data.operators.edges = operatorsWithRounds.map(\n (operator, index) => ({\n cursor: response.data.operators.edges[index].cursor,\n node: operator,\n })\n );\n\n await Promise.all(\n response.data.operators.edges.map(async (edge) => {\n const operator = edge.node;\n const identity = operator.identity;\n operator.logoUrl = '';\n operator.moniker = '';\n\n // try {\n const keybaseUrl = `https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=${identity}`;\n const keybaseResponse = await this.http.fetch(keybaseUrl);\n const keybaseData = await keybaseResponse.json();\n\n if (keybaseData.status.code === 0) {\n if (keybaseData.them[0]?.pictures?.primary?.url) {\n operator.logoUrl = keybaseData.them[0].pictures.primary.url;\n }\n if (keybaseData.them[0]?.basics?.username_cased) {\n operator.moniker = keybaseData.them[0].profile.full_name;\n }\n }\n // } catch (error) {\n // console.error('Error fetching keybase data:', error);\n // }\n return operator;\n })\n );\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import {\n RoundsResponse,\n RoundResponse,\n RoundGraphqlResponse,\n RoundsGraphqlResponse,\n} from '../../types';\nimport { Http } from '../../libs';\nimport { isValidAddress } from '../../utils';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Round {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async getRoundById(address: string): Promise<RoundResponse> {\n try {\n if (!isValidAddress(address)) {\n return {\n code: 400,\n error: {\n message: 'Invalid round address format',\n type: ERROR.ERROR_ROUND_INVALID_ADDRESS,\n },\n };\n }\n\n const ROUND_QUERY = `query {\n round(id: \"${address}\") {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n identity\n }\n }`;\n\n const response = await this.http.fetchGraphql<RoundGraphqlResponse>(\n ROUND_QUERY,\n ''\n );\n\n if (!response || !response.data || !response.data.round) {\n return {\n code: 404,\n error: {\n message: `No round data found for address ${address}`,\n type: ERROR.ERROR_ROUND_NOT_FOUND,\n },\n };\n }\n\n response.data.round.operatorLogoUrl = '';\n response.data.round.operatorMoniker = '';\n\n const identity = response.data.round.identity;\n // try {\n const keybaseUrl = `https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=${identity}`;\n const keybaseResponse = await this.http.fetch(keybaseUrl);\n const keybaseData = await keybaseResponse.json();\n\n if (keybaseData.status.code === 0) {\n if (keybaseData.them[0]?.pictures?.primary?.url) {\n response.data.round.operatorLogoUrl =\n keybaseData.them[0].pictures.primary.url;\n }\n if (keybaseData.them[0]?.basics?.username_cased) {\n response.data.round.operatorMoniker =\n keybaseData.them[0].profile.full_name;\n }\n }\n // } catch (error) {\n // console.error('Error fetching keybase data:', error);\n // }\n\n const results = JSON.parse(response.data.round.results);\n const votes = results.map((r: string) => ({\n v: Number(r.slice(0, -24)),\n v2: Number(r.slice(-24)),\n }));\n const totalVotes = votes.reduce(\n (s: { v: number; v2: number }, c: { v: number; v2: number }) => ({\n v: s.v + c.v,\n v2: s.v2 + c.v2,\n }),\n { v: 0, v2: 0 }\n );\n const resultsList = votes.map((v: { v: number; v2: number }) => ({\n v: totalVotes.v === 0 ? '0.0' : ((v.v / totalVotes.v) * 100).toFixed(3),\n v2:\n totalVotes.v2 === 0\n ? '0.0'\n : ((v.v2 / totalVotes.v2) * 100).toFixed(3),\n }));\n response.data.round.resultsList = resultsList;\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n\n async getRounds(after: string, limit?: number): Promise<RoundsResponse> {\n try {\n const ROUND_HISTORY_QUERY = `query ($limit: Int, $after: Cursor) {\n rounds(first: $limit, after: $after, orderBy: [TIMESTAMP_DESC]){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n node {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n }\n cursor\n }\n }\n }\n `;\n\n const response = await this.http.fetchGraphql<RoundsGraphqlResponse>(\n ROUND_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.rounds ||\n !response.data.rounds.edges\n ) {\n return {\n code: 404,\n error: {\n message: 'No rounds data found',\n type: ERROR.ERROR_ROUNDS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n\n async getRoundsByCircuitName(\n circuitName: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n try {\n const ROUND_HISTORY_QUERY = `query ($limit: Int, $after: Cursor) {\n rounds(first: $limit, after: $after, filter:{\n circuitName:{\n equalTo: \"${circuitName}\"\n }\n }, orderBy: [TIMESTAMP_DESC]){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n }\n }\n }\n }\n `;\n\n const response = await this.http.fetchGraphql<RoundsGraphqlResponse>(\n ROUND_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.rounds ||\n !response.data.rounds.edges\n ) {\n return {\n code: 404,\n error: {\n message: `No rounds data found for circuit name ${circuitName}`,\n type: ERROR.ERROR_ROUNDS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n\n async getRoundsByStatus(\n status: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n try {\n const currentTime = Math.floor(Date.now() / 1000);\n let filterCondition = '';\n\n switch (status) {\n case 'Created':\n filterCondition = `\n or: [\n { votingStart: { equalTo: \"0\" } },\n { and: [\n { votingStart: { notEqualTo: \"0\" } },\n { votingStart: { greaterThan: \"${currentTime.toString()}\" } }\n ] }\n ]\n `;\n break;\n case 'Ongoing':\n filterCondition = `\n or: [\n { votingStart: { equalTo: \"0\" }},\n { votingStart: { lessThanOrEqualTo: \"${currentTime.toString()}\" }, votingEnd: { greaterThan: \"${currentTime.toString()}\" } }\n ]\n `;\n break;\n case 'Tallying':\n filterCondition = `\n and: [\n { status: { notEqualTo: \"Closed\" } },\n { votingEnd: { lessThan: \"${currentTime.toString()}\" } },\n { votingEnd: { notEqualTo: \"0\" } }\n ]\n `;\n break;\n case 'Closed':\n filterCondition = `status: { equalTo: \"Closed\" }`;\n break;\n default:\n return {\n code: 400,\n error: {\n message: `Invalid status: ${status}`,\n type: ERROR.ERROR_ROUND_INVALID_STATUS,\n },\n };\n }\n\n const ROUND_HISTORY_QUERY = `query ($limit: Int!, $after: Cursor) {\n rounds(first: $limit, after: $after, filter: { ${filterCondition} }, orderBy: [TIMESTAMP_DESC]) {\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n }\n }\n }\n }`;\n\n const response = await this.http.fetchGraphql<RoundsGraphqlResponse>(\n ROUND_HISTORY_QUERY,\n after,\n limit\n );\n if (\n !response ||\n !response.data ||\n !response.data.rounds ||\n !response.data.rounds.edges\n ) {\n return {\n code: 404,\n error: {\n message: `No rounds data found for status ${status}`,\n type: ERROR.ERROR_ROUNDS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n\n async getRoundsByOperator(\n operator: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n try {\n if (!isValidAddress(operator)) {\n return {\n code: 400,\n error: {\n message: 'Invalid operator address format',\n type: ERROR.ERROR_OPERATOR_INVALID_ADDRESS,\n },\n };\n }\n\n const ROUND_HISTORY_QUERY = `query ($limit: Int!, $after: Cursor) {\n rounds(first: $limit, after: $after, filter:{\n operator:{\n equalTo: \"${operator}\"\n }\n }, orderBy: [TIMESTAMP_DESC]){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n }\n }\n }\n }`;\n\n const response = await this.http.fetchGraphql<RoundsGraphqlResponse>(\n ROUND_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.rounds ||\n !response.data.rounds.edges\n ) {\n return {\n code: 404,\n error: {\n message: `No rounds data found for operator ${operator}`,\n type: ERROR.ERROR_ROUNDS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import {\n TransactionsResponse,\n TransactionResponse,\n TransactionGraphqlResponse,\n TransactionsGraphqlResponse,\n} from '../../types';\nimport { Http } from '../../libs';\nimport { isValidAddress } from '../../utils';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Transaction {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async getTransactionByHash(txHash: string): Promise<TransactionResponse> {\n try {\n const TRANSACTION_QUERY = `query {\n transaction(id: \"${txHash}\") {\n id\n blockHeight\n txHash\n timestamp\n type\n status\n circuitName\n fee\n gasUsed\n gasWanted\n caller\n contractAddress\n }\n }`;\n\n const response = await this.http.fetchGraphql<TransactionGraphqlResponse>(\n TRANSACTION_QUERY,\n ''\n );\n\n if (!response || !response.data || !response.data.transaction) {\n return {\n code: 404,\n error: {\n message: `No transaction found for txHash ${txHash}`,\n type: ERROR.ERROR_TRANSACTION_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n\n async getTransactions(\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n try {\n const TRANSACTION_HISTORY_QUERY = `query transactions($limit: Int, $after: Cursor) {\n transactions(first: $limit, after: $after, orderBy: [TIMESTAMP_DESC]\n ){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n timestamp\n type\n status\n circuitName\n fee\n gasUsed\n gasWanted\n caller\n contractAddress\n }\n }\n }\n }`;\n\n const response =\n await this.http.fetchGraphql<TransactionsGraphqlResponse>(\n TRANSACTION_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.transactions ||\n !response.data.transactions.edges\n ) {\n return {\n code: 404,\n error: {\n message: 'No transactions data found',\n type: ERROR.ERROR_TRANSACTIONS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n\n async getTransactionsByContractAddress(\n address: string,\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n try {\n if (!isValidAddress(address)) {\n return {\n code: 400,\n error: {\n message: 'Invalid round address format',\n type: ERROR.ERROR_ROUND_INVALID_ADDRESS,\n },\n };\n }\n\n const TRANSACTION_HISTORY_QUERY = `query transactions($limit: Int!, $after: Cursor) {\n transactions(first: $limit, after: $after, filter:{\n contractAddress:{\n equalTo: \"${address}\"\n }\n }, orderBy: [TIMESTAMP_DESC]\n ){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n timestamp\n type\n status\n circuitName\n fee\n gasUsed\n gasWanted\n caller\n contractAddress\n }\n }\n }\n }`;\n\n const response =\n await this.http.fetchGraphql<TransactionsGraphqlResponse>(\n TRANSACTION_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.transactions ||\n !response.data.transactions.edges\n ) {\n return {\n code: 404,\n error: {\n message: 'No transactions data found',\n type: ERROR.ERROR_TRANSACTIONS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import { Http } from '../../libs';\nimport { isValidAddress } from '../../utils';\nimport { ProofResponse, ProofGraphqlResponse } from '../../types';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Proof {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async getProofByContractAddress(address: string): Promise<ProofResponse> {\n try {\n if (!isValidAddress(address)) {\n return {\n code: 400,\n error: {\n message: 'Invalid round address format',\n type: ERROR.ERROR_ROUND_INVALID_ADDRESS,\n },\n };\n }\n\n const PROOF_QUERY = `query HomePage {\n proofData(first: 100, filter:{\n contractAddress:{\n equalTo: \"${address}\"\n }\n } ,orderBy: [TIMESTAMP_DESC]\n ){\n nodes {\n id\n blockHeight\n txHash\n contractAddress\n timestamp\n actionType\n commitment\n proof\n }\n }\n }\n `;\n\n const response = await this.http.fetchGraphql<ProofGraphqlResponse>(\n PROOF_QUERY,\n ''\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.proofData ||\n !response.data.proofData.nodes ||\n response.data.proofData.nodes.length === 0\n ) {\n return {\n code: 404,\n error: {\n message: `No proof found for round address ${address}`,\n type: ERROR.ERROR_PROOF_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import {\n BalanceResponse,\n RoundResponse,\n RoundsResponse,\n OperatorResponse,\n OperatorsResponse,\n CircuitResponse,\n TransactionResponse,\n TransactionsResponse,\n CircuitsResponse,\n ProofResponse,\n} from '../../types';\nimport { IndexerParams } from './types';\nimport { Http } from '../http';\nimport {\n Round,\n Account,\n Circuit,\n Operator,\n Proof,\n Transaction,\n} from '../query';\n\n/**\n * @class Indexer\n * @description This class is used to interact with Maci Indexer.\n */\nexport class Indexer {\n public restEndpoint: string;\n public apiEndpoint: string;\n public registryAddress: string;\n\n public http: Http;\n public round: Round;\n public account: Account;\n public circuit: Circuit;\n public operator: Operator;\n public proof: Proof;\n public transaction: Transaction;\n\n /**\n * @constructor\n * @param {IndexerParams} params - The parameters for the Maci Indexer instance.\n */\n constructor({\n restEndpoint,\n apiEndpoint,\n registryAddress,\n http,\n }: IndexerParams) {\n this.http = http;\n\n this.restEndpoint = restEndpoint;\n this.apiEndpoint = apiEndpoint;\n this.registryAddress = registryAddress;\n\n this.round = new Round(this.http);\n this.account = new Account(this.http);\n this.circuit = new Circuit(this.http);\n this.operator = new Operator(this.http, this.registryAddress);\n this.proof = new Proof(this.http);\n this.transaction = new Transaction(this.http);\n }\n\n /**\n * @method balanceOf\n * @description Get the balance of a specific address.\n * @param {string} address - The address to check the balance for.\n * @returns {Promise<BalanceResponse>} The balance response.\n */\n async balanceOf(address: string): Promise<BalanceResponse> {\n return await this.account.balanceOf(address);\n }\n\n /**\n * @method getRoundById\n * @description Get a round by its ID.\n * @param {string} id - The ID of the round.\n * @returns {Promise<RoundResponse>} The round response.\n */\n async getRoundById(id: string): Promise<RoundResponse> {\n return await this.round.getRoundById(id);\n }\n\n /**\n * @method getRounds\n * @description Get multiple rounds.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRounds(after: string, limit?: number): Promise<RoundsResponse> {\n return await this.round.getRounds(after, limit);\n }\n\n /**\n * @method getRoundsByStatus\n * @description Get rounds by their status.\n * @param {string} status - The status of the rounds to retrieve.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByStatus(\n status: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.round.getRoundsByStatus(status, after, limit);\n }\n\n /**\n * @method getRoundsByCircuitName\n * @description Get rounds by their circuit name.\n * @param {string} name - The name of the circuit.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByCircuitName(\n name: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.round.getRoundsByCircuitName(name, after, limit);\n }\n\n /**\n * @method getRoundsByOperator\n * @description Get rounds by their operator address.\n * @param {string} address - The address of the operator.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByOperator(\n address: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.round.getRoundsByOperator(address, after, limit);\n }\n\n /**\n * @method getOperatorByAddress\n * @description Get an operator by their address.\n * @param {string} address - The address of the operator.\n * @returns {Promise<OperatorResponse>} The operator response.\n */\n async getOperatorByAddress(address: string): Promise<OperatorResponse> {\n return await this.operator.getOperatorByAddress(address);\n }\n\n /**\n * @method getOperators\n * @description Get multiple operators.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of operators to retrieve.\n * @returns {Promise<OperatorsResponse>} The operators response.\n */\n async getOperators(\n after: string,\n limit?: number\n ): Promise<OperatorsResponse> {\n return await this.operator.getOperators(after, limit);\n }\n\n /**\n * @method getCircuitByName\n * @description Get a circuit by its name.\n * @param {string} name - The name of the circuit.\n * @returns {Promise<CircuitResponse>} The circuit response.\n */\n async getCircuitByName(name: string): Promise<CircuitResponse> {\n return await this.circuit.getCircuitByName(name);\n }\n\n /**\n * @method getCircuits\n * @description Get all available circuits.\n * @returns {Promise<CircuitsResponse>} The circuits response.\n */\n async getCircuits(): Promise<CircuitsResponse> {\n return await this.circuit.getCircuits();\n }\n\n /**\n * @method getTransactionByHash\n * @description Get a transaction by its hash.\n * @param {string} hash - The hash of the transaction.\n * @returns {Promise<TransactionResponse>} The transaction response.\n */\n async getTransactionByHash(hash: string): Promise<TransactionResponse> {\n return await this.transaction.getTransactionByHash(hash);\n }\n\n /**\n * @method getTransactions\n * @description Get multiple transactions.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of transactions to retrieve.\n * @returns {Promise<TransactionsResponse>} The transactions response.\n */\n async getTransactions(\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n return await this.transaction.getTransactions(after, limit);\n }\n\n /**\n * @method getTransactionsByContractAddress\n * @description Get transactions by contract address.\n * @param {string} address - The contract address.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of transactions to retrieve.\n * @returns {Promise<TransactionsResponse>} The transactions response.\n */\n async getTransactionsByContractAddress(\n address: string,\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n return await this.transaction.getTransactionsByContractAddress(\n address,\n after,\n limit\n );\n }\n\n /**\n * @method getProofByContractAddress\n * @description Get proof data by contract address.\n * @param {string} address - The contract address.\n * @returns {Promise<ProofResponse>} The proof response.\n */\n async getProofByContractAddress(address: string): Promise<ProofResponse> {\n return await this.proof.getProofByContractAddress(address);\n }\n}\n","import { Secp256k1HdWallet } from '@cosmjs/launchpad';\nimport { OfflineSigner } from '@cosmjs/proto-signing';\nimport {\n GasPrice,\n SigningStargateClient,\n SigningStargateClientOptions,\n} from '@cosmjs/stargate';\nimport {\n SigningCosmWasmClient,\n SigningCosmWasmClientOptions,\n} from '@cosmjs/cosmwasm-stargate';\nimport { MaciClient } from './ts/Maci.client';\nimport { AMaciClient } from './ts/AMaci.client';\nimport { RegistryClient } from './ts/Registry.client';\nimport { OracleMaciClient } from './ts/OracleMaci.client';\n\nconst defaultSigningClientOptions: SigningStargateClientOptions = {\n broadcastPollIntervalMs: 8_000,\n broadcastTimeoutMs: 64_000,\n gasPrice: GasPrice.fromString('100000000000peaka'),\n};\n\nexport async function createMaciClientBy({\n rpcEndpoint,\n wallet,\n contractAddress,\n}: {\n rpcEndpoint: string;\n wallet: OfflineSigner;\n contractAddress: string;\n}) {\n const signingCosmWasmClient = await createContractClientByWallet(\n rpcEndpoint,\n wallet\n );\n const [{ address }] = await wallet.getAccounts();\n return new MaciClient(signingCosmWasmClient, address, contractAddress);\n}\n\nexport async function createAMaciClientBy({\n rpcEndpoint,\n wallet,\n contractAddress,\n}: {\n rpcEndpoint: string;\n wallet: OfflineSigner;\n contractAddress: string;\n}) {\n const signingCosmWasmClient = await createContractClientByWallet(\n rpcEndpoint,\n wallet\n );\n const [{ address }] = await wallet.getAccounts();\n return new AMaciClient(signingCosmWasmClient, address, contractAddress);\n}\n\nexport async function createRegistryClientBy({\n rpcEndpoint,\n wallet,\n contractAddress,\n}: {\n rpcEndpoint: string;\n wallet: OfflineSigner;\n contractAddress: string;\n}) {\n const signingCosmWasmClient = await createContractClientByWallet(\n rpcEndpoint,\n wallet\n );\n const [{ address }] = await wallet.getAccounts();\n return new RegistryClient(signingCosmWasmClient, address, contractAddress);\n}\n\nexport async function createOracleMaciClientBy({\n rpcEndpoint,\n wallet,\n contractAddress,\n}: {\n rpcEndpoint: string;\n wallet: OfflineSigner;\n contractAddress: string;\n}) {\n const signingCosmWasmClient = await createContractClientByWallet(\n rpcEndpoint,\n wallet\n );\n const [{ address }] = await wallet.getAccounts();\n return new OracleMaciClient(signingCosmWasmClient, address, contractAddress);\n}\n\nexport async function createContractClientByWallet(\n rpcEndpoint: string,\n wallet: OfflineSigner\n) {\n const client = await SigningCosmWasmClient.connectWithSigner(\n rpcEndpoint,\n wallet,\n {\n ...defaultSigningClientOptions,\n }\n );\n return client;\n}\n\nexport async function getSignerClientByWallet(\n rpcEndpoint: string,\n wallet: OfflineSigner\n) {\n const signingStargateClient = await SigningStargateClient.connectWithSigner(\n rpcEndpoint,\n wallet,\n {\n ...defaultSigningClientOptions,\n }\n );\n return signingStargateClient;\n}\n","/**\n * This file was automatically generated by @cosmwasm/ts-codegen@0.30.1.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run the @cosmwasm/ts-codegen generate command to regenerate this file.\n */\n\nimport {\n\tCosmWasmClient,\n\tSigningCosmWasmClient,\n\tExecuteResult,\n} from '@cosmjs/cosmwasm-stargate';\nimport { Coin, StdFee } from '@cosmjs/amino';\nimport {\n\tUint256,\n\tTimestamp,\n\tUint64,\n\tInstantiateMsg,\n\tPubKey,\n\tGroth16VKeyType,\n\tMaciParameters,\n\tQuinaryTreeRoot,\n\tRoundInfo,\n\tVotingTime,\n\tWhitelist,\n\tWhitelistConfig,\n\tExecuteMsg,\n\tUint128,\n\tMessageData,\n\tGroth16ProofType,\n\tQueryMsg,\n\tAddr,\n\tPeriodStatus,\n\tPeriod,\n\tBoolean,\n\tArrayOfString,\n} from './Maci.types';\nexport interface MaciReadOnlyInterface {\n\tcontractAddress: string;\n\tgetRoundInfo: () => Promise<RoundInfo>;\n\tgetVotingTime: () => Promise<VotingTime>;\n\tgetPeriod: () => Promise<Period>;\n\tgetNumSignUp: () => Promise<Uint256>;\n\tgetMsgChainLength: () => Promise<Uint256>;\n\tgetDMsgChainLength: () => Promise<Uint256>;\n\tgetProcessedDMsgCount: () => Promise<Uint256>;\n\tgetProcessedMsgCount: () => Promise<Uint256>;\n\tgetProcessedUserCount: () => Promise<Uint256>;\n\tgetResult: ({ index }: { index: Uint256 }) => Promise<Uint256>;\n\tgetAllResult: () => Promise<Uint256>;\n\tgetStateIdxInc: ({ address }: { address: Addr }) => Promise<Uint256>;\n\tgetVoiceCreditBalance: ({ index }: { index: Uint256 }) => Promise<Uint256>;\n\twhiteList: () => Promise<Whitelist>;\n\tisWhiteList: ({ sender }: { sender: string }) => Promise<Boolean>;\n\tvoteOptionMap: () => Promise<ArrayOfString>;\n\tmaxVoteOptions: () => Promise<Uint256>;\n\tqueryTotalFeeGrant: () => Promise<Uint128>;\n\tqueryCircuitType: () => Promise<Uint256>;\n\tqueryCertSystem: () => Promise<Uint256>;\n}\nexport class MaciQueryClient implements MaciReadOnlyInterface {\n\tclient: CosmWasmClient;\n\tcontractAddress: string;\n\n\tconstructor(client: CosmWasmClient, contractAddress: string) {\n\t\tthis.client = client;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.getRoundInfo = this.getRoundInfo.bind(this);\n\t\tthis.getVotingTime = this.getVotingTime.bind(this);\n\t\tthis.getPeriod = this.getPeriod.bind(this);\n\t\tthis.getNumSignUp = this.getNumSignUp.bind(this);\n\t\tthis.getMsgChainLength = this.getMsgChainLength.bind(this);\n\t\tthis.getDMsgChainLength = this.getDMsgChainLength.bind(this);\n\t\tthis.getProcessedDMsgCount = this.getProcessedDMsgCount.bind(this);\n\t\tthis.getProcessedMsgCount = this.getProcessedMsgCount.bind(this);\n\t\tthis.getProcessedUserCount = this.getProcessedUserCount.bind(this);\n\t\tthis.getResult = this.getResult.bind(this);\n\t\tthis.getAllResult = this.getAllResult.bind(this);\n\t\tthis.getStateIdxInc = this.getStateIdxInc.bind(this);\n\t\tthis.getVoiceCreditBalance = this.getVoiceCreditBalance.bind(this);\n\t\tthis.whiteList = this.whiteList.bind(this);\n\t\tthis.isWhiteList = this.isWhiteList.bind(this);\n\t\tthis.voteOptionMap = this.voteOptionMap.bind(this);\n\t\tthis.maxVoteOptions = this.maxVoteOptions.bind(this);\n\t\tthis.queryTotalFeeGrant = this.queryTotalFeeGrant.bind(this);\n\t\tthis.queryCircuitType = this.queryCircuitType.bind(this);\n\t\tthis.queryCertSystem = this.queryCertSystem.bind(this);\n\t}\n\n\tgetRoundInfo = async (): Promise<RoundInfo> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_round_info: {},\n\t\t});\n\t};\n\tgetVotingTime = async (): Promise<VotingTime> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voting_time: {},\n\t\t});\n\t};\n\tgetPeriod = async (): Promise<Period> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_period: {},\n\t\t});\n\t};\n\tgetNumSignUp = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_num_sign_up: {},\n\t\t});\n\t};\n\tgetMsgChainLength = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_msg_chain_length: {},\n\t\t});\n\t};\n\tgetDMsgChainLength = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_d_msg_chain_length: {},\n\t\t});\n\t};\n\tgetProcessedDMsgCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_d_msg_count: {},\n\t\t});\n\t};\n\tgetProcessedMsgCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_msg_count: {},\n\t\t});\n\t};\n\tgetProcessedUserCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_user_count: {},\n\t\t});\n\t};\n\tgetResult = async ({ index }: { index: Uint256 }): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_result: {\n\t\t\t\tindex,\n\t\t\t},\n\t\t});\n\t};\n\tgetAllResult = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_all_result: {},\n\t\t});\n\t};\n\tgetStateIdxInc = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_state_idx_inc: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetVoiceCreditBalance = async ({\n\t\tindex,\n\t}: {\n\t\tindex: Uint256;\n\t}): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voice_credit_balance: {\n\t\t\t\tindex,\n\t\t\t},\n\t\t});\n\t};\n\twhiteList = async (): Promise<Whitelist> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\twhite_list: {},\n\t\t});\n\t};\n\tisWhiteList = async ({ sender }: { sender: string }): Promise<Boolean> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tis_white_list: {\n\t\t\t\tsender,\n\t\t\t},\n\t\t});\n\t};\n\tvoteOptionMap = async (): Promise<ArrayOfString> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tvote_option_map: {},\n\t\t});\n\t};\n\tmaxVoteOptions = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tmax_vote_options: {},\n\t\t});\n\t};\n\tqueryTotalFeeGrant = async (): Promise<Uint128> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_total_fee_grant: {},\n\t\t});\n\t};\n\tqueryCircuitType = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_circuit_type: {},\n\t\t});\n\t};\n\tqueryCertSystem = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_cert_system: {},\n\t\t});\n\t};\n}\nexport interface MaciInterface extends MaciReadOnlyInterface {\n\tcontractAddress: string;\n\tsender: string;\n\tsetParams: (\n\t\t{\n\t\t\tintStateTreeDepth,\n\t\t\tmessageBatchSize,\n\t\t\tstateTreeDepth,\n\t\t\tvoteOptionTreeDepth,\n\t\t}: {\n\t\t\tintStateTreeDepth: Uint256;\n\t\t\tmessageBatchSize: Uint256;\n\t\t\tstateTreeDepth: Uint256;\n\t\t\tvoteOptionTreeDepth: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetRoundInfo: (\n\t\t{\n\t\t\troundInfo,\n\t\t}: {\n\t\t\troundInfo: RoundInfo;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetWhitelists: (\n\t\t{\n\t\t\twhitelists,\n\t\t}: {\n\t\t\twhitelists: Whitelist;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetVoteOptionsMap: (\n\t\t{\n\t\t\tvoteOptionMap,\n\t\t}: {\n\t\t\tvoteOptionMap: string[];\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstartVotingPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsignUp: (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstartProcessPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopVotingPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpublishDeactivateMessage: (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessDeactivateMessage: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewDeactivateCommitment,\n\t\t\tnewDeactivateRoot,\n\t\t\tsize,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewDeactivateCommitment: Uint256;\n\t\t\tnewDeactivateRoot: Uint256;\n\t\t\tsize: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\taddNewKey: (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpublishMessage: (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessMessage: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewStateCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewStateCommitment: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopProcessingPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessTally: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewTallyCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewTallyCommitment: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopTallyingPeriod: (\n\t\t{\n\t\t\tresults,\n\t\t\tsalt,\n\t\t}: {\n\t\t\tresults: Uint256[];\n\t\t\tsalt: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tgrant: (\n\t\t{\n\t\t\tmaxAmount,\n\t\t}: {\n\t\t\tmaxAmount: Uint128;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\trevoke: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tbond: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\twithdraw: (\n\t\t{\n\t\t\tamount,\n\t\t}: {\n\t\t\tamount?: Uint128;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n}\nexport class MaciClient extends MaciQueryClient implements MaciInterface {\n\tclient: SigningCosmWasmClient;\n\tsender: string;\n\tcontractAddress: string;\n\n\tconstructor(\n\t\tclient: SigningCosmWasmClient,\n\t\tsender: string,\n\t\tcontractAddress: string\n\t) {\n\t\tsuper(client, contractAddress);\n\t\tthis.client = client;\n\t\tthis.sender = sender;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.setParams = this.setParams.bind(this);\n\t\tthis.setRoundInfo = this.setRoundInfo.bind(this);\n\t\tthis.setWhitelists = this.setWhitelists.bind(this);\n\t\tthis.setVoteOptionsMap = this.setVoteOptionsMap.bind(this);\n\t\tthis.startVotingPeriod = this.startVotingPeriod.bind(this);\n\t\tthis.signUp = this.signUp.bind(this);\n\t\tthis.startProcessPeriod = this.startProcessPeriod.bind(this);\n\t\tthis.stopVotingPeriod = this.stopVotingPeriod.bind(this);\n\t\tthis.publishDeactivateMessage =\n\t\t\tthis.publishDeactivateMessage.bind(this);\n\t\tthis.processDeactivateMessage =\n\t\t\tthis.processDeactivateMessage.bind(this);\n\t\tthis.addNewKey = this.addNewKey.bind(this);\n\t\tthis.publishMessage = this.publishMessage.bind(this);\n\t\tthis.processMessage = this.processMessage.bind(this);\n\t\tthis.stopProcessingPeriod = this.stopProcessingPeriod.bind(this);\n\t\tthis.processTally = this.processTally.bind(this);\n\t\tthis.stopTallyingPeriod = this.stopTallyingPeriod.bind(this);\n\t\tthis.grant = this.grant.bind(this);\n\t\tthis.revoke = this.revoke.bind(this);\n\t\tthis.bond = this.bond.bind(this);\n\t\tthis.withdraw = this.withdraw.bind(this);\n\t}\n\n\tsetParams = async (\n\t\t{\n\t\t\tintStateTreeDepth,\n\t\t\tmessageBatchSize,\n\t\t\tstateTreeDepth,\n\t\t\tvoteOptionTreeDepth,\n\t\t}: {\n\t\t\tintStateTreeDepth: Uint256;\n\t\t\tmessageBatchSize: Uint256;\n\t\t\tstateTreeDepth: Uint256;\n\t\t\tvoteOptionTreeDepth: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_params: {\n\t\t\t\t\tint_state_tree_depth: intStateTreeDepth,\n\t\t\t\t\tmessage_batch_size: messageBatchSize,\n\t\t\t\t\tstate_tree_depth: stateTreeDepth,\n\t\t\t\t\tvote_option_tree_depth: voteOptionTreeDepth,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetRoundInfo = async (\n\t\t{\n\t\t\troundInfo,\n\t\t}: {\n\t\t\troundInfo: RoundInfo;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_round_info: {\n\t\t\t\t\tround_info: roundInfo,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetWhitelists = async (\n\t\t{\n\t\t\twhitelists,\n\t\t}: {\n\t\t\twhitelists: Whitelist;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_whitelists: {\n\t\t\t\t\twhitelists,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetVoteOptionsMap = async (\n\t\t{\n\t\t\tvoteOptionMap,\n\t\t}: {\n\t\t\tvoteOptionMap: string[];\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_vote_options_map: {\n\t\t\t\t\tvote_option_map: voteOptionMap,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstartVotingPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstart_voting_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsignUp = async (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tsign_up: {\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstartProcessPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstart_process_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopVotingPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_voting_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpublishDeactivateMessage = async (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpublish_deactivate_message: {\n\t\t\t\t\tenc_pub_key: encPubKey,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessDeactivateMessage = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewDeactivateCommitment,\n\t\t\tnewDeactivateRoot,\n\t\t\tsize,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewDeactivateCommitment: Uint256;\n\t\t\tnewDeactivateRoot: Uint256;\n\t\t\tsize: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_deactivate_message: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_deactivate_commitment: newDeactivateCommitment,\n\t\t\t\t\tnew_deactivate_root: newDeactivateRoot,\n\t\t\t\t\tsize,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\taddNewKey = async (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tadd_new_key: {\n\t\t\t\t\td,\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnullifier,\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpublishMessage = async (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpublish_message: {\n\t\t\t\t\tenc_pub_key: encPubKey,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessMessage = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewStateCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewStateCommitment: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_message: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_state_commitment: newStateCommitment,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopProcessingPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_processing_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessTally = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewTallyCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewTallyCommitment: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_tally: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_tally_commitment: newTallyCommitment,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopTallyingPeriod = async (\n\t\t{\n\t\t\tresults,\n\t\t\tsalt,\n\t\t}: {\n\t\t\tresults: Uint256[];\n\t\t\tsalt: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_tallying_period: {\n\t\t\t\t\tresults,\n\t\t\t\t\tsalt,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tgrant = async (\n\t\t{\n\t\t\tmaxAmount,\n\t\t}: {\n\t\t\tmaxAmount: Uint128;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tgrant: {\n\t\t\t\t\tmax_amount: maxAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\trevoke = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\trevoke: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tbond = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tbond: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\twithdraw = async (\n\t\t{\n\t\t\tamount,\n\t\t}: {\n\t\t\tamount?: Uint128;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\twithdraw: {\n\t\t\t\t\tamount,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n}\n","/**\n * This file was automatically generated by @cosmwasm/ts-codegen@1.11.1.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run the @cosmwasm/ts-codegen generate command to regenerate this file.\n */\n\nimport {\n\tCosmWasmClient,\n\tSigningCosmWasmClient,\n\tExecuteResult,\n} from '@cosmjs/cosmwasm-stargate';\nimport { Coin, StdFee } from '@cosmjs/amino';\nimport {\n\tAddr,\n\tUint256,\n\tTimestamp,\n\tUint64,\n\tInstantiateMsg,\n\tPubKey,\n\tMaciParameters,\n\tRoundInfo,\n\tVotingTime,\n\tWhitelist,\n\tWhitelistConfig,\n\tExecuteMsg,\n\tUint128,\n\tMessageData,\n\tGroth16ProofType,\n\tQueryMsg,\n\tPeriodStatus,\n\tPeriod,\n\tBoolean,\n\tArrayOfString,\n} from './AMaci.types';\nexport interface AMaciReadOnlyInterface {\n\tcontractAddress: string;\n\tadmin: () => Promise<Addr>;\n\toperator: () => Promise<Addr>;\n\tgetRoundInfo: () => Promise<RoundInfo>;\n\tgetVotingTime: () => Promise<VotingTime>;\n\tgetPeriod: () => Promise<Period>;\n\tgetNumSignUp: () => Promise<Uint256>;\n\tgetMsgChainLength: () => Promise<Uint256>;\n\tgetDMsgChainLength: () => Promise<Uint256>;\n\tgetProcessedDMsgCount: () => Promise<Uint256>;\n\tgetProcessedMsgCount: () => Promise<Uint256>;\n\tgetProcessedUserCount: () => Promise<Uint256>;\n\tgetResult: ({ index }: { index: Uint256 }) => Promise<Uint256>;\n\tgetAllResult: () => Promise<Uint256>;\n\tgetStateIdxInc: ({ address }: { address: Addr }) => Promise<Uint256>;\n\tgetVoiceCreditBalance: ({ index }: { index: Uint256 }) => Promise<Uint256>;\n\tgetVoiceCreditAmount: () => Promise<Uint256>;\n\twhiteList: () => Promise<Whitelist>;\n\tisWhiteList: ({ sender }: { sender: Addr }) => Promise<Boolean>;\n\tsignuped: ({ pubkeyX }: { pubkeyX: Uint256 }) => Promise<Uint256>;\n\tvoteOptionMap: () => Promise<ArrayOfString>;\n\tmaxVoteOptions: () => Promise<Uint256>;\n\tqueryTotalFeeGrant: () => Promise<Uint128>;\n\tqueryCircuitType: () => Promise<Uint256>;\n\tqueryCertSystem: () => Promise<Uint256>;\n\tqueryPreDeactivateRoot: () => Promise<Uint256>;\n}\nexport class AMaciQueryClient implements AMaciReadOnlyInterface {\n\tclient: CosmWasmClient;\n\tcontractAddress: string;\n\tconstructor(client: CosmWasmClient, contractAddress: string) {\n\t\tthis.client = client;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.admin = this.admin.bind(this);\n\t\tthis.operator = this.operator.bind(this);\n\t\tthis.getRoundInfo = this.getRoundInfo.bind(this);\n\t\tthis.getVotingTime = this.getVotingTime.bind(this);\n\t\tthis.getPeriod = this.getPeriod.bind(this);\n\t\tthis.getNumSignUp = this.getNumSignUp.bind(this);\n\t\tthis.getMsgChainLength = this.getMsgChainLength.bind(this);\n\t\tthis.getDMsgChainLength = this.getDMsgChainLength.bind(this);\n\t\tthis.getProcessedDMsgCount = this.getProcessedDMsgCount.bind(this);\n\t\tthis.getProcessedMsgCount = this.getProcessedMsgCount.bind(this);\n\t\tthis.getProcessedUserCount = this.getProcessedUserCount.bind(this);\n\t\tthis.getResult = this.getResult.bind(this);\n\t\tthis.getAllResult = this.getAllResult.bind(this);\n\t\tthis.getStateIdxInc = this.getStateIdxInc.bind(this);\n\t\tthis.getVoiceCreditBalance = this.getVoiceCreditBalance.bind(this);\n\t\tthis.getVoiceCreditAmount = this.getVoiceCreditAmount.bind(this);\n\t\tthis.whiteList = this.whiteList.bind(this);\n\t\tthis.isWhiteList = this.isWhiteList.bind(this);\n\t\tthis.signuped = this.signuped.bind(this);\n\t\tthis.voteOptionMap = this.voteOptionMap.bind(this);\n\t\tthis.maxVoteOptions = this.maxVoteOptions.bind(this);\n\t\tthis.queryTotalFeeGrant = this.queryTotalFeeGrant.bind(this);\n\t\tthis.queryCircuitType = this.queryCircuitType.bind(this);\n\t\tthis.queryCertSystem = this.queryCertSystem.bind(this);\n\t\tthis.queryPreDeactivateRoot = this.queryPreDeactivateRoot.bind(this);\n\t}\n\tadmin = async (): Promise<Addr> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tadmin: {},\n\t\t});\n\t};\n\toperator = async (): Promise<Addr> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\toperator: {},\n\t\t});\n\t};\n\tgetRoundInfo = async (): Promise<RoundInfo> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_round_info: {},\n\t\t});\n\t};\n\tgetVotingTime = async (): Promise<VotingTime> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voting_time: {},\n\t\t});\n\t};\n\tgetPeriod = async (): Promise<Period> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_period: {},\n\t\t});\n\t};\n\tgetNumSignUp = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_num_sign_up: {},\n\t\t});\n\t};\n\tgetMsgChainLength = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_msg_chain_length: {},\n\t\t});\n\t};\n\tgetDMsgChainLength = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_d_msg_chain_length: {},\n\t\t});\n\t};\n\tgetProcessedDMsgCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_d_msg_count: {},\n\t\t});\n\t};\n\tgetProcessedMsgCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_msg_count: {},\n\t\t});\n\t};\n\tgetProcessedUserCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_user_count: {},\n\t\t});\n\t};\n\tgetResult = async ({ index }: { index: Uint256 }): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_result: {\n\t\t\t\tindex,\n\t\t\t},\n\t\t});\n\t};\n\tgetAllResult = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_all_result: {},\n\t\t});\n\t};\n\tgetStateIdxInc = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_state_idx_inc: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetVoiceCreditBalance = async ({\n\t\tindex,\n\t}: {\n\t\tindex: Uint256;\n\t}): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voice_credit_balance: {\n\t\t\t\tindex,\n\t\t\t},\n\t\t});\n\t};\n\tgetVoiceCreditAmount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voice_credit_amount: {},\n\t\t});\n\t};\n\twhiteList = async (): Promise<Whitelist> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\twhite_list: {},\n\t\t});\n\t};\n\tisWhiteList = async ({ sender }: { sender: Addr }): Promise<Boolean> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tis_white_list: {\n\t\t\t\tsender,\n\t\t\t},\n\t\t});\n\t};\n\tsignuped = async ({ pubkeyX }: { pubkeyX: Uint256 }): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tsignuped: {\n\t\t\t\tpubkey_x: pubkeyX,\n\t\t\t},\n\t\t});\n\t};\n\tvoteOptionMap = async (): Promise<ArrayOfString> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tvote_option_map: {},\n\t\t});\n\t};\n\tmaxVoteOptions = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tmax_vote_options: {},\n\t\t});\n\t};\n\tqueryTotalFeeGrant = async (): Promise<Uint128> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_total_fee_grant: {},\n\t\t});\n\t};\n\tqueryCircuitType = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_circuit_type: {},\n\t\t});\n\t};\n\tqueryCertSystem = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_cert_system: {},\n\t\t});\n\t};\n\tqueryPreDeactivateRoot = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_pre_deactivate_root: {},\n\t\t});\n\t};\n}\nexport interface AMaciInterface extends AMaciReadOnlyInterface {\n\tcontractAddress: string;\n\tsender: string;\n\tsetRoundInfo: (\n\t\t{\n\t\t\troundInfo,\n\t\t}: {\n\t\t\troundInfo: RoundInfo;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetWhitelists: (\n\t\t{\n\t\t\twhitelists,\n\t\t}: {\n\t\t\twhitelists: Whitelist;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetVoteOptionsMap: (\n\t\t{\n\t\t\tvoteOptionMap,\n\t\t}: {\n\t\t\tvoteOptionMap: string[];\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsignUp: (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstartProcessPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpublishDeactivateMessage: (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessDeactivateMessage: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewDeactivateCommitment,\n\t\t\tnewDeactivateRoot,\n\t\t\tsize,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewDeactivateCommitment: Uint256;\n\t\t\tnewDeactivateRoot: Uint256;\n\t\t\tsize: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\taddNewKey: (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpreAddNewKey: (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpublishMessage: (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessMessage: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewStateCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewStateCommitment: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopProcessingPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessTally: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewTallyCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewTallyCommitment: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopTallyingPeriod: (\n\t\t{\n\t\t\tresults,\n\t\t\tsalt,\n\t\t}: {\n\t\t\tresults: Uint256[];\n\t\t\tsalt: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tgrant: (\n\t\t{\n\t\t\tmaxAmount,\n\t\t}: {\n\t\t\tmaxAmount: Uint128;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\trevoke: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tbond: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\twithdraw: (\n\t\t{\n\t\t\tamount,\n\t\t}: {\n\t\t\tamount?: Uint128;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n}\nexport class AMaciClient extends AMaciQueryClient implements AMaciInterface {\n\tclient: SigningCosmWasmClient;\n\tsender: string;\n\tcontractAddress: string;\n\tconstructor(\n\t\tclient: SigningCosmWasmClient,\n\t\tsender: string,\n\t\tcontractAddress: string\n\t) {\n\t\tsuper(client, contractAddress);\n\t\tthis.client = client;\n\t\tthis.sender = sender;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.setRoundInfo = this.setRoundInfo.bind(this);\n\t\tthis.setWhitelists = this.setWhitelists.bind(this);\n\t\tthis.setVoteOptionsMap = this.setVoteOptionsMap.bind(this);\n\t\tthis.signUp = this.signUp.bind(this);\n\t\tthis.startProcessPeriod = this.startProcessPeriod.bind(this);\n\t\tthis.publishDeactivateMessage =\n\t\t\tthis.publishDeactivateMessage.bind(this);\n\t\tthis.processDeactivateMessage =\n\t\t\tthis.processDeactivateMessage.bind(this);\n\t\tthis.addNewKey = this.addNewKey.bind(this);\n\t\tthis.preAddNewKey = this.preAddNewKey.bind(this);\n\t\tthis.publishMessage = this.publishMessage.bind(this);\n\t\tthis.processMessage = this.processMessage.bind(this);\n\t\tthis.stopProcessingPeriod = this.stopProcessingPeriod.bind(this);\n\t\tthis.processTally = this.processTally.bind(this);\n\t\tthis.stopTallyingPeriod = this.stopTallyingPeriod.bind(this);\n\t\tthis.grant = this.grant.bind(this);\n\t\tthis.revoke = this.revoke.bind(this);\n\t\tthis.bond = this.bond.bind(this);\n\t\tthis.withdraw = this.withdraw.bind(this);\n\t}\n\tsetRoundInfo = async (\n\t\t{\n\t\t\troundInfo,\n\t\t}: {\n\t\t\troundInfo: RoundInfo;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_round_info: {\n\t\t\t\t\tround_info: roundInfo,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetWhitelists = async (\n\t\t{\n\t\t\twhitelists,\n\t\t}: {\n\t\t\twhitelists: Whitelist;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_whitelists: {\n\t\t\t\t\twhitelists,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetVoteOptionsMap = async (\n\t\t{\n\t\t\tvoteOptionMap,\n\t\t}: {\n\t\t\tvoteOptionMap: string[];\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_vote_options_map: {\n\t\t\t\t\tvote_option_map: voteOptionMap,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsignUp = async (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tsign_up: {\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstartProcessPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstart_process_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpublishDeactivateMessage = async (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpublish_deactivate_message: {\n\t\t\t\t\tenc_pub_key: encPubKey,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessDeactivateMessage = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewDeactivateCommitment,\n\t\t\tnewDeactivateRoot,\n\t\t\tsize,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewDeactivateCommitment: Uint256;\n\t\t\tnewDeactivateRoot: Uint256;\n\t\t\tsize: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_deactivate_message: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_deactivate_commitment: newDeactivateCommitment,\n\t\t\t\t\tnew_deactivate_root: newDeactivateRoot,\n\t\t\t\t\tsize,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\taddNewKey = async (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tadd_new_key: {\n\t\t\t\t\td,\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnullifier,\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpreAddNewKey = async (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpre_add_new_key: {\n\t\t\t\t\td,\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnullifier,\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpublishMessage = async (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpublish_message: {\n\t\t\t\t\tenc_pub_key: encPubKey,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessMessage = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewStateCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewStateCommitment: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_message: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_state_commitment: newStateCommitment,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopProcessingPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_processing_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessTally = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewTallyCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewTallyCommitment: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_tally: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_tally_commitment: newTallyCommitment,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopTallyingPeriod = async (\n\t\t{\n\t\t\tresults,\n\t\t\tsalt,\n\t\t}: {\n\t\t\tresults: Uint256[];\n\t\t\tsalt: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_tallying_period: {\n\t\t\t\t\tresults,\n\t\t\t\t\tsalt,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tgrant = async (\n\t\t{\n\t\t\tmaxAmount,\n\t\t}: {\n\t\t\tmaxAmount: Uint128;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tgrant: {\n\t\t\t\t\tmax_amount: maxAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\trevoke = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\trevoke: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tbond = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tbond: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\twithdraw = async (\n\t\t{\n\t\t\tamount,\n\t\t}: {\n\t\t\tamount?: Uint128;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\twithdraw: {\n\t\t\t\t\tamount,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n}\n","/**\n * This file was automatically generated by @cosmwasm/ts-codegen@1.11.1.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run the @cosmwasm/ts-codegen generate command to regenerate this file.\n */\n\nimport {\n\tCosmWasmClient,\n\tSigningCosmWasmClient,\n\tExecuteResult,\n} from '@cosmjs/cosmwasm-stargate';\nimport { Coin, StdFee } from '@cosmjs/amino';\nimport {\n\tAddr,\n\tInstantiateMsg,\n\tExecuteMsg,\n\tUint256,\n\tTimestamp,\n\tUint64,\n\tPubKey,\n\tRoundInfo,\n\tVotingTime,\n\tWhitelist,\n\tWhitelistConfig,\n\tValidatorSet,\n\tQueryMsg,\n\tAdminResponse,\n\tString,\n\tBoolean,\n} from './Registry.types';\nexport interface RegistryReadOnlyInterface {\n\tcontractAddress: string;\n\tadmin: () => Promise<AdminResponse>;\n\toperator: () => Promise<Addr>;\n\tisMaciOperator: ({ address }: { address: Addr }) => Promise<Boolean>;\n\tisValidator: ({ address }: { address: Addr }) => Promise<Boolean>;\n\tgetValidators: () => Promise<ValidatorSet>;\n\tgetValidatorOperator: ({ address }: { address: Addr }) => Promise<Addr>;\n\tgetMaciOperatorPubkey: ({ address }: { address: Addr }) => Promise<PubKey>;\n\tgetMaciOperatorIdentity: ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}) => Promise<String>;\n}\nexport class RegistryQueryClient implements RegistryReadOnlyInterface {\n\tclient: CosmWasmClient;\n\tcontractAddress: string;\n\tconstructor(client: CosmWasmClient, contractAddress: string) {\n\t\tthis.client = client;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.admin = this.admin.bind(this);\n\t\tthis.operator = this.operator.bind(this);\n\t\tthis.isMaciOperator = this.isMaciOperator.bind(this);\n\t\tthis.isValidator = this.isValidator.bind(this);\n\t\tthis.getValidators = this.getValidators.bind(this);\n\t\tthis.getValidatorOperator = this.getValidatorOperator.bind(this);\n\t\tthis.getMaciOperatorPubkey = this.getMaciOperatorPubkey.bind(this);\n\t\tthis.getMaciOperatorIdentity = this.getMaciOperatorIdentity.bind(this);\n\t}\n\tadmin = async (): Promise<AdminResponse> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tadmin: {},\n\t\t});\n\t};\n\toperator = async (): Promise<Addr> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\toperator: {},\n\t\t});\n\t};\n\tisMaciOperator = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<Boolean> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tis_maci_operator: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tisValidator = async ({ address }: { address: Addr }): Promise<Boolean> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tis_validator: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetValidators = async (): Promise<ValidatorSet> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_validators: {},\n\t\t});\n\t};\n\tgetValidatorOperator = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<Addr> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_validator_operator: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetMaciOperatorPubkey = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<PubKey> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_maci_operator_pubkey: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetMaciOperatorIdentity = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<String> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_maci_operator_identity: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n}\nexport interface RegistryInterface extends RegistryReadOnlyInterface {\n\tcontractAddress: string;\n\tsender: string;\n\tsetMaciOperator: (\n\t\t{\n\t\t\toperator,\n\t\t}: {\n\t\t\toperator: Addr;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetMaciOperatorPubkey: (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetMaciOperatorIdentity: (\n\t\t{\n\t\t\tidentity,\n\t\t}: {\n\t\t\tidentity: string;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tcreateRound: (\n\t\t{\n\t\t\tcertificationSystem,\n\t\t\tcircuitType,\n\t\t\tmaxOption,\n\t\t\tmaxVoter,\n\t\t\toperator,\n\t\t\tpreDeactivateRoot,\n\t\t\troundInfo,\n\t\t\tvoiceCreditAmount,\n\t\t\tvotingTime,\n\t\t\twhitelist,\n\t\t}: {\n\t\t\tcertificationSystem: Uint256;\n\t\t\tcircuitType: Uint256;\n\t\t\tmaxOption: Uint256;\n\t\t\tmaxVoter: Uint256;\n\t\t\toperator: Addr;\n\t\t\tpreDeactivateRoot: Uint256;\n\t\t\troundInfo: RoundInfo;\n\t\t\tvoiceCreditAmount: Uint256;\n\t\t\tvotingTime: VotingTime;\n\t\t\twhitelist?: Whitelist;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetValidators: (\n\t\t{\n\t\t\taddresses,\n\t\t}: {\n\t\t\taddresses: ValidatorSet;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tremoveValidator: (\n\t\t{\n\t\t\taddress,\n\t\t}: {\n\t\t\taddress: Addr;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tupdateAmaciCodeId: (\n\t\t{\n\t\t\tamaciCodeId,\n\t\t}: {\n\t\t\tamaciCodeId: number;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tchangeOperator: (\n\t\t{\n\t\t\taddress,\n\t\t}: {\n\t\t\taddress: Addr;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n}\nexport class RegistryClient\n\textends RegistryQueryClient\n\timplements RegistryInterface\n{\n\tclient: SigningCosmWasmClient;\n\tsender: string;\n\tcontractAddress: string;\n\tconstructor(\n\t\tclient: SigningCosmWasmClient,\n\t\tsender: string,\n\t\tcontractAddress: string\n\t) {\n\t\tsuper(client, contractAddress);\n\t\tthis.client = client;\n\t\tthis.sender = sender;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.setMaciOperator = this.setMaciOperator.bind(this);\n\t\tthis.setMaciOperatorPubkey = this.setMaciOperatorPubkey.bind(this);\n\t\tthis.setMaciOperatorIdentity = this.setMaciOperatorIdentity.bind(this);\n\t\tthis.createRound = this.createRound.bind(this);\n\t\tthis.setValidators = this.setValidators.bind(this);\n\t\tthis.removeValidator = this.removeValidator.bind(this);\n\t\tthis.updateAmaciCodeId = this.updateAmaciCodeId.bind(this);\n\t\tthis.changeOperator = this.changeOperator.bind(this);\n\t}\n\tsetMaciOperator = async (\n\t\t{\n\t\t\toperator,\n\t\t}: {\n\t\t\toperator: Addr;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_maci_operator: {\n\t\t\t\t\toperator,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetMaciOperatorPubkey = async (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_maci_operator_pubkey: {\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetMaciOperatorIdentity = async (\n\t\t{\n\t\t\tidentity,\n\t\t}: {\n\t\t\tidentity: string;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_maci_operator_identity: {\n\t\t\t\t\tidentity,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tcreateRound = async (\n\t\t{\n\t\t\tcertificationSystem,\n\t\t\tcircuitType,\n\t\t\tmaxOption,\n\t\t\tmaxVoter,\n\t\t\toperator,\n\t\t\tpreDeactivateRoot,\n\t\t\troundInfo,\n\t\t\tvoiceCreditAmount,\n\t\t\tvotingTime,\n\t\t\twhitelist,\n\t\t}: {\n\t\t\tcertificationSystem: Uint256;\n\t\t\tcircuitType: Uint256;\n\t\t\tmaxOption: Uint256;\n\t\t\tmaxVoter: Uint256;\n\t\t\toperator: Addr;\n\t\t\tpreDeactivateRoot: Uint256;\n\t\t\troundInfo: RoundInfo;\n\t\t\tvoiceCreditAmount: Uint256;\n\t\t\tvotingTime: VotingTime;\n\t\t\twhitelist?: Whitelist;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tcreate_round: {\n\t\t\t\t\tcertification_system: certificationSystem,\n\t\t\t\t\tcircuit_type: circuitType,\n\t\t\t\t\tmax_option: maxOption,\n\t\t\t\t\tmax_voter: maxVoter,\n\t\t\t\t\toperator,\n\t\t\t\t\tpre_deactivate_root: preDeactivateRoot,\n\t\t\t\t\tround_info: roundInfo,\n\t\t\t\t\tvoice_credit_amount: voiceCreditAmount,\n\t\t\t\t\tvoting_time: votingTime,\n\t\t\t\t\twhitelist,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetValidators = async (\n\t\t{\n\t\t\taddresses,\n\t\t}: {\n\t\t\taddresses: ValidatorSet;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_validators: {\n\t\t\t\t\taddresses,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tremoveValidator = async (\n\t\t{\n\t\t\taddress,\n\t\t}: {\n\t\t\taddress: Addr;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tremove_validator: {\n\t\t\t\t\taddress,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tupdateAmaciCodeId = async (\n\t\t{\n\t\t\tamaciCodeId,\n\t\t}: {\n\t\t\tamaciCodeId: number;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tupdate_amaci_code_id: {\n\t\t\t\t\tamaci_code_id: amaciCodeId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tchangeOperator = async (\n\t\t{\n\t\t\taddress,\n\t\t}: {\n\t\t\taddress: Addr;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tchange_operator: {\n\t\t\t\t\taddress,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n}\n","/**\n* This file was automatically generated by @cosmwasm/ts-codegen@1.11.1.\n* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n* and run the @cosmwasm/ts-codegen generate command to regenerate this file.\n*/\n\nimport { CosmWasmClient, SigningCosmWasmClient, ExecuteResult } from \"@cosmjs/cosmwasm-stargate\";\nimport { Coin, StdFee } from \"@cosmjs/amino\";\nimport { Uint256, Addr, Timestamp, Uint64, VotingPowerMode, InstantiateMsg, PubKey, Groth16VKeyType, MaciParameters, PlonkVKeyType, QuinaryTreeRoot, RoundInfo, VotingTime, VotingPowerArgs, ExecuteMsg, Uint128, MessageData, Groth16ProofType, PlonkProofType, QueryMsg, PeriodStatus, Period, GrantConfig, Boolean, Binary, OracleWhitelistConfig, ArrayOfString, WhitelistConfig } from \"./OracleMaci.types\";\nexport interface OracleMaciReadOnlyInterface {\n contractAddress: string;\n getRoundInfo: () => Promise<RoundInfo>;\n getVotingTime: () => Promise<VotingTime>;\n getPeriod: () => Promise<Period>;\n getNumSignUp: () => Promise<Uint256>;\n getMsgChainLength: () => Promise<Uint256>;\n getProcessedMsgCount: () => Promise<Uint256>;\n getProcessedUserCount: () => Promise<Uint256>;\n getResult: ({\n index\n }: {\n index: Uint256;\n }) => Promise<Uint256>;\n getAllResult: () => Promise<Uint256>;\n getStateIdxInc: ({\n address\n }: {\n address: Addr;\n }) => Promise<Uint256>;\n getVoiceCreditBalance: ({\n index\n }: {\n index: Uint256;\n }) => Promise<Uint256>;\n isWhiteList: ({\n amount,\n certificate,\n sender\n }: {\n amount: Uint256;\n certificate: string;\n sender: string;\n }) => Promise<Boolean>;\n whiteBalanceOf: ({\n amount,\n certificate,\n sender\n }: {\n amount: Uint256;\n certificate: string;\n sender: string;\n }) => Promise<Uint256>;\n whiteInfo: ({\n sender\n }: {\n sender: string;\n }) => Promise<WhitelistConfig>;\n grantInfo: ({\n grantee\n }: {\n grantee: string;\n }) => Promise<GrantConfig>;\n maxWhitelistNum: () => Promise<Uint128>;\n voteOptionMap: () => Promise<ArrayOfString>;\n maxVoteOptions: () => Promise<Uint256>;\n queryTotalFeeGrant: () => Promise<Uint128>;\n queryCircuitType: () => Promise<Uint256>;\n queryCertSystem: () => Promise<Uint256>;\n queryOracleWhitelistConfig: () => Promise<OracleWhitelistConfig>;\n}\nexport class OracleMaciQueryClient implements OracleMaciReadOnlyInterface {\n client: CosmWasmClient;\n contractAddress: string;\n constructor(client: CosmWasmClient, contractAddress: string) {\n this.client = client;\n this.contractAddress = contractAddress;\n this.getRoundInfo = this.getRoundInfo.bind(this);\n this.getVotingTime = this.getVotingTime.bind(this);\n this.getPeriod = this.getPeriod.bind(this);\n this.getNumSignUp = this.getNumSignUp.bind(this);\n this.getMsgChainLength = this.getMsgChainLength.bind(this);\n this.getProcessedMsgCount = this.getProcessedMsgCount.bind(this);\n this.getProcessedUserCount = this.getProcessedUserCount.bind(this);\n this.getResult = this.getResult.bind(this);\n this.getAllResult = this.getAllResult.bind(this);\n this.getStateIdxInc = this.getStateIdxInc.bind(this);\n this.getVoiceCreditBalance = this.getVoiceCreditBalance.bind(this);\n this.isWhiteList = this.isWhiteList.bind(this);\n this.whiteBalanceOf = this.whiteBalanceOf.bind(this);\n this.whiteInfo = this.whiteInfo.bind(this);\n this.grantInfo = this.grantInfo.bind(this);\n this.maxWhitelistNum = this.maxWhitelistNum.bind(this);\n this.voteOptionMap = this.voteOptionMap.bind(this);\n this.maxVoteOptions = this.maxVoteOptions.bind(this);\n this.queryTotalFeeGrant = this.queryTotalFeeGrant.bind(this);\n this.queryCircuitType = this.queryCircuitType.bind(this);\n this.queryCertSystem = this.queryCertSystem.bind(this);\n this.queryOracleWhitelistConfig = this.queryOracleWhitelistConfig.bind(this);\n }\n getRoundInfo = async (): Promise<RoundInfo> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_round_info: {}\n });\n };\n getVotingTime = async (): Promise<VotingTime> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_voting_time: {}\n });\n };\n getPeriod = async (): Promise<Period> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_period: {}\n });\n };\n getNumSignUp = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_num_sign_up: {}\n });\n };\n getMsgChainLength = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_msg_chain_length: {}\n });\n };\n getProcessedMsgCount = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_processed_msg_count: {}\n });\n };\n getProcessedUserCount = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_processed_user_count: {}\n });\n };\n getResult = async ({\n index\n }: {\n index: Uint256;\n }): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_result: {\n index\n }\n });\n };\n getAllResult = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_all_result: {}\n });\n };\n getStateIdxInc = async ({\n address\n }: {\n address: Addr;\n }): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_state_idx_inc: {\n address\n }\n });\n };\n getVoiceCreditBalance = async ({\n index\n }: {\n index: Uint256;\n }): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_voice_credit_balance: {\n index\n }\n });\n };\n isWhiteList = async ({\n amount,\n certificate,\n sender\n }: {\n amount: Uint256;\n certificate: string;\n sender: string;\n }): Promise<Boolean> => {\n return this.client.queryContractSmart(this.contractAddress, {\n is_white_list: {\n amount,\n certificate,\n sender\n }\n });\n };\n whiteBalanceOf = async ({\n amount,\n certificate,\n sender\n }: {\n amount: Uint256;\n certificate: string;\n sender: string;\n }): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n white_balance_of: {\n amount,\n certificate,\n sender\n }\n });\n };\n whiteInfo = async ({\n sender\n }: {\n sender: string;\n }): Promise<WhitelistConfig> => {\n return this.client.queryContractSmart(this.contractAddress, {\n white_info: {\n sender\n }\n });\n };\n grantInfo = async ({\n grantee\n }: {\n grantee: string;\n }): Promise<GrantConfig> => {\n return this.client.queryContractSmart(this.contractAddress, {\n grant_info: {\n grantee\n }\n });\n };\n maxWhitelistNum = async (): Promise<Uint128> => {\n return this.client.queryContractSmart(this.contractAddress, {\n max_whitelist_num: {}\n });\n };\n voteOptionMap = async (): Promise<ArrayOfString> => {\n return this.client.queryContractSmart(this.contractAddress, {\n vote_option_map: {}\n });\n };\n maxVoteOptions = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n max_vote_options: {}\n });\n };\n queryTotalFeeGrant = async (): Promise<Uint128> => {\n return this.client.queryContractSmart(this.contractAddress, {\n query_total_fee_grant: {}\n });\n };\n queryCircuitType = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n query_circuit_type: {}\n });\n };\n queryCertSystem = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n query_cert_system: {}\n });\n };\n queryOracleWhitelistConfig = async (): Promise<OracleWhitelistConfig> => {\n return this.client.queryContractSmart(this.contractAddress, {\n query_oracle_whitelist_config: {}\n });\n };\n}\nexport interface OracleMaciInterface extends OracleMaciReadOnlyInterface {\n contractAddress: string;\n sender: string;\n setParams: ({\n intStateTreeDepth,\n messageBatchSize,\n stateTreeDepth,\n voteOptionTreeDepth\n }: {\n intStateTreeDepth: Uint256;\n messageBatchSize: Uint256;\n stateTreeDepth: Uint256;\n voteOptionTreeDepth: Uint256;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n setRoundInfo: ({\n roundInfo\n }: {\n roundInfo: RoundInfo;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n setVoteOptionsMap: ({\n voteOptionMap\n }: {\n voteOptionMap: string[];\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n startVotingPeriod: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n signUp: ({\n amount,\n certificate,\n pubkey\n }: {\n amount: Uint256;\n certificate: string;\n pubkey: PubKey;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n startProcessPeriod: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n stopVotingPeriod: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n publishMessage: ({\n encPubKey,\n message\n }: {\n encPubKey: PubKey;\n message: MessageData;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n processMessage: ({\n groth16Proof,\n newStateCommitment,\n plonkProof\n }: {\n groth16Proof?: Groth16ProofType;\n newStateCommitment: Uint256;\n plonkProof?: PlonkProofType;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n stopProcessingPeriod: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n processTally: ({\n groth16Proof,\n newTallyCommitment,\n plonkProof\n }: {\n groth16Proof?: Groth16ProofType;\n newTallyCommitment: Uint256;\n plonkProof?: PlonkProofType;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n stopTallyingPeriod: ({\n results,\n salt\n }: {\n results: Uint256[];\n salt: Uint256;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n grant: ({\n baseAmount,\n grantee\n }: {\n baseAmount: Uint128;\n grantee: Addr;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n revoke: ({\n grantee\n }: {\n grantee: Addr;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n bond: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n withdraw: ({\n amount\n }: {\n amount?: Uint128;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n}\nexport class OracleMaciClient extends OracleMaciQueryClient implements OracleMaciInterface {\n client: SigningCosmWasmClient;\n sender: string;\n contractAddress: string;\n constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) {\n super(client, contractAddress);\n this.client = client;\n this.sender = sender;\n this.contractAddress = contractAddress;\n this.setParams = this.setParams.bind(this);\n this.setRoundInfo = this.setRoundInfo.bind(this);\n this.setVoteOptionsMap = this.setVoteOptionsMap.bind(this);\n this.startVotingPeriod = this.startVotingPeriod.bind(this);\n this.signUp = this.signUp.bind(this);\n this.startProcessPeriod = this.startProcessPeriod.bind(this);\n this.stopVotingPeriod = this.stopVotingPeriod.bind(this);\n this.publishMessage = this.publishMessage.bind(this);\n this.processMessage = this.processMessage.bind(this);\n this.stopProcessingPeriod = this.stopProcessingPeriod.bind(this);\n this.processTally = this.processTally.bind(this);\n this.stopTallyingPeriod = this.stopTallyingPeriod.bind(this);\n this.grant = this.grant.bind(this);\n this.revoke = this.revoke.bind(this);\n this.bond = this.bond.bind(this);\n this.withdraw = this.withdraw.bind(this);\n }\n setParams = async ({\n intStateTreeDepth,\n messageBatchSize,\n stateTreeDepth,\n voteOptionTreeDepth\n }: {\n intStateTreeDepth: Uint256;\n messageBatchSize: Uint256;\n stateTreeDepth: Uint256;\n voteOptionTreeDepth: Uint256;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n set_params: {\n int_state_tree_depth: intStateTreeDepth,\n message_batch_size: messageBatchSize,\n state_tree_depth: stateTreeDepth,\n vote_option_tree_depth: voteOptionTreeDepth\n }\n }, fee, memo, _funds);\n };\n setRoundInfo = async ({\n roundInfo\n }: {\n roundInfo: RoundInfo;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n set_round_info: {\n round_info: roundInfo\n }\n }, fee, memo, _funds);\n };\n setVoteOptionsMap = async ({\n voteOptionMap\n }: {\n voteOptionMap: string[];\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n set_vote_options_map: {\n vote_option_map: voteOptionMap\n }\n }, fee, memo, _funds);\n };\n startVotingPeriod = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n start_voting_period: {}\n }, fee, memo, _funds);\n };\n signUp = async ({\n amount,\n certificate,\n pubkey\n }: {\n amount: Uint256;\n certificate: string;\n pubkey: PubKey;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n sign_up: {\n amount,\n certificate,\n pubkey\n }\n }, fee, memo, _funds);\n };\n startProcessPeriod = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n start_process_period: {}\n }, fee, memo, _funds);\n };\n stopVotingPeriod = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n stop_voting_period: {}\n }, fee, memo, _funds);\n };\n publishMessage = async ({\n encPubKey,\n message\n }: {\n encPubKey: PubKey;\n message: MessageData;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n publish_message: {\n enc_pub_key: encPubKey,\n message\n }\n }, fee, memo, _funds);\n };\n processMessage = async ({\n groth16Proof,\n newStateCommitment,\n plonkProof\n }: {\n groth16Proof?: Groth16ProofType;\n newStateCommitment: Uint256;\n plonkProof?: PlonkProofType;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n process_message: {\n groth16_proof: groth16Proof,\n new_state_commitment: newStateCommitment,\n plonk_proof: plonkProof\n }\n }, fee, memo, _funds);\n };\n stopProcessingPeriod = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n stop_processing_period: {}\n }, fee, memo, _funds);\n };\n processTally = async ({\n groth16Proof,\n newTallyCommitment,\n plonkProof\n }: {\n groth16Proof?: Groth16ProofType;\n newTallyCommitment: Uint256;\n plonkProof?: PlonkProofType;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n process_tally: {\n groth16_proof: groth16Proof,\n new_tally_commitment: newTallyCommitment,\n plonk_proof: plonkProof\n }\n }, fee, memo, _funds);\n };\n stopTallyingPeriod = async ({\n results,\n salt\n }: {\n results: Uint256[];\n salt: Uint256;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n stop_tallying_period: {\n results,\n salt\n }\n }, fee, memo, _funds);\n };\n grant = async ({\n baseAmount,\n grantee\n }: {\n baseAmount: Uint128;\n grantee: Addr;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n grant: {\n base_amount: baseAmount,\n grantee\n }\n }, fee, memo, _funds);\n };\n revoke = async ({\n grantee\n }: {\n grantee: Addr;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n revoke: {\n grantee\n }\n }, fee, memo, _funds);\n };\n bond = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n bond: {}\n }, fee, memo, _funds);\n };\n withdraw = async ({\n amount\n }: {\n amount?: Uint128;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n withdraw: {\n amount\n }\n }, fee, memo, _funds);\n };\n}","import { GasPrice } from '@cosmjs/stargate';\n\ntype CircuitInfoType = {\n [key: string]: {\n parameter: {\n state_tree_depth: string;\n int_state_tree_depth: string;\n vote_option_tree_depth: string;\n message_batch_size: string;\n };\n groth16: {\n process_vkey: {\n vk_alpha1: string;\n vk_beta_2: string;\n vk_gamma_2: string;\n vk_delta_2: string;\n vk_ic0: string;\n vk_ic1: string;\n };\n tally_vkey: {\n vk_alpha1: string;\n vk_beta_2: string;\n vk_gamma_2: string;\n vk_delta_2: string;\n vk_ic0: string;\n vk_ic1: string;\n };\n };\n plonk?: {\n process_vkey: {\n n: number;\n num_inputs: number;\n selector_commitments: string[];\n next_step_selector_commitments: string[];\n permutation_commitments: string[];\n non_residues: string[];\n g2_elements: string[];\n };\n tally_vkey: {\n n: number;\n num_inputs: number;\n selector_commitments: string[];\n next_step_selector_commitments: string[];\n permutation_commitments: string[];\n non_residues: string[];\n g2_elements: string[];\n };\n };\n };\n};\n\nexport const CIRCUIT_INFO: CircuitInfoType = {\n '2-1-1-5': {\n parameter: {\n state_tree_depth: '2',\n int_state_tree_depth: '1',\n vote_option_tree_depth: '1',\n message_batch_size: '5',\n },\n groth16: {\n process_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '2178a9c3805dd82071b2b28bb4c0ffc8178cad913c8c990b98b4863284dc3a5d175c0be554fc060c27c551e5e32effef015b918a0f5a2dc1b92909b8272719301c521d5f6542db5ea4775a42d32159c356a696599c1a3df011ec00559ae1c2b60d860f7e6513a7d20feaeaca401863e35a0f691dd7d30ce06d07946840de1ec8',\n vk_ic0:\n '19126a54a9b6d0d415f892c246485cb2889487cf9c4a8cd88dab5e1140e1d0630d1d76ef4652df8887c9dc557aa57f25e221db7e5b2e4cf618a362bece107f5c',\n vk_ic1:\n '0632e625fefc7172e8aec1070c4d32b90b6c482f6f3806773a4c55a03877c2d716cfd935eb3e3883f580c93f56adbf3a253ce3c208c52fb784f9d8fec139c617',\n },\n tally_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '2e9fad39728c543c5213599111e1a44b01720c999a6785e8136c3e3b3bf8e07e248e1933d477969ca6e27cb7a74bca18cac7e3bbdf9371be5c54fe151f6376a30955609ec69b89329322a2f435b706ca248d1312c7513853a50ef37ed0f7826c25a5c57bf07789d89e538bc24017cf2722811f21480b0bb8030ed0028ecb7cd8',\n vk_ic0:\n '1bc1a1a3444256469c07cd6f4d1cfd9f7c9ddce596a306e0af077ca9e9c0fe9602db2a9aecef76a9dc4c19bf88c0099b04fc75410cc9004f0966440825e3790a',\n vk_ic1:\n '05b8b475f2bfedba4fa04ab1972006da9764c2c3e6fb65d6dd0aac938fd298112a560e13770b06a3f709a49fddf016331ea205fa125026993f6666eff69f4def',\n },\n },\n plonk: {\n process_vkey: {\n n: 1048575,\n num_inputs: 1,\n selector_commitments: [\n '29b0f4a90bea69583a8fca1e74d23adf739d605af605a0e0971fac548df976fb2e10a42dfca2325684c1bca5fabbf9d7022fc8b997ea478f1052dd8808d99e44',\n '119002055b6c2f98314ef408e4a917a6678f114ca991185749289f171f61efc32b3a931c700271b82d22c2073af9b7fffcb7bfa644ea09102d9ef8482410a991',\n '10c5f32870d26f8e26d2eaae2705557b18210b2355677172e1bef5fe684120891f8317185390ddbb22ecb922d37e03c3cc524c84f65c8045f2324b0f164cfbdb',\n '115a5f9af5d438d3261cfa31b7050b931b7d22647f628a43af41a41dcd44cb8d2e99368eb15cdc6d1f16faf9db0db4825613d6893c776aef456705bdc76eb728',\n '1a61cc5f0fbe92fbc8c9bd58928ce467f63e4771e4d517966afbaf220ea069a91cec3231c370be07fee8d9ec01660d054c549b034715855ffa652ad5b67ced86',\n '19e0d095a343115f6e7ad7ae1f51e375cd648fb35451cb2d5a8cf3bafbb25d0525efdc2cc5b5600ee0ae954dca3bf67c8277d470161fe23b4be7a5bcdf641e68',\n ],\n next_step_selector_commitments: [\n '246ce82e01ed312e81492f132da2ee16bc13cc0024fbcc668de30173ad59067f0f072a892451cc495f5d9b8b99c8dc29be1d42d3004aed45fd5b2cd32a420016',\n ],\n permutation_commitments: [\n '19c4143f41738480adc5ae49922d31b8a5afaa1d25ced5c20b869c0e1ccad91920c267c53d33907318cd194ba2ea08a85f250779765ba4121f7a0edfe1afe22b',\n '114bda14aa702a0815e3f91318a08a2798244420fd6675c8fc3cc2b0232298890d2eb3c1f27a83f4a3be777524d6cc65aa435e0a472fae8d1158e0a6ded685d0',\n '289f0b046968d2c095d05350e43996756fc85d2deb0e267a069615f0889a249413bdbe6f09edb4db956b8f3fc4488c4681cd52469dc0d419dab99a65b88309f7',\n '16dd74a2089960aac0d68309d5e81c6b45c29fafe4d42c922c06eb633ed48d551d347d1f43ee9b137772eefc43a6dcdf5ac35ee1615bc8f7c243bce071c410a9',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n tally_vkey: {\n n: 524287,\n num_inputs: 1,\n selector_commitments: [\n '18c2bb75c8ed53a5d15a56cc91c56f14c832419994ce7187c7c98b5e622cac0808b773f05e09822d8d267646198a78359ea2aa6fbaeb01317142f99fd11da6c0',\n '181499098243a5968f5490b7759aa15f0f769f24f3f4219b69f96913cf4fb23c1cd7b3f109196d7577390fd2e6d3930a71b0559aff756f3ca43eef66ce7333f4',\n '07ba2bdd452503fb16b56ea2940e95a98118c9dd120ae192680fe2b80bdb26f10ac6cdc7cb12b581a8c64d45b5af3d253c4282405eed3fd4d091ae05aac45cb6',\n '1caf01f1775eeafa78a11202e926ee92be997ce040f9c6fbce161348a40aeda70d9f15738cccf538083784e566ceef651d000223ae810c980e2d5d98b91b4665',\n '2c377c69cae1d591af413da2fd986ef3dca595d0c5817ee4932b92169d37c52d1218ce63dde705ebd1dc66d9b62daca287e4fdf6800b69204e5b78bfe84365a1',\n '175dd4ff280e39f0e080c181f853845e40c4b91709a93e4398d24befc9cf556903675361817e031e86bd896ff1dd7bc1cc31ca920a101499db0c58d77f0730ec',\n ],\n next_step_selector_commitments: [\n '12d76999d26137d433f7119ab34f3fc63cfedb9172052cfb34acfc3cdc570f511aba802ebe92b87f913496314b938cf526078280a68826c90b686b90420c7742',\n ],\n permutation_commitments: [\n '167b05c0132399e7126e8d16efb224b1c6729942048fc7e730fd1451116e0a6e05acaf2a6d2c88cc25610474b651c8cdcb7e8e14e59ddfad819123e888c4b1b6',\n '25aed62de4b701dc645e076543e2553c306010f2776c74edae55ea5253d9540403d042c4cb699cc04b2bb63d3c3edc0c85b049a84dc2fd44369f957d81363563',\n '0e77fb0b0e84da1d955da3d66dbb8fa3988f22e999a34bc4ac537a0f9187ac40156f8d7cb6d005fd85a0178d794f941b4e84832fd389a37c2a78112dac09b758',\n '051d3d906d457eaa9eff77a296dfa1760fd9ea379eec60487be38de91545ca2c1fcf457d6ac31afee10951245b0cc1e2c7674596f65955d189d48b6938fb3594',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n },\n },\n '4-2-2-25': {\n parameter: {\n state_tree_depth: '4',\n int_state_tree_depth: '2',\n vote_option_tree_depth: '2',\n message_batch_size: '25',\n },\n groth16: {\n process_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '0d0fe390b9dd4d1d0f486787b6ea96765cbeaa8f00310fecc3429673c5866c081a27998596ba296f66f3f7b5e2450d1ce1bcc535c133b2e8b577ba07dc1ccb4c1895f7afb9b3168a6d628c9173157cd56ca51948cc66c129a25f80e3b665e4b12c9c50f0cc0d070978ed2fb8ce15956d67c5dc6c07c7f45f1facfb5522d7b656',\n vk_ic0:\n '0ff2b22774da5c0ba94db4d759827b8c962aaf44db2649eb10407de02a40463a26497581d6d0979ad7f9057f26e048109158b0872700e2ad8447ffc9b4bf146b',\n vk_ic1:\n '0a47be101a59d20641e1369c0b2b9fb839cd35ecbfbeac3866df43723b70c78d17e96303c417743d93b7726805b736f364d305036b50e4ad1b885fc41284daf5',\n },\n tally_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '08e44e0876bd574d8a3411e374884eb61da7292ca52903fa96553c37311b66ce0f2f529e59b1d37e55794a575d0f87548ca0d03331c19689bc203a68c1c4bae20e9fd25a7bffaa9b7409e694a48bc0d57f42df164d4a01bd5deecffedd2d3a3125eff290efb93eaf9c578cc7ee9d00406137607b9602de02424ff413ac948690',\n vk_ic0:\n '295c8e84b4b6b8de44b24f80eb5cae1df65e4877c4af8da2dbadfbfc3586dc790661b9e636f2c2a83028d11cbb7c753675481b65a5dfe32fff7a558231b3c9ef',\n vk_ic1:\n '299cfb28054cde0470bd7ff280349089350226d1ca154dcf6544b2680bf3bea925026e6644668273d6066ef6766c2f561c3607c523fbbd1379c5002376ef69c3',\n },\n },\n plonk: {\n process_vkey: {\n n: 2097151,\n num_inputs: 1,\n selector_commitments: [\n '126cbf10e0b68a56d45614be16c5bb48bd1374478e17b9fe1a78b726ea70f9b21f3cd20fd178d89e5923c422ef050ccc7134fbd76c9efdbb90f677ee41e01edb',\n '12813166f206c95eddd998a40d8d2e54e29dd393f543e3583a7999b18d674832024cdd935540bd3b96207ec0609c6718ad8b14e2ef315594454c57d606494485',\n '05da9eea3ee7151355067ced11a8e8ff57a56c758493afc9cbb6cfbacfc42e7b08993dfa25c85f20aeb7f64e87fe56ac8066cf6b8479dc96294e302ef5d55372',\n '2e446e540bacde7daea23c93a67bc6b1424b7c16b33fd2cee251b0d093cd78300030b8e340f01f320639d60b77724e58fc8a2d778b7b2a5df2c953ce34debeea',\n '1cf8c75b18071ede19d196b46a8776efc29ac514458a698d9f2e50b7bc692f6e06f7ff96897240eca31058fe330e8cbcd911324b79a3a34d03340a3cfed85fd5',\n '17101fb5c293438a695075b221219679e278e4bd147239c9fc69081b19cacefe218eb895f1456ca81e29731967588aee4b0758ea51aa28e5fefc81fed4a11513',\n ],\n next_step_selector_commitments: [\n '0cebff4fe8cd70325f986088a1e17ae129a025481137bd80aef9c1f1c2e52f1e265a4ccae1ed89cb2fba527165f007898e70f988311ee4e4e87e41376cfeed03',\n ],\n permutation_commitments: [\n '025b5db167721133693f0b6d9d7cfadce68ad15365ef1605dda4a6c809edeea61927b27ca11713fc683c88f6330e9621837b05e5db74d5994d1cf04bc3d529b3',\n '1fac93999f33b145613901846e6403d7f4237d582b51ccc4fb5c70038284c6e21cc804cc3cf7170b96da74fcbb30c81cd8c3405a629327c657025db7332f169a',\n '0b6d7d383de73dbfc16f2c0f3af763135ff05a12ec937548008cfee944c195f902336a68a50f62f595953e44401e872fb41abb66a733684b079ffe550d09c233',\n '225a1f5e92d105d3be026ae68904826f89b786faad75a846ef966ed714568bba28d1388786fde71dea206cdef16faa7a589e90863e6245d271e3f154c75c5531',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n tally_vkey: {\n n: 1048575,\n num_inputs: 1,\n selector_commitments: [\n '1588fb667b3f0e4d0970b8208e4b6b4c729c4926b936f8d877017cf42d07ca15069643791d98abcd6b7d0b0546e7560ab9011e069f2ee48ede581fc72d8b5e04',\n '09c5480b103c44a81850ffd9a61ec21f7db41bc89996d8df075c3e029290eb5b083cb2b184d95c0761e585547be33250c8939929b87fdc39775ccea17d51b481',\n '278e239bcac0a945a17572a6d61ba59f705746e6893a10a44841933a8c8310e712e4ee913af9b77c8fdcdc365316aa9f1b8dc081eb99ad80265768ec9f484beb',\n '12532585ea307c5559b18a4d01db59b544a88088f61a5b5ed0431393e6f675af1309bf0dcaa7a552849e5f28d0300c8c61b18393fb638aed3b7d70e27bb91c35',\n '172e7ecb8e485aaee801fd78b8fd7c0b862baef65e39e6832cffa2170b6f981928d86ab5887e8c3210e34e03cada468bd501f60ec3a8fa35b4c7067d6fb8c6ae',\n '0c27211d046735fc681228b8366be2c8cf9a256cbd03dcd4af65152e94f95a6f1af151a5311b195b0f4acffeec4952cc52edbb7045aab61bbd3be9cd322ab99e',\n ],\n next_step_selector_commitments: [\n '25ee15301d562e6c630946b3fbe36b9fbd8dfbd44ddf70cc825fb1fa1ebd966229081f6b9297da671c69064e10b8f5dd0f69b69d1bf79122c6197f119087ebe1',\n ],\n permutation_commitments: [\n '194849a6ec5cb37e09d20801d387abbab04e453f630c5fbbf5c4819c5569480c0c8bf0ce2b4955cc4c891840da1d9e99feb81e8d43251dffbe4d6167639b9f9b',\n '17717d2638632d406b3c8aa69550c8aeed1b79def3ab55e9d0c4bdf21cc339ad07d3bd3a331145fc96f34c85469a34a8c93b53b7aa36bb5a94c31e3b4d47713e',\n '277b0c99b63c79bb9ed2f677c3987cf00acb293933dfced82b5afcb8bf0c34570d3187ce5c7e892582ddda4322cf7c50d41105fe98503fb60e41f4a08da5916d',\n '0489f6dec0f27a8c21d147ebb9781b68b4b73db065a6017924c543f6d9fadbe922d24c0946bd8b19df7659810296d063b557cdf7aba510b11e08fbf2e9d37931',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n },\n },\n '6-3-3-125': {\n parameter: {\n state_tree_depth: '6',\n int_state_tree_depth: '3',\n vote_option_tree_depth: '3',\n message_batch_size: '125',\n },\n groth16: {\n process_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '057f25675851ef5a79a6d8706a43a6cd8e494cfb12c241ede46991d9174cf30605b081ff44f3ede774dab68ea9324c12308c13cb09cbb129adf94401b9134f5b16137d952fd32ab2d4243ebff4cb15d17206948ef17909ea8606886a8109bdad082f7d27e1cbf98925f055b39d1c89f9bcc4f6d92fdb920934ff5e37ba4d9b49',\n vk_ic0:\n '27c937c032a18a320566e934448a0ffceea7050492a509c45a3bcb7e8ff8905d20789ada31729a833a4f595ff9f49f88adb66f2ab987de15a15deccb0e785bf4',\n vk_ic1:\n '0ed2cefc103a2234dbc6bbd8634812d65332218b7589f4079b2c08eb5a4f5f63113a7f3cb53797a7f5819d7de7e3f0b2197d1c34790685a4a59af4314810420b',\n },\n tally_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '2065e91c00fcc5cbc3d974cf52e24de972bdb1b4d8ded629dec20b5c904c3fa327ffe02402094795ff4d02588c8268fcad738f69eb4c732a0c98b485035e1f4913ede11b074ff143a929673e581a547717c58ce01af87d9d8b28f65f506093a61013e367b93e6782129362065840a0af9b77d7d9659a84577176e64a918d8d4c',\n vk_ic0:\n '11db4a022aab89a265f06ff62aa18c74b21e913a8b23e7fce9cb46f76d1c4d9f2a7475b1eeb7be0a0dc457e6d52536ba351b621b63a7d77da75d4e773048537e',\n vk_ic1:\n '0f298d235d0822ad281386abdf511853529af4c864b0cd54140facebfc1356a3059cd6d0d4b27b39e5683548fe12025e2a6b2e2724c2ca87d2008ef932ed3801',\n },\n },\n plonk: {\n process_vkey: {\n n: 8388607,\n num_inputs: 1,\n selector_commitments: [\n '216533ab27390f98812429524326ac08736d636d2891fb81446796cc1771a3230642f49db115acc15a186a1013f91a08efcd05640eb137d700276e80fd05bc90',\n '11747f6f378e26dbdacff464ce7eb6a8869750d0fa7e508e263ac77b582c1e9b24ba3d208650b0c28943915c563cc94cc3f98cdb5fd8adc4f4d3e2a60eda3302',\n '09239eb768d8d47b91c7e08e2ec6a374571964ed16be293cdc35e112393c4fd1182a0794be7f1441418664e9f718b67ed392a7da3e2868375bcf629131bb2680',\n '2020f7db24940bbf38d097ea5d7ef7253e38b154d7eb0ff1782ea18ce215dd7b0e8475197b071b118adc6418b7b7fb42fea19b6272d1bb460cc47deacb299ec7',\n '298923db1618185064bbab5df30ee03a3c9cbc7ce8f096d76cbd2a5ab3df86cd05bbedb938e6e0ff35cce23609458aff8081cdf3163655672074d1b18b0007bd',\n '0effaabe8c6e8a076aedd36d10f2926f9871f552d93e22bfbe69e3c828a546fa2d0cd163b49a6de219ac2c048a8459ae448047748ba078b9d5d07b290c946b08',\n ],\n next_step_selector_commitments: [\n '13e3d7299e30e6142699469d620df721eca35bbb807a8f4298f165260fdc24f823e7bd9bcb6506a094a5ebef44434c62e4bcb5d3dd7e092c49d5cb80b8ae0757',\n ],\n permutation_commitments: [\n '03d94ab8fdc681523a8eec10f1ce5552937c268d1d970f9e75ee8657cd4c12a81e03476f83ef5c14db2f4d931b833a3b65b8d5689b37cc7f183914c90d3d065d',\n '1b9c6ef20e68355c535bda6ff04a8a61d7552a594bb8e88d69a6f8840ddab04d2884824cc356d0d90cc278c247fc531de62efca4b19ed1be6f071144474d2037',\n '1ff82de8312481e1591d2d1c2698fa3944b3f0afa0dd702be8a1a944a5a8997323ffbd0ab39a2e13608a8e76803c33ffda7317bb7101e335ce5552ed62dcd09d',\n '2cb2bbdd51d22b79957b0401ecb6fe089f05426ba092b1205fa92f39b36cc5fc0c36c3934e47b7d407d4cda0c78c2b3fb23162cb0d295e8a8cce1a274956c34a',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n tally_vkey: {\n n: 8388607,\n num_inputs: 1,\n selector_commitments: [\n '258d101f9499e81c0d0da8986c659ef33da19d4955a142e56b4854d1327c902c1996baecd81432717a9cbf92ccf651e4217a788c1a2ed855f749480f8ce8203c',\n '1892a17c9c01389e3149b0663069a1ad4fd3c8e2db5ce99795b781c47b55acf9001cf5f0b4c1d088fa2058ca19cd2f1e9559ebe059897bb0aadcb540ce5f468a',\n '09912d6eaa4a22802451135d9a221ebf97c2ce8ad5bbb2942d5a860482e8e4202573995072c4b014cd0e9d09a1fd53ee7d602070b404288a7fd0d97b57d8f07d',\n '0c62ef7ad01b05b2c01fca6188de269d63d725348a07a99bbc50f24c1518aa871fdc61bbf42399433a0917c919dcfe9e851b206e1c37dec0908f69ad89bb1f8e',\n '07d181c1026ef4a6732bff3dffbc5ae0e3746e4860f478c6c2e8e258df2ed7671efe073fb31cf5a61c0eedceccb5e968220b9ff7e2b055b11d7c456a57fe7ac9',\n '1bbd7ad96893df675c811e5a2be184e2e3bc9af0ce30a7b26e53a916a10a777a01ffa70dbe585201ac09778429c04c71229392608095d220c7d82631a0caedd6',\n ],\n next_step_selector_commitments: [\n '2ae6c5c98d4c384e8e645d85a4ca362de4c4e75efe3c79d5bcbd126a9e305b831618df99300c7327f1eac6a498c8feac6013d4ba09b7ea046340f99b0598a832',\n ],\n permutation_commitments: [\n '2458c5fb474ab3e7ae9c6b82cc432a111954d8be5e7e9b4fc58c14e1aed77f3207426dbe08272aa69ba8b73809f27f9ff083641b5c3c896c386a74bbed3083dd',\n '0879ac4885674b1af0ab67c7b505bce6234f32a0335bdfd229023fea5f303ece0973ba8abc9ade8edcfb68c7d4b8b98272c7bf33eff841fec78d21c0c2e82aa6',\n '07b74f37fcbcb2d9962a529fbc254d54925aeb1be1a49517affeb3571ef3e31e3033f7900ff5bb5759cbb98b64ca7f42967278c328d00e60c042aa65f2178ded',\n '203c948fdc386e7bfbdc37363ab489e9ce3264f4ccd23c33dd8f2337fb9007a621cabf740aa26e522dcb7af6c0de9f93cbc69595b29b02e75c2f3507e97664ec',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n },\n },\n '9-4-3-625': {\n parameter: {\n state_tree_depth: '9',\n int_state_tree_depth: '4',\n message_batch_size: '625',\n vote_option_tree_depth: '3',\n },\n groth16: {\n process_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_ic0:\n '1832600210a459fe61d971081d4baa1a1add23f87c8a8dc4042cd5cf6c6fdf8e3018489aec30d9deb26629e05965a3a7e038be58ce10c854cb7e1071f2708aad',\n vk_ic1:\n '0274a24117a799333754d646e35f37292e7ca9984fb8781211504b158d69d2c422aa99651ca207c77084988b16ef363664b9cf36071f7131dcc10b98ea27d7f6',\n },\n tally_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_ic0:\n '2ec191d51bd4ac7cd65cb3dd2decfa4e56c4f167bbc40e2c9e1ca728f9bc5b0e2ed1c82319dc554aea5ff2ca05d6f4d4d61e8f059a8c05d4b4faabae5128a437',\n vk_ic1:\n '2f19db8f03b6b5896abc6989273371b14833356f45c12685e57bc292eccc53570cb629e551df179f73b9f3391946bad29739af8b808c80b0f057af45aea59849',\n },\n },\n },\n};\n\nexport const MACI_TYPE = {\n 'maci-1p1v': '0',\n 'maci-qv': '1',\n};\n\nexport const AMACI_TYPE = {\n 'amaci-1p1v': '0',\n 'amaci-qv': '1',\n};\n\nexport const PROOF_SYSTEM = {\n groth16: '0',\n plonk: '1',\n};\n\nexport const QTR_LIB = {\n zeros: [\n '0',\n '14655542659562014735865511769057053982292279840403315552050801315682099828156',\n '19261153649140605024552417994922546473530072875902678653210025980873274131905',\n '21526503558325068664033192388586640128492121680588893182274749683522508994597',\n '20017764101928005973906869479218555869286328459998999367935018992260318153770',\n '16998355316577652097112514691750893516081130026395813155204269482715045879598',\n '2612442706402737973181840577010736087708621987282725873936541279764292204086',\n '17716535433480122581515618850811568065658392066947958324371350481921422579201',\n '17437916409890180001398333108882255895598851862997171508841759030332444017770',\n ],\n};\n","import { MaciCertSystemType, MaciCircuitType, MaciRoundType } from './types';\nimport { CIRCUIT_INFO } from './vars';\n\ntype MixedData<T> = T | Array<MixedData<T>> | { [key: string]: MixedData<T> };\n\nexport const stringizing = (\n o: MixedData<bigint>,\n path: MixedData<bigint>[] = []\n): MixedData<string> => {\n if (path.includes(o)) {\n throw new Error('loop nesting!');\n }\n const newPath = [...path, o];\n\n if (Array.isArray(o)) {\n return o.map((item) => stringizing(item, newPath));\n } else if (typeof o === 'object') {\n const output: { [key: string]: MixedData<string> } = {};\n for (const key in o) {\n output[key] = stringizing(o[key], newPath);\n }\n return output;\n } else {\n return o.toString();\n }\n};\n\nexport function getContractParams(\n type: MaciRoundType,\n circuitType: MaciCircuitType,\n proofSystem: MaciCertSystemType,\n maxVoter: string,\n maxOption: string\n) {\n let parameters: {\n state_tree_depth: string;\n int_state_tree_depth: string;\n vote_option_tree_depth: string;\n message_batch_size: string;\n };\n let groth16ProcessVkey = null;\n let groth16TallyVkey = null;\n let plonkProcessVkey = null;\n let plonkTallyVkey = null;\n let maciVoteType = null;\n let maciCertSystem = null;\n\n switch (circuitType) {\n case MaciCircuitType.IP1V:\n maciVoteType = '0';\n break;\n case MaciCircuitType.QV:\n maciVoteType = '1';\n break;\n default:\n throw new Error(\n `Invalid circuit type ${circuitType}, only support 1P1V and QV`\n );\n }\n\n switch (proofSystem) {\n case MaciCertSystemType.GROTH16:\n maciCertSystem = '0';\n break;\n case MaciCertSystemType.PLONK:\n maciCertSystem = '1';\n break;\n default:\n throw new Error(\n `Invalid proof system ${proofSystem}, only support GROTH16 and PLONK`\n );\n }\n\n if (Number(maxVoter) <= 25 && Number(maxOption) <= 5) {\n // state_tree_depth: 2\n // vote_option_tree_depth: 1\n parameters = CIRCUIT_INFO['2-1-1-5'].parameter;\n if (proofSystem === MaciCertSystemType.GROTH16) {\n groth16ProcessVkey = CIRCUIT_INFO['2-1-1-5']['groth16'].process_vkey;\n groth16TallyVkey = CIRCUIT_INFO['2-1-1-5']['groth16'].tally_vkey;\n } else if (proofSystem === MaciCertSystemType.PLONK) {\n plonkProcessVkey = CIRCUIT_INFO['2-1-1-5']['plonk']?.process_vkey;\n plonkTallyVkey = CIRCUIT_INFO['2-1-1-5']['plonk']?.tally_vkey;\n }\n } else if (Number(maxVoter) <= 625 && Number(maxOption) <= 25) {\n // state_tree_depth: 4\n // vote_option_tree_depth: 2\n parameters = CIRCUIT_INFO['4-2-2-25'].parameter;\n if (proofSystem === MaciCertSystemType.GROTH16) {\n groth16ProcessVkey = CIRCUIT_INFO['4-2-2-25']['groth16'].process_vkey;\n groth16TallyVkey = CIRCUIT_INFO['4-2-2-25']['groth16'].tally_vkey;\n } else if (proofSystem === MaciCertSystemType.PLONK) {\n plonkProcessVkey = CIRCUIT_INFO['4-2-2-25']['plonk']?.process_vkey;\n plonkTallyVkey = CIRCUIT_INFO['4-2-2-25']['plonk']?.tally_vkey;\n }\n } else if (Number(maxVoter) <= 15625 && Number(maxOption) <= 125) {\n // state_tree_depth: 6\n // vote_option_tree_depth: 3\n parameters = CIRCUIT_INFO['6-3-3-125'].parameter;\n if (proofSystem === MaciCertSystemType.GROTH16) {\n groth16ProcessVkey = CIRCUIT_INFO['6-3-3-125']['groth16'].process_vkey;\n groth16TallyVkey = CIRCUIT_INFO['6-3-3-125']['groth16'].tally_vkey;\n } else if (proofSystem === MaciCertSystemType.PLONK) {\n plonkProcessVkey = CIRCUIT_INFO['6-3-3-125']['plonk']?.process_vkey;\n plonkTallyVkey = CIRCUIT_INFO['6-3-3-125']['plonk']?.tally_vkey;\n }\n } else if (Number(maxVoter) <= 1953125 && Number(maxOption) <= 125) {\n // state_tree_depth: 9\n // vote_option_tree_depth: 3\n parameters = CIRCUIT_INFO['9-4-3-625'].parameter;\n if (proofSystem === MaciCertSystemType.GROTH16) {\n groth16ProcessVkey = CIRCUIT_INFO['9-4-3-625']['groth16'].process_vkey;\n groth16TallyVkey = CIRCUIT_INFO['9-4-3-625']['groth16'].tally_vkey;\n } else if (proofSystem === MaciCertSystemType.PLONK) {\n throw new Error('PLONK is not supported for MACI-9');\n }\n } else {\n throw new Error('Number of voters or options is too large.');\n }\n switch (type) {\n case MaciRoundType.MACI:\n return {\n parameters,\n groth16ProcessVkey,\n groth16TallyVkey,\n plonkProcessVkey,\n plonkTallyVkey,\n maciVoteType,\n maciCertSystem,\n };\n case MaciRoundType.AMACI:\n return {\n // parameters,\n // groth16ProcessVkey,\n // groth16TallyVkey,\n // plonkProcessVkey,\n // plonkTallyVkey,\n };\n case MaciRoundType.ORACLE_MACI:\n return {\n parameters: CIRCUIT_INFO['9-4-3-625'].parameter,\n groth16ProcessVkey: CIRCUIT_INFO['9-4-3-625']['groth16'].process_vkey,\n groth16TallyVkey: CIRCUIT_INFO['9-4-3-625']['groth16'].tally_vkey,\n plonkProcessVkey: null,\n plonkTallyVkey: null,\n maciVoteType,\n maciCertSystem: '0',\n };\n }\n}\n\n/**\n * Converts a hexadecimal string to a decimal string.\n * @param hexString - The hexadecimal string to convert.\n * @returns The decimal string representation of the input.\n */\nfunction hexToDecimalString(hexString: string) {\n const decimalString = BigInt('0x' + hexString).toString(10);\n return decimalString;\n}\n\n/**\n * Parses a public key string into its x and y coordinates.\n * @param publickKey - The public key string to parse (128 characters long).\n * @returns An object containing the x and y coordinates as decimal strings.\n */\nexport function parsePubkey(publickKey: string) {\n const x = publickKey.slice(0, 64);\n const y = publickKey.slice(64);\n\n return {\n x: hexToDecimalString(x),\n y: hexToDecimalString(y),\n };\n}\n","import { Secp256k1HdWallet } from '@cosmjs/launchpad';\nimport { DirectSecp256k1HdWallet, OfflineSigner } from '@cosmjs/proto-signing';\nimport {\n GasPrice,\n SigningStargateClient,\n SigningStargateClientOptions,\n} from '@cosmjs/stargate';\nimport {\n SigningCosmWasmClient,\n SigningCosmWasmClientOptions,\n} from '@cosmjs/cosmwasm-stargate';\nimport { MaciClient } from './ts/Maci.client';\nimport { AMaciClient } from './ts/AMaci.client';\nimport { RegistryClient } from './ts/Registry.client';\nimport { ContractParams } from '../../types';\nimport {\n createAMaciClientBy,\n createContractClientByWallet,\n createMaciClientBy,\n createOracleMaciClientBy,\n createRegistryClientBy,\n} from './config';\nimport { Whitelist } from './ts/Registry.types';\nimport { getDefaultParams } from '../const';\nimport {\n CreateAMaciRoundParams,\n CreateMaciRoundParams,\n CreateOracleMaciRoundParams,\n MaciCertSystemType,\n MaciRoundType,\n} from './types';\nimport { getContractParams, parsePubkey } from './utils';\nimport { QTR_LIB } from './vars';\n\nexport const prefix = 'dora';\n\nexport class Contract {\n public rpcEndpoint: string;\n public registryAddress: string;\n public maciCodeId: number;\n public oracleCodeId: number;\n\n constructor({\n rpcEndpoint,\n registryAddress,\n maciCodeId,\n oracleCodeId,\n }: ContractParams) {\n this.rpcEndpoint = rpcEndpoint;\n this.registryAddress = registryAddress;\n this.maciCodeId = maciCodeId;\n this.oracleCodeId = oracleCodeId;\n }\n\n async createAMaciRound({\n signer,\n startVoting,\n endVoting,\n operator,\n whitelist,\n title,\n description,\n link,\n maxVoter,\n maxOption,\n voiceCreditAmount,\n circuitType,\n preDeactivateRoot,\n }: CreateAMaciRoundParams) {\n const start_time = (startVoting.getTime() * 10 ** 6).toString();\n const end_time = (endVoting.getTime() * 10 ** 6).toString();\n\n const client = await createRegistryClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress: this.registryAddress,\n });\n\n preDeactivateRoot = preDeactivateRoot || '0';\n const res = await client.createRound({\n operator,\n preDeactivateRoot,\n voiceCreditAmount,\n whitelist,\n roundInfo: {\n title,\n description: description || '',\n link: link || '',\n },\n votingTime: {\n start_time,\n end_time,\n },\n maxVoter,\n maxOption,\n certificationSystem: '0',\n circuitType,\n });\n let contractAddress = '';\n res.events.map((event) => {\n if (event.type === 'wasm') {\n let actionEvent = event.attributes.find(\n (attr) => attr.key === 'action'\n )!;\n if (actionEvent.value === 'created_round') {\n contractAddress = event.attributes\n .find((attr) => attr.key === 'round_addr')!\n .value.toString();\n }\n }\n });\n console.log(`Deploy tx: ${res.transactionHash} - ${contractAddress}`);\n return contractAddress;\n }\n\n async createMaciRound({\n signer,\n operatorPubkey,\n startVoting,\n endVoting,\n whitelist,\n title,\n description,\n link,\n maxVoter,\n maxOption,\n circuitType,\n certSystemType,\n }: CreateMaciRoundParams) {\n const start_time = (startVoting.getTime() * 10 ** 6).toString();\n const end_time = (endVoting.getTime() * 10 ** 6).toString();\n const [{ address }] = await signer.getAccounts();\n const client = await createContractClientByWallet(this.rpcEndpoint, signer);\n const { x: operatorPubkeyX, y: operatorPubkeyY } =\n parsePubkey(operatorPubkey);\n const {\n parameters,\n groth16ProcessVkey,\n groth16TallyVkey,\n plonkProcessVkey,\n plonkTallyVkey,\n maciVoteType,\n maciCertSystem,\n } = getContractParams(\n MaciRoundType.MACI,\n circuitType,\n certSystemType,\n maxVoter,\n maxOption\n );\n const instantiateResponse = await client.instantiate(\n address,\n this.maciCodeId,\n {\n round_info: { title, description, link },\n voting_time: {\n start_time,\n end_time,\n },\n parameters,\n coordinator: {\n x: operatorPubkeyX,\n y: operatorPubkeyY,\n },\n groth16_process_vkey: groth16ProcessVkey,\n groth16_tally_vkey: groth16TallyVkey,\n plonk_process_vkey: plonkProcessVkey,\n plonk_tally_vkey: plonkTallyVkey,\n max_vote_options: maxOption,\n whitelist,\n circuit_type: maciVoteType,\n certification_system: maciCertSystem,\n qtr_lib: QTR_LIB,\n },\n 'MACI',\n 'auto'\n );\n\n return instantiateResponse;\n }\n\n async createOracleMaciRound({\n signer,\n operatorPubkey,\n startVoting,\n endVoting,\n title,\n description,\n link,\n maxVoter,\n maxOption,\n circuitType,\n whitelistBackendPubkey,\n whitelistEcosystem,\n whitelistSnapshotHeight,\n whitelistVotingPowerArgs,\n feegrantOperator,\n }: CreateOracleMaciRoundParams) {\n const start_time = (startVoting.getTime() * 1_000_000).toString();\n const end_time = (endVoting.getTime() * 1_000_000).toString();\n const [{ address }] = await signer.getAccounts();\n const client = await createContractClientByWallet(this.rpcEndpoint, signer);\n const { x: operatorPubkeyX, y: operatorPubkeyY } =\n parsePubkey(operatorPubkey);\n const {\n parameters,\n groth16ProcessVkey,\n groth16TallyVkey,\n plonkProcessVkey,\n plonkTallyVkey,\n maciVoteType,\n maciCertSystem,\n } = getContractParams(\n MaciRoundType.ORACLE_MACI,\n circuitType,\n MaciCertSystemType.GROTH16,\n maxVoter,\n maxOption\n );\n const instantiateResponse = await client.instantiate(\n address,\n this.oracleCodeId,\n {\n round_info: { title, description: description || '', link: link || '' },\n voting_time: {\n start_time,\n end_time,\n },\n parameters,\n coordinator: {\n x: operatorPubkeyX,\n y: operatorPubkeyY,\n },\n groth16_process_vkey: groth16ProcessVkey,\n groth16_tally_vkey: groth16TallyVkey,\n plonk_process_vkey: plonkProcessVkey,\n plonk_tally_vkey: plonkTallyVkey,\n max_vote_options: maxOption,\n whitelist_backend_pubkey: whitelistBackendPubkey,\n whitelist_ecosystem: whitelistEcosystem,\n whitelist_snapshot_height: whitelistSnapshotHeight,\n whitelist_voting_power_args: whitelistVotingPowerArgs,\n circuit_type: maciVoteType,\n certification_system: maciCertSystem,\n qtr_lib: QTR_LIB,\n feegrant_operator: feegrantOperator,\n },\n '[Oracle MACI]' + title,\n 'auto'\n );\n\n // console.log(\n // `Deploy tx: ${instantiateResponse.transactionHash} - ${instantiateResponse.contractAddress} `\n // );\n return instantiateResponse;\n }\n\n async queryRoundInfo({\n signer,\n roundAddress,\n }: {\n signer: OfflineSigner;\n roundAddress: string;\n }) {\n const client = await createMaciClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress: roundAddress,\n });\n const roundInfo = await client.getRoundInfo();\n return roundInfo;\n }\n\n async oracleMaciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n const client = await createOracleMaciClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress,\n });\n return client;\n }\n\n async registryClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return createRegistryClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress,\n });\n }\n\n async maciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return createMaciClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress,\n });\n }\n\n async amaciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return createAMaciClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress,\n });\n }\n}\n","import {\n BalanceResponse,\n ClientParams,\n RoundResponse,\n RoundsResponse,\n OperatorResponse,\n OperatorsResponse,\n CircuitResponse,\n TransactionResponse,\n TransactionsResponse,\n CircuitsResponse,\n ProofResponse,\n} from './types';\nimport { Http, Indexer, Contract } from './libs';\nimport { getDefaultParams } from './libs/const';\nimport {\n CreateAMaciRoundParams,\n CreateMaciRoundParams,\n CreateOracleMaciRoundParams,\n} from './libs/contract/types';\nimport { OfflineSigner } from '@cosmjs/proto-signing';\n\n/**\n * @class MaciClient\n * @description This class is used to interact with Maci Client.\n */\nexport class MaciClient {\n public rpcEndpoint: string;\n public restEndpoint: string;\n public apiEndpoint: string;\n public registryAddress: string;\n public maciCodeId: number;\n public oracleCodeId: number;\n\n public http: Http;\n public indexer: Indexer;\n public contract: Contract;\n\n /**\n * @constructor\n * @param {ClientParams} params - The parameters for the Maci Client instance.\n */\n constructor({\n network,\n rpcEndpoint,\n restEndpoint,\n apiEndpoint,\n registryAddress,\n maciCodeId,\n oracleCodeId,\n customFetch,\n defaultOptions,\n }: ClientParams) {\n const defaultParams = getDefaultParams(network);\n\n this.rpcEndpoint = rpcEndpoint || defaultParams.rpcEndpoint;\n this.restEndpoint = restEndpoint || defaultParams.restEndpoint;\n this.apiEndpoint = apiEndpoint || defaultParams.apiEndpoint;\n this.registryAddress = registryAddress || defaultParams.registryAddress;\n this.maciCodeId = maciCodeId || defaultParams.maciCodeId;\n this.oracleCodeId = oracleCodeId || defaultParams.oracleCodeId;\n\n this.http = new Http(\n this.apiEndpoint,\n this.restEndpoint,\n customFetch,\n defaultOptions\n );\n this.indexer = new Indexer({\n restEndpoint: this.restEndpoint,\n apiEndpoint: this.apiEndpoint,\n registryAddress: this.registryAddress,\n http: this.http,\n });\n this.contract = new Contract({\n rpcEndpoint: this.rpcEndpoint,\n registryAddress: this.registryAddress,\n maciCodeId: this.maciCodeId,\n oracleCodeId: this.oracleCodeId,\n });\n }\n\n async oracleMaciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return await this.contract.oracleMaciClient({\n signer,\n contractAddress,\n });\n }\n\n async registryClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return await this.contract.registryClient({ signer, contractAddress });\n }\n\n async maciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return await this.contract.maciClient({ signer, contractAddress });\n }\n\n async amaciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return await this.contract.amaciClient({ signer, contractAddress });\n }\n\n async createAMaciRound(params: CreateAMaciRoundParams) {\n return await this.contract.createAMaciRound(params);\n }\n\n async createMaciRound(params: CreateMaciRoundParams) {\n return await this.contract.createMaciRound(params);\n }\n\n async createOracleMaciRound(params: CreateOracleMaciRoundParams) {\n return await this.contract.createOracleMaciRound(params);\n }\n\n /**\n * @method balanceOf\n * @description Get the balance of a specific address.\n * @param {string} address - The address to check the balance for.\n * @returns {Promise<BalanceResponse>} The balance response.\n */\n async balanceOf(address: string): Promise<BalanceResponse> {\n return await this.indexer.account.balanceOf(address);\n }\n\n /**\n * @method getRoundById\n * @description Get a round by its ID.\n * @param {string} id - The ID of the round.\n * @returns {Promise<RoundResponse>} The round response.\n */\n async getRoundById(id: string): Promise<RoundResponse> {\n return await this.indexer.round.getRoundById(id);\n }\n\n /**\n * @method getRounds\n * @description Get multiple rounds.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRounds(after: string, limit?: number): Promise<RoundsResponse> {\n return await this.indexer.round.getRounds(after, limit);\n }\n\n /**\n * @method getRoundsByStatus\n * @description Get rounds by their status.\n * @param {string} status - The status of the rounds to retrieve.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByStatus(\n status: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.indexer.round.getRoundsByStatus(status, after, limit);\n }\n\n /**\n * @method getRoundsByCircuitName\n * @description Get rounds by their circuit name.\n * @param {string} name - The name of the circuit.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByCircuitName(\n name: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.indexer.round.getRoundsByCircuitName(name, after, limit);\n }\n\n /**\n * @method getRoundsByOperator\n * @description Get rounds by their operator address.\n * @param {string} address - The address of the operator.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByOperator(\n address: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.indexer.round.getRoundsByOperator(address, after, limit);\n }\n\n /**\n * @method getOperatorByAddress\n * @description Get an operator by their address.\n * @param {string} address - The address of the operator.\n * @returns {Promise<OperatorResponse>} The operator response.\n */\n async getOperatorByAddress(address: string): Promise<OperatorResponse> {\n return await this.indexer.operator.getOperatorByAddress(address);\n }\n\n /**\n * @method getOperators\n * @description Get multiple operators.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of operators to retrieve.\n * @returns {Promise<OperatorsResponse>} The operators response.\n */\n async getOperators(\n after: string,\n limit?: number\n ): Promise<OperatorsResponse> {\n return await this.indexer.operator.getOperators(after, limit);\n }\n\n /**\n * @method getCircuitByName\n * @description Get a circuit by its name.\n * @param {string} name - The name of the circuit.\n * @returns {Promise<CircuitResponse>} The circuit response.\n */\n async getCircuitByName(name: string): Promise<CircuitResponse> {\n return await this.indexer.circuit.getCircuitByName(name);\n }\n\n /**\n * @method getCircuits\n * @description Get all available circuits.\n * @returns {Promise<CircuitsResponse>} The circuits response.\n */\n async getCircuits(): Promise<CircuitsResponse> {\n return await this.indexer.circuit.getCircuits();\n }\n\n /**\n * @method getTransactionByHash\n * @description Get a transaction by its hash.\n * @param {string} hash - The hash of the transaction.\n * @returns {Promise<TransactionResponse>} The transaction response.\n */\n async getTransactionByHash(hash: string): Promise<TransactionResponse> {\n return await this.indexer.transaction.getTransactionByHash(hash);\n }\n\n /**\n * @method getTransactions\n * @description Get multiple transactions.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of transactions to retrieve.\n * @returns {Promise<TransactionsResponse>} The transactions response.\n */\n async getTransactions(\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n return await this.indexer.transaction.getTransactions(after, limit);\n }\n\n /**\n * @method getTransactionsByContractAddress\n * @description Get transactions by contract address.\n * @param {string} address - The contract address.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of transactions to retrieve.\n * @returns {Promise<TransactionsResponse>} The transactions response.\n */\n async getTransactionsByContractAddress(\n address: string,\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n return await this.indexer.transaction.getTransactionsByContractAddress(\n address,\n after,\n limit\n );\n }\n\n /**\n * @method getProofByContractAddress\n * @description Get proof data by contract address.\n * @param {string} address - The contract address.\n * @returns {Promise<ProofResponse>} The proof response.\n */\n async getProofByContractAddress(address: string): Promise<ProofResponse> {\n return await this.indexer.proof.getProofByContractAddress(address);\n }\n}\n"],"mappings":"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","names":["MaciClient","MaciClient"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/libs/errors/index.ts","../src/libs/http/http.ts","../src/libs/errors/types.ts","../src/libs/query/account.ts","../src/libs/const.ts","../src/libs/query/circuit.ts","../src/utils/index.ts","../src/libs/query/operator.ts","../src/libs/query/round.ts","../src/libs/query/transaction.ts","../src/libs/query/proof.ts","../src/libs/indexer/indexer.ts","../src/libs/contract/config.ts","../src/libs/contract/ts/Maci.client.ts","../src/libs/contract/ts/AMaci.client.ts","../src/libs/contract/ts/Registry.client.ts","../src/libs/contract/ts/OracleMaci.client.ts","../src/types/index.ts","../src/libs/contract/vars.ts","../src/libs/contract/utils.ts","../src/libs/contract/contract.ts","../src/maci.ts"],"sourcesContent":["export * from './libs';\nexport type * from './types';\nexport * from './types';\nexport * from './libs/const';\nexport { MaciClient } from './maci';\nexport { Http } from './libs/http';\nexport { Round } from './libs/query';\nexport { Account } from './libs/query';\nexport { Circuit } from './libs/query';\nexport { Operator } from './libs/query';\nexport { Proof } from './libs/query';\nexport { Transaction } from './libs/query';\n","export class BaseError extends Error {\n constructor(message: string, public code: number, public type: string) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\nexport class HttpError extends BaseError {\n constructor(message: string, code: number) {\n super(message, code, 'ERROR_HTTP');\n }\n}\n\nexport class GraphQLError extends BaseError {\n constructor(message: string) {\n super(message, 400, 'ERROR_GRAPHQL');\n }\n}\n\nexport class ValidationError extends BaseError {\n constructor(message: string) {\n super(message, 400, 'ERROR_VALIDATION');\n }\n}\n\nexport class NotFoundError extends BaseError {\n constructor(message: string) {\n super(message, 404, 'ERROR_NOT_FOUND');\n }\n}\n\nexport class ParseError extends BaseError {\n constructor(message: string) {\n super(message, 500, 'ERROR_PARSE');\n }\n}\n\nexport type ErrorType =\n | BaseError\n | Error\n | HttpError\n | NotFoundError\n | ValidationError\n | ParseError\n | GraphQLError;\n\nexport function handleError(error: ErrorType) {\n if (!(error instanceof Error)) {\n return {\n code: 500,\n error: {\n message: 'Unknown error occurred',\n type: `ERROR_UNKNOWN`,\n },\n };\n }\n\n switch (true) {\n case error instanceof HttpError:\n return {\n code: (error as HttpError).code,\n error: {\n message: error.message,\n type: 'ERROR_HTTP',\n },\n };\n\n case error instanceof GraphQLError:\n return {\n code: 400,\n error: {\n message: error.message,\n type: 'ERROR_GRAPHQL',\n },\n };\n\n case error instanceof ValidationError:\n return {\n code: 400,\n error: {\n message: error.message,\n type: 'ERROR_VALIDATION',\n },\n };\n\n case error instanceof NotFoundError:\n return {\n code: 404,\n error: {\n message: error.message,\n type: 'ERROR_NOT_FOUND',\n },\n };\n\n case error instanceof ParseError:\n return {\n code: 500,\n error: {\n message: error.message,\n type: 'ERROR_PARSE',\n },\n };\n\n case error instanceof BaseError:\n return {\n code: (error as BaseError).code,\n error: {\n message: error.message,\n type: (error as BaseError).type,\n },\n };\n\n default:\n return {\n code: 500,\n error: {\n message: error.message || 'Internal server error',\n type: 'ERROR_UNKNOWN',\n },\n };\n }\n}\n","import {\n BaseError,\n HttpError,\n GraphQLError,\n ParseError,\n} from '../errors';\n\nexport type FetchOptions = RequestInit & {\n next?: {\n revalidate?: boolean | number;\n };\n};\n\nexport class Http {\n private apiEndpoint: string;\n private restEndpoint: string;\n private defaultOptions?: FetchOptions;\n\n constructor(\n apiEndpoint: string,\n restEndpoint: string,\n private customFetch?: typeof fetch,\n defaultOptions?: FetchOptions\n ) {\n this.apiEndpoint = apiEndpoint;\n this.restEndpoint = restEndpoint;\n this.defaultOptions = defaultOptions;\n }\n\n private getFetch() {\n return this.customFetch || fetch;\n }\n\n async fetch(url: string): Promise<Response> {\n try {\n const fetchFn = this.getFetch();\n const response = await fetchFn(url, {\n ...this.defaultOptions,\n });\n\n if (!response.ok) {\n throw new HttpError(\n `HTTP error! status: ${response.status}`,\n response.status\n );\n }\n\n return response;\n } catch (error) {\n if (error instanceof HttpError) {\n throw error;\n }\n throw new HttpError(`Failed to fetch: ${(error as Error).message}`, 500);\n }\n }\n\n async fetchGraphql<T>(\n query: string,\n after: string,\n limit: number | null = 10\n ): Promise<T> {\n try {\n const isFirstPage = after === 'first';\n const fetchFn = this.getFetch();\n\n const response = await fetchFn(this.apiEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify({\n query,\n variables: { limit, after: isFirstPage ? undefined : after },\n }),\n ...this.defaultOptions,\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n\n if (errorData.errors?.[0]?.message?.includes('Syntax Error')) {\n throw new GraphQLError(\n `GraphQL syntax error: ${errorData.errors[0].message}`\n );\n }\n\n if (errorData.errors?.length > 0) {\n throw new GraphQLError(\n errorData.errors[0].message || 'Unknown GraphQL error'\n );\n }\n\n throw new HttpError(\n `HTTP error: ${JSON.stringify(errorData)}`,\n response.status\n );\n }\n\n const data = await response.json();\n\n if (data.errors) {\n throw new GraphQLError(\n data.errors[0]?.message || 'GraphQL query failed'\n );\n }\n\n return data;\n } catch (error) {\n if (error instanceof BaseError) {\n throw error;\n }\n if (error instanceof SyntaxError) {\n throw new ParseError('Failed to parse JSON response');\n }\n throw new HttpError(\n `Failed to fetch GraphQL: ${(error as Error).message}`,\n 500\n );\n }\n }\n\n async fetchRest(path: string): Promise<any> {\n try {\n const fetchFn = this.getFetch();\n const response = await fetchFn(`${this.restEndpoint}${path}`, {\n ...this.defaultOptions,\n });\n\n if (!response.ok) {\n throw new HttpError(\n `HTTP error! status: ${response.status}`,\n response.status\n );\n }\n\n try {\n return await response.json();\n } catch (error) {\n throw new ParseError('Failed to parse JSON response');\n }\n } catch (error) {\n if (error instanceof BaseError) {\n throw error;\n }\n throw new HttpError(\n `Failed to fetch REST: ${(error as Error).message}`,\n 500\n );\n }\n }\n}\n","export const ERROR = {\n ERROR_ADDRESS_NOT_FOUND: 'ERROR_ADDRESS_NOT_FOUND',\n ERROR_CIRCUIT_NOT_FOUND: 'ERROR_CIRCUIT_NOT_FOUND',\n ERROR_OPERATOR_INVALID_ADDRESS: 'ERROR_OPERATOR_INVALID_ADDRESS',\n ERROR_OPERATOR_NOT_FOUND: 'ERROR_OPERATOR_NOT_FOUND',\n ERROR_OPERATORS_NOT_FOUND: 'ERROR_OPERATORS_NOT_FOUND',\n ERROR_PROOF_NOT_FOUND: 'ERROR_PROOF_NOT_FOUND',\n ERROR_ROUND_INVALID_ADDRESS: 'ERROR_ROUND_INVALID_ADDRESS',\n ERROR_ROUND_INVALID_STATUS: 'ERROR_ROUND_INVALID_STATUS',\n ERROR_ROUND_NOT_FOUND: 'ERROR_ROUND_NOT_FOUND',\n ERROR_ROUNDS_NOT_FOUND: 'ERROR_ROUNDS_NOT_FOUND',\n ERROR_TRANSACTION_NOT_FOUND: 'ERROR_TRANSACTION_NOT_FOUND',\n ERROR_TRANSACTIONS_NOT_FOUND: 'ERROR_TRANSACTIONS_NOT_FOUND',\n};\n","import { Http } from '../http';\nimport { BalanceResponse } from '../../types';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Account {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async balanceOf(address: string): Promise<BalanceResponse> {\n try {\n const path = `/cosmos/bank/v1beta1/balances/${address}/by_denom?denom=peaka`;\n const data = await this.http.fetchRest(path);\n\n if (data['code'] === undefined) {\n const response: BalanceResponse = {\n code: 200,\n data: {\n balance: data['balance']['amount'],\n },\n };\n return response;\n } else {\n return {\n code: 404,\n error: {\n message: 'Address not found',\n type: ERROR.ERROR_ADDRESS_NOT_FOUND,\n },\n };\n }\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import type { CircuitType } from '../types';\n\nexport const circuits: Record<string, CircuitType> = {\n 'maci-1p1v': {\n maciType: 'MACI',\n circuitType: '1p1v',\n displayName: 'MACI-1p1v',\n repoUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/tree/main/circuits/maci',\n zipUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/archive/refs/heads/main.zip',\n },\n 'maci-qv': {\n maciType: 'MACI',\n circuitType: 'QV',\n displayName: 'MACI-QV',\n repoUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/tree/main/circuits/maci',\n zipUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/archive/refs/heads/main.zip',\n },\n 'amaci-1p1v': {\n maciType: 'aMACI',\n circuitType: '1p1v',\n displayName: 'aMACI-1p1v',\n repoUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/tree/main/circuits/amaci',\n zipUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/archive/refs/heads/main.zip',\n },\n 'amaci-qv': {\n maciType: 'aMACI',\n circuitType: 'QV',\n displayName: 'aMACI-QV',\n repoUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/tree/main/circuits/amaci',\n zipUrl:\n 'https://github.com/DoraFactory/Vota-Circuits/archive/refs/heads/main.zip',\n },\n};\n\nexport const validator_operator_set = {\n doravaloper12yk434ut3un4wx0rult2aww89rsrel8nhmp387: {\n operator_address: '',\n account_address: 'dora12yk434ut3un4wx0rult2aww89rsrel8nydy83p',\n allocation: '22571615985356796592128',\n allocation_dora: 22571.615985356795,\n moniker: '𝐥𝐞𝐬𝐧𝐢𝐤 | 𝐔𝐓𝐒𝐀',\n program_voting_power: 0.06432895760166438,\n tokens: '200731587709257889972292',\n },\n doravaloper15frh0nn3v4yp3vv6sk4pn6jg9l8rt82f7uqfk5: {\n operator_address: '',\n account_address: 'dora15frh0nn3v4yp3vv6sk4pn6jg9l8rt82fd29lqt',\n allocation: '33745159209325474873344',\n allocation_dora: 33745.15920932547,\n moniker: 'NomadValidator',\n program_voting_power: 0.09617348254756773,\n tokens: '300099000000000000000000',\n },\n doravaloper1ddewp74vd2w8jhth2p0uazmc8ajgtcuf3ntqgn: {\n operator_address: '',\n account_address: 'dora1ddewp74vd2w8jhth2p0uazmc8ajgtcufz9wk7v',\n allocation: '40789397021635754590208',\n allocation_dora: 40789.397021635756,\n moniker: 'polkachu.com',\n program_voting_power: 0.11624951413777938,\n tokens: '362744095556470434789338',\n },\n doravaloper1gh8j89jtc2vx6d3y4ehllcdlvluwa49w6xmjsm: {\n operator_address: '',\n account_address: 'dora1gh8j89jtc2vx6d3y4ehllcdlvluwa49wfs7yxy',\n allocation: '33743029941764137943040',\n allocation_dora: 33743.029941764136,\n moniker: 'ITRocket',\n program_voting_power: 0.09616741414897524,\n tokens: '300080064215405665352721',\n },\n doravaloper1j8ru7p8zctup6grfwuga6ndrjj7v88wzn407x7: {\n operator_address: '',\n account_address: 'dora1j8ru7p8zctup6grfwuga6ndrjj7v88wzqr2gsp',\n allocation: '22646525272055477174272',\n allocation_dora: 22646.525272055478,\n moniker: 'StakeUs',\n program_voting_power: 0.06454244857772638,\n tokens: '201397763319500000000000',\n },\n doravaloper1l5zz0kkjt2n7nllsrymy96mc2v2gehda0zc85s: {\n operator_address: '',\n account_address: 'dora1l5zz0kkjt2n7nllsrymy96mc2v2gehdau5a3z0',\n allocation: '22622846742220005965824',\n allocation_dora: 22622.846742220005,\n moniker: 'BlackNodes',\n program_voting_power: 0.06447496492290769,\n tokens: '201187187838702364379121',\n },\n doravaloper1m9v3txhhtadjxpv09gwjhhs344qsxgfscwxjkg: {\n operator_address: '',\n account_address: 'dora1m9v3txhhtadjxpv09gwjhhs344qsxgfstcryqh',\n allocation: '22549006983854435598336',\n allocation_dora: 22549.006983854437,\n moniker: '👋 79anvi 🍀',\n program_voting_power: 0.06426452209558432,\n tokens: '200530523648490887200824',\n },\n doravaloper1tu8006g60t62zwgwf5knkaujv0uzhp2a6wh94h: {\n operator_address: '',\n account_address: 'dora1tu8006g60t62zwgwf5knkaujv0uzhp2afcjnrg',\n allocation: '39369183740744815345664',\n allocation_dora: 39369.18374074482,\n moniker: 'Citadel.one',\n program_voting_power: 0.11220191559671686,\n tokens: '350114000000000000000000',\n },\n doravaloper1x5z0tkafrgyeuqkrwfjr933vghjxchqnqlhcdw: {\n operator_address: '',\n account_address: 'dora1x5z0tkafrgyeuqkrwfjr933vghjxchqnnfjwm3',\n allocation: '22611521290904268701696',\n allocation_dora: 22611.521290904268,\n moniker: '1ce',\n program_voting_power: 0.064442687460896,\n tokens: '201086469492900000000000',\n },\n doravaloper1z6kfew2nhuh02szc2hdecw4fqey2d32auucvux: {\n operator_address: '',\n account_address: 'dora1z6kfew2nhuh02szc2hdecw4fqey2d32a02a62e',\n allocation: '45246951843662957379584',\n allocation_dora: 45246.95184366296,\n moniker: 'Nodes.Guru',\n program_voting_power: 0.12895351616135226,\n tokens: '402385566389000000000006',\n },\n doravaloper1zzne8ufazycklx4j6mgc987t8ykd6wxu63223v: {\n operator_address: '',\n account_address: 'dora1zzne8ufazycklx4j6mgc987t8ykd6wxu63223v',\n allocation: '44982761968475888943104',\n allocation_dora: 44982.76196847589,\n moniker: 'ZKV',\n program_voting_power: 0.12820057674882976,\n tokens: '400036100000000000000000',\n },\n};\n\nexport interface NetworkConfig {\n network: string;\n chainId: string;\n rpcEndpoint: string;\n restEndpoint: string;\n apiEndpoint: string;\n certificateApiEndpoint: string;\n registryAddress: string;\n maciCodeId: number;\n oracleCodeId: number;\n oracleWhitelistBackendPubkey: string;\n oracleFeegrantOperator: string;\n}\n\nexport function getDefaultParams(\n network: 'mainnet' | 'testnet' = 'mainnet'\n): NetworkConfig {\n switch (network) {\n case 'mainnet':\n return {\n network: 'mainnet',\n chainId: 'vota-ash',\n rpcEndpoint: 'https://vota-rpc.dorafactory.org',\n restEndpoint: 'https://vota-rest.dorafactory.org',\n apiEndpoint: 'https://vota-api.dorafactory.org',\n certificateApiEndpoint: 'https://vota-certificate-api.dorafactory.org',\n registryAddress:\n 'dora1smg5qp5trjdkcekdjssqpjehdjf6n4cjss0clyvqcud3t3u3948s8rmgg4',\n maciCodeId: 106,\n oracleCodeId: 111,\n oracleWhitelistBackendPubkey:\n 'A61YtCv2ibMZmDeM02nEElil8wlHx1tLKogBk5dPgf/Q',\n oracleFeegrantOperator: 'dora16s9tljk8dy9ae335yvyzlm8gvkypx9228q8pq8',\n };\n case 'testnet':\n return {\n network: 'testnet',\n chainId: 'vota-testnet',\n rpcEndpoint: 'https://vota-testnet-rpc.dorafactory.org',\n restEndpoint: 'https://vota-testnet-rest.dorafactory.org',\n apiEndpoint: 'https://vota-testnet-api.dorafactory.org',\n certificateApiEndpoint:\n 'https://vota-testnet-certificate-api.dorafactory.org',\n registryAddress:\n 'dora13c8aecstyxrhax9znvvh5zey89edrmd2k5va57pxvpe3fxtfsfeqlhsjnd',\n maciCodeId: 107,\n oracleCodeId: 110,\n oracleWhitelistBackendPubkey:\n 'AoYo/zENN/JquagPdG0/NMbWBBYxOM8BVN677mBXJKJQ',\n oracleFeegrantOperator: 'dora1xp0twdzsdeq4qg3c64v66552deax8zmvq4zw78',\n };\n }\n}\n","import { Http } from '../../libs';\nimport {\n CircuitResponse,\n CircuitsCountGraphqlResponse,\n CircuitType,\n CircuitsResponse,\n} from '../../types';\nimport { circuits } from '../const';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Circuit {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async getCircuitByName(name: string): Promise<CircuitResponse> {\n try {\n const circuitName = name;\n const circuitData: CircuitType = circuits[circuitName];\n\n if (circuitData === undefined) {\n return {\n code: 404,\n error: {\n message: `Circuit ${circuitName} not found`,\n type: ERROR.ERROR_CIRCUIT_NOT_FOUND,\n },\n };\n }\n\n const CIRCUIT_ROUNDS_COUNT_QUERY = `\n query {\n rounds(filter: { circuitName: { equalTo: \"${circuitData.displayName}\" } }) {\n totalCount\n }\n }\n `;\n const circuitRoundsCountResponse =\n await this.http.fetchGraphql<CircuitsCountGraphqlResponse>(\n CIRCUIT_ROUNDS_COUNT_QUERY,\n ''\n );\n\n circuitData.roundCount =\n circuitRoundsCountResponse.data.rounds.totalCount;\n\n const response: CircuitResponse = {\n code: 200,\n data: {\n circuit: circuitData,\n },\n };\n\n return response;\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n\n async getCircuits(): Promise<CircuitsResponse> {\n try {\n const circuitsArray: CircuitType[] = Object.values(circuits).sort(\n (a, b) => a.displayName.localeCompare(b.displayName)\n );\n\n const circuitsWithRoundCount = await Promise.all(\n circuitsArray.map(async (circuit) => {\n const CIRCUIT_ROUNDS_COUNT_QUERY = `\n query {\n rounds(filter: { circuitName: { equalTo: \"${circuit.displayName}\" } }) {\n totalCount\n }\n }\n `;\n const circuitRoundsCountResponse: CircuitsCountGraphqlResponse =\n await this.http.fetchGraphql(CIRCUIT_ROUNDS_COUNT_QUERY, '');\n return {\n ...circuit,\n roundCount: circuitRoundsCountResponse.data.rounds.totalCount,\n };\n })\n );\n\n const response: CircuitsResponse = {\n code: 200,\n data: {\n circuits: circuitsWithRoundCount,\n },\n };\n\n return response;\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import { decode } from 'bech32';\n\nfunction verifyIsBech32(address: string): Error | undefined {\n try {\n decode(address);\n } catch (error) {\n return error instanceof Error ? error : new Error('Unknown error');\n }\n\n return undefined;\n}\n\nexport function isValidAddress(address: string): boolean {\n // An address is valid if it starts with `dora` and is Bech32 format.\n return address.startsWith('dora') && verifyIsBech32(address) === undefined;\n}\n\n// export async function fetchBaseUrl(url: string) {\n// const response = await fetch(url);\n// return response;\n// }\n\n// export async function fetchPages<T>(\n// query: string,\n// after: string,\n// limit: number | null = 10\n// ): Promise<T> {\n// const isFirstPage = after === 'first';\n// // after = isFirstPage ? null : after;\n\n// const response = await fetch(apiEndpoint, {\n// method: 'POST',\n// headers: {\n// 'Content-Type': 'application/json',\n// Accept: 'application/json',\n// },\n// body: JSON.stringify({\n// query,\n// variables: { limit, after: isFirstPage ? undefined : after },\n// }),\n// }).then((res) => res.json());\n\n// return response;\n// }\n","import { ERROR } from '../errors/types';\nimport { Http } from '../../libs';\nimport {\n OperatorsGraphqlResponse,\n RoundsCountGraphqlResponse,\n OperatorResponse,\n OperatorsResponse,\n} from '../../types';\nimport { isValidAddress } from '../../utils';\nimport { handleError, ErrorType } from '../errors';\n\nexport class Operator {\n public http: Http;\n public amaciRegistryContract: string;\n\n constructor(http: Http, amaciRegistryContract: string) {\n this.http = http;\n this.amaciRegistryContract = amaciRegistryContract;\n }\n\n async getOperatorByAddress(address: string): Promise<OperatorResponse> {\n try {\n if (!isValidAddress(address)) {\n return {\n code: 400,\n error: {\n message: 'Invalid operator address format',\n type: ERROR.ERROR_OPERATOR_INVALID_ADDRESS,\n },\n };\n }\n\n const OPERATORS_QUERY = `query {\n operators(filter: { operatorAddress: { equalTo: \"${address}\" } }) {\n edges {\n node {\n id\n validatorAddress\n operatorAddress\n coordinatorPubkeyX\n coordinatorPubkeyY\n identity\n }\n }\n }\n }`;\n\n const response = await this.http.fetchGraphql<OperatorsGraphqlResponse>(\n OPERATORS_QUERY,\n ''\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.operators ||\n !response.data.operators.edges ||\n response.data.operators.edges.length === 0\n ) {\n return {\n code: 404,\n error: {\n message: `No operator found for address ${address}`,\n type: ERROR.ERROR_OPERATOR_NOT_FOUND,\n },\n };\n }\n\n const operatorResponse = response.data.operators.edges[0].node;\n\n if (\n operatorResponse.operatorAddress === '' ||\n operatorResponse.coordinatorPubkeyX === ''\n ) {\n operatorResponse.activeRoundsCount = 0;\n operatorResponse.completedRoundsCount = 0;\n } else {\n const ROUNDS_QUERY = `query {\n activeRoundsCount: rounds(filter: {\n period: {notEqualTo: \"Ended\"},\n operator: {equalTo: \"${operatorResponse.operatorAddress}\"},\n caller: {equalTo: \"${this.amaciRegistryContract}\"}\n }) {\n totalCount\n }\n completedRoundsCount: rounds(filter: {\n period: {equalTo: \"Ended\"},\n operator: {equalTo: \"${operatorResponse.operatorAddress}\"},\n caller: {equalTo: \"${this.amaciRegistryContract}\"}\n }) {\n totalCount\n }\n }`;\n\n const roundsCount =\n await this.http.fetchGraphql<RoundsCountGraphqlResponse>(\n ROUNDS_QUERY,\n ''\n );\n operatorResponse.activeRoundsCount =\n roundsCount.data.activeRoundsCount.totalCount;\n operatorResponse.completedRoundsCount =\n roundsCount.data.completedRoundsCount.totalCount;\n }\n\n operatorResponse.logoUrl = '';\n operatorResponse.moniker = '';\n const identity = response.data.operators.edges[0].node.identity;\n\n const keybaseUrl = `https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=${identity}`;\n const keybaseResponse = await this.http.fetch(keybaseUrl);\n const keybaseData = await keybaseResponse.json();\n\n if (keybaseData.status.code === 0) {\n if (keybaseData.them[0]?.pictures?.primary?.url) {\n operatorResponse.logoUrl = keybaseData.them[0].pictures.primary.url;\n }\n if (keybaseData.them[0]?.basics?.username_cased) {\n operatorResponse.moniker = keybaseData.them[0].profile.full_name;\n }\n }\n const operator: OperatorResponse = {\n code: 200,\n data: {\n operator: operatorResponse,\n },\n };\n return operator;\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n\n async getOperators(\n after: string,\n limit?: number\n ): Promise<OperatorsResponse> {\n try {\n const OPERATORS_QUERY = `query ($limit: Int, $after: Cursor) {\n operators(first: $limit, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n validatorAddress\n operatorAddress\n coordinatorPubkeyX\n coordinatorPubkeyY\n identity\n }\n }\n }\n }`;\n\n const response = await this.http.fetchGraphql<OperatorsGraphqlResponse>(\n OPERATORS_QUERY,\n after,\n limit\n );\n if (\n !response ||\n !response.data ||\n !response.data.operators ||\n !response.data.operators.edges\n ) {\n return {\n code: 404,\n error: {\n message: 'No operators found',\n type: ERROR.ERROR_OPERATORS_NOT_FOUND,\n },\n };\n }\n const operatorsWithRounds = await Promise.all(\n response.data.operators.edges.map(async (edge) => {\n const operator = edge.node;\n if (\n operator.operatorAddress === '' ||\n operator.coordinatorPubkeyX === ''\n ) {\n operator.activeRoundsCount = 0;\n operator.completedRoundsCount = 0;\n return operator;\n }\n const ROUNDS_QUERY = `query {\n activeRoundsCount: rounds(filter: {\n period: {notEqualTo: \"Ended\"},\n operator: {equalTo: \"${operator.operatorAddress}\"},\n caller: {equalTo: \"${this.amaciRegistryContract}\"}\n }) {\n totalCount\n }\n completedRoundsCount: rounds(filter: {\n period: {equalTo: \"Ended\"},\n operator: {equalTo: \"${operator.operatorAddress}\"},\n caller: {equalTo: \"${this.amaciRegistryContract}\"}\n }) {\n totalCount\n }\n }`;\n\n const roundsCount =\n await this.http.fetchGraphql<RoundsCountGraphqlResponse>(\n ROUNDS_QUERY,\n ''\n );\n operator.activeRoundsCount =\n roundsCount.data.activeRoundsCount.totalCount;\n operator.completedRoundsCount =\n roundsCount.data.completedRoundsCount.totalCount;\n\n return operator;\n })\n );\n\n response.data.operators.edges = operatorsWithRounds.map(\n (operator, index) => ({\n cursor: response.data.operators.edges[index].cursor,\n node: operator,\n })\n );\n\n await Promise.all(\n response.data.operators.edges.map(async (edge) => {\n const operator = edge.node;\n const identity = operator.identity;\n operator.logoUrl = '';\n operator.moniker = '';\n\n // try {\n const keybaseUrl = `https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=${identity}`;\n const keybaseResponse = await this.http.fetch(keybaseUrl);\n const keybaseData = await keybaseResponse.json();\n\n if (keybaseData.status.code === 0) {\n if (keybaseData.them[0]?.pictures?.primary?.url) {\n operator.logoUrl = keybaseData.them[0].pictures.primary.url;\n }\n if (keybaseData.them[0]?.basics?.username_cased) {\n operator.moniker = keybaseData.them[0].profile.full_name;\n }\n }\n // } catch (error) {\n // console.error('Error fetching keybase data:', error);\n // }\n return operator;\n })\n );\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import {\n RoundsResponse,\n RoundResponse,\n RoundGraphqlResponse,\n RoundsGraphqlResponse,\n} from '../../types';\nimport { Http } from '../../libs';\nimport { isValidAddress } from '../../utils';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Round {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async getRoundById(address: string): Promise<RoundResponse> {\n try {\n if (!isValidAddress(address)) {\n return {\n code: 400,\n error: {\n message: 'Invalid round address format',\n type: ERROR.ERROR_ROUND_INVALID_ADDRESS,\n },\n };\n }\n\n const ROUND_QUERY = `query {\n round(id: \"${address}\") {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n identity\n }\n }`;\n\n const response = await this.http.fetchGraphql<RoundGraphqlResponse>(\n ROUND_QUERY,\n ''\n );\n\n if (!response || !response.data || !response.data.round) {\n return {\n code: 404,\n error: {\n message: `No round data found for address ${address}`,\n type: ERROR.ERROR_ROUND_NOT_FOUND,\n },\n };\n }\n\n response.data.round.operatorLogoUrl = '';\n response.data.round.operatorMoniker = '';\n\n const identity = response.data.round.identity;\n // try {\n const keybaseUrl = `https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=${identity}`;\n const keybaseResponse = await this.http.fetch(keybaseUrl);\n const keybaseData = await keybaseResponse.json();\n\n if (keybaseData.status.code === 0) {\n if (keybaseData.them[0]?.pictures?.primary?.url) {\n response.data.round.operatorLogoUrl =\n keybaseData.them[0].pictures.primary.url;\n }\n if (keybaseData.them[0]?.basics?.username_cased) {\n response.data.round.operatorMoniker =\n keybaseData.them[0].profile.full_name;\n }\n }\n // } catch (error) {\n // console.error('Error fetching keybase data:', error);\n // }\n\n const results = JSON.parse(response.data.round.results);\n const votes = results.map((r: string) => ({\n v: Number(r.slice(0, -24)),\n v2: Number(r.slice(-24)),\n }));\n const totalVotes = votes.reduce(\n (s: { v: number; v2: number }, c: { v: number; v2: number }) => ({\n v: s.v + c.v,\n v2: s.v2 + c.v2,\n }),\n { v: 0, v2: 0 }\n );\n const resultsList = votes.map((v: { v: number; v2: number }) => ({\n v: totalVotes.v === 0 ? '0.0' : ((v.v / totalVotes.v) * 100).toFixed(3),\n v2:\n totalVotes.v2 === 0\n ? '0.0'\n : ((v.v2 / totalVotes.v2) * 100).toFixed(3),\n }));\n response.data.round.resultsList = resultsList;\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n\n async getRounds(after: string, limit?: number): Promise<RoundsResponse> {\n try {\n const ROUND_HISTORY_QUERY = `query ($limit: Int, $after: Cursor) {\n rounds(first: $limit, after: $after, orderBy: [TIMESTAMP_DESC]){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n node {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n }\n cursor\n }\n }\n }\n `;\n\n const response = await this.http.fetchGraphql<RoundsGraphqlResponse>(\n ROUND_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.rounds ||\n !response.data.rounds.edges\n ) {\n return {\n code: 404,\n error: {\n message: 'No rounds data found',\n type: ERROR.ERROR_ROUNDS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n\n async getRoundsByCircuitName(\n circuitName: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n try {\n const ROUND_HISTORY_QUERY = `query ($limit: Int, $after: Cursor) {\n rounds(first: $limit, after: $after, filter:{\n circuitName:{\n equalTo: \"${circuitName}\"\n }\n }, orderBy: [TIMESTAMP_DESC]){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n }\n }\n }\n }\n `;\n\n const response = await this.http.fetchGraphql<RoundsGraphqlResponse>(\n ROUND_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.rounds ||\n !response.data.rounds.edges\n ) {\n return {\n code: 404,\n error: {\n message: `No rounds data found for circuit name ${circuitName}`,\n type: ERROR.ERROR_ROUNDS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n\n async getRoundsByStatus(\n status: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n try {\n const currentTime = Math.floor(Date.now() / 1000);\n let filterCondition = '';\n\n switch (status) {\n case 'Created':\n filterCondition = `\n or: [\n { votingStart: { equalTo: \"0\" } },\n { and: [\n { votingStart: { notEqualTo: \"0\" } },\n { votingStart: { greaterThan: \"${currentTime.toString()}\" } }\n ] }\n ]\n `;\n break;\n case 'Ongoing':\n filterCondition = `\n or: [\n { votingStart: { equalTo: \"0\" }},\n { votingStart: { lessThanOrEqualTo: \"${currentTime.toString()}\" }, votingEnd: { greaterThan: \"${currentTime.toString()}\" } }\n ]\n `;\n break;\n case 'Tallying':\n filterCondition = `\n and: [\n { status: { notEqualTo: \"Closed\" } },\n { votingEnd: { lessThan: \"${currentTime.toString()}\" } },\n { votingEnd: { notEqualTo: \"0\" } }\n ]\n `;\n break;\n case 'Closed':\n filterCondition = `status: { equalTo: \"Closed\" }`;\n break;\n default:\n return {\n code: 400,\n error: {\n message: `Invalid status: ${status}`,\n type: ERROR.ERROR_ROUND_INVALID_STATUS,\n },\n };\n }\n\n const ROUND_HISTORY_QUERY = `query ($limit: Int!, $after: Cursor) {\n rounds(first: $limit, after: $after, filter: { ${filterCondition} }, orderBy: [TIMESTAMP_DESC]) {\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n }\n }\n }\n }`;\n\n const response = await this.http.fetchGraphql<RoundsGraphqlResponse>(\n ROUND_HISTORY_QUERY,\n after,\n limit\n );\n if (\n !response ||\n !response.data ||\n !response.data.rounds ||\n !response.data.rounds.edges\n ) {\n return {\n code: 404,\n error: {\n message: `No rounds data found for status ${status}`,\n type: ERROR.ERROR_ROUNDS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n\n async getRoundsByOperator(\n operator: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n try {\n if (!isValidAddress(operator)) {\n return {\n code: 400,\n error: {\n message: 'Invalid operator address format',\n type: ERROR.ERROR_OPERATOR_INVALID_ADDRESS,\n },\n };\n }\n\n const ROUND_HISTORY_QUERY = `query ($limit: Int!, $after: Cursor) {\n rounds(first: $limit, after: $after, filter:{\n operator:{\n equalTo: \"${operator}\"\n }\n }, orderBy: [TIMESTAMP_DESC]){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n caller\n admin\n operator\n contractAddress\n circuitName\n timestamp\n votingStart\n votingEnd\n status\n period\n actionType\n roundTitle\n roundDescription\n roundLink\n coordinatorPubkeyX\n coordinatorPubkeyY\n voteOptionMap\n results\n allResult\n gasStationEnable\n totalGrant\n baseGrant\n totalBond\n circuitType\n circuitPower\n certificationSystem\n codeId\n maciType\n voiceCreditAmount\n preDeactivateRoot\n }\n }\n }\n }`;\n\n const response = await this.http.fetchGraphql<RoundsGraphqlResponse>(\n ROUND_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.rounds ||\n !response.data.rounds.edges\n ) {\n return {\n code: 404,\n error: {\n message: `No rounds data found for operator ${operator}`,\n type: ERROR.ERROR_ROUNDS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import {\n TransactionsResponse,\n TransactionResponse,\n TransactionGraphqlResponse,\n TransactionsGraphqlResponse,\n} from '../../types';\nimport { Http } from '../../libs';\nimport { isValidAddress } from '../../utils';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Transaction {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async getTransactionByHash(txHash: string): Promise<TransactionResponse> {\n try {\n const TRANSACTION_QUERY = `query {\n transaction(id: \"${txHash}\") {\n id\n blockHeight\n txHash\n timestamp\n type\n status\n circuitName\n fee\n gasUsed\n gasWanted\n caller\n contractAddress\n }\n }`;\n\n const response = await this.http.fetchGraphql<TransactionGraphqlResponse>(\n TRANSACTION_QUERY,\n ''\n );\n\n if (!response || !response.data || !response.data.transaction) {\n return {\n code: 404,\n error: {\n message: `No transaction found for txHash ${txHash}`,\n type: ERROR.ERROR_TRANSACTION_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error: any) {\n return handleError(error as ErrorType);\n }\n }\n\n async getTransactions(\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n try {\n const TRANSACTION_HISTORY_QUERY = `query transactions($limit: Int, $after: Cursor) {\n transactions(first: $limit, after: $after, orderBy: [TIMESTAMP_DESC]\n ){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n timestamp\n type\n status\n circuitName\n fee\n gasUsed\n gasWanted\n caller\n contractAddress\n }\n }\n }\n }`;\n\n const response =\n await this.http.fetchGraphql<TransactionsGraphqlResponse>(\n TRANSACTION_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.transactions ||\n !response.data.transactions.edges\n ) {\n return {\n code: 404,\n error: {\n message: 'No transactions data found',\n type: ERROR.ERROR_TRANSACTIONS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n\n async getTransactionsByContractAddress(\n address: string,\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n try {\n if (!isValidAddress(address)) {\n return {\n code: 400,\n error: {\n message: 'Invalid round address format',\n type: ERROR.ERROR_ROUND_INVALID_ADDRESS,\n },\n };\n }\n\n const TRANSACTION_HISTORY_QUERY = `query transactions($limit: Int!, $after: Cursor) {\n transactions(first: $limit, after: $after, filter:{\n contractAddress:{\n equalTo: \"${address}\"\n }\n }, orderBy: [TIMESTAMP_DESC]\n ){\n pageInfo {\n endCursor\n hasNextPage\n }\n totalCount\n edges {\n cursor\n node {\n id\n blockHeight\n txHash\n timestamp\n type\n status\n circuitName\n fee\n gasUsed\n gasWanted\n caller\n contractAddress\n }\n }\n }\n }`;\n\n const response =\n await this.http.fetchGraphql<TransactionsGraphqlResponse>(\n TRANSACTION_HISTORY_QUERY,\n after,\n limit\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.transactions ||\n !response.data.transactions.edges\n ) {\n return {\n code: 404,\n error: {\n message: 'No transactions data found',\n type: ERROR.ERROR_TRANSACTIONS_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import { Http } from '../../libs';\nimport { isValidAddress } from '../../utils';\nimport { ProofResponse, ProofGraphqlResponse } from '../../types';\nimport { handleError, ErrorType } from '../errors';\nimport { ERROR } from '../errors/types';\n\nexport class Proof {\n public http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n async getProofByContractAddress(address: string): Promise<ProofResponse> {\n try {\n if (!isValidAddress(address)) {\n return {\n code: 400,\n error: {\n message: 'Invalid round address format',\n type: ERROR.ERROR_ROUND_INVALID_ADDRESS,\n },\n };\n }\n\n const PROOF_QUERY = `query HomePage {\n proofData(first: 100, filter:{\n contractAddress:{\n equalTo: \"${address}\"\n }\n } ,orderBy: [TIMESTAMP_DESC]\n ){\n nodes {\n id\n blockHeight\n txHash\n contractAddress\n timestamp\n actionType\n commitment\n proof\n }\n }\n }\n `;\n\n const response = await this.http.fetchGraphql<ProofGraphqlResponse>(\n PROOF_QUERY,\n ''\n );\n\n if (\n !response ||\n !response.data ||\n !response.data.proofData ||\n !response.data.proofData.nodes ||\n response.data.proofData.nodes.length === 0\n ) {\n return {\n code: 404,\n error: {\n message: `No proof found for round address ${address}`,\n type: ERROR.ERROR_PROOF_NOT_FOUND,\n },\n };\n }\n\n return {\n code: 200,\n data: response.data,\n };\n } catch (error) {\n return handleError(error as ErrorType);\n }\n }\n}\n","import {\n BalanceResponse,\n RoundResponse,\n RoundsResponse,\n OperatorResponse,\n OperatorsResponse,\n CircuitResponse,\n TransactionResponse,\n TransactionsResponse,\n CircuitsResponse,\n ProofResponse,\n} from '../../types';\nimport { IndexerParams } from './types';\nimport { Http } from '../http';\nimport {\n Round,\n Account,\n Circuit,\n Operator,\n Proof,\n Transaction,\n} from '../query';\n\n/**\n * @class Indexer\n * @description This class is used to interact with Maci Indexer.\n */\nexport class Indexer {\n public restEndpoint: string;\n public apiEndpoint: string;\n public registryAddress: string;\n\n public http: Http;\n public round: Round;\n public account: Account;\n public circuit: Circuit;\n public operator: Operator;\n public proof: Proof;\n public transaction: Transaction;\n\n /**\n * @constructor\n * @param {IndexerParams} params - The parameters for the Maci Indexer instance.\n */\n constructor({\n restEndpoint,\n apiEndpoint,\n registryAddress,\n http,\n }: IndexerParams) {\n this.http = http;\n\n this.restEndpoint = restEndpoint;\n this.apiEndpoint = apiEndpoint;\n this.registryAddress = registryAddress;\n\n this.round = new Round(this.http);\n this.account = new Account(this.http);\n this.circuit = new Circuit(this.http);\n this.operator = new Operator(this.http, this.registryAddress);\n this.proof = new Proof(this.http);\n this.transaction = new Transaction(this.http);\n }\n\n /**\n * @method balanceOf\n * @description Get the balance of a specific address.\n * @param {string} address - The address to check the balance for.\n * @returns {Promise<BalanceResponse>} The balance response.\n */\n async balanceOf(address: string): Promise<BalanceResponse> {\n return await this.account.balanceOf(address);\n }\n\n /**\n * @method getRoundById\n * @description Get a round by its ID.\n * @param {string} id - The ID of the round.\n * @returns {Promise<RoundResponse>} The round response.\n */\n async getRoundById(id: string): Promise<RoundResponse> {\n return await this.round.getRoundById(id);\n }\n\n /**\n * @method getRounds\n * @description Get multiple rounds.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRounds(after: string, limit?: number): Promise<RoundsResponse> {\n return await this.round.getRounds(after, limit);\n }\n\n /**\n * @method getRoundsByStatus\n * @description Get rounds by their status.\n * @param {string} status - The status of the rounds to retrieve.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByStatus(\n status: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.round.getRoundsByStatus(status, after, limit);\n }\n\n /**\n * @method getRoundsByCircuitName\n * @description Get rounds by their circuit name.\n * @param {string} name - The name of the circuit.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByCircuitName(\n name: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.round.getRoundsByCircuitName(name, after, limit);\n }\n\n /**\n * @method getRoundsByOperator\n * @description Get rounds by their operator address.\n * @param {string} address - The address of the operator.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByOperator(\n address: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.round.getRoundsByOperator(address, after, limit);\n }\n\n /**\n * @method getOperatorByAddress\n * @description Get an operator by their address.\n * @param {string} address - The address of the operator.\n * @returns {Promise<OperatorResponse>} The operator response.\n */\n async getOperatorByAddress(address: string): Promise<OperatorResponse> {\n return await this.operator.getOperatorByAddress(address);\n }\n\n /**\n * @method getOperators\n * @description Get multiple operators.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of operators to retrieve.\n * @returns {Promise<OperatorsResponse>} The operators response.\n */\n async getOperators(\n after: string,\n limit?: number\n ): Promise<OperatorsResponse> {\n return await this.operator.getOperators(after, limit);\n }\n\n /**\n * @method getCircuitByName\n * @description Get a circuit by its name.\n * @param {string} name - The name of the circuit.\n * @returns {Promise<CircuitResponse>} The circuit response.\n */\n async getCircuitByName(name: string): Promise<CircuitResponse> {\n return await this.circuit.getCircuitByName(name);\n }\n\n /**\n * @method getCircuits\n * @description Get all available circuits.\n * @returns {Promise<CircuitsResponse>} The circuits response.\n */\n async getCircuits(): Promise<CircuitsResponse> {\n return await this.circuit.getCircuits();\n }\n\n /**\n * @method getTransactionByHash\n * @description Get a transaction by its hash.\n * @param {string} hash - The hash of the transaction.\n * @returns {Promise<TransactionResponse>} The transaction response.\n */\n async getTransactionByHash(hash: string): Promise<TransactionResponse> {\n return await this.transaction.getTransactionByHash(hash);\n }\n\n /**\n * @method getTransactions\n * @description Get multiple transactions.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of transactions to retrieve.\n * @returns {Promise<TransactionsResponse>} The transactions response.\n */\n async getTransactions(\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n return await this.transaction.getTransactions(after, limit);\n }\n\n /**\n * @method getTransactionsByContractAddress\n * @description Get transactions by contract address.\n * @param {string} address - The contract address.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of transactions to retrieve.\n * @returns {Promise<TransactionsResponse>} The transactions response.\n */\n async getTransactionsByContractAddress(\n address: string,\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n return await this.transaction.getTransactionsByContractAddress(\n address,\n after,\n limit\n );\n }\n\n /**\n * @method getProofByContractAddress\n * @description Get proof data by contract address.\n * @param {string} address - The contract address.\n * @returns {Promise<ProofResponse>} The proof response.\n */\n async getProofByContractAddress(address: string): Promise<ProofResponse> {\n return await this.proof.getProofByContractAddress(address);\n }\n}\n","import { Secp256k1HdWallet } from '@cosmjs/launchpad';\nimport { OfflineSigner } from '@cosmjs/proto-signing';\nimport {\n GasPrice,\n SigningStargateClient,\n SigningStargateClientOptions,\n} from '@cosmjs/stargate';\nimport {\n SigningCosmWasmClient,\n SigningCosmWasmClientOptions,\n} from '@cosmjs/cosmwasm-stargate';\nimport { MaciClient } from './ts/Maci.client';\nimport { AMaciClient } from './ts/AMaci.client';\nimport { RegistryClient } from './ts/Registry.client';\nimport { OracleMaciClient } from './ts/OracleMaci.client';\n\nconst defaultSigningClientOptions: SigningStargateClientOptions = {\n broadcastPollIntervalMs: 8_000,\n broadcastTimeoutMs: 64_000,\n gasPrice: GasPrice.fromString('100000000000peaka'),\n};\n\nexport async function createMaciClientBy({\n rpcEndpoint,\n wallet,\n contractAddress,\n}: {\n rpcEndpoint: string;\n wallet: OfflineSigner;\n contractAddress: string;\n}) {\n const signingCosmWasmClient = await createContractClientByWallet(\n rpcEndpoint,\n wallet\n );\n const [{ address }] = await wallet.getAccounts();\n return new MaciClient(signingCosmWasmClient, address, contractAddress);\n}\n\nexport async function createAMaciClientBy({\n rpcEndpoint,\n wallet,\n contractAddress,\n}: {\n rpcEndpoint: string;\n wallet: OfflineSigner;\n contractAddress: string;\n}) {\n const signingCosmWasmClient = await createContractClientByWallet(\n rpcEndpoint,\n wallet\n );\n const [{ address }] = await wallet.getAccounts();\n return new AMaciClient(signingCosmWasmClient, address, contractAddress);\n}\n\nexport async function createRegistryClientBy({\n rpcEndpoint,\n wallet,\n contractAddress,\n}: {\n rpcEndpoint: string;\n wallet: OfflineSigner;\n contractAddress: string;\n}) {\n const signingCosmWasmClient = await createContractClientByWallet(\n rpcEndpoint,\n wallet\n );\n const [{ address }] = await wallet.getAccounts();\n return new RegistryClient(signingCosmWasmClient, address, contractAddress);\n}\n\nexport async function createOracleMaciClientBy({\n rpcEndpoint,\n wallet,\n contractAddress,\n}: {\n rpcEndpoint: string;\n wallet: OfflineSigner;\n contractAddress: string;\n}) {\n const signingCosmWasmClient = await createContractClientByWallet(\n rpcEndpoint,\n wallet\n );\n const [{ address }] = await wallet.getAccounts();\n return new OracleMaciClient(signingCosmWasmClient, address, contractAddress);\n}\n\nexport async function createContractClientByWallet(\n rpcEndpoint: string,\n wallet: OfflineSigner\n) {\n const client = await SigningCosmWasmClient.connectWithSigner(\n rpcEndpoint,\n wallet,\n {\n ...defaultSigningClientOptions,\n }\n );\n return client;\n}\n\nexport async function getSignerClientByWallet(\n rpcEndpoint: string,\n wallet: OfflineSigner\n) {\n const signingStargateClient = await SigningStargateClient.connectWithSigner(\n rpcEndpoint,\n wallet,\n {\n ...defaultSigningClientOptions,\n }\n );\n return signingStargateClient;\n}\n","/**\n * This file was automatically generated by @cosmwasm/ts-codegen@0.30.1.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run the @cosmwasm/ts-codegen generate command to regenerate this file.\n */\n\nimport {\n\tCosmWasmClient,\n\tSigningCosmWasmClient,\n\tExecuteResult,\n} from '@cosmjs/cosmwasm-stargate';\nimport { Coin, StdFee } from '@cosmjs/amino';\nimport {\n\tUint256,\n\tTimestamp,\n\tUint64,\n\tInstantiateMsg,\n\tPubKey,\n\tGroth16VKeyType,\n\tMaciParameters,\n\tQuinaryTreeRoot,\n\tRoundInfo,\n\tVotingTime,\n\tWhitelist,\n\tWhitelistConfig,\n\tExecuteMsg,\n\tUint128,\n\tMessageData,\n\tGroth16ProofType,\n\tQueryMsg,\n\tAddr,\n\tPeriodStatus,\n\tPeriod,\n\tBoolean,\n\tArrayOfString,\n} from './Maci.types';\nexport interface MaciReadOnlyInterface {\n\tcontractAddress: string;\n\tgetRoundInfo: () => Promise<RoundInfo>;\n\tgetVotingTime: () => Promise<VotingTime>;\n\tgetPeriod: () => Promise<Period>;\n\tgetNumSignUp: () => Promise<Uint256>;\n\tgetMsgChainLength: () => Promise<Uint256>;\n\tgetDMsgChainLength: () => Promise<Uint256>;\n\tgetProcessedDMsgCount: () => Promise<Uint256>;\n\tgetProcessedMsgCount: () => Promise<Uint256>;\n\tgetProcessedUserCount: () => Promise<Uint256>;\n\tgetResult: ({ index }: { index: Uint256 }) => Promise<Uint256>;\n\tgetAllResult: () => Promise<Uint256>;\n\tgetStateIdxInc: ({ address }: { address: Addr }) => Promise<Uint256>;\n\tgetVoiceCreditBalance: ({ index }: { index: Uint256 }) => Promise<Uint256>;\n\twhiteList: () => Promise<Whitelist>;\n\tisWhiteList: ({ sender }: { sender: string }) => Promise<Boolean>;\n\tvoteOptionMap: () => Promise<ArrayOfString>;\n\tmaxVoteOptions: () => Promise<Uint256>;\n\tqueryTotalFeeGrant: () => Promise<Uint128>;\n\tqueryCircuitType: () => Promise<Uint256>;\n\tqueryCertSystem: () => Promise<Uint256>;\n}\nexport class MaciQueryClient implements MaciReadOnlyInterface {\n\tclient: CosmWasmClient;\n\tcontractAddress: string;\n\n\tconstructor(client: CosmWasmClient, contractAddress: string) {\n\t\tthis.client = client;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.getRoundInfo = this.getRoundInfo.bind(this);\n\t\tthis.getVotingTime = this.getVotingTime.bind(this);\n\t\tthis.getPeriod = this.getPeriod.bind(this);\n\t\tthis.getNumSignUp = this.getNumSignUp.bind(this);\n\t\tthis.getMsgChainLength = this.getMsgChainLength.bind(this);\n\t\tthis.getDMsgChainLength = this.getDMsgChainLength.bind(this);\n\t\tthis.getProcessedDMsgCount = this.getProcessedDMsgCount.bind(this);\n\t\tthis.getProcessedMsgCount = this.getProcessedMsgCount.bind(this);\n\t\tthis.getProcessedUserCount = this.getProcessedUserCount.bind(this);\n\t\tthis.getResult = this.getResult.bind(this);\n\t\tthis.getAllResult = this.getAllResult.bind(this);\n\t\tthis.getStateIdxInc = this.getStateIdxInc.bind(this);\n\t\tthis.getVoiceCreditBalance = this.getVoiceCreditBalance.bind(this);\n\t\tthis.whiteList = this.whiteList.bind(this);\n\t\tthis.isWhiteList = this.isWhiteList.bind(this);\n\t\tthis.voteOptionMap = this.voteOptionMap.bind(this);\n\t\tthis.maxVoteOptions = this.maxVoteOptions.bind(this);\n\t\tthis.queryTotalFeeGrant = this.queryTotalFeeGrant.bind(this);\n\t\tthis.queryCircuitType = this.queryCircuitType.bind(this);\n\t\tthis.queryCertSystem = this.queryCertSystem.bind(this);\n\t}\n\n\tgetRoundInfo = async (): Promise<RoundInfo> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_round_info: {},\n\t\t});\n\t};\n\tgetVotingTime = async (): Promise<VotingTime> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voting_time: {},\n\t\t});\n\t};\n\tgetPeriod = async (): Promise<Period> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_period: {},\n\t\t});\n\t};\n\tgetNumSignUp = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_num_sign_up: {},\n\t\t});\n\t};\n\tgetMsgChainLength = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_msg_chain_length: {},\n\t\t});\n\t};\n\tgetDMsgChainLength = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_d_msg_chain_length: {},\n\t\t});\n\t};\n\tgetProcessedDMsgCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_d_msg_count: {},\n\t\t});\n\t};\n\tgetProcessedMsgCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_msg_count: {},\n\t\t});\n\t};\n\tgetProcessedUserCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_user_count: {},\n\t\t});\n\t};\n\tgetResult = async ({ index }: { index: Uint256 }): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_result: {\n\t\t\t\tindex,\n\t\t\t},\n\t\t});\n\t};\n\tgetAllResult = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_all_result: {},\n\t\t});\n\t};\n\tgetStateIdxInc = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_state_idx_inc: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetVoiceCreditBalance = async ({\n\t\tindex,\n\t}: {\n\t\tindex: Uint256;\n\t}): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voice_credit_balance: {\n\t\t\t\tindex,\n\t\t\t},\n\t\t});\n\t};\n\twhiteList = async (): Promise<Whitelist> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\twhite_list: {},\n\t\t});\n\t};\n\tisWhiteList = async ({ sender }: { sender: string }): Promise<Boolean> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tis_white_list: {\n\t\t\t\tsender,\n\t\t\t},\n\t\t});\n\t};\n\tvoteOptionMap = async (): Promise<ArrayOfString> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tvote_option_map: {},\n\t\t});\n\t};\n\tmaxVoteOptions = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tmax_vote_options: {},\n\t\t});\n\t};\n\tqueryTotalFeeGrant = async (): Promise<Uint128> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_total_fee_grant: {},\n\t\t});\n\t};\n\tqueryCircuitType = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_circuit_type: {},\n\t\t});\n\t};\n\tqueryCertSystem = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_cert_system: {},\n\t\t});\n\t};\n}\nexport interface MaciInterface extends MaciReadOnlyInterface {\n\tcontractAddress: string;\n\tsender: string;\n\tsetParams: (\n\t\t{\n\t\t\tintStateTreeDepth,\n\t\t\tmessageBatchSize,\n\t\t\tstateTreeDepth,\n\t\t\tvoteOptionTreeDepth,\n\t\t}: {\n\t\t\tintStateTreeDepth: Uint256;\n\t\t\tmessageBatchSize: Uint256;\n\t\t\tstateTreeDepth: Uint256;\n\t\t\tvoteOptionTreeDepth: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetRoundInfo: (\n\t\t{\n\t\t\troundInfo,\n\t\t}: {\n\t\t\troundInfo: RoundInfo;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetWhitelists: (\n\t\t{\n\t\t\twhitelists,\n\t\t}: {\n\t\t\twhitelists: Whitelist;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetVoteOptionsMap: (\n\t\t{\n\t\t\tvoteOptionMap,\n\t\t}: {\n\t\t\tvoteOptionMap: string[];\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstartVotingPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsignUp: (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstartProcessPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopVotingPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpublishDeactivateMessage: (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessDeactivateMessage: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewDeactivateCommitment,\n\t\t\tnewDeactivateRoot,\n\t\t\tsize,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewDeactivateCommitment: Uint256;\n\t\t\tnewDeactivateRoot: Uint256;\n\t\t\tsize: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\taddNewKey: (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpublishMessage: (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessMessage: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewStateCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewStateCommitment: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopProcessingPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessTally: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewTallyCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewTallyCommitment: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopTallyingPeriod: (\n\t\t{\n\t\t\tresults,\n\t\t\tsalt,\n\t\t}: {\n\t\t\tresults: Uint256[];\n\t\t\tsalt: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tgrant: (\n\t\t{\n\t\t\tmaxAmount,\n\t\t}: {\n\t\t\tmaxAmount: Uint128;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\trevoke: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tbond: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\twithdraw: (\n\t\t{\n\t\t\tamount,\n\t\t}: {\n\t\t\tamount?: Uint128;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n}\nexport class MaciClient extends MaciQueryClient implements MaciInterface {\n\tclient: SigningCosmWasmClient;\n\tsender: string;\n\tcontractAddress: string;\n\n\tconstructor(\n\t\tclient: SigningCosmWasmClient,\n\t\tsender: string,\n\t\tcontractAddress: string\n\t) {\n\t\tsuper(client, contractAddress);\n\t\tthis.client = client;\n\t\tthis.sender = sender;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.setParams = this.setParams.bind(this);\n\t\tthis.setRoundInfo = this.setRoundInfo.bind(this);\n\t\tthis.setWhitelists = this.setWhitelists.bind(this);\n\t\tthis.setVoteOptionsMap = this.setVoteOptionsMap.bind(this);\n\t\tthis.startVotingPeriod = this.startVotingPeriod.bind(this);\n\t\tthis.signUp = this.signUp.bind(this);\n\t\tthis.startProcessPeriod = this.startProcessPeriod.bind(this);\n\t\tthis.stopVotingPeriod = this.stopVotingPeriod.bind(this);\n\t\tthis.publishDeactivateMessage =\n\t\t\tthis.publishDeactivateMessage.bind(this);\n\t\tthis.processDeactivateMessage =\n\t\t\tthis.processDeactivateMessage.bind(this);\n\t\tthis.addNewKey = this.addNewKey.bind(this);\n\t\tthis.publishMessage = this.publishMessage.bind(this);\n\t\tthis.processMessage = this.processMessage.bind(this);\n\t\tthis.stopProcessingPeriod = this.stopProcessingPeriod.bind(this);\n\t\tthis.processTally = this.processTally.bind(this);\n\t\tthis.stopTallyingPeriod = this.stopTallyingPeriod.bind(this);\n\t\tthis.grant = this.grant.bind(this);\n\t\tthis.revoke = this.revoke.bind(this);\n\t\tthis.bond = this.bond.bind(this);\n\t\tthis.withdraw = this.withdraw.bind(this);\n\t}\n\n\tsetParams = async (\n\t\t{\n\t\t\tintStateTreeDepth,\n\t\t\tmessageBatchSize,\n\t\t\tstateTreeDepth,\n\t\t\tvoteOptionTreeDepth,\n\t\t}: {\n\t\t\tintStateTreeDepth: Uint256;\n\t\t\tmessageBatchSize: Uint256;\n\t\t\tstateTreeDepth: Uint256;\n\t\t\tvoteOptionTreeDepth: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_params: {\n\t\t\t\t\tint_state_tree_depth: intStateTreeDepth,\n\t\t\t\t\tmessage_batch_size: messageBatchSize,\n\t\t\t\t\tstate_tree_depth: stateTreeDepth,\n\t\t\t\t\tvote_option_tree_depth: voteOptionTreeDepth,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetRoundInfo = async (\n\t\t{\n\t\t\troundInfo,\n\t\t}: {\n\t\t\troundInfo: RoundInfo;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_round_info: {\n\t\t\t\t\tround_info: roundInfo,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetWhitelists = async (\n\t\t{\n\t\t\twhitelists,\n\t\t}: {\n\t\t\twhitelists: Whitelist;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_whitelists: {\n\t\t\t\t\twhitelists,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetVoteOptionsMap = async (\n\t\t{\n\t\t\tvoteOptionMap,\n\t\t}: {\n\t\t\tvoteOptionMap: string[];\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_vote_options_map: {\n\t\t\t\t\tvote_option_map: voteOptionMap,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstartVotingPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstart_voting_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsignUp = async (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tsign_up: {\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstartProcessPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstart_process_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopVotingPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_voting_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpublishDeactivateMessage = async (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpublish_deactivate_message: {\n\t\t\t\t\tenc_pub_key: encPubKey,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessDeactivateMessage = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewDeactivateCommitment,\n\t\t\tnewDeactivateRoot,\n\t\t\tsize,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewDeactivateCommitment: Uint256;\n\t\t\tnewDeactivateRoot: Uint256;\n\t\t\tsize: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_deactivate_message: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_deactivate_commitment: newDeactivateCommitment,\n\t\t\t\t\tnew_deactivate_root: newDeactivateRoot,\n\t\t\t\t\tsize,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\taddNewKey = async (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tadd_new_key: {\n\t\t\t\t\td,\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnullifier,\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpublishMessage = async (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpublish_message: {\n\t\t\t\t\tenc_pub_key: encPubKey,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessMessage = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewStateCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewStateCommitment: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_message: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_state_commitment: newStateCommitment,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopProcessingPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_processing_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessTally = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewTallyCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewTallyCommitment: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_tally: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_tally_commitment: newTallyCommitment,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopTallyingPeriod = async (\n\t\t{\n\t\t\tresults,\n\t\t\tsalt,\n\t\t}: {\n\t\t\tresults: Uint256[];\n\t\t\tsalt: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_tallying_period: {\n\t\t\t\t\tresults,\n\t\t\t\t\tsalt,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tgrant = async (\n\t\t{\n\t\t\tmaxAmount,\n\t\t}: {\n\t\t\tmaxAmount: Uint128;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tgrant: {\n\t\t\t\t\tmax_amount: maxAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\trevoke = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\trevoke: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tbond = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tbond: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\twithdraw = async (\n\t\t{\n\t\t\tamount,\n\t\t}: {\n\t\t\tamount?: Uint128;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\twithdraw: {\n\t\t\t\t\tamount,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n}\n","/**\n * This file was automatically generated by @cosmwasm/ts-codegen@1.11.1.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run the @cosmwasm/ts-codegen generate command to regenerate this file.\n */\n\nimport {\n\tCosmWasmClient,\n\tSigningCosmWasmClient,\n\tExecuteResult,\n} from '@cosmjs/cosmwasm-stargate';\nimport { Coin, StdFee } from '@cosmjs/amino';\nimport {\n\tAddr,\n\tUint256,\n\tTimestamp,\n\tUint64,\n\tInstantiateMsg,\n\tPubKey,\n\tMaciParameters,\n\tRoundInfo,\n\tVotingTime,\n\tWhitelist,\n\tWhitelistConfig,\n\tExecuteMsg,\n\tUint128,\n\tMessageData,\n\tGroth16ProofType,\n\tQueryMsg,\n\tPeriodStatus,\n\tPeriod,\n\tBoolean,\n\tArrayOfString,\n} from './AMaci.types';\nexport interface AMaciReadOnlyInterface {\n\tcontractAddress: string;\n\tadmin: () => Promise<Addr>;\n\toperator: () => Promise<Addr>;\n\tgetRoundInfo: () => Promise<RoundInfo>;\n\tgetVotingTime: () => Promise<VotingTime>;\n\tgetPeriod: () => Promise<Period>;\n\tgetNumSignUp: () => Promise<Uint256>;\n\tgetMsgChainLength: () => Promise<Uint256>;\n\tgetDMsgChainLength: () => Promise<Uint256>;\n\tgetProcessedDMsgCount: () => Promise<Uint256>;\n\tgetProcessedMsgCount: () => Promise<Uint256>;\n\tgetProcessedUserCount: () => Promise<Uint256>;\n\tgetResult: ({ index }: { index: Uint256 }) => Promise<Uint256>;\n\tgetAllResult: () => Promise<Uint256>;\n\tgetStateIdxInc: ({ address }: { address: Addr }) => Promise<Uint256>;\n\tgetVoiceCreditBalance: ({ index }: { index: Uint256 }) => Promise<Uint256>;\n\tgetVoiceCreditAmount: () => Promise<Uint256>;\n\twhiteList: () => Promise<Whitelist>;\n\tisWhiteList: ({ sender }: { sender: Addr }) => Promise<Boolean>;\n\tsignuped: ({ pubkeyX }: { pubkeyX: Uint256 }) => Promise<Uint256>;\n\tvoteOptionMap: () => Promise<ArrayOfString>;\n\tmaxVoteOptions: () => Promise<Uint256>;\n\tqueryTotalFeeGrant: () => Promise<Uint128>;\n\tqueryCircuitType: () => Promise<Uint256>;\n\tqueryCertSystem: () => Promise<Uint256>;\n\tqueryPreDeactivateRoot: () => Promise<Uint256>;\n}\nexport class AMaciQueryClient implements AMaciReadOnlyInterface {\n\tclient: CosmWasmClient;\n\tcontractAddress: string;\n\tconstructor(client: CosmWasmClient, contractAddress: string) {\n\t\tthis.client = client;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.admin = this.admin.bind(this);\n\t\tthis.operator = this.operator.bind(this);\n\t\tthis.getRoundInfo = this.getRoundInfo.bind(this);\n\t\tthis.getVotingTime = this.getVotingTime.bind(this);\n\t\tthis.getPeriod = this.getPeriod.bind(this);\n\t\tthis.getNumSignUp = this.getNumSignUp.bind(this);\n\t\tthis.getMsgChainLength = this.getMsgChainLength.bind(this);\n\t\tthis.getDMsgChainLength = this.getDMsgChainLength.bind(this);\n\t\tthis.getProcessedDMsgCount = this.getProcessedDMsgCount.bind(this);\n\t\tthis.getProcessedMsgCount = this.getProcessedMsgCount.bind(this);\n\t\tthis.getProcessedUserCount = this.getProcessedUserCount.bind(this);\n\t\tthis.getResult = this.getResult.bind(this);\n\t\tthis.getAllResult = this.getAllResult.bind(this);\n\t\tthis.getStateIdxInc = this.getStateIdxInc.bind(this);\n\t\tthis.getVoiceCreditBalance = this.getVoiceCreditBalance.bind(this);\n\t\tthis.getVoiceCreditAmount = this.getVoiceCreditAmount.bind(this);\n\t\tthis.whiteList = this.whiteList.bind(this);\n\t\tthis.isWhiteList = this.isWhiteList.bind(this);\n\t\tthis.signuped = this.signuped.bind(this);\n\t\tthis.voteOptionMap = this.voteOptionMap.bind(this);\n\t\tthis.maxVoteOptions = this.maxVoteOptions.bind(this);\n\t\tthis.queryTotalFeeGrant = this.queryTotalFeeGrant.bind(this);\n\t\tthis.queryCircuitType = this.queryCircuitType.bind(this);\n\t\tthis.queryCertSystem = this.queryCertSystem.bind(this);\n\t\tthis.queryPreDeactivateRoot = this.queryPreDeactivateRoot.bind(this);\n\t}\n\tadmin = async (): Promise<Addr> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tadmin: {},\n\t\t});\n\t};\n\toperator = async (): Promise<Addr> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\toperator: {},\n\t\t});\n\t};\n\tgetRoundInfo = async (): Promise<RoundInfo> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_round_info: {},\n\t\t});\n\t};\n\tgetVotingTime = async (): Promise<VotingTime> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voting_time: {},\n\t\t});\n\t};\n\tgetPeriod = async (): Promise<Period> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_period: {},\n\t\t});\n\t};\n\tgetNumSignUp = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_num_sign_up: {},\n\t\t});\n\t};\n\tgetMsgChainLength = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_msg_chain_length: {},\n\t\t});\n\t};\n\tgetDMsgChainLength = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_d_msg_chain_length: {},\n\t\t});\n\t};\n\tgetProcessedDMsgCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_d_msg_count: {},\n\t\t});\n\t};\n\tgetProcessedMsgCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_msg_count: {},\n\t\t});\n\t};\n\tgetProcessedUserCount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_processed_user_count: {},\n\t\t});\n\t};\n\tgetResult = async ({ index }: { index: Uint256 }): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_result: {\n\t\t\t\tindex,\n\t\t\t},\n\t\t});\n\t};\n\tgetAllResult = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_all_result: {},\n\t\t});\n\t};\n\tgetStateIdxInc = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_state_idx_inc: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetVoiceCreditBalance = async ({\n\t\tindex,\n\t}: {\n\t\tindex: Uint256;\n\t}): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voice_credit_balance: {\n\t\t\t\tindex,\n\t\t\t},\n\t\t});\n\t};\n\tgetVoiceCreditAmount = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_voice_credit_amount: {},\n\t\t});\n\t};\n\twhiteList = async (): Promise<Whitelist> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\twhite_list: {},\n\t\t});\n\t};\n\tisWhiteList = async ({ sender }: { sender: Addr }): Promise<Boolean> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tis_white_list: {\n\t\t\t\tsender,\n\t\t\t},\n\t\t});\n\t};\n\tsignuped = async ({ pubkeyX }: { pubkeyX: Uint256 }): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tsignuped: {\n\t\t\t\tpubkey_x: pubkeyX,\n\t\t\t},\n\t\t});\n\t};\n\tvoteOptionMap = async (): Promise<ArrayOfString> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tvote_option_map: {},\n\t\t});\n\t};\n\tmaxVoteOptions = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tmax_vote_options: {},\n\t\t});\n\t};\n\tqueryTotalFeeGrant = async (): Promise<Uint128> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_total_fee_grant: {},\n\t\t});\n\t};\n\tqueryCircuitType = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_circuit_type: {},\n\t\t});\n\t};\n\tqueryCertSystem = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_cert_system: {},\n\t\t});\n\t};\n\tqueryPreDeactivateRoot = async (): Promise<Uint256> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tquery_pre_deactivate_root: {},\n\t\t});\n\t};\n}\nexport interface AMaciInterface extends AMaciReadOnlyInterface {\n\tcontractAddress: string;\n\tsender: string;\n\tsetRoundInfo: (\n\t\t{\n\t\t\troundInfo,\n\t\t}: {\n\t\t\troundInfo: RoundInfo;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetWhitelists: (\n\t\t{\n\t\t\twhitelists,\n\t\t}: {\n\t\t\twhitelists: Whitelist;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetVoteOptionsMap: (\n\t\t{\n\t\t\tvoteOptionMap,\n\t\t}: {\n\t\t\tvoteOptionMap: string[];\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsignUp: (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstartProcessPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpublishDeactivateMessage: (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessDeactivateMessage: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewDeactivateCommitment,\n\t\t\tnewDeactivateRoot,\n\t\t\tsize,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewDeactivateCommitment: Uint256;\n\t\t\tnewDeactivateRoot: Uint256;\n\t\t\tsize: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\taddNewKey: (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpreAddNewKey: (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tpublishMessage: (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessMessage: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewStateCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewStateCommitment: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopProcessingPeriod: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tprocessTally: (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewTallyCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewTallyCommitment: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tstopTallyingPeriod: (\n\t\t{\n\t\t\tresults,\n\t\t\tsalt,\n\t\t}: {\n\t\t\tresults: Uint256[];\n\t\t\tsalt: Uint256;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tgrant: (\n\t\t{\n\t\t\tmaxAmount,\n\t\t}: {\n\t\t\tmaxAmount: Uint128;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\trevoke: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tbond: (\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\twithdraw: (\n\t\t{\n\t\t\tamount,\n\t\t}: {\n\t\t\tamount?: Uint128;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n}\nexport class AMaciClient extends AMaciQueryClient implements AMaciInterface {\n\tclient: SigningCosmWasmClient;\n\tsender: string;\n\tcontractAddress: string;\n\tconstructor(\n\t\tclient: SigningCosmWasmClient,\n\t\tsender: string,\n\t\tcontractAddress: string\n\t) {\n\t\tsuper(client, contractAddress);\n\t\tthis.client = client;\n\t\tthis.sender = sender;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.setRoundInfo = this.setRoundInfo.bind(this);\n\t\tthis.setWhitelists = this.setWhitelists.bind(this);\n\t\tthis.setVoteOptionsMap = this.setVoteOptionsMap.bind(this);\n\t\tthis.signUp = this.signUp.bind(this);\n\t\tthis.startProcessPeriod = this.startProcessPeriod.bind(this);\n\t\tthis.publishDeactivateMessage =\n\t\t\tthis.publishDeactivateMessage.bind(this);\n\t\tthis.processDeactivateMessage =\n\t\t\tthis.processDeactivateMessage.bind(this);\n\t\tthis.addNewKey = this.addNewKey.bind(this);\n\t\tthis.preAddNewKey = this.preAddNewKey.bind(this);\n\t\tthis.publishMessage = this.publishMessage.bind(this);\n\t\tthis.processMessage = this.processMessage.bind(this);\n\t\tthis.stopProcessingPeriod = this.stopProcessingPeriod.bind(this);\n\t\tthis.processTally = this.processTally.bind(this);\n\t\tthis.stopTallyingPeriod = this.stopTallyingPeriod.bind(this);\n\t\tthis.grant = this.grant.bind(this);\n\t\tthis.revoke = this.revoke.bind(this);\n\t\tthis.bond = this.bond.bind(this);\n\t\tthis.withdraw = this.withdraw.bind(this);\n\t}\n\tsetRoundInfo = async (\n\t\t{\n\t\t\troundInfo,\n\t\t}: {\n\t\t\troundInfo: RoundInfo;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_round_info: {\n\t\t\t\t\tround_info: roundInfo,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetWhitelists = async (\n\t\t{\n\t\t\twhitelists,\n\t\t}: {\n\t\t\twhitelists: Whitelist;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_whitelists: {\n\t\t\t\t\twhitelists,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetVoteOptionsMap = async (\n\t\t{\n\t\t\tvoteOptionMap,\n\t\t}: {\n\t\t\tvoteOptionMap: string[];\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_vote_options_map: {\n\t\t\t\t\tvote_option_map: voteOptionMap,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsignUp = async (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tsign_up: {\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstartProcessPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstart_process_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpublishDeactivateMessage = async (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpublish_deactivate_message: {\n\t\t\t\t\tenc_pub_key: encPubKey,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessDeactivateMessage = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewDeactivateCommitment,\n\t\t\tnewDeactivateRoot,\n\t\t\tsize,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewDeactivateCommitment: Uint256;\n\t\t\tnewDeactivateRoot: Uint256;\n\t\t\tsize: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_deactivate_message: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_deactivate_commitment: newDeactivateCommitment,\n\t\t\t\t\tnew_deactivate_root: newDeactivateRoot,\n\t\t\t\t\tsize,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\taddNewKey = async (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tadd_new_key: {\n\t\t\t\t\td,\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnullifier,\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpreAddNewKey = async (\n\t\t{\n\t\t\td,\n\t\t\tgroth16Proof,\n\t\t\tnullifier,\n\t\t\tpubkey,\n\t\t}: {\n\t\t\td: Uint256[];\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnullifier: Uint256;\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpre_add_new_key: {\n\t\t\t\t\td,\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnullifier,\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tpublishMessage = async (\n\t\t{\n\t\t\tencPubKey,\n\t\t\tmessage,\n\t\t}: {\n\t\t\tencPubKey: PubKey;\n\t\t\tmessage: MessageData;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tpublish_message: {\n\t\t\t\t\tenc_pub_key: encPubKey,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessMessage = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewStateCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewStateCommitment: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_message: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_state_commitment: newStateCommitment,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopProcessingPeriod = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_processing_period: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tprocessTally = async (\n\t\t{\n\t\t\tgroth16Proof,\n\t\t\tnewTallyCommitment,\n\t\t}: {\n\t\t\tgroth16Proof: Groth16ProofType;\n\t\t\tnewTallyCommitment: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tprocess_tally: {\n\t\t\t\t\tgroth16_proof: groth16Proof,\n\t\t\t\t\tnew_tally_commitment: newTallyCommitment,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tstopTallyingPeriod = async (\n\t\t{\n\t\t\tresults,\n\t\t\tsalt,\n\t\t}: {\n\t\t\tresults: Uint256[];\n\t\t\tsalt: Uint256;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tstop_tallying_period: {\n\t\t\t\t\tresults,\n\t\t\t\t\tsalt,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tgrant = async (\n\t\t{\n\t\t\tmaxAmount,\n\t\t}: {\n\t\t\tmaxAmount: Uint128;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tgrant: {\n\t\t\t\t\tmax_amount: maxAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\trevoke = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\trevoke: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tbond = async (\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tbond: {},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\twithdraw = async (\n\t\t{\n\t\t\tamount,\n\t\t}: {\n\t\t\tamount?: Uint128;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\twithdraw: {\n\t\t\t\t\tamount,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n}\n","/**\n * This file was automatically generated by @cosmwasm/ts-codegen@1.11.1.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run the @cosmwasm/ts-codegen generate command to regenerate this file.\n */\n\nimport {\n\tCosmWasmClient,\n\tSigningCosmWasmClient,\n\tExecuteResult,\n} from '@cosmjs/cosmwasm-stargate';\nimport { Coin, StdFee } from '@cosmjs/amino';\nimport {\n\tAddr,\n\tInstantiateMsg,\n\tExecuteMsg,\n\tUint256,\n\tTimestamp,\n\tUint64,\n\tPubKey,\n\tRoundInfo,\n\tVotingTime,\n\tWhitelist,\n\tWhitelistConfig,\n\tValidatorSet,\n\tQueryMsg,\n\tAdminResponse,\n\tString,\n\tBoolean,\n} from './Registry.types';\nexport interface RegistryReadOnlyInterface {\n\tcontractAddress: string;\n\tadmin: () => Promise<AdminResponse>;\n\toperator: () => Promise<Addr>;\n\tisMaciOperator: ({ address }: { address: Addr }) => Promise<Boolean>;\n\tisValidator: ({ address }: { address: Addr }) => Promise<Boolean>;\n\tgetValidators: () => Promise<ValidatorSet>;\n\tgetValidatorOperator: ({ address }: { address: Addr }) => Promise<Addr>;\n\tgetMaciOperatorPubkey: ({ address }: { address: Addr }) => Promise<PubKey>;\n\tgetMaciOperatorIdentity: ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}) => Promise<String>;\n}\nexport class RegistryQueryClient implements RegistryReadOnlyInterface {\n\tclient: CosmWasmClient;\n\tcontractAddress: string;\n\tconstructor(client: CosmWasmClient, contractAddress: string) {\n\t\tthis.client = client;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.admin = this.admin.bind(this);\n\t\tthis.operator = this.operator.bind(this);\n\t\tthis.isMaciOperator = this.isMaciOperator.bind(this);\n\t\tthis.isValidator = this.isValidator.bind(this);\n\t\tthis.getValidators = this.getValidators.bind(this);\n\t\tthis.getValidatorOperator = this.getValidatorOperator.bind(this);\n\t\tthis.getMaciOperatorPubkey = this.getMaciOperatorPubkey.bind(this);\n\t\tthis.getMaciOperatorIdentity = this.getMaciOperatorIdentity.bind(this);\n\t}\n\tadmin = async (): Promise<AdminResponse> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tadmin: {},\n\t\t});\n\t};\n\toperator = async (): Promise<Addr> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\toperator: {},\n\t\t});\n\t};\n\tisMaciOperator = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<Boolean> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tis_maci_operator: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tisValidator = async ({ address }: { address: Addr }): Promise<Boolean> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tis_validator: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetValidators = async (): Promise<ValidatorSet> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_validators: {},\n\t\t});\n\t};\n\tgetValidatorOperator = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<Addr> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_validator_operator: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetMaciOperatorPubkey = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<PubKey> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_maci_operator_pubkey: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n\tgetMaciOperatorIdentity = async ({\n\t\taddress,\n\t}: {\n\t\taddress: Addr;\n\t}): Promise<String> => {\n\t\treturn this.client.queryContractSmart(this.contractAddress, {\n\t\t\tget_maci_operator_identity: {\n\t\t\t\taddress,\n\t\t\t},\n\t\t});\n\t};\n}\nexport interface RegistryInterface extends RegistryReadOnlyInterface {\n\tcontractAddress: string;\n\tsender: string;\n\tsetMaciOperator: (\n\t\t{\n\t\t\toperator,\n\t\t}: {\n\t\t\toperator: Addr;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetMaciOperatorPubkey: (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetMaciOperatorIdentity: (\n\t\t{\n\t\t\tidentity,\n\t\t}: {\n\t\t\tidentity: string;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tcreateRound: (\n\t\t{\n\t\t\tcertificationSystem,\n\t\t\tcircuitType,\n\t\t\tmaxOption,\n\t\t\tmaxVoter,\n\t\t\toperator,\n\t\t\tpreDeactivateRoot,\n\t\t\troundInfo,\n\t\t\tvoiceCreditAmount,\n\t\t\tvotingTime,\n\t\t\twhitelist,\n\t\t}: {\n\t\t\tcertificationSystem: Uint256;\n\t\t\tcircuitType: Uint256;\n\t\t\tmaxOption: Uint256;\n\t\t\tmaxVoter: Uint256;\n\t\t\toperator: Addr;\n\t\t\tpreDeactivateRoot: Uint256;\n\t\t\troundInfo: RoundInfo;\n\t\t\tvoiceCreditAmount: Uint256;\n\t\t\tvotingTime: VotingTime;\n\t\t\twhitelist?: Whitelist;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tsetValidators: (\n\t\t{\n\t\t\taddresses,\n\t\t}: {\n\t\t\taddresses: ValidatorSet;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tremoveValidator: (\n\t\t{\n\t\t\taddress,\n\t\t}: {\n\t\t\taddress: Addr;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tupdateAmaciCodeId: (\n\t\t{\n\t\t\tamaciCodeId,\n\t\t}: {\n\t\t\tamaciCodeId: number;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n\tchangeOperator: (\n\t\t{\n\t\t\taddress,\n\t\t}: {\n\t\t\taddress: Addr;\n\t\t},\n\t\tfee?: number | StdFee | 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t) => Promise<ExecuteResult>;\n}\nexport class RegistryClient\n\textends RegistryQueryClient\n\timplements RegistryInterface\n{\n\tclient: SigningCosmWasmClient;\n\tsender: string;\n\tcontractAddress: string;\n\tconstructor(\n\t\tclient: SigningCosmWasmClient,\n\t\tsender: string,\n\t\tcontractAddress: string\n\t) {\n\t\tsuper(client, contractAddress);\n\t\tthis.client = client;\n\t\tthis.sender = sender;\n\t\tthis.contractAddress = contractAddress;\n\t\tthis.setMaciOperator = this.setMaciOperator.bind(this);\n\t\tthis.setMaciOperatorPubkey = this.setMaciOperatorPubkey.bind(this);\n\t\tthis.setMaciOperatorIdentity = this.setMaciOperatorIdentity.bind(this);\n\t\tthis.createRound = this.createRound.bind(this);\n\t\tthis.setValidators = this.setValidators.bind(this);\n\t\tthis.removeValidator = this.removeValidator.bind(this);\n\t\tthis.updateAmaciCodeId = this.updateAmaciCodeId.bind(this);\n\t\tthis.changeOperator = this.changeOperator.bind(this);\n\t}\n\tsetMaciOperator = async (\n\t\t{\n\t\t\toperator,\n\t\t}: {\n\t\t\toperator: Addr;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_maci_operator: {\n\t\t\t\t\toperator,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetMaciOperatorPubkey = async (\n\t\t{\n\t\t\tpubkey,\n\t\t}: {\n\t\t\tpubkey: PubKey;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_maci_operator_pubkey: {\n\t\t\t\t\tpubkey,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetMaciOperatorIdentity = async (\n\t\t{\n\t\t\tidentity,\n\t\t}: {\n\t\t\tidentity: string;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_maci_operator_identity: {\n\t\t\t\t\tidentity,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tcreateRound = async (\n\t\t{\n\t\t\tcertificationSystem,\n\t\t\tcircuitType,\n\t\t\tmaxOption,\n\t\t\tmaxVoter,\n\t\t\toperator,\n\t\t\tpreDeactivateRoot,\n\t\t\troundInfo,\n\t\t\tvoiceCreditAmount,\n\t\t\tvotingTime,\n\t\t\twhitelist,\n\t\t}: {\n\t\t\tcertificationSystem: Uint256;\n\t\t\tcircuitType: Uint256;\n\t\t\tmaxOption: Uint256;\n\t\t\tmaxVoter: Uint256;\n\t\t\toperator: Addr;\n\t\t\tpreDeactivateRoot: Uint256;\n\t\t\troundInfo: RoundInfo;\n\t\t\tvoiceCreditAmount: Uint256;\n\t\t\tvotingTime: VotingTime;\n\t\t\twhitelist?: Whitelist;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tcreate_round: {\n\t\t\t\t\tcertification_system: certificationSystem,\n\t\t\t\t\tcircuit_type: circuitType,\n\t\t\t\t\tmax_option: maxOption,\n\t\t\t\t\tmax_voter: maxVoter,\n\t\t\t\t\toperator,\n\t\t\t\t\tpre_deactivate_root: preDeactivateRoot,\n\t\t\t\t\tround_info: roundInfo,\n\t\t\t\t\tvoice_credit_amount: voiceCreditAmount,\n\t\t\t\t\tvoting_time: votingTime,\n\t\t\t\t\twhitelist,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tsetValidators = async (\n\t\t{\n\t\t\taddresses,\n\t\t}: {\n\t\t\taddresses: ValidatorSet;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tset_validators: {\n\t\t\t\t\taddresses,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tremoveValidator = async (\n\t\t{\n\t\t\taddress,\n\t\t}: {\n\t\t\taddress: Addr;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tremove_validator: {\n\t\t\t\t\taddress,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tupdateAmaciCodeId = async (\n\t\t{\n\t\t\tamaciCodeId,\n\t\t}: {\n\t\t\tamaciCodeId: number;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tupdate_amaci_code_id: {\n\t\t\t\t\tamaci_code_id: amaciCodeId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n\tchangeOperator = async (\n\t\t{\n\t\t\taddress,\n\t\t}: {\n\t\t\taddress: Addr;\n\t\t},\n\t\tfee: number | StdFee | 'auto' = 'auto',\n\t\tmemo?: string,\n\t\t_funds?: Coin[]\n\t): Promise<ExecuteResult> => {\n\t\treturn await this.client.execute(\n\t\t\tthis.sender,\n\t\t\tthis.contractAddress,\n\t\t\t{\n\t\t\t\tchange_operator: {\n\t\t\t\t\taddress,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfee,\n\t\t\tmemo,\n\t\t\t_funds\n\t\t);\n\t};\n}\n","/**\n* This file was automatically generated by @cosmwasm/ts-codegen@1.11.1.\n* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n* and run the @cosmwasm/ts-codegen generate command to regenerate this file.\n*/\n\nimport { CosmWasmClient, SigningCosmWasmClient, ExecuteResult } from \"@cosmjs/cosmwasm-stargate\";\nimport { Coin, StdFee } from \"@cosmjs/amino\";\nimport { Uint256, Addr, Timestamp, Uint64, VotingPowerMode, InstantiateMsg, PubKey, Groth16VKeyType, MaciParameters, PlonkVKeyType, QuinaryTreeRoot, RoundInfo, VotingTime, VotingPowerArgs, ExecuteMsg, Uint128, MessageData, Groth16ProofType, PlonkProofType, QueryMsg, PeriodStatus, Period, GrantConfig, Boolean, Binary, OracleWhitelistConfig, ArrayOfString, WhitelistConfig } from \"./OracleMaci.types\";\nexport interface OracleMaciReadOnlyInterface {\n contractAddress: string;\n getRoundInfo: () => Promise<RoundInfo>;\n getVotingTime: () => Promise<VotingTime>;\n getPeriod: () => Promise<Period>;\n getNumSignUp: () => Promise<Uint256>;\n getMsgChainLength: () => Promise<Uint256>;\n getProcessedMsgCount: () => Promise<Uint256>;\n getProcessedUserCount: () => Promise<Uint256>;\n getResult: ({\n index\n }: {\n index: Uint256;\n }) => Promise<Uint256>;\n getAllResult: () => Promise<Uint256>;\n getStateIdxInc: ({\n address\n }: {\n address: Addr;\n }) => Promise<Uint256>;\n getVoiceCreditBalance: ({\n index\n }: {\n index: Uint256;\n }) => Promise<Uint256>;\n isWhiteList: ({\n amount,\n certificate,\n sender\n }: {\n amount: Uint256;\n certificate: string;\n sender: string;\n }) => Promise<Boolean>;\n whiteBalanceOf: ({\n amount,\n certificate,\n sender\n }: {\n amount: Uint256;\n certificate: string;\n sender: string;\n }) => Promise<Uint256>;\n whiteInfo: ({\n sender\n }: {\n sender: string;\n }) => Promise<WhitelistConfig>;\n grantInfo: ({\n grantee\n }: {\n grantee: string;\n }) => Promise<GrantConfig>;\n maxWhitelistNum: () => Promise<Uint128>;\n voteOptionMap: () => Promise<ArrayOfString>;\n maxVoteOptions: () => Promise<Uint256>;\n queryTotalFeeGrant: () => Promise<Uint128>;\n queryCircuitType: () => Promise<Uint256>;\n queryCertSystem: () => Promise<Uint256>;\n queryOracleWhitelistConfig: () => Promise<OracleWhitelistConfig>;\n}\nexport class OracleMaciQueryClient implements OracleMaciReadOnlyInterface {\n client: CosmWasmClient;\n contractAddress: string;\n constructor(client: CosmWasmClient, contractAddress: string) {\n this.client = client;\n this.contractAddress = contractAddress;\n this.getRoundInfo = this.getRoundInfo.bind(this);\n this.getVotingTime = this.getVotingTime.bind(this);\n this.getPeriod = this.getPeriod.bind(this);\n this.getNumSignUp = this.getNumSignUp.bind(this);\n this.getMsgChainLength = this.getMsgChainLength.bind(this);\n this.getProcessedMsgCount = this.getProcessedMsgCount.bind(this);\n this.getProcessedUserCount = this.getProcessedUserCount.bind(this);\n this.getResult = this.getResult.bind(this);\n this.getAllResult = this.getAllResult.bind(this);\n this.getStateIdxInc = this.getStateIdxInc.bind(this);\n this.getVoiceCreditBalance = this.getVoiceCreditBalance.bind(this);\n this.isWhiteList = this.isWhiteList.bind(this);\n this.whiteBalanceOf = this.whiteBalanceOf.bind(this);\n this.whiteInfo = this.whiteInfo.bind(this);\n this.grantInfo = this.grantInfo.bind(this);\n this.maxWhitelistNum = this.maxWhitelistNum.bind(this);\n this.voteOptionMap = this.voteOptionMap.bind(this);\n this.maxVoteOptions = this.maxVoteOptions.bind(this);\n this.queryTotalFeeGrant = this.queryTotalFeeGrant.bind(this);\n this.queryCircuitType = this.queryCircuitType.bind(this);\n this.queryCertSystem = this.queryCertSystem.bind(this);\n this.queryOracleWhitelistConfig = this.queryOracleWhitelistConfig.bind(this);\n }\n getRoundInfo = async (): Promise<RoundInfo> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_round_info: {}\n });\n };\n getVotingTime = async (): Promise<VotingTime> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_voting_time: {}\n });\n };\n getPeriod = async (): Promise<Period> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_period: {}\n });\n };\n getNumSignUp = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_num_sign_up: {}\n });\n };\n getMsgChainLength = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_msg_chain_length: {}\n });\n };\n getProcessedMsgCount = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_processed_msg_count: {}\n });\n };\n getProcessedUserCount = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_processed_user_count: {}\n });\n };\n getResult = async ({\n index\n }: {\n index: Uint256;\n }): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_result: {\n index\n }\n });\n };\n getAllResult = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_all_result: {}\n });\n };\n getStateIdxInc = async ({\n address\n }: {\n address: Addr;\n }): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_state_idx_inc: {\n address\n }\n });\n };\n getVoiceCreditBalance = async ({\n index\n }: {\n index: Uint256;\n }): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n get_voice_credit_balance: {\n index\n }\n });\n };\n isWhiteList = async ({\n amount,\n certificate,\n sender\n }: {\n amount: Uint256;\n certificate: string;\n sender: string;\n }): Promise<Boolean> => {\n return this.client.queryContractSmart(this.contractAddress, {\n is_white_list: {\n amount,\n certificate,\n sender\n }\n });\n };\n whiteBalanceOf = async ({\n amount,\n certificate,\n sender\n }: {\n amount: Uint256;\n certificate: string;\n sender: string;\n }): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n white_balance_of: {\n amount,\n certificate,\n sender\n }\n });\n };\n whiteInfo = async ({\n sender\n }: {\n sender: string;\n }): Promise<WhitelistConfig> => {\n return this.client.queryContractSmart(this.contractAddress, {\n white_info: {\n sender\n }\n });\n };\n grantInfo = async ({\n grantee\n }: {\n grantee: string;\n }): Promise<GrantConfig> => {\n return this.client.queryContractSmart(this.contractAddress, {\n grant_info: {\n grantee\n }\n });\n };\n maxWhitelistNum = async (): Promise<Uint128> => {\n return this.client.queryContractSmart(this.contractAddress, {\n max_whitelist_num: {}\n });\n };\n voteOptionMap = async (): Promise<ArrayOfString> => {\n return this.client.queryContractSmart(this.contractAddress, {\n vote_option_map: {}\n });\n };\n maxVoteOptions = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n max_vote_options: {}\n });\n };\n queryTotalFeeGrant = async (): Promise<Uint128> => {\n return this.client.queryContractSmart(this.contractAddress, {\n query_total_fee_grant: {}\n });\n };\n queryCircuitType = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n query_circuit_type: {}\n });\n };\n queryCertSystem = async (): Promise<Uint256> => {\n return this.client.queryContractSmart(this.contractAddress, {\n query_cert_system: {}\n });\n };\n queryOracleWhitelistConfig = async (): Promise<OracleWhitelistConfig> => {\n return this.client.queryContractSmart(this.contractAddress, {\n query_oracle_whitelist_config: {}\n });\n };\n}\nexport interface OracleMaciInterface extends OracleMaciReadOnlyInterface {\n contractAddress: string;\n sender: string;\n setParams: ({\n intStateTreeDepth,\n messageBatchSize,\n stateTreeDepth,\n voteOptionTreeDepth\n }: {\n intStateTreeDepth: Uint256;\n messageBatchSize: Uint256;\n stateTreeDepth: Uint256;\n voteOptionTreeDepth: Uint256;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n setRoundInfo: ({\n roundInfo\n }: {\n roundInfo: RoundInfo;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n setVoteOptionsMap: ({\n voteOptionMap\n }: {\n voteOptionMap: string[];\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n startVotingPeriod: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n signUp: ({\n amount,\n certificate,\n pubkey\n }: {\n amount: Uint256;\n certificate: string;\n pubkey: PubKey;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n startProcessPeriod: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n stopVotingPeriod: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n publishMessage: ({\n encPubKey,\n message\n }: {\n encPubKey: PubKey;\n message: MessageData;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n processMessage: ({\n groth16Proof,\n newStateCommitment,\n plonkProof\n }: {\n groth16Proof?: Groth16ProofType;\n newStateCommitment: Uint256;\n plonkProof?: PlonkProofType;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n stopProcessingPeriod: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n processTally: ({\n groth16Proof,\n newTallyCommitment,\n plonkProof\n }: {\n groth16Proof?: Groth16ProofType;\n newTallyCommitment: Uint256;\n plonkProof?: PlonkProofType;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n stopTallyingPeriod: ({\n results,\n salt\n }: {\n results: Uint256[];\n salt: Uint256;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n grant: ({\n baseAmount,\n grantee\n }: {\n baseAmount: Uint128;\n grantee: Addr;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n revoke: ({\n grantee\n }: {\n grantee: Addr;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n bond: (fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n withdraw: ({\n amount\n }: {\n amount?: Uint128;\n }, fee?: number | StdFee | \"auto\", memo?: string, _funds?: Coin[]) => Promise<ExecuteResult>;\n}\nexport class OracleMaciClient extends OracleMaciQueryClient implements OracleMaciInterface {\n client: SigningCosmWasmClient;\n sender: string;\n contractAddress: string;\n constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) {\n super(client, contractAddress);\n this.client = client;\n this.sender = sender;\n this.contractAddress = contractAddress;\n this.setParams = this.setParams.bind(this);\n this.setRoundInfo = this.setRoundInfo.bind(this);\n this.setVoteOptionsMap = this.setVoteOptionsMap.bind(this);\n this.startVotingPeriod = this.startVotingPeriod.bind(this);\n this.signUp = this.signUp.bind(this);\n this.startProcessPeriod = this.startProcessPeriod.bind(this);\n this.stopVotingPeriod = this.stopVotingPeriod.bind(this);\n this.publishMessage = this.publishMessage.bind(this);\n this.processMessage = this.processMessage.bind(this);\n this.stopProcessingPeriod = this.stopProcessingPeriod.bind(this);\n this.processTally = this.processTally.bind(this);\n this.stopTallyingPeriod = this.stopTallyingPeriod.bind(this);\n this.grant = this.grant.bind(this);\n this.revoke = this.revoke.bind(this);\n this.bond = this.bond.bind(this);\n this.withdraw = this.withdraw.bind(this);\n }\n setParams = async ({\n intStateTreeDepth,\n messageBatchSize,\n stateTreeDepth,\n voteOptionTreeDepth\n }: {\n intStateTreeDepth: Uint256;\n messageBatchSize: Uint256;\n stateTreeDepth: Uint256;\n voteOptionTreeDepth: Uint256;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n set_params: {\n int_state_tree_depth: intStateTreeDepth,\n message_batch_size: messageBatchSize,\n state_tree_depth: stateTreeDepth,\n vote_option_tree_depth: voteOptionTreeDepth\n }\n }, fee, memo, _funds);\n };\n setRoundInfo = async ({\n roundInfo\n }: {\n roundInfo: RoundInfo;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n set_round_info: {\n round_info: roundInfo\n }\n }, fee, memo, _funds);\n };\n setVoteOptionsMap = async ({\n voteOptionMap\n }: {\n voteOptionMap: string[];\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n set_vote_options_map: {\n vote_option_map: voteOptionMap\n }\n }, fee, memo, _funds);\n };\n startVotingPeriod = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n start_voting_period: {}\n }, fee, memo, _funds);\n };\n signUp = async ({\n amount,\n certificate,\n pubkey\n }: {\n amount: Uint256;\n certificate: string;\n pubkey: PubKey;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n sign_up: {\n amount,\n certificate,\n pubkey\n }\n }, fee, memo, _funds);\n };\n startProcessPeriod = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n start_process_period: {}\n }, fee, memo, _funds);\n };\n stopVotingPeriod = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n stop_voting_period: {}\n }, fee, memo, _funds);\n };\n publishMessage = async ({\n encPubKey,\n message\n }: {\n encPubKey: PubKey;\n message: MessageData;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n publish_message: {\n enc_pub_key: encPubKey,\n message\n }\n }, fee, memo, _funds);\n };\n processMessage = async ({\n groth16Proof,\n newStateCommitment,\n plonkProof\n }: {\n groth16Proof?: Groth16ProofType;\n newStateCommitment: Uint256;\n plonkProof?: PlonkProofType;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n process_message: {\n groth16_proof: groth16Proof,\n new_state_commitment: newStateCommitment,\n plonk_proof: plonkProof\n }\n }, fee, memo, _funds);\n };\n stopProcessingPeriod = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n stop_processing_period: {}\n }, fee, memo, _funds);\n };\n processTally = async ({\n groth16Proof,\n newTallyCommitment,\n plonkProof\n }: {\n groth16Proof?: Groth16ProofType;\n newTallyCommitment: Uint256;\n plonkProof?: PlonkProofType;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n process_tally: {\n groth16_proof: groth16Proof,\n new_tally_commitment: newTallyCommitment,\n plonk_proof: plonkProof\n }\n }, fee, memo, _funds);\n };\n stopTallyingPeriod = async ({\n results,\n salt\n }: {\n results: Uint256[];\n salt: Uint256;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n stop_tallying_period: {\n results,\n salt\n }\n }, fee, memo, _funds);\n };\n grant = async ({\n baseAmount,\n grantee\n }: {\n baseAmount: Uint128;\n grantee: Addr;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n grant: {\n base_amount: baseAmount,\n grantee\n }\n }, fee, memo, _funds);\n };\n revoke = async ({\n grantee\n }: {\n grantee: Addr;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n revoke: {\n grantee\n }\n }, fee, memo, _funds);\n };\n bond = async (fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n bond: {}\n }, fee, memo, _funds);\n };\n withdraw = async ({\n amount\n }: {\n amount?: Uint128;\n }, fee: number | StdFee | \"auto\" = \"auto\", memo?: string, _funds?: Coin[]): Promise<ExecuteResult> => {\n return await this.client.execute(this.sender, this.contractAddress, {\n withdraw: {\n amount\n }\n }, fee, memo, _funds);\n };\n}","import { FetchOptions } from '../libs/http/http';\nexport type * from '../libs/contract/types';\n\nexport enum MaciCircuitType {\n IP1V = '0',\n QV = '1',\n}\n\nexport enum MaciCertSystemType {\n GROTH16 = 'groth16',\n PLONK = 'plonk',\n}\n\nexport enum MaciRoundType {\n MACI = '0',\n AMACI = '1',\n ORACLE_MACI = '2',\n}\n\nexport type ClientParams = {\n network: 'mainnet' | 'testnet';\n rpcEndpoint?: string;\n restEndpoint?: string;\n apiEndpoint?: string;\n registryAddress?: string;\n maciCodeId?: number;\n oracleCodeId?: number;\n customFetch?: typeof fetch;\n defaultOptions?: FetchOptions;\n};\n\nexport type ContractParams = {\n rpcEndpoint: string;\n registryAddress: string;\n maciCodeId: number;\n oracleCodeId: number;\n};\n\nexport type TransactionType = {\n id: string;\n blockHeight: string;\n txHash: string;\n timestamp: string;\n type: string;\n status: string;\n circuitName: string;\n fee: string;\n gasUsed: string;\n gasWanted: string;\n caller: string;\n contractAddress: string;\n};\n\nexport type RoundType = {\n id: string;\n blockHeight: string;\n txHash: string;\n caller: string;\n admin: string;\n operator: string;\n contractAddress: string;\n circuitName: string;\n timestamp: string;\n votingStart: string;\n votingEnd: string;\n status: string;\n period: string;\n actionType: string;\n roundTitle: string;\n roundDescription: string;\n roundLink: string;\n coordinatorPubkeyX: string;\n coordinatorPubkeyY: string;\n voteOptionMap: string;\n results: string;\n allResult: string;\n gasStationEnable: boolean;\n totalGrant: string;\n baseGrant: string;\n totalBond: string;\n circuitType: string;\n circuitPower: string;\n certificationSystem: string;\n codeId: string;\n maciType: string;\n voiceCreditAmount: string;\n preDeactivateRoot: string;\n identity: string;\n operatorLogoUrl?: string;\n operatorMoniker?: string;\n resultsList?: {\n v: number;\n v2: number;\n }[];\n};\n\nexport type ProofType = {\n nodes: {\n id: string;\n blockHeight: string;\n txHash: string;\n contractAddress: string;\n timestamp: string;\n actionType: string;\n commitment: string;\n proof: string;\n }[];\n};\n\nexport type OperatorType = {\n id: string;\n validatorAddress: string;\n operatorAddress: string;\n coordinatorPubkeyX: string;\n coordinatorPubkeyY: string;\n identity: string;\n logoUrl: string;\n moniker: string;\n activeRoundsCount: number;\n completedRoundsCount: number;\n};\n\nexport type CircuitType = {\n maciType: string;\n circuitType: string;\n displayName: string;\n repoUrl: string;\n zipUrl: string;\n roundCount?: number;\n};\n\nexport type CircuitsCountGraphqlResponse = {\n data: {\n rounds: {\n totalCount: number;\n };\n };\n};\n\nexport type ErrorResponse = {\n code: number;\n error: {\n message: string;\n type: string;\n };\n};\n\nexport type SuccessResponse<T> = {\n code: 200;\n data: T;\n};\n\nexport type CircuitResponse =\n | SuccessResponse<{\n circuit: CircuitType;\n }>\n | ErrorResponse;\n\nexport type CircuitsResponse =\n | SuccessResponse<{\n circuits: CircuitType[];\n }>\n | ErrorResponse;\n\nexport type BalanceResponse =\n | SuccessResponse<{\n balance: string;\n }>\n | ErrorResponse;\n\nexport type OperatorResponse =\n | SuccessResponse<{\n operator: OperatorType;\n }>\n | ErrorResponse;\n\nexport type OperatorsResponse =\n | SuccessResponse<{\n operators: {\n pageInfo: {\n endCursor: string;\n hasNextPage: boolean;\n };\n edges: {\n cursor: string;\n node: OperatorType;\n }[];\n totalCount: number;\n };\n }>\n | ErrorResponse;\n\nexport type OperatorsGraphqlResponse = {\n data: {\n operators: {\n pageInfo: {\n endCursor: string;\n hasNextPage: boolean;\n };\n edges: {\n cursor: string;\n node: OperatorType;\n }[];\n totalCount: number;\n };\n };\n};\n\nexport type RoundsCountGraphqlResponse = {\n data: {\n activeRoundsCount: {\n totalCount: number;\n };\n completedRoundsCount: {\n totalCount: number;\n };\n };\n};\n\nexport type TransactionGraphqlResponse = {\n data: {\n transaction: TransactionType;\n };\n};\n\nexport type TransactionResponse =\n | SuccessResponse<{\n transaction: TransactionType;\n }>\n | ErrorResponse;\n\nexport type TransactionsGraphqlResponse = {\n data: {\n transactions: {\n pageInfo: {\n endCursor: string;\n hasNextPage: boolean;\n };\n edges: {\n cursor: string;\n node: TransactionType;\n }[];\n totalCount: number;\n };\n };\n};\n\nexport type TransactionsResponse =\n | SuccessResponse<{\n transactions: {\n pageInfo: {\n endCursor: string;\n hasNextPage: boolean;\n };\n edges: {\n cursor: string;\n node: TransactionType;\n }[];\n totalCount: number;\n };\n }>\n | ErrorResponse;\n\nexport type RoundResponse =\n | SuccessResponse<{\n round: RoundType;\n }>\n | ErrorResponse;\n\nexport type RoundsResponse =\n | SuccessResponse<{\n rounds: {\n pageInfo: {\n endCursor: string;\n hasNextPage: boolean;\n };\n edges: {\n cursor: string;\n node: RoundType;\n }[];\n totalCount: number;\n };\n }>\n | ErrorResponse;\n\nexport type RoundGraphqlResponse = {\n data: {\n round: RoundType;\n };\n};\n\nexport type RoundsGraphqlResponse = {\n data: {\n rounds: {\n pageInfo: {\n endCursor: string;\n hasNextPage: boolean;\n };\n edges: {\n cursor: string;\n node: RoundType;\n }[];\n totalCount: number;\n };\n };\n};\n\nexport type ProofResponse =\n | SuccessResponse<{\n proofData: ProofType;\n }>\n | ErrorResponse;\n\nexport type ProofGraphqlResponse = {\n data: {\n proofData: ProofType;\n };\n};\n","import { GasPrice } from '@cosmjs/stargate';\n\ntype CircuitInfoType = {\n [key: string]: {\n parameter: {\n state_tree_depth: string;\n int_state_tree_depth: string;\n vote_option_tree_depth: string;\n message_batch_size: string;\n };\n groth16: {\n process_vkey: {\n vk_alpha1: string;\n vk_beta_2: string;\n vk_gamma_2: string;\n vk_delta_2: string;\n vk_ic0: string;\n vk_ic1: string;\n };\n tally_vkey: {\n vk_alpha1: string;\n vk_beta_2: string;\n vk_gamma_2: string;\n vk_delta_2: string;\n vk_ic0: string;\n vk_ic1: string;\n };\n };\n plonk?: {\n process_vkey: {\n n: number;\n num_inputs: number;\n selector_commitments: string[];\n next_step_selector_commitments: string[];\n permutation_commitments: string[];\n non_residues: string[];\n g2_elements: string[];\n };\n tally_vkey: {\n n: number;\n num_inputs: number;\n selector_commitments: string[];\n next_step_selector_commitments: string[];\n permutation_commitments: string[];\n non_residues: string[];\n g2_elements: string[];\n };\n };\n };\n};\n\nexport const CIRCUIT_INFO: CircuitInfoType = {\n '2-1-1-5': {\n parameter: {\n state_tree_depth: '2',\n int_state_tree_depth: '1',\n vote_option_tree_depth: '1',\n message_batch_size: '5',\n },\n groth16: {\n process_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '2178a9c3805dd82071b2b28bb4c0ffc8178cad913c8c990b98b4863284dc3a5d175c0be554fc060c27c551e5e32effef015b918a0f5a2dc1b92909b8272719301c521d5f6542db5ea4775a42d32159c356a696599c1a3df011ec00559ae1c2b60d860f7e6513a7d20feaeaca401863e35a0f691dd7d30ce06d07946840de1ec8',\n vk_ic0:\n '19126a54a9b6d0d415f892c246485cb2889487cf9c4a8cd88dab5e1140e1d0630d1d76ef4652df8887c9dc557aa57f25e221db7e5b2e4cf618a362bece107f5c',\n vk_ic1:\n '0632e625fefc7172e8aec1070c4d32b90b6c482f6f3806773a4c55a03877c2d716cfd935eb3e3883f580c93f56adbf3a253ce3c208c52fb784f9d8fec139c617',\n },\n tally_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '2e9fad39728c543c5213599111e1a44b01720c999a6785e8136c3e3b3bf8e07e248e1933d477969ca6e27cb7a74bca18cac7e3bbdf9371be5c54fe151f6376a30955609ec69b89329322a2f435b706ca248d1312c7513853a50ef37ed0f7826c25a5c57bf07789d89e538bc24017cf2722811f21480b0bb8030ed0028ecb7cd8',\n vk_ic0:\n '1bc1a1a3444256469c07cd6f4d1cfd9f7c9ddce596a306e0af077ca9e9c0fe9602db2a9aecef76a9dc4c19bf88c0099b04fc75410cc9004f0966440825e3790a',\n vk_ic1:\n '05b8b475f2bfedba4fa04ab1972006da9764c2c3e6fb65d6dd0aac938fd298112a560e13770b06a3f709a49fddf016331ea205fa125026993f6666eff69f4def',\n },\n },\n plonk: {\n process_vkey: {\n n: 1048575,\n num_inputs: 1,\n selector_commitments: [\n '29b0f4a90bea69583a8fca1e74d23adf739d605af605a0e0971fac548df976fb2e10a42dfca2325684c1bca5fabbf9d7022fc8b997ea478f1052dd8808d99e44',\n '119002055b6c2f98314ef408e4a917a6678f114ca991185749289f171f61efc32b3a931c700271b82d22c2073af9b7fffcb7bfa644ea09102d9ef8482410a991',\n '10c5f32870d26f8e26d2eaae2705557b18210b2355677172e1bef5fe684120891f8317185390ddbb22ecb922d37e03c3cc524c84f65c8045f2324b0f164cfbdb',\n '115a5f9af5d438d3261cfa31b7050b931b7d22647f628a43af41a41dcd44cb8d2e99368eb15cdc6d1f16faf9db0db4825613d6893c776aef456705bdc76eb728',\n '1a61cc5f0fbe92fbc8c9bd58928ce467f63e4771e4d517966afbaf220ea069a91cec3231c370be07fee8d9ec01660d054c549b034715855ffa652ad5b67ced86',\n '19e0d095a343115f6e7ad7ae1f51e375cd648fb35451cb2d5a8cf3bafbb25d0525efdc2cc5b5600ee0ae954dca3bf67c8277d470161fe23b4be7a5bcdf641e68',\n ],\n next_step_selector_commitments: [\n '246ce82e01ed312e81492f132da2ee16bc13cc0024fbcc668de30173ad59067f0f072a892451cc495f5d9b8b99c8dc29be1d42d3004aed45fd5b2cd32a420016',\n ],\n permutation_commitments: [\n '19c4143f41738480adc5ae49922d31b8a5afaa1d25ced5c20b869c0e1ccad91920c267c53d33907318cd194ba2ea08a85f250779765ba4121f7a0edfe1afe22b',\n '114bda14aa702a0815e3f91318a08a2798244420fd6675c8fc3cc2b0232298890d2eb3c1f27a83f4a3be777524d6cc65aa435e0a472fae8d1158e0a6ded685d0',\n '289f0b046968d2c095d05350e43996756fc85d2deb0e267a069615f0889a249413bdbe6f09edb4db956b8f3fc4488c4681cd52469dc0d419dab99a65b88309f7',\n '16dd74a2089960aac0d68309d5e81c6b45c29fafe4d42c922c06eb633ed48d551d347d1f43ee9b137772eefc43a6dcdf5ac35ee1615bc8f7c243bce071c410a9',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n tally_vkey: {\n n: 524287,\n num_inputs: 1,\n selector_commitments: [\n '18c2bb75c8ed53a5d15a56cc91c56f14c832419994ce7187c7c98b5e622cac0808b773f05e09822d8d267646198a78359ea2aa6fbaeb01317142f99fd11da6c0',\n '181499098243a5968f5490b7759aa15f0f769f24f3f4219b69f96913cf4fb23c1cd7b3f109196d7577390fd2e6d3930a71b0559aff756f3ca43eef66ce7333f4',\n '07ba2bdd452503fb16b56ea2940e95a98118c9dd120ae192680fe2b80bdb26f10ac6cdc7cb12b581a8c64d45b5af3d253c4282405eed3fd4d091ae05aac45cb6',\n '1caf01f1775eeafa78a11202e926ee92be997ce040f9c6fbce161348a40aeda70d9f15738cccf538083784e566ceef651d000223ae810c980e2d5d98b91b4665',\n '2c377c69cae1d591af413da2fd986ef3dca595d0c5817ee4932b92169d37c52d1218ce63dde705ebd1dc66d9b62daca287e4fdf6800b69204e5b78bfe84365a1',\n '175dd4ff280e39f0e080c181f853845e40c4b91709a93e4398d24befc9cf556903675361817e031e86bd896ff1dd7bc1cc31ca920a101499db0c58d77f0730ec',\n ],\n next_step_selector_commitments: [\n '12d76999d26137d433f7119ab34f3fc63cfedb9172052cfb34acfc3cdc570f511aba802ebe92b87f913496314b938cf526078280a68826c90b686b90420c7742',\n ],\n permutation_commitments: [\n '167b05c0132399e7126e8d16efb224b1c6729942048fc7e730fd1451116e0a6e05acaf2a6d2c88cc25610474b651c8cdcb7e8e14e59ddfad819123e888c4b1b6',\n '25aed62de4b701dc645e076543e2553c306010f2776c74edae55ea5253d9540403d042c4cb699cc04b2bb63d3c3edc0c85b049a84dc2fd44369f957d81363563',\n '0e77fb0b0e84da1d955da3d66dbb8fa3988f22e999a34bc4ac537a0f9187ac40156f8d7cb6d005fd85a0178d794f941b4e84832fd389a37c2a78112dac09b758',\n '051d3d906d457eaa9eff77a296dfa1760fd9ea379eec60487be38de91545ca2c1fcf457d6ac31afee10951245b0cc1e2c7674596f65955d189d48b6938fb3594',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n },\n },\n '4-2-2-25': {\n parameter: {\n state_tree_depth: '4',\n int_state_tree_depth: '2',\n vote_option_tree_depth: '2',\n message_batch_size: '25',\n },\n groth16: {\n process_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '0d0fe390b9dd4d1d0f486787b6ea96765cbeaa8f00310fecc3429673c5866c081a27998596ba296f66f3f7b5e2450d1ce1bcc535c133b2e8b577ba07dc1ccb4c1895f7afb9b3168a6d628c9173157cd56ca51948cc66c129a25f80e3b665e4b12c9c50f0cc0d070978ed2fb8ce15956d67c5dc6c07c7f45f1facfb5522d7b656',\n vk_ic0:\n '0ff2b22774da5c0ba94db4d759827b8c962aaf44db2649eb10407de02a40463a26497581d6d0979ad7f9057f26e048109158b0872700e2ad8447ffc9b4bf146b',\n vk_ic1:\n '0a47be101a59d20641e1369c0b2b9fb839cd35ecbfbeac3866df43723b70c78d17e96303c417743d93b7726805b736f364d305036b50e4ad1b885fc41284daf5',\n },\n tally_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '08e44e0876bd574d8a3411e374884eb61da7292ca52903fa96553c37311b66ce0f2f529e59b1d37e55794a575d0f87548ca0d03331c19689bc203a68c1c4bae20e9fd25a7bffaa9b7409e694a48bc0d57f42df164d4a01bd5deecffedd2d3a3125eff290efb93eaf9c578cc7ee9d00406137607b9602de02424ff413ac948690',\n vk_ic0:\n '295c8e84b4b6b8de44b24f80eb5cae1df65e4877c4af8da2dbadfbfc3586dc790661b9e636f2c2a83028d11cbb7c753675481b65a5dfe32fff7a558231b3c9ef',\n vk_ic1:\n '299cfb28054cde0470bd7ff280349089350226d1ca154dcf6544b2680bf3bea925026e6644668273d6066ef6766c2f561c3607c523fbbd1379c5002376ef69c3',\n },\n },\n plonk: {\n process_vkey: {\n n: 2097151,\n num_inputs: 1,\n selector_commitments: [\n '126cbf10e0b68a56d45614be16c5bb48bd1374478e17b9fe1a78b726ea70f9b21f3cd20fd178d89e5923c422ef050ccc7134fbd76c9efdbb90f677ee41e01edb',\n '12813166f206c95eddd998a40d8d2e54e29dd393f543e3583a7999b18d674832024cdd935540bd3b96207ec0609c6718ad8b14e2ef315594454c57d606494485',\n '05da9eea3ee7151355067ced11a8e8ff57a56c758493afc9cbb6cfbacfc42e7b08993dfa25c85f20aeb7f64e87fe56ac8066cf6b8479dc96294e302ef5d55372',\n '2e446e540bacde7daea23c93a67bc6b1424b7c16b33fd2cee251b0d093cd78300030b8e340f01f320639d60b77724e58fc8a2d778b7b2a5df2c953ce34debeea',\n '1cf8c75b18071ede19d196b46a8776efc29ac514458a698d9f2e50b7bc692f6e06f7ff96897240eca31058fe330e8cbcd911324b79a3a34d03340a3cfed85fd5',\n '17101fb5c293438a695075b221219679e278e4bd147239c9fc69081b19cacefe218eb895f1456ca81e29731967588aee4b0758ea51aa28e5fefc81fed4a11513',\n ],\n next_step_selector_commitments: [\n '0cebff4fe8cd70325f986088a1e17ae129a025481137bd80aef9c1f1c2e52f1e265a4ccae1ed89cb2fba527165f007898e70f988311ee4e4e87e41376cfeed03',\n ],\n permutation_commitments: [\n '025b5db167721133693f0b6d9d7cfadce68ad15365ef1605dda4a6c809edeea61927b27ca11713fc683c88f6330e9621837b05e5db74d5994d1cf04bc3d529b3',\n '1fac93999f33b145613901846e6403d7f4237d582b51ccc4fb5c70038284c6e21cc804cc3cf7170b96da74fcbb30c81cd8c3405a629327c657025db7332f169a',\n '0b6d7d383de73dbfc16f2c0f3af763135ff05a12ec937548008cfee944c195f902336a68a50f62f595953e44401e872fb41abb66a733684b079ffe550d09c233',\n '225a1f5e92d105d3be026ae68904826f89b786faad75a846ef966ed714568bba28d1388786fde71dea206cdef16faa7a589e90863e6245d271e3f154c75c5531',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n tally_vkey: {\n n: 1048575,\n num_inputs: 1,\n selector_commitments: [\n '1588fb667b3f0e4d0970b8208e4b6b4c729c4926b936f8d877017cf42d07ca15069643791d98abcd6b7d0b0546e7560ab9011e069f2ee48ede581fc72d8b5e04',\n '09c5480b103c44a81850ffd9a61ec21f7db41bc89996d8df075c3e029290eb5b083cb2b184d95c0761e585547be33250c8939929b87fdc39775ccea17d51b481',\n '278e239bcac0a945a17572a6d61ba59f705746e6893a10a44841933a8c8310e712e4ee913af9b77c8fdcdc365316aa9f1b8dc081eb99ad80265768ec9f484beb',\n '12532585ea307c5559b18a4d01db59b544a88088f61a5b5ed0431393e6f675af1309bf0dcaa7a552849e5f28d0300c8c61b18393fb638aed3b7d70e27bb91c35',\n '172e7ecb8e485aaee801fd78b8fd7c0b862baef65e39e6832cffa2170b6f981928d86ab5887e8c3210e34e03cada468bd501f60ec3a8fa35b4c7067d6fb8c6ae',\n '0c27211d046735fc681228b8366be2c8cf9a256cbd03dcd4af65152e94f95a6f1af151a5311b195b0f4acffeec4952cc52edbb7045aab61bbd3be9cd322ab99e',\n ],\n next_step_selector_commitments: [\n '25ee15301d562e6c630946b3fbe36b9fbd8dfbd44ddf70cc825fb1fa1ebd966229081f6b9297da671c69064e10b8f5dd0f69b69d1bf79122c6197f119087ebe1',\n ],\n permutation_commitments: [\n '194849a6ec5cb37e09d20801d387abbab04e453f630c5fbbf5c4819c5569480c0c8bf0ce2b4955cc4c891840da1d9e99feb81e8d43251dffbe4d6167639b9f9b',\n '17717d2638632d406b3c8aa69550c8aeed1b79def3ab55e9d0c4bdf21cc339ad07d3bd3a331145fc96f34c85469a34a8c93b53b7aa36bb5a94c31e3b4d47713e',\n '277b0c99b63c79bb9ed2f677c3987cf00acb293933dfced82b5afcb8bf0c34570d3187ce5c7e892582ddda4322cf7c50d41105fe98503fb60e41f4a08da5916d',\n '0489f6dec0f27a8c21d147ebb9781b68b4b73db065a6017924c543f6d9fadbe922d24c0946bd8b19df7659810296d063b557cdf7aba510b11e08fbf2e9d37931',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n },\n },\n '6-3-3-125': {\n parameter: {\n state_tree_depth: '6',\n int_state_tree_depth: '3',\n vote_option_tree_depth: '3',\n message_batch_size: '125',\n },\n groth16: {\n process_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '057f25675851ef5a79a6d8706a43a6cd8e494cfb12c241ede46991d9174cf30605b081ff44f3ede774dab68ea9324c12308c13cb09cbb129adf94401b9134f5b16137d952fd32ab2d4243ebff4cb15d17206948ef17909ea8606886a8109bdad082f7d27e1cbf98925f055b39d1c89f9bcc4f6d92fdb920934ff5e37ba4d9b49',\n vk_ic0:\n '27c937c032a18a320566e934448a0ffceea7050492a509c45a3bcb7e8ff8905d20789ada31729a833a4f595ff9f49f88adb66f2ab987de15a15deccb0e785bf4',\n vk_ic1:\n '0ed2cefc103a2234dbc6bbd8634812d65332218b7589f4079b2c08eb5a4f5f63113a7f3cb53797a7f5819d7de7e3f0b2197d1c34790685a4a59af4314810420b',\n },\n tally_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '2065e91c00fcc5cbc3d974cf52e24de972bdb1b4d8ded629dec20b5c904c3fa327ffe02402094795ff4d02588c8268fcad738f69eb4c732a0c98b485035e1f4913ede11b074ff143a929673e581a547717c58ce01af87d9d8b28f65f506093a61013e367b93e6782129362065840a0af9b77d7d9659a84577176e64a918d8d4c',\n vk_ic0:\n '11db4a022aab89a265f06ff62aa18c74b21e913a8b23e7fce9cb46f76d1c4d9f2a7475b1eeb7be0a0dc457e6d52536ba351b621b63a7d77da75d4e773048537e',\n vk_ic1:\n '0f298d235d0822ad281386abdf511853529af4c864b0cd54140facebfc1356a3059cd6d0d4b27b39e5683548fe12025e2a6b2e2724c2ca87d2008ef932ed3801',\n },\n },\n plonk: {\n process_vkey: {\n n: 8388607,\n num_inputs: 1,\n selector_commitments: [\n '216533ab27390f98812429524326ac08736d636d2891fb81446796cc1771a3230642f49db115acc15a186a1013f91a08efcd05640eb137d700276e80fd05bc90',\n '11747f6f378e26dbdacff464ce7eb6a8869750d0fa7e508e263ac77b582c1e9b24ba3d208650b0c28943915c563cc94cc3f98cdb5fd8adc4f4d3e2a60eda3302',\n '09239eb768d8d47b91c7e08e2ec6a374571964ed16be293cdc35e112393c4fd1182a0794be7f1441418664e9f718b67ed392a7da3e2868375bcf629131bb2680',\n '2020f7db24940bbf38d097ea5d7ef7253e38b154d7eb0ff1782ea18ce215dd7b0e8475197b071b118adc6418b7b7fb42fea19b6272d1bb460cc47deacb299ec7',\n '298923db1618185064bbab5df30ee03a3c9cbc7ce8f096d76cbd2a5ab3df86cd05bbedb938e6e0ff35cce23609458aff8081cdf3163655672074d1b18b0007bd',\n '0effaabe8c6e8a076aedd36d10f2926f9871f552d93e22bfbe69e3c828a546fa2d0cd163b49a6de219ac2c048a8459ae448047748ba078b9d5d07b290c946b08',\n ],\n next_step_selector_commitments: [\n '13e3d7299e30e6142699469d620df721eca35bbb807a8f4298f165260fdc24f823e7bd9bcb6506a094a5ebef44434c62e4bcb5d3dd7e092c49d5cb80b8ae0757',\n ],\n permutation_commitments: [\n '03d94ab8fdc681523a8eec10f1ce5552937c268d1d970f9e75ee8657cd4c12a81e03476f83ef5c14db2f4d931b833a3b65b8d5689b37cc7f183914c90d3d065d',\n '1b9c6ef20e68355c535bda6ff04a8a61d7552a594bb8e88d69a6f8840ddab04d2884824cc356d0d90cc278c247fc531de62efca4b19ed1be6f071144474d2037',\n '1ff82de8312481e1591d2d1c2698fa3944b3f0afa0dd702be8a1a944a5a8997323ffbd0ab39a2e13608a8e76803c33ffda7317bb7101e335ce5552ed62dcd09d',\n '2cb2bbdd51d22b79957b0401ecb6fe089f05426ba092b1205fa92f39b36cc5fc0c36c3934e47b7d407d4cda0c78c2b3fb23162cb0d295e8a8cce1a274956c34a',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n tally_vkey: {\n n: 8388607,\n num_inputs: 1,\n selector_commitments: [\n '258d101f9499e81c0d0da8986c659ef33da19d4955a142e56b4854d1327c902c1996baecd81432717a9cbf92ccf651e4217a788c1a2ed855f749480f8ce8203c',\n '1892a17c9c01389e3149b0663069a1ad4fd3c8e2db5ce99795b781c47b55acf9001cf5f0b4c1d088fa2058ca19cd2f1e9559ebe059897bb0aadcb540ce5f468a',\n '09912d6eaa4a22802451135d9a221ebf97c2ce8ad5bbb2942d5a860482e8e4202573995072c4b014cd0e9d09a1fd53ee7d602070b404288a7fd0d97b57d8f07d',\n '0c62ef7ad01b05b2c01fca6188de269d63d725348a07a99bbc50f24c1518aa871fdc61bbf42399433a0917c919dcfe9e851b206e1c37dec0908f69ad89bb1f8e',\n '07d181c1026ef4a6732bff3dffbc5ae0e3746e4860f478c6c2e8e258df2ed7671efe073fb31cf5a61c0eedceccb5e968220b9ff7e2b055b11d7c456a57fe7ac9',\n '1bbd7ad96893df675c811e5a2be184e2e3bc9af0ce30a7b26e53a916a10a777a01ffa70dbe585201ac09778429c04c71229392608095d220c7d82631a0caedd6',\n ],\n next_step_selector_commitments: [\n '2ae6c5c98d4c384e8e645d85a4ca362de4c4e75efe3c79d5bcbd126a9e305b831618df99300c7327f1eac6a498c8feac6013d4ba09b7ea046340f99b0598a832',\n ],\n permutation_commitments: [\n '2458c5fb474ab3e7ae9c6b82cc432a111954d8be5e7e9b4fc58c14e1aed77f3207426dbe08272aa69ba8b73809f27f9ff083641b5c3c896c386a74bbed3083dd',\n '0879ac4885674b1af0ab67c7b505bce6234f32a0335bdfd229023fea5f303ece0973ba8abc9ade8edcfb68c7d4b8b98272c7bf33eff841fec78d21c0c2e82aa6',\n '07b74f37fcbcb2d9962a529fbc254d54925aeb1be1a49517affeb3571ef3e31e3033f7900ff5bb5759cbb98b64ca7f42967278c328d00e60c042aa65f2178ded',\n '203c948fdc386e7bfbdc37363ab489e9ce3264f4ccd23c33dd8f2337fb9007a621cabf740aa26e522dcb7af6c0de9f93cbc69595b29b02e75c2f3507e97664ec',\n ],\n non_residues: [\n '0000000000000000000000000000000000000000000000000000000000000005',\n '0000000000000000000000000000000000000000000000000000000000000007',\n '000000000000000000000000000000000000000000000000000000000000000a',\n ],\n g2_elements: [\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n '260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c10118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b004fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe422febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e55',\n ],\n },\n },\n },\n '9-4-3-625': {\n parameter: {\n state_tree_depth: '9',\n int_state_tree_depth: '4',\n message_batch_size: '625',\n vote_option_tree_depth: '3',\n },\n groth16: {\n process_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_ic0:\n '1832600210a459fe61d971081d4baa1a1add23f87c8a8dc4042cd5cf6c6fdf8e3018489aec30d9deb26629e05965a3a7e038be58ce10c854cb7e1071f2708aad',\n vk_ic1:\n '0274a24117a799333754d646e35f37292e7ca9984fb8781211504b158d69d2c422aa99651ca207c77084988b16ef363664b9cf36071f7131dcc10b98ea27d7f6',\n },\n tally_vkey: {\n vk_alpha1:\n '2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926',\n vk_beta_2:\n '0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8',\n vk_gamma_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_delta_2:\n '198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa',\n vk_ic0:\n '2ec191d51bd4ac7cd65cb3dd2decfa4e56c4f167bbc40e2c9e1ca728f9bc5b0e2ed1c82319dc554aea5ff2ca05d6f4d4d61e8f059a8c05d4b4faabae5128a437',\n vk_ic1:\n '2f19db8f03b6b5896abc6989273371b14833356f45c12685e57bc292eccc53570cb629e551df179f73b9f3391946bad29739af8b808c80b0f057af45aea59849',\n },\n },\n },\n};\n\nexport const MACI_TYPE = {\n 'maci-1p1v': '0',\n 'maci-qv': '1',\n};\n\nexport const AMACI_TYPE = {\n 'amaci-1p1v': '0',\n 'amaci-qv': '1',\n};\n\nexport const PROOF_SYSTEM = {\n groth16: '0',\n plonk: '1',\n};\n\nexport const QTR_LIB = {\n zeros: [\n '0',\n '14655542659562014735865511769057053982292279840403315552050801315682099828156',\n '19261153649140605024552417994922546473530072875902678653210025980873274131905',\n '21526503558325068664033192388586640128492121680588893182274749683522508994597',\n '20017764101928005973906869479218555869286328459998999367935018992260318153770',\n '16998355316577652097112514691750893516081130026395813155204269482715045879598',\n '2612442706402737973181840577010736087708621987282725873936541279764292204086',\n '17716535433480122581515618850811568065658392066947958324371350481921422579201',\n '17437916409890180001398333108882255895598851862997171508841759030332444017770',\n ],\n};\n","import {\n MaciCertSystemType,\n MaciCircuitType,\n MaciRoundType,\n} from '../../types';\nimport { CIRCUIT_INFO } from './vars';\n\ntype MixedData<T> = T | Array<MixedData<T>> | { [key: string]: MixedData<T> };\n\nexport const stringizing = (\n o: MixedData<bigint>,\n path: MixedData<bigint>[] = []\n): MixedData<string> => {\n if (path.includes(o)) {\n throw new Error('loop nesting!');\n }\n const newPath = [...path, o];\n\n if (Array.isArray(o)) {\n return o.map((item) => stringizing(item, newPath));\n } else if (typeof o === 'object') {\n const output: { [key: string]: MixedData<string> } = {};\n for (const key in o) {\n output[key] = stringizing(o[key], newPath);\n }\n return output;\n } else {\n return o.toString();\n }\n};\n\nexport function getContractParams(\n type: MaciRoundType,\n circuitType: MaciCircuitType,\n proofSystem: MaciCertSystemType,\n maxVoter: string,\n maxOption: string\n) {\n let parameters: {\n state_tree_depth: string;\n int_state_tree_depth: string;\n vote_option_tree_depth: string;\n message_batch_size: string;\n };\n let groth16ProcessVkey = null;\n let groth16TallyVkey = null;\n let plonkProcessVkey = null;\n let plonkTallyVkey = null;\n let maciVoteType = null;\n let maciCertSystem = null;\n\n switch (circuitType) {\n case MaciCircuitType.IP1V:\n maciVoteType = '0';\n break;\n case MaciCircuitType.QV:\n maciVoteType = '1';\n break;\n default:\n throw new Error(\n `Invalid circuit type ${circuitType}, only support 1P1V and QV`\n );\n }\n\n switch (proofSystem) {\n case MaciCertSystemType.GROTH16:\n maciCertSystem = '0';\n break;\n case MaciCertSystemType.PLONK:\n maciCertSystem = '1';\n break;\n default:\n throw new Error(\n `Invalid proof system ${proofSystem}, only support GROTH16 and PLONK`\n );\n }\n\n if (Number(maxVoter) <= 25 && Number(maxOption) <= 5) {\n // state_tree_depth: 2\n // vote_option_tree_depth: 1\n parameters = CIRCUIT_INFO['2-1-1-5'].parameter;\n if (proofSystem === MaciCertSystemType.GROTH16) {\n groth16ProcessVkey = CIRCUIT_INFO['2-1-1-5']['groth16'].process_vkey;\n groth16TallyVkey = CIRCUIT_INFO['2-1-1-5']['groth16'].tally_vkey;\n } else if (proofSystem === MaciCertSystemType.PLONK) {\n plonkProcessVkey = CIRCUIT_INFO['2-1-1-5']['plonk']?.process_vkey;\n plonkTallyVkey = CIRCUIT_INFO['2-1-1-5']['plonk']?.tally_vkey;\n }\n } else if (Number(maxVoter) <= 625 && Number(maxOption) <= 25) {\n // state_tree_depth: 4\n // vote_option_tree_depth: 2\n parameters = CIRCUIT_INFO['4-2-2-25'].parameter;\n if (proofSystem === MaciCertSystemType.GROTH16) {\n groth16ProcessVkey = CIRCUIT_INFO['4-2-2-25']['groth16'].process_vkey;\n groth16TallyVkey = CIRCUIT_INFO['4-2-2-25']['groth16'].tally_vkey;\n } else if (proofSystem === MaciCertSystemType.PLONK) {\n plonkProcessVkey = CIRCUIT_INFO['4-2-2-25']['plonk']?.process_vkey;\n plonkTallyVkey = CIRCUIT_INFO['4-2-2-25']['plonk']?.tally_vkey;\n }\n } else if (Number(maxVoter) <= 15625 && Number(maxOption) <= 125) {\n // state_tree_depth: 6\n // vote_option_tree_depth: 3\n parameters = CIRCUIT_INFO['6-3-3-125'].parameter;\n if (proofSystem === MaciCertSystemType.GROTH16) {\n groth16ProcessVkey = CIRCUIT_INFO['6-3-3-125']['groth16'].process_vkey;\n groth16TallyVkey = CIRCUIT_INFO['6-3-3-125']['groth16'].tally_vkey;\n } else if (proofSystem === MaciCertSystemType.PLONK) {\n plonkProcessVkey = CIRCUIT_INFO['6-3-3-125']['plonk']?.process_vkey;\n plonkTallyVkey = CIRCUIT_INFO['6-3-3-125']['plonk']?.tally_vkey;\n }\n } else if (Number(maxVoter) <= 1953125 && Number(maxOption) <= 125) {\n // state_tree_depth: 9\n // vote_option_tree_depth: 3\n parameters = CIRCUIT_INFO['9-4-3-625'].parameter;\n if (proofSystem === MaciCertSystemType.GROTH16) {\n groth16ProcessVkey = CIRCUIT_INFO['9-4-3-625']['groth16'].process_vkey;\n groth16TallyVkey = CIRCUIT_INFO['9-4-3-625']['groth16'].tally_vkey;\n } else if (proofSystem === MaciCertSystemType.PLONK) {\n throw new Error('PLONK is not supported for MACI-9');\n }\n } else {\n throw new Error('Number of voters or options is too large.');\n }\n switch (type) {\n case MaciRoundType.MACI:\n return {\n parameters,\n groth16ProcessVkey,\n groth16TallyVkey,\n plonkProcessVkey,\n plonkTallyVkey,\n maciVoteType,\n maciCertSystem,\n };\n case MaciRoundType.AMACI:\n return {\n // parameters,\n // groth16ProcessVkey,\n // groth16TallyVkey,\n // plonkProcessVkey,\n // plonkTallyVkey,\n };\n case MaciRoundType.ORACLE_MACI:\n return {\n parameters: CIRCUIT_INFO['9-4-3-625'].parameter,\n groth16ProcessVkey: CIRCUIT_INFO['9-4-3-625']['groth16'].process_vkey,\n groth16TallyVkey: CIRCUIT_INFO['9-4-3-625']['groth16'].tally_vkey,\n plonkProcessVkey: null,\n plonkTallyVkey: null,\n maciVoteType,\n maciCertSystem: '0',\n };\n }\n}\n\n/**\n * Converts a hexadecimal string to a decimal string.\n * @param hexString - The hexadecimal string to convert.\n * @returns The decimal string representation of the input.\n */\nfunction hexToDecimalString(hexString: string) {\n const decimalString = BigInt('0x' + hexString).toString(10);\n return decimalString;\n}\n\n/**\n * Parses a public key string into its x and y coordinates.\n * @param publickKey - The public key string to parse (128 characters long).\n * @returns An object containing the x and y coordinates as decimal strings.\n */\nexport function parsePubkey(publickKey: string) {\n const x = publickKey.slice(0, 64);\n const y = publickKey.slice(64);\n\n return {\n x: hexToDecimalString(x),\n y: hexToDecimalString(y),\n };\n}\n","import { Secp256k1HdWallet } from '@cosmjs/launchpad';\nimport { DirectSecp256k1HdWallet, OfflineSigner } from '@cosmjs/proto-signing';\nimport {\n GasPrice,\n SigningStargateClient,\n SigningStargateClientOptions,\n} from '@cosmjs/stargate';\nimport {\n SigningCosmWasmClient,\n SigningCosmWasmClientOptions,\n} from '@cosmjs/cosmwasm-stargate';\nimport { MaciClient } from './ts/Maci.client';\nimport { AMaciClient } from './ts/AMaci.client';\nimport { RegistryClient } from './ts/Registry.client';\nimport { ContractParams } from '../../types';\nimport {\n createAMaciClientBy,\n createContractClientByWallet,\n createMaciClientBy,\n createOracleMaciClientBy,\n createRegistryClientBy,\n} from './config';\nimport { Whitelist } from './ts/Registry.types';\nimport { getDefaultParams } from '../const';\nimport {\n CreateAMaciRoundParams,\n CreateMaciRoundParams,\n CreateOracleMaciRoundParams,\n} from './types';\nimport { getContractParams, parsePubkey } from './utils';\nimport { QTR_LIB } from './vars';\nimport { MaciRoundType, MaciCertSystemType } from '../../types';\n\nexport const prefix = 'dora';\n\nexport class Contract {\n public rpcEndpoint: string;\n public registryAddress: string;\n public maciCodeId: number;\n public oracleCodeId: number;\n\n constructor({\n rpcEndpoint,\n registryAddress,\n maciCodeId,\n oracleCodeId,\n }: ContractParams) {\n this.rpcEndpoint = rpcEndpoint;\n this.registryAddress = registryAddress;\n this.maciCodeId = maciCodeId;\n this.oracleCodeId = oracleCodeId;\n }\n\n async createAMaciRound({\n signer,\n startVoting,\n endVoting,\n operator,\n whitelist,\n title,\n description,\n link,\n maxVoter,\n maxOption,\n voiceCreditAmount,\n circuitType,\n preDeactivateRoot,\n }: CreateAMaciRoundParams) {\n const start_time = (startVoting.getTime() * 10 ** 6).toString();\n const end_time = (endVoting.getTime() * 10 ** 6).toString();\n\n const client = await createRegistryClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress: this.registryAddress,\n });\n\n preDeactivateRoot = preDeactivateRoot || '0';\n const res = await client.createRound({\n operator,\n preDeactivateRoot,\n voiceCreditAmount,\n whitelist,\n roundInfo: {\n title,\n description: description || '',\n link: link || '',\n },\n votingTime: {\n start_time,\n end_time,\n },\n maxVoter,\n maxOption,\n certificationSystem: '0',\n circuitType,\n });\n let contractAddress = '';\n res.events.map((event) => {\n if (event.type === 'wasm') {\n let actionEvent = event.attributes.find(\n (attr) => attr.key === 'action'\n )!;\n if (actionEvent.value === 'created_round') {\n contractAddress = event.attributes\n .find((attr) => attr.key === 'round_addr')!\n .value.toString();\n }\n }\n });\n console.log(`Deploy tx: ${res.transactionHash} - ${contractAddress}`);\n return contractAddress;\n }\n\n async createMaciRound({\n signer,\n operatorPubkey,\n startVoting,\n endVoting,\n whitelist,\n title,\n description,\n link,\n maxVoter,\n maxOption,\n circuitType,\n certSystemType,\n }: CreateMaciRoundParams) {\n const start_time = (startVoting.getTime() * 10 ** 6).toString();\n const end_time = (endVoting.getTime() * 10 ** 6).toString();\n const [{ address }] = await signer.getAccounts();\n const client = await createContractClientByWallet(this.rpcEndpoint, signer);\n const { x: operatorPubkeyX, y: operatorPubkeyY } =\n parsePubkey(operatorPubkey);\n const {\n parameters,\n groth16ProcessVkey,\n groth16TallyVkey,\n plonkProcessVkey,\n plonkTallyVkey,\n maciVoteType,\n maciCertSystem,\n } = getContractParams(\n MaciRoundType.MACI,\n circuitType,\n certSystemType,\n maxVoter,\n maxOption\n );\n const instantiateResponse = await client.instantiate(\n address,\n this.maciCodeId,\n {\n round_info: { title, description, link },\n voting_time: {\n start_time,\n end_time,\n },\n parameters,\n coordinator: {\n x: operatorPubkeyX,\n y: operatorPubkeyY,\n },\n groth16_process_vkey: groth16ProcessVkey,\n groth16_tally_vkey: groth16TallyVkey,\n plonk_process_vkey: plonkProcessVkey,\n plonk_tally_vkey: plonkTallyVkey,\n max_vote_options: maxOption,\n whitelist,\n circuit_type: maciVoteType,\n certification_system: maciCertSystem,\n qtr_lib: QTR_LIB,\n },\n 'MACI',\n 'auto'\n );\n\n return instantiateResponse;\n }\n\n async createOracleMaciRound({\n signer,\n operatorPubkey,\n startVoting,\n endVoting,\n title,\n description,\n link,\n maxVoter,\n maxOption,\n circuitType,\n whitelistBackendPubkey,\n whitelistEcosystem,\n whitelistSnapshotHeight,\n whitelistVotingPowerArgs,\n feegrantOperator,\n }: CreateOracleMaciRoundParams) {\n const start_time = (startVoting.getTime() * 1_000_000).toString();\n const end_time = (endVoting.getTime() * 1_000_000).toString();\n const [{ address }] = await signer.getAccounts();\n const client = await createContractClientByWallet(this.rpcEndpoint, signer);\n const { x: operatorPubkeyX, y: operatorPubkeyY } =\n parsePubkey(operatorPubkey);\n const {\n parameters,\n groth16ProcessVkey,\n groth16TallyVkey,\n plonkProcessVkey,\n plonkTallyVkey,\n maciVoteType,\n maciCertSystem,\n } = getContractParams(\n MaciRoundType.ORACLE_MACI,\n circuitType,\n MaciCertSystemType.GROTH16,\n maxVoter,\n maxOption\n );\n const instantiateResponse = await client.instantiate(\n address,\n this.oracleCodeId,\n {\n round_info: { title, description: description || '', link: link || '' },\n voting_time: {\n start_time,\n end_time,\n },\n parameters,\n coordinator: {\n x: operatorPubkeyX,\n y: operatorPubkeyY,\n },\n groth16_process_vkey: groth16ProcessVkey,\n groth16_tally_vkey: groth16TallyVkey,\n plonk_process_vkey: plonkProcessVkey,\n plonk_tally_vkey: plonkTallyVkey,\n max_vote_options: maxOption,\n whitelist_backend_pubkey: whitelistBackendPubkey,\n whitelist_ecosystem: whitelistEcosystem,\n whitelist_snapshot_height: whitelistSnapshotHeight,\n whitelist_voting_power_args: whitelistVotingPowerArgs,\n circuit_type: maciVoteType,\n certification_system: maciCertSystem,\n qtr_lib: QTR_LIB,\n feegrant_operator: feegrantOperator,\n },\n '[Oracle MACI]' + title,\n 'auto'\n );\n\n // console.log(\n // `Deploy tx: ${instantiateResponse.transactionHash} - ${instantiateResponse.contractAddress} `\n // );\n return instantiateResponse;\n }\n\n async queryRoundInfo({\n signer,\n roundAddress,\n }: {\n signer: OfflineSigner;\n roundAddress: string;\n }) {\n const client = await createMaciClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress: roundAddress,\n });\n const roundInfo = await client.getRoundInfo();\n return roundInfo;\n }\n\n async oracleMaciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n const client = await createOracleMaciClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress,\n });\n return client;\n }\n\n async registryClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return createRegistryClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress,\n });\n }\n\n async maciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return createMaciClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress,\n });\n }\n\n async amaciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return createAMaciClientBy({\n rpcEndpoint: this.rpcEndpoint,\n wallet: signer,\n contractAddress,\n });\n }\n}\n","import {\n BalanceResponse,\n ClientParams,\n RoundResponse,\n RoundsResponse,\n OperatorResponse,\n OperatorsResponse,\n CircuitResponse,\n TransactionResponse,\n TransactionsResponse,\n CircuitsResponse,\n ProofResponse,\n} from './types';\nimport { Http, Indexer, Contract } from './libs';\nimport { getDefaultParams } from './libs/const';\nimport {\n CreateAMaciRoundParams,\n CreateMaciRoundParams,\n CreateOracleMaciRoundParams,\n} from './libs/contract/types';\nimport { OfflineSigner } from '@cosmjs/proto-signing';\n\n/**\n * @class MaciClient\n * @description This class is used to interact with Maci Client.\n */\nexport class MaciClient {\n public rpcEndpoint: string;\n public restEndpoint: string;\n public apiEndpoint: string;\n public registryAddress: string;\n public maciCodeId: number;\n public oracleCodeId: number;\n\n public http: Http;\n public indexer: Indexer;\n public contract: Contract;\n\n /**\n * @constructor\n * @param {ClientParams} params - The parameters for the Maci Client instance.\n */\n constructor({\n network,\n rpcEndpoint,\n restEndpoint,\n apiEndpoint,\n registryAddress,\n maciCodeId,\n oracleCodeId,\n customFetch,\n defaultOptions,\n }: ClientParams) {\n const defaultParams = getDefaultParams(network);\n\n this.rpcEndpoint = rpcEndpoint || defaultParams.rpcEndpoint;\n this.restEndpoint = restEndpoint || defaultParams.restEndpoint;\n this.apiEndpoint = apiEndpoint || defaultParams.apiEndpoint;\n this.registryAddress = registryAddress || defaultParams.registryAddress;\n this.maciCodeId = maciCodeId || defaultParams.maciCodeId;\n this.oracleCodeId = oracleCodeId || defaultParams.oracleCodeId;\n\n this.http = new Http(\n this.apiEndpoint,\n this.restEndpoint,\n customFetch,\n defaultOptions\n );\n this.indexer = new Indexer({\n restEndpoint: this.restEndpoint,\n apiEndpoint: this.apiEndpoint,\n registryAddress: this.registryAddress,\n http: this.http,\n });\n this.contract = new Contract({\n rpcEndpoint: this.rpcEndpoint,\n registryAddress: this.registryAddress,\n maciCodeId: this.maciCodeId,\n oracleCodeId: this.oracleCodeId,\n });\n }\n\n async oracleMaciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return await this.contract.oracleMaciClient({\n signer,\n contractAddress,\n });\n }\n\n async registryClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return await this.contract.registryClient({ signer, contractAddress });\n }\n\n async maciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return await this.contract.maciClient({ signer, contractAddress });\n }\n\n async amaciClient({\n signer,\n contractAddress,\n }: {\n signer: OfflineSigner;\n contractAddress: string;\n }) {\n return await this.contract.amaciClient({ signer, contractAddress });\n }\n\n async createAMaciRound(params: CreateAMaciRoundParams) {\n return await this.contract.createAMaciRound(params);\n }\n\n async createMaciRound(params: CreateMaciRoundParams) {\n return await this.contract.createMaciRound(params);\n }\n\n async createOracleMaciRound(params: CreateOracleMaciRoundParams) {\n return await this.contract.createOracleMaciRound(params);\n }\n\n /**\n * @method balanceOf\n * @description Get the balance of a specific address.\n * @param {string} address - The address to check the balance for.\n * @returns {Promise<BalanceResponse>} The balance response.\n */\n async balanceOf(address: string): Promise<BalanceResponse> {\n return await this.indexer.account.balanceOf(address);\n }\n\n /**\n * @method getRoundById\n * @description Get a round by its ID.\n * @param {string} id - The ID of the round.\n * @returns {Promise<RoundResponse>} The round response.\n */\n async getRoundById(id: string): Promise<RoundResponse> {\n return await this.indexer.round.getRoundById(id);\n }\n\n /**\n * @method getRounds\n * @description Get multiple rounds.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRounds(after: string, limit?: number): Promise<RoundsResponse> {\n return await this.indexer.round.getRounds(after, limit);\n }\n\n /**\n * @method getRoundsByStatus\n * @description Get rounds by their status.\n * @param {string} status - The status of the rounds to retrieve.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByStatus(\n status: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.indexer.round.getRoundsByStatus(status, after, limit);\n }\n\n /**\n * @method getRoundsByCircuitName\n * @description Get rounds by their circuit name.\n * @param {string} name - The name of the circuit.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByCircuitName(\n name: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.indexer.round.getRoundsByCircuitName(name, after, limit);\n }\n\n /**\n * @method getRoundsByOperator\n * @description Get rounds by their operator address.\n * @param {string} address - The address of the operator.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of rounds to retrieve.\n * @returns {Promise<RoundsResponse>} The rounds response.\n */\n async getRoundsByOperator(\n address: string,\n after: string,\n limit?: number\n ): Promise<RoundsResponse> {\n return await this.indexer.round.getRoundsByOperator(address, after, limit);\n }\n\n /**\n * @method getOperatorByAddress\n * @description Get an operator by their address.\n * @param {string} address - The address of the operator.\n * @returns {Promise<OperatorResponse>} The operator response.\n */\n async getOperatorByAddress(address: string): Promise<OperatorResponse> {\n return await this.indexer.operator.getOperatorByAddress(address);\n }\n\n /**\n * @method getOperators\n * @description Get multiple operators.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of operators to retrieve.\n * @returns {Promise<OperatorsResponse>} The operators response.\n */\n async getOperators(\n after: string,\n limit?: number\n ): Promise<OperatorsResponse> {\n return await this.indexer.operator.getOperators(after, limit);\n }\n\n /**\n * @method getCircuitByName\n * @description Get a circuit by its name.\n * @param {string} name - The name of the circuit.\n * @returns {Promise<CircuitResponse>} The circuit response.\n */\n async getCircuitByName(name: string): Promise<CircuitResponse> {\n return await this.indexer.circuit.getCircuitByName(name);\n }\n\n /**\n * @method getCircuits\n * @description Get all available circuits.\n * @returns {Promise<CircuitsResponse>} The circuits response.\n */\n async getCircuits(): Promise<CircuitsResponse> {\n return await this.indexer.circuit.getCircuits();\n }\n\n /**\n * @method getTransactionByHash\n * @description Get a transaction by its hash.\n * @param {string} hash - The hash of the transaction.\n * @returns {Promise<TransactionResponse>} The transaction response.\n */\n async getTransactionByHash(hash: string): Promise<TransactionResponse> {\n return await this.indexer.transaction.getTransactionByHash(hash);\n }\n\n /**\n * @method getTransactions\n * @description Get multiple transactions.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of transactions to retrieve.\n * @returns {Promise<TransactionsResponse>} The transactions response.\n */\n async getTransactions(\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n return await this.indexer.transaction.getTransactions(after, limit);\n }\n\n /**\n * @method getTransactionsByContractAddress\n * @description Get transactions by contract address.\n * @param {string} address - The contract address.\n * @param {string} after - The cursor to start after.\n * @param {number} [limit] - The number of transactions to retrieve.\n * @returns {Promise<TransactionsResponse>} The transactions response.\n */\n async getTransactionsByContractAddress(\n address: string,\n after: string,\n limit?: number\n ): Promise<TransactionsResponse> {\n return await this.indexer.transaction.getTransactionsByContractAddress(\n address,\n after,\n limit\n );\n }\n\n /**\n * @method getProofByContractAddress\n * @description Get proof data by contract address.\n * @param {string} address - The contract address.\n * @returns {Promise<ProofResponse>} The proof response.\n */\n async getProofByContractAddress(address: string): Promise<ProofResponse> {\n return await this.indexer.proof.getProofByContractAddress(address);\n }\n}\n"],"mappings":"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","names":["MaciClient","MaciCircuitType","MaciCertSystemType","MaciRoundType","MaciClient"]}
|