o1js
Version:
TypeScript framework for zk-SNARKs and zkApps
633 lines (620 loc) • 14.6 kB
text/typescript
// @generated this file is auto-generated - don't edit it directly
import {
PublicKey,
UInt64,
UInt32,
TokenId,
Field,
Bool,
AuthRequired,
Sign,
TransactionVersion,
ZkappUri,
TokenSymbol,
StateHash,
Events,
Actions,
ActionState,
VerificationKeyHash,
ReceiptChainHash,
} from '../transaction-leaves.js';
import { GenericProvableExtended } from '../../lib/generic.js';
import { ProvableFromLayout, GenericLayout } from '../../lib/from-layout.js';
import * as Json from './transaction-json.js';
import * as Value from './transaction-bigint.js';
import { jsLayout } from './js-layout.js';
export { customTypes, ZkappCommand, AccountUpdate, Account };
export { Json };
export * from '../transaction-leaves.js';
export { provableFromLayout, toJSONEssential, empty, Layout, TypeMap };
type TypeMap = {
PublicKey: PublicKey;
UInt64: UInt64;
UInt32: UInt32;
TokenId: TokenId;
Field: Field;
Bool: Bool;
AuthRequired: AuthRequired;
Sign: Sign;
};
const TypeMap: {
[K in keyof TypeMap]: ProvableExtended<
TypeMap[K],
Value.TypeMap[K],
Json.TypeMap[K]
>;
} = {
PublicKey,
UInt64,
UInt32,
TokenId,
Field,
Bool,
AuthRequired,
Sign,
};
type ProvableExtended<T, TValue, TJson> = GenericProvableExtended<
T,
TValue,
TJson,
Field
>;
type Layout = GenericLayout<TypeMap>;
type CustomTypes = {
TransactionVersion: ProvableExtended<
UInt32,
Value.TypeMap['UInt32'],
Json.TypeMap['UInt32']
>;
ZkappUri: ProvableExtended<
{
data: string;
hash: Field;
},
{
data: string;
hash: Value.TypeMap['Field'];
},
string
>;
TokenSymbol: ProvableExtended<
{
symbol: string;
field: Field;
},
{
symbol: string;
field: Value.TypeMap['Field'];
},
string
>;
StateHash: ProvableExtended<
Field,
Value.TypeMap['Field'],
Json.TypeMap['Field']
>;
Events: ProvableExtended<
{
data: Field[][];
hash: Field;
},
{
data: Value.TypeMap['Field'][][];
hash: Value.TypeMap['Field'];
},
Json.TypeMap['Field'][][]
>;
Actions: ProvableExtended<
{
data: Field[][];
hash: Field;
},
{
data: Value.TypeMap['Field'][][];
hash: Value.TypeMap['Field'];
},
Json.TypeMap['Field'][][]
>;
ActionState: ProvableExtended<
Field,
Value.TypeMap['Field'],
Json.TypeMap['Field']
>;
VerificationKeyHash: ProvableExtended<
Field,
Value.TypeMap['Field'],
Json.TypeMap['Field']
>;
ReceiptChainHash: ProvableExtended<
Field,
Value.TypeMap['Field'],
Json.TypeMap['Field']
>;
};
let customTypes: CustomTypes = {
TransactionVersion,
ZkappUri,
TokenSymbol,
StateHash,
Events,
Actions,
ActionState,
VerificationKeyHash,
ReceiptChainHash,
};
let { provableFromLayout, toJSONEssential, empty } = ProvableFromLayout<
TypeMap,
Value.TypeMap,
Json.TypeMap
>(TypeMap, customTypes);
type ZkappCommand = {
feePayer: {
body: {
publicKey: PublicKey;
fee: UInt64;
validUntil?: UInt32;
nonce: UInt32;
};
authorization: string;
};
accountUpdates: {
body: {
publicKey: PublicKey;
tokenId: TokenId;
update: {
appState: { isSome: Bool; value: Field }[];
delegate: { isSome: Bool; value: PublicKey };
verificationKey: {
isSome: Bool;
value: {
data: string;
hash: Field;
};
};
permissions: {
isSome: Bool;
value: {
editState: AuthRequired;
access: AuthRequired;
send: AuthRequired;
receive: AuthRequired;
setDelegate: AuthRequired;
setPermissions: AuthRequired;
setVerificationKey: {
auth: AuthRequired;
txnVersion: UInt32;
};
setZkappUri: AuthRequired;
editActionState: AuthRequired;
setTokenSymbol: AuthRequired;
incrementNonce: AuthRequired;
setVotingFor: AuthRequired;
setTiming: AuthRequired;
};
};
zkappUri: {
isSome: Bool;
value: {
data: string;
hash: Field;
};
};
tokenSymbol: {
isSome: Bool;
value: {
symbol: string;
field: Field;
};
};
timing: {
isSome: Bool;
value: {
initialMinimumBalance: UInt64;
cliffTime: UInt32;
cliffAmount: UInt64;
vestingPeriod: UInt32;
vestingIncrement: UInt64;
};
};
votingFor: { isSome: Bool; value: Field };
};
balanceChange: {
magnitude: UInt64;
sgn: Sign;
};
incrementNonce: Bool;
events: {
data: Field[][];
hash: Field;
};
actions: {
data: Field[][];
hash: Field;
};
callData: Field;
callDepth: number;
preconditions: {
network: {
snarkedLedgerHash: { isSome: Bool; value: Field };
blockchainLength: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
minWindowDensity: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
totalCurrency: {
isSome: Bool;
value: {
lower: UInt64;
upper: UInt64;
};
};
globalSlotSinceGenesis: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
stakingEpochData: {
ledger: {
hash: { isSome: Bool; value: Field };
totalCurrency: {
isSome: Bool;
value: {
lower: UInt64;
upper: UInt64;
};
};
};
seed: { isSome: Bool; value: Field };
startCheckpoint: { isSome: Bool; value: Field };
lockCheckpoint: { isSome: Bool; value: Field };
epochLength: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
};
nextEpochData: {
ledger: {
hash: { isSome: Bool; value: Field };
totalCurrency: {
isSome: Bool;
value: {
lower: UInt64;
upper: UInt64;
};
};
};
seed: { isSome: Bool; value: Field };
startCheckpoint: { isSome: Bool; value: Field };
lockCheckpoint: { isSome: Bool; value: Field };
epochLength: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
};
};
account: {
balance: {
isSome: Bool;
value: {
lower: UInt64;
upper: UInt64;
};
};
nonce: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
receiptChainHash: { isSome: Bool; value: Field };
delegate: { isSome: Bool; value: PublicKey };
state: { isSome: Bool; value: Field }[];
actionState: { isSome: Bool; value: Field };
provedState: { isSome: Bool; value: Bool };
isNew: { isSome: Bool; value: Bool };
};
validWhile: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
};
useFullCommitment: Bool;
implicitAccountCreationFee: Bool;
mayUseToken: {
parentsOwnToken: Bool;
inheritFromParent: Bool;
};
authorizationKind: {
isSigned: Bool;
isProved: Bool;
verificationKeyHash: Field;
};
};
authorization: {
proof?: string;
signature?: string;
};
}[];
memo: string;
};
let ZkappCommand = provableFromLayout<
ZkappCommand,
Value.ZkappCommand,
Json.ZkappCommand
>(jsLayout.ZkappCommand as any);
type AccountUpdate = {
body: {
publicKey: PublicKey;
tokenId: TokenId;
update: {
appState: { isSome: Bool; value: Field }[];
delegate: { isSome: Bool; value: PublicKey };
verificationKey: {
isSome: Bool;
value: {
data: string;
hash: Field;
};
};
permissions: {
isSome: Bool;
value: {
editState: AuthRequired;
access: AuthRequired;
send: AuthRequired;
receive: AuthRequired;
setDelegate: AuthRequired;
setPermissions: AuthRequired;
setVerificationKey: {
auth: AuthRequired;
txnVersion: UInt32;
};
setZkappUri: AuthRequired;
editActionState: AuthRequired;
setTokenSymbol: AuthRequired;
incrementNonce: AuthRequired;
setVotingFor: AuthRequired;
setTiming: AuthRequired;
};
};
zkappUri: {
isSome: Bool;
value: {
data: string;
hash: Field;
};
};
tokenSymbol: {
isSome: Bool;
value: {
symbol: string;
field: Field;
};
};
timing: {
isSome: Bool;
value: {
initialMinimumBalance: UInt64;
cliffTime: UInt32;
cliffAmount: UInt64;
vestingPeriod: UInt32;
vestingIncrement: UInt64;
};
};
votingFor: { isSome: Bool; value: Field };
};
balanceChange: {
magnitude: UInt64;
sgn: Sign;
};
incrementNonce: Bool;
events: {
data: Field[][];
hash: Field;
};
actions: {
data: Field[][];
hash: Field;
};
callData: Field;
callDepth: number;
preconditions: {
network: {
snarkedLedgerHash: { isSome: Bool; value: Field };
blockchainLength: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
minWindowDensity: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
totalCurrency: {
isSome: Bool;
value: {
lower: UInt64;
upper: UInt64;
};
};
globalSlotSinceGenesis: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
stakingEpochData: {
ledger: {
hash: { isSome: Bool; value: Field };
totalCurrency: {
isSome: Bool;
value: {
lower: UInt64;
upper: UInt64;
};
};
};
seed: { isSome: Bool; value: Field };
startCheckpoint: { isSome: Bool; value: Field };
lockCheckpoint: { isSome: Bool; value: Field };
epochLength: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
};
nextEpochData: {
ledger: {
hash: { isSome: Bool; value: Field };
totalCurrency: {
isSome: Bool;
value: {
lower: UInt64;
upper: UInt64;
};
};
};
seed: { isSome: Bool; value: Field };
startCheckpoint: { isSome: Bool; value: Field };
lockCheckpoint: { isSome: Bool; value: Field };
epochLength: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
};
};
account: {
balance: {
isSome: Bool;
value: {
lower: UInt64;
upper: UInt64;
};
};
nonce: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
receiptChainHash: { isSome: Bool; value: Field };
delegate: { isSome: Bool; value: PublicKey };
state: { isSome: Bool; value: Field }[];
actionState: { isSome: Bool; value: Field };
provedState: { isSome: Bool; value: Bool };
isNew: { isSome: Bool; value: Bool };
};
validWhile: {
isSome: Bool;
value: {
lower: UInt32;
upper: UInt32;
};
};
};
useFullCommitment: Bool;
implicitAccountCreationFee: Bool;
mayUseToken: {
parentsOwnToken: Bool;
inheritFromParent: Bool;
};
authorizationKind: {
isSigned: Bool;
isProved: Bool;
verificationKeyHash: Field;
};
};
authorization: {
proof?: string;
signature?: string;
};
};
let AccountUpdate = provableFromLayout<
AccountUpdate,
Value.AccountUpdate,
Json.AccountUpdate
>(jsLayout.AccountUpdate as any);
type Account = {
publicKey: PublicKey;
tokenId: TokenId;
tokenSymbol: string;
balance: UInt64;
nonce: UInt32;
receiptChainHash: Field;
delegate?: PublicKey;
votingFor: Field;
timing: {
isTimed: Bool;
initialMinimumBalance: UInt64;
cliffTime: UInt32;
cliffAmount: UInt64;
vestingPeriod: UInt32;
vestingIncrement: UInt64;
};
permissions: {
editState: AuthRequired;
access: AuthRequired;
send: AuthRequired;
receive: AuthRequired;
setDelegate: AuthRequired;
setPermissions: AuthRequired;
setVerificationKey: {
auth: AuthRequired;
txnVersion: UInt32;
};
setZkappUri: AuthRequired;
editActionState: AuthRequired;
setTokenSymbol: AuthRequired;
incrementNonce: AuthRequired;
setVotingFor: AuthRequired;
setTiming: AuthRequired;
};
zkapp?: {
appState: Field[];
verificationKey?: {
data: string;
hash: Field;
};
zkappVersion: UInt32;
actionState: Field[];
lastActionSlot: UInt32;
provedState: Bool;
zkappUri: string;
};
};
let Account = provableFromLayout<Account, Value.Account, Json.Account>(
jsLayout.Account as any
);