o1js
Version:
TypeScript framework for zk-SNARKs and zkApps
446 lines (427 loc) • 13.5 kB
text/typescript
// @generated this file is auto-generated - don't edit it directly
import { PublicKey, UInt64, UInt32, TokenId, Field, AuthRequired, BalanceChange, Sign, Bool, TransactionVersion, ZkappUri, TokenSymbol, StateHash, Events, Actions, ActionState, MayUseToken, VerificationKeyHash, ReceiptChainHash } from '../../v1/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 '../../v1/transaction-leaves.js';
export { provableFromLayout, toJSONEssential, empty, Layout, TypeMap };
type TypeMap = {
PublicKey: PublicKey;
UInt64: UInt64;
UInt32: UInt32;
TokenId: TokenId;
Field: Field;
AuthRequired: AuthRequired;
BalanceChange: BalanceChange;
Sign: Sign;
Bool: Bool;
}
const TypeMap: {
[K in keyof TypeMap]: ProvableExtended<TypeMap[K], Value.TypeMap[K], Json.TypeMap[K]>;
} = {
PublicKey, UInt64, UInt32, TokenId, Field, AuthRequired, BalanceChange, Sign, Bool
}
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"]>; BalanceChange: ProvableExtended<BalanceChange, Value.TypeMap["BalanceChange"], {
magnitude: Json.TypeMap["UInt64"];
sgn: Json.TypeMap["Sign"];
}>; 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"]>; MayUseToken: ProvableExtended<{
parentsOwnToken: Bool;
inheritFromParent: Bool;
}, {
parentsOwnToken: Value.TypeMap["Bool"];
inheritFromParent: Value.TypeMap["Bool"];
}, {
parentsOwnToken: Json.TypeMap["Bool"];
inheritFromParent: Json.TypeMap["Bool"];
}>; 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, BalanceChange, Events, Actions, ActionState, MayUseToken, 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: BalanceChange;
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: BalanceChange;
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);