@keyban/sdk-base
Version:
Keyban Javascript SDK provides core functionalities for the MPC wallet solution, supporting web and Node.js apps with TypeScript, custom storage, and Ethereum blockchain integration.
3 lines • 6.96 kB
JavaScript
import {b}from'./chunk-3UK7MQXP.mjs';import {InMemoryCache}from'@apollo/client/cache';import {createHttpLink,split,ApolloClient,ApolloLink}from'@apollo/client/core';import {setContext}from'@apollo/client/link/context';import {GraphQLWsLink}from'@apollo/client/link/subscriptions';import {getMainDefinition,relayStylePagination}from'@apollo/client/utilities';import {createClient}from'graphql-ws';import {formatUnits}from'viem';var y=class{rpcClient;constructor(e){this.rpcClient=e;}async dppClaim(e){return this.rpcClient.call("dpp","claim",e,this.address)}async loyaltySetup(){return Promise.resolve()}async loyaltyDestroy(){return Promise.resolve()}};function C(i,e){let t=setContext(async(o,{headers:a})=>{let l=await e?.();return {headers:{...a,authorization:l?`Bearer ${l}`:""}}}),r=createHttpLink({uri:i.toString()}),n=new URL(i);n.protocol="wss";let s=new GraphQLWsLink(createClient({url:n.toString()})),m=split(({query:o})=>{let a=getMainDefinition(o);return a.kind==="OperationDefinition"&&a.operation==="subscription"},s,r);return new ApolloClient({connectToDevTools:true,defaultOptions:{query:{fetchPolicy:"network-only"},watchQuery:{fetchPolicy:"cache-and-network"}},cache:new InMemoryCache({typePolicies:{Query:{fields:{tokenBalances:relayStylePagination(["filter"]),nftBalances:relayStylePagination(["filter"]),assetTransfers:relayStylePagination(["filter"]),orders:relayStylePagination(["filter"])}},Transaction:{fields:{date:{read(o){return o&&o+"Z"}}}}}}),link:ApolloLink.from([t,m])})}var u=class{apiUrl;appId;network;apolloClient;clientShareProvider;metadataConfig;constructor(e,t){this.apiUrl=new URL(e.apiUrl??"https://api.prod.keyban.io"),this.appId=e.appId,this.network=e.network,this.clientShareProvider=e.clientShareProvider,this.clientShareProvider instanceof p&&this.clientShareProvider.registerClient(this);let r={EthereumAnvil:"subql-ethereum-anvil.",PolygonAmoy:"subql-polygon-amoy.",StarknetDevnet:"subql-starknet-devnet.",StarknetSepolia:"subql-starknet-sepolia.",StarknetMainnet:"subql-starknet-mainnet.",StellarQuickstart:"subql-stellar-quickstart.",StellarTestnet:"subql-stellar-testnet.",StellarMainnet:"subql-stellar-mainnet."}[this.network];this.apolloClient=C(new URL(this.apiUrl.origin.replace("api.",r)));let n=new URL("/v1/metadata",this.apiUrl);n.searchParams.set("network",this.network),this.metadataConfig=t??fetch(n).then(s=>s.json());}get rpcClient(){return b.getInstance(this)}get nativeCurrency(){return {EthereumAnvil:{decimals:18,name:"Ether",symbol:"ETH"},PolygonAmoy:{name:"POL",symbol:"POL",decimals:18},StarknetDevnet:{name:"Starknet Token",symbol:"STRK",decimals:18},StarknetSepolia:{name:"StarkNet Token",symbol:"STRK",decimals:18},StarknetMainnet:{name:"StarkNet Token",symbol:"STRK",decimals:18},StellarQuickstart:{name:"Lumen",symbol:"XLM",decimals:7},StellarTestnet:{name:"Lumen",symbol:"XLM",decimals:7},StellarMainnet:{name:"Lumen",symbol:"XLM",decimals:7}}[this.network]}get feesUnit(){return {EthereumAnvil:{symbol:"gwei",decimals:9},PolygonAmoy:{symbol:"gwei",decimals:9},StarknetDevnet:{symbol:"FRI",decimals:18},StarknetSepolia:{symbol:"FRI",decimals:18},StarknetMainnet:{symbol:"FRI",decimals:18},StellarQuickstart:{symbol:"stroop",decimals:7},StellarTestnet:{symbol:"stroop",decimals:7},StellarMainnet:{symbol:"stroop",decimals:7}}[this.network]}async apiStatus(){return fetch(new URL("/health/ready",this.apiUrl)).then(e=>e.ok?"operational":"down").catch(e=>(console.error("Failed to perform health check",e),"down"))}async isAuthenticated(){return this.rpcClient.call("auth","isAuthenticated")}async getUser(){return this.rpcClient.call("auth","getUser")}async passwordLogin(e){return this.rpcClient.call("auth","passwordLogin",e)}async passwordlessStart(e){return this.rpcClient.call("auth","passwordlessStart",e)}async passwordlessLogin(e){return this.rpcClient.call("auth","passwordlessLogin",e)}async login(e){let t=await this.rpcClient.call("auth","getLoginUrl",e),r=500,n=685,s=window.screenX+(window.innerWidth-r)/2,m=window.screenY+(window.innerHeight-n)/2,o=window.open(t,`keyban:auth:${this.appId}`,`left=${s},top=${m},width=${r},height=${n},popup,resizable,scrollbars`),a=new Promise(l=>{let c=b=>{b.origin===this.apiUrl.origin&&b.data==="keyban:auth:isAuthenticated"&&(window.removeEventListener("message",c),l());};window.addEventListener("message",c);});await new Promise(l=>{let c=setInterval(()=>{o?.closed&&(clearInterval(c),l());},100);}),await Promise.race([a,new Promise(l=>setTimeout(l,2e3))]);}async logout(){let e=await this.rpcClient.call("auth","getLogoutUrl",window.location.href),t=500,r=685,n=window.screenX+(window.innerWidth-t)/2,s=window.screenY+(window.innerHeight-r)/2,m=window.open(e,`keyban:auth:${this.appId}`,`left=${n},top=${s},width=${t},height=${r},popup,resizable,scrollbars`);await new Promise(o=>{let a=setInterval(()=>{m?.closed&&(clearInterval(a),o());},100);});}},g=class extends u{#t;#e=new Map;constructor(e){super(e),this.#t={EthereumAnvil:()=>import('./evm-HH7W4XO7.mjs').then(({KeybanEvmClient:t})=>new t(e,this.metadataConfig)),PolygonAmoy:()=>import('./evm-HH7W4XO7.mjs').then(({KeybanEvmClient:t})=>new t(e,this.metadataConfig)),StarknetDevnet:()=>import('./starknet-L7RGFFGF.mjs').then(({StarknetClient:t})=>new t(e,this.metadataConfig)),StarknetSepolia:()=>import('./starknet-L7RGFFGF.mjs').then(({StarknetClient:t})=>new t(e,this.metadataConfig)),StarknetMainnet:()=>import('./starknet-L7RGFFGF.mjs').then(({StarknetClient:t})=>new t(e,this.metadataConfig)),StellarQuickstart:()=>import('./stellar-REZKRHRW.mjs').then(({StellarClient:t})=>new t(e,this.metadataConfig)),StellarTestnet:()=>import('./stellar-REZKRHRW.mjs').then(({StellarClient:t})=>new t(e,this.metadataConfig)),StellarMainnet:()=>import('./stellar-REZKRHRW.mjs').then(({StellarClient:t})=>new t(e,this.metadataConfig))}[this.network]();}async initialize(){let e="WHATEVER",t=this.#e.get(e);if(t)return t;let r=this.#t.then(n=>n.initialize());return this.#e.set(e,r),r.catch(()=>{}).finally(()=>this.#e.delete(e)),r}};var p=class{#t;registerClient(e){this.#t=e;}get#e(){return b.getInstance(this.#t)}async get(e){return this.#e.call("clientShareStorage","get",e)}async set(e,t){return this.#e.call("clientShareStorage","set",e,t)}};var f=(a=>(a.EthereumAnvil="EthereumAnvil",a.PolygonAmoy="PolygonAmoy",a.StarknetDevnet="StarknetDevnet",a.StarknetSepolia="StarknetSepolia",a.StarknetMainnet="StarknetMainnet",a.StellarQuickstart="StellarQuickstart",a.StellarTestnet="StellarTestnet",a.StellarMainnet="StellarMainnet",a))(f||{});function Y(i,e,t){let r=e.decimals,n=e.symbol;e.isFees?(r=i.feesUnit.decimals,n=i.feesUnit.symbol):e.isNative?(r=i.nativeCurrency.decimals,n=i.nativeCurrency.symbol):t&&(r=t.decimals??void 0,n=t.symbol??void 0),r=r??0;let s=formatUnits(typeof e.raw=="bigint"?e.raw:BigInt(e.raw),r);return n?`${s} ${n}`:s}
export{y as a,f as b,u as c,g as d,p as e,Y as f};//# sourceMappingURL=chunk-UGMWAWZZ.mjs.map
//# sourceMappingURL=chunk-UGMWAWZZ.mjs.map