@metamask-previews/bridge-controller 42.0.0-preview-48cbf01a → 42.0.0-preview-331bec5d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/selectors.d.cts +1560 -0
- package/dist/selectors.d.cts.map +1 -1
- package/dist/selectors.d.mts +1560 -0
- package/dist/selectors.d.mts.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +3 -1
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +3 -1
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/validators.cjs +31 -1
- package/dist/utils/validators.cjs.map +1 -1
- package/dist/utils/validators.d.cts +281 -0
- package/dist/utils/validators.d.cts.map +1 -1
- package/dist/utils/validators.d.mts +281 -0
- package/dist/utils/validators.d.mts.map +1 -1
- package/dist/utils/validators.mjs +30 -0
- package/dist/utils/validators.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.mts","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"AAqBA,oBAAY,OAAO;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,UAAU;CACjB;AAED,oBAAY,SAAS;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAUD,eAAO,MAAM,YAAY,MAAO,MAAM,YAAuB,CAAC;AAK9D,eAAO,MAAM,iBAAiB;;;;;;;;;;IAC5B;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;;IAGH;;OAEG;;IAEH;;OAEG;;EAEH,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;EAOnC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;EAGrC,CAAC;AAUH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU/B,CAAC;AAEH,eAAO,MAAM,4BAA4B,SACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;CAGd,CAAC;AAEF,eAAO,MAAM,wBAAwB,SAC7B,OAAO;;;;;;;;;CAGd,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;QAhFxB;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;;QAGH;;WAEG;;QAEH;;WAEG;;;EAwDH,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;EAIzB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA3FrB;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;;QAGH;;WAEG;;QAEH;;WAEG;;;;;;;;;;;;;QA3BH;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;QAEH;;WAEG;;;QAGH;;WAEG;;QAEH;;WAEG;;;;;;;;;;;;;;EAyEH,CAAC;
|
|
1
|
+
{"version":3,"file":"validators.d.mts","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -109,6 +109,35 @@ export const StepSchema = type({
|
|
|
109
109
|
protocol: ProtocolSchema,
|
|
110
110
|
});
|
|
111
111
|
const RefuelDataSchema = StepSchema;
|
|
112
|
+
// Allow digit strings for amounts/validTo for flexibility across providers
|
|
113
|
+
const DigitStringOrNumberSchema = union([TruthyDigitStringSchema, number()]);
|
|
114
|
+
// Intent support (e.g., CoW Swap EIP-712 order signing)
|
|
115
|
+
const IntentProtocolSchema = enums(['cowswap']);
|
|
116
|
+
export const CowSwapOrderSchema = type({
|
|
117
|
+
// EIP-712 Order fields (subset required for signing/submission)
|
|
118
|
+
sellToken: HexAddressSchema,
|
|
119
|
+
buyToken: HexAddressSchema,
|
|
120
|
+
receiver: optional(HexAddressSchema),
|
|
121
|
+
validTo: DigitStringOrNumberSchema,
|
|
122
|
+
appData: string(),
|
|
123
|
+
appDataHash: HexStringSchema,
|
|
124
|
+
feeAmount: TruthyDigitStringSchema,
|
|
125
|
+
kind: enums(['sell', 'buy']),
|
|
126
|
+
partiallyFillable: boolean(),
|
|
127
|
+
// One of these is required by CoW depending on kind; we keep both optional here and rely on backend validation
|
|
128
|
+
sellAmount: optional(TruthyDigitStringSchema),
|
|
129
|
+
buyAmount: optional(TruthyDigitStringSchema),
|
|
130
|
+
// Optional owner/from for convenience when building domain/message
|
|
131
|
+
from: optional(HexAddressSchema),
|
|
132
|
+
});
|
|
133
|
+
export const IntentSchema = type({
|
|
134
|
+
protocol: IntentProtocolSchema,
|
|
135
|
+
order: CowSwapOrderSchema,
|
|
136
|
+
// Optional metadata to aid submission/routing
|
|
137
|
+
settlementContract: optional(HexAddressSchema),
|
|
138
|
+
relayer: optional(HexAddressSchema),
|
|
139
|
+
quoteId: optional(nullable(string())),
|
|
140
|
+
});
|
|
112
141
|
export const QuoteSchema = type({
|
|
113
142
|
requestId: string(),
|
|
114
143
|
srcChainId: ChainIdSchema,
|
|
@@ -156,6 +185,7 @@ export const QuoteSchema = type({
|
|
|
156
185
|
totalToAmountUsd: optional(string()),
|
|
157
186
|
priceImpact: optional(string()),
|
|
158
187
|
})),
|
|
188
|
+
intent: optional(IntentSchema),
|
|
159
189
|
});
|
|
160
190
|
export const TxDataSchema = type({
|
|
161
191
|
chainId: number(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.mjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { isValidHexAddress } from '@metamask/controller-utils';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n string,\n boolean,\n number,\n type,\n is,\n record,\n array,\n nullable,\n optional,\n enums,\n define,\n union,\n assert,\n pattern,\n intersection,\n} from '@metamask/superstruct';\nimport { CaipAssetTypeStruct, isStrictHexString } from '@metamask/utils';\n\nexport enum FeeType {\n METABRIDGE = 'metabridge',\n REFUEL = 'refuel',\n TX_FEE = 'txFee',\n}\n\nexport enum FeatureId {\n PERPS = 'perps',\n}\n\nexport enum ActionTypes {\n BRIDGE = 'bridge',\n SWAP = 'swap',\n REFUEL = 'refuel',\n}\n\nconst HexAddressSchema = define<string>('HexAddress', (v: unknown) =>\n isValidHexAddress(v as string, { allowNonPrefixed: false }),\n);\n\nconst HexStringSchema = define<string>('HexString', (v: unknown) =>\n isStrictHexString(v as string),\n);\n\nexport const truthyString = (s: string) => Boolean(s?.length);\nconst TruthyDigitStringSchema = pattern(string(), /^\\d+$/u);\n\nconst ChainIdSchema = number();\n\nexport const BridgeAssetSchema = type({\n /**\n * The chainId of the token\n */\n chainId: ChainIdSchema,\n /**\n * An address that the metaswap-api recognizes as the default token\n */\n address: string(),\n /**\n * The assetId of the token\n */\n assetId: CaipAssetTypeStruct,\n /**\n * The symbol of token object\n */\n symbol: string(),\n /**\n * The name for the network\n */\n name: string(),\n decimals: number(),\n /**\n * URL for token icon\n */\n icon: optional(nullable(string())),\n /**\n * URL for token icon\n */\n iconUrl: optional(nullable(string())),\n});\n\nexport const ChainConfigurationSchema = type({\n isActiveSrc: boolean(),\n isActiveDest: boolean(),\n refreshRate: optional(number()),\n topAssets: optional(array(string())),\n isUnifiedUIEnabled: optional(boolean()),\n isSingleSwapBridgeButtonEnabled: optional(boolean()),\n});\n\nexport const PriceImpactThresholdSchema = type({\n gasless: number(),\n normal: number(),\n});\n\nconst GenericQuoteRequestSchema = type({\n aggIds: optional(array(string())),\n bridgeIds: optional(array(string())),\n noFee: optional(boolean()),\n});\n\nconst FeatureIdSchema = enums(Object.values(FeatureId));\n\n/**\n * This is the schema for the feature flags response from the RemoteFeatureFlagController\n */\nexport const PlatformConfigSchema = type({\n priceImpactThreshold: optional(PriceImpactThresholdSchema),\n quoteRequestOverrides: optional(\n record(FeatureIdSchema, optional(GenericQuoteRequestSchema)),\n ),\n minimumVersion: string(),\n refreshRate: number(),\n maxRefreshCount: number(),\n support: boolean(),\n chains: record(string(), ChainConfigurationSchema),\n});\n\nexport const validateFeatureFlagsResponse = (\n data: unknown,\n): data is Infer<typeof PlatformConfigSchema> => {\n return is(data, PlatformConfigSchema);\n};\n\nexport const validateSwapsTokenObject = (\n data: unknown,\n): data is Infer<typeof BridgeAssetSchema> => {\n return is(data, BridgeAssetSchema);\n};\n\nexport const FeeDataSchema = type({\n amount: TruthyDigitStringSchema,\n asset: BridgeAssetSchema,\n});\n\nexport const ProtocolSchema = type({\n name: string(),\n displayName: optional(string()),\n icon: optional(string()),\n});\n\nexport const StepSchema = type({\n action: enums(Object.values(ActionTypes)),\n srcChainId: ChainIdSchema,\n destChainId: optional(ChainIdSchema),\n srcAsset: BridgeAssetSchema,\n destAsset: BridgeAssetSchema,\n srcAmount: string(),\n destAmount: string(),\n protocol: ProtocolSchema,\n});\n\nconst RefuelDataSchema = StepSchema;\n\nexport const QuoteSchema = type({\n requestId: string(),\n srcChainId: ChainIdSchema,\n srcAsset: BridgeAssetSchema,\n /**\n * The amount sent, in atomic amount: amount sent - fees\n * Some tokens have a fee of 0, so sometimes it's equal to amount sent\n */\n srcTokenAmount: string(),\n destChainId: ChainIdSchema,\n destAsset: BridgeAssetSchema,\n /**\n * The amount received, in atomic amount\n */\n destTokenAmount: string(),\n /**\n * The minimum amount that will be received, in atomic amount\n */\n minDestTokenAmount: string(),\n feeData: type({\n [FeeType.METABRIDGE]: FeeDataSchema,\n /**\n * This is the fee for the swap transaction taken from either the\n * src or dest token if the quote has gas fees included or \"gasless\"\n */\n [FeeType.TX_FEE]: optional(\n intersection([\n FeeDataSchema,\n type({\n maxFeePerGas: string(),\n maxPriorityFeePerGas: string(),\n }),\n ]),\n ),\n }),\n gasIncluded: optional(boolean()),\n /**\n * Whether the quote can use EIP-7702 delegated gasless execution\n */\n gasIncluded7702: optional(boolean()),\n bridgeId: string(),\n bridges: array(string()),\n steps: array(StepSchema),\n refuel: optional(RefuelDataSchema),\n priceData: optional(\n type({\n totalFromAmountUsd: optional(string()),\n totalToAmountUsd: optional(string()),\n priceImpact: optional(string()),\n }),\n ),\n});\n\nexport const TxDataSchema = type({\n chainId: number(),\n to: HexAddressSchema,\n from: HexAddressSchema,\n value: HexStringSchema,\n data: HexStringSchema,\n gasLimit: nullable(number()),\n effectiveGas: optional(number()),\n});\n\nexport const QuoteResponseSchema = type({\n quote: QuoteSchema,\n estimatedProcessingTimeInSeconds: number(),\n approval: optional(TxDataSchema),\n trade: union([TxDataSchema, string()]),\n});\n\nexport const validateQuoteResponse = (\n data: unknown,\n): data is Infer<typeof QuoteResponseSchema> => {\n assert(data, QuoteResponseSchema);\n return true;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"validators.mjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { isValidHexAddress } from '@metamask/controller-utils';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n string,\n boolean,\n number,\n type,\n is,\n record,\n array,\n nullable,\n optional,\n enums,\n define,\n union,\n assert,\n pattern,\n intersection,\n} from '@metamask/superstruct';\nimport { CaipAssetTypeStruct, isStrictHexString } from '@metamask/utils';\n\nexport enum FeeType {\n METABRIDGE = 'metabridge',\n REFUEL = 'refuel',\n TX_FEE = 'txFee',\n}\n\nexport enum FeatureId {\n PERPS = 'perps',\n}\n\nexport enum ActionTypes {\n BRIDGE = 'bridge',\n SWAP = 'swap',\n REFUEL = 'refuel',\n}\n\nconst HexAddressSchema = define<string>('HexAddress', (v: unknown) =>\n isValidHexAddress(v as string, { allowNonPrefixed: false }),\n);\n\nconst HexStringSchema = define<string>('HexString', (v: unknown) =>\n isStrictHexString(v as string),\n);\n\nexport const truthyString = (s: string) => Boolean(s?.length);\nconst TruthyDigitStringSchema = pattern(string(), /^\\d+$/u);\n\nconst ChainIdSchema = number();\n\nexport const BridgeAssetSchema = type({\n /**\n * The chainId of the token\n */\n chainId: ChainIdSchema,\n /**\n * An address that the metaswap-api recognizes as the default token\n */\n address: string(),\n /**\n * The assetId of the token\n */\n assetId: CaipAssetTypeStruct,\n /**\n * The symbol of token object\n */\n symbol: string(),\n /**\n * The name for the network\n */\n name: string(),\n decimals: number(),\n /**\n * URL for token icon\n */\n icon: optional(nullable(string())),\n /**\n * URL for token icon\n */\n iconUrl: optional(nullable(string())),\n});\n\nexport const ChainConfigurationSchema = type({\n isActiveSrc: boolean(),\n isActiveDest: boolean(),\n refreshRate: optional(number()),\n topAssets: optional(array(string())),\n isUnifiedUIEnabled: optional(boolean()),\n isSingleSwapBridgeButtonEnabled: optional(boolean()),\n});\n\nexport const PriceImpactThresholdSchema = type({\n gasless: number(),\n normal: number(),\n});\n\nconst GenericQuoteRequestSchema = type({\n aggIds: optional(array(string())),\n bridgeIds: optional(array(string())),\n noFee: optional(boolean()),\n});\n\nconst FeatureIdSchema = enums(Object.values(FeatureId));\n\n/**\n * This is the schema for the feature flags response from the RemoteFeatureFlagController\n */\nexport const PlatformConfigSchema = type({\n priceImpactThreshold: optional(PriceImpactThresholdSchema),\n quoteRequestOverrides: optional(\n record(FeatureIdSchema, optional(GenericQuoteRequestSchema)),\n ),\n minimumVersion: string(),\n refreshRate: number(),\n maxRefreshCount: number(),\n support: boolean(),\n chains: record(string(), ChainConfigurationSchema),\n});\n\nexport const validateFeatureFlagsResponse = (\n data: unknown,\n): data is Infer<typeof PlatformConfigSchema> => {\n return is(data, PlatformConfigSchema);\n};\n\nexport const validateSwapsTokenObject = (\n data: unknown,\n): data is Infer<typeof BridgeAssetSchema> => {\n return is(data, BridgeAssetSchema);\n};\n\nexport const FeeDataSchema = type({\n amount: TruthyDigitStringSchema,\n asset: BridgeAssetSchema,\n});\n\nexport const ProtocolSchema = type({\n name: string(),\n displayName: optional(string()),\n icon: optional(string()),\n});\n\nexport const StepSchema = type({\n action: enums(Object.values(ActionTypes)),\n srcChainId: ChainIdSchema,\n destChainId: optional(ChainIdSchema),\n srcAsset: BridgeAssetSchema,\n destAsset: BridgeAssetSchema,\n srcAmount: string(),\n destAmount: string(),\n protocol: ProtocolSchema,\n});\n\nconst RefuelDataSchema = StepSchema;\n\n// Allow digit strings for amounts/validTo for flexibility across providers\nconst DigitStringOrNumberSchema = union([TruthyDigitStringSchema, number()]);\n\n// Intent support (e.g., CoW Swap EIP-712 order signing)\nconst IntentProtocolSchema = enums(['cowswap']);\n\nexport const CowSwapOrderSchema = type({\n // EIP-712 Order fields (subset required for signing/submission)\n sellToken: HexAddressSchema,\n buyToken: HexAddressSchema,\n receiver: optional(HexAddressSchema),\n validTo: DigitStringOrNumberSchema,\n appData: string(),\n appDataHash: HexStringSchema,\n feeAmount: TruthyDigitStringSchema,\n kind: enums(['sell', 'buy']),\n partiallyFillable: boolean(),\n // One of these is required by CoW depending on kind; we keep both optional here and rely on backend validation\n sellAmount: optional(TruthyDigitStringSchema),\n buyAmount: optional(TruthyDigitStringSchema),\n // Optional owner/from for convenience when building domain/message\n from: optional(HexAddressSchema),\n});\n\nexport const IntentSchema = type({\n protocol: IntentProtocolSchema,\n order: CowSwapOrderSchema,\n // Optional metadata to aid submission/routing\n settlementContract: optional(HexAddressSchema),\n relayer: optional(HexAddressSchema),\n quoteId: optional(nullable(string())),\n});\n\nexport const QuoteSchema = type({\n requestId: string(),\n srcChainId: ChainIdSchema,\n srcAsset: BridgeAssetSchema,\n /**\n * The amount sent, in atomic amount: amount sent - fees\n * Some tokens have a fee of 0, so sometimes it's equal to amount sent\n */\n srcTokenAmount: string(),\n destChainId: ChainIdSchema,\n destAsset: BridgeAssetSchema,\n /**\n * The amount received, in atomic amount\n */\n destTokenAmount: string(),\n /**\n * The minimum amount that will be received, in atomic amount\n */\n minDestTokenAmount: string(),\n feeData: type({\n [FeeType.METABRIDGE]: FeeDataSchema,\n /**\n * This is the fee for the swap transaction taken from either the\n * src or dest token if the quote has gas fees included or \"gasless\"\n */\n [FeeType.TX_FEE]: optional(\n intersection([\n FeeDataSchema,\n type({\n maxFeePerGas: string(),\n maxPriorityFeePerGas: string(),\n }),\n ]),\n ),\n }),\n gasIncluded: optional(boolean()),\n /**\n * Whether the quote can use EIP-7702 delegated gasless execution\n */\n gasIncluded7702: optional(boolean()),\n bridgeId: string(),\n bridges: array(string()),\n steps: array(StepSchema),\n refuel: optional(RefuelDataSchema),\n priceData: optional(\n type({\n totalFromAmountUsd: optional(string()),\n totalToAmountUsd: optional(string()),\n priceImpact: optional(string()),\n }),\n ),\n intent: optional(IntentSchema),\n});\n\nexport const TxDataSchema = type({\n chainId: number(),\n to: HexAddressSchema,\n from: HexAddressSchema,\n value: HexStringSchema,\n data: HexStringSchema,\n gasLimit: nullable(number()),\n effectiveGas: optional(number()),\n});\n\nexport const QuoteResponseSchema = type({\n quote: QuoteSchema,\n estimatedProcessingTimeInSeconds: number(),\n approval: optional(TxDataSchema),\n trade: union([TxDataSchema, string()]),\n});\n\nexport const validateQuoteResponse = (\n data: unknown,\n): data is Infer<typeof QuoteResponseSchema> => {\n assert(data, QuoteResponseSchema);\n return true;\n};\n"]}
|
package/package.json
CHANGED