diff --git a/package-lock.json b/package-lock.json index 9638f6787..e0d51ed70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2532,6 +2532,132 @@ "node": ">=10" } }, + "node_modules/@mina-js/accounts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@mina-js/accounts/-/accounts-0.1.1.tgz", + "integrity": "sha512-WN4GB/nnKwGTcI4/OqRopDZyVm1Z/SFGM5wqLjJX5YPFzhWuQbVDi+YsyIOHlw8M4/Nd/5DQmCAmHvHgx9zFyg==", + "dependencies": { + "@mina-js/providers": "0.1.1", + "@noble/ciphers": "1.2.1", + "@noble/curves": "1.8.1", + "@noble/hashes": "1.7.1", + "@scure/base": "1.2.4", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "mina-signer": "3.0.7", + "zod": "3.24.2" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/@mina-js/connect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@mina-js/connect/-/connect-0.1.1.tgz", + "integrity": "sha512-36HLuKLfVxW7lQUkc7QBMAcQmSJ9LVlNB4n0KPCzyqJjKeQX9vUdCAx69fgtSfNO9bfjh64SRb0jnZJ3DO9SYw==", + "dependencies": { + "@mina-js/accounts": "0.1.1", + "@mina-js/klesia-sdk": "0.1.1", + "@mina-js/providers": "0.1.1", + "@mina-js/utils": "0.1.1", + "ts-pattern": "5.6.2", + "zod": "3.24.2" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/@mina-js/connect/node_modules/ts-pattern": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.6.2.tgz", + "integrity": "sha512-d4IxJUXROL5NCa3amvMg6VQW2HVtZYmUTPfvVtO7zJWGYLJ+mry9v2OmYm+z67aniQoQ8/yFNadiEwtNS9qQiw==", + "license": "MIT" + }, + "node_modules/@mina-js/klesia-sdk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@mina-js/klesia-sdk/-/klesia-sdk-0.1.1.tgz", + "integrity": "sha512-qF2Qi7w4LE96vBhi3hpcrB1O0EavApCknc3eydKX1bF9X1P4wURmLUPUIOyzmrGxJNAMJNAtEXYtBf3NlO0h6A==", + "dependencies": { + "micro-ftch": "0.4.2", + "ts-pattern": "5.6.2" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/@mina-js/klesia-sdk/node_modules/ts-pattern": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.6.2.tgz", + "integrity": "sha512-d4IxJUXROL5NCa3amvMg6VQW2HVtZYmUTPfvVtO7zJWGYLJ+mry9v2OmYm+z67aniQoQ8/yFNadiEwtNS9qQiw==", + "license": "MIT" + }, + "node_modules/@mina-js/providers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@mina-js/providers/-/providers-0.1.1.tgz", + "integrity": "sha512-ll+sGi5TgXTTE8RChgaoHNM7lFsjyxw9bwPasuovIRum8bGFp5NRAOqv2RqAqUuLJwpcZw8WASEavX8xLZk5gA==", + "dependencies": { + "mina-credentials": "0.2.6" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/@mina-js/providers/node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@mina-js/providers/node_modules/mina-credentials": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/mina-credentials/-/mina-credentials-0.2.6.tgz", + "integrity": "sha512-S/pqtVI+1S2SILDJ2myqBtZLMzENn5vMv6Yx5H5Ec9EYGj5iuCtEI2DJhOuX2FnxhYa1hTjBjKpz9L2tk0XQpA==", + "license": "Apache-2.0", + "engines": { + "node": ">=22.0" + }, + "peerDependencies": { + "o1js": "https://pkg.pr.new/o1-labs/o1js@996ebb3" + } + }, + "node_modules/@mina-js/providers/node_modules/o1js": { + "version": "2.1.0", + "resolved": "https://pkg.pr.new/o1-labs/o1js@996ebb3", + "integrity": "sha512-ARIn/cmuaZWJnETb8Mo4hEYjVg4pF67rYoDK1b78lYKxvMtynSA+gPUiWxXreQB4Z4Ook6NeRHzlIn8pN4t9vQ==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "blakejs": "1.2.1", + "cachedir": "^2.4.0", + "isomorphic-fetch": "^3.0.0", + "js-sha256": "^0.9.0", + "reflect-metadata": "^0.1.13", + "tslib": "^2.3.0" + }, + "bin": { + "snarky-run": "src/build/run.js" + }, + "engines": { + "node": ">=18.14.0" + } + }, + "node_modules/@mina-js/utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@mina-js/utils/-/utils-0.1.1.tgz", + "integrity": "sha512-zsdGHsAIesLUd/2LodsAQS40Sl/0eavSGJmphpdPW8DnzQrT9Maiu04GEF/UIpbAjoYdgMmaDohcUQDiFhGxlQ==", + "dependencies": { + "mina-signer": "3.0.7", + "serialize-error": "12.0.0", + "superjson": "2.2.2" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { "version": "3.0.3", "cpu": [ @@ -2544,6 +2670,45 @@ ], "peer": true }, + "node_modules/@noble/ciphers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", + "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "license": "MIT", @@ -4953,6 +5118,42 @@ "version": "3.0.6", "license": "MIT" }, + "node_modules/@scure/base": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz", + "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@shikijs/core": { "version": "1.29.2", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", @@ -6804,8 +7005,7 @@ }, "node_modules/blakejs": { "version": "1.2.1", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/body-parser": { "version": "1.20.3", @@ -7946,6 +8146,21 @@ "node": ">= 0.8" } }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "dev": true, @@ -12364,6 +12579,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "dev": true, @@ -14210,8 +14437,7 @@ }, "node_modules/js-sha256": { "version": "0.9.0", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -16040,6 +16266,15 @@ "node": ">= 0.6" } }, + "node_modules/micro-ftch": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.4.2.tgz", + "integrity": "sha512-7gXEYECF4DAoDUOViftg/rhUg/1R5n7tGHv/9Lc7xp9e32+FnLNcA6hMV+c2/gEnP+35CQVe09RWf6l4j7K6vA==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/micromark-util-character": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", @@ -16196,6 +16431,16 @@ "o1js": "^1.6.0" } }, + "node_modules/mina-signer": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/mina-signer/-/mina-signer-3.0.7.tgz", + "integrity": "sha512-7eYp/6WWj2VzJjvfC8dNeGMud/brdBrzkUsCdysFFXnfV2/FVpVhAGCMfaS6hs0HJtS4+eplmiD2hXfshQS8CQ==", + "license": "Apache-2.0", + "dependencies": { + "blakejs": "^1.2.1", + "js-sha256": "^0.9.0" + } + }, "node_modules/minimatch": { "version": "9.0.5", "license": "ISC", @@ -19842,6 +20087,33 @@ "node": ">= 0.8" } }, + "node_modules/serialize-error": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz", + "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==", + "license": "MIT", + "dependencies": { + "type-fest": "^4.31.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.0.tgz", + "integrity": "sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/serve-static": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", @@ -20558,6 +20830,18 @@ "node": ">=4" } }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/supports-color": { "version": "5.5.0", "license": "MIT", @@ -22279,6 +22563,15 @@ "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz", "integrity": "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==" }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", @@ -22565,6 +22858,7 @@ "version": "0.1.1-develop.833+397881ed", "license": "MIT", "dependencies": { + "@mina-js/connect": "^0.1.1", "@urql/core": "^4.1.4", "comlink": "^4.4.1", "lodash": "^4.17.21", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index cac8eb4c0..f86c27cdb 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -17,6 +17,7 @@ "access": "public" }, "dependencies": { + "@mina-js/connect": "^0.1.1", "@urql/core": "^4.1.4", "comlink": "^4.4.1", "lodash": "^4.17.21", diff --git a/packages/sdk/src/transaction/PalladSigner.ts b/packages/sdk/src/transaction/PalladSigner.ts new file mode 100644 index 000000000..dfac8cdff --- /dev/null +++ b/packages/sdk/src/transaction/PalladSigner.ts @@ -0,0 +1,18 @@ +import { Field, Signature } from "o1js"; +import { injectable } from "tsyringe"; +import { createStore } from '@mina-js/connect' + +import { AppChainModule } from "../appChain/AppChainModule"; + +import { Signer } from "./InMemorySigner"; + +@injectable() +export class PalladSigner extends AppChainModule implements Signer { + public async sign(message: Field[]): Promise { + const store = createStore() + const injectedProvider = store.getProviders().find((p) => p.info.slug === 'pallad') + if (!injectedProvider) throw new Error('Pallad provider not found') + const response = await injectedProvider.provider.request({ method: 'mina_signFields', params: [message.map((field) => field.toString())] }) + return Signature.fromBase58(response.result.signature); + } +}