import { loadNativeModule } from "./node/loader.js";
import { createSdkWrapper } from "./node/napi-compat.js";
import {
createWasmWebClient,
createMockWasmWebClient,
} from "./node/client-factory.js";
import { MidenClient } from "./client.js";
import { CompilerResource } from "./resources/compiler.js";
import {
createP2IDNote,
createP2IDENote,
buildSwapTag,
_setWasm as _setStandaloneWasm,
_setWebClient as _setStandaloneWebClient,
} from "./standalone.js";
let _initialized = false;
let _rawSdk = null;
let _wrappedSdk = null;
let _WasmWebClient = null;
let _MockWasmWebClient = null;
function ensureInitialized() {
if (_initialized) return;
_rawSdk = loadNativeModule();
_wrappedSdk = createSdkWrapper(_rawSdk);
_WasmWebClient = createWasmWebClient(_rawSdk);
_MockWasmWebClient = createMockWasmWebClient(_rawSdk);
MidenClient._WasmWebClient = _WasmWebClient;
MidenClient._MockWasmWebClient = _MockWasmWebClient;
MidenClient._getWasmOrThrow = async () => _wrappedSdk;
_setStandaloneWasm(_wrappedSdk);
_setStandaloneWebClient(_WasmWebClient);
_initialized = true;
}
ensureInitialized();
export const AccountType = Object.freeze({
FungibleFaucet: "FungibleFaucet",
NonFungibleFaucet: "NonFungibleFaucet",
});
export const AuthScheme = Object.freeze({
Falcon: "falcon",
ECDSA: "ecdsa",
});
export const NoteVisibility = Object.freeze({
Public: "public",
Private: "private",
});
export const StorageMode = Object.freeze({
Public: "public",
Private: "private",
});
export { MidenClient };
export { createP2IDNote, createP2IDENote, buildSwapTag };
export {
_WasmWebClient as WasmWebClient,
_MockWasmWebClient as MockWasmWebClient,
_MockWasmWebClient as MockWebClient,
};
export function getNativeModule() {
ensureInitialized();
return _rawSdk;
}
export function getWrappedSdk() {
ensureInitialized();
return _wrappedSdk;
}
export { CompilerResource };
export const getWasmOrThrow = async () => {
ensureInitialized();
return _wrappedSdk;
};
function _reexport(name) {
return {
get [name]() {
ensureInitialized();
return _wrappedSdk[name] ?? _rawSdk[name];
},
}[name];
}
export const AuthSchemeNative = _reexport("AuthScheme");
export const Rpo = _reexport("Rpo");
export const exportStore = _reexport("exportStore");
export const importStore = _reexport("importStore");
export const Account = _reexport("Account");
export const AccountBuilder = _reexport("AccountBuilder");
export const AccountBuilderResult = _reexport(
"AccountBuilderResult"
);
export const AccountCode = _reexport("AccountCode");
export const AccountComponent = _reexport("AccountComponent");
export const AccountComponentCode = _reexport(
"AccountComponentCode"
);
export const AccountDelta = _reexport("AccountDelta");
export const AccountFile = _reexport("AccountFile");
export const AccountHeader = _reexport("AccountHeader");
export const AccountId = _reexport("AccountId");
export const AccountInterface = _reexport("AccountInterface");
export const AccountProof = _reexport("AccountProof");
export const AccountReader = _reexport("AccountReader");
export const AccountStatus = _reexport("AccountStatus");
export const AccountStorage = _reexport("AccountStorage");
export const AccountStorageDelta = _reexport(
"AccountStorageDelta"
);
export const AccountStorageMode =
_reexport("AccountStorageMode");
export const AccountStorageRequirements = _reexport(
"AccountStorageRequirements"
);
export const AccountVaultDelta = _reexport("AccountVaultDelta");
export const Address = _reexport("Address");
export const AddressInterface = _reexport("AddressInterface");
export const AdviceInputs = _reexport("AdviceInputs");
export const AdviceMap = _reexport("AdviceMap");
export const AssetVault = _reexport("AssetVault");
export const AuthFalcon512RpoMultisigConfig = _reexport(
"AuthFalcon512RpoMultisigConfig"
);
export const AuthSecretKey = _reexport("AuthSecretKey");
export const BasicFungibleFaucetComponent = _reexport(
"BasicFungibleFaucetComponent"
);
export const BlockHeader = _reexport("BlockHeader");
export const CodeBuilder = _reexport("CodeBuilder");
export const CommittedNote = _reexport("CommittedNote");
export const ConsumableNoteRecord = _reexport(
"ConsumableNoteRecord"
);
export const Endpoint = _reexport("Endpoint");
export const ExecutedTransaction = _reexport(
"ExecutedTransaction"
);
export const Felt = _reexport("Felt");
export const FetchedAccount = _reexport("FetchedAccount");
export const FetchedNote = _reexport("FetchedNote");
export const ForeignAccount = _reexport("ForeignAccount");
export const FungibleAsset = _reexport("FungibleAsset");
export const FungibleAssetDelta =
_reexport("FungibleAssetDelta");
export const FungibleAssetDeltaItem = _reexport(
"FungibleAssetDeltaItem"
);
export const GetProceduresResultItem = _reexport(
"GetProceduresResultItem"
);
export const InputNote = _reexport("InputNote");
export const InputNoteRecord = _reexport("InputNoteRecord");
export const InputNoteState = _reexport("InputNoteState");
export const InputNotes = _reexport("InputNotes");
export const Library = _reexport("Library");
export const MerklePath = _reexport("MerklePath");
export const NetworkId = _reexport("NetworkId");
export const NetworkNoteStatusInfo = _reexport(
"NetworkNoteStatusInfo"
);
export const NetworkType = _reexport("NetworkType");
export const Note = _reexport("Note");
export const NoteAndArgs = _reexport("NoteAndArgs");
export const NoteAssets = _reexport("NoteAssets");
export const NoteAttachment = _reexport("NoteAttachment");
export const NoteAttachmentScheme = _reexport(
"NoteAttachmentScheme"
);
export const NoteConsumability = _reexport("NoteConsumability");
export const NoteConsumptionStatus = _reexport(
"NoteConsumptionStatus"
);
export const NoteDetails = _reexport("NoteDetails");
export const NoteDetailsAndTag = _reexport("NoteDetailsAndTag");
export const NoteExecutionHint = _reexport("NoteExecutionHint");
export const NoteExportFormat = _reexport("NoteExportFormat");
export const NoteFile = _reexport("NoteFile");
export const NoteFilter = _reexport("NoteFilter");
export const NoteFilterTypes = _reexport("NoteFilterTypes");
export const NoteHeader = _reexport("NoteHeader");
export const NoteId = _reexport("NoteId");
export const NoteIdAndArgs = _reexport("NoteIdAndArgs");
export const NoteInclusionProof =
_reexport("NoteInclusionProof");
export const NoteLocation = _reexport("NoteLocation");
export const NoteMetadata = _reexport("NoteMetadata");
export const NoteRecipient = _reexport("NoteRecipient");
export const NoteScript = _reexport("NoteScript");
export const NoteStorage = _reexport("NoteStorage");
export const NoteSyncBlock = _reexport("NoteSyncBlock");
export const NoteSyncInfo = _reexport("NoteSyncInfo");
export const NoteTag = _reexport("NoteTag");
export const NoteType = _reexport("NoteType");
export const OutputNote = _reexport("OutputNote");
export const OutputNoteRecord = _reexport("OutputNoteRecord");
export const OutputNoteState = _reexport("OutputNoteState");
export const OutputNotes = _reexport("OutputNotes");
export const Package = _reexport("Package");
export const PartialNote = _reexport("PartialNote");
export const Poseidon2 = _reexport("Poseidon2");
export const ProcedureThreshold =
_reexport("ProcedureThreshold");
export const Program = _reexport("Program");
export const ProvenTransaction = _reexport("ProvenTransaction");
export const PswapLineageRecord =
_reexport("PswapLineageRecord");
export const PswapLineageState = _reexport("PswapLineageState");
export const PublicKey = _reexport("PublicKey");
export const RpcClient = _reexport("RpcClient");
export const Rpo256 = _reexport("Rpo256");
export const Signature = _reexport("Signature");
export const SigningInputs = _reexport("SigningInputs");
export const SigningInputsType = _reexport("SigningInputsType");
export const SlotAndKeys = _reexport("SlotAndKeys");
export const SparseMerklePath = _reexport("SparseMerklePath");
export const StorageMap = _reexport("StorageMap");
export const StorageMapEntryJs = _reexport("StorageMapEntryJs");
export const StorageMapInfo = _reexport("StorageMapInfo");
export const StorageMapUpdate = _reexport("StorageMapUpdate");
export const StorageSlot = _reexport("StorageSlot");
export const SyncSummary = _reexport("SyncSummary");
export const TokenSymbol = _reexport("TokenSymbol");
export const TransactionArgs = _reexport("TransactionArgs");
export const TransactionFilter = _reexport("TransactionFilter");
export const TransactionId = _reexport("TransactionId");
export const TransactionProver = _reexport("TransactionProver");
export const TransactionRecord = _reexport("TransactionRecord");
export const TransactionRequest =
_reexport("TransactionRequest");
export const TransactionRequestBuilder = _reexport(
"TransactionRequestBuilder"
);
export const TransactionResult = _reexport("TransactionResult");
export const TransactionScript = _reexport("TransactionScript");
export const TransactionScriptInputPair = _reexport(
"TransactionScriptInputPair"
);
export const TransactionStatus = _reexport("TransactionStatus");
export const TransactionStoreUpdate = _reexport(
"TransactionStoreUpdate"
);
export const TransactionSummary =
_reexport("TransactionSummary");
export const Word = _reexport("Word");
export const createAuthFalcon512RpoMultisig = _reexport(
"createAuthFalcon512RpoMultisig"
);