diff --git a/.changeset/metal-dolls-punch.md b/.changeset/metal-dolls-punch.md new file mode 100644 index 00000000..2e09b946 --- /dev/null +++ b/.changeset/metal-dolls-punch.md @@ -0,0 +1,5 @@ +--- +"@ledgerhq/wallet-api-core": minor +--- + +add optional attributes for PolkadotTransaction diff --git a/packages/core/src/families/polkadot/serializer.ts b/packages/core/src/families/polkadot/serializer.ts index 8cf296aa..9a068d32 100644 --- a/packages/core/src/families/polkadot/serializer.ts +++ b/packages/core/src/families/polkadot/serializer.ts @@ -8,6 +8,9 @@ export const serializePolkadotTransaction = ({ mode, fee, era, + validators, + numOfSlashingSpans, + rewardDestination, }: PolkadotTransaction): RawPolkadotTransaction => ({ amount: amount.toString(), recipient, @@ -15,6 +18,9 @@ export const serializePolkadotTransaction = ({ mode, fee: fee ? fee.toString() : undefined, era, + validators, + numOfSlashingSpans, + rewardDestination, }); export const deserializePolkadotTransaction = ({ @@ -24,6 +30,9 @@ export const deserializePolkadotTransaction = ({ mode, fee, era, + validators, + numOfSlashingSpans, + rewardDestination, }: RawPolkadotTransaction): PolkadotTransaction => ({ amount: new BigNumber(amount), recipient, @@ -31,4 +40,7 @@ export const deserializePolkadotTransaction = ({ mode, fee: fee ? new BigNumber(fee) : undefined, era, + validators, + numOfSlashingSpans, + rewardDestination, }); diff --git a/packages/core/src/families/polkadot/types.ts b/packages/core/src/families/polkadot/types.ts index 4012c36f..2c1f7e4e 100644 --- a/packages/core/src/families/polkadot/types.ts +++ b/packages/core/src/families/polkadot/types.ts @@ -1,18 +1,25 @@ -import type BigNumber from "bignumber.js"; +import BigNumber from "bignumber.js"; import type { z } from "zod"; -import type { TransactionCommon } from "../index"; +import { TransactionCommon } from "../types"; import type { schemaPolkadotOperationMode, + schemaPolkadotRewardDestination, schemaRawPolkadotTransaction, } from "./validation"; export type PolkadotOperationMode = z.infer; +export type PolkadotRewardDestination = z.infer< + typeof schemaPolkadotRewardDestination +>; export type PolkadotTransaction = TransactionCommon & { readonly family: RawPolkadotTransaction["family"]; mode: PolkadotOperationMode; fee?: BigNumber; era?: number; + validators?: string[]; + numOfSlashingSpans?: number; + rewardDestination?: PolkadotRewardDestination; }; export type RawPolkadotTransaction = z.infer< diff --git a/packages/core/src/families/polkadot/validation.ts b/packages/core/src/families/polkadot/validation.ts index c7f66f85..1d6f9978 100644 --- a/packages/core/src/families/polkadot/validation.ts +++ b/packages/core/src/families/polkadot/validation.ts @@ -13,9 +13,20 @@ export const schemaPolkadotOperationMode = z.enum([ "claimReward", ]); +export const schemaPolkadotRewardDestination = z.enum([ + "Staked", + "Stash", + "Controller", + "Account", + "None", +]); + export const schemaRawPolkadotTransaction = schemaTransactionCommon.extend({ family: z.literal(schemaFamilies.enum.polkadot), mode: schemaPolkadotOperationMode, fee: z.string().optional(), era: z.number().optional(), + validators: z.array(z.string()).optional(), + rewardDestination: schemaPolkadotRewardDestination.optional(), + numOfSlashingSpans: z.number().optional(), });