Skip to content

Commit 740e7a3

Browse files
committed
fix: resolve type issues in submitTransaction function
1 parent ce0be5e commit 740e7a3

File tree

7 files changed

+42
-30
lines changed

7 files changed

+42
-30
lines changed

apps/extension/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"test:e2e:ui": "playwright test --ui"
1616
},
1717
"dependencies": {
18-
"@mina-js/providers": "0.1.0",
18+
"@mina-js/providers": "https://pkg.pr.new/palladians/mina-js/@mina-js/providers@ae15f92",
1919
"@palladco/common": "workspace:*",
2020
"@palladco/features": "workspace:*",
2121
"@palladco/key-management": "workspace:*",

bun.lockb

545 KB
Binary file not shown.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
"devDependencies": {
2525
"@biomejs/biome": "1.9.4",
2626
"@happy-dom/global-registrator": "^15.11.0",
27+
"@mina-js/utils": "https://pkg.pr.new/palladians/mina-js/@mina-js/utils@ae15f92",
2728
"@testing-library/react": "16.2.0",
2829
"@tsconfig/strictest": "2.0.5",
2930
"@turbo/gen": "2.4.4",
30-
"@mina-js/utils": "0.1.0",
3131
"@types/bun": "1.2.5",
3232
"autoprefixer": "10.4.21",
3333
"happy-dom": "14.12.3",

packages/key-management/src/chains/Mina/signingOperations.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import Client from "mina-signer"
22

3+
import {
4+
SignedTransactionSchema,
5+
toMinaSignerFormat,
6+
toNodeApiFormat,
7+
} from "@mina-js/utils"
38
import { SignableData } from "../../../../mina-core/src/borrowed-types"
49
import * as errors from "../../errors"
510
import type { ChainOperationArgs } from "../../types"
@@ -25,10 +30,17 @@ export function MinaSigningOperations<T extends MinaSignablePayload>(
2530
return minaClient.signTransaction<string>(payload.message, privateKey)
2631
}
2732
if ("transaction" in payload) {
28-
return minaClient.signTransaction(payload.transaction, privateKey)
33+
return SignedTransactionSchema.parse(
34+
minaClient.signTransaction(payload.transaction, privateKey),
35+
)
2936
}
3037
if ("command" in payload) {
31-
return minaClient.signTransaction(payload.command, privateKey)
38+
const signablePayload = toMinaSignerFormat(payload.command)
39+
const signed = minaClient.signTransaction(signablePayload, privateKey)
40+
return SignedTransactionSchema.parse({
41+
...signed,
42+
data: toNodeApiFormat(signed.data),
43+
})
3244
}
3345
throw new Error("Invalid transaction payload")
3446
}

packages/key-management/src/chains/Mina/types.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import type {
66
SignedFields,
77
SignedMessage,
88
SignedTransaction,
9-
TransactionPayload,
10-
ZkAppCommandProperties,
9+
TransactionOrZkAppCommandProperties,
1110
} from "@mina-js/utils"
1211
import type {
1312
ChainSpecificPayload,
@@ -72,8 +71,7 @@ export type MinaSessionCredentials = {
7271
}
7372

7473
export type MinaSignablePayload =
75-
| TransactionPayload
76-
| ZkAppCommandProperties
74+
| TransactionOrZkAppCommandProperties
7775
| Mina.MessageBody
7876
| Mina.SignableFields
7977
| Mina.CreatableNullifer

packages/web-provider/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
"dependencies": {
2020
"@mina-js/klesia-sdk": "0.1.0",
21-
"@mina-js/providers": "0.1.0",
21+
"@mina-js/providers": "https://pkg.pr.new/palladians/mina-js/@mina-js/providers@ae15f92",
2222
"@noble/hashes": "1.4.0",
2323
"@palladco/key-management": "workspace:*",
2424
"@palladco/mina-core": "workspace:*",

packages/web-provider/src/vault-service/vault-service.ts

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ import { useVault } from "@palladco/vault"
77
import dayjs from "dayjs"
88
import Client from "mina-signer"
99

10-
import type { SignedTransaction } from "@mina-js/utils"
10+
import { type SignedTransaction, toMinaSignerFormat } from "@mina-js/utils"
1111
import type {
12-
Payment,
13-
StakeDelegation,
12+
SignableData,
13+
Signed,
14+
SignedLegacy,
1415
ZkappCommand,
1516
} from "mina-signer/dist/node/mina-signer/src/types"
1617
import type { IVaultService } from "./types"
@@ -79,30 +80,31 @@ export const createVaultService = (): IVaultService => {
7980
const accounts = await getAccounts()
8081
const publicKey = accounts?.[0]
8182
if (!publicKey) throw new Error("Wallet is not initialized.")
82-
const type = getTxType(sendable.input as never)
83-
const signedData: StakeDelegation | Payment | ZkappCommand =
84-
sendable.input as any
83+
const type = getTxType(sendable.input)
8584
const verifyTransactionParams =
86-
"feePayer" in signedData
87-
? {
88-
signature: signedData.zkappCommand.feePayer.authorization,
89-
publicKey: signedData.zkappCommand.feePayer.body.publicKey,
90-
data: signedData,
91-
}
92-
: {
93-
signature: (sendable as any).signature,
94-
publicKey: signedData.from,
95-
data: signedData,
96-
}
85+
"signature" in sendable
86+
? ({
87+
signature: sendable.signature,
88+
publicKey: sendable.input.from,
89+
data: sendable.input,
90+
} as SignedLegacy<SignableData>)
91+
: ({
92+
signature: sendable.input.zkappCommand.feePayer.authorization,
93+
publicKey: sendable.input.zkappCommand.feePayer.body.publicKey,
94+
data: toMinaSignerFormat(sendable.input),
95+
} as Signed<ZkappCommand>)
9796
if (!signer.verifyTransaction(verifyTransactionParams))
9897
throw new Error("Invalid transaction.")
9998
const payload =
100-
type === "zkapp"
101-
? { input: sendable.input }
102-
: { input: sendable.input, signature: (sendable as any).signature }
99+
"signature" in sendable
100+
? {
101+
input: sendable.input,
102+
signature: sendable.signature,
103+
}
104+
: { input: sendable.input }
103105
const result = await klesia.request<"mina_sendTransaction">({
104106
method: "mina_sendTransaction",
105-
params: [payload as never, type],
107+
params: [payload, type],
106108
})
107109
addPendingTransaction({
108110
hash: result,

0 commit comments

Comments
 (0)