diff --git a/cli/bun.lock b/cli/bun.lock index a015564..d6065d6 100644 --- a/cli/bun.lock +++ b/cli/bun.lock @@ -6,8 +6,8 @@ "name": "synapse-cli", "dependencies": { "@clack/prompts": "^1.0.0", - "@filoz/synapse-core": "^0.4.1", - "@filoz/synapse-sdk": "^0.40.4", + "@filoz/synapse-core": "^0.7.0", + "@filoz/synapse-sdk": "^1.0.1", "@remix-run/fs": "^0.4.1", "conf": "^15.0.2", "incur": "^0.3.1", @@ -54,16 +54,14 @@ "@clack/prompts": ["@clack/prompts@1.1.0", "", { "dependencies": { "@clack/core": "1.1.0", "sisteransi": "^1.0.5" } }, "sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g=="], - "@filoz/synapse-core": ["@filoz/synapse-core@0.4.1", "", { "dependencies": { "@web3-storage/data-segment": "^5.3.0", "dnum": "^2.15.0", "iso-web": "^2.2.0", "multiformats": "^13.4.1", "ox": "^0.14.0", "p-locate": "^7.0.0", "p-queue": "^9.1.2", "p-some": "^7.0.0", "zod": "^4.3.5" }, "peerDependencies": { "viem": "2.x" } }, "sha512-Psj2YpIxNh+nxJN0wQdYMBTQRRhq1gR/C9kosI39Kx6y+lV8ppw02c6mPeHEaa47AG3KfUqQyMb3xqurOlwraQ=="], + "@filoz/synapse-core": ["@filoz/synapse-core@0.7.0", "", { "dependencies": { "dnum": "^2.15.0", "iso-web": "^3.1.2", "multiformats": "^14.0.0", "ox": "^0.14.29", "p-locate": "^7.0.0", "p-queue": "^9.1.2", "p-some": "^7.0.0", "sync-multihash-sha2": "^1.0.0", "zod": "^4.3.5" }, "peerDependencies": { "viem": "2.x" } }, "sha512-54G+yH1DrqXpCrtSZF5SYvNma3W2iA/LH6hLWmADy5tW1CkPlvtHZ5essqrJtlk3lfNRYMWk3+13ejzXxDAWWw=="], - "@filoz/synapse-sdk": ["@filoz/synapse-sdk@0.40.4", "", { "dependencies": { "@filoz/synapse-core": "^0.4.1", "multiformats": "^13.4.1" }, "peerDependencies": { "viem": "2.x" } }, "sha512-MRofQ3EixagTglo3nqWPvTyw15LtlPIFryCWN+1swgZk7JTSuFIqVunBphF5R5yFiMC0bbGohBCqrI4CIw+eCQ=="], + "@filoz/synapse-sdk": ["@filoz/synapse-sdk@1.0.1", "", { "dependencies": { "@filoz/synapse-core": "^0.7.0", "multiformats": "^14.0.0" }, "peerDependencies": { "viem": "2.x" } }, "sha512-zUAFPVPit9CNcOfjzv4oH+zqj0FkyVHJkXbeWpuJo4ZQxlCTieILpgEn7zR5LFnGKBpukzM0iIzW1mOEqGZ6jA=="], "@hono/node-server": ["@hono/node-server@1.19.11", "", { "peerDependencies": { "hono": "^4" } }, "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g=="], "@humanwhocodes/momoa": ["@humanwhocodes/momoa@2.0.4", "", {}, "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA=="], - "@ipld/dag-cbor": ["@ipld/dag-cbor@9.2.5", "", { "dependencies": { "cborg": "^4.0.0", "multiformats": "^13.1.0" } }, "sha512-84wSr4jv30biui7endhobYhXBQzQE4c/wdoWlFrKcfiwH+ofaPg8fwsM8okX9cOzkkrsAsNdDyH3ou+kiLquwQ=="], - "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.27.1", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA=="], "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], @@ -90,14 +88,14 @@ "@scure/bip39": ["@scure/bip39@1.6.0", "", { "dependencies": { "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A=="], + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@toon-format/toon": ["@toon-format/toon@2.1.0", "", {}, "sha512-JwWptdF5eOA0HaQxbKAzkpQtR4wSWTEfDlEy/y3/4okmOAX1qwnpLZMmtEWr+ncAhTTY1raCKH0kteHhSXnQqg=="], "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], "@types/node": ["@types/node@25.4.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw=="], - "@web3-storage/data-segment": ["@web3-storage/data-segment@5.3.0", "", { "dependencies": { "@ipld/dag-cbor": "^9.2.1", "multiformats": "^13.3.0", "sync-multihash-sha2": "^1.0.0" } }, "sha512-zFJ4m+pEKqtKatJNsFrk/2lHeFSbkXZ6KKXjBe7/2ayA9wAar7T/unewnOcZrrZTnCWmaxKsXWqdMFy9bXK9dw=="], - "abitype": ["abitype@1.2.3", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg=="], "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], @@ -114,6 +112,8 @@ "atomically": ["atomically@2.1.1", "", { "dependencies": { "stubborn-fs": "^2.0.0", "when-exit": "^2.1.4" } }, "sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ=="], + "bigint-mod-arith": ["bigint-mod-arith@3.3.1", "", {}, "sha512-pX/cYW3dCa87Jrzv6DAr8ivbbJRzEX5yGhdt8IutnX/PCIXfpx+mabWNK/M8qqh+zQ0J3thftUBHW0ByuUlG0w=="], + "body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], @@ -122,8 +122,6 @@ "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], - "cborg": ["cborg@4.5.8", "", { "bin": { "cborg": "lib/bin.js" } }, "sha512-6/viltD51JklRhq4L7jC3zgy6gryuG5xfZ3kzpE+PravtyeQLeQmCYLREhQH7pWENg5pY4Yu/XCd6a7dKScVlw=="], - "conf": ["conf@15.1.0", "", { "dependencies": { "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "atomically": "^2.0.3", "debounce-fn": "^6.0.0", "dot-prop": "^10.0.0", "env-paths": "^3.0.0", "json-schema-typed": "^8.0.1", "semver": "^7.7.2", "uint8array-extras": "^1.5.0" } }, "sha512-Uy5YN9KEu0WWDaZAVJ5FAmZoaJt9rdK6kH+utItPyGsCqCgaTKkrmZx3zoE0/3q6S3bcp3Ihkk+ZqPxWxFK5og=="], "content-disposition": ["content-disposition@1.0.1", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="], @@ -228,9 +226,11 @@ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "iso-kv": ["iso-kv@3.1.1", "", { "dependencies": { "conf": "^15.0.2", "idb-keyval": "^6.2.1", "kysely": "^0.28.8" } }, "sha512-yKTLmUCc8gl0MXJs3ZaTaNDgfG/2ROasZERKPa5aYY7Ks/eb8BvGfLHrC+t1cHxiRkogvaXulDP77ovwLKgLPg=="], + "iso-base": ["iso-base@4.4.0", "", { "dependencies": { "bigint-mod-arith": "^3.3.1" } }, "sha512-W4BJbRDBi66wcBFJ23ZlGnFOZ874CIut4y9PlsScMSYu7ckCX+MWNAaEoE0efTSYDoVEn1qy0FDVSjE8q0ieHw=="], + + "iso-kv": ["iso-kv@3.2.0", "", { "dependencies": { "conf": "^15.1.0", "idb-keyval": "^6.2.1", "iso-base": "^4.4.0", "kysely": "^0.29.2" } }, "sha512-rMVXO7zDEecXOJEiDnbDqjZ7gSe7VqDn2FTkUFWeqkcYMmgMdmB7pDgUaZxiEyiL1+gO7RnbqEI2Ce3xIW4UBQ=="], - "iso-web": ["iso-web@2.2.1", "", { "dependencies": { "delay": "^7.0.0", "is-network-error": "^1.3.1", "iso-kv": "^3.1.1", "p-retry": "^8.0.0" } }, "sha512-4pkaxMAK089Gt+ua046Y0vGu7V7V7+P/2fEzlxYK0ssMvQFufaqkETHhoid+422L/kjU7aw9j1BxorpG6jmtXw=="], + "iso-web": ["iso-web@3.1.2", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "delay": "^7.0.0", "is-network-error": "^1.3.1", "iso-kv": "^3.2.0", "p-retry": "^8.0.0" } }, "sha512-OpWz+KNH4vYNVvpc6T1z/zkZtT6iTQXYjc0sIbkPDwYEM5Qurg0LYESrEHloxb6xj5T/2rrnsTtaYlUSIzgicg=="], "isows": ["isows@1.0.7", "", { "peerDependencies": { "ws": "*" } }, "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg=="], @@ -246,7 +246,7 @@ "jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="], - "kysely": ["kysely@0.28.11", "", {}, "sha512-zpGIFg0HuoC893rIjYX1BETkVWdDnzTzF5e0kWXJFg5lE0k1/LfNWBejrcnOFu8Q2Rfq/hTDTU7XLUM8QOrpzg=="], + "kysely": ["kysely@0.29.2", "", {}, "sha512-s6WVJyEZrbm6jhBpiKHsGHyePMrVQKJ85wZCFCr9W4QHv6WTjWIrdvTmO9hDEA3bNK0xkrE2DqrHsXMLWuZpQg=="], "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], @@ -264,7 +264,7 @@ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "multiformats": ["multiformats@13.4.2", "", {}, "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ=="], + "multiformats": ["multiformats@14.0.0", "", {}, "sha512-iWK1RrAS58p2NDfeZFuSUSv3ZPewTIhsGbh/5NgeGGJwJmRljLxGtjRR3nkn+loG3zl+IrfR/W1590QnrSK+Gg=="], "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], @@ -278,7 +278,7 @@ "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], - "ox": ["ox@0.14.0", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.2.3", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-WLOB7IKnmI3Ol6RAqY7CJdZKl8QaI44LN91OGF1061YIeN6bL5IsFcdp7+oQShRyamE/8fW/CBRWhJAOzI35Dw=="], + "ox": ["ox@0.14.29", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.2.3", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-M5j87Ec4V99MQdRct/g09eWXW60g6zhHTUs1lr4deUtrPDnezBdCJTgKd7pxqTpSZBFveV0ALi9jMMuT1qKyNg=="], "p-limit": ["p-limit@7.3.0", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw=="], @@ -395,5 +395,7 @@ "zod-to-json-schema": ["zod-to-json-schema@3.25.1", "", { "peerDependencies": { "zod": "^3.25 || ^4" } }, "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA=="], "p-queue/eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], + + "viem/ox": ["ox@0.14.0", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.2.3", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-WLOB7IKnmI3Ol6RAqY7CJdZKl8QaI44LN91OGF1061YIeN6bL5IsFcdp7+oQShRyamE/8fW/CBRWhJAOzI35Dw=="], } } diff --git a/cli/package.json b/cli/package.json index 9e3fa7b..7e6db10 100644 --- a/cli/package.json +++ b/cli/package.json @@ -50,8 +50,8 @@ }, "dependencies": { "@clack/prompts": "^1.0.0", - "@filoz/synapse-core": "^0.4.1", - "@filoz/synapse-sdk": "^0.40.4", + "@filoz/synapse-core": "^0.7.0", + "@filoz/synapse-sdk": "^1.0.1", "@remix-run/fs": "^0.4.1", "conf": "^15.0.2", "incur": "^0.3.1", diff --git a/cli/src/commands/dataset/upload.ts b/cli/src/commands/dataset/upload.ts index 9def319..f54f3e8 100644 --- a/cli/src/commands/dataset/upload.ts +++ b/cli/src/commands/dataset/upload.ts @@ -60,7 +60,7 @@ export const uploadCommand = { const fileData = await readFile(absolutePath) out.step('Calculating piece CID') - const pieceCid = Piece.calculate(fileData) + const pieceCid = await Piece.calculate(fileData) out.step('Uploading to provider') await SP.uploadPiece({ @@ -71,7 +71,7 @@ export const uploadCommand = { await SP.findPiece({ pieceCid, serviceURL: provider.pdp.serviceURL, - retry: true, + poll: true, }) out.step('Creating dataset and adding pieces') diff --git a/cli/src/commands/wallet/costs.ts b/cli/src/commands/wallet/costs.ts index dedae6c..411f7c4 100644 --- a/cli/src/commands/wallet/costs.ts +++ b/cli/src/commands/wallet/costs.ts @@ -46,7 +46,7 @@ export const costsCommand = { }) const newPerMonthRate = formatBalance({ - value: prep.costs.rate.perMonth, + value: prep.costs.rates.perMonth, }) const depositNeeded = formatBalance({ value: prep.costs.depositNeeded }) const alreadyCovered = prep.costs.ready diff --git a/cli/src/commands/wallet/summary.ts b/cli/src/commands/wallet/summary.ts index 23665cb..30e9aee 100644 --- a/cli/src/commands/wallet/summary.ts +++ b/cli/src/commands/wallet/summary.ts @@ -57,13 +57,10 @@ export const summaryCommand = { } function formatTimeUntilFunded(summary: getAccountSummary.OutputType) { - const { fundedUntilEpoch, epoch } = summary - if (fundedUntilEpoch === maxUint256) { + if (summary.runwayInEpochs === maxUint256) { return 'No active storage, unlimited' } - const blocksUntilFunded = - fundedUntilEpoch < epoch ? 0n : fundedUntilEpoch - epoch - const secondsUntilFunded = blocksUntilFunded * 30n + const secondsUntilFunded = summary.runwayInEpochs * 30n const hoursUntilFunded = secondsUntilFunded / 60n / 60n const daysUntilFunded = hoursUntilFunded / 24n const weeksUntilFunded = daysUntilFunded / 7n diff --git a/cli/tests/command-mocks.ts b/cli/tests/command-mocks.ts index a86e41c..e0e63a8 100644 --- a/cli/tests/command-mocks.ts +++ b/cli/tests/command-mocks.ts @@ -49,7 +49,8 @@ export const synapseStorage = { prepare: mock(async () => ({ transaction: null, costs: { - rate: { + rates: { + perEpoch: 11n, perMonth: 111n, }, depositNeeded: 222n, @@ -164,7 +165,7 @@ export const waitForCreateDataSet = mock(async () => ({ export const uploadPiece = mock(async () => undefined) export const findPiece = mock(async () => undefined) -export const calculate = mock(() => cid('baga-calculated')) +export const calculate = mock(async () => cid('baga-calculated')) export const createDataSetAndAddPieces = mock(async () => ({ txHash: '0xdatasetupload', @@ -192,13 +193,17 @@ export const terminateServiceSync = mock(async (_client: any, options: any) => { }) export const getAccountSummary = mock(async () => ({ + funds: 5n, availableFunds: 1n, + debt: 0n, + lockupRatePerEpoch: 6n, + lockupRatePerMonth: 4n, totalLockup: 2n, + totalFixedLockup: 7n, totalRateBasedLockup: 3n, - lockupRatePerMonth: 4n, - funds: 5n, + runwayInEpochs: 120n, + grossCoverageInEpochs: 240n, epoch: 100n, - fundedUntilEpoch: 220n, })) export const getBlockNumber = mock(async () => 123n) @@ -307,7 +312,8 @@ export function resetCommandMocks() { synapseStorage.prepare.mockImplementation(async () => ({ transaction: null, costs: { - rate: { + rates: { + perEpoch: 11n, perMonth: 111n, }, depositNeeded: 222n, @@ -338,7 +344,7 @@ export function resetCommandMocks() { })) uploadPiece.mockImplementation(async () => undefined) findPiece.mockImplementation(async () => undefined) - calculate.mockImplementation(() => cid('baga-calculated')) + calculate.mockImplementation(async () => cid('baga-calculated')) createDataSetAndAddPieces.mockImplementation(async () => ({ txHash: '0xdatasetupload', statusUrl: 'https://provider.example/status', @@ -363,13 +369,17 @@ export function resetCommandMocks() { } ) getAccountSummary.mockImplementation(async () => ({ + funds: 5n, availableFunds: 1n, + debt: 0n, + lockupRatePerEpoch: 6n, + lockupRatePerMonth: 4n, totalLockup: 2n, + totalFixedLockup: 7n, totalRateBasedLockup: 3n, - lockupRatePerMonth: 4n, - funds: 5n, + runwayInEpochs: 120n, + grossCoverageInEpochs: 240n, epoch: 100n, - fundedUntilEpoch: 220n, })) getBlockNumber.mockImplementation(async () => 123n) waitForTransactionReceipt.mockImplementation(async () => ({ diff --git a/cli/tests/synapse-commands.test.ts b/cli/tests/synapse-commands.test.ts index 846a533..881f46f 100644 --- a/cli/tests/synapse-commands.test.ts +++ b/cli/tests/synapse-commands.test.ts @@ -387,6 +387,8 @@ describe('wallet commands', () => { dataSize: 1024n, extraRunwayEpochs: 172800n, }) + expect(formatBalance).toHaveBeenNthCalledWith(1, { value: 111n }) + expect(formatBalance).toHaveBeenNthCalledWith(2, { value: 222n }) expect(result).toEqual({ newPerMonthRate: 'formatted:111', depositNeeded: 'formatted:222', @@ -513,15 +515,18 @@ describe('dataset commands', () => { ) expect(calculate).toHaveBeenCalled() + const uploadedPieceCid = uploadPiece.mock.calls[0]?.[0]?.pieceCid + expect(uploadedPieceCid?.toString()).toBe('baga-calculated') + expect(uploadedPieceCid).not.toHaveProperty('then') expect(uploadPiece).toHaveBeenCalledWith({ data: expect.any(Buffer), serviceURL: 'https://provider.example', - pieceCid: expect.anything(), + pieceCid: uploadedPieceCid, }) expect(findPiece).toHaveBeenCalledWith({ - pieceCid: expect.anything(), + pieceCid: uploadedPieceCid, serviceURL: 'https://provider.example', - retry: true, + poll: true, }) expect(createDataSetAndAddPieces).toHaveBeenCalledWith(fakeWalletClient, { serviceURL: 'https://provider.example', @@ -529,7 +534,7 @@ describe('dataset commands', () => { cdn: false, pieces: [ { - pieceCid: expect.anything(), + pieceCid: uploadedPieceCid, metadata: { name: 'dataset-file.txt' }, }, ],