@stridge/kit 0.1.0-alpha.22 → 0.1.0-alpha.23

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.
@@ -1 +1 @@
1
- "use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{pickRelevantSettlement as t}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{defaultBlockExplorers as n}from"../../shared/utils/explorers.js";import{createEntityStore as r}from"../stridge-mock/store.js";import{NATIVE_QUOTE_ADDRESS as i,isStablecoinSymbol as a,toBaseUnits as o}from"./internal/encoding.js";import{resolveSdkEnv as s}from"./internal/env.js";import{buildKitMetadata as c}from"./internal/metadata.js";import{pollOnce as l}from"./internal/pollOnce.js";import{startPoll as u}from"./poll.js";import{balanceToWithdrawableBalancesPayload as d}from"../../flows/withdraw/driver/transformers/balanceToWithdrawableBalancesPayload.js";import{quoteToWithdrawalPayload as f}from"../../flows/withdraw/driver/transformers/quoteToWithdrawalPayload.js";import{settlementToWithdrawalPayload as p}from"../../flows/withdraw/driver/transformers/settlementToWithdrawalPayload.js";import{supportedAssetsToReceiveOptionsPayload as m}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{createApiClient as h}from"@stridge/sdk";function g(g){let _=h({projectKey:g.projectKey,env:s(g.environment)}),v=g.pollIntervals??{},y=v.processingMs??2e3,b=v.terminalMs??1e4,x=v.balancesMs??6e4,S=g.getI18n??(()=>e),C={...n(),...g.explorers??{}},w=r({withdrawableBalances:{status:`loading`},receiveOptions:{status:`loading`},quote:{status:`idle`},settlement:{status:`idle`}}),T,E,D;function O(e){let t=e.assets.find(e=>e.network_id===g.currency.networkId);if(!t)return;let n=g.currency.assetSymbol.toUpperCase(),r=t.native_currency?.symbol?.toUpperCase()===n?t.native_currency:void 0,i=t.assets.find(e=>e.symbol?.toUpperCase()===n),a={networkId:t.network_id,eip155Id:t.eip155_id,networkName:t.network_name,...t.native_currency?.logo?{chainLogoUrl:t.native_currency.logo}:{},decimals:i?.decimals??r?.decimals??18,address:i?.address??``,isNative:!i&&!!r,...i?.logo?{assetLogoUrl:i.logo}:r?.logo?{assetLogoUrl:r.logo}:{}};return i||r?a:void 0}function k(e){let t=S(),n=E,r=d(e,{i18n:t,networkId:g.currency.networkId,assetSymbol:g.currency.assetSymbol,...n?{fallbackMeta:{decimals:n.decimals,address:n.address,isNative:n.isNative,eip155Id:String(n.eip155Id),networkName:n.networkName,...n.chainLogoUrl?{chainLogoUrl:n.chainLogoUrl}:{},...n.assetLogoUrl?{assetLogoUrl:n.assetLogoUrl}:{}}}:{}});w.update({withdrawableBalances:{status:`ready`,payload:r,raw:e,response:e}})}let A=(async()=>{try{let[e,t]=await Promise.all([_.uda.supportedAssets(),_.balance.onchain(g.userAddress,{includeSpam:!1,includeZero:!1}).catch(()=>null)]);T=e,E=O(e);let n=m(e);w.update({receiveOptions:{status:`ready`,payload:n,raw:e.assets,response:e}}),t?k(t):E&&k({wallet_address:g.userAddress,fetched_at:new Date().toISOString(),total_usd:`0`,chains:[]})}catch(e){let t=e instanceof Error?e:Error(String(e));w.update({receiveOptions:{status:`error`,error:t}})}})();function j(){return c({flow:`withdraw`,...g.metadata?{hostMetadata:g.metadata}:{},extras:{source:{networkId:g.currency.networkId,assetSymbol:g.currency.assetSymbol}}})}function M(e,t){if(!T)return;let n=T.assets.find(t=>t.eip155_id===e);if(!n)return;let r=t.toUpperCase(),i=n.native_currency?.symbol?.toUpperCase()===r?n.native_currency:void 0,a=n.assets.find(e=>e.symbol?.toUpperCase()===r);if(!(!i&&!a))return{chainId:n.eip155_id,symbol:a?.symbol??i?.symbol??t,decimals:a?.decimals??i?.decimals??18,address:a?.address??``,isNative:!a&&!!i,...a?.logo?{assetLogoUrl:a.logo}:i?.logo?{assetLogoUrl:i.logo}:{},networkId:n.network_id,networkName:n.network_name,...i?.logo?{chainLogoUrl:i.logo}:{}}}function N(e){let t=w.getSnapshot().receiveOptions;if(!(t.status!==`ready`&&t.status!==`stale`))return t.payload.find(t=>t.eip155Id===e)}return{getSnapshot(){return w.getSnapshot()},subscribe(e){return w.subscribe(e)},async requestQuote(e,t){w.update({quote:{status:`loading`}});try{if(await A,t.aborted)return;let n=E;if(!n)throw Error(`Stridge withdraw driver: source currency ${g.currency.assetSymbol} not found on network ${g.currency.networkId} in supportedAssets.`);let r=M(e.receiveChainId,e.receiveTokenSymbol);if(!r)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let s=o(e.amount,n.decimals),c=await _.uda.quote({fromNetworkId:n.eip155Id,fromAsset:n.isNative?i:n.address,toNetworkId:r.chainId,toAsset:r.isNative?i:r.address,amount:s,fromAddress:g.userAddress,toAddress:e.recipientAddress},{signal:t});if(t.aborted)return;let l=a(g.currency.assetSymbol)?1:void 0,u=a(r.symbol)?1:void 0,d=f(c,{i18n:S(),receiveSide:r,sourceAmount:e.amount,sendDecimals:n.decimals,sendSymbol:g.currency.assetSymbol,now:Date.now(),...l===void 0?{}:{sendPriceUsd:l},...u===void 0?{}:{receivePriceUsd:u}});w.update({quote:{status:`ready`,payload:d,raw:c,response:c}})}catch(e){if(t.aborted)return;let n=e instanceof Error?e:Error(String(e));w.update({quote:{status:`error`,error:n}})}},async prepareWithdrawal(e,t){if(await A,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=E;if(!n)throw Error(`Stridge withdraw driver: source currency ${g.currency.assetSymbol} not found on network ${g.currency.networkId} in supportedAssets.`);let r=M(e.receiveChainId,e.receiveTokenSymbol);if(!r)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let i=await _.gateway.start({owner:g.userAddress,destination:{network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},metadata:j()},{signal:t});if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let a=i.deposit_addresses.find(e=>Number(e.eip155_id)===n.eip155Id);if(!a)throw Error(`Stridge withdraw driver: no UDA deposit address provisioned on chain ${n.eip155Id} for the brand currency. Check that supportedAssets advertises this chain.`);return D={network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},{depositTarget:{address:a.address,chainId:n.eip155Id,tokenSymbol:g.currency.assetSymbol,tokenAddress:n.isNative?``:n.address,tokenDecimals:n.decimals,isNative:n.isNative,amount:e.amount},correlation:{owner:g.userAddress}}},watchSettlement(e,n,r){let i=e=>l(_,g.userAddress,D,e),a=!1;u({signal:r,fetch:i,listener:r=>{if(!r)return;let i=E?o(e.form.amount,E.decimals).toString():void 0,s=e.tx?.hash?t(r,{txHash:e.tx.hash}):t(r,{bestMatch:{destination:{chainId:e.form.receiveChainId,tokenSymbol:e.form.receiveTokenSymbol,recipientAddress:e.form.recipientAddress},submittedAt:e.submittedAt,...i?{sourceAmountBaseUnits:i}:{}}});if(!s)return;let c=S(),l=N(Number(r.destination.eip155_id)),u=l?.tokens.find(e=>e.symbol===r.destination.asset_symbol),d={...l?.chainLogoUrl?{chainLogoUrl:l.chainLogoUrl}:{},...u?.assetLogoUrl?{assetLogoUrl:u.assetLogoUrl}:{},...l?.networkName?{networkName:l.networkName}:{}},f=p(s,r,{i18n:c,explorers:C,...Object.keys(d).length>0?{receiveAssetEnrichment:d}:{}});f.kind!==`pending`&&(a=!0);let m={status:`ready`,payload:f,raw:s,response:r};w.update({settlement:m}),n(m)},nextIntervalMs:()=>a?b:y})},watchWithdrawableBalances(e,t,n){u({signal:n,fetch:async e=>{try{return await A,e.aborted?null:await _.balance.onchain(g.userAddress,{signal:e,includeSpam:!1,includeZero:!1})}catch{return null}},listener:e=>{e&&k(e),t(w.getSnapshot().withdrawableBalances)},nextIntervalMs:()=>x})}}}export{g as createStridgeWithdrawDriver};
1
+ "use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{pickRelevantSettlement as t}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{defaultBlockExplorers as n}from"../../shared/utils/explorers.js";import{createEntityStore as r}from"../stridge-mock/store.js";import{NATIVE_QUOTE_ADDRESS as i,isStablecoinSymbol as a,toBaseUnits as o}from"./internal/encoding.js";import{resolveSdkEnv as s}from"./internal/env.js";import{buildKitMetadata as c}from"./internal/metadata.js";import{pollOnce as l}from"./internal/pollOnce.js";import{startPoll as u}from"./poll.js";import{balanceToWithdrawableBalancesPayload as d}from"../../flows/withdraw/driver/transformers/balanceToWithdrawableBalancesPayload.js";import{quoteToWithdrawalPayload as f}from"../../flows/withdraw/driver/transformers/quoteToWithdrawalPayload.js";import{settlementToWithdrawalPayload as p}from"../../flows/withdraw/driver/transformers/settlementToWithdrawalPayload.js";import{supportedAssetsToReceiveOptionsPayload as m}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{createApiClient as h}from"@stridge/sdk";function g(g){let _=h({projectKey:g.projectKey,env:s(g.environment)}),v=g.pollIntervals??{},y=v.processingMs??2e3,b=v.terminalMs??1e4,x=v.balancesMs??6e4,S=g.getI18n??(()=>e),C={...n(),...g.explorers??{}},w=r({withdrawableBalances:{status:`loading`},receiveOptions:{status:`loading`},quote:{status:`idle`},settlement:{status:`idle`}}),T,E,D;function O(e){let t=e.assets.find(e=>e.network_id===g.currency.networkId);if(!t)return;let n=g.currency.assetSymbol.toUpperCase(),r=t.native_currency?.symbol?.toUpperCase()===n?t.native_currency:void 0,i=t.assets.find(e=>e.symbol?.toUpperCase()===n),a={networkId:t.network_id,eip155Id:t.eip155_id,networkName:t.network_name,...t.native_currency?.logo?{chainLogoUrl:t.native_currency.logo}:{},decimals:i?.decimals??r?.decimals??18,address:i?.address??``,isNative:!i&&!!r,...i?.logo?{assetLogoUrl:i.logo}:r?.logo?{assetLogoUrl:r.logo}:{}};return i||r?a:void 0}function k(e){let t=S(),n=E,r=d(e,{i18n:t,networkId:g.currency.networkId,assetSymbol:g.currency.assetSymbol,...n?{fallbackMeta:{decimals:n.decimals,address:n.address,isNative:n.isNative,eip155Id:String(n.eip155Id),networkName:n.networkName,...n.chainLogoUrl?{chainLogoUrl:n.chainLogoUrl}:{},...n.assetLogoUrl?{assetLogoUrl:n.assetLogoUrl}:{}}}:{}});w.update({withdrawableBalances:{status:`ready`,payload:r,raw:e,response:e}})}let A=(async()=>{try{let[e,t]=await Promise.all([_.uda.supportedAssets(),_.balance.onchain(g.userAddress,{includeSpam:!1,includeZero:!1}).catch(()=>null)]);T=e,E=O(e);let n=m(e);w.update({receiveOptions:{status:`ready`,payload:n,raw:e.assets,response:e}}),t?k(t):E&&k({wallet_address:g.userAddress,fetched_at:new Date().toISOString(),total_usd:`0`,chains:[]})}catch(e){let t=e instanceof Error?e:Error(String(e));w.update({receiveOptions:{status:`error`,error:t}})}})();function j(){return c({flow:`withdraw`,...g.metadata?{hostMetadata:g.metadata}:{},extras:{source:{networkId:g.currency.networkId,assetSymbol:g.currency.assetSymbol}}})}function M(e,t){if(!T)return;let n=T.assets.find(t=>t.eip155_id===e);if(!n)return;let r=t.toUpperCase(),i=n.native_currency?.symbol?.toUpperCase()===r?n.native_currency:void 0,a=n.assets.find(e=>e.symbol?.toUpperCase()===r);if(!(!i&&!a))return{chainId:n.eip155_id,symbol:a?.symbol??i?.symbol??t,decimals:a?.decimals??i?.decimals??18,address:a?.address??``,isNative:!a&&!!i,...a?.logo?{assetLogoUrl:a.logo}:i?.logo?{assetLogoUrl:i.logo}:{},networkId:n.network_id,networkName:n.network_name,...i?.logo?{chainLogoUrl:i.logo}:{}}}function N(e){let t=w.getSnapshot().receiveOptions;if(!(t.status!==`ready`&&t.status!==`stale`))return t.payload.find(t=>t.eip155Id===e)}return{getSnapshot(){return w.getSnapshot()},subscribe(e){return w.subscribe(e)},async requestQuote(e,t){w.update({quote:{status:`loading`}});try{if(await A,t.aborted)return;let n=E;if(!n)throw Error(`Stridge withdraw driver: source currency ${g.currency.assetSymbol} not found on network ${g.currency.networkId} in supportedAssets.`);let r=M(e.receiveChainId,e.receiveTokenSymbol);if(!r)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let s=o(e.amount,n.decimals),c=await _.uda.quote({fromNetworkId:n.eip155Id,fromAsset:n.isNative?i:n.address,toNetworkId:r.chainId,toAsset:r.isNative?i:r.address,amount:s,fromAddress:g.userAddress,toAddress:e.recipientAddress},{signal:t});if(t.aborted)return;let l=a(g.currency.assetSymbol)?1:void 0,u=a(r.symbol)?1:void 0,d=f(c,{i18n:S(),receiveSide:r,sourceAmount:e.amount,sendDecimals:n.decimals,sendSymbol:g.currency.assetSymbol,now:Date.now(),...l===void 0?{}:{sendPriceUsd:l},...u===void 0?{}:{receivePriceUsd:u}});w.update({quote:{status:`ready`,payload:d,raw:c,response:c}})}catch(e){if(t.aborted)return;let n=e instanceof Error?e:Error(String(e));w.update({quote:{status:`error`,error:n}})}},async prepareWithdrawal(e,t){if(await A,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=E;if(!n)throw Error(`Stridge withdraw driver: source currency ${g.currency.assetSymbol} not found on network ${g.currency.networkId} in supportedAssets.`);let r=M(e.receiveChainId,e.receiveTokenSymbol);if(!r)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let i=await _.gateway.start({owner:g.userAddress,destination:{network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},metadata:j()},{signal:t});if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let a=i.deposit_addresses.find(e=>Number(e.eip155_id)===n.eip155Id);if(!a)throw Error(`Stridge withdraw driver: no UDA deposit address provisioned on chain ${n.eip155Id} for the brand currency. Check that supportedAssets advertises this chain.`);return D={network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},{depositTarget:{address:a.address,chainId:n.eip155Id,tokenSymbol:g.currency.assetSymbol,tokenAddress:n.isNative?``:n.address,tokenDecimals:n.decimals,isNative:n.isNative,amount:e.amount},correlation:{owner:g.userAddress}}},watchSettlement(e,n,r){let i=e=>l(_,g.userAddress,D,e),a=!1;u({signal:r,fetch:i,listener:r=>{if(!r)return;let i=E?o(e.form.amount,E.decimals).toString():void 0,s=e.tx?.hash?t(r,{txHash:e.tx.hash}):t(r,{bestMatch:{destination:{chainId:e.form.receiveChainId,tokenSymbol:e.form.receiveTokenSymbol,recipientAddress:e.form.recipientAddress},submittedAt:e.submittedAt,...i?{sourceAmountBaseUnits:i}:{}}});if(!s)return;let c=S(),l=N(Number(r.destination.eip155_id)),u=l?.tokens.find(e=>e.symbol===r.destination.asset_symbol),d={...l?.chainLogoUrl?{chainLogoUrl:l.chainLogoUrl}:{},...u?.assetLogoUrl?{assetLogoUrl:u.assetLogoUrl}:{},...l?.networkName?{networkName:l.networkName}:{}},f=p(s,r,{i18n:c,explorers:C,...Object.keys(d).length>0?{receiveAssetEnrichment:d}:{},...E?{sendAssetDecimals:E.decimals}:{},...u?.decimals===void 0?{}:{receiveAssetDecimals:u.decimals}});f.kind!==`pending`&&(a=!0);let m={status:`ready`,payload:f,raw:s,response:r};w.update({settlement:m}),n(m)},nextIntervalMs:()=>a?b:y})},watchWithdrawableBalances(e,t,n){u({signal:n,fetch:async e=>{try{return await A,e.aborted?null:await _.balance.onchain(g.userAddress,{signal:e,includeSpam:!1,includeZero:!1})}catch{return null}},listener:e=>{e&&k(e),t(w.getSnapshot().withdrawableBalances)},nextIntervalMs:()=>x})}}}export{g as createStridgeWithdrawDriver};
@@ -1 +1 @@
1
- "use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{formatDurationCompact as t}from"../../shared/format/formatDurationCompact.js";import{formatTimestamp as n}from"../../shared/format/formatTimestamp.js";import{shortenAddress as r}from"../../shared/format/shortenAddress.js";import{supportedAssetsToReceiveOptionsPayload as i}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{DEFAULT_MOCK_ASSET as a,buildDefaultSupportedAssetsResponse as o,resolveMockAsset as s}from"./fixtures.js";const c=`0x32995Fb47918BD37133dB46F21c5Ed906140Dd41`,l=`0xd41f5e9e5b1c2c4d8e7a0bf3a9e6c1d2b8f5d4c3e2a1b0c9d8e7f6a5b4c3d2e1`;function u(e){return{symbol:e.symbol,decimals:e.decimals,address:e.address,isNative:e.isNative,assetLogoUrl:e.assetLogoUrl,networkName:e.networkName,eip155Id:e.eip155IdString,networkId:e.networkId,chainLogoUrl:e.chainLogoUrl}}function d(e){return`${e.explorerBase}/tx/`}const f={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3},p=u(a),m=4.00613;function h(e=a){let t=u(e);return[{networkId:t.networkId,networkName:t.networkName,eip155Id:t.eip155Id,...t.chainLogoUrl?{chainLogoUrl:t.chainLogoUrl}:{},symbol:t.symbol,decimals:t.decimals,address:t.address,...t.assetLogoUrl?{assetLogoUrl:t.assetLogoUrl}:{},isNative:t.isNative,amount:{value:4.01,formatted:`4.01`},amountUsd:{value:4.01,formatted:`$4.01`}}]}function g(e=m,t=a){let n=D(e);return{receiveAsset:u(t),receiveAmount:{value:e,formatted:n},receiveAmountUsd:{value:e,formatted:`$${e.toFixed(2)}`},breakdown:{selectedRoute:{provider:`mock`,scenario:`same_chain_same_token`,label:`Mock · same chain same token`},networkCost:{value:0,formatted:`$0.00`},priceImpact:{value:0,formatted:`0.00%`}},quoteTotalSeconds:30,expiresAt:Date.now()+3e4}}function _(t=e,i=m,o=c,s=l,f=a){let p=Date.now();return{kind:`pending`,receiveAsset:u(f),receiveAmount:{value:i,formatted:D(i)},recipient:{value:o,formatted:r(o)},submittedAt:{value:p,formatted:n(p,t)},txHash:{value:s,formatted:r(s)},txExplorerUrl:`${d(f)}${s}`}}function v(i=e,o=m,s=c,f=14,p=l,h=a,g=`0xa17b4c9e2d68f0a5c3b91e7f4d52a86b09c1d7e3f8a4b2c5d6e9f0a1b2c3d4e5`){let _=Date.now(),v=f*1e3,y=_-v;return{kind:`succeeded`,receiveAsset:u(h),receiveAmount:{value:o,formatted:D(o)},recipient:{value:s,formatted:r(s)},submittedAt:{value:y,formatted:n(y,i)},filledAt:{value:_,formatted:n(_,i)},totalTime:{value:f,formatted:t(v,i)},txHash:{value:p,formatted:r(p)},txExplorerUrl:`${d(h)}${p}`,completionTx:{hash:{value:g,formatted:r(g)},explorerUrl:`${d(h)}${g}`}}}function y(t=e,i=`unknown`,o=m,s=c,f=l,p=a){let h=Date.now(),g=h-5e3;return{kind:`failed`,failureKind:i,receiveAsset:u(p),receiveAmount:{value:o,formatted:D(o)},recipient:{value:s,formatted:r(s)},submittedAt:{value:g,formatted:n(g,t)},failedAt:{value:h,formatted:n(h,t)},txHash:{value:f,formatted:r(f)},txExplorerUrl:`${d(p)}${f}`}}function b(t={}){let n={...f,...t.latency},r=t.autoSettleTo??`succeeded`,a=t.pendingTriggerToSuccessMs===void 0?3500:t.pendingTriggerToSuccessMs,d=t.getI18n??(()=>e),p=s(t.asset),b=u(p),S=h(p),D=x(S),O=o(),k=i(O),A={withdrawableBalances:t.initialState?.withdrawableBalances??{status:`ready`,payload:S,raw:D,response:D},receiveOptions:t.initialState?.receiveOptions??{status:`ready`,payload:k,raw:O.assets,response:O},quote:t.initialState?.quote??{status:`idle`},settlement:t.initialState?.settlement??{status:`idle`}},j=A,M=new Set,N=new Set,P=new Set,F=new Set,I=()=>{for(let e of M)e()},L=e=>{if(j={...j,...e},I(),e.settlement)for(let e of N)e(j.settlement);if(e.withdrawableBalances)for(let e of P)e(j.withdrawableBalances)},R=(e,t)=>{let n=setTimeout(()=>{F.delete(n),e()},t);F.add(n)},z=null,B=!1,V=0;function H(){return V+=1,`0x${V.toString(16).padStart(8,`0`)}${l.slice(10)}`}let U={getSnapshot:()=>j,subscribe(e){return M.add(e),()=>{M.delete(e)}},async requestQuote(e,t){L({quote:{status:`loading`}}),await E(n.quote,t);let r=g(e.amount,p),i=C(r,e.amount,b);L({quote:{status:`ready`,payload:r,raw:i,response:i}})},async prepareWithdrawal(e,t){await E(n.submit,t),z={amount:e.amount,recipient:e.recipientAddress};let r=H();return W(e.amount,e.recipientAddress,r,t),{depositTarget:{address:`0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC`,chainId:Number(p.eip155IdString),tokenSymbol:p.symbol,tokenAddress:p.address,tokenDecimals:p.decimals,isNative:p.isNative,amount:e.amount},correlation:{owner:`0x70997970C51812dc3A010C7d01b50e0d17dc79C8`}}},watchSettlement(e,t,n){N.add(t);let r=j.settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>N.delete(t),{once:!0})},watchWithdrawableBalances(e,t,n){P.add(t);let r=j.withdrawableBalances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>P.delete(t),{once:!0})}};function W(e,t,i,a){B||(B=!0,R(()=>{if(a.aborted){B=!1;return}let o=_(d(),e,t,i,p),s=w(o,b);if(L({settlement:{status:`ready`,payload:o,raw:s,response:T(s,o)}}),r===`none`){B=!1;return}R(()=>{if(B=!1,a.aborted)return;let n=r===`succeeded`?v(d(),e,t,14,i,p):y(d(),`unknown`,e,t,i,p),o=w(n,b);L({settlement:{status:`ready`,payload:n,raw:o,response:T(o,n)}})},n.processingTerminal)},n.processingPendingDelay))}let G={triggerWithdrawalInProgress(e){let{amount:t,recipient:n}=K(),r={..._(d(),t,n,H(),p),...e},i=w(r,b);L({settlement:{status:`ready`,payload:r,raw:i,response:T(i,r)}}),a!==null&&R(()=>G.triggerWithdrawalSuccess(),a)},triggerWithdrawalSuccess(e){let{amount:t,recipient:n}=K(),r={...v(d(),t,n,14,H(),p),...e},i=w(r,b);L({settlement:{status:`ready`,payload:r,raw:i,response:T(i,r)}})},triggerWithdrawalFailed(e,t){let{amount:n,recipient:r}=K(),i={...y(d(),e,n,r,H(),p),...t},a=w(i,b);L({settlement:{status:`ready`,payload:i,raw:a,response:T(a,i)}})},triggerQuoteFailure(e){L({quote:{status:`error`,error:e}})},reset(){for(let e of F)clearTimeout(e);F.clear(),B=!1,z=null,V=0,j=A,I()}};function K(){return{amount:z?.amount??m,recipient:z?.recipient??c}}return{driver:U,triggers:G}}function x(e){let t=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{wallet_address:`0xMockWallet000000000000000000000000000000`,fetched_at:new Date(0).toISOString(),total_usd:t.toFixed(2),chains:e.map(e=>({eip155_id:e.eip155Id?Number(e.eip155Id):0,stridge_network_id:e.networkId??``,network_name:e.networkName.toLowerCase(),label:e.networkName,scanner_url:``,native_symbol:``,subtotal_usd:(e.amountUsd?.value??0).toFixed(2),tokens:[{token_address:e.address,symbol:e.symbol,name:e.symbol,decimals:e.decimals,logo:e.assetLogoUrl??``,is_native:e.isNative,is_spam:!1,raw_amount:S(e.amount.value,e.decimals).toString(),amount:e.amount.value.toString(),amount_usd:(e.amountUsd?.value??0).toFixed(2),usd_price:e.amount.value>0?((e.amountUsd?.value??0)/e.amount.value).toFixed(6):`0`,price_change_24h_pct:`0`}]}))}}function S(e,t){if(!Number.isFinite(e)||e<0)return 0n;let[n,r=``]=e.toFixed(t).split(`.`),i=r.padEnd(t,`0`).slice(0,t);return BigInt((n??`0`)+i)}function C(e,t,n=p){let r=S(e.receiveAmount.value,e.receiveAsset.decimals).toString(),i=S(t,n.decimals).toString(),a=t>0?(e.receiveAmount.value/t).toFixed(6):`1`;return{from:{network_id:Number(n.eip155Id??56),asset_address:n.address,amount:i},to:{network_id:Number(e.receiveAsset.eip155Id??56),asset_address:e.receiveAsset.address,amount:r},exchange_rate:a,fees:{total_fee:`0`},route:{provider:`mock`,scenario:`same_chain_same_token`,estimated_time_seconds:30},expires_at:new Date(e.expiresAt).toISOString()}}function w(e,t=p){let n=new Date(e.submittedAt.value).toISOString(),r=e.kind===`succeeded`?`completed`:e.kind===`failed`?`failed`:`routing`,i=e.kind===`succeeded`?e.filledAt.value:e.kind===`failed`?e.failedAt.value:e.submittedAt.value,a={tx_id:(e.kind===`succeeded`?e.txHash.value:e.txHash?.value)??``,asset_symbol:t.symbol,asset_address:t.address,eip155_id:t.eip155Id??`56`,network_id:t.networkId??`9006`,network_name:t.networkName.toLowerCase(),raw_amount:S(e.receiveAmount.value,t.decimals).toString(),amount:e.receiveAmount.value.toString(),confirmed_at:n},o={address:e.recipient.value,asset_address:e.receiveAsset.address,asset_symbol:e.receiveAsset.symbol,eip155_id:e.receiveAsset.eip155Id??``,network_id:e.receiveAsset.networkId??``,network_name:e.receiveAsset.networkName.toLowerCase(),raw_amount:S(e.receiveAmount.value,e.receiveAsset.decimals).toString(),amount:e.receiveAmount.value.toString(),...e.kind===`succeeded`?{settled_at:new Date(e.filledAt.value).toISOString(),...e.completionTx?{tx_id:e.completionTx.hash.value}:{}}:{}};return{id:`mock-settlement-${e.recipient.value}-${a.tx_id}`,status:r,created_at:n,updated_at:new Date(i).toISOString(),events:[],fees:{raw_amount:`0`},from:a,to:o,route:{provider:`mock`,scenario:`withdraw_v1`},...e.kind===`failed`?{error:e.failureKind}:{}}}function T(e,t){let n=t.kind!==`pending`;return{owner:`0xMockOwner`,uda_id:`mock-uda`,created_at:e.created_at,updated_at:e.updated_at,is_terminal:n,status:t.kind===`succeeded`?`completed`:t.kind===`failed`?`failed`:`to_pending`,destination:{address:t.recipient.value,asset_address:t.receiveAsset.address,asset_decimals:t.receiveAsset.decimals,asset_symbol:t.receiveAsset.symbol,eip155_id:t.receiveAsset.eip155Id??``,network_id:t.receiveAsset.networkId??``,network_name:t.receiveAsset.networkName},settlements:[e]}}function E(e,t){return new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),t.removeEventListener(`abort`,a),r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a)})}function D(e){return Number.isInteger(e)?e.toFixed(2):e.toFixed(5)}export{h as buildDefaultWithdrawableBalances,y as buildDefaultWithdrawalFailurePayload,_ as buildDefaultWithdrawalPendingPayload,g as buildDefaultWithdrawalQuotePayload,v as buildDefaultWithdrawalSuccessPayload,b as createStridgeMockWithdrawDriver};
1
+ "use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{formatDurationCompact as t}from"../../shared/format/formatDurationCompact.js";import{formatTimestamp as n}from"../../shared/format/formatTimestamp.js";import{formatUsd as r}from"../../shared/format/formatUsd.js";import{shortenAddress as i}from"../../shared/format/shortenAddress.js";import{supportedAssetsToReceiveOptionsPayload as a}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{DEFAULT_MOCK_ASSET as o,buildDefaultSupportedAssetsResponse as s,resolveMockAsset as c}from"./fixtures.js";const l=`0x32995Fb47918BD37133dB46F21c5Ed906140Dd41`,u=`0xd41f5e9e5b1c2c4d8e7a0bf3a9e6c1d2b8f5d4c3e2a1b0c9d8e7f6a5b4c3d2e1`;function d(e){return{symbol:e.symbol,decimals:e.decimals,address:e.address,isNative:e.isNative,assetLogoUrl:e.assetLogoUrl,networkName:e.networkName,eip155Id:e.eip155IdString,networkId:e.networkId,chainLogoUrl:e.chainLogoUrl}}function f(e){return`${e.explorerBase}/tx/`}const p={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3},m=d(o),h=4.00613;function g(e=o){let t=d(e);return[{networkId:t.networkId,networkName:t.networkName,eip155Id:t.eip155Id,...t.chainLogoUrl?{chainLogoUrl:t.chainLogoUrl}:{},symbol:t.symbol,decimals:t.decimals,address:t.address,...t.assetLogoUrl?{assetLogoUrl:t.assetLogoUrl}:{},isNative:t.isNative,amount:{value:4.01,formatted:`4.01`},amountUsd:{value:4.01,formatted:`$4.01`}}]}function _(e=h,t=o){let n=O(e);return{receiveAsset:d(t),receiveAmount:{value:e,formatted:n},receiveAmountUsd:{value:e,formatted:`$${e.toFixed(2)}`},breakdown:{selectedRoute:{provider:`mock`,scenario:`same_chain_same_token`,label:`Mock · same chain same token`},networkCost:{value:0,formatted:`$0.00`},priceImpact:{value:0,formatted:`0.00%`}},quoteTotalSeconds:30,expiresAt:Date.now()+3e4}}function v(t=e,a=h,s=l,c=u,p=o){let m=Date.now();return{kind:`pending`,receiveAsset:d(p),receiveAmount:{value:a,formatted:O(a)},receiveAmountUsd:{value:a,formatted:r(a,t)},recipient:{value:s,formatted:i(s)},submittedAt:{value:m,formatted:n(m,t)},txHash:{value:c,formatted:i(c)},txExplorerUrl:`${f(p)}${c}`}}function y(r=e,a=h,s=l,c=14,p=u,m=o,g=`0xa17b4c9e2d68f0a5c3b91e7f4d52a86b09c1d7e3f8a4b2c5d6e9f0a1b2c3d4e5`){let _=Date.now(),v=c*1e3,y=_-v;return{kind:`succeeded`,receiveAsset:d(m),receiveAmount:{value:a,formatted:O(a)},recipient:{value:s,formatted:i(s)},submittedAt:{value:y,formatted:n(y,r)},filledAt:{value:_,formatted:n(_,r)},totalTime:{value:c,formatted:t(v,r)},txHash:{value:p,formatted:i(p)},txExplorerUrl:`${f(m)}${p}`,completionTx:{hash:{value:g,formatted:i(g)},explorerUrl:`${f(m)}${g}`}}}function b(t=e,r=`unknown`,a=h,s=l,c=u,p=o){let m=Date.now(),g=m-5e3;return{kind:`failed`,failureKind:r,receiveAsset:d(p),receiveAmount:{value:a,formatted:O(a)},recipient:{value:s,formatted:i(s)},submittedAt:{value:g,formatted:n(g,t)},failedAt:{value:m,formatted:n(m,t)},txHash:{value:c,formatted:i(c)},txExplorerUrl:`${f(p)}${c}`}}function x(t={}){let n={...p,...t.latency},r=t.autoSettleTo??`succeeded`,i=t.pendingTriggerToSuccessMs===void 0?3500:t.pendingTriggerToSuccessMs,o=t.getI18n??(()=>e),f=c(t.asset),m=d(f),x=g(f),C=S(x),O=s(),k=a(O),A={withdrawableBalances:t.initialState?.withdrawableBalances??{status:`ready`,payload:x,raw:C,response:C},receiveOptions:t.initialState?.receiveOptions??{status:`ready`,payload:k,raw:O.assets,response:O},quote:t.initialState?.quote??{status:`idle`},settlement:t.initialState?.settlement??{status:`idle`}},j=A,M=new Set,N=new Set,P=new Set,F=new Set,I=()=>{for(let e of M)e()},L=e=>{if(j={...j,...e},I(),e.settlement)for(let e of N)e(j.settlement);if(e.withdrawableBalances)for(let e of P)e(j.withdrawableBalances)},R=(e,t)=>{let n=setTimeout(()=>{F.delete(n),e()},t);F.add(n)},z=null,B=!1,V=0;function H(){return V+=1,`0x${V.toString(16).padStart(8,`0`)}${u.slice(10)}`}let U={getSnapshot:()=>j,subscribe(e){return M.add(e),()=>{M.delete(e)}},async requestQuote(e,t){L({quote:{status:`loading`}}),await D(n.quote,t);let r=_(e.amount,f),i=w(r,e.amount,m);L({quote:{status:`ready`,payload:r,raw:i,response:i}})},async prepareWithdrawal(e,t){await D(n.submit,t),z={amount:e.amount,recipient:e.recipientAddress};let r=H();return W(e.amount,e.recipientAddress,r,t),{depositTarget:{address:`0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC`,chainId:Number(f.eip155IdString),tokenSymbol:f.symbol,tokenAddress:f.address,tokenDecimals:f.decimals,isNative:f.isNative,amount:e.amount},correlation:{owner:`0x70997970C51812dc3A010C7d01b50e0d17dc79C8`}}},watchSettlement(e,t,n){N.add(t);let r=j.settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>N.delete(t),{once:!0})},watchWithdrawableBalances(e,t,n){P.add(t);let r=j.withdrawableBalances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>P.delete(t),{once:!0})}};function W(e,t,i,a){B||(B=!0,R(()=>{if(a.aborted){B=!1;return}let s=v(o(),e,t,i,f),c=T(s,m);if(L({settlement:{status:`ready`,payload:s,raw:c,response:E(c,s)}}),r===`none`){B=!1;return}R(()=>{if(B=!1,a.aborted)return;let n=r===`succeeded`?y(o(),e,t,14,i,f):b(o(),`unknown`,e,t,i,f),s=T(n,m);L({settlement:{status:`ready`,payload:n,raw:s,response:E(s,n)}})},n.processingTerminal)},n.processingPendingDelay))}let G={triggerWithdrawalInProgress(e){let{amount:t,recipient:n}=K(),r={...v(o(),t,n,H(),f),...e},a=T(r,m);L({settlement:{status:`ready`,payload:r,raw:a,response:E(a,r)}}),i!==null&&R(()=>G.triggerWithdrawalSuccess(),i)},triggerWithdrawalSuccess(e){let{amount:t,recipient:n}=K(),r={...y(o(),t,n,14,H(),f),...e},i=T(r,m);L({settlement:{status:`ready`,payload:r,raw:i,response:E(i,r)}})},triggerWithdrawalFailed(e,t){let{amount:n,recipient:r}=K(),i={...b(o(),e,n,r,H(),f),...t},a=T(i,m);L({settlement:{status:`ready`,payload:i,raw:a,response:E(a,i)}})},triggerQuoteFailure(e){L({quote:{status:`error`,error:e}})},reset(){for(let e of F)clearTimeout(e);F.clear(),B=!1,z=null,V=0,j=A,I()}};function K(){return{amount:z?.amount??h,recipient:z?.recipient??l}}return{driver:U,triggers:G}}function S(e){let t=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{wallet_address:`0xMockWallet000000000000000000000000000000`,fetched_at:new Date(0).toISOString(),total_usd:t.toFixed(2),chains:e.map(e=>({eip155_id:e.eip155Id?Number(e.eip155Id):0,stridge_network_id:e.networkId??``,network_name:e.networkName.toLowerCase(),label:e.networkName,scanner_url:``,native_symbol:``,subtotal_usd:(e.amountUsd?.value??0).toFixed(2),tokens:[{token_address:e.address,symbol:e.symbol,name:e.symbol,decimals:e.decimals,logo:e.assetLogoUrl??``,is_native:e.isNative,is_spam:!1,raw_amount:C(e.amount.value,e.decimals).toString(),amount:e.amount.value.toString(),amount_usd:(e.amountUsd?.value??0).toFixed(2),usd_price:e.amount.value>0?((e.amountUsd?.value??0)/e.amount.value).toFixed(6):`0`,price_change_24h_pct:`0`}]}))}}function C(e,t){if(!Number.isFinite(e)||e<0)return 0n;let[n,r=``]=e.toFixed(t).split(`.`),i=r.padEnd(t,`0`).slice(0,t);return BigInt((n??`0`)+i)}function w(e,t,n=m){let r=C(e.receiveAmount.value,e.receiveAsset.decimals).toString(),i=C(t,n.decimals).toString(),a=t>0?(e.receiveAmount.value/t).toFixed(6):`1`;return{from:{network_id:Number(n.eip155Id??56),asset_address:n.address,amount:i},to:{network_id:Number(e.receiveAsset.eip155Id??56),asset_address:e.receiveAsset.address,amount:r},exchange_rate:a,fees:{total_fee:`0`},route:{provider:`mock`,scenario:`same_chain_same_token`,estimated_time_seconds:30},expires_at:new Date(e.expiresAt).toISOString()}}function T(e,t=m){let n=new Date(e.submittedAt.value).toISOString(),r=e.kind===`succeeded`?`completed`:e.kind===`failed`?`failed`:`routing`,i=e.kind===`succeeded`?e.filledAt.value:e.kind===`failed`?e.failedAt.value:e.submittedAt.value,a={tx_id:(e.kind===`succeeded`?e.txHash.value:e.txHash?.value)??``,asset_symbol:t.symbol,asset_address:t.address,eip155_id:t.eip155Id??`56`,network_id:t.networkId??`9006`,network_name:t.networkName.toLowerCase(),raw_amount:C(e.receiveAmount.value,t.decimals).toString(),amount:e.receiveAmount.value.toString(),confirmed_at:n},o={address:e.recipient.value,asset_address:e.receiveAsset.address,asset_symbol:e.receiveAsset.symbol,eip155_id:e.receiveAsset.eip155Id??``,network_id:e.receiveAsset.networkId??``,network_name:e.receiveAsset.networkName.toLowerCase(),raw_amount:C(e.receiveAmount.value,e.receiveAsset.decimals).toString(),amount:e.receiveAmount.value.toString(),...e.kind===`succeeded`?{settled_at:new Date(e.filledAt.value).toISOString(),...e.completionTx?{tx_id:e.completionTx.hash.value}:{}}:{}};return{id:`mock-settlement-${e.recipient.value}-${a.tx_id}`,status:r,created_at:n,updated_at:new Date(i).toISOString(),events:[],fees:{raw_amount:`0`},from:a,to:o,route:{provider:`mock`,scenario:`withdraw_v1`},...e.kind===`failed`?{error:e.failureKind}:{}}}function E(e,t){let n=t.kind!==`pending`;return{owner:`0xMockOwner`,uda_id:`mock-uda`,created_at:e.created_at,updated_at:e.updated_at,is_terminal:n,status:t.kind===`succeeded`?`completed`:t.kind===`failed`?`failed`:`to_pending`,destination:{address:t.recipient.value,asset_address:t.receiveAsset.address,asset_decimals:t.receiveAsset.decimals,asset_symbol:t.receiveAsset.symbol,eip155_id:t.receiveAsset.eip155Id??``,network_id:t.receiveAsset.networkId??``,network_name:t.receiveAsset.networkName},settlements:[e]}}function D(e,t){return new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),t.removeEventListener(`abort`,a),r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a)})}function O(e){return Number.isInteger(e)?e.toFixed(2):e.toFixed(5)}export{g as buildDefaultWithdrawableBalances,b as buildDefaultWithdrawalFailurePayload,v as buildDefaultWithdrawalPendingPayload,_ as buildDefaultWithdrawalQuotePayload,y as buildDefaultWithdrawalSuccessPayload,x as createStridgeMockWithdrawDriver};
@@ -110,6 +110,12 @@ interface WithdrawalSettlementPendingPayload {
110
110
  kind: "pending";
111
111
  receiveAsset: WithdrawalReceiveAssetPayload;
112
112
  receiveAmount: FormattedField<number>;
113
+ /**
114
+ * USD value of `receiveAmount` at the settlement leg's price snapshot. Sourced from the
115
+ * gateway leg's `amount_usd` (`to` preferred, `from` fallback). Omitted when neither leg
116
+ * carries a priced amount — the in-progress hero then falls back to the quote's USD figure.
117
+ */
118
+ receiveAmountUsd?: FormattedField<number>;
113
119
  /** Recipient address — the destination the user supplied on the form. */
114
120
  recipient: FormattedField<string>;
115
121
  /** Unix-ms timestamp when the withdrawal was submitted. */
@@ -1 +1 @@
1
- import{classifyFailureKind as e,classifySettlementStatus as t}from"../../../shared/transformers/classifySettlementStatus.js";import{parseDecimalSafe as n,parseSmallestUnit as r}from"../../../shared/transformers/parseSmallestUnit.js";import{parseIsoMs as i}from"../../../shared/transformers/parseIsoMs.js";import{formatDurationCompact as a}from"../../../../shared/format/formatDurationCompact.js";import{formatTimestamp as o}from"../../../../shared/format/formatTimestamp.js";import{formatTokenAmount as s}from"../../../../shared/format/formatTokenAmount.js";import{shortenAddress as c}from"../../../../shared/format/shortenAddress.js";function l(e,n,r){let i=t(e.status);return i===`completed`?d(e,n,r):i===`failed`?f(e,n,r):u(e,n,r)}function u(e,t,n){let r=e.from,a=e.to,l=i(r?.confirmed_at)??i(e.created_at)??Date.now(),u=p(t,n),d=m(a,t.destination.asset_decimals)||m(r,r?.asset_decimals??t.destination.asset_decimals),f=t.destination.address,g=r?.tx_id,_=r?.eip155_id===void 0?void 0:Number(r.eip155_id);return{kind:`pending`,receiveAsset:u,receiveAmount:{value:d,formatted:s(d,n.i18n,{maxDecimals:t.destination.asset_decimals})},recipient:{value:f,formatted:c(f)},submittedAt:{value:l,formatted:o(l,n.i18n)},...g?{txHash:{value:g,formatted:c(g)},...h(n,_,g)?{txExplorerUrl:h(n,_,g)}:{}}:{}}}function d(e,t,n){let r=e.from,l=e.to,u=i(r?.confirmed_at)??i(e.created_at)??Date.now(),d=i(l?.settled_at)??i(e.updated_at)??Date.now(),f=Math.max(0,d-u),_=Math.round(f/1e3),v=p(t,n),y=m(l,t.destination.asset_decimals),b=t.destination.address,x=r?.tx_id??``,S=r?.eip155_id===void 0?void 0:Number(r.eip155_id),C=l?.tx_id,w=h(n,g(l?.eip155_id)??g(t.destination.eip155_id),C);return{kind:`succeeded`,receiveAsset:v,receiveAmount:{value:y,formatted:s(y,n.i18n,{maxDecimals:t.destination.asset_decimals})},recipient:{value:b,formatted:c(b)},submittedAt:{value:u,formatted:o(u,n.i18n)},filledAt:{value:d,formatted:o(d,n.i18n)},totalTime:{value:_,formatted:a(f,n.i18n)},txHash:{value:x,formatted:x?c(x):``},...h(n,S,x)?{txExplorerUrl:h(n,S,x)}:{},...C?{completionTx:{hash:{value:C,formatted:c(C)},...w?{explorerUrl:w}:{}}}:{}}}function f(t,n,r){let a=t.from,l=i(a?.confirmed_at)??i(t.created_at)??Date.now(),u=i(t.updated_at)??Date.now(),d=p(n,r),f=n.destination.address,m=a?.tx_id,g=a?.eip155_id===void 0?void 0:Number(a.eip155_id);return{kind:`failed`,failureKind:e(t.error),receiveAsset:d,receiveAmount:{value:0,formatted:s(0,r.i18n)},recipient:{value:f,formatted:c(f)},submittedAt:{value:l,formatted:o(l,r.i18n)},failedAt:{value:u,formatted:o(u,r.i18n)},...m?{txHash:{value:m,formatted:c(m)},...h(r,g,m)?{txExplorerUrl:h(r,g,m)}:{}}:{}}}function p(e,t){let n=t.receiveAssetEnrichment,r=Number(e.destination.eip155_id);return{symbol:e.destination.asset_symbol,decimals:e.destination.asset_decimals,address:e.destination.asset_address,isNative:!e.destination.asset_address,...n?.assetLogoUrl?{assetLogoUrl:n.assetLogoUrl}:{},networkId:e.destination.network_id,networkName:n?.networkName??e.destination.network_name,...Number.isFinite(r)?{eip155Id:e.destination.eip155_id}:{},...n?.chainLogoUrl?{chainLogoUrl:n.chainLogoUrl}:{}}}function m(e,t){if(!e)return 0;if(e.amount){let t=n(e.amount);if(t>0)return t}return e.raw_amount?r(e.raw_amount,t):0}function h(e,t,n){if(!n||t===void 0)return;let r=e.explorers?.[t];if(r)return`${r.replace(/\/+$/,``)}/tx/${n}`}function g(e){if(e==null||e===``)return;let t=Number(e);return Number.isFinite(t)?t:void 0}export{l as settlementToWithdrawalPayload};
1
+ import{classifyFailureKind as e,classifySettlementStatus as t}from"../../../shared/transformers/classifySettlementStatus.js";import{parseDecimalSafe as n,parseSmallestUnit as r}from"../../../shared/transformers/parseSmallestUnit.js";import{parseIsoMs as i}from"../../../shared/transformers/parseIsoMs.js";import{formatDurationCompact as a}from"../../../../shared/format/formatDurationCompact.js";import{formatTimestamp as o}from"../../../../shared/format/formatTimestamp.js";import{formatTokenAmount as s}from"../../../../shared/format/formatTokenAmount.js";import{formatUsd as c}from"../../../../shared/format/formatUsd.js";import{shortenAddress as l}from"../../../../shared/format/shortenAddress.js";function u(e,n,r){let i=t(e.status);return i===`completed`?f(e,n,r):i===`failed`?p(e,n,r):d(e,n,r)}function d(e,t,r){let a=e.from,u=e.to,d=i(a?.confirmed_at)??i(e.created_at)??Date.now(),f=m(t,r),p=g(u,t,r),y=_(a,t,r),b=h(u,p)||h(a,y),x=n(u?.amount_usd)||n(a?.amount_usd),S=t.destination.address,C=a?.tx_id,w=a?.eip155_id===void 0?void 0:Number(a.eip155_id);return{kind:`pending`,receiveAsset:f,receiveAmount:{value:b,formatted:s(b,r.i18n,{maxDecimals:p})},...x>0?{receiveAmountUsd:{value:x,formatted:c(x,r.i18n)}}:{},recipient:{value:S,formatted:l(S)},submittedAt:{value:d,formatted:o(d,r.i18n)},...C?{txHash:{value:C,formatted:l(C)},...v(r,w,C)?{txExplorerUrl:v(r,w,C)}:{}}:{}}}function f(e,t,n){let r=e.from,c=e.to,u=i(r?.confirmed_at)??i(e.created_at)??Date.now(),d=i(c?.settled_at)??i(e.updated_at)??Date.now(),f=Math.max(0,d-u),p=Math.round(f/1e3),_=m(t,n),b=g(c,t,n),x=h(c,b),S=t.destination.address,C=r?.tx_id??``,w=r?.eip155_id===void 0?void 0:Number(r.eip155_id),T=c?.tx_id,E=v(n,y(c?.eip155_id)??y(t.destination.eip155_id),T);return{kind:`succeeded`,receiveAsset:_,receiveAmount:{value:x,formatted:s(x,n.i18n,{maxDecimals:b})},recipient:{value:S,formatted:l(S)},submittedAt:{value:u,formatted:o(u,n.i18n)},filledAt:{value:d,formatted:o(d,n.i18n)},totalTime:{value:p,formatted:a(f,n.i18n)},txHash:{value:C,formatted:C?l(C):``},...v(n,w,C)?{txExplorerUrl:v(n,w,C)}:{},...T?{completionTx:{hash:{value:T,formatted:l(T)},...E?{explorerUrl:E}:{}}}:{}}}function p(t,n,r){let a=t.from,c=i(a?.confirmed_at)??i(t.created_at)??Date.now(),u=i(t.updated_at)??Date.now(),d=m(n,r),f=n.destination.address,p=a?.tx_id,h=a?.eip155_id===void 0?void 0:Number(a.eip155_id);return{kind:`failed`,failureKind:e(t.error),receiveAsset:d,receiveAmount:{value:0,formatted:s(0,r.i18n)},recipient:{value:f,formatted:l(f)},submittedAt:{value:c,formatted:o(c,r.i18n)},failedAt:{value:u,formatted:o(u,r.i18n)},...p?{txHash:{value:p,formatted:l(p)},...v(r,h,p)?{txExplorerUrl:v(r,h,p)}:{}}:{}}}function m(e,t){let n=t.receiveAssetEnrichment,r=Number(e.destination.eip155_id);return{symbol:e.destination.asset_symbol,decimals:e.destination.asset_decimals,address:e.destination.asset_address,isNative:!e.destination.asset_address,...n?.assetLogoUrl?{assetLogoUrl:n.assetLogoUrl}:{},networkId:e.destination.network_id,networkName:n?.networkName??e.destination.network_name,...Number.isFinite(r)?{eip155Id:e.destination.eip155_id}:{},...n?.chainLogoUrl?{chainLogoUrl:n.chainLogoUrl}:{}}}function h(e,t){if(!e)return 0;if(e.amount){let t=n(e.amount);if(t>0)return t}return e.raw_amount?r(e.raw_amount,t):0}function g(e,t,n){return n.receiveAssetDecimals??e?.asset_decimals??t.destination.asset_decimals}function _(e,t,n){return n.sendAssetDecimals??e?.asset_decimals??t.destination.asset_decimals}function v(e,t,n){if(!n||t===void 0)return;let r=e.explorers?.[t];if(r)return`${r.replace(/\/+$/,``)}/tx/${n}`}function y(e){if(e==null||e===``)return;let t=Number(e);return Number.isFinite(t)?t:void 0}export{u as settlementToWithdrawalPayload};
@@ -11,6 +11,7 @@ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
11
11
  * - The single broadcast hash is surfaced through `<SourceTxRow>` with the "Withdrawal tx" label.
12
12
  * - No "Detected" row (no indexer step in the withdraw flow).
13
13
  * - Hero subcaption is the recipient address (truncated) — passed through `creditedTo`.
14
+ * - Hero promotes the USD figure (`amountUsd`) over the token amount, which drops to a subline.
14
15
  *
15
16
  * Renders only while the FSM is on `inProgress`.
16
17
  */
@@ -1 +1 @@
1
- "use client";import{useLingui as e}from"../../../../shared/i18n/useLingui.js";import"../../../../i18n/index.js";import{useWithdrawSnapshot as t}from"../../driver/context.js";import{useWithdrawActions as n,useWithdrawEffectiveState as r}from"../../orchestrator/controller.js";import{formatTokenAmount as i}from"../../../../shared/format/formatTokenAmount.js";import{ProcessingState as a}from"../../../../shared/widgets/processing-state/compound/ProcessingState.js";import"../../../../shared/widgets/processing-state/compound/index.js";import{toAssetDescriptor as o}from"../../../../shared/widgets/asset-descriptor.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l(l){let u=t(),d=r(),{close:f}=n(),{_:p,i18n:m}=e(),h=u.settlement,g=(h.status===`ready`||h.status===`stale`)&&h.payload.kind===`pending`?h.payload:void 0;if(d.name!==`inProgress`)return null;let _=d.ctx.input,v=g?.txHash?.formatted,y=g?.txExplorerUrl,b=g?.recipient.formatted,x=g?.receiveAsset,S=g?.receiveAmount,C=S&&S.value>0?S.formatted:i(_.amount,m,{...x?.decimals===void 0?{}:{maxDecimals:x.decimals}}),w=x?.symbol??_.receiveTokenSymbol,T=o(x)??{symbol:w},E=v?{hash:v,explorerUrl:y}:void 0;return c(a,{...l,headerTitle:p({id:`w-2VR9`,message:`Withdrawal in progress…`}),amount:C,creditedAsset:T,creditedTo:b,sourceTx:E,submittedAt:g?.submittedAt.formatted,onClose:f,children:[s(a.Header,{}),c(a.Body,{children:[s(a.Hero,{}),s(a.StatusPill,{}),c(a.Details,{children:[s(a.SourceTxRow,{label:p({id:`60ahSE`,message:`Withdrawal tx`})}),s(a.SubmittedAtRow,{})]})]}),s(a.Actions,{})]})}export{l as WithdrawInProgress};
1
+ "use client";import{useLingui as e}from"../../../../shared/i18n/useLingui.js";import"../../../../i18n/index.js";import{useWithdrawSnapshot as t}from"../../driver/context.js";import{useWithdrawActions as n,useWithdrawEffectiveState as r}from"../../orchestrator/controller.js";import{formatTokenAmount as i}from"../../../../shared/format/formatTokenAmount.js";import{ProcessingState as a}from"../../../../shared/widgets/processing-state/compound/ProcessingState.js";import"../../../../shared/widgets/processing-state/compound/index.js";import{toAssetDescriptor as o}from"../../../../shared/widgets/asset-descriptor.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l(l){let u=t(),d=r(),{close:f}=n(),{_:p,i18n:m}=e(),h=u.settlement,g=(h.status===`ready`||h.status===`stale`)&&h.payload.kind===`pending`?h.payload:void 0;if(d.name!==`inProgress`)return null;let _=d.ctx.input,v=g?.txHash?.formatted,y=g?.txExplorerUrl,b=g?.recipient.formatted,x=g?.receiveAsset,S=g?.receiveAmount,C=S&&S.value>0?S.formatted:i(_.amount,m,{...x?.decimals===void 0?{}:{maxDecimals:x.decimals}}),w=x?.symbol??_.receiveTokenSymbol,T=o(x)??{symbol:w},E=u.quote,D=E.status===`ready`||E.status===`stale`?E.payload:void 0,O=g?.receiveAmountUsd?.formatted??D?.receiveAmountUsd?.formatted,k=v?{hash:v,explorerUrl:y}:void 0;return c(a,{...l,headerTitle:p({id:`w-2VR9`,message:`Withdrawal in progress…`}),amount:C,...O?{amountUsd:O}:{},creditedAsset:T,creditedTo:b,sourceTx:k,submittedAt:g?.submittedAt.formatted,onClose:f,children:[s(a.Header,{}),c(a.Body,{children:[s(a.Hero,{}),s(a.StatusPill,{}),c(a.Details,{children:[s(a.SourceTxRow,{label:p({id:`60ahSE`,message:`Withdrawal tx`})}),s(a.SubmittedAtRow,{})]})]}),s(a.Actions,{})]})}export{l as WithdrawInProgress};
package/dist/package.js CHANGED
@@ -1 +1 @@
1
- var e=`0.1.0-alpha.22`;export{e as version};
1
+ var e=`0.1.0-alpha.23`;export{e as version};
@@ -1 +1 @@
1
- "use client";import{DialogShell as e}from"../../../dialog/DialogShell.js";import{Card as t}from"../../../ui/Card/Card.js";import"../../../../ui/index.js";import{Frame as n}from"../../../dialog/Frame.js";import{TxHashValue as r}from"../../../primitives/TxHashValue/TxHashValue.js";import"../../../primitives/TxHashValue/index.js";import{WalletValue as i}from"../../../primitives/WalletValue/WalletValue.js";import"../../../primitives/WalletValue/index.js";import{ProcessingStateContext as a}from"./context.js";import{PROCESSING_STATE_SLOTS as o}from"./ProcessingState.slots.js";import{styles as s}from"./ProcessingState.styles.js";import{ProcessingStateActions as c}from"./components/Actions.js";import{ProcessingStateDetail as l}from"./components/Detail.js";import{ProcessingStateDetails as u}from"./components/Details.js";import{ProcessingStateHeader as d}from"./components/Header.js";import{ProcessingStateHero as f}from"./components/Hero.js";import{ProcessingStateDetectedAtRow as p,ProcessingStateSourceRow as m,ProcessingStateSourceTxRow as h,ProcessingStateSubmittedAtRow as g}from"./components/Rows.js";import{ProcessingStateStatusPill as _}from"./components/StatusPill.js";import{useMemo as v}from"react";import{jsx as y}from"react/jsx-runtime";import*as b from"@stylexjs/stylex";function x(e){let{amount:t,creditedAsset:r,creditedTo:i,loading:c,headerTitle:l,onBack:u,statusPillLabel:d,sourceWallet:f,sourceTx:p,submittedAt:m,detectedAt:h,onClose:g,closeLabel:_,children:x}=e,S=v(()=>({amount:t,creditedAsset:r,creditedTo:i,...c?{loading:!0}:{},headerTitle:l,onBack:u,statusPillLabel:d,sourceWallet:f,sourceTx:p,submittedAt:m,detectedAt:h,onClose:g,closeLabel:_}),[t,r,i,c,l,u,d,f,p,m,h,g,_]);return y(a.Provider,{value:S,children:y(n,{"data-stridge-slot":o.root,...b.props(s.root),children:x})})}function S(e){return y(t.Body,{"data-stridge-slot":o.body,...e})}function C({open:t,defaultOpen:n,onOpenChange:r,trigger:i,children:a,...o}){return y(e,{open:t,defaultOpen:n,onOpenChange:r,trigger:i,children:y(x,{...o,children:a})})}(function(e){e.Header=d,e.Body=S,e.Hero=f,e.StatusPill=_,e.Details=u,e.Detail=l,e.Actions=c,e.SourceRow=m,e.SourceTxRow=h,e.SubmittedAtRow=g,e.DetectedAtRow=p,e.WalletValue=i,e.TxHashValue=r,e.Dialog=C})(x||={});export{x as ProcessingState};
1
+ "use client";import{DialogShell as e}from"../../../dialog/DialogShell.js";import{Card as t}from"../../../ui/Card/Card.js";import"../../../../ui/index.js";import{Frame as n}from"../../../dialog/Frame.js";import{TxHashValue as r}from"../../../primitives/TxHashValue/TxHashValue.js";import"../../../primitives/TxHashValue/index.js";import{WalletValue as i}from"../../../primitives/WalletValue/WalletValue.js";import"../../../primitives/WalletValue/index.js";import{ProcessingStateContext as a}from"./context.js";import{PROCESSING_STATE_SLOTS as o}from"./ProcessingState.slots.js";import{styles as s}from"./ProcessingState.styles.js";import{ProcessingStateActions as c}from"./components/Actions.js";import{ProcessingStateDetail as l}from"./components/Detail.js";import{ProcessingStateDetails as u}from"./components/Details.js";import{ProcessingStateHeader as d}from"./components/Header.js";import{ProcessingStateHero as f}from"./components/Hero.js";import{ProcessingStateDetectedAtRow as p,ProcessingStateSourceRow as m,ProcessingStateSourceTxRow as h,ProcessingStateSubmittedAtRow as g}from"./components/Rows.js";import{ProcessingStateStatusPill as _}from"./components/StatusPill.js";import{useMemo as v}from"react";import{jsx as y}from"react/jsx-runtime";import*as b from"@stylexjs/stylex";function x(e){let{amount:t,amountUsd:r,creditedAsset:i,creditedTo:c,loading:l,headerTitle:u,onBack:d,statusPillLabel:f,sourceWallet:p,sourceTx:m,submittedAt:h,detectedAt:g,onClose:_,closeLabel:x,children:S}=e,C=v(()=>({amount:t,...r?{amountUsd:r}:{},creditedAsset:i,creditedTo:c,...l?{loading:!0}:{},headerTitle:u,onBack:d,statusPillLabel:f,sourceWallet:p,sourceTx:m,submittedAt:h,detectedAt:g,onClose:_,closeLabel:x}),[t,r,i,c,l,u,d,f,p,m,h,g,_,x]);return y(a.Provider,{value:C,children:y(n,{"data-stridge-slot":o.root,...b.props(s.root),children:S})})}function S(e){return y(t.Body,{"data-stridge-slot":o.body,...e})}function C({open:t,defaultOpen:n,onOpenChange:r,trigger:i,children:a,...o}){return y(e,{open:t,defaultOpen:n,onOpenChange:r,trigger:i,children:y(x,{...o,children:a})})}(function(e){e.Header=d,e.Body=S,e.Hero=f,e.StatusPill=_,e.Details=u,e.Detail=l,e.Actions=c,e.SourceRow=m,e.SourceTxRow=h,e.SubmittedAtRow=g,e.DetectedAtRow=p,e.WalletValue=i,e.TxHashValue=r,e.Dialog=C})(x||={});export{x as ProcessingState};
@@ -1 +1 @@
1
- const e={root:{"ProcessingState__styles.root":`ProcessingState__styles.root`,"position-kVAEAm":`x1n2onr6`,"width-kzqmXN":`xh8yej3`,"maxWidth-ks0D6T":`x17fpy1y`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:26`},header:{"ProcessingState__styles.header":`ProcessingState__styles.header`,"justifyContent-kjj79g":`x1qughib`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:34`},headerLeft:{"ProcessingState__styles.headerLeft":`ProcessingState__styles.headerLeft`,"display-k1xSpc":`x78zum5`,"flexDirection-kXwgrk":`x1q0g3np`,"alignItems-kGNEyG":`x6s0dn4`,"gap-kOIVth":`x1v2ro7d`,"minWidth-k7Eaqz":`xeuugli`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:37`},closeIcon:{"ProcessingState__styles.closeIcon":`ProcessingState__styles.closeIcon`,"width-kzqmXN":`xsmyaan`,"height-kZKoxP":`x1kpxq89`,"flexShrink-kmuXW":`x2lah0s`,"color-kMwMTN":`xdksllq`,"strokeWidth-kfJifR":`x1k315e8`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:44`},backIcon:{"ProcessingState__styles.backIcon":`ProcessingState__styles.backIcon`,"width-kzqmXN":`x6jxa94`,"height-kZKoxP":`x1v9usgg`,"flexShrink-kmuXW":`x2lah0s`,"color-kMwMTN":`xdksllq`,"strokeWidth-kfJifR":`xhxwl1`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:51`},hero:{"ProcessingState__styles.hero":`ProcessingState__styles.hero`,"display-k1xSpc":`x78zum5`,"flexDirection-kXwgrk":`xdt5ytf`,"alignItems-kGNEyG":`x6s0dn4`,"gap-kOIVth":`x1v2ro7d`,"paddingTop-kLKAdn":`x1miatn0`,"paddingInlineEnd-kwRFfy":`x1o5r3ls`,"paddingBottom-kGO01o":`xwib8y2`,"paddingInlineStart-kZCmMZ":`xz7312c`,"animationName-kKVMdj":`xv305lp`,"animationDuration-k44tkh":`xmprevt x1s1fvk8`,"animationTimingFunction-kyAemX":`xa3vuyk`,"animationFillMode-kWV6AL":`x1u6ievf`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:59`},heroAmountRow:{"ProcessingState__styles.heroAmountRow":`ProcessingState__styles.heroAmountRow`,"display-k1xSpc":`x3nfvp2`,"alignItems-kGNEyG":`x1pha0wt`,"justifyContent-kjj79g":`xl56j7k`,"gap-kOIVth":`x883omv`,"marginTop-keoZOQ":`xdj266r`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:76`},heroAmountIcon:{"ProcessingState__styles.heroAmountIcon":`ProcessingState__styles.heroAmountIcon`,"alignSelf-kSGwAc":`xamitd3`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:83`},statusPillWrap:{"ProcessingState__styles.statusPillWrap":`ProcessingState__styles.statusPillWrap`,"display-k1xSpc":`x78zum5`,"justifyContent-kjj79g":`xl56j7k`,"paddingTop-kLKAdn":`xyinxu5`,"paddingInlineEnd-kwRFfy":`x1o5r3ls`,"paddingBottom-kGO01o":`x1t4gjm`,"paddingInlineStart-kZCmMZ":`xz7312c`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:87`},statusPill:{"ProcessingState__styles.statusPill":`ProcessingState__styles.statusPill`,"display-k1xSpc":`x3nfvp2`,"flexDirection-kXwgrk":`x1q0g3np`,"alignItems-kGNEyG":`x6s0dn4`,"gap-kOIVth":`x883omv`,"paddingBlock-k8WAf4":`x1vvogim`,"paddingInlineStart-kZCmMZ":`x1g0dm76`,"paddingInlineEnd-kwRFfy":`x1pic42t`,"borderRadius-kaIpWk":`x1npxkrn`,"backgroundColor-kWkggS":`x407w7c`,"borderWidth-kMzoRj":`xmkeg23`,"borderStyle-ksu8eU":`x1y0btm7`,"borderColor-kVAM5u":`x1bue7yx`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:95`},statusPillIcon:{"ProcessingState__styles.statusPillIcon":`ProcessingState__styles.statusPillIcon`,"display-k1xSpc":`x1lliihq`,"width-kzqmXN":`x6jxa94`,"height-kZKoxP":`xmix8c7`,"flexShrink-kmuXW":`x2lah0s`,"color-kMwMTN":`x1me39qh`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:109`},statusPillDot:{"ProcessingState__styles.statusPillDot":`ProcessingState__styles.statusPillDot`,"animationName-kKVMdj":`x194e4vk x1aquc0h`,"animationDuration-k44tkh":`x1m9vv7p`,"animationIterationCount-ko0y90":`xa4qsjk`,"animationTimingFunction-kyAemX":`x4hg4is`,"opacity-kSiTet":`x197sbye`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:116`},statusPillDotDelay0:{"ProcessingState__styles.statusPillDotDelay0":`ProcessingState__styles.statusPillDotDelay0`,"animationDelay-kKxzle":`x1uzojwf`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:126`},statusPillDotDelay1:{"ProcessingState__styles.statusPillDotDelay1":`ProcessingState__styles.statusPillDotDelay1`,"animationDelay-kKxzle":`x1k0bccz`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:129`},statusPillDotDelay2:{"ProcessingState__styles.statusPillDotDelay2":`ProcessingState__styles.statusPillDotDelay2`,"animationDelay-kKxzle":`x1t83zlg`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:132`},statusPillDotDelay3:{"ProcessingState__styles.statusPillDotDelay3":`ProcessingState__styles.statusPillDotDelay3`,"animationDelay-kKxzle":`x1x1c4bx`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:135`},statusPillDotDelay4:{"ProcessingState__styles.statusPillDotDelay4":`ProcessingState__styles.statusPillDotDelay4`,"animationDelay-kKxzle":`x1xwhvez`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:138`},statusPillDotDelay5:{"ProcessingState__styles.statusPillDotDelay5":`ProcessingState__styles.statusPillDotDelay5`,"animationDelay-kKxzle":`xfjzax6`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:141`},detailsSection:{"ProcessingState__styles.detailsSection":`ProcessingState__styles.detailsSection`,"marginInlineStart-keTefX":`xnzr9dm`,"marginInlineEnd-k71WvV":`xnqxrjt`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:151`},actions:{"ProcessingState__styles.actions":`ProcessingState__styles.actions`,"display-k1xSpc":`x78zum5`,"flexDirection-kXwgrk":`xdt5ytf`,"alignItems-kGNEyG":`x1qjc9v5`,"gap-kOIVth":`x1v2ro7d`,"paddingTop-kLKAdn":`x1xy6bms`,"paddingInlineEnd-kwRFfy":`x1o5r3ls`,"paddingBottom-kGO01o":`x1t4gjm`,"paddingInlineStart-kZCmMZ":`xz7312c`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:156`},closeCta:{"ProcessingState__styles.closeCta":`ProcessingState__styles.closeCta`,"width-kzqmXN":`xh8yej3`,":focus-visible_boxShadow-kEtg5x":`xhatipn`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:174`},closeCtaInteractive:{"ProcessingState__styles.closeCtaInteractive":`ProcessingState__styles.closeCtaInteractive`,"cursor-kkrTdU":`x1ypdohk`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:180`},closeCtaInert:{"ProcessingState__styles.closeCtaInert":`ProcessingState__styles.closeCtaInert`,"cursor-kkrTdU":`xt0e3qv`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:183`}};export{e as styles};
1
+ const e={root:{"ProcessingState__styles.root":`ProcessingState__styles.root`,"position-kVAEAm":`x1n2onr6`,"width-kzqmXN":`xh8yej3`,"maxWidth-ks0D6T":`x17fpy1y`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:26`},header:{"ProcessingState__styles.header":`ProcessingState__styles.header`,"justifyContent-kjj79g":`x1qughib`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:34`},headerLeft:{"ProcessingState__styles.headerLeft":`ProcessingState__styles.headerLeft`,"display-k1xSpc":`x78zum5`,"flexDirection-kXwgrk":`x1q0g3np`,"alignItems-kGNEyG":`x6s0dn4`,"gap-kOIVth":`x1v2ro7d`,"minWidth-k7Eaqz":`xeuugli`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:37`},closeIcon:{"ProcessingState__styles.closeIcon":`ProcessingState__styles.closeIcon`,"width-kzqmXN":`xsmyaan`,"height-kZKoxP":`x1kpxq89`,"flexShrink-kmuXW":`x2lah0s`,"color-kMwMTN":`xdksllq`,"strokeWidth-kfJifR":`x1k315e8`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:44`},backIcon:{"ProcessingState__styles.backIcon":`ProcessingState__styles.backIcon`,"width-kzqmXN":`x6jxa94`,"height-kZKoxP":`x1v9usgg`,"flexShrink-kmuXW":`x2lah0s`,"color-kMwMTN":`xdksllq`,"strokeWidth-kfJifR":`xhxwl1`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:51`},hero:{"ProcessingState__styles.hero":`ProcessingState__styles.hero`,"display-k1xSpc":`x78zum5`,"flexDirection-kXwgrk":`xdt5ytf`,"alignItems-kGNEyG":`x6s0dn4`,"gap-kOIVth":`x1v2ro7d`,"paddingTop-kLKAdn":`x1miatn0`,"paddingInlineEnd-kwRFfy":`x1o5r3ls`,"paddingBottom-kGO01o":`xwib8y2`,"paddingInlineStart-kZCmMZ":`xz7312c`,"animationName-kKVMdj":`xv305lp`,"animationDuration-k44tkh":`xmprevt x1s1fvk8`,"animationTimingFunction-kyAemX":`xa3vuyk`,"animationFillMode-kWV6AL":`x1u6ievf`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:59`},heroAmountRow:{"ProcessingState__styles.heroAmountRow":`ProcessingState__styles.heroAmountRow`,"display-k1xSpc":`x3nfvp2`,"alignItems-kGNEyG":`x1pha0wt`,"justifyContent-kjj79g":`xl56j7k`,"gap-kOIVth":`x883omv`,"marginTop-keoZOQ":`xdj266r`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:76`},heroAmountIcon:{"ProcessingState__styles.heroAmountIcon":`ProcessingState__styles.heroAmountIcon`,"alignSelf-kSGwAc":`xamitd3`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:83`},heroSubLine:{"ProcessingState__styles.heroSubLine":`ProcessingState__styles.heroSubLine`,"display-k1xSpc":`x3nfvp2`,"flexDirection-kXwgrk":`x1q0g3np`,"alignItems-kGNEyG":`x6s0dn4`,"justifyContent-kjj79g":`xl56j7k`,"gap-kOIVth":`x17d4w8g`,"marginTop-keoZOQ":`xr9ek0c`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:87`},heroSubLineIcon:{"ProcessingState__styles.heroSubLineIcon":`ProcessingState__styles.heroSubLineIcon`,"flexShrink-kmuXW":`x2lah0s`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:95`},statusPillWrap:{"ProcessingState__styles.statusPillWrap":`ProcessingState__styles.statusPillWrap`,"display-k1xSpc":`x78zum5`,"justifyContent-kjj79g":`xl56j7k`,"paddingTop-kLKAdn":`xyinxu5`,"paddingInlineEnd-kwRFfy":`x1o5r3ls`,"paddingBottom-kGO01o":`x1t4gjm`,"paddingInlineStart-kZCmMZ":`xz7312c`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:99`},statusPill:{"ProcessingState__styles.statusPill":`ProcessingState__styles.statusPill`,"display-k1xSpc":`x3nfvp2`,"flexDirection-kXwgrk":`x1q0g3np`,"alignItems-kGNEyG":`x6s0dn4`,"gap-kOIVth":`x883omv`,"paddingBlock-k8WAf4":`x1vvogim`,"paddingInlineStart-kZCmMZ":`x1g0dm76`,"paddingInlineEnd-kwRFfy":`x1pic42t`,"borderRadius-kaIpWk":`x1npxkrn`,"backgroundColor-kWkggS":`x407w7c`,"borderWidth-kMzoRj":`xmkeg23`,"borderStyle-ksu8eU":`x1y0btm7`,"borderColor-kVAM5u":`x1bue7yx`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:107`},statusPillIcon:{"ProcessingState__styles.statusPillIcon":`ProcessingState__styles.statusPillIcon`,"display-k1xSpc":`x1lliihq`,"width-kzqmXN":`x6jxa94`,"height-kZKoxP":`xmix8c7`,"flexShrink-kmuXW":`x2lah0s`,"color-kMwMTN":`x1me39qh`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:121`},statusPillDot:{"ProcessingState__styles.statusPillDot":`ProcessingState__styles.statusPillDot`,"animationName-kKVMdj":`x194e4vk x1aquc0h`,"animationDuration-k44tkh":`x1m9vv7p`,"animationIterationCount-ko0y90":`xa4qsjk`,"animationTimingFunction-kyAemX":`x4hg4is`,"opacity-kSiTet":`x197sbye`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:128`},statusPillDotDelay0:{"ProcessingState__styles.statusPillDotDelay0":`ProcessingState__styles.statusPillDotDelay0`,"animationDelay-kKxzle":`x1uzojwf`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:138`},statusPillDotDelay1:{"ProcessingState__styles.statusPillDotDelay1":`ProcessingState__styles.statusPillDotDelay1`,"animationDelay-kKxzle":`x1k0bccz`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:141`},statusPillDotDelay2:{"ProcessingState__styles.statusPillDotDelay2":`ProcessingState__styles.statusPillDotDelay2`,"animationDelay-kKxzle":`x1t83zlg`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:144`},statusPillDotDelay3:{"ProcessingState__styles.statusPillDotDelay3":`ProcessingState__styles.statusPillDotDelay3`,"animationDelay-kKxzle":`x1x1c4bx`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:147`},statusPillDotDelay4:{"ProcessingState__styles.statusPillDotDelay4":`ProcessingState__styles.statusPillDotDelay4`,"animationDelay-kKxzle":`x1xwhvez`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:150`},statusPillDotDelay5:{"ProcessingState__styles.statusPillDotDelay5":`ProcessingState__styles.statusPillDotDelay5`,"animationDelay-kKxzle":`xfjzax6`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:153`},detailsSection:{"ProcessingState__styles.detailsSection":`ProcessingState__styles.detailsSection`,"marginInlineStart-keTefX":`xnzr9dm`,"marginInlineEnd-k71WvV":`xnqxrjt`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:163`},actions:{"ProcessingState__styles.actions":`ProcessingState__styles.actions`,"display-k1xSpc":`x78zum5`,"flexDirection-kXwgrk":`xdt5ytf`,"alignItems-kGNEyG":`x1qjc9v5`,"gap-kOIVth":`x1v2ro7d`,"paddingTop-kLKAdn":`x1xy6bms`,"paddingInlineEnd-kwRFfy":`x1o5r3ls`,"paddingBottom-kGO01o":`x1t4gjm`,"paddingInlineStart-kZCmMZ":`xz7312c`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:168`},closeCta:{"ProcessingState__styles.closeCta":`ProcessingState__styles.closeCta`,"width-kzqmXN":`xh8yej3`,":focus-visible_boxShadow-kEtg5x":`xhatipn`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:186`},closeCtaInteractive:{"ProcessingState__styles.closeCtaInteractive":`ProcessingState__styles.closeCtaInteractive`,"cursor-kkrTdU":`x1ypdohk`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:192`},closeCtaInert:{"ProcessingState__styles.closeCtaInert":`ProcessingState__styles.closeCtaInert`,"cursor-kkrTdU":`xt0e3qv`,$$css:`@stridge/kit:src/shared/widgets/processing-state/compound/ProcessingState.styles.ts:195`}};export{e as styles};
@@ -2,14 +2,18 @@ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/shared/widgets/processing-state/compound/components/Hero.d.ts
4
4
  /**
5
- * Hero block: uppercase "CREDITING" caption, the token amount row, and a destination subcaption. Reads its data
6
- * from the `ProcessingState` root context.
5
+ * Hero block: uppercase "CREDITING" caption, the amount row, and a destination subcaption. Reads
6
+ * its data from the `ProcessingState` root context.
7
7
  *
8
- * When `loading=true`, the amount span is omitted entirely so the row reads `[icon] USDC` instead
9
- * of `[icon] 0 USDC` or a shimmer placeholder. Used by the transfer-crypto path where the
10
- * credited amount isn't known until the indexer settles showing a literal `0` reads as
11
- * "credited zero", and a shimmer over a number we never had reads as a fake placeholder.
12
- * Surfacing only the symbol is the truthful UX.
8
+ * Two amount layouts:
9
+ *
10
+ * - **Token hero** (default) `[icon] <amount> <symbol>`. When `loading=true` the amount span is
11
+ * omitted entirely so the row reads `[icon] USDC` instead of `[icon] 0 USDC` or a shimmer
12
+ * placeholder (the transfer-crypto path waits on the indexer for the credited figure; a literal
13
+ * `0` reads as "credited zero" and a shimmer over a number we never had reads as fake).
14
+ * - **USD hero** — when `amountUsd` is set, the fiat figure becomes the primary line and
15
+ * `[icon] <amount> <symbol>` is demoted to a subline beneath it. Mirrors the deposit confirm
16
+ * screen's hero treatment.
13
17
  */
14
18
  declare function ProcessingStateHero(): _$react_jsx_runtime0.JSX.Element;
15
19
  //#endregion
@@ -1 +1 @@
1
- "use client";import{useLingui as e}from"../../../../i18n/useLingui.js";import"../../../../../i18n/index.js";import{text as t}from"../../../../ui/Text/Text.js";import{TokenLogo as n}from"../../../../ui/TokenLogo/TokenLogo.js";import"../../../../ui/TokenLogo/index.js";import"../../../../../ui/index.js";import{useProcessingStateContext as r}from"../context.js";import{PROCESSING_STATE_SLOTS as i}from"../ProcessingState.slots.js";import{styles as a}from"../ProcessingState.styles.js";import{jsx as o,jsxs as s}from"react/jsx-runtime";import*as c from"@stylexjs/stylex";function l(){let l=r(`ProcessingState.Hero`),{_:u}=e(),d=l.creditedTo??l.creditedAsset.symbol;return s(`div`,{"data-stridge-slot":i.hero,...c.props(a.hero),children:[o(t.span,{size:`caption`,fontWeight:`semibold`,leading:`tight`,tracking:`widest`,transform:`uppercase`,align:`center`,color:`tertiary`,children:u({id:`zYD5xm`,message:`Crediting`})}),s(`div`,{dir:`ltr`,...c.props(a.heroAmountRow),children:[o(n,{size:30,symbol:l.creditedAsset.symbol,...l.creditedAsset.chainId===void 0?{}:{chainId:l.creditedAsset.chainId},...l.creditedAsset.address===void 0?{}:{address:l.creditedAsset.address},...l.creditedAsset.isNative===void 0?{}:{isNative:l.creditedAsset.isNative},...l.creditedAsset.logoUrl===void 0?{}:{logoUrl:l.creditedAsset.logoUrl},hideChainBadge:!0,...c.props(a.heroAmountIcon)}),l.loading?null:o(t.span,{size:`4xl`,fontWeight:`semibold`,leading:`none`,tracking:`tight`,children:l.amount}),o(t.span,{size:l.loading?`4xl`:`xl`,fontWeight:`semibold`,leading:`none`,tracking:`tight`,children:l.creditedAsset.symbol})]}),o(t.span,{size:`meta`,fontWeight:`medium`,leading:`tight`,align:`center`,color:`subdued`,children:d})]})}export{l as ProcessingStateHero};
1
+ "use client";import{useLingui as e}from"../../../../i18n/useLingui.js";import"../../../../../i18n/index.js";import{text as t}from"../../../../ui/Text/Text.js";import{TokenLogo as n}from"../../../../ui/TokenLogo/TokenLogo.js";import"../../../../ui/TokenLogo/index.js";import"../../../../../ui/index.js";import{useProcessingStateContext as r}from"../context.js";import{PROCESSING_STATE_SLOTS as i}from"../ProcessingState.slots.js";import{styles as a}from"../ProcessingState.styles.js";import{splitAmount as o}from"./splitAmount.js";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";import*as u from"@stylexjs/stylex";function d(){let d=r(`ProcessingState.Hero`),{_:f}=e(),p=d.creditedTo??d.creditedAsset.symbol,m={symbol:d.creditedAsset.symbol,...d.creditedAsset.chainId===void 0?{}:{chainId:d.creditedAsset.chainId},...d.creditedAsset.address===void 0?{}:{address:d.creditedAsset.address},...d.creditedAsset.isNative===void 0?{}:{isNative:d.creditedAsset.isNative},...d.creditedAsset.logoUrl===void 0?{}:{logoUrl:d.creditedAsset.logoUrl}},h=d.amountUsd?o(d.amountUsd):void 0;return l(`div`,{"data-stridge-slot":i.hero,...u.props(a.hero),children:[c(t.span,{size:`caption`,fontWeight:`semibold`,leading:`tight`,tracking:`widest`,transform:`uppercase`,align:`center`,color:`tertiary`,children:f({id:`zYD5xm`,message:`Crediting`})}),h?l(s,{children:[l(`div`,{dir:`ltr`,...u.props(a.heroAmountRow),children:[h.glyph?c(t.span,{size:`2xl`,fontWeight:`semibold`,leading:`none`,tracking:`tight`,children:h.glyph}):null,c(t.span,{size:`4xl`,fontWeight:`semibold`,leading:`none`,tracking:`tight`,children:h.digits})]}),l(`div`,{dir:`ltr`,...u.props(a.heroSubLine),children:[c(n,{size:18,...m,hideChainBadge:!0,...u.props(a.heroSubLineIcon)}),l(t.span,{size:`sm`,fontWeight:`medium`,leading:`tight`,tracking:`tight`,color:`subdued`,children:[d.amount,` `,d.creditedAsset.symbol]})]})]}):l(`div`,{dir:`ltr`,...u.props(a.heroAmountRow),children:[c(n,{size:30,...m,hideChainBadge:!0,...u.props(a.heroAmountIcon)}),d.loading?null:c(t.span,{size:`4xl`,fontWeight:`semibold`,leading:`none`,tracking:`tight`,children:d.amount}),c(t.span,{size:d.loading?`4xl`:`xl`,fontWeight:`semibold`,leading:`none`,tracking:`tight`,children:d.creditedAsset.symbol})]}),c(t.span,{size:`meta`,fontWeight:`medium`,leading:`tight`,align:`center`,color:`subdued`,children:p})]})}export{d as ProcessingStateHero};
@@ -0,0 +1 @@
1
+ function e(e){let t=e.charAt(0);return!t||/[0-9<]/.test(t)?{glyph:``,digits:e}:{glyph:t,digits:e.slice(1)}}export{e as splitAmount};
@@ -58,6 +58,12 @@ type ProcessingStateDialogProps = ProcessingStateProps & DialogShellControls;
58
58
  interface ProcessingStateProps {
59
59
  /** Pre-formatted hero amount string (e.g. `"1.99580"`). Pure layout — no widget-side format. */
60
60
  amount: string;
61
+ /**
62
+ * Optional pre-formatted USD hero figure (e.g. `"$4.01"`, `"< $0.01"`). When set, the Hero
63
+ * promotes it to the primary line and demotes `amount` + `creditedAsset.symbol` to a subline.
64
+ * When omitted, the Hero renders the token amount as the primary line (default).
65
+ */
66
+ amountUsd?: string;
61
67
  /**
62
68
  * The asset that's crediting. Drives the Hero icon, the Hero amount-line symbol, and the default destination
63
69
  * caption.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stridge/kit",
3
- "version": "0.1.0-alpha.22",
3
+ "version": "0.1.0-alpha.23",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [