// @generated this file is auto-generated - don't edit it directly
export { jsLayout };

let jsLayout = {
  ZkappCommand: {
    type: 'object',
    name: 'ZkappCommand',
    docs: null,
    keys: ['feePayer', 'accountUpdates', 'memo'],
    entries: {
      feePayer: {
        type: 'object',
        name: 'ZkappFeePayer',
        docs: null,
        keys: ['body', 'authorization'],
        entries: {
          body: {
            type: 'object',
            name: 'FeePayerBody',
            docs: null,
            keys: ['publicKey', 'fee', 'validUntil', 'nonce'],
            entries: {
              publicKey: { type: 'PublicKey' },
              fee: { type: 'UInt64' },
              validUntil: { type: 'option', optionType: 'orUndefined', inner: { type: 'UInt32' } },
              nonce: { type: 'UInt32' },
            },
            docEntries: { publicKey: null, fee: null, validUntil: null, nonce: null },
          },
          authorization: { type: 'string' },
        },
        docEntries: { body: null, authorization: null },
      },
      accountUpdates: {
        type: 'array',
        inner: {
          type: 'object',
          name: 'ZkappAccountUpdate',
          docs: 'An account update in a zkApp transaction',
          keys: ['body', 'authorization'],
          entries: {
            body: {
              type: 'object',
              name: 'AccountUpdateBody',
              docs: null,
              keys: [
                'publicKey',
                'tokenId',
                'update',
                'balanceChange',
                'incrementNonce',
                'events',
                'actions',
                'callData',
                'callDepth',
                'preconditions',
                'useFullCommitment',
                'implicitAccountCreationFee',
                'mayUseToken',
                'authorizationKind',
              ],
              entries: {
                publicKey: { type: 'PublicKey' },
                tokenId: { type: 'TokenId' },
                update: {
                  type: 'object',
                  name: 'AccountUpdateModification',
                  docs: null,
                  keys: [
                    'appState',
                    'delegate',
                    'verificationKey',
                    'permissions',
                    'zkappUri',
                    'tokenSymbol',
                    'timing',
                    'votingFor',
                  ],
                  entries: {
                    appState: {
                      type: 'array',
                      inner: {
                        type: 'option',
                        optionType: 'flaggedOption',
                        inner: { type: 'Field' },
                      },
                      staticLength: 8,
                    },
                    delegate: {
                      type: 'option',
                      optionType: 'flaggedOption',
                      inner: { type: 'PublicKey' },
                    },
                    verificationKey: {
                      type: 'option',
                      optionType: 'flaggedOption',
                      inner: {
                        type: 'object',
                        name: 'VerificationKeyWithHash',
                        docs: null,
                        keys: ['data', 'hash'],
                        entries: { data: { type: 'string' }, hash: { type: 'Field' } },
                        docEntries: { data: null, hash: null },
                      },
                    },
                    permissions: {
                      type: 'option',
                      optionType: 'flaggedOption',
                      inner: {
                        type: 'object',
                        name: 'Permissions',
                        docs: null,
                        keys: [
                          'editState',
                          'access',
                          'send',
                          'receive',
                          'setDelegate',
                          'setPermissions',
                          'setVerificationKey',
                          'setZkappUri',
                          'editActionState',
                          'setTokenSymbol',
                          'incrementNonce',
                          'setVotingFor',
                          'setTiming',
                        ],
                        entries: {
                          editState: { type: 'AuthRequired' },
                          access: { type: 'AuthRequired' },
                          send: { type: 'AuthRequired' },
                          receive: { type: 'AuthRequired' },
                          setDelegate: { type: 'AuthRequired' },
                          setPermissions: { type: 'AuthRequired' },
                          setVerificationKey: {
                            type: 'object',
                            name: 'VerificationKeyPermission',
                            docs: null,
                            keys: ['auth', 'txnVersion'],
                            entries: {
                              auth: { type: 'AuthRequired' },
                              txnVersion: {
                                type: 'UInt32',
                                checkedType: { type: 'UInt32' },
                                checkedTypeName: 'TransactionVersion',
                              },
                            },
                            docEntries: { auth: null, txnVersion: null },
                          },
                          setZkappUri: { type: 'AuthRequired' },
                          editActionState: { type: 'AuthRequired' },
                          setTokenSymbol: { type: 'AuthRequired' },
                          incrementNonce: { type: 'AuthRequired' },
                          setVotingFor: { type: 'AuthRequired' },
                          setTiming: { type: 'AuthRequired' },
                        },
                        docEntries: {
                          editState: null,
                          access: null,
                          send: null,
                          receive: null,
                          setDelegate: null,
                          setPermissions: null,
                          setVerificationKey: null,
                          setZkappUri: null,
                          editActionState: null,
                          setTokenSymbol: null,
                          incrementNonce: null,
                          setVotingFor: null,
                          setTiming: null,
                        },
                      },
                    },
                    zkappUri: {
                      type: 'option',
                      optionType: 'flaggedOption',
                      inner: {
                        type: 'string',
                        checkedType: {
                          type: 'object',
                          name: 'Events',
                          docs: null,
                          keys: ['data', 'hash'],
                          entries: { data: { type: 'string' }, hash: { type: 'Field' } },
                          docEntries: { data: null, hash: null },
                        },
                        checkedTypeName: 'ZkappUri',
                      },
                    },
                    tokenSymbol: {
                      type: 'option',
                      optionType: 'flaggedOption',
                      inner: {
                        type: 'string',
                        checkedType: {
                          type: 'object',
                          name: 'Anonymous',
                          docs: null,
                          keys: ['symbol', 'field'],
                          entries: { symbol: { type: 'string' }, field: { type: 'Field' } },
                          docEntries: { symbol: '', field: '' },
                        },
                        checkedTypeName: 'TokenSymbol',
                      },
                    },
                    timing: {
                      type: 'option',
                      optionType: 'flaggedOption',
                      inner: {
                        type: 'object',
                        name: 'Timing',
                        docs: null,
                        keys: [
                          'initialMinimumBalance',
                          'cliffTime',
                          'cliffAmount',
                          'vestingPeriod',
                          'vestingIncrement',
                        ],
                        entries: {
                          initialMinimumBalance: { type: 'UInt64' },
                          cliffTime: { type: 'UInt32' },
                          cliffAmount: { type: 'UInt64' },
                          vestingPeriod: { type: 'UInt32' },
                          vestingIncrement: { type: 'UInt64' },
                        },
                        docEntries: {
                          initialMinimumBalance: null,
                          cliffTime: null,
                          cliffAmount: null,
                          vestingPeriod: null,
                          vestingIncrement: null,
                        },
                      },
                    },
                    votingFor: {
                      type: 'option',
                      optionType: 'flaggedOption',
                      inner: {
                        type: 'Field',
                        checkedType: { type: 'Field' },
                        checkedTypeName: 'StateHash',
                      },
                    },
                  },
                  docEntries: {
                    appState: null,
                    delegate: null,
                    verificationKey: null,
                    permissions: null,
                    zkappUri: null,
                    tokenSymbol: null,
                    timing: null,
                    votingFor: null,
                  },
                },
                balanceChange: {
                  type: 'object',
                  name: 'BalanceChange',
                  docs: null,
                  keys: ['magnitude', 'sgn'],
                  entries: { magnitude: { type: 'UInt64' }, sgn: { type: 'Sign' } },
                  docEntries: { magnitude: null, sgn: null },
                  checkedType: { type: 'BalanceChange' },
                  checkedTypeName: 'BalanceChange',
                },
                incrementNonce: { type: 'Bool' },
                events: {
                  type: 'array',
                  inner: { type: 'array', inner: { type: 'Field' }, staticLength: null },
                  staticLength: null,
                  checkedType: {
                    type: 'object',
                    name: 'Events',
                    docs: null,
                    keys: ['data', 'hash'],
                    entries: {
                      data: {
                        type: 'array',
                        inner: { type: 'array', inner: { type: 'Field' }, staticLength: null },
                        staticLength: null,
                      },
                      hash: { type: 'Field' },
                    },
                    docEntries: { data: null, hash: null },
                  },
                  checkedTypeName: 'Events',
                },
                actions: {
                  type: 'array',
                  inner: { type: 'array', inner: { type: 'Field' }, staticLength: null },
                  staticLength: null,
                  checkedType: {
                    type: 'object',
                    name: 'Events',
                    docs: null,
                    keys: ['data', 'hash'],
                    entries: {
                      data: {
                        type: 'array',
                        inner: { type: 'array', inner: { type: 'Field' }, staticLength: null },
                        staticLength: null,
                      },
                      hash: { type: 'Field' },
                    },
                    docEntries: { data: null, hash: null },
                  },
                  checkedTypeName: 'Actions',
                },
                callData: { type: 'Field' },
                callDepth: { type: 'number' },
                preconditions: {
                  type: 'object',
                  name: 'Preconditions',
                  docs: null,
                  keys: ['network', 'account', 'validWhile'],
                  entries: {
                    network: {
                      type: 'object',
                      name: 'NetworkPrecondition',
                      docs: null,
                      keys: [
                        'snarkedLedgerHash',
                        'blockchainLength',
                        'minWindowDensity',
                        'totalCurrency',
                        'globalSlotSinceGenesis',
                        'stakingEpochData',
                        'nextEpochData',
                      ],
                      entries: {
                        snarkedLedgerHash: {
                          type: 'option',
                          optionType: 'flaggedOption',
                          inner: { type: 'Field' },
                        },
                        blockchainLength: {
                          type: 'option',
                          optionType: 'closedInterval',
                          rangeMin: '0',
                          rangeMax: '4294967295',
                          inner: {
                            type: 'object',
                            name: 'LengthInterval',
                            docs: null,
                            keys: ['lower', 'upper'],
                            entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                            docEntries: { lower: null, upper: null },
                          },
                        },
                        minWindowDensity: {
                          type: 'option',
                          optionType: 'closedInterval',
                          rangeMin: '0',
                          rangeMax: '4294967295',
                          inner: {
                            type: 'object',
                            name: 'LengthInterval',
                            docs: null,
                            keys: ['lower', 'upper'],
                            entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                            docEntries: { lower: null, upper: null },
                          },
                        },
                        totalCurrency: {
                          type: 'option',
                          optionType: 'closedInterval',
                          rangeMin: '0',
                          rangeMax: '18446744073709551615',
                          inner: {
                            type: 'object',
                            name: 'CurrencyAmountInterval',
                            docs: null,
                            keys: ['lower', 'upper'],
                            entries: { lower: { type: 'UInt64' }, upper: { type: 'UInt64' } },
                            docEntries: { lower: null, upper: null },
                          },
                        },
                        globalSlotSinceGenesis: {
                          type: 'option',
                          optionType: 'closedInterval',
                          rangeMin: '0',
                          rangeMax: '4294967295',
                          inner: {
                            type: 'object',
                            name: 'GlobalSlotSinceGenesisInterval',
                            docs: null,
                            keys: ['lower', 'upper'],
                            entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                            docEntries: { lower: null, upper: null },
                          },
                        },
                        stakingEpochData: {
                          type: 'object',
                          name: 'EpochDataPrecondition',
                          docs: null,
                          keys: [
                            'ledger',
                            'seed',
                            'startCheckpoint',
                            'lockCheckpoint',
                            'epochLength',
                          ],
                          entries: {
                            ledger: {
                              type: 'object',
                              name: 'EpochLedgerPrecondition',
                              docs: null,
                              keys: ['hash', 'totalCurrency'],
                              entries: {
                                hash: {
                                  type: 'option',
                                  optionType: 'flaggedOption',
                                  inner: { type: 'Field' },
                                },
                                totalCurrency: {
                                  type: 'option',
                                  optionType: 'closedInterval',
                                  rangeMin: '0',
                                  rangeMax: '18446744073709551615',
                                  inner: {
                                    type: 'object',
                                    name: 'CurrencyAmountInterval',
                                    docs: null,
                                    keys: ['lower', 'upper'],
                                    entries: {
                                      lower: { type: 'UInt64' },
                                      upper: { type: 'UInt64' },
                                    },
                                    docEntries: { lower: null, upper: null },
                                  },
                                },
                              },
                              docEntries: { hash: null, totalCurrency: null },
                            },
                            seed: {
                              type: 'option',
                              optionType: 'flaggedOption',
                              inner: { type: 'Field' },
                            },
                            startCheckpoint: {
                              type: 'option',
                              optionType: 'flaggedOption',
                              inner: { type: 'Field' },
                            },
                            lockCheckpoint: {
                              type: 'option',
                              optionType: 'flaggedOption',
                              inner: { type: 'Field' },
                            },
                            epochLength: {
                              type: 'option',
                              optionType: 'closedInterval',
                              rangeMin: '0',
                              rangeMax: '4294967295',
                              inner: {
                                type: 'object',
                                name: 'LengthInterval',
                                docs: null,
                                keys: ['lower', 'upper'],
                                entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                                docEntries: { lower: null, upper: null },
                              },
                            },
                          },
                          docEntries: {
                            ledger: null,
                            seed: null,
                            startCheckpoint: null,
                            lockCheckpoint: null,
                            epochLength: null,
                          },
                        },
                        nextEpochData: {
                          type: 'object',
                          name: 'EpochDataPrecondition',
                          docs: null,
                          keys: [
                            'ledger',
                            'seed',
                            'startCheckpoint',
                            'lockCheckpoint',
                            'epochLength',
                          ],
                          entries: {
                            ledger: {
                              type: 'object',
                              name: 'EpochLedgerPrecondition',
                              docs: null,
                              keys: ['hash', 'totalCurrency'],
                              entries: {
                                hash: {
                                  type: 'option',
                                  optionType: 'flaggedOption',
                                  inner: { type: 'Field' },
                                },
                                totalCurrency: {
                                  type: 'option',
                                  optionType: 'closedInterval',
                                  rangeMin: '0',
                                  rangeMax: '18446744073709551615',
                                  inner: {
                                    type: 'object',
                                    name: 'CurrencyAmountInterval',
                                    docs: null,
                                    keys: ['lower', 'upper'],
                                    entries: {
                                      lower: { type: 'UInt64' },
                                      upper: { type: 'UInt64' },
                                    },
                                    docEntries: { lower: null, upper: null },
                                  },
                                },
                              },
                              docEntries: { hash: null, totalCurrency: null },
                            },
                            seed: {
                              type: 'option',
                              optionType: 'flaggedOption',
                              inner: { type: 'Field' },
                            },
                            startCheckpoint: {
                              type: 'option',
                              optionType: 'flaggedOption',
                              inner: { type: 'Field' },
                            },
                            lockCheckpoint: {
                              type: 'option',
                              optionType: 'flaggedOption',
                              inner: { type: 'Field' },
                            },
                            epochLength: {
                              type: 'option',
                              optionType: 'closedInterval',
                              rangeMin: '0',
                              rangeMax: '4294967295',
                              inner: {
                                type: 'object',
                                name: 'LengthInterval',
                                docs: null,
                                keys: ['lower', 'upper'],
                                entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                                docEntries: { lower: null, upper: null },
                              },
                            },
                          },
                          docEntries: {
                            ledger: null,
                            seed: null,
                            startCheckpoint: null,
                            lockCheckpoint: null,
                            epochLength: null,
                          },
                        },
                      },
                      docEntries: {
                        snarkedLedgerHash: null,
                        blockchainLength: null,
                        minWindowDensity: null,
                        totalCurrency: null,
                        globalSlotSinceGenesis: null,
                        stakingEpochData: null,
                        nextEpochData: null,
                      },
                    },
                    account: {
                      type: 'object',
                      name: 'AccountPrecondition',
                      docs: null,
                      keys: [
                        'balance',
                        'nonce',
                        'receiptChainHash',
                        'delegate',
                        'state',
                        'actionState',
                        'provedState',
                        'isNew',
                      ],
                      entries: {
                        balance: {
                          type: 'option',
                          optionType: 'closedInterval',
                          rangeMin: '0',
                          rangeMax: '18446744073709551615',
                          inner: {
                            type: 'object',
                            name: 'BalanceInterval',
                            docs: null,
                            keys: ['lower', 'upper'],
                            entries: { lower: { type: 'UInt64' }, upper: { type: 'UInt64' } },
                            docEntries: { lower: null, upper: null },
                          },
                        },
                        nonce: {
                          type: 'option',
                          optionType: 'closedInterval',
                          rangeMin: '0',
                          rangeMax: '4294967295',
                          inner: {
                            type: 'object',
                            name: 'NonceInterval',
                            docs: null,
                            keys: ['lower', 'upper'],
                            entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                            docEntries: { lower: null, upper: null },
                          },
                        },
                        receiptChainHash: {
                          type: 'option',
                          optionType: 'flaggedOption',
                          inner: { type: 'Field' },
                        },
                        delegate: {
                          type: 'option',
                          optionType: 'flaggedOption',
                          inner: { type: 'PublicKey' },
                        },
                        state: {
                          type: 'array',
                          inner: {
                            type: 'option',
                            optionType: 'flaggedOption',
                            inner: { type: 'Field' },
                          },
                          staticLength: 8,
                        },
                        actionState: {
                          type: 'option',
                          optionType: 'flaggedOption',
                          inner: {
                            type: 'Field',
                            checkedType: { type: 'Field' },
                            checkedTypeName: 'ActionState',
                          },
                        },
                        provedState: {
                          type: 'option',
                          optionType: 'flaggedOption',
                          inner: { type: 'Bool' },
                        },
                        isNew: {
                          type: 'option',
                          optionType: 'flaggedOption',
                          inner: { type: 'Bool' },
                        },
                      },
                      docEntries: {
                        balance: null,
                        nonce: null,
                        receiptChainHash: null,
                        delegate: null,
                        state: null,
                        actionState: null,
                        provedState: null,
                        isNew: null,
                      },
                    },
                    validWhile: {
                      type: 'option',
                      optionType: 'closedInterval',
                      rangeMin: '0',
                      rangeMax: '4294967295',
                      inner: {
                        type: 'object',
                        name: 'GlobalSlotSinceGenesisInterval',
                        docs: null,
                        keys: ['lower', 'upper'],
                        entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                        docEntries: { lower: null, upper: null },
                      },
                    },
                  },
                  docEntries: { network: null, account: null, validWhile: null },
                },
                useFullCommitment: { type: 'Bool' },
                implicitAccountCreationFee: { type: 'Bool' },
                mayUseToken: {
                  type: 'object',
                  name: 'MayUseToken',
                  docs: null,
                  keys: ['parentsOwnToken', 'inheritFromParent'],
                  entries: {
                    parentsOwnToken: { type: 'Bool' },
                    inheritFromParent: { type: 'Bool' },
                  },
                  docEntries: { parentsOwnToken: null, inheritFromParent: null },
                  checkedType: {
                    type: 'object',
                    name: 'Anonymous',
                    docs: null,
                    keys: ['parentsOwnToken', 'inheritFromParent'],
                    entries: {
                      parentsOwnToken: { type: 'Bool' },
                      inheritFromParent: { type: 'Bool' },
                    },
                    docEntries: { parentsOwnToken: '', inheritFromParent: '' },
                  },
                  checkedTypeName: 'MayUseToken',
                },
                authorizationKind: {
                  type: 'object',
                  name: 'AuthorizationKindStructured',
                  docs: null,
                  keys: ['isSigned', 'isProved', 'verificationKeyHash'],
                  entries: {
                    isSigned: { type: 'Bool' },
                    isProved: { type: 'Bool' },
                    verificationKeyHash: {
                      type: 'Field',
                      checkedType: { type: 'Field' },
                      checkedTypeName: 'VerificationKeyHash',
                    },
                  },
                  docEntries: { isSigned: null, isProved: null, verificationKeyHash: null },
                },
              },
              docEntries: {
                publicKey: null,
                tokenId: null,
                update: null,
                balanceChange: null,
                incrementNonce: null,
                events: null,
                actions: null,
                callData: null,
                callDepth: null,
                preconditions: null,
                useFullCommitment: null,
                implicitAccountCreationFee: null,
                mayUseToken: null,
                authorizationKind: null,
              },
            },
            authorization: {
              type: 'object',
              name: 'Control',
              docs: null,
              keys: ['proof', 'signature'],
              entries: {
                proof: { type: 'option', optionType: 'orUndefined', inner: { type: 'string' } },
                signature: { type: 'option', optionType: 'orUndefined', inner: { type: 'string' } },
              },
              docEntries: { proof: null, signature: null },
            },
          },
          docEntries: { body: null, authorization: null },
        },
        staticLength: null,
      },
      memo: { type: 'string' },
    },
    docEntries: { feePayer: null, accountUpdates: null, memo: null },
  },
  AccountUpdate: {
    type: 'object',
    name: 'ZkappAccountUpdate',
    docs: 'An account update in a zkApp transaction',
    keys: ['body', 'authorization'],
    entries: {
      body: {
        type: 'object',
        name: 'AccountUpdateBody',
        docs: null,
        keys: [
          'publicKey',
          'tokenId',
          'update',
          'balanceChange',
          'incrementNonce',
          'events',
          'actions',
          'callData',
          'callDepth',
          'preconditions',
          'useFullCommitment',
          'implicitAccountCreationFee',
          'mayUseToken',
          'authorizationKind',
        ],
        entries: {
          publicKey: { type: 'PublicKey' },
          tokenId: { type: 'TokenId' },
          update: {
            type: 'object',
            name: 'AccountUpdateModification',
            docs: null,
            keys: [
              'appState',
              'delegate',
              'verificationKey',
              'permissions',
              'zkappUri',
              'tokenSymbol',
              'timing',
              'votingFor',
            ],
            entries: {
              appState: {
                type: 'array',
                inner: { type: 'option', optionType: 'flaggedOption', inner: { type: 'Field' } },
                staticLength: 8,
              },
              delegate: {
                type: 'option',
                optionType: 'flaggedOption',
                inner: { type: 'PublicKey' },
              },
              verificationKey: {
                type: 'option',
                optionType: 'flaggedOption',
                inner: {
                  type: 'object',
                  name: 'VerificationKeyWithHash',
                  docs: null,
                  keys: ['data', 'hash'],
                  entries: { data: { type: 'string' }, hash: { type: 'Field' } },
                  docEntries: { data: null, hash: null },
                },
              },
              permissions: {
                type: 'option',
                optionType: 'flaggedOption',
                inner: {
                  type: 'object',
                  name: 'Permissions',
                  docs: null,
                  keys: [
                    'editState',
                    'access',
                    'send',
                    'receive',
                    'setDelegate',
                    'setPermissions',
                    'setVerificationKey',
                    'setZkappUri',
                    'editActionState',
                    'setTokenSymbol',
                    'incrementNonce',
                    'setVotingFor',
                    'setTiming',
                  ],
                  entries: {
                    editState: { type: 'AuthRequired' },
                    access: { type: 'AuthRequired' },
                    send: { type: 'AuthRequired' },
                    receive: { type: 'AuthRequired' },
                    setDelegate: { type: 'AuthRequired' },
                    setPermissions: { type: 'AuthRequired' },
                    setVerificationKey: {
                      type: 'object',
                      name: 'VerificationKeyPermission',
                      docs: null,
                      keys: ['auth', 'txnVersion'],
                      entries: {
                        auth: { type: 'AuthRequired' },
                        txnVersion: {
                          type: 'UInt32',
                          checkedType: { type: 'UInt32' },
                          checkedTypeName: 'TransactionVersion',
                        },
                      },
                      docEntries: { auth: null, txnVersion: null },
                    },
                    setZkappUri: { type: 'AuthRequired' },
                    editActionState: { type: 'AuthRequired' },
                    setTokenSymbol: { type: 'AuthRequired' },
                    incrementNonce: { type: 'AuthRequired' },
                    setVotingFor: { type: 'AuthRequired' },
                    setTiming: { type: 'AuthRequired' },
                  },
                  docEntries: {
                    editState: null,
                    access: null,
                    send: null,
                    receive: null,
                    setDelegate: null,
                    setPermissions: null,
                    setVerificationKey: null,
                    setZkappUri: null,
                    editActionState: null,
                    setTokenSymbol: null,
                    incrementNonce: null,
                    setVotingFor: null,
                    setTiming: null,
                  },
                },
              },
              zkappUri: {
                type: 'option',
                optionType: 'flaggedOption',
                inner: {
                  type: 'string',
                  checkedType: {
                    type: 'object',
                    name: 'Events',
                    docs: null,
                    keys: ['data', 'hash'],
                    entries: { data: { type: 'string' }, hash: { type: 'Field' } },
                    docEntries: { data: null, hash: null },
                  },
                  checkedTypeName: 'ZkappUri',
                },
              },
              tokenSymbol: {
                type: 'option',
                optionType: 'flaggedOption',
                inner: {
                  type: 'string',
                  checkedType: {
                    type: 'object',
                    name: 'Anonymous',
                    docs: null,
                    keys: ['symbol', 'field'],
                    entries: { symbol: { type: 'string' }, field: { type: 'Field' } },
                    docEntries: { symbol: '', field: '' },
                  },
                  checkedTypeName: 'TokenSymbol',
                },
              },
              timing: {
                type: 'option',
                optionType: 'flaggedOption',
                inner: {
                  type: 'object',
                  name: 'Timing',
                  docs: null,
                  keys: [
                    'initialMinimumBalance',
                    'cliffTime',
                    'cliffAmount',
                    'vestingPeriod',
                    'vestingIncrement',
                  ],
                  entries: {
                    initialMinimumBalance: { type: 'UInt64' },
                    cliffTime: { type: 'UInt32' },
                    cliffAmount: { type: 'UInt64' },
                    vestingPeriod: { type: 'UInt32' },
                    vestingIncrement: { type: 'UInt64' },
                  },
                  docEntries: {
                    initialMinimumBalance: null,
                    cliffTime: null,
                    cliffAmount: null,
                    vestingPeriod: null,
                    vestingIncrement: null,
                  },
                },
              },
              votingFor: {
                type: 'option',
                optionType: 'flaggedOption',
                inner: {
                  type: 'Field',
                  checkedType: { type: 'Field' },
                  checkedTypeName: 'StateHash',
                },
              },
            },
            docEntries: {
              appState: null,
              delegate: null,
              verificationKey: null,
              permissions: null,
              zkappUri: null,
              tokenSymbol: null,
              timing: null,
              votingFor: null,
            },
          },
          balanceChange: {
            type: 'object',
            name: 'BalanceChange',
            docs: null,
            keys: ['magnitude', 'sgn'],
            entries: { magnitude: { type: 'UInt64' }, sgn: { type: 'Sign' } },
            docEntries: { magnitude: null, sgn: null },
            checkedType: { type: 'BalanceChange' },
            checkedTypeName: 'BalanceChange',
          },
          incrementNonce: { type: 'Bool' },
          events: {
            type: 'array',
            inner: { type: 'array', inner: { type: 'Field' }, staticLength: null },
            staticLength: null,
            checkedType: {
              type: 'object',
              name: 'Events',
              docs: null,
              keys: ['data', 'hash'],
              entries: {
                data: {
                  type: 'array',
                  inner: { type: 'array', inner: { type: 'Field' }, staticLength: null },
                  staticLength: null,
                },
                hash: { type: 'Field' },
              },
              docEntries: { data: null, hash: null },
            },
            checkedTypeName: 'Events',
          },
          actions: {
            type: 'array',
            inner: { type: 'array', inner: { type: 'Field' }, staticLength: null },
            staticLength: null,
            checkedType: {
              type: 'object',
              name: 'Events',
              docs: null,
              keys: ['data', 'hash'],
              entries: {
                data: {
                  type: 'array',
                  inner: { type: 'array', inner: { type: 'Field' }, staticLength: null },
                  staticLength: null,
                },
                hash: { type: 'Field' },
              },
              docEntries: { data: null, hash: null },
            },
            checkedTypeName: 'Actions',
          },
          callData: { type: 'Field' },
          callDepth: { type: 'number' },
          preconditions: {
            type: 'object',
            name: 'Preconditions',
            docs: null,
            keys: ['network', 'account', 'validWhile'],
            entries: {
              network: {
                type: 'object',
                name: 'NetworkPrecondition',
                docs: null,
                keys: [
                  'snarkedLedgerHash',
                  'blockchainLength',
                  'minWindowDensity',
                  'totalCurrency',
                  'globalSlotSinceGenesis',
                  'stakingEpochData',
                  'nextEpochData',
                ],
                entries: {
                  snarkedLedgerHash: {
                    type: 'option',
                    optionType: 'flaggedOption',
                    inner: { type: 'Field' },
                  },
                  blockchainLength: {
                    type: 'option',
                    optionType: 'closedInterval',
                    rangeMin: '0',
                    rangeMax: '4294967295',
                    inner: {
                      type: 'object',
                      name: 'LengthInterval',
                      docs: null,
                      keys: ['lower', 'upper'],
                      entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                      docEntries: { lower: null, upper: null },
                    },
                  },
                  minWindowDensity: {
                    type: 'option',
                    optionType: 'closedInterval',
                    rangeMin: '0',
                    rangeMax: '4294967295',
                    inner: {
                      type: 'object',
                      name: 'LengthInterval',
                      docs: null,
                      keys: ['lower', 'upper'],
                      entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                      docEntries: { lower: null, upper: null },
                    },
                  },
                  totalCurrency: {
                    type: 'option',
                    optionType: 'closedInterval',
                    rangeMin: '0',
                    rangeMax: '18446744073709551615',
                    inner: {
                      type: 'object',
                      name: 'CurrencyAmountInterval',
                      docs: null,
                      keys: ['lower', 'upper'],
                      entries: { lower: { type: 'UInt64' }, upper: { type: 'UInt64' } },
                      docEntries: { lower: null, upper: null },
                    },
                  },
                  globalSlotSinceGenesis: {
                    type: 'option',
                    optionType: 'closedInterval',
                    rangeMin: '0',
                    rangeMax: '4294967295',
                    inner: {
                      type: 'object',
                      name: 'GlobalSlotSinceGenesisInterval',
                      docs: null,
                      keys: ['lower', 'upper'],
                      entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                      docEntries: { lower: null, upper: null },
                    },
                  },
                  stakingEpochData: {
                    type: 'object',
                    name: 'EpochDataPrecondition',
                    docs: null,
                    keys: ['ledger', 'seed', 'startCheckpoint', 'lockCheckpoint', 'epochLength'],
                    entries: {
                      ledger: {
                        type: 'object',
                        name: 'EpochLedgerPrecondition',
                        docs: null,
                        keys: ['hash', 'totalCurrency'],
                        entries: {
                          hash: {
                            type: 'option',
                            optionType: 'flaggedOption',
                            inner: { type: 'Field' },
                          },
                          totalCurrency: {
                            type: 'option',
                            optionType: 'closedInterval',
                            rangeMin: '0',
                            rangeMax: '18446744073709551615',
                            inner: {
                              type: 'object',
                              name: 'CurrencyAmountInterval',
                              docs: null,
                              keys: ['lower', 'upper'],
                              entries: { lower: { type: 'UInt64' }, upper: { type: 'UInt64' } },
                              docEntries: { lower: null, upper: null },
                            },
                          },
                        },
                        docEntries: { hash: null, totalCurrency: null },
                      },
                      seed: {
                        type: 'option',
                        optionType: 'flaggedOption',
                        inner: { type: 'Field' },
                      },
                      startCheckpoint: {
                        type: 'option',
                        optionType: 'flaggedOption',
                        inner: { type: 'Field' },
                      },
                      lockCheckpoint: {
                        type: 'option',
                        optionType: 'flaggedOption',
                        inner: { type: 'Field' },
                      },
                      epochLength: {
                        type: 'option',
                        optionType: 'closedInterval',
                        rangeMin: '0',
                        rangeMax: '4294967295',
                        inner: {
                          type: 'object',
                          name: 'LengthInterval',
                          docs: null,
                          keys: ['lower', 'upper'],
                          entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                          docEntries: { lower: null, upper: null },
                        },
                      },
                    },
                    docEntries: {
                      ledger: null,
                      seed: null,
                      startCheckpoint: null,
                      lockCheckpoint: null,
                      epochLength: null,
                    },
                  },
                  nextEpochData: {
                    type: 'object',
                    name: 'EpochDataPrecondition',
                    docs: null,
                    keys: ['ledger', 'seed', 'startCheckpoint', 'lockCheckpoint', 'epochLength'],
                    entries: {
                      ledger: {
                        type: 'object',
                        name: 'EpochLedgerPrecondition',
                        docs: null,
                        keys: ['hash', 'totalCurrency'],
                        entries: {
                          hash: {
                            type: 'option',
                            optionType: 'flaggedOption',
                            inner: { type: 'Field' },
                          },
                          totalCurrency: {
                            type: 'option',
                            optionType: 'closedInterval',
                            rangeMin: '0',
                            rangeMax: '18446744073709551615',
                            inner: {
                              type: 'object',
                              name: 'CurrencyAmountInterval',
                              docs: null,
                              keys: ['lower', 'upper'],
                              entries: { lower: { type: 'UInt64' }, upper: { type: 'UInt64' } },
                              docEntries: { lower: null, upper: null },
                            },
                          },
                        },
                        docEntries: { hash: null, totalCurrency: null },
                      },
                      seed: {
                        type: 'option',
                        optionType: 'flaggedOption',
                        inner: { type: 'Field' },
                      },
                      startCheckpoint: {
                        type: 'option',
                        optionType: 'flaggedOption',
                        inner: { type: 'Field' },
                      },
                      lockCheckpoint: {
                        type: 'option',
                        optionType: 'flaggedOption',
                        inner: { type: 'Field' },
                      },
                      epochLength: {
                        type: 'option',
                        optionType: 'closedInterval',
                        rangeMin: '0',
                        rangeMax: '4294967295',
                        inner: {
                          type: 'object',
                          name: 'LengthInterval',
                          docs: null,
                          keys: ['lower', 'upper'],
                          entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                          docEntries: { lower: null, upper: null },
                        },
                      },
                    },
                    docEntries: {
                      ledger: null,
                      seed: null,
                      startCheckpoint: null,
                      lockCheckpoint: null,
                      epochLength: null,
                    },
                  },
                },
                docEntries: {
                  snarkedLedgerHash: null,
                  blockchainLength: null,
                  minWindowDensity: null,
                  totalCurrency: null,
                  globalSlotSinceGenesis: null,
                  stakingEpochData: null,
                  nextEpochData: null,
                },
              },
              account: {
                type: 'object',
                name: 'AccountPrecondition',
                docs: null,
                keys: [
                  'balance',
                  'nonce',
                  'receiptChainHash',
                  'delegate',
                  'state',
                  'actionState',
                  'provedState',
                  'isNew',
                ],
                entries: {
                  balance: {
                    type: 'option',
                    optionType: 'closedInterval',
                    rangeMin: '0',
                    rangeMax: '18446744073709551615',
                    inner: {
                      type: 'object',
                      name: 'BalanceInterval',
                      docs: null,
                      keys: ['lower', 'upper'],
                      entries: { lower: { type: 'UInt64' }, upper: { type: 'UInt64' } },
                      docEntries: { lower: null, upper: null },
                    },
                  },
                  nonce: {
                    type: 'option',
                    optionType: 'closedInterval',
                    rangeMin: '0',
                    rangeMax: '4294967295',
                    inner: {
                      type: 'object',
                      name: 'NonceInterval',
                      docs: null,
                      keys: ['lower', 'upper'],
                      entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                      docEntries: { lower: null, upper: null },
                    },
                  },
                  receiptChainHash: {
                    type: 'option',
                    optionType: 'flaggedOption',
                    inner: { type: 'Field' },
                  },
                  delegate: {
                    type: 'option',
                    optionType: 'flaggedOption',
                    inner: { type: 'PublicKey' },
                  },
                  state: {
                    type: 'array',
                    inner: {
                      type: 'option',
                      optionType: 'flaggedOption',
                      inner: { type: 'Field' },
                    },
                    staticLength: 8,
                  },
                  actionState: {
                    type: 'option',
                    optionType: 'flaggedOption',
                    inner: {
                      type: 'Field',
                      checkedType: { type: 'Field' },
                      checkedTypeName: 'ActionState',
                    },
                  },
                  provedState: {
                    type: 'option',
                    optionType: 'flaggedOption',
                    inner: { type: 'Bool' },
                  },
                  isNew: { type: 'option', optionType: 'flaggedOption', inner: { type: 'Bool' } },
                },
                docEntries: {
                  balance: null,
                  nonce: null,
                  receiptChainHash: null,
                  delegate: null,
                  state: null,
                  actionState: null,
                  provedState: null,
                  isNew: null,
                },
              },
              validWhile: {
                type: 'option',
                optionType: 'closedInterval',
                rangeMin: '0',
                rangeMax: '4294967295',
                inner: {
                  type: 'object',
                  name: 'GlobalSlotSinceGenesisInterval',
                  docs: null,
                  keys: ['lower', 'upper'],
                  entries: { lower: { type: 'UInt32' }, upper: { type: 'UInt32' } },
                  docEntries: { lower: null, upper: null },
                },
              },
            },
            docEntries: { network: null, account: null, validWhile: null },
          },
          useFullCommitment: { type: 'Bool' },
          implicitAccountCreationFee: { type: 'Bool' },
          mayUseToken: {
            type: 'object',
            name: 'MayUseToken',
            docs: null,
            keys: ['parentsOwnToken', 'inheritFromParent'],
            entries: { parentsOwnToken: { type: 'Bool' }, inheritFromParent: { type: 'Bool' } },
            docEntries: { parentsOwnToken: null, inheritFromParent: null },
            checkedType: {
              type: 'object',
              name: 'Anonymous',
              docs: null,
              keys: ['parentsOwnToken', 'inheritFromParent'],
              entries: { parentsOwnToken: { type: 'Bool' }, inheritFromParent: { type: 'Bool' } },
              docEntries: { parentsOwnToken: '', inheritFromParent: '' },
            },
            checkedTypeName: 'MayUseToken',
          },
          authorizationKind: {
            type: 'object',
            name: 'AuthorizationKindStructured',
            docs: null,
            keys: ['isSigned', 'isProved', 'verificationKeyHash'],
            entries: {
              isSigned: { type: 'Bool' },
              isProved: { type: 'Bool' },
              verificationKeyHash: {
                type: 'Field',
                checkedType: { type: 'Field' },
                checkedTypeName: 'VerificationKeyHash',
              },
            },
            docEntries: { isSigned: null, isProved: null, verificationKeyHash: null },
          },
        },
        docEntries: {
          publicKey: null,
          tokenId: null,
          update: null,
          balanceChange: null,
          incrementNonce: null,
          events: null,
          actions: null,
          callData: null,
          callDepth: null,
          preconditions: null,
          useFullCommitment: null,
          implicitAccountCreationFee: null,
          mayUseToken: null,
          authorizationKind: null,
        },
      },
      authorization: {
        type: 'object',
        name: 'Control',
        docs: null,
        keys: ['proof', 'signature'],
        entries: {
          proof: { type: 'option', optionType: 'orUndefined', inner: { type: 'string' } },
          signature: { type: 'option', optionType: 'orUndefined', inner: { type: 'string' } },
        },
        docEntries: { proof: null, signature: null },
      },
    },
    docEntries: { body: null, authorization: null },
  },
  Account: {
    type: 'object',
    name: 'Account',
    docs: null,
    keys: [
      'publicKey',
      'tokenId',
      'tokenSymbol',
      'balance',
      'nonce',
      'receiptChainHash',
      'delegate',
      'votingFor',
      'timing',
      'permissions',
      'zkapp',
    ],
    entries: {
      publicKey: { type: 'PublicKey' },
      tokenId: { type: 'TokenId' },
      tokenSymbol: { type: 'string' },
      balance: { type: 'UInt64' },
      nonce: { type: 'UInt32' },
      receiptChainHash: {
        type: 'Field',
        checkedType: { type: 'Field' },
        checkedTypeName: 'ReceiptChainHash',
      },
      delegate: { type: 'option', optionType: 'orUndefined', inner: { type: 'PublicKey' } },
      votingFor: { type: 'Field' },
      timing: {
        type: 'object',
        name: 'AccountTiming',
        docs: null,
        keys: [
          'isTimed',
          'initialMinimumBalance',
          'cliffTime',
          'cliffAmount',
          'vestingPeriod',
          'vestingIncrement',
        ],
        entries: {
          isTimed: { type: 'Bool' },
          initialMinimumBalance: { type: 'UInt64' },
          cliffTime: { type: 'UInt32' },
          cliffAmount: { type: 'UInt64' },
          vestingPeriod: { type: 'UInt32' },
          vestingIncrement: { type: 'UInt64' },
        },
        docEntries: {
          isTimed: null,
          initialMinimumBalance: null,
          cliffTime: null,
          cliffAmount: null,
          vestingPeriod: null,
          vestingIncrement: null,
        },
      },
      permissions: {
        type: 'object',
        name: 'Permissions',
        docs: null,
        keys: [
          'editState',
          'access',
          'send',
          'receive',
          'setDelegate',
          'setPermissions',
          'setVerificationKey',
          'setZkappUri',
          'editActionState',
          'setTokenSymbol',
          'incrementNonce',
          'setVotingFor',
          'setTiming',
        ],
        entries: {
          editState: { type: 'AuthRequired' },
          access: { type: 'AuthRequired' },
          send: { type: 'AuthRequired' },
          receive: { type: 'AuthRequired' },
          setDelegate: { type: 'AuthRequired' },
          setPermissions: { type: 'AuthRequired' },
          setVerificationKey: {
            type: 'object',
            name: 'VerificationKeyPermission',
            docs: null,
            keys: ['auth', 'txnVersion'],
            entries: {
              auth: { type: 'AuthRequired' },
              txnVersion: {
                type: 'UInt32',
                checkedType: { type: 'UInt32' },
                checkedTypeName: 'TransactionVersion',
              },
            },
            docEntries: { auth: null, txnVersion: null },
          },
          setZkappUri: { type: 'AuthRequired' },
          editActionState: { type: 'AuthRequired' },
          setTokenSymbol: { type: 'AuthRequired' },
          incrementNonce: { type: 'AuthRequired' },
          setVotingFor: { type: 'AuthRequired' },
          setTiming: { type: 'AuthRequired' },
        },
        docEntries: {
          editState: null,
          access: null,
          send: null,
          receive: null,
          setDelegate: null,
          setPermissions: null,
          setVerificationKey: null,
          setZkappUri: null,
          editActionState: null,
          setTokenSymbol: null,
          incrementNonce: null,
          setVotingFor: null,
          setTiming: null,
        },
      },
      zkapp: {
        type: 'option',
        optionType: 'orUndefined',
        inner: {
          type: 'object',
          name: 'ZkappAccount',
          docs: null,
          keys: [
            'appState',
            'verificationKey',
            'zkappVersion',
            'actionState',
            'lastActionSlot',
            'provedState',
            'zkappUri',
          ],
          entries: {
            appState: { type: 'array', inner: { type: 'Field' }, staticLength: 8 },
            verificationKey: {
              type: 'option',
              optionType: 'orUndefined',
              inner: {
                type: 'object',
                name: 'VerificationKeyWithHash',
                docs: null,
                keys: ['data', 'hash'],
                entries: { data: { type: 'string' }, hash: { type: 'Field' } },
                docEntries: { data: null, hash: null },
              },
            },
            zkappVersion: { type: 'UInt32' },
            actionState: { type: 'array', inner: { type: 'Field' }, staticLength: 5 },
            lastActionSlot: { type: 'UInt32' },
            provedState: { type: 'Bool' },
            zkappUri: { type: 'string' },
          },
          docEntries: {
            appState: null,
            verificationKey: null,
            zkappVersion: null,
            actionState: null,
            lastActionSlot: null,
            provedState: null,
            zkappUri: null,
          },
        },
      },
    },
    docEntries: {
      publicKey: null,
      tokenId: null,
      tokenSymbol: null,
      balance: null,
      nonce: null,
      receiptChainHash: null,
      delegate: null,
      votingFor: null,
      timing: null,
      permissions: null,
      zkapp: null,
    },
  },
};
