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 {
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;
}
function _reexport(name) {
return {
get [name]() {
ensureInitialized();
return _wrappedSdk[name] ?? _rawSdk[name];
},
}[name];
}
export const Account = _reexport("Account");
export const AccountBuilder = _reexport("AccountBuilder");
export const AccountComponent = _reexport("AccountComponent");
export const AccountFile = _reexport("AccountFile");
export const AccountHeader = _reexport("AccountHeader");
export const AccountId = _reexport("AccountId");
export const AccountInterface = _reexport("AccountInterface");
export const AccountStorage = _reexport("AccountStorage");
export const AccountStorageMode =
_reexport("AccountStorageMode");
export const AccountStorageRequirements = _reexport(
"AccountStorageRequirements"
);
export const Address = _reexport("Address");
export const AuthSchemeNative = _reexport("AuthScheme");
export const AuthSecretKey = _reexport("AuthSecretKey");
export const Felt = _reexport("Felt");
export const Word = _reexport("Word");
export const Rpo = _reexport("Rpo");
export const Rpo256 = _reexport("Rpo256");
export const PublicKey = _reexport("PublicKey");
export const Signature = _reexport("Signature");
export const FungibleAsset = _reexport("FungibleAsset");
export const Note = _reexport("Note");
export const NoteAssets = _reexport("NoteAssets");
export const NoteAttachment = _reexport("NoteAttachment");
export const NoteExportFormat = _reexport("NoteExportFormat");
export const NoteExecutionHint = _reexport("NoteExecutionHint");
export const NoteFile = _reexport("NoteFile");
export const NoteFilter = _reexport("NoteFilter");
export const NoteFilterTypes = _reexport("NoteFilterTypes");
export const NoteId = _reexport("NoteId");
export const NoteMetadata = _reexport("NoteMetadata");
export const NoteRecipient = _reexport("NoteRecipient");
export const NoteScript = _reexport("NoteScript");
export const NoteStorage = _reexport("NoteStorage");
export const NoteTag = _reexport("NoteTag");
export const NoteType = _reexport("NoteType");
export const OutputNote = _reexport("OutputNote");
export const TransactionFilter = _reexport("TransactionFilter");
export const TransactionProver = _reexport("TransactionProver");
export const TransactionRequestBuilder = _reexport(
"TransactionRequestBuilder"
);
export const NetworkId = _reexport("NetworkId");
export const RpcClient = _reexport("RpcClient");
export const Endpoint = _reexport("Endpoint");
export const SyncSummary = _reexport("SyncSummary");
export const TransactionResult = _reexport("TransactionResult");
export const exportStore = _reexport("exportStore");
export const importStore = _reexport("importStore");
export const AdviceMap = _reexport("AdviceMap");
export const ForeignAccount = _reexport("ForeignAccount");
export const Package = _reexport("Package");
export const StorageMap = _reexport("StorageMap");
export const StorageSlot = _reexport("StorageSlot");
export const TokenSymbol = _reexport("TokenSymbol");