diff --git a/src/bindings b/src/bindings index b5422da399..046fc002db 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit b5422da399520e7acd529648eeeadf30e1be2c79 +Subproject commit 046fc002db7c35f14c8f9b819da81485f072fb52 diff --git a/src/index.ts b/src/index.ts index b9fb2cb520..681f78e452 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,60 +1,72 @@ -export type { ProvablePure } from './lib/provable-types/provable-intf.js'; +export type { ProvablePure } from './lib/provable/types/provable-intf.js'; export { Ledger } from './snarky.js'; -export { Field, Bool, Group, Scalar } from './lib/core.js'; +export { Field, Bool, Group, Scalar } from './lib/provable/wrapped.js'; export { createForeignField, ForeignField, AlmostForeignField, CanonicalForeignField, -} from './lib/foreign-field.js'; -export { createForeignCurve, ForeignCurve } from './lib/foreign-curve.js'; -export { createEcdsa, EcdsaSignature } from './lib/foreign-ecdsa.js'; -export { Poseidon, TokenSymbol, ProvableHashable } from './lib/hash.js'; -export { Keccak } from './lib/keccak.js'; -export { Hash } from './lib/hashes-combined.js'; +} from './lib/provable/foreign-field.js'; +export { + createForeignCurve, + ForeignCurve, +} from './lib/provable/crypto/foreign-curve.js'; +export { + createEcdsa, + EcdsaSignature, +} from './lib/provable/crypto/foreign-ecdsa.js'; +export { + Poseidon, + TokenSymbol, + ProvableHashable, +} from './lib/provable/crypto/poseidon.js'; +export { Keccak } from './lib/provable/crypto/keccak.js'; +export { Hash } from './lib/provable/crypto/hash.js'; -export { assert } from './lib/gadgets/common.js'; +export { assert } from './lib/provable/gadgets/common.js'; -export * from './lib/signature.js'; +export * from './lib/provable/crypto/signature.js'; export type { ProvableExtended, FlexibleProvable, FlexibleProvablePure, InferProvable, -} from './lib/provable-types/struct.js'; -export { provable, provablePure, Struct } from './lib/provable-types/struct.js'; -export { Unconstrained } from './lib/provable-types/unconstrained.js'; -export { Provable } from './lib/provable.js'; -export { Circuit, Keypair, public_, circuitMain } from './lib/circuit.js'; -export { UInt32, UInt64, Int64, Sign, UInt8 } from './lib/int.js'; -export { Bytes } from './lib/provable-types/provable-types.js'; -export { Packed, Hashed } from './lib/provable-types/packed.js'; -export { Gadgets } from './lib/gadgets/gadgets.js'; +} from './lib/provable/types/struct.js'; +export { provable, provablePure, Struct } from './lib/provable/types/struct.js'; +export { Unconstrained } from './lib/provable/types/unconstrained.js'; +export { Provable } from './lib/provable/provable.js'; +export { + Circuit, + Keypair, + public_, + circuitMain, +} from './lib/proof-system/circuit.js'; +export { UInt32, UInt64, Int64, Sign, UInt8 } from './lib/provable/int.js'; +export { Bytes } from './lib/provable/wrapped-classes.js'; +export { Packed, Hashed } from './lib/provable/packed.js'; +export { Gadgets } from './lib/provable/gadgets/gadgets.js'; export { Types } from './bindings/mina-transaction/types.js'; -export { - MerkleList, - MerkleListIterator, -} from './lib/provable-types/merkle-list.js'; +export { MerkleList, MerkleListIterator } from './lib/provable/merkle-list.js'; -export * as Mina from './lib/mina.js'; +export * as Mina from './lib/mina/mina.js'; export { type Transaction, type PendingTransaction, type IncludedTransaction, type RejectedTransaction, } from './lib/mina/transaction.js'; -export type { DeployArgs } from './lib/zkapp.js'; +export type { DeployArgs } from './lib/mina/zkapp.js'; export { SmartContract, method, declareMethods, Account, Reducer, -} from './lib/zkapp.js'; -export { state, State, declareState } from './lib/state.js'; +} from './lib/mina/zkapp.js'; +export { state, State, declareState } from './lib/mina/state.js'; -export type { JsonProof } from './lib/proof-system.js'; +export type { JsonProof } from './lib/proof-system/zkprogram.js'; export { Proof, SelfProof, @@ -63,7 +75,7 @@ export { Undefined, Void, VerificationKey, -} from './lib/proof-system.js'; +} from './lib/proof-system/zkprogram.js'; export { Cache, CacheHeader } from './lib/proof-system/cache.js'; export { @@ -74,7 +86,7 @@ export { TransactionVersion, AccountUpdateForest, AccountUpdateTree, -} from './lib/account-update.js'; +} from './lib/mina/account-update.js'; export { TokenAccountUpdateIterator } from './lib/mina/token/forest-iterator.js'; export { TokenContract } from './lib/mina/token/token-contract.js'; @@ -92,28 +104,25 @@ export { setArchiveGraphqlEndpoint, sendZkapp, Lightnet, -} from './lib/fetch.js'; -export * as Encryption from './lib/encryption.js'; +} from './lib/mina/fetch.js'; +export * as Encryption from './lib/provable/crypto/encryption.js'; export * as Encoding from './bindings/lib/encoding.js'; -export { Character, CircuitString } from './lib/provable-types/string.js'; -export { MerkleTree, MerkleWitness } from './lib/provable-types/merkle-tree.js'; -export { - MerkleMap, - MerkleMapWitness, -} from './lib/provable-types/merkle-map.js'; +export { Character, CircuitString } from './lib/provable/string.js'; +export { MerkleTree, MerkleWitness } from './lib/provable/merkle-tree.js'; +export { MerkleMap, MerkleMapWitness } from './lib/provable/merkle-map.js'; -export { Nullifier } from './lib/nullifier.js'; +export { Nullifier } from './lib/provable/crypto/nullifier.js'; -export { ZkProgram } from './lib/proof-system.js'; +export { ZkProgram } from './lib/proof-system/zkprogram.js'; -export { Crypto } from './lib/crypto.js'; +export { Crypto } from './lib/provable/crypto/crypto.js'; export type { NetworkId } from './mina-signer/mina-signer.js'; export { setNumberOfWorkers } from './lib/proof-system/workers.js'; // experimental APIs -import { memoizeWitness } from './lib/provable.js'; +import { memoizeWitness } from './lib/provable/provable.js'; export { Experimental }; const Experimental_ = { diff --git a/src/lib/mina/account-update-layout.unit-test.ts b/src/lib/mina/account-update-layout.unit-test.ts index 8ff2d6853c..2cce42f4b7 100644 --- a/src/lib/mina/account-update-layout.unit-test.ts +++ b/src/lib/mina/account-update-layout.unit-test.ts @@ -1,7 +1,7 @@ import { Mina } from '../../index.js'; -import { AccountUpdate, AccountUpdateTree } from '../account-update.js'; -import { UInt64 } from '../int.js'; -import { SmartContract, method } from '../zkapp.js'; +import { AccountUpdate, AccountUpdateTree } from './account-update.js'; +import { UInt64 } from '../provable/int.js'; +import { SmartContract, method } from './zkapp.js'; // smart contract which creates an account update that has a child of its own diff --git a/src/lib/account-update.ts b/src/lib/mina/account-update.ts similarity index 97% rename from src/lib/account-update.ts rename to src/lib/mina/account-update.ts index 7dd256d9ef..faf9ef4e53 100644 --- a/src/lib/account-update.ts +++ b/src/lib/mina/account-update.ts @@ -4,18 +4,22 @@ import { provable, provablePure, StructNoJson, -} from './provable-types/struct.js'; -import { memoizationContext, memoizeWitness, Provable } from './provable.js'; -import { Field, Bool } from './core.js'; -import { Pickles, Test } from '../snarky.js'; -import { jsLayout } from '../bindings/mina-transaction/gen/js-layout.js'; +} from '../provable/types/struct.js'; +import { + memoizationContext, + memoizeWitness, + Provable, +} from '../provable/provable.js'; +import { Field, Bool } from '../provable/wrapped.js'; +import { Pickles, Test } from '../../snarky.js'; +import { jsLayout } from '../../bindings/mina-transaction/gen/js-layout.js'; import { Types, TypesBigint, toJSONEssential, -} from '../bindings/mina-transaction/types.js'; -import { PrivateKey, PublicKey } from './signature.js'; -import { UInt64, UInt32, Int64, Sign } from './int.js'; +} from '../../bindings/mina-transaction/types.js'; +import { PrivateKey, PublicKey } from '../provable/crypto/signature.js'; +import { UInt64, UInt32, Int64, Sign } from '../provable/int.js'; import type { SmartContract } from './zkapp.js'; import { Preconditions, @@ -27,49 +31,58 @@ import { ClosedInterval, getAccountPreconditions, } from './precondition.js'; -import { dummyBase64Proof, Empty, Proof, Prover } from './proof-system.js'; -import { Memo } from '../mina-signer/src/memo.js'; +import { + dummyBase64Proof, + Empty, + Proof, + Prover, +} from '../proof-system/zkprogram.js'; +import { Memo } from '../../mina-signer/src/memo.js'; import { Events, Actions, -} from '../bindings/mina-transaction/transaction-leaves.js'; +} from '../../bindings/mina-transaction/transaction-leaves.js'; import { TokenId as Base58TokenId } from './base58-encodings.js'; -import { hashWithPrefix, packToFields, Poseidon } from './hash.js'; +import { + hashWithPrefix, + packToFields, + Poseidon, +} from '../provable/crypto/poseidon.js'; import { mocks, prefixes, protocolVersions, -} from '../bindings/crypto/constants.js'; -import { MlArray } from './ml/base.js'; +} from '../../bindings/crypto/constants.js'; +import { MlArray } from '../ml/base.js'; import { Signature, signFieldElement, zkAppBodyPrefix, -} from '../mina-signer/src/signature.js'; -import { MlFieldConstArray } from './ml/fields.js'; +} from '../../mina-signer/src/signature.js'; +import { MlFieldConstArray } from '../ml/fields.js'; import { accountUpdatesToCallForest, CallForest, callForestHashGeneric, transactionCommitments, -} from '../mina-signer/src/sign-zkapp-command.js'; -import { currentTransaction } from './mina/transaction-context.js'; -import { isSmartContract } from './mina/smart-contract-base.js'; -import { activeInstance } from './mina/mina-instance.js'; +} from '../../mina-signer/src/sign-zkapp-command.js'; +import { currentTransaction } from './transaction-context.js'; +import { isSmartContract } from './smart-contract-base.js'; +import { activeInstance } from './mina-instance.js'; import { emptyHash, genericHash, MerkleList, MerkleListBase, -} from './provable-types/merkle-list.js'; -import { Hashed } from './provable-types/packed.js'; +} from '../provable/merkle-list.js'; +import { Hashed } from '../provable/packed.js'; import { accountUpdateLayout, smartContractContext, -} from './mina/smart-contract-context.js'; -import { assert } from './util/assert.js'; -import { RandomId } from './provable-types/auxiliary.js'; -import { NetworkId } from '../mina-signer/src/types.js'; +} from './smart-contract-context.js'; +import { assert } from '../util/assert.js'; +import { RandomId } from '../provable/types/auxiliary.js'; +import { NetworkId } from '../../mina-signer/src/types.js'; // external API export { diff --git a/src/lib/account-update.unit-test.ts b/src/lib/mina/account-update.unit-test.ts similarity index 96% rename from src/lib/account-update.unit-test.ts rename to src/lib/mina/account-update.unit-test.ts index 5f1e61a1b0..7f44a5dace 100644 --- a/src/lib/account-update.unit-test.ts +++ b/src/lib/mina/account-update.unit-test.ts @@ -1,4 +1,4 @@ -import { mocks } from '../bindings/crypto/constants.js'; +import { mocks } from '../../bindings/crypto/constants.js'; import { AccountUpdate, PrivateKey, @@ -6,8 +6,8 @@ import { Mina, Int64, Types, -} from '../index.js'; -import { Test } from '../snarky.js'; +} from '../../index.js'; +import { Test } from '../../snarky.js'; import { expect } from 'expect'; let address = PrivateKey.random().toPublicKey(); diff --git a/src/lib/mina/account.ts b/src/lib/mina/account.ts index 525bff7e5d..e741412c93 100644 --- a/src/lib/mina/account.ts +++ b/src/lib/mina/account.ts @@ -1,16 +1,16 @@ import { Types } from '../../bindings/mina-transaction/types.js'; -import { Bool, Field } from '../core.js'; -import { Permissions } from '../account-update.js'; -import { UInt32, UInt64 } from '../int.js'; -import { PublicKey } from '../signature.js'; -import { TokenId, ReceiptChainHash } from '../base58-encodings.js'; +import { Bool, Field } from '../provable/wrapped.js'; +import { Permissions } from './account-update.js'; +import { UInt32, UInt64 } from '../provable/int.js'; +import { PublicKey } from '../provable/crypto/signature.js'; +import { TokenId, ReceiptChainHash } from './base58-encodings.js'; import { genericLayoutFold } from '../../bindings/lib/from-layout.js'; import { customTypes, TypeMap, } from '../../bindings/mina-transaction/gen/transaction.js'; import { jsLayout } from '../../bindings/mina-transaction/gen/js-layout.js'; -import { ProvableExtended } from '../provable-types/struct.js'; +import { ProvableExtended } from '../provable/types/struct.js'; import { FetchedAccount } from './graphql.js'; export { Account, PartialAccount }; diff --git a/src/lib/base58-encodings.ts b/src/lib/mina/base58-encodings.ts similarity index 63% rename from src/lib/base58-encodings.ts rename to src/lib/mina/base58-encodings.ts index 52b3842330..f09786f38c 100644 --- a/src/lib/base58-encodings.ts +++ b/src/lib/mina/base58-encodings.ts @@ -1,5 +1,5 @@ -import { fieldEncodings } from './base58.js'; -import { Field } from './core.js'; +import { fieldEncodings } from '../util/base58.js'; +import { Field } from '../provable/wrapped.js'; export { TokenId, ReceiptChainHash, LedgerHash, EpochSeed, StateHash }; diff --git a/src/lib/mina/errors.ts b/src/lib/mina/errors.ts index bdbfd16c04..bb0deeefda 100644 --- a/src/lib/mina/errors.ts +++ b/src/lib/mina/errors.ts @@ -1,6 +1,6 @@ import { Types } from '../../bindings/mina-transaction/types.js'; -import { TokenId } from '../account-update.js'; -import { Int64 } from '../int.js'; +import { TokenId } from './account-update.js'; +import { Int64 } from '../provable/int.js'; export { invalidTransactionError }; diff --git a/src/lib/events.ts b/src/lib/mina/events.ts similarity index 96% rename from src/lib/events.ts rename to src/lib/mina/events.ts index 70fce76400..5362c73e7c 100644 --- a/src/lib/events.ts +++ b/src/lib/mina/events.ts @@ -1,9 +1,9 @@ -import { prefixes } from '../bindings/crypto/constants.js'; -import { prefixToField } from '../bindings/lib/binable.js'; +import { prefixes } from '../../bindings/crypto/constants.js'; +import { prefixToField } from '../../bindings/lib/binable.js'; import { GenericProvableExtended, GenericSignableField, -} from '../bindings/lib/generic.js'; +} from '../../bindings/lib/generic.js'; export { createEvents, dataAsHash }; diff --git a/src/lib/fetch.ts b/src/lib/mina/fetch.ts similarity index 99% rename from src/lib/fetch.ts rename to src/lib/mina/fetch.ts index e357579501..a3f8c730f1 100644 --- a/src/lib/fetch.ts +++ b/src/lib/mina/fetch.ts @@ -1,10 +1,10 @@ import 'isomorphic-fetch'; -import { Field } from './core.js'; -import { UInt32, UInt64 } from './int.js'; +import { Field } from '../provable/wrapped.js'; +import { UInt32, UInt64 } from '../provable/int.js'; import { Actions, TokenId } from './account-update.js'; -import { PublicKey, PrivateKey } from './signature.js'; +import { PublicKey, PrivateKey } from '../provable/crypto/signature.js'; import { NetworkValue } from './precondition.js'; -import { Types } from '../bindings/mina-transaction/types.js'; +import { Types } from '../../bindings/mina-transaction/types.js'; import { ActionStates } from './mina.js'; import { LedgerHash, EpochSeed, StateHash } from './base58-encodings.js'; import { @@ -12,7 +12,7 @@ import { fillPartialAccount, parseFetchedAccount, PartialAccount, -} from './mina/account.js'; +} from './account.js'; import { type LastBlockQueryResponse, type GenesisConstantsResponse, @@ -35,7 +35,7 @@ import { genesisConstantsQuery, accountQuery, currentSlotQuery, -} from './mina/graphql.js'; +} from './graphql.js'; export { fetchAccount, diff --git a/src/lib/fetch.unit-test.ts b/src/lib/mina/fetch.unit-test.ts similarity index 97% rename from src/lib/fetch.unit-test.ts rename to src/lib/mina/fetch.unit-test.ts index c1a4eb422d..e61a7155a6 100644 --- a/src/lib/fetch.unit-test.ts +++ b/src/lib/mina/fetch.unit-test.ts @@ -1,4 +1,4 @@ -import { removeJsonQuotes } from './mina/graphql.js'; +import { removeJsonQuotes } from './graphql.js'; import { expect } from 'expect'; console.log('testing regex helpers'); diff --git a/src/lib/mina/graphql.ts b/src/lib/mina/graphql.ts index 9cff4b2217..f152c6e316 100644 --- a/src/lib/mina/graphql.ts +++ b/src/lib/mina/graphql.ts @@ -1,6 +1,6 @@ -import { UInt32 } from '../int.js'; -import type { ZkappCommand } from '../account-update.js'; -import type { ActionStatesStringified } from '../fetch.js'; +import { UInt32 } from '../provable/int.js'; +import type { ZkappCommand } from './account-update.js'; +import type { ActionStatesStringified } from './fetch.js'; import { Types } from '../../bindings/mina-transaction/types.js'; export { diff --git a/src/lib/hash-input.unit-test.ts b/src/lib/mina/hash-input.unit-test.ts similarity index 89% rename from src/lib/hash-input.unit-test.ts rename to src/lib/mina/hash-input.unit-test.ts index 123fd2f436..3f22d65d62 100644 --- a/src/lib/hash-input.unit-test.ts +++ b/src/lib/mina/hash-input.unit-test.ts @@ -3,18 +3,18 @@ import { Types, Permissions, ProvableExtended, -} from '../index.js'; +} from '../../index.js'; import { expect } from 'expect'; -import { jsLayout } from '../bindings/mina-transaction/gen/js-layout.js'; +import { jsLayout } from '../../bindings/mina-transaction/gen/js-layout.js'; import { Json, provableFromLayout, -} from '../bindings/mina-transaction/gen/transaction.js'; -import { packToFields } from './hash.js'; -import { Random, test } from './testing/property.js'; -import { MlHashInput } from './ml/conversion.js'; -import { MlFieldConstArray } from './ml/fields.js'; -import { Test } from '../snarky.js'; +} from '../../bindings/mina-transaction/gen/transaction.js'; +import { packToFields } from '../provable/crypto/poseidon.js'; +import { Random, test } from '../testing/property.js'; +import { MlHashInput } from '../ml/conversion.js'; +import { MlFieldConstArray } from '../ml/fields.js'; +import { Test } from '../../snarky.js'; let { hashInputFromJson } = Test; diff --git a/src/lib/mina/local-blockchain.ts b/src/lib/mina/local-blockchain.ts index 689991d983..9cbb2d9c57 100644 --- a/src/lib/mina/local-blockchain.ts +++ b/src/lib/mina/local-blockchain.ts @@ -2,16 +2,16 @@ import { SimpleLedger } from './transaction-logic/ledger.js'; import { Ml } from '../ml/conversion.js'; import { transactionCommitments } from '../../mina-signer/src/sign-zkapp-command.js'; import { Ledger, Test } from '../../snarky.js'; -import { Field } from '../core.js'; -import { UInt32, UInt64 } from '../int.js'; -import { PrivateKey, PublicKey } from '../signature.js'; +import { Field } from '../provable/wrapped.js'; +import { UInt32, UInt64 } from '../provable/int.js'; +import { PrivateKey, PublicKey } from '../provable/crypto/signature.js'; import { Account } from './account.js'; import { ZkappCommand, TokenId, Authorization, Actions, -} from '../account-update.js'; +} from './account-update.js'; import { NetworkId } from '../../mina-signer/src/types.js'; import { Types, TypesBigint } from '../../bindings/mina-transaction/types.js'; import { invalidTransactionError } from './errors.js'; diff --git a/src/lib/mina/mina-instance.ts b/src/lib/mina/mina-instance.ts index 5b73af5947..87db6f24b0 100644 --- a/src/lib/mina/mina-instance.ts +++ b/src/lib/mina/mina-instance.ts @@ -1,15 +1,15 @@ /** * This module holds the global Mina instance and its interface. */ -import { Field } from '../core.js'; -import { UInt64, UInt32 } from '../int.js'; -import { PublicKey, PrivateKey } from '../signature.js'; +import { Field } from '../provable/wrapped.js'; +import { UInt64, UInt32 } from '../provable/int.js'; +import { PublicKey } from '../provable/crypto/signature.js'; import type { EventActionFilterOptions } from '././../mina/graphql.js'; import type { NetworkId } from '../../mina-signer/src/types.js'; -import type { Transaction, PendingTransaction } from '../mina.js'; +import type { Transaction, PendingTransaction } from './mina.js'; import type { Account } from './account.js'; -import type { NetworkValue } from '../precondition.js'; -import type * as Fetch from '../fetch.js'; +import type { NetworkValue } from './precondition.js'; +import type * as Fetch from './fetch.js'; export { Mina, diff --git a/src/lib/mina.ts b/src/lib/mina/mina.ts similarity index 95% rename from src/lib/mina.ts rename to src/lib/mina/mina.ts index 430cb63e10..0f843c76a0 100644 --- a/src/lib/mina.ts +++ b/src/lib/mina/mina.ts @@ -1,14 +1,14 @@ -import { Test } from '../snarky.js'; -import { Field } from './core.js'; -import { UInt64 } from './int.js'; -import { PublicKey } from './signature.js'; +import { Test } from '../../snarky.js'; +import { Field } from '../provable/wrapped.js'; +import { UInt64 } from '../provable/int.js'; +import { PublicKey } from '../provable/crypto/signature.js'; import { ZkappCommand, TokenId, Authorization } from './account-update.js'; import * as Fetch from './fetch.js'; -import { invalidTransactionError } from './mina/errors.js'; -import { Types } from '../bindings/mina-transaction/types.js'; -import { Account } from './mina/account.js'; -import { NetworkId } from '../mina-signer/src/types.js'; -import { currentTransaction } from './mina/transaction-context.js'; +import { invalidTransactionError } from './errors.js'; +import { Types } from '../../bindings/mina-transaction/types.js'; +import { Account } from './account.js'; +import { NetworkId } from '../../mina-signer/src/types.js'; +import { currentTransaction } from './transaction-context.js'; import { type FeePayerSpec, type ActionStates, @@ -28,8 +28,8 @@ import { fetchActions, getActions, getProofsEnabled, -} from './mina/mina-instance.js'; -import { type EventActionFilterOptions } from './mina/graphql.js'; +} from './mina-instance.js'; +import { type EventActionFilterOptions } from './graphql.js'; import { type Transaction, type PendingTransaction, @@ -41,14 +41,14 @@ import { transaction, createRejectedTransaction, createIncludedTransaction, -} from './mina/transaction.js'; +} from './transaction.js'; import { reportGetAccountError, verifyTransactionLimits, defaultNetworkState, filterGroups, -} from './mina/transaction-validation.js'; -import { LocalBlockchain } from './mina/local-blockchain.js'; +} from './transaction-validation.js'; +import { LocalBlockchain } from './local-blockchain.js'; export { LocalBlockchain, diff --git a/src/lib/mina.unit-test.ts b/src/lib/mina/mina.unit-test.ts similarity index 100% rename from src/lib/mina.unit-test.ts rename to src/lib/mina/mina.unit-test.ts diff --git a/src/lib/precondition.test.ts b/src/lib/mina/precondition.test.ts similarity index 100% rename from src/lib/precondition.test.ts rename to src/lib/mina/precondition.test.ts diff --git a/src/lib/precondition.ts b/src/lib/mina/precondition.ts similarity index 96% rename from src/lib/precondition.ts rename to src/lib/mina/precondition.ts index 0f57b426aa..3d3942b66f 100644 --- a/src/lib/precondition.ts +++ b/src/lib/mina/precondition.ts @@ -1,22 +1,25 @@ -import { Bool, Field } from './core.js'; +import { Bool, Field } from '../provable/wrapped.js'; import { circuitValueEquals, cloneCircuitValue, -} from './provable-types/struct.js'; -import { Provable } from './provable.js'; -import { activeInstance as Mina } from './mina/mina-instance.js'; +} from '../provable/types/struct.js'; +import { Provable } from '../provable/provable.js'; +import { activeInstance as Mina } from './mina-instance.js'; import type { AccountUpdate } from './account-update.js'; -import { Int64, UInt32, UInt64 } from './int.js'; -import { Layout } from '../bindings/mina-transaction/gen/transaction.js'; -import { jsLayout } from '../bindings/mina-transaction/gen/js-layout.js'; -import { emptyReceiptChainHash, TokenSymbol } from './hash.js'; -import { PublicKey } from './signature.js'; +import { Int64, UInt32, UInt64 } from '../provable/int.js'; +import { Layout } from '../../bindings/mina-transaction/gen/transaction.js'; +import { jsLayout } from '../../bindings/mina-transaction/gen/js-layout.js'; +import { + emptyReceiptChainHash, + TokenSymbol, +} from '../provable/crypto/poseidon.js'; +import { PublicKey } from '../provable/crypto/signature.js'; import { Actions, ZkappUri, -} from '../bindings/mina-transaction/transaction-leaves.js'; -import type { Types } from '../bindings/mina-transaction/types.js'; -import { ZkappStateLength } from './mina/mina-instance.js'; +} from '../../bindings/mina-transaction/transaction-leaves.js'; +import type { Types } from '../../bindings/mina-transaction/types.js'; +import { ZkappStateLength } from './mina-instance.js'; export { preconditions, diff --git a/src/lib/mina/smart-contract-base.ts b/src/lib/mina/smart-contract-base.ts index 37d54379e0..0c0db7c805 100644 --- a/src/lib/mina/smart-contract-base.ts +++ b/src/lib/mina/smart-contract-base.ts @@ -2,7 +2,7 @@ * This file exists to avoid an import cycle between code that just needs access * to a smart contract base class, and the code that implements `SmartContract`. */ -import type { SmartContract } from '../zkapp.js'; +import type { SmartContract } from './zkapp.js'; export { isSmartContract, SmartContractBase }; diff --git a/src/lib/mina/smart-contract-context.ts b/src/lib/mina/smart-contract-context.ts index 916908dd10..2920c26d42 100644 --- a/src/lib/mina/smart-contract-context.ts +++ b/src/lib/mina/smart-contract-context.ts @@ -1,6 +1,6 @@ -import type { SmartContract } from '../zkapp.js'; -import type { AccountUpdate, AccountUpdateLayout } from '../account-update.js'; -import { Context } from '../global-context.js'; +import type { SmartContract } from './zkapp.js'; +import type { AccountUpdate, AccountUpdateLayout } from './account-update.js'; +import { Context } from '../util/global-context.js'; import { currentTransaction } from './transaction-context.js'; export { smartContractContext, SmartContractContext, accountUpdateLayout }; diff --git a/src/lib/state.ts b/src/lib/mina/state.ts similarity index 97% rename from src/lib/state.ts rename to src/lib/mina/state.ts index b57cfc31d0..3f16428782 100644 --- a/src/lib/state.ts +++ b/src/lib/mina/state.ts @@ -1,13 +1,13 @@ -import { FlexibleProvablePure } from './provable-types/struct.js'; +import { FlexibleProvablePure } from '../provable/types/struct.js'; import { AccountUpdate, TokenId } from './account-update.js'; -import { PublicKey } from './signature.js'; +import { PublicKey } from '../provable/crypto/signature.js'; import * as Mina from './mina.js'; import { fetchAccount, networkConfig } from './fetch.js'; import { SmartContract } from './zkapp.js'; -import { Account } from './mina/account.js'; -import { Provable } from './provable.js'; -import { Field } from '../lib/core.js'; -import { ProvablePure } from './provable-types/provable-intf.js'; +import { Account } from './account.js'; +import { Provable } from '../provable/provable.js'; +import { Field } from '../provable/wrapped.js'; +import { ProvablePure } from '../provable/types/provable-intf.js'; // external API export { State, state, declareState }; diff --git a/src/lib/token.test.ts b/src/lib/mina/token.test.ts similarity index 100% rename from src/lib/token.test.ts rename to src/lib/mina/token.test.ts diff --git a/src/lib/mina/token/forest-iterator.ts b/src/lib/mina/token/forest-iterator.ts index 25529472c6..bab2a07ccb 100644 --- a/src/lib/mina/token/forest-iterator.ts +++ b/src/lib/mina/token/forest-iterator.ts @@ -3,15 +3,12 @@ import { AccountUpdateForest, AccountUpdateTreeBase, TokenId, -} from '../../account-update.js'; -import { Field } from '../../core.js'; -import { Provable } from '../../provable.js'; -import { Struct } from '../../provable-types/struct.js'; -import { assert } from '../../gadgets/common.js'; -import { - MerkleListIterator, - MerkleList, -} from '../../provable-types/merkle-list.js'; +} from '../account-update.js'; +import { Field } from '../../provable/wrapped.js'; +import { Provable } from '../../provable/provable.js'; +import { Struct } from '../../provable/types/struct.js'; +import { assert } from '../../provable/gadgets/common.js'; +import { MerkleListIterator, MerkleList } from '../../provable/merkle-list.js'; export { TokenAccountUpdateIterator }; diff --git a/src/lib/mina/token/forest-iterator.unit-test.ts b/src/lib/mina/token/forest-iterator.unit-test.ts index 4d03d158de..20d4c38af4 100644 --- a/src/lib/mina/token/forest-iterator.unit-test.ts +++ b/src/lib/mina/token/forest-iterator.unit-test.ts @@ -6,7 +6,7 @@ import { AccountUpdateForest, TokenId, hashAccountUpdate, -} from '../../account-update.js'; +} from '../account-update.js'; import { TypesBigint } from '../../../bindings/mina-transaction/types.js'; import { Pickles } from '../../../snarky.js'; import { @@ -14,8 +14,8 @@ import { callForestHash, } from '../../../mina-signer/src/sign-zkapp-command.js'; import assert from 'assert'; -import { Field, Bool } from '../../core.js'; -import { PublicKey } from '../../signature.js'; +import { Field, Bool } from '../../provable/wrapped.js'; +import { PublicKey } from '../../provable/crypto/signature.js'; // RANDOM NUMBER GENERATORS for account updates diff --git a/src/lib/mina/token/token-contract.ts b/src/lib/mina/token/token-contract.ts index ad400259c4..1a9845d51a 100644 --- a/src/lib/mina/token/token-contract.ts +++ b/src/lib/mina/token/token-contract.ts @@ -1,15 +1,15 @@ -import { Bool } from '../../core.js'; -import { UInt64, Int64 } from '../../int.js'; -import { Provable } from '../../provable.js'; -import { PublicKey } from '../../signature.js'; +import { Bool } from '../../provable/wrapped.js'; +import { UInt64, Int64 } from '../../provable/int.js'; +import { Provable } from '../../provable/provable.js'; +import { PublicKey } from '../../provable/crypto/signature.js'; import { AccountUpdate, AccountUpdateForest, AccountUpdateTree, Permissions, TokenId, -} from '../../account-update.js'; -import { DeployArgs, SmartContract } from '../../zkapp.js'; +} from '../account-update.js'; +import { DeployArgs, SmartContract } from '../zkapp.js'; import { TokenAccountUpdateIterator } from './forest-iterator.js'; import { tokenMethods } from './token-methods.js'; diff --git a/src/lib/mina/token/token-methods.ts b/src/lib/mina/token/token-methods.ts index 58d96ca1f4..df7357197a 100644 --- a/src/lib/mina/token/token-methods.ts +++ b/src/lib/mina/token/token-methods.ts @@ -1,9 +1,9 @@ -import { AccountUpdate, Authorization, TokenId } from '../../account-update.js'; +import { AccountUpdate, Authorization, TokenId } from '../account-update.js'; import { isSmartContract } from '../smart-contract-base.js'; -import { PublicKey } from '../../signature.js'; -import type { SmartContract } from '../../zkapp.js'; -import { UInt64 } from '../../int.js'; -import { Bool, Field } from '../../core.js'; +import { PublicKey } from '../../provable/crypto/signature.js'; +import type { SmartContract } from '../zkapp.js'; +import { UInt64 } from '../../provable/int.js'; +import { Bool, Field } from '../../provable/wrapped.js'; export { tokenMethods }; diff --git a/src/lib/mina/transaction-context.ts b/src/lib/mina/transaction-context.ts index e152d4eca9..d10a4d7113 100644 --- a/src/lib/mina/transaction-context.ts +++ b/src/lib/mina/transaction-context.ts @@ -1,6 +1,6 @@ -import type { AccountUpdateLayout } from '../account-update.js'; -import type { PublicKey } from '../signature.js'; -import { Context } from '../global-context.js'; +import type { AccountUpdateLayout } from './account-update.js'; +import type { PublicKey } from '../provable/crypto/signature.js'; +import { Context } from '../util/global-context.js'; export { currentTransaction, CurrentTransaction, FetchMode }; diff --git a/src/lib/mina/transaction-logic/apply.ts b/src/lib/mina/transaction-logic/apply.ts index 7a185b95bd..9448444974 100644 --- a/src/lib/mina/transaction-logic/apply.ts +++ b/src/lib/mina/transaction-logic/apply.ts @@ -1,7 +1,7 @@ /** * Apply transactions to a ledger of accounts. */ -import { type AccountUpdate } from '../../account-update.js'; +import { type AccountUpdate } from '../account-update.js'; import { Account } from '../account.js'; export { applyAccountUpdate }; diff --git a/src/lib/mina/transaction-logic/ledger.ts b/src/lib/mina/transaction-logic/ledger.ts index 3951ff2f5f..0ae1ce4dc3 100644 --- a/src/lib/mina/transaction-logic/ledger.ts +++ b/src/lib/mina/transaction-logic/ledger.ts @@ -1,10 +1,10 @@ /** * A ledger of accounts - simple model of a local blockchain. */ -import { PublicKey } from '../../signature.js'; -import type { AccountUpdate } from '../../account-update.js'; +import { PublicKey } from '../../provable/crypto/signature.js'; +import type { AccountUpdate } from '../account-update.js'; import { Account, newAccount } from '../account.js'; -import { Field } from '../../field.js'; +import { Field } from '../../provable/field.js'; import { applyAccountUpdate } from './apply.js'; import { Types } from '../../../bindings/mina-transaction/types.js'; diff --git a/src/lib/mina/transaction-validation.ts b/src/lib/mina/transaction-validation.ts index 10d39c7f82..ddc6a23893 100644 --- a/src/lib/mina/transaction-validation.ts +++ b/src/lib/mina/transaction-validation.ts @@ -8,19 +8,19 @@ import { ZkappPublicInput, AccountUpdate, dummySignature, -} from '../account-update.js'; -import { Field } from '../core.js'; -import { UInt64, UInt32 } from '../int.js'; -import { PublicKey } from '../signature.js'; -import { JsonProof, verify } from '../proof-system.js'; +} from './account-update.js'; +import { Field } from '../provable/wrapped.js'; +import { UInt64, UInt32 } from '../provable/int.js'; +import { PublicKey } from '../provable/crypto/signature.js'; +import { JsonProof, verify } from '../proof-system/zkprogram.js'; import { verifyAccountUpdateSignature } from '../../mina-signer/src/sign-zkapp-command.js'; import { TransactionCost, TransactionLimits } from './constants.js'; -import { cloneCircuitValue } from '../provable-types/struct.js'; -import { assert } from '../gadgets/common.js'; +import { cloneCircuitValue } from '../provable/types/struct.js'; +import { assert } from '../provable/gadgets/common.js'; import { Types, TypesBigint } from '../../bindings/mina-transaction/types.js'; import type { NetworkId } from '../../mina-signer/src/types.js'; import type { Account } from './account.js'; -import type { NetworkValue } from '../precondition.js'; +import type { NetworkValue } from './precondition.js'; export { reportGetAccountError, diff --git a/src/lib/mina/transaction.ts b/src/lib/mina/transaction.ts index 030e15fe99..0a5c2bc6c0 100644 --- a/src/lib/mina/transaction.ts +++ b/src/lib/mina/transaction.ts @@ -7,17 +7,17 @@ import { addMissingSignatures, TokenId, addMissingProofs, -} from '../account-update.js'; -import { Field } from '../core.js'; -import { PrivateKey, PublicKey } from '../signature.js'; -import { UInt32, UInt64 } from '../int.js'; -import { Empty, Proof } from '../proof-system.js'; +} from './account-update.js'; +import { Field } from '../provable/wrapped.js'; +import { PrivateKey, PublicKey } from '../provable/crypto/signature.js'; +import { UInt32, UInt64 } from '../provable/int.js'; +import { Empty, Proof } from '../proof-system/zkprogram.js'; import { currentTransaction } from './transaction-context.js'; -import { Provable } from '../provable.js'; -import { assertPreconditionInvariants } from '../precondition.js'; +import { Provable } from '../provable/provable.js'; +import { assertPreconditionInvariants } from './precondition.js'; import { Account } from './account.js'; import { type FeePayerSpec, activeInstance } from './mina-instance.js'; -import * as Fetch from '../fetch.js'; +import * as Fetch from './fetch.js'; import { type SendZkAppResponse, sendZkappQuery } from './graphql.js'; import { type FetchMode } from './transaction-context.js'; import { assertPromise } from '../util/assert.js'; diff --git a/src/lib/zkapp.ts b/src/lib/mina/zkapp.ts similarity index 98% rename from src/lib/zkapp.ts rename to src/lib/mina/zkapp.ts index bfa7907b68..3a03d83dd5 100644 --- a/src/lib/zkapp.ts +++ b/src/lib/mina/zkapp.ts @@ -1,6 +1,6 @@ import 'reflect-metadata'; -import { Gate, Pickles } from '../snarky.js'; -import { Field, Bool } from './core.js'; +import { Gate, Pickles } from '../../snarky.js'; +import { Field, Bool } from '../provable/wrapped.js'; import { AccountUpdate, Authorization, @@ -8,7 +8,6 @@ import { Events, Permissions, Actions, - SetOrKeep, TokenId, ZkappCommand, zkAppProver, @@ -23,17 +22,21 @@ import { FlexibleProvablePure, InferProvable, provable, -} from './provable-types/struct.js'; -import { Provable, getBlindingValue, memoizationContext } from './provable.js'; -import * as Encoding from '../bindings/lib/encoding.js'; +} from '../provable/types/struct.js'; +import { + Provable, + getBlindingValue, + memoizationContext, +} from '../provable/provable.js'; +import * as Encoding from '../../bindings/lib/encoding.js'; import { HashInput, Poseidon, hashConstant, isHashable, packToFields, -} from './hash.js'; -import { UInt32, UInt64 } from './int.js'; +} from '../provable/crypto/poseidon.js'; +import { UInt32, UInt64 } from '../provable/int.js'; import * as Mina from './mina.js'; import { assertPreconditionInvariants, @@ -50,26 +53,26 @@ import { MethodInterface, Proof, sortMethodArguments, -} from './proof-system.js'; -import { PrivateKey, PublicKey } from './signature.js'; +} from '../proof-system/zkprogram.js'; +import { PublicKey } from '../provable/crypto/signature.js'; import { assertStatePrecondition, cleanStatePrecondition } from './state.js'; import { inAnalyze, inCheckedComputation, inCompile, inProver, -} from './provable-context.js'; -import { Cache } from './proof-system/cache.js'; -import { assert } from './gadgets/common.js'; -import { SmartContractBase } from './mina/smart-contract-base.js'; -import { ZkappStateLength } from './mina/mina-instance.js'; +} from '../provable/core/provable-context.js'; +import { Cache } from '../proof-system/cache.js'; +import { assert } from '../provable/gadgets/common.js'; +import { SmartContractBase } from './smart-contract-base.js'; +import { ZkappStateLength } from './mina-instance.js'; import { SmartContractContext, accountUpdateLayout, smartContractContext, -} from './mina/smart-contract-context.js'; -import { assertPromise } from './util/assert.js'; -import { ProvablePure } from './provable-types/provable-intf.js'; +} from './smart-contract-context.js'; +import { assertPromise } from '../util/assert.js'; +import { ProvablePure } from '../provable/types/provable-intf.js'; // external API export { SmartContract, method, DeployArgs, declareMethods, Account, Reducer }; diff --git a/src/lib/ml/consistency.unit-test.ts b/src/lib/ml/consistency.unit-test.ts index 738884b05f..84a30f691e 100644 --- a/src/lib/ml/consistency.unit-test.ts +++ b/src/lib/ml/consistency.unit-test.ts @@ -1,13 +1,13 @@ import { Test } from '../../snarky.js'; import { Random, test } from '../testing/property.js'; -import { Field, Bool } from '../core.js'; -import { PrivateKey, PublicKey } from '../signature.js'; -import { TokenId, dummySignature } from '../account-update.js'; +import { Field, Bool } from '../provable/wrapped.js'; +import { PrivateKey, PublicKey } from '../provable/crypto/signature.js'; +import { TokenId, dummySignature } from '../mina/account-update.js'; import { Ml } from './conversion.js'; import { expect } from 'expect'; -import { FieldConst } from '../provable-core/fieldvar.js'; -import { Provable } from '../provable.js'; -import { runAndCheckSync } from '../provable-context.js'; +import { FieldConst } from '../provable/core/fieldvar.js'; +import { Provable } from '../provable/provable.js'; +import { runAndCheckSync } from '../provable/core/provable-context.js'; // PrivateKey.toBase58, fromBase58 diff --git a/src/lib/ml/conversion.ts b/src/lib/ml/conversion.ts index f97db2ace8..91b938d105 100644 --- a/src/lib/ml/conversion.ts +++ b/src/lib/ml/conversion.ts @@ -3,11 +3,11 @@ */ import type { MlPublicKey, MlPublicKeyVar } from '../../snarky.js'; -import { HashInput } from '../provable-types/struct.js'; -import { Bool, Field } from '../core.js'; -import { FieldVar, FieldConst } from '../provable-core/fieldvar.js'; -import { Scalar, ScalarConst } from '../scalar.js'; -import { PrivateKey, PublicKey } from '../signature.js'; +import { HashInput } from '../provable/types/struct.js'; +import { Bool, Field } from '../provable/wrapped.js'; +import { FieldVar, FieldConst } from '../provable/core/fieldvar.js'; +import { Scalar, ScalarConst } from '../provable/scalar.js'; +import { PrivateKey, PublicKey } from '../provable/crypto/signature.js'; import { MlPair, MlBool, MlArray } from './base.js'; import { MlFieldConstArray } from './fields.js'; diff --git a/src/lib/ml/fields.ts b/src/lib/ml/fields.ts index 2766e33a8b..b9b70006ab 100644 --- a/src/lib/ml/fields.ts +++ b/src/lib/ml/fields.ts @@ -1,5 +1,5 @@ -import { ConstantField, Field } from '../field.js'; -import { FieldVar, FieldConst } from '../provable-core/fieldvar.js'; +import { ConstantField, Field } from '../provable/field.js'; +import { FieldVar, FieldConst } from '../provable/core/fieldvar.js'; import { MlArray } from './base.js'; export { MlFieldArray, MlFieldConstArray }; diff --git a/src/lib/circuit.ts b/src/lib/proof-system/circuit.ts similarity index 93% rename from src/lib/circuit.ts rename to src/lib/proof-system/circuit.ts index c47d2baf51..320e01b25b 100644 --- a/src/lib/circuit.ts +++ b/src/lib/proof-system/circuit.ts @@ -1,11 +1,17 @@ import 'reflect-metadata'; -import { Snarky } from '../snarky.js'; -import { MlFieldArray, MlFieldConstArray } from './ml/fields.js'; -import { withThreadPool } from '../snarky.js'; -import { Provable } from './provable.js'; -import { snarkContext, gatesFromJson } from './provable-context.js'; -import { prettifyStacktrace, prettifyStacktracePromise } from './errors.js'; -import { ProvablePure } from './provable-types/provable-intf.js'; +import { Snarky } from '../../snarky.js'; +import { MlFieldArray, MlFieldConstArray } from '../ml/fields.js'; +import { withThreadPool } from '../../snarky.js'; +import { Provable } from '../provable/provable.js'; +import { + snarkContext, + gatesFromJson, +} from '../provable/core/provable-context.js'; +import { + prettifyStacktrace, + prettifyStacktracePromise, +} from '../util/errors.js'; +import { ProvablePure } from '../provable/types/provable-intf.js'; // external API export { public_, circuitMain, Circuit, Keypair, Proof, VerificationKey }; diff --git a/src/lib/proof-system.unit-test.ts b/src/lib/proof-system/proof-system.unit-test.ts similarity index 85% rename from src/lib/proof-system.unit-test.ts rename to src/lib/proof-system/proof-system.unit-test.ts index d8882adc00..b2e7501f94 100644 --- a/src/lib/proof-system.unit-test.ts +++ b/src/lib/proof-system/proof-system.unit-test.ts @@ -1,6 +1,6 @@ -import { Field, Bool } from './core.js'; -import { Struct } from './provable-types/struct.js'; -import { UInt64 } from './int.js'; +import { Field, Bool } from '../provable/wrapped.js'; +import { Struct } from '../provable/types/struct.js'; +import { UInt64 } from '../provable/int.js'; import { CompiledTag, Empty, @@ -8,16 +8,16 @@ import { ZkProgram, picklesRuleFromFunction, sortMethodArguments, -} from './proof-system.js'; +} from './zkprogram.js'; import { expect } from 'expect'; -import { Pickles, Snarky } from '../snarky.js'; -import { AnyFunction } from './util/types.js'; -import { snarkContext } from './provable-context.js'; +import { Pickles, Snarky } from '../../snarky.js'; +import { AnyFunction } from '../util/types.js'; +import { snarkContext } from '../provable/core/provable-context.js'; import { it } from 'node:test'; -import { Provable } from './provable.js'; -import { bool, equivalentAsync, field, record } from './testing/equivalent.js'; -import { FieldVar, FieldConst } from './provable-core/fieldvar.js'; -import { ProvablePure } from './provable-types/provable-intf.js'; +import { Provable } from '../provable/provable.js'; +import { bool, equivalentAsync, field, record } from '../testing/equivalent.js'; +import { FieldVar, FieldConst } from '../provable/core/fieldvar.js'; +import { ProvablePure } from '../provable/types/provable-intf.js'; const EmptyProgram = ZkProgram({ name: 'empty', diff --git a/src/lib/proof-system/prover-keys.ts b/src/lib/proof-system/prover-keys.ts index 484a84aac2..7793532eb1 100644 --- a/src/lib/proof-system/prover-keys.ts +++ b/src/lib/proof-system/prover-keys.ts @@ -14,7 +14,7 @@ import { VerifierIndex } from '../../bindings/crypto/bindings/kimchi-types.js'; import { getRustConversion } from '../../bindings/crypto/bindings.js'; import { MlString } from '../ml/base.js'; import { CacheHeader, cacheHeaderVersion } from './cache.js'; -import type { MethodInterface } from '../proof-system.js'; +import type { MethodInterface } from './zkprogram.js'; export { parseHeader, diff --git a/src/lib/proof-system.ts b/src/lib/proof-system/zkprogram.ts similarity index 97% rename from src/lib/proof-system.ts rename to src/lib/proof-system/zkprogram.ts index 2df2431edf..246d3573cd 100644 --- a/src/lib/proof-system.ts +++ b/src/lib/proof-system/zkprogram.ts @@ -2,16 +2,16 @@ import { EmptyNull, EmptyUndefined, EmptyVoid, -} from '../bindings/lib/generic.js'; -import { withThreadPool } from '../snarky.js'; +} from '../../bindings/lib/generic.js'; +import { withThreadPool } from '../../snarky.js'; import { Pickles, FeatureFlags, MlFeatureFlags, Gate, GateType, -} from '../snarky.js'; -import { Field, Bool } from './core.js'; +} from '../../snarky.js'; +import { Field, Bool } from '../provable/wrapped.js'; import { FlexibleProvable, FlexibleProvablePure, @@ -20,22 +20,25 @@ import { Struct, provable, provablePure, -} from './provable-types/struct.js'; -import { Provable } from './provable.js'; -import { assert, prettifyStacktracePromise } from './errors.js'; -import { snarkContext } from './provable-context.js'; -import { hashConstant } from './hash.js'; -import { MlArray, MlBool, MlResult, MlPair } from './ml/base.js'; -import { MlFieldArray, MlFieldConstArray } from './ml/fields.js'; -import { FieldVar, FieldConst } from './provable-core/fieldvar.js'; -import { Cache, readCache, writeCache } from './proof-system/cache.js'; +} from '../provable/types/struct.js'; +import { Provable } from '../provable/provable.js'; +import { assert, prettifyStacktracePromise } from '../util/errors.js'; +import { snarkContext } from '../provable/core/provable-context.js'; +import { hashConstant } from '../provable/crypto/poseidon.js'; +import { MlArray, MlBool, MlResult, MlPair } from '../ml/base.js'; +import { MlFieldArray, MlFieldConstArray } from '../ml/fields.js'; +import { FieldVar, FieldConst } from '../provable/core/fieldvar.js'; +import { Cache, readCache, writeCache } from './cache.js'; import { decodeProverKey, encodeProverKey, parseHeader, -} from './proof-system/prover-keys.js'; -import { setSrsCache, unsetSrsCache } from '../bindings/crypto/bindings/srs.js'; -import { ProvablePure } from './provable-types/provable-intf.js'; +} from './prover-keys.js'; +import { + setSrsCache, + unsetSrsCache, +} from '../../bindings/crypto/bindings/srs.js'; +import { ProvablePure } from '../provable/types/provable-intf.js'; // public API export { diff --git a/src/lib/bool.ts b/src/lib/provable/bool.ts similarity index 95% rename from src/lib/bool.ts rename to src/lib/provable/bool.ts index 164d1e4c32..8e6c7b4f9f 100644 --- a/src/lib/bool.ts +++ b/src/lib/provable/bool.ts @@ -1,12 +1,12 @@ -import { Snarky } from '../snarky.js'; +import { Snarky } from '../../snarky.js'; import { Field, readVarMessage, withMessage } from './field.js'; -import { FieldVar, FieldConst, FieldType } from './provable-core/fieldvar.js'; -import { defineBinable } from '../bindings/lib/binable.js'; -import { NonNegativeInteger } from '../bindings/crypto/non-negative.js'; -import { asProver } from './provable-context.js'; -import { existsOne } from './provable-core/exists.js'; +import { FieldVar, FieldConst, FieldType } from './core/fieldvar.js'; +import { defineBinable } from '../../bindings/lib/binable.js'; +import { NonNegativeInteger } from '../../bindings/crypto/non-negative.js'; +import { asProver } from './core/provable-context.js'; +import { existsOne } from './core/exists.js'; import { assertMul } from './gadgets/compatible.js'; -import { setBoolConstructor } from './provable-core/field-constructor.js'; +import { setBoolConstructor } from './core/field-constructor.js'; export { BoolVar, Bool }; diff --git a/src/lib/provable-types/bytes.ts b/src/lib/provable/bytes.ts similarity index 92% rename from src/lib/provable-types/bytes.ts rename to src/lib/provable/bytes.ts index 078d936890..e83b09fba0 100644 --- a/src/lib/provable-types/bytes.ts +++ b/src/lib/provable/bytes.ts @@ -1,9 +1,9 @@ -import { provableFromClass } from './provable-derivers.js'; -import type { ProvablePureExtended } from './struct.js'; -import { assert } from '../gadgets/common.js'; +import { provableFromClass } from './types/provable-derivers.js'; +import type { ProvablePureExtended } from './types/struct.js'; +import { assert } from './gadgets/common.js'; import { chunkString } from '../util/arrays.js'; -import { Provable } from '../provable.js'; -import { UInt8 } from '../int.js'; +import { Provable } from './provable.js'; +import { UInt8 } from './int.js'; import { randomBytes } from '../../bindings/crypto/random.js'; // external API diff --git a/src/lib/provable-core/exists.ts b/src/lib/provable/core/exists.ts similarity index 93% rename from src/lib/provable-core/exists.ts rename to src/lib/provable/core/exists.ts index 30ae28bbe5..f4f0a2fac2 100644 --- a/src/lib/provable-core/exists.ts +++ b/src/lib/provable/core/exists.ts @@ -1,9 +1,9 @@ -import { Snarky } from '../../snarky.js'; -import { FieldConst, VarFieldVar } from '../provable-core/fieldvar.js'; +import { Snarky } from '../../../snarky.js'; +import { FieldConst, VarFieldVar } from './fieldvar.js'; import type { VarField } from '../field.js'; -import { MlArray, MlOption } from '../ml/base.js'; +import { MlArray, MlOption } from '../../ml/base.js'; import { createField } from './field-constructor.js'; -import { TupleN } from '../util/types.js'; +import { TupleN } from '../../util/types.js'; export { createVarField, exists, existsAsync, existsOne }; diff --git a/src/lib/provable-core/field-constructor.ts b/src/lib/provable/core/field-constructor.ts similarity index 100% rename from src/lib/provable-core/field-constructor.ts rename to src/lib/provable/core/field-constructor.ts diff --git a/src/lib/provable-core/fieldvar.ts b/src/lib/provable/core/fieldvar.ts similarity index 98% rename from src/lib/provable-core/fieldvar.ts rename to src/lib/provable/core/fieldvar.ts index 363e2dc5d1..a65f4d93eb 100644 --- a/src/lib/provable-core/fieldvar.ts +++ b/src/lib/provable/core/fieldvar.ts @@ -1,4 +1,4 @@ -import { Fp } from '../../bindings/crypto/finite-field.js'; +import { Fp } from '../../../bindings/crypto/finite-field.js'; // internal API export { FieldType, FieldVar, FieldConst, ConstantFieldVar, VarFieldVar }; diff --git a/src/lib/provable-context.ts b/src/lib/provable/core/provable-context.ts similarity index 93% rename from src/lib/provable-context.ts rename to src/lib/provable/core/provable-context.ts index fa0286b24a..141d5302db 100644 --- a/src/lib/provable-context.ts +++ b/src/lib/provable/core/provable-context.ts @@ -1,9 +1,9 @@ -import { Context } from './global-context.js'; -import { Gate, GateType, JsonGate, Snarky } from '../snarky.js'; -import { parseHexString32 } from '../bindings/crypto/bigint-helpers.js'; -import { prettifyStacktrace } from './errors.js'; -import { Fp } from '../bindings/crypto/finite-field.js'; -import { MlBool } from './ml/base.js'; +import { Context } from '../../util/global-context.js'; +import { Gate, GateType, JsonGate, Snarky } from '../../../snarky.js'; +import { parseHexString32 } from '../../../bindings/crypto/bigint-helpers.js'; +import { prettifyStacktrace } from '../../util/errors.js'; +import { Fp } from '../../../bindings/crypto/finite-field.js'; +import { MlBool } from '../../ml/base.js'; // internal API export { diff --git a/src/lib/crypto.ts b/src/lib/provable/crypto/crypto.ts similarity index 79% rename from src/lib/crypto.ts rename to src/lib/provable/crypto/crypto.ts index c58a220277..8a16637195 100644 --- a/src/lib/crypto.ts +++ b/src/lib/provable/crypto/crypto.ts @@ -1,8 +1,8 @@ -import { CurveParams as CurveParams_ } from '../bindings/crypto/elliptic-curve-examples.js'; +import { CurveParams as CurveParams_ } from '../../../bindings/crypto/elliptic-curve-examples.js'; import { CurveAffine, createCurveAffine, -} from '../bindings/crypto/elliptic-curve.js'; +} from '../../../bindings/crypto/elliptic-curve.js'; // crypto namespace const Crypto = { diff --git a/src/lib/encryption.ts b/src/lib/provable/crypto/encryption.ts similarity index 93% rename from src/lib/encryption.ts rename to src/lib/provable/crypto/encryption.ts index 900db46281..8c025886ab 100644 --- a/src/lib/encryption.ts +++ b/src/lib/provable/crypto/encryption.ts @@ -1,6 +1,6 @@ -import { Field, Scalar, Group } from './core.js'; -import { Poseidon } from './hash.js'; -import { Provable } from './provable.js'; +import { Field, Scalar, Group } from '../wrapped.js'; +import { Poseidon } from './poseidon.js'; +import { Provable } from '../provable.js'; import { PrivateKey, PublicKey } from './signature.js'; export { encrypt, decrypt }; diff --git a/src/lib/foreign-curve.ts b/src/lib/provable/crypto/foreign-curve.ts similarity index 94% rename from src/lib/foreign-curve.ts rename to src/lib/provable/crypto/foreign-curve.ts index cfaf5756f3..a47976bba1 100644 --- a/src/lib/foreign-curve.ts +++ b/src/lib/provable/crypto/foreign-curve.ts @@ -2,15 +2,15 @@ import { CurveParams, CurveAffine, createCurveAffine, -} from '../bindings/crypto/elliptic-curve.js'; -import type { Group } from './group.js'; -import { ProvablePureExtended } from './provable-types/struct.js'; -import { AlmostForeignField, createForeignField } from './foreign-field.js'; -import { EllipticCurve, Point } from './gadgets/elliptic-curve.js'; -import { Field3 } from './gadgets/foreign-field.js'; -import { assert } from './gadgets/common.js'; -import { Provable } from './provable.js'; -import { provableFromClass } from './provable-types/provable-derivers.js'; +} from '../../../bindings/crypto/elliptic-curve.js'; +import type { Group } from '../group.js'; +import { ProvablePureExtended } from '../types/struct.js'; +import { AlmostForeignField, createForeignField } from '../foreign-field.js'; +import { EllipticCurve, Point } from '../gadgets/elliptic-curve.js'; +import { Field3 } from '../gadgets/foreign-field.js'; +import { assert } from '../gadgets/common.js'; +import { Provable } from '../provable.js'; +import { provableFromClass } from '../types/provable-derivers.js'; // external API export { createForeignCurve, ForeignCurve }; diff --git a/src/lib/foreign-ecdsa.ts b/src/lib/provable/crypto/foreign-ecdsa.ts similarity index 93% rename from src/lib/foreign-ecdsa.ts rename to src/lib/provable/crypto/foreign-ecdsa.ts index 6c829daac9..b601928b93 100644 --- a/src/lib/foreign-ecdsa.ts +++ b/src/lib/provable/crypto/foreign-ecdsa.ts @@ -1,20 +1,20 @@ -import { provableFromClass } from './provable-types/provable-derivers.js'; -import { CurveParams } from '../bindings/crypto/elliptic-curve.js'; -import { ProvablePureExtended } from './provable-types/struct.js'; +import { provableFromClass } from '../types/provable-derivers.js'; +import { CurveParams } from '../../../bindings/crypto/elliptic-curve.js'; +import { ProvablePureExtended } from '../types/struct.js'; import { FlexiblePoint, ForeignCurve, createForeignCurve, toPoint, } from './foreign-curve.js'; -import { AlmostForeignField } from './foreign-field.js'; -import { assert } from './gadgets/common.js'; -import { Field3 } from './gadgets/foreign-field.js'; -import { Ecdsa } from './gadgets/elliptic-curve.js'; -import { l } from './gadgets/range-check.js'; +import { AlmostForeignField } from '../foreign-field.js'; +import { assert } from '../gadgets/common.js'; +import { Field3 } from '../gadgets/foreign-field.js'; +import { Ecdsa } from '../gadgets/elliptic-curve.js'; +import { l } from '../gadgets/range-check.js'; import { Keccak } from './keccak.js'; -import { Bytes } from './provable-types/provable-types.js'; -import { UInt8 } from './int.js'; +import { Bytes } from '../wrapped-classes.js'; +import { UInt8 } from '../int.js'; // external API export { createEcdsa, EcdsaSignature }; diff --git a/src/lib/hash-generic.ts b/src/lib/provable/crypto/hash-generic.ts similarity index 83% rename from src/lib/hash-generic.ts rename to src/lib/provable/crypto/hash-generic.ts index 7e76c8ceee..7ea9bdd353 100644 --- a/src/lib/hash-generic.ts +++ b/src/lib/provable/crypto/hash-generic.ts @@ -1,5 +1,5 @@ -import { GenericSignableField } from '../bindings/lib/generic.js'; -import { prefixToField } from '../bindings/lib/binable.js'; +import { GenericSignableField } from '../../../bindings/lib/generic.js'; +import { prefixToField } from '../../../bindings/lib/binable.js'; export { createHashHelpers, HashHelpers }; diff --git a/src/lib/hashes-combined.ts b/src/lib/provable/crypto/hash.ts similarity index 96% rename from src/lib/hashes-combined.ts rename to src/lib/provable/crypto/hash.ts index edd64f8355..3c7edaf813 100644 --- a/src/lib/hashes-combined.ts +++ b/src/lib/provable/crypto/hash.ts @@ -1,7 +1,7 @@ -import { Gadgets } from './gadgets/gadgets.js'; -import { Poseidon } from './hash.js'; +import { Gadgets } from '../gadgets/gadgets.js'; +import { Poseidon } from './poseidon.js'; import { Keccak } from './keccak.js'; -import { Bytes } from './provable-types/provable-types.js'; +import { Bytes } from '../wrapped-classes.js'; export { Hash }; diff --git a/src/lib/keccak.ts b/src/lib/provable/crypto/keccak.ts similarity index 98% rename from src/lib/keccak.ts rename to src/lib/provable/crypto/keccak.ts index 1d1f0e40a9..23c95f8a2f 100644 --- a/src/lib/keccak.ts +++ b/src/lib/provable/crypto/keccak.ts @@ -1,10 +1,10 @@ -import { Field } from './field.js'; -import { Gadgets } from './gadgets/gadgets.js'; -import { assert } from './errors.js'; -import { FlexibleBytes } from './provable-types/bytes.js'; -import { UInt8 } from './int.js'; -import { Bytes } from './provable-types/provable-types.js'; -import { bytesToWords, wordsToBytes } from './gadgets/bit-slices.js'; +import { Field } from '../field.js'; +import { Gadgets } from '../gadgets/gadgets.js'; +import { assert } from '../../util/errors.js'; +import { FlexibleBytes } from '../bytes.js'; +import { UInt8 } from '../int.js'; +import { Bytes } from '../wrapped-classes.js'; +import { bytesToWords, wordsToBytes } from '../gadgets/bit-slices.js'; export { Keccak }; diff --git a/src/lib/nullifier.ts b/src/lib/provable/crypto/nullifier.ts similarity index 95% rename from src/lib/nullifier.ts rename to src/lib/provable/crypto/nullifier.ts index d8a217f030..f0ce72a65b 100644 --- a/src/lib/nullifier.ts +++ b/src/lib/provable/crypto/nullifier.ts @@ -1,10 +1,10 @@ -import type { Nullifier as JsonNullifier } from '../mina-signer/src/types.js'; -import { Struct } from './provable-types/struct.js'; -import { Field, Group, Scalar } from './core.js'; -import { Poseidon } from './hash.js'; -import { MerkleMapWitness } from './provable-types/merkle-map.js'; +import type { Nullifier as JsonNullifier } from '../../../mina-signer/src/types.js'; +import { Struct } from '../types/struct.js'; +import { Field, Group, Scalar } from '../wrapped.js'; +import { Poseidon } from './poseidon.js'; +import { MerkleMapWitness } from '../merkle-map.js'; import { PrivateKey, PublicKey, scaleShifted } from './signature.js'; -import { Provable } from './provable.js'; +import { Provable } from '../provable.js'; export { Nullifier }; diff --git a/src/lib/hash.ts b/src/lib/provable/crypto/poseidon.ts similarity index 92% rename from src/lib/hash.ts rename to src/lib/provable/crypto/poseidon.ts index cf2c068a5f..33be685443 100644 --- a/src/lib/hash.ts +++ b/src/lib/provable/crypto/poseidon.ts @@ -1,17 +1,13 @@ -import { - HashInput, - ProvableExtended, - Struct, -} from './provable-types/struct.js'; -import { Snarky } from '../snarky.js'; -import { Field } from './core.js'; +import { HashInput, ProvableExtended, Struct } from '../types/struct.js'; +import { Snarky } from '../../../snarky.js'; +import { Field } from '../wrapped.js'; import { createHashHelpers } from './hash-generic.js'; -import { Provable } from './provable.js'; -import { MlFieldArray } from './ml/fields.js'; -import { Poseidon as PoseidonBigint } from '../bindings/crypto/poseidon.js'; -import { assert } from './errors.js'; -import { rangeCheckN } from './gadgets/range-check.js'; -import { TupleN } from './util/types.js'; +import { Provable } from '../provable.js'; +import { MlFieldArray } from '../../ml/fields.js'; +import { Poseidon as PoseidonBigint } from '../../../bindings/crypto/poseidon.js'; +import { assert } from '../../util/errors.js'; +import { rangeCheckN } from '../gadgets/range-check.js'; +import { TupleN } from '../../util/types.js'; // external API export { Poseidon, TokenSymbol }; diff --git a/src/lib/signature.ts b/src/lib/provable/crypto/signature.ts similarity index 95% rename from src/lib/signature.ts rename to src/lib/provable/crypto/signature.ts index 0462ce7820..5dd1f5929d 100644 --- a/src/lib/signature.ts +++ b/src/lib/provable/crypto/signature.ts @@ -1,19 +1,19 @@ -import { Field, Bool, Group, Scalar } from './core.js'; -import { AnyConstructor } from './provable-types/struct.js'; -import { hashWithPrefix } from './hash.js'; -import { Fq } from '../bindings/crypto/finite-field.js'; +import { Field, Bool, Group, Scalar } from '../wrapped.js'; +import { AnyConstructor } from '../types/struct.js'; +import { hashWithPrefix } from './poseidon.js'; +import { Fq } from '../../../bindings/crypto/finite-field.js'; import { deriveNonce, Signature as SignatureBigint, signaturePrefix, -} from '../mina-signer/src/signature.js'; +} from '../../../mina-signer/src/signature.js'; import { PrivateKey as PrivateKeyBigint, PublicKey as PublicKeyBigint, -} from '../mina-signer/src/curve-bigint.js'; -import { constantScalarToBigint } from './scalar.js'; -import { toConstantField } from './field.js'; -import { CircuitValue, prop } from './provable-types/circuit-value.js'; +} from '../../../mina-signer/src/curve-bigint.js'; +import { constantScalarToBigint } from '../scalar.js'; +import { toConstantField } from '../field.js'; +import { CircuitValue, prop } from '../types/circuit-value.js'; // external API export { PrivateKey, PublicKey, Signature }; diff --git a/src/lib/field.ts b/src/lib/provable/field.ts similarity index 98% rename from src/lib/field.ts rename to src/lib/provable/field.ts index 5f832e269f..836386b83b 100644 --- a/src/lib/field.ts +++ b/src/lib/provable/field.ts @@ -1,11 +1,11 @@ -import { Snarky } from '../snarky.js'; -import { Fp } from '../bindings/crypto/finite-field.js'; -import { BinableFp, SignableFp } from '../mina-signer/src/field-bigint.js'; -import { defineBinable } from '../bindings/lib/binable.js'; -import type { NonNegativeInteger } from '../bindings/crypto/non-negative.js'; -import { asProver, inCheckedComputation } from './provable-context.js'; +import { Snarky } from '../../snarky.js'; +import { Fp } from '../../bindings/crypto/finite-field.js'; +import { BinableFp, SignableFp } from '../../mina-signer/src/field-bigint.js'; +import { defineBinable } from '../../bindings/lib/binable.js'; +import type { NonNegativeInteger } from '../../bindings/crypto/non-negative.js'; +import { asProver, inCheckedComputation } from './core/provable-context.js'; import { Bool } from './bool.js'; -import { assert } from './errors.js'; +import { assert } from '../util/errors.js'; import { Provable } from './provable.js'; import { assertEqual, @@ -20,9 +20,9 @@ import { FieldConst, VarFieldVar, ConstantFieldVar, -} from './provable-core/fieldvar.js'; -import { exists, existsOne } from './provable-core/exists.js'; -import { setFieldConstructor } from './provable-core/field-constructor.js'; +} from './core/fieldvar.js'; +import { exists, existsOne } from './core/exists.js'; +import { setFieldConstructor } from './core/field-constructor.js'; // external API export { Field }; diff --git a/src/lib/foreign-field.ts b/src/lib/provable/foreign-field.ts similarity index 99% rename from src/lib/foreign-field.ts rename to src/lib/provable/foreign-field.ts index b6d83f3ccf..e9f658682b 100644 --- a/src/lib/foreign-field.ts +++ b/src/lib/provable/foreign-field.ts @@ -3,17 +3,17 @@ import { Fp, FiniteField, createField, -} from '../bindings/crypto/finite-field.js'; +} from '../../bindings/crypto/finite-field.js'; import { Field, checkBitLength, withMessage } from './field.js'; import { Provable } from './provable.js'; import { Bool } from './bool.js'; -import { Tuple, TupleMap, TupleN } from './util/types.js'; +import { Tuple, TupleMap, TupleN } from '../util/types.js'; import { Field3 } from './gadgets/foreign-field.js'; import { Gadgets } from './gadgets/gadgets.js'; import { ForeignField as FF } from './gadgets/foreign-field.js'; import { assert } from './gadgets/common.js'; import { l3, l } from './gadgets/range-check.js'; -import { ProvablePureExtended } from './provable-types/struct.js'; +import { ProvablePureExtended } from './types/struct.js'; // external API export { createForeignField }; diff --git a/src/lib/gadgets/arithmetic.ts b/src/lib/provable/gadgets/arithmetic.ts similarity index 88% rename from src/lib/gadgets/arithmetic.ts rename to src/lib/provable/gadgets/arithmetic.ts index 09b7278815..c5d1bc75f3 100644 --- a/src/lib/gadgets/arithmetic.ts +++ b/src/lib/provable/gadgets/arithmetic.ts @@ -1,6 +1,6 @@ -import { provableTuple } from '../provable-types/struct.js'; -import { Field } from '../core.js'; -import { assert } from '../errors.js'; +import { provableTuple } from '../types/struct.js'; +import { Field } from '../wrapped.js'; +import { assert } from '../../util/errors.js'; import { Provable } from '../provable.js'; import { rangeCheck32, rangeCheckN } from './range-check.js'; diff --git a/src/lib/gadgets/basic.ts b/src/lib/provable/gadgets/basic.ts similarity index 97% rename from src/lib/gadgets/basic.ts rename to src/lib/provable/gadgets/basic.ts index 8e9945dd9f..31f2f1aac4 100644 --- a/src/lib/gadgets/basic.ts +++ b/src/lib/provable/gadgets/basic.ts @@ -1,18 +1,18 @@ /** * Basic gadgets that only use generic gates */ -import { Fp } from '../../bindings/crypto/finite-field.js'; +import { Fp } from '../../../bindings/crypto/finite-field.js'; import { Field, VarField } from '../field.js'; import { FieldType, FieldVar, FieldConst, VarFieldVar, -} from '../provable-core/fieldvar.js'; +} from '../core/fieldvar.js'; import { toVar } from './common.js'; import { Gates, fieldVar } from '../gates.js'; -import { TupleN } from '../util/types.js'; -import { existsOne } from '../provable-core/exists.js'; +import { TupleN } from '../../util/types.js'; +import { existsOne } from '../core/exists.js'; export { assertMul, arrayGet, assertOneOf }; diff --git a/src/lib/gadgets/bit-slices.ts b/src/lib/provable/gadgets/bit-slices.ts similarity index 96% rename from src/lib/gadgets/bit-slices.ts rename to src/lib/provable/gadgets/bit-slices.ts index 4d359ad92b..68d132b51a 100644 --- a/src/lib/gadgets/bit-slices.ts +++ b/src/lib/provable/gadgets/bit-slices.ts @@ -1,12 +1,12 @@ /** * Gadgets for converting between field elements and bit slices of various lengths */ -import { bigIntToBits } from '../../bindings/crypto/bigint-helpers.js'; +import { bigIntToBits } from '../../../bindings/crypto/bigint-helpers.js'; import { Field } from '../field.js'; import { UInt8 } from '../int.js'; -import { exists } from '../provable-core/exists.js'; +import { exists } from '../core/exists.js'; import { Provable } from '../provable.js'; -import { chunk } from '../util/arrays.js'; +import { chunk } from '../../util/arrays.js'; import { assert } from './common.js'; import type { Field3 } from './foreign-field.js'; import { l } from './range-check.js'; diff --git a/src/lib/gadgets/bitwise.ts b/src/lib/provable/gadgets/bitwise.ts similarity index 98% rename from src/lib/gadgets/bitwise.ts rename to src/lib/provable/gadgets/bitwise.ts index c1bfab2b6e..b711f8dd16 100644 --- a/src/lib/gadgets/bitwise.ts +++ b/src/lib/provable/gadgets/bitwise.ts @@ -1,11 +1,11 @@ import { Provable } from '../provable.js'; -import { Fp } from '../../bindings/crypto/finite-field.js'; +import { Fp } from '../../../bindings/crypto/finite-field.js'; import { Field } from '../field.js'; import { Gates } from '../gates.js'; import { assert, divideWithRemainder, toVar, bitSlice } from './common.js'; import { rangeCheck32, rangeCheck64 } from './range-check.js'; import { divMod32 } from './arithmetic.js'; -import { exists } from '../provable-core/exists.js'; +import { exists } from '../../provable/core/exists.js'; export { xor, diff --git a/src/lib/gadgets/common.ts b/src/lib/provable/gadgets/common.ts similarity index 91% rename from src/lib/gadgets/common.ts rename to src/lib/provable/gadgets/common.ts index bbfae9cf47..1fbd9c53f4 100644 --- a/src/lib/gadgets/common.ts +++ b/src/lib/provable/gadgets/common.ts @@ -1,9 +1,9 @@ import { Field, VarField } from '../field.js'; -import { FieldVar, VarFieldVar } from '../provable-core/fieldvar.js'; -import { Tuple } from '../util/types.js'; +import { FieldVar, VarFieldVar } from '../core/fieldvar.js'; +import { Tuple } from '../../util/types.js'; import type { Bool } from '../bool.js'; import { fieldVar } from '../gates.js'; -import { existsOne } from '../provable-core/exists.js'; +import { existsOne } from '../core/exists.js'; export { toVars, toVar, isVar, assert, bitSlice, divideWithRemainder }; diff --git a/src/lib/gadgets/compatible.ts b/src/lib/provable/gadgets/compatible.ts similarity index 97% rename from src/lib/gadgets/compatible.ts rename to src/lib/provable/gadgets/compatible.ts index 7c12c21d18..a10382497e 100644 --- a/src/lib/gadgets/compatible.ts +++ b/src/lib/provable/gadgets/compatible.ts @@ -2,13 +2,13 @@ * Basic gadgets that only use generic gates, and are compatible with (create the same constraints as) * `plonk_constraint_system.ml` / R1CS_constraint_system. */ -import { Fp } from '../../bindings/crypto/finite-field.js'; +import { Fp } from '../../../bindings/crypto/finite-field.js'; import { Field } from '../field.js'; -import { FieldVar } from '../provable-core/fieldvar.js'; +import { FieldVar } from '../core/fieldvar.js'; import { assert } from './common.js'; import { Gates } from '../gates.js'; import { ScaledVar, emptyCell, reduceToScaledVar } from './basic.js'; -import { Snarky } from '../../snarky.js'; +import { Snarky } from '../../../snarky.js'; export { assertMulCompatible as assertMul, diff --git a/src/lib/gadgets/elliptic-curve.ts b/src/lib/provable/gadgets/elliptic-curve.ts similarity index 98% rename from src/lib/gadgets/elliptic-curve.ts rename to src/lib/provable/gadgets/elliptic-curve.ts index a1cb212671..b4f2dd4666 100644 --- a/src/lib/gadgets/elliptic-curve.ts +++ b/src/lib/provable/gadgets/elliptic-curve.ts @@ -1,4 +1,4 @@ -import { inverse, mod } from '../../bindings/crypto/finite-field.js'; +import { inverse, mod } from '../../../bindings/crypto/finite-field.js'; import { Field } from '../field.js'; import { Provable } from '../provable.js'; import { assert } from './common.js'; @@ -8,19 +8,19 @@ import { sha256 } from 'js-sha256'; import { bigIntToBytes, bytesToBigInt, -} from '../../bindings/crypto/bigint-helpers.js'; +} from '../../../bindings/crypto/bigint-helpers.js'; import { CurveAffine, affineAdd, affineDouble, -} from '../../bindings/crypto/elliptic-curve.js'; +} from '../../../bindings/crypto/elliptic-curve.js'; import { Bool } from '../bool.js'; -import { provable } from '../provable-types/struct.js'; -import { assertPositiveInteger } from '../../bindings/crypto/non-negative.js'; +import { provable } from '../types/struct.js'; +import { assertPositiveInteger } from '../../../bindings/crypto/non-negative.js'; import { arrayGet } from './basic.js'; import { sliceField3 } from './bit-slices.js'; -import { Hashed } from '../provable-types/packed.js'; -import { exists } from '../provable-core/exists.js'; +import { Hashed } from '../packed.js'; +import { exists } from '../core/exists.js'; // external API export { EllipticCurve, Point, Ecdsa }; diff --git a/src/lib/gadgets/foreign-field.ts b/src/lib/provable/gadgets/foreign-field.ts similarity index 98% rename from src/lib/gadgets/foreign-field.ts rename to src/lib/provable/gadgets/foreign-field.ts index 4299dbcc38..71744eb4b3 100644 --- a/src/lib/gadgets/foreign-field.ts +++ b/src/lib/provable/gadgets/foreign-field.ts @@ -4,15 +4,15 @@ import { inverse as modInverse, mod, -} from '../../bindings/crypto/finite-field.js'; -import { provableTuple } from '../provable-types/provable-derivers.js'; +} from '../../../bindings/crypto/finite-field.js'; +import { provableTuple } from '../types/provable-derivers.js'; import { Bool } from '../bool.js'; -import { Unconstrained } from '../provable-types/unconstrained.js'; +import { Unconstrained } from '../types/unconstrained.js'; import { Field } from '../field.js'; import { Gates, foreignFieldAdd } from '../gates.js'; -import { exists } from '../provable-core/exists.js'; -import { modifiedField } from '../provable-types/fields.js'; -import { Tuple, TupleN } from '../util/types.js'; +import { exists } from '../core/exists.js'; +import { modifiedField } from '../types/fields.js'; +import { Tuple, TupleN } from '../../util/types.js'; import { assertOneOf } from './basic.js'; import { assert, bitSlice, toVar, toVars } from './common.js'; import { diff --git a/src/lib/gadgets/gadgets.ts b/src/lib/provable/gadgets/gadgets.ts similarity index 99% rename from src/lib/gadgets/gadgets.ts rename to src/lib/provable/gadgets/gadgets.ts index 4da3b4d68f..fa56fb47e9 100644 --- a/src/lib/gadgets/gadgets.ts +++ b/src/lib/provable/gadgets/gadgets.ts @@ -21,7 +21,7 @@ import { rightShift64, leftShift32, } from './bitwise.js'; -import { Field } from '../core.js'; +import { Field } from '../wrapped.js'; import { ForeignField, Field3, diff --git a/src/lib/gadgets/range-check.ts b/src/lib/provable/gadgets/range-check.ts similarity index 97% rename from src/lib/gadgets/range-check.ts rename to src/lib/provable/gadgets/range-check.ts index b47a406f58..860b8628cf 100644 --- a/src/lib/gadgets/range-check.ts +++ b/src/lib/provable/gadgets/range-check.ts @@ -1,11 +1,11 @@ -import { Snarky } from '../../snarky.js'; -import { Fp } from '../../bindings/crypto/finite-field.js'; -import { BinableFp } from '../../mina-signer/src/field-bigint.js'; +import { Snarky } from '../../../snarky.js'; +import { Fp } from '../../../bindings/crypto/finite-field.js'; +import { BinableFp } from '../../../mina-signer/src/field-bigint.js'; import { Field } from '../field.js'; import { Gates } from '../gates.js'; import { assert, bitSlice, toVar, toVars } from './common.js'; import { Bool } from '../bool.js'; -import { exists } from '../provable-core/exists.js'; +import { exists } from '../core/exists.js'; export { rangeCheck64, diff --git a/src/lib/gadgets/sha256.ts b/src/lib/provable/gadgets/sha256.ts similarity index 96% rename from src/lib/gadgets/sha256.ts rename to src/lib/provable/gadgets/sha256.ts index 7b65172052..38a5c82b14 100644 --- a/src/lib/gadgets/sha256.ts +++ b/src/lib/provable/gadgets/sha256.ts @@ -1,12 +1,12 @@ // https://csrc.nist.gov/pubs/fips/180-4/upd1/final -import { mod } from '../../bindings/crypto/finite-field.js'; -import { Field } from '../core.js'; +import { mod } from '../../../bindings/crypto/finite-field.js'; +import { Field } from '../wrapped.js'; import { UInt32, UInt8 } from '../int.js'; -import { exists } from '../provable-core/exists.js'; -import { FlexibleBytes } from '../provable-types/bytes.js'; -import { Bytes } from '../provable-types/provable-types.js'; -import { chunk } from '../util/arrays.js'; -import { TupleN } from '../util/types.js'; +import { exists } from '../core/exists.js'; +import { FlexibleBytes } from '../bytes.js'; +import { Bytes } from '../wrapped-classes.js'; +import { chunk } from '../../util/arrays.js'; +import { TupleN } from '../../util/types.js'; import { divMod32 } from './arithmetic.js'; import { bytesToWord, wordToBytes } from './bit-slices.js'; import { bitSlice } from './common.js'; diff --git a/src/lib/gates.ts b/src/lib/provable/gates.ts similarity index 95% rename from src/lib/gates.ts rename to src/lib/provable/gates.ts index 6389273224..ed25ea1bf5 100644 --- a/src/lib/gates.ts +++ b/src/lib/provable/gates.ts @@ -1,9 +1,9 @@ -import { Snarky } from '../snarky.js'; +import { Snarky } from '../../snarky.js'; import type { Field } from './field.js'; -import { FieldVar, FieldConst } from './provable-core/fieldvar.js'; -import { MlArray, MlTuple } from './ml/base.js'; -import { exists } from './provable-core/exists.js'; -import { TupleN } from './util/types.js'; +import { FieldVar, FieldConst } from './core/fieldvar.js'; +import { MlArray, MlTuple } from '../ml/base.js'; +import { exists } from './core/exists.js'; +import { TupleN } from '../util/types.js'; export { Gates, diff --git a/src/lib/group.ts b/src/lib/provable/group.ts similarity index 97% rename from src/lib/group.ts rename to src/lib/provable/group.ts index ad016cdd72..31cee90cfd 100644 --- a/src/lib/group.ts +++ b/src/lib/provable/group.ts @@ -1,9 +1,9 @@ import { Field } from './field.js'; -import { FieldVar } from './provable-core/fieldvar.js'; +import { FieldVar } from './core/fieldvar.js'; import { Scalar } from './scalar.js'; -import { Snarky } from '../snarky.js'; -import { Fp } from '../bindings/crypto/finite-field.js'; -import { GroupAffine, Pallas } from '../bindings/crypto/elliptic-curve.js'; +import { Snarky } from '../../snarky.js'; +import { Fp } from '../../bindings/crypto/finite-field.js'; +import { GroupAffine, Pallas } from '../../bindings/crypto/elliptic-curve.js'; import { Provable } from './provable.js'; import { Bool } from './bool.js'; diff --git a/src/lib/int.ts b/src/lib/provable/int.ts similarity index 99% rename from src/lib/int.ts rename to src/lib/provable/int.ts index 430bb82c72..8a3f791278 100644 --- a/src/lib/int.ts +++ b/src/lib/provable/int.ts @@ -1,15 +1,15 @@ -import { Field, Bool } from './core.js'; -import { AnyConstructor, Struct } from './provable-types/struct.js'; -import { Types } from '../bindings/mina-transaction/types.js'; -import { HashInput } from './hash.js'; +import { Field, Bool } from './wrapped.js'; +import { AnyConstructor, Struct } from './types/struct.js'; +import { Types } from '../../bindings/mina-transaction/types.js'; +import { HashInput } from './crypto/poseidon.js'; import { Provable } from './provable.js'; import * as RangeCheck from './gadgets/range-check.js'; import * as Bitwise from './gadgets/bitwise.js'; import { addMod32 } from './gadgets/arithmetic.js'; import type { Gadgets } from './gadgets/gadgets.js'; import { withMessage } from './field.js'; -import { FieldVar } from './provable-core/fieldvar.js'; -import { CircuitValue, prop } from './provable-types/circuit-value.js'; +import { FieldVar } from './core/fieldvar.js'; +import { CircuitValue, prop } from './types/circuit-value.js'; // external API export { UInt8, UInt32, UInt64, Int64, Sign }; diff --git a/src/lib/provable-types/merkle-list.ts b/src/lib/provable/merkle-list.ts similarity index 97% rename from src/lib/provable-types/merkle-list.ts rename to src/lib/provable/merkle-list.ts index 83cc9b49c1..2286caee40 100644 --- a/src/lib/provable-types/merkle-list.ts +++ b/src/lib/provable/merkle-list.ts @@ -1,10 +1,10 @@ -import { Bool, Field } from '../core.js'; -import { Provable } from '../provable.js'; -import { Struct } from './struct.js'; -import { assert } from '../gadgets/common.js'; -import { provableFromClass } from './provable-derivers.js'; -import { Poseidon, packToFields, ProvableHashable } from '../hash.js'; -import { Unconstrained } from './unconstrained.js'; +import { Bool, Field } from './wrapped.js'; +import { Provable } from './provable.js'; +import { Struct } from './types/struct.js'; +import { assert } from './gadgets/common.js'; +import { provableFromClass } from './types/provable-derivers.js'; +import { Poseidon, packToFields, ProvableHashable } from './crypto/poseidon.js'; +import { Unconstrained } from './types/unconstrained.js'; export { MerkleListBase, diff --git a/src/lib/provable-types/merkle-map.ts b/src/lib/provable/merkle-map.ts similarity index 95% rename from src/lib/provable-types/merkle-map.ts rename to src/lib/provable/merkle-map.ts index 4f0be85407..9436ed0340 100644 --- a/src/lib/provable-types/merkle-map.ts +++ b/src/lib/provable/merkle-map.ts @@ -1,8 +1,8 @@ -import { arrayProp, CircuitValue } from './circuit-value.js'; -import { Field, Bool } from '../core.js'; -import { Poseidon } from '../hash.js'; +import { arrayProp, CircuitValue } from './types/circuit-value.js'; +import { Field, Bool } from './wrapped.js'; +import { Poseidon } from './crypto/poseidon.js'; import { MerkleTree, MerkleWitness } from './merkle-tree.js'; -import { Provable } from '../provable.js'; +import { Provable } from './provable.js'; const bits = 255; const printDebugs = false; diff --git a/src/lib/provable-types/merkle-tree.ts b/src/lib/provable/merkle-tree.ts similarity index 97% rename from src/lib/provable-types/merkle-tree.ts rename to src/lib/provable/merkle-tree.ts index 6bb3197644..69236a3fda 100644 --- a/src/lib/provable-types/merkle-tree.ts +++ b/src/lib/provable/merkle-tree.ts @@ -2,10 +2,10 @@ * This file contains all code related to the [Merkle Tree](https://en.wikipedia.org/wiki/Merkle_tree) implementation available in o1js. */ -import { CircuitValue, arrayProp } from './circuit-value.js'; -import { Poseidon } from '../hash.js'; -import { Bool, Field } from '../core.js'; -import { Provable } from '../provable.js'; +import { CircuitValue, arrayProp } from './types/circuit-value.js'; +import { Poseidon } from './crypto/poseidon.js'; +import { Bool, Field } from './wrapped.js'; +import { Provable } from './provable.js'; // external API export { Witness, MerkleTree, MerkleWitness, BaseMerkleWitness }; diff --git a/src/lib/provable-types/packed.ts b/src/lib/provable/packed.ts similarity index 94% rename from src/lib/provable-types/packed.ts rename to src/lib/provable/packed.ts index 01e53e3221..6bf7d86908 100644 --- a/src/lib/provable-types/packed.ts +++ b/src/lib/provable/packed.ts @@ -1,11 +1,11 @@ -import { provableFromClass } from './provable-derivers.js'; -import { HashInput, ProvableExtended } from './struct.js'; -import { Unconstrained } from './unconstrained.js'; -import { Field } from '../field.js'; -import { assert } from '../gadgets/common.js'; -import { Poseidon, ProvableHashable, packToFields } from '../hash.js'; -import { Provable } from '../provable.js'; -import { fields, modifiedField } from './fields.js'; +import { provableFromClass } from './types/provable-derivers.js'; +import { HashInput, ProvableExtended } from './types/struct.js'; +import { Unconstrained } from './types/unconstrained.js'; +import { Field } from './field.js'; +import { assert } from './gadgets/common.js'; +import { Poseidon, ProvableHashable, packToFields } from './crypto/poseidon.js'; +import { Provable } from './provable.js'; +import { fields, modifiedField } from './types/fields.js'; export { Packed, Hashed }; diff --git a/src/lib/provable.ts b/src/lib/provable/provable.ts similarity index 98% rename from src/lib/provable.ts rename to src/lib/provable/provable.ts index 27753fff97..765ba86d20 100644 --- a/src/lib/provable.ts +++ b/src/lib/provable/provable.ts @@ -5,18 +5,15 @@ */ import { Bool } from './bool.js'; import { Field } from './field.js'; -import type { Provable as Provable_ } from './provable-types/provable-intf.js'; -import type { - FlexibleProvable, - ProvableExtended, -} from './provable-types/struct.js'; -import { Context } from './global-context.js'; +import type { Provable as Provable_ } from './types/provable-intf.js'; +import type { FlexibleProvable, ProvableExtended } from './types/struct.js'; +import { Context } from '../util/global-context.js'; import { HashInput, InferJson, InferProvable, InferredProvable, -} from './provable-types/provable-derivers.js'; +} from './types/provable-derivers.js'; import { inCheckedComputation, inProver, @@ -24,8 +21,8 @@ import { asProver, constraintSystem, generateWitness, -} from './provable-context.js'; -import { exists, existsAsync } from './provable-core/exists.js'; +} from './core/provable-context.js'; +import { exists, existsAsync } from './core/exists.js'; // external API export { Provable }; diff --git a/src/lib/scalar.ts b/src/lib/provable/scalar.ts similarity index 97% rename from src/lib/scalar.ts rename to src/lib/provable/scalar.ts index fa5a03b222..87b9f1ce76 100644 --- a/src/lib/scalar.ts +++ b/src/lib/provable/scalar.ts @@ -1,9 +1,9 @@ -import { Snarky } from '../snarky.js'; -import { Fq } from '../bindings/crypto/finite-field.js'; -import { Scalar as SignableFq } from '../mina-signer/src/curve-bigint.js'; +import { Snarky } from '../../snarky.js'; +import { Fq } from '../../bindings/crypto/finite-field.js'; +import { Scalar as SignableFq } from '../../mina-signer/src/curve-bigint.js'; import { Field } from './field.js'; -import { FieldVar, FieldConst } from './provable-core/fieldvar.js'; -import { MlArray } from './ml/base.js'; +import { FieldVar, FieldConst } from './core/fieldvar.js'; +import { MlArray } from '../ml/base.js'; import { Bool } from './bool.js'; export { Scalar, ScalarConst, unshift, shift }; diff --git a/src/lib/provable-types/string.ts b/src/lib/provable/string.ts similarity index 95% rename from src/lib/provable-types/string.ts rename to src/lib/provable/string.ts index 25e7c88832..b5a85878a8 100644 --- a/src/lib/provable-types/string.ts +++ b/src/lib/provable/string.ts @@ -1,8 +1,8 @@ -import { Bool, Field } from '../core.js'; -import { Provable } from '../provable.js'; -import { Poseidon } from '../hash.js'; -import { Gadgets } from '../gadgets/gadgets.js'; -import { CircuitValue, arrayProp, prop } from './circuit-value.js'; +import { Bool, Field } from './wrapped.js'; +import { Provable } from './provable.js'; +import { Poseidon } from './crypto/poseidon.js'; +import { Gadgets } from './gadgets/gadgets.js'; +import { CircuitValue, arrayProp, prop } from './types/circuit-value.js'; export { Character, CircuitString }; diff --git a/src/lib/gadgets/arithmetic.unit-test.ts b/src/lib/provable/test/arithmetic.unit-test.ts similarity index 79% rename from src/lib/gadgets/arithmetic.unit-test.ts rename to src/lib/provable/test/arithmetic.unit-test.ts index 9c6c7a4322..579dce8236 100644 --- a/src/lib/gadgets/arithmetic.unit-test.ts +++ b/src/lib/provable/test/arithmetic.unit-test.ts @@ -1,14 +1,14 @@ -import { ZkProgram } from '../proof-system.js'; +import { ZkProgram } from '../../proof-system/zkprogram.js'; import { equivalentProvable as equivalent, equivalentAsync, field, record, -} from '../testing/equivalent.js'; -import { Field } from '../core.js'; -import { Gadgets } from './gadgets.js'; -import { provable } from '../provable-types/struct.js'; -import { assert } from './common.js'; +} from '../../testing/equivalent.js'; +import { Field } from '../wrapped.js'; +import { Gadgets } from '../gadgets/gadgets.js'; +import { provable } from '../types/struct.js'; +import { assert } from '../gadgets/common.js'; let Arithmetic = ZkProgram({ name: 'arithmetic', diff --git a/src/lib/gadgets/bitwise.unit-test.ts b/src/lib/provable/test/bitwise.unit-test.ts similarity index 94% rename from src/lib/gadgets/bitwise.unit-test.ts rename to src/lib/provable/test/bitwise.unit-test.ts index 7b0ef73b42..1c3bbc8240 100644 --- a/src/lib/gadgets/bitwise.unit-test.ts +++ b/src/lib/provable/test/bitwise.unit-test.ts @@ -1,14 +1,14 @@ -import { ZkProgram } from '../proof-system.js'; +import { ZkProgram } from '../../proof-system/zkprogram.js'; import { equivalentProvable as equivalent, equivalentAsync, field, fieldWithRng, -} from '../testing/equivalent.js'; -import { Fp, mod } from '../../bindings/crypto/finite-field.js'; -import { Field } from '../core.js'; -import { Gadgets } from './gadgets.js'; -import { Random } from '../testing/property.js'; +} from '../../testing/equivalent.js'; +import { Fp, mod } from '../../../bindings/crypto/finite-field.js'; +import { Field } from '../wrapped.js'; +import { Gadgets } from '../gadgets/gadgets.js'; +import { Random } from '../../testing/property.js'; import { constraintSystem, contains, @@ -17,8 +17,8 @@ import { repeat, and, withoutGenerics, -} from '../testing/constraint-system.js'; -import { GateType } from '../../snarky.js'; +} from '../../testing/constraint-system.js'; +import { GateType } from '../../../snarky.js'; const maybeField = { ...field, diff --git a/src/lib/gadgets/ecdsa.unit-test.ts b/src/lib/provable/test/ecdsa.unit-test.ts similarity index 92% rename from src/lib/gadgets/ecdsa.unit-test.ts rename to src/lib/provable/test/ecdsa.unit-test.ts index 138d6c8d3d..97e9b93f30 100644 --- a/src/lib/gadgets/ecdsa.unit-test.ts +++ b/src/lib/provable/test/ecdsa.unit-test.ts @@ -1,16 +1,16 @@ -import { createCurveAffine } from '../../bindings/crypto/elliptic-curve.js'; +import { createCurveAffine } from '../../../bindings/crypto/elliptic-curve.js'; import { Ecdsa, EllipticCurve, Point, initialAggregator, verifyEcdsaConstant, -} from './elliptic-curve.js'; -import { Field3 } from './foreign-field.js'; -import { CurveParams } from '../../bindings/crypto/elliptic-curve-examples.js'; +} from '../gadgets/elliptic-curve.js'; +import { Field3 } from '../gadgets/foreign-field.js'; +import { CurveParams } from '../../../bindings/crypto/elliptic-curve-examples.js'; import { Provable } from '../provable.js'; -import { ZkProgram } from '../proof-system.js'; -import { assert } from './common.js'; +import { ZkProgram } from '../../proof-system/zkprogram.js'; +import { assert } from '../gadgets/common.js'; import { foreignField, uniformForeignField } from './test-utils.js'; import { First, @@ -21,9 +21,9 @@ import { map, oneOf, record, -} from '../testing/equivalent.js'; +} from '../../testing/equivalent.js'; import { Bool } from '../bool.js'; -import { Random } from '../testing/random.js'; +import { Random } from '../../testing/random.js'; // quick tests const Secp256k1 = createCurveAffine(CurveParams.Secp256k1); diff --git a/src/lib/gadgets/elliptic-curve.unit-test.ts b/src/lib/provable/test/elliptic-curve.unit-test.ts similarity index 84% rename from src/lib/gadgets/elliptic-curve.unit-test.ts rename to src/lib/provable/test/elliptic-curve.unit-test.ts index 0119829060..2db23ecd9d 100644 --- a/src/lib/gadgets/elliptic-curve.unit-test.ts +++ b/src/lib/provable/test/elliptic-curve.unit-test.ts @@ -1,5 +1,5 @@ -import { CurveParams } from '../../bindings/crypto/elliptic-curve-examples.js'; -import { createCurveAffine } from '../../bindings/crypto/elliptic-curve.js'; +import { CurveParams } from '../../../bindings/crypto/elliptic-curve-examples.js'; +import { createCurveAffine } from '../../../bindings/crypto/elliptic-curve.js'; import { array, equivalentProvable, @@ -7,10 +7,14 @@ import { onlyIf, spec, unit, -} from '../testing/equivalent.js'; -import { Random } from '../testing/random.js'; -import { assert } from './common.js'; -import { EllipticCurve, Point, simpleMapToCurve } from './elliptic-curve.js'; +} from '../../testing/equivalent.js'; +import { Random } from '../../testing/random.js'; +import { assert } from '../gadgets/common.js'; +import { + EllipticCurve, + Point, + simpleMapToCurve, +} from '../gadgets/elliptic-curve.js'; import { foreignField, throwError } from './test-utils.js'; // provable equivalence tests diff --git a/src/lib/field.unit-test.ts b/src/lib/provable/test/field.unit-test.ts similarity index 91% rename from src/lib/field.unit-test.ts rename to src/lib/provable/test/field.unit-test.ts index 8297d2565c..2465df3adb 100644 --- a/src/lib/field.unit-test.ts +++ b/src/lib/provable/test/field.unit-test.ts @@ -1,12 +1,12 @@ -import { Field } from './core.js'; -import { Fp } from '../bindings/crypto/finite-field.js'; -import { BinableFp } from '../mina-signer/src/field-bigint.js'; -import { test, Random } from './testing/property.js'; +import { Field } from '../wrapped.js'; +import { Fp } from '../../../bindings/crypto/finite-field.js'; +import { BinableFp } from '../../../mina-signer/src/field-bigint.js'; +import { test, Random } from '../../testing/property.js'; import { deepEqual, throws } from 'node:assert/strict'; -import { Provable } from './provable.js'; -import { Binable } from '../bindings/lib/binable.js'; -import { ProvableExtended } from './provable-types/struct.js'; -import { FieldType } from './provable-core/fieldvar.js'; +import { Provable } from '../provable.js'; +import { Binable } from '../../../bindings/lib/binable.js'; +import { ProvableExtended } from '../types/struct.js'; +import { FieldType } from '../core/fieldvar.js'; import { equivalentProvable as equivalent, oneOf, @@ -16,9 +16,9 @@ import { unit, bool, Spec, -} from './testing/equivalent.js'; -import { runAndCheckSync } from './provable-context.js'; -import { ProvablePure } from './provable-types/provable-intf.js'; +} from '../../testing/equivalent.js'; +import { runAndCheckSync } from '../core/provable-context.js'; +import { ProvablePure } from '../types/provable-intf.js'; // types Field satisfies Provable; diff --git a/src/lib/foreign-curve.unit-test.ts b/src/lib/provable/test/foreign-curve.unit-test.ts similarity index 78% rename from src/lib/foreign-curve.unit-test.ts rename to src/lib/provable/test/foreign-curve.unit-test.ts index d31a6dd76e..2861002421 100644 --- a/src/lib/foreign-curve.unit-test.ts +++ b/src/lib/provable/test/foreign-curve.unit-test.ts @@ -1,9 +1,9 @@ -import { createForeignCurve } from './foreign-curve.js'; -import { Fq } from '../bindings/crypto/finite-field.js'; -import { Vesta as V } from '../bindings/crypto/elliptic-curve.js'; -import { Provable } from './provable.js'; -import { Field } from './field.js'; -import { Crypto } from './crypto.js'; +import { createForeignCurve } from '../crypto/foreign-curve.js'; +import { Fq } from '../../../bindings/crypto/finite-field.js'; +import { Vesta as V } from '../../../bindings/crypto/elliptic-curve.js'; +import { Provable } from '../provable.js'; +import { Field } from '../field.js'; +import { Crypto } from '../crypto/crypto.js'; class Vesta extends createForeignCurve(Crypto.CurveParams.Vesta) {} class Fp extends Vesta.Scalar {} diff --git a/src/lib/gadgets/foreign-field.unit-test.ts b/src/lib/provable/test/foreign-field-gadgets.unit-test.ts similarity index 94% rename from src/lib/gadgets/foreign-field.unit-test.ts rename to src/lib/provable/test/foreign-field-gadgets.unit-test.ts index 7147a9a478..3f0fdaaca5 100644 --- a/src/lib/gadgets/foreign-field.unit-test.ts +++ b/src/lib/provable/test/foreign-field-gadgets.unit-test.ts @@ -1,5 +1,5 @@ -import type { FiniteField } from '../../bindings/crypto/finite-field.js'; -import { exampleFields } from '../../bindings/crypto/finite-field-examples.js'; +import type { FiniteField } from '../../../bindings/crypto/finite-field.js'; +import { exampleFields } from '../../../bindings/crypto/finite-field-examples.js'; import { array, equivalent, @@ -8,12 +8,12 @@ import { fromRandom, record, unit, -} from '../testing/equivalent.js'; -import { Random } from '../testing/random.js'; -import { Field3, Gadgets } from './gadgets.js'; -import { ZkProgram } from '../proof-system.js'; +} from '../../testing/equivalent.js'; +import { Random } from '../../testing/random.js'; +import { Field3, Gadgets } from '../gadgets/gadgets.js'; +import { ZkProgram } from '../../proof-system/zkprogram.js'; import { Provable } from '../provable.js'; -import { assert } from './common.js'; +import { assert } from '../gadgets/common.js'; import { allConstant, and, @@ -25,15 +25,15 @@ import { or, repeat, withoutGenerics, -} from '../testing/constraint-system.js'; -import { GateType } from '../../snarky.js'; -import { AnyTuple } from '../util/types.js'; +} from '../../testing/constraint-system.js'; +import { GateType } from '../../../snarky.js'; +import { AnyTuple } from '../../util/types.js'; import { foreignField, throwError, unreducedForeignField, } from './test-utils.js'; -import { l2 } from './range-check.js'; +import { l2 } from '../gadgets/range-check.js'; const { ForeignField } = Gadgets; diff --git a/src/lib/foreign-field.unit-test.ts b/src/lib/provable/test/foreign-field.unit-test.ts similarity index 88% rename from src/lib/foreign-field.unit-test.ts rename to src/lib/provable/test/foreign-field.unit-test.ts index 3d8da573ca..64f5fb65c3 100644 --- a/src/lib/foreign-field.unit-test.ts +++ b/src/lib/provable/test/foreign-field.unit-test.ts @@ -1,7 +1,7 @@ -import { Field, Group } from './core.js'; -import { ForeignField, createForeignField } from './foreign-field.js'; -import { Fq } from '../bindings/crypto/finite-field.js'; -import { Pallas } from '../bindings/crypto/elliptic-curve.js'; +import { Field, Group } from '../wrapped.js'; +import { ForeignField, createForeignField } from '../foreign-field.js'; +import { Fq } from '../../../bindings/crypto/finite-field.js'; +import { Pallas } from '../../../bindings/crypto/elliptic-curve.js'; import { expect } from 'expect'; import { bool, @@ -11,14 +11,14 @@ import { spec, throwError, unit, -} from './testing/equivalent.js'; -import { test, Random } from './testing/property.js'; -import { Provable } from './provable.js'; -import { Circuit, circuitMain } from './circuit.js'; -import { Scalar } from './scalar.js'; -import { l } from './gadgets/range-check.js'; -import { assert } from './gadgets/common.js'; -import { ProvablePure } from './provable-types/provable-intf.js'; +} from '../../testing/equivalent.js'; +import { test, Random } from '../../testing/property.js'; +import { Provable } from '../provable.js'; +import { Circuit, circuitMain } from '../../proof-system/circuit.js'; +import { Scalar } from '../scalar.js'; +import { l } from '../gadgets/range-check.js'; +import { assert } from '../gadgets/common.js'; +import { ProvablePure } from '../types/provable-intf.js'; // toy example - F_17 diff --git a/src/lib/group.test.ts b/src/lib/provable/test/group.test.ts similarity index 100% rename from src/lib/group.test.ts rename to src/lib/provable/test/group.test.ts diff --git a/src/lib/group.unit-test.ts b/src/lib/provable/test/group.unit-test.ts similarity index 87% rename from src/lib/group.unit-test.ts rename to src/lib/provable/test/group.unit-test.ts index 12f51b68bc..a6d3205b5d 100644 --- a/src/lib/group.unit-test.ts +++ b/src/lib/provable/test/group.unit-test.ts @@ -1,8 +1,8 @@ -import { Group } from './core.js'; -import { test, Random } from './testing/property.js'; -import { Provable } from './provable.js'; -import { Poseidon } from '../mina-signer/src/poseidon-bigint.js'; -import { runAndCheckSync } from './provable-context.js'; +import { Group } from '../wrapped.js'; +import { test, Random } from '../../testing/property.js'; +import { Provable } from '../provable.js'; +import { Poseidon } from '../../../mina-signer/src/poseidon-bigint.js'; +import { runAndCheckSync } from '../core/provable-context.js'; console.log('group consistency tests'); diff --git a/src/lib/int.test.ts b/src/lib/provable/test/int.test.ts similarity index 100% rename from src/lib/int.test.ts rename to src/lib/provable/test/int.test.ts diff --git a/src/lib/keccak.unit-test.ts b/src/lib/provable/test/keccak.unit-test.ts similarity index 96% rename from src/lib/keccak.unit-test.ts rename to src/lib/provable/test/keccak.unit-test.ts index 60c2aa45e8..1678b0a231 100644 --- a/src/lib/keccak.unit-test.ts +++ b/src/lib/provable/test/keccak.unit-test.ts @@ -1,10 +1,10 @@ -import { Keccak } from './keccak.js'; -import { ZkProgram } from './proof-system.js'; +import { Keccak } from '../crypto/keccak.js'; +import { ZkProgram } from '../../proof-system/zkprogram.js'; import { equivalentProvable, equivalent, equivalentAsync, -} from './testing/equivalent.js'; +} from '../../testing/equivalent.js'; import { keccak_224, keccak_256, @@ -15,10 +15,10 @@ import { sha3_384, sha3_512, } from '@noble/hashes/sha3'; -import { Bytes } from './provable-types/provable-types.js'; -import { bytes } from './gadgets/test-utils.js'; -import { UInt8 } from './int.js'; -import { test, Random, sample } from './testing/property.js'; +import { Bytes } from '../wrapped-classes.js'; +import { bytes } from './test-utils.js'; +import { UInt8 } from '../int.js'; +import { test, Random, sample } from '../../testing/property.js'; import { expect } from 'expect'; const RUNS = 1; diff --git a/src/lib/provable-types/merkle-map.test.ts b/src/lib/provable/test/merkle-map.test.ts similarity index 100% rename from src/lib/provable-types/merkle-map.test.ts rename to src/lib/provable/test/merkle-map.test.ts diff --git a/src/lib/provable-types/merkle-tree.test.ts b/src/lib/provable/test/merkle-tree.test.ts similarity index 100% rename from src/lib/provable-types/merkle-tree.test.ts rename to src/lib/provable/test/merkle-tree.test.ts diff --git a/src/lib/provable-types/merkle-tree.unit-test.ts b/src/lib/provable/test/merkle-tree.unit-test.ts similarity index 73% rename from src/lib/provable-types/merkle-tree.unit-test.ts rename to src/lib/provable/test/merkle-tree.unit-test.ts index ea2d4620c4..7eb7e7415d 100644 --- a/src/lib/provable-types/merkle-tree.unit-test.ts +++ b/src/lib/provable/test/merkle-tree.unit-test.ts @@ -1,6 +1,6 @@ -import { Bool, Field } from '../core.js'; -import { maybeSwap } from './merkle-tree.js'; -import { Random, test } from '../testing/property.js'; +import { Bool, Field } from '../wrapped.js'; +import { maybeSwap } from '../merkle-tree.js'; +import { Random, test } from '../../testing/property.js'; import { expect } from 'expect'; test(Random.bool, Random.field, Random.field, (b, x, y) => { diff --git a/src/lib/nullifier.unit-test.ts b/src/lib/provable/test/nullifier.unit-test.ts similarity index 87% rename from src/lib/nullifier.unit-test.ts rename to src/lib/provable/test/nullifier.unit-test.ts index 50af523e26..fda3a33836 100644 --- a/src/lib/nullifier.unit-test.ts +++ b/src/lib/provable/test/nullifier.unit-test.ts @@ -1,7 +1,7 @@ -import { createNullifier } from '../mina-signer/src/nullifier.js'; -import { Field } from './core.js'; -import { Nullifier } from './nullifier.js'; -import { PrivateKey } from './signature.js'; +import { createNullifier } from '../../../mina-signer/src/nullifier.js'; +import { Field } from '../wrapped.js'; +import { Nullifier } from '../crypto/nullifier.js'; +import { PrivateKey } from '../crypto/signature.js'; let priv = PrivateKey.random(); diff --git a/src/lib/primitives.test.ts b/src/lib/provable/test/primitives.test.ts similarity index 100% rename from src/lib/primitives.test.ts rename to src/lib/provable/test/primitives.test.ts diff --git a/src/lib/primitives.unit-test.ts b/src/lib/provable/test/primitives.unit-test.ts similarity index 79% rename from src/lib/primitives.unit-test.ts rename to src/lib/provable/test/primitives.unit-test.ts index 6344ddb9f9..2a0d7a78bc 100644 --- a/src/lib/primitives.unit-test.ts +++ b/src/lib/provable/test/primitives.unit-test.ts @@ -1,7 +1,7 @@ -import { Circuit, circuitMain } from './circuit.js'; -import { UInt64, UInt32 } from './int.js'; +import { Circuit, circuitMain } from '../../proof-system/circuit.js'; +import { UInt64, UInt32 } from '../int.js'; import { expect } from 'expect'; -import { Provable } from './provable.js'; +import { Provable } from '../provable.js'; class Primitives extends Circuit { @circuitMain diff --git a/src/lib/provable.test.ts b/src/lib/provable/test/provable.test.ts similarity index 100% rename from src/lib/provable.test.ts rename to src/lib/provable/test/provable.test.ts diff --git a/src/lib/provable.unit-test.ts b/src/lib/provable/test/provable.unit-test.ts similarity index 79% rename from src/lib/provable.unit-test.ts rename to src/lib/provable/test/provable.unit-test.ts index d1a6991dba..efa4b3483f 100644 --- a/src/lib/provable.unit-test.ts +++ b/src/lib/provable/test/provable.unit-test.ts @@ -1,8 +1,8 @@ import { it } from 'node:test'; -import { Provable } from './provable.js'; -import { Field } from './field.js'; +import { Provable } from '../provable.js'; +import { Field } from '../field.js'; import { expect } from 'expect'; -import { exists } from './provable-core/exists.js'; +import { exists } from '../core/exists.js'; await it('can witness large field array', async () => { let N = 100_000; diff --git a/src/lib/gadgets/range-check.unit-test.ts b/src/lib/provable/test/range-check.unit-test.ts similarity index 88% rename from src/lib/gadgets/range-check.unit-test.ts rename to src/lib/provable/test/range-check.unit-test.ts index b9665caed7..fbb65befb7 100644 --- a/src/lib/gadgets/range-check.unit-test.ts +++ b/src/lib/provable/test/range-check.unit-test.ts @@ -1,23 +1,23 @@ -import { mod } from '../../bindings/crypto/finite-field.js'; -import { Field } from '../../lib/core.js'; -import { ZkProgram } from '../proof-system.js'; +import { mod } from '../../../bindings/crypto/finite-field.js'; +import { Field } from '../wrapped.js'; +import { ZkProgram } from '../../proof-system/zkprogram.js'; import { Spec, boolean, equivalentAsync, fieldWithRng, -} from '../testing/equivalent.js'; -import { Random } from '../testing/property.js'; -import { assert } from './common.js'; -import { Gadgets } from './gadgets.js'; -import { l } from './range-check.js'; +} from '../../testing/equivalent.js'; +import { Random } from '../../testing/property.js'; +import { assert } from '../gadgets/common.js'; +import { Gadgets } from '../gadgets/gadgets.js'; +import { l } from '../gadgets/range-check.js'; import { constraintSystem, contains, equals, ifNotAllConstant, withoutGenerics, -} from '../testing/constraint-system.js'; +} from '../../testing/constraint-system.js'; let uint = (n: number | bigint): Spec => { let uint = Random.bignat((1n << BigInt(n)) - 1n); diff --git a/src/lib/scalar.test.ts b/src/lib/provable/test/scalar.test.ts similarity index 100% rename from src/lib/scalar.test.ts rename to src/lib/provable/test/scalar.test.ts diff --git a/src/lib/gadgets/sha256.unit-test.ts b/src/lib/provable/test/sha256.unit-test.ts similarity index 85% rename from src/lib/gadgets/sha256.unit-test.ts rename to src/lib/provable/test/sha256.unit-test.ts index dbb5954a45..c18d661752 100644 --- a/src/lib/gadgets/sha256.unit-test.ts +++ b/src/lib/provable/test/sha256.unit-test.ts @@ -1,10 +1,13 @@ -import { ZkProgram } from '../proof-system.js'; -import { Bytes } from '../provable-types/provable-types.js'; -import { Gadgets } from './gadgets.js'; +import { ZkProgram } from '../../proof-system/zkprogram.js'; +import { Bytes } from '../wrapped-classes.js'; +import { Gadgets } from '../gadgets/gadgets.js'; import { sha256 as nobleSha256 } from '@noble/hashes/sha256'; import { bytes } from './test-utils.js'; -import { equivalentAsync, equivalentProvable } from '../testing/equivalent.js'; -import { Random, sample } from '../testing/random.js'; +import { + equivalentAsync, + equivalentProvable, +} from '../../testing/equivalent.js'; +import { Random, sample } from '../../testing/random.js'; import { expect } from 'expect'; sample(Random.nat(400), 5).forEach((preimageLength) => { diff --git a/src/lib/provable-types/string.test.ts b/src/lib/provable/test/string.test.ts similarity index 100% rename from src/lib/provable-types/string.test.ts rename to src/lib/provable/test/string.test.ts diff --git a/src/lib/provable-types/struct.unit-test.ts b/src/lib/provable/test/struct.unit-test.ts similarity index 89% rename from src/lib/provable-types/struct.unit-test.ts rename to src/lib/provable/test/struct.unit-test.ts index 98cbacf0fe..7218d99bf8 100644 --- a/src/lib/provable-types/struct.unit-test.ts +++ b/src/lib/provable/test/struct.unit-test.ts @@ -1,14 +1,18 @@ -import { provable, Struct } from './struct.js'; -import { Unconstrained } from './unconstrained.js'; +import { provable, Struct } from '../types/struct.js'; +import { Unconstrained } from '../types/unconstrained.js'; import { UInt32 } from '../int.js'; -import { PrivateKey, PublicKey } from '../signature.js'; +import { PrivateKey, PublicKey } from '../crypto/signature.js'; import { expect } from 'expect'; -import { method, SmartContract } from '../zkapp.js'; -import { LocalBlockchain, setActiveInstance, transaction } from '../mina.js'; -import { State, state } from '../state.js'; -import { AccountUpdate } from '../account-update.js'; +import { method, SmartContract } from '../../mina/zkapp.js'; +import { + LocalBlockchain, + setActiveInstance, + transaction, +} from '../../mina/mina.js'; +import { State, state } from '../../mina/state.js'; +import { AccountUpdate } from '../../mina/account-update.js'; import { Provable } from '../provable.js'; -import { Field } from '../core.js'; +import { Field } from '../wrapped.js'; let type = provable({ nested: { a: Number, b: Boolean }, diff --git a/src/lib/gadgets/test-utils.ts b/src/lib/provable/test/test-utils.ts similarity index 81% rename from src/lib/gadgets/test-utils.ts rename to src/lib/provable/test/test-utils.ts index cc15759e6b..0406cc0d2a 100644 --- a/src/lib/gadgets/test-utils.ts +++ b/src/lib/provable/test/test-utils.ts @@ -1,9 +1,9 @@ -import type { FiniteField } from '../../bindings/crypto/finite-field.js'; -import { ProvableSpec, spec } from '../testing/equivalent.js'; -import { Random } from '../testing/random.js'; -import { Field3 } from './gadgets.js'; -import { assert } from './common.js'; -import { Bytes } from '../provable-types/provable-types.js'; +import type { FiniteField } from '../../../bindings/crypto/finite-field.js'; +import { ProvableSpec, spec } from '../../testing/equivalent.js'; +import { Random } from '../../testing/random.js'; +import { Field3 } from '../gadgets/gadgets.js'; +import { assert } from '../gadgets/common.js'; +import { Bytes } from '../wrapped-classes.js'; export { foreignField, diff --git a/src/lib/provable-types/auxiliary.ts b/src/lib/provable/types/auxiliary.ts similarity index 80% rename from src/lib/provable-types/auxiliary.ts rename to src/lib/provable/types/auxiliary.ts index 46ee535526..d9c1c76dd2 100644 --- a/src/lib/provable-types/auxiliary.ts +++ b/src/lib/provable/types/auxiliary.ts @@ -1,4 +1,4 @@ -import type { ProvableHashable } from '../hash.js'; +import type { ProvableHashable } from '../crypto/poseidon.js'; export { RandomId }; diff --git a/src/lib/provable-types/circuit-value.ts b/src/lib/provable/types/circuit-value.ts similarity index 99% rename from src/lib/provable-types/circuit-value.ts rename to src/lib/provable/types/circuit-value.ts index 3b54f501b8..828a0b0776 100644 --- a/src/lib/provable-types/circuit-value.ts +++ b/src/lib/provable/types/circuit-value.ts @@ -1,5 +1,5 @@ import 'reflect-metadata'; -import { Field } from '../core.js'; +import { Field } from '../wrapped.js'; import { HashInput, NonMethods } from './provable-derivers.js'; import { Provable } from '../provable.js'; import { AnyConstructor, FlexibleProvable } from './struct.js'; diff --git a/src/lib/provable-types/fields.ts b/src/lib/provable/types/fields.ts similarity index 100% rename from src/lib/provable-types/fields.ts rename to src/lib/provable/types/fields.ts diff --git a/src/lib/provable-types/provable-derivers.ts b/src/lib/provable/types/provable-derivers.ts similarity index 92% rename from src/lib/provable-types/provable-derivers.ts rename to src/lib/provable/types/provable-derivers.ts index faaea81f1c..552e11b3b2 100644 --- a/src/lib/provable-types/provable-derivers.ts +++ b/src/lib/provable/types/provable-derivers.ts @@ -1,5 +1,5 @@ import { Provable, ProvablePure } from './provable-intf.js'; -import { Field } from '../core.js'; +import { Field } from '../wrapped.js'; import { createDerivers, NonMethods, @@ -9,9 +9,9 @@ import { IsPure as GenericIsPure, createHashInput, Constructor, -} from '../../bindings/lib/provable-generic.js'; -import { Tuple } from '../util/types.js'; -import { GenericHashInput } from '../../bindings/lib/generic.js'; +} from '../../../bindings/lib/provable-generic.js'; +import { Tuple } from '../../util/types.js'; +import { GenericHashInput } from '../../../bindings/lib/generic.js'; // external API export { diff --git a/src/lib/provable-types/provable-intf.ts b/src/lib/provable/types/provable-intf.ts similarity index 100% rename from src/lib/provable-types/provable-intf.ts rename to src/lib/provable/types/provable-intf.ts diff --git a/src/lib/provable-types/struct.ts b/src/lib/provable/types/struct.ts similarity index 99% rename from src/lib/provable-types/struct.ts rename to src/lib/provable/types/struct.ts index 7d41286db3..250f05b7d3 100644 --- a/src/lib/provable-types/struct.ts +++ b/src/lib/provable/types/struct.ts @@ -1,4 +1,4 @@ -import { Field, Bool, Scalar, Group } from '../core.js'; +import { Field, Bool, Scalar, Group } from '../wrapped.js'; import { provable, provablePure, @@ -13,7 +13,7 @@ import type { IsPure, } from './provable-derivers.js'; import { Provable } from '../provable.js'; -import { Proof } from '../proof-system.js'; +import { Proof } from '../../proof-system/zkprogram.js'; import { ProvablePure } from './provable-intf.js'; // external API diff --git a/src/lib/provable-types/unconstrained.ts b/src/lib/provable/types/unconstrained.ts similarity index 95% rename from src/lib/provable-types/unconstrained.ts rename to src/lib/provable/types/unconstrained.ts index 70d9fd7fbb..c9ada25352 100644 --- a/src/lib/provable-types/unconstrained.ts +++ b/src/lib/provable/types/unconstrained.ts @@ -1,8 +1,8 @@ -import { Snarky } from '../../snarky.js'; +import { Snarky } from '../../../snarky.js'; import { Field } from '../field.js'; import { Provable } from '../provable.js'; -import { assert } from '../errors.js'; -import { inCheckedComputation } from '../provable-context.js'; +import { assert } from '../../util/errors.js'; +import { inCheckedComputation } from '../core/provable-context.js'; export { Unconstrained }; diff --git a/src/lib/provable-types/provable-types.ts b/src/lib/provable/wrapped-classes.ts similarity index 100% rename from src/lib/provable-types/provable-types.ts rename to src/lib/provable/wrapped-classes.ts diff --git a/src/lib/core.ts b/src/lib/provable/wrapped.ts similarity index 100% rename from src/lib/core.ts rename to src/lib/provable/wrapped.ts diff --git a/src/lib/testing/constraint-system.ts b/src/lib/testing/constraint-system.ts index 8f6e406a3d..4189ffa6bf 100644 --- a/src/lib/testing/constraint-system.ts +++ b/src/lib/testing/constraint-system.ts @@ -6,14 +6,17 @@ */ import { Gate, GateType } from '../../snarky.js'; import { randomBytes } from '../../bindings/crypto/random.js'; -import { Field } from '../field.js'; -import { FieldType, FieldVar } from '../provable-core/fieldvar.js'; -import { Provable } from '../provable.js'; +import { Field } from '../provable/field.js'; +import { FieldType, FieldVar } from '../provable/core/fieldvar.js'; +import { Provable } from '../provable/provable.js'; import { Tuple } from '../util/types.js'; import { Random } from './random.js'; import { test } from './property.js'; -import { Undefined, ZkProgram } from '../proof-system.js'; -import { constraintSystemSync, printGates } from '../provable-context.js'; +import { Undefined, ZkProgram } from '../proof-system/zkprogram.js'; +import { + constraintSystemSync, + printGates, +} from '../provable/core/provable-context.js'; export { constraintSystem, diff --git a/src/lib/testing/equivalent.ts b/src/lib/testing/equivalent.ts index e44527c858..c15b162639 100644 --- a/src/lib/testing/equivalent.ts +++ b/src/lib/testing/equivalent.ts @@ -2,13 +2,13 @@ * helpers for testing equivalence of two implementations, one of them on bigints */ import { test, Random } from '../testing/property.js'; -import { Provable } from '../provable.js'; +import { Provable } from '../provable/provable.js'; import { deepEqual } from 'node:assert/strict'; -import { Bool, Field } from '../core.js'; +import { Bool, Field } from '../provable/wrapped.js'; import { AnyFunction, Tuple } from '../util/types.js'; -import { provable } from '../provable-types/struct.js'; -import { assert } from '../gadgets/common.js'; -import { runAndCheckSync } from '../provable-context.js'; +import { provable } from '../provable/types/struct.js'; +import { assert } from '../provable/gadgets/common.js'; +import { runAndCheckSync } from '../provable/core/provable-context.js'; export { equivalent, diff --git a/src/lib/testing/random.ts b/src/lib/testing/random.ts index 1c3df8e506..e4fa1818c5 100644 --- a/src/lib/testing/random.ts +++ b/src/lib/testing/random.ts @@ -36,7 +36,7 @@ import { } from '../../mina-signer/src/curve-bigint.js'; import { Signature } from '../../mina-signer/src/signature.js'; import { randomBytes } from '../../bindings/crypto/random.js'; -import { alphabet } from '../base58.js'; +import { alphabet } from '../util/base58.js'; import { bytesToBigInt } from '../../bindings/crypto/bigint-helpers.js'; import { Memo } from '../../mina-signer/src/memo.js'; import { Signable } from '../../mina-signer/src/derivers-bigint.js'; diff --git a/src/lib/util/arrays.ts b/src/lib/util/arrays.ts index 2a1a913eef..891de81015 100644 --- a/src/lib/util/arrays.ts +++ b/src/lib/util/arrays.ts @@ -1,4 +1,4 @@ -import { assert } from '../gadgets/common.js'; +import { assert } from './errors.js'; export { chunk, chunkString }; diff --git a/src/lib/base58.ts b/src/lib/util/base58.ts similarity index 95% rename from src/lib/base58.ts rename to src/lib/util/base58.ts index 778540a263..5862cc2862 100644 --- a/src/lib/base58.ts +++ b/src/lib/util/base58.ts @@ -1,7 +1,7 @@ -import { versionBytes } from '../bindings/crypto/constants.js'; -import { Binable, withVersionNumber } from '../bindings/lib/binable.js'; +import { versionBytes } from '../../bindings/crypto/constants.js'; +import { Binable, withVersionNumber } from '../../bindings/lib/binable.js'; import { sha256 } from 'js-sha256'; -import { changeBase } from '../bindings/crypto/bigint-helpers.js'; +import { changeBase } from '../../bindings/crypto/bigint-helpers.js'; export { toBase58Check, diff --git a/src/lib/base58.unit-test.ts b/src/lib/util/base58.unit-test.ts similarity index 91% rename from src/lib/base58.unit-test.ts rename to src/lib/util/base58.unit-test.ts index 2d09307da6..dca4f6c1ac 100644 --- a/src/lib/base58.unit-test.ts +++ b/src/lib/util/base58.unit-test.ts @@ -1,7 +1,7 @@ import { fromBase58Check, toBase58Check } from './base58.js'; -import { Test } from '../snarky.js'; +import { Test } from '../../snarky.js'; import { expect } from 'expect'; -import { test, Random, withHardCoded } from './testing/property.js'; +import { test, Random, withHardCoded } from '../testing/property.js'; let bytes = withHardCoded( Random.bytes(Random.nat(100)), diff --git a/src/lib/errors.ts b/src/lib/util/errors.ts similarity index 100% rename from src/lib/errors.ts rename to src/lib/util/errors.ts diff --git a/src/lib/global-context.ts b/src/lib/util/global-context.ts similarity index 100% rename from src/lib/global-context.ts rename to src/lib/util/global-context.ts diff --git a/src/lib/util/types.ts b/src/lib/util/types.ts index 3256e60476..2bc40500d1 100644 --- a/src/lib/util/types.ts +++ b/src/lib/util/types.ts @@ -1,4 +1,4 @@ -import { assert } from '../errors.js'; +import { assert } from './errors.js'; export { AnyFunction, Tuple, TupleN, AnyTuple, TupleMap }; diff --git a/src/mina-signer/src/curve-bigint.ts b/src/mina-signer/src/curve-bigint.ts index c848eb468e..79e6708594 100644 --- a/src/mina-signer/src/curve-bigint.ts +++ b/src/mina-signer/src/curve-bigint.ts @@ -9,7 +9,7 @@ import { withCheck, withVersionNumber, } from '../../bindings/lib/binable.js'; -import { base58, withBase58 } from '../../lib/base58.js'; +import { base58, withBase58 } from '../../lib/util/base58.js'; import { Bool, checkRange, Field, pseudoClass } from './field-bigint.js'; import { BinableBigint, SignableBigint, signable } from './derivers-bigint.js'; import { HashInputLegacy } from './poseidon-bigint.js'; diff --git a/src/mina-signer/src/memo.ts b/src/mina-signer/src/memo.ts index 087d5834f0..ad58c4353e 100644 --- a/src/mina-signer/src/memo.ts +++ b/src/mina-signer/src/memo.ts @@ -6,7 +6,7 @@ import { stringToBytes, withBits, } from '../../bindings/lib/binable.js'; -import { base58 } from '../../lib/base58.js'; +import { base58 } from '../../lib/util/base58.js'; import { HashInputLegacy, hashWithPrefix, diff --git a/src/mina-signer/src/poseidon-bigint.ts b/src/mina-signer/src/poseidon-bigint.ts index 5ab0dbfa20..7d8676c2b4 100644 --- a/src/mina-signer/src/poseidon-bigint.ts +++ b/src/mina-signer/src/poseidon-bigint.ts @@ -3,7 +3,7 @@ import { Poseidon, PoseidonLegacy } from '../../bindings/crypto/poseidon.js'; import { prefixes } from '../../bindings/crypto/constants.js'; import { createHashInput } from '../../bindings/lib/provable-generic.js'; import { GenericHashInput } from '../../bindings/lib/generic.js'; -import { createHashHelpers } from '../../lib/hash-generic.js'; +import { createHashHelpers } from '../../lib/provable/crypto/hash-generic.js'; export { Poseidon, diff --git a/src/mina-signer/src/sign-zkapp-command.unit-test.ts b/src/mina-signer/src/sign-zkapp-command.unit-test.ts index 9d4750242a..3b39f330b4 100644 --- a/src/mina-signer/src/sign-zkapp-command.unit-test.ts +++ b/src/mina-signer/src/sign-zkapp-command.unit-test.ts @@ -10,15 +10,15 @@ import * as TypesSnarky from '../../bindings/mina-transaction/gen/transaction.js import { AccountUpdate as AccountUpdateSnarky, ZkappCommand as ZkappCommandSnarky, -} from '../../lib/account-update.js'; -import { FieldConst } from '../../lib/provable-core/fieldvar.js'; -import { packToFields as packToFieldsSnarky } from '../../lib/hash.js'; -import { Network, setActiveInstance } from '../../lib/mina.js'; +} from '../../lib/mina/account-update.js'; +import { FieldConst } from '../../lib/provable/core/fieldvar.js'; +import { packToFields as packToFieldsSnarky } from '../../lib/provable/crypto/poseidon.js'; +import { Network, setActiveInstance } from '../../lib/mina/mina.js'; import { Ml, MlHashInput } from '../../lib/ml/conversion.js'; import { PrivateKey as PrivateKeySnarky, PublicKey as PublicKeySnarky, -} from '../../lib/signature.js'; +} from '../../lib/provable/crypto/signature.js'; import { Random, test, withHardCoded } from '../../lib/testing/property.js'; import { PrivateKey, PublicKey } from './curve-bigint.js'; import { hashWithPrefix, packToFields, prefixes } from './poseidon-bigint.js'; diff --git a/src/mina-signer/src/signature.ts b/src/mina-signer/src/signature.ts index c8e42bd22d..bd3d384978 100644 --- a/src/mina-signer/src/signature.ts +++ b/src/mina-signer/src/signature.ts @@ -24,7 +24,7 @@ import { record, withVersionNumber, } from '../../bindings/lib/binable.js'; -import { base58 } from '../../lib/base58.js'; +import { base58 } from '../../lib/util/base58.js'; import { versionBytes } from '../../bindings/crypto/constants.js'; import { Pallas } from '../../bindings/crypto/elliptic-curve.js'; import { NetworkId } from './types.js'; diff --git a/src/mina-signer/src/signature.unit-test.ts b/src/mina-signer/src/signature.unit-test.ts index 786e64dfd1..c26d2cd45b 100644 --- a/src/mina-signer/src/signature.unit-test.ts +++ b/src/mina-signer/src/signature.unit-test.ts @@ -10,12 +10,12 @@ import { import { Test } from '../../snarky.js'; import { Field } from './field-bigint.js'; import { PrivateKey, PublicKey } from './curve-bigint.js'; -import { PrivateKey as PrivateKeySnarky } from '../../lib/signature.js'; +import { PrivateKey as PrivateKeySnarky } from '../../lib/provable/crypto/signature.js'; import { p } from '../../bindings/crypto/finite-field.js'; import { AccountUpdate } from '../../bindings/mina-transaction/gen/transaction-bigint.js'; import { HashInput } from './derivers-bigint.js'; import { Ml } from '../../lib/ml/conversion.js'; -import { FieldConst } from '../../lib/provable-core/fieldvar.js'; +import { FieldConst } from '../../lib/provable/core/fieldvar.js'; import { NetworkId } from './types.js'; // check consistency with OCaml, where we expose the function to sign 1 field element with "testnet" diff --git a/src/mina-signer/src/transaction-hash.ts b/src/mina-signer/src/transaction-hash.ts index 495b36b7bd..1bc923082a 100644 --- a/src/mina-signer/src/transaction-hash.ts +++ b/src/mina-signer/src/transaction-hash.ts @@ -24,7 +24,7 @@ import { import { PublicKey, Scalar } from './curve-bigint.js'; import { Signature, SignatureJson } from './signature.js'; import { blake2b } from 'blakejs'; -import { base58, withBase58 } from '../../lib/base58.js'; +import { base58, withBase58 } from '../../lib/util/base58.js'; import { versionBytes } from '../../bindings/crypto/constants.js'; export { diff --git a/src/mina-signer/tests/verify-in-snark.unit-test.ts b/src/mina-signer/tests/verify-in-snark.unit-test.ts index 02e692fc88..5ae1559006 100644 --- a/src/mina-signer/tests/verify-in-snark.unit-test.ts +++ b/src/mina-signer/tests/verify-in-snark.unit-test.ts @@ -1,9 +1,9 @@ -import { Field } from '../../lib/core.js'; -import { ZkProgram } from '../../lib/proof-system.js'; +import { Field } from '../../lib/provable/wrapped.js'; +import { ZkProgram } from '../../lib/proof-system/zkprogram.js'; import Client from '../mina-signer.js'; -import { PrivateKey, Signature } from '../../lib/signature.js'; +import { PrivateKey, Signature } from '../../lib/provable/crypto/signature.js'; import { expect } from 'expect'; -import { Provable } from '../../lib/provable.js'; +import { Provable } from '../../lib/provable/provable.js'; let fields = [10n, 20n, 30n, 340817401n, 2091283n, 1n, 0n]; let privateKey = 'EKENaWFuAiqktsnWmxq8zaoR8bSgVdscsghJE5tV6hPoNm8qBKWM'; diff --git a/src/mina-signer/tests/zkapp.unit-test.ts b/src/mina-signer/tests/zkapp.unit-test.ts index 0cd8a636c3..1b3ffb66c3 100644 --- a/src/mina-signer/tests/zkapp.unit-test.ts +++ b/src/mina-signer/tests/zkapp.unit-test.ts @@ -3,8 +3,8 @@ import * as TransactionJson from '../../bindings/mina-transaction/gen/transactio import Client from '../mina-signer.js'; import { accountUpdateExample } from '../src/test-vectors/accountUpdate.js'; import { expect } from 'expect'; -import { Transaction } from '../../lib/mina.js'; -import { PrivateKey } from '../../lib/signature.js'; +import { Transaction } from '../../lib/mina/mina.js'; +import { PrivateKey } from '../../lib/provable/crypto/signature.js'; import { Signature } from '../src/signature.js'; import { mocks } from '../../bindings/crypto/constants.js'; diff --git a/src/snarky.d.ts b/src/snarky.d.ts index 27a2663e88..b83d5a2711 100644 --- a/src/snarky.d.ts +++ b/src/snarky.d.ts @@ -1,12 +1,12 @@ import type { Account as JsonAccount } from './bindings/mina-transaction/gen/transaction-json.js'; -import type { Field } from './lib/field.js'; +import type { Field } from './lib/provable/field.js'; import type { FieldVar, FieldConst, VarFieldVar, -} from './lib/provable-core/fieldvar.ts'; -import type { BoolVar, Bool } from './lib/bool.js'; -import type { ScalarConst } from './lib/scalar.js'; +} from './lib/provable/core/fieldvar.ts'; +import type { BoolVar } from './lib/provable/bool.ts'; +import type { ScalarConst } from './lib/provable/scalar.js'; import type { MlArray, MlPair, @@ -30,8 +30,8 @@ import type { WasmFqSrs, } from './bindings/compiled/node_bindings/plonk_wasm.cjs'; import * as wasm from './bindings/compiled/node_bindings/plonk_wasm.cjs'; -import type { KimchiGateType } from './lib/gates.ts'; -import type { MlConstraintSystem } from './lib/provable-context.ts'; +import type { KimchiGateType } from './lib/provable/gates.ts'; +import type { MlConstraintSystem } from './lib/provable/core/provable-context.ts'; import type { FieldVector } from './bindings/crypto/bindings/vector.ts'; export { Ledger, Pickles, Gate, GateType, wasm };