UNPKG

@premia/pair-lists

Version:

📚 The Token Pair Lists specification

3 lines (2 loc) • 10.6 kB
"use strict";var e,i;function t(e,i){return e.major<i.major?-1:e.major>i.major?1:e.minor<i.minor?-1:e.minor>i.minor?1:e.patch<i.patch?-1:e.patch>i.patch?1:0}function n(e,i){return e===i||typeof e==typeof i&&!(!Array.isArray(e)||!Array.isArray(i))&&e.every((function(e,t){return i[t]===e}))}function r(e,i,t,r){var s=e.reduce((function(e,i){return e[i.base.address]||(e[i.base.address]={}),e[i.base.address][i.quote.address]=i,e}),{}),a=t.reduce((function(e,i){return e[i.chainId]||(e[i.chainId]={}),e[i.chainId][i.address]=i,e}),{}),o=i.reduce((function(e,i){var t,r,a=null==(t=s[i.base.address])?void 0:t[i.quote.address];if(a){var o=Object.keys(i).filter((function(e){return"base"!==e&&"quote"!==e&&"priceOracleAddress"!==e})).filter((function(e){return!n(i[e],a[e])}));o.length>0&&(e.changed[i.base.address]||(e.changed[i.base.address]={}),e.changed[i.base.address][i.quote.address]=o)}else e.added.push(i);return e.index[i.base.address]?e.index[i.base.address][i.quote.address]=!0:e.index[i.base.address]=((r={})[i.quote.address]=!0,r),e}),{added:[],changed:{},index:{}}),d=r.reduce((function(e,i){var t,r,s=null==(t=a[i.chainId])?void 0:t[i.address];if(s){var o=Object.keys(i).filter((function(e){return"address"!==e&&"chainId"!==e&&"priceOracleAddress"!==e})).filter((function(e){return!n(i[e],s[e])}));o.length>0&&(e.changed[i.chainId]||(e.changed[i.chainId]={}),e.changed[i.chainId][i.address]=o)}else e.added.push(i);return e.index[i.chainId]?e.index[i.chainId][i.address]=!0:e.index[i.chainId]=((r={})[i.address]=!0,r),e}),{added:[],changed:{},index:{}}),p=e.reduce((function(e,i){return o.index[i.base.address]&&o.index[i.base.address][i.quote.address]||e.push(i),e}),[]),m=t.reduce((function(e,i){return d.index[i.chainId]&&d.index[i.chainId][i.address]||e.push(i),e}),[]);return{addedTokens:d.added,changedTokens:d.changed,addedPairs:o.added,changedPairs:o.changed,removedTokens:m,removedPairs:p}}Object.defineProperty(exports,"__esModule",{value:!0}),(e=exports.AdapterType||(exports.AdapterType={})).None="None",e.Chainlink="Chainlink",e.UniswapV3="UniswapV3",e.Custom="Custom",(i=exports.VersionUpgrade||(exports.VersionUpgrade={}))[i.NONE=0]="NONE",i[i.PATCH=1]="PATCH",i[i.MINOR=2]="MINOR",i[i.MAJOR=3]="MAJOR",exports.diffPairLists=r,exports.getVersionUpgrade=function(e,i){return i.major>e.major?exports.VersionUpgrade.MAJOR:i.major<e.major?exports.VersionUpgrade.NONE:i.minor>e.minor?exports.VersionUpgrade.MINOR:i.minor<e.minor?exports.VersionUpgrade.NONE:i.patch>e.patch?exports.VersionUpgrade.PATCH:exports.VersionUpgrade.NONE},exports.isVersionUpdate=function(e,i){return t(e,i)<0},exports.minVersionBump=function(e,i,t,n){var s=r(e,i,t,n);return s.removedTokens.length>0||s.removedPairs.length>0?exports.VersionUpgrade.MAJOR:s.addedTokens.length>0||s.addedPairs.length>0?exports.VersionUpgrade.MINOR:Object.keys(s.changedTokens).length>0||Object.keys(s.changedPairs).length>0?exports.VersionUpgrade.PATCH:exports.VersionUpgrade.NONE},exports.nextVersion=function(e,i){switch(i){case exports.VersionUpgrade.NONE:return e;case exports.VersionUpgrade.MAJOR:return{major:e.major+1,minor:0,patch:0};case exports.VersionUpgrade.MINOR:return{major:e.major,minor:e.minor+1,patch:0};case exports.VersionUpgrade.PATCH:return{major:e.major,minor:e.minor,patch:e.patch+1}}},exports.schema={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://premia.finance/pairlist.schema.json",title:"Premia Token Pair List",description:"Schema for lists of token pairs compatible with the Premia Interface",definitions:{Version:{type:"object",description:"The version of the list, used in change detection",examples:[{major:1,minor:0,patch:0}],additionalProperties:!1,properties:{major:{type:"integer",description:"The major version of the list. Must be incremented when tokens are removed from the list or token addresses are changed.",minimum:0,examples:[1,2]},minor:{type:"integer",description:"The minor version of the list. Must be incremented when tokens are added to the list.",minimum:0,examples:[0,1]},patch:{type:"integer",description:"The patch version of the list. Must be incremented for any changes to the list.",minimum:0,examples:[0,1]}},required:["major","minor","patch"]},TagIdentifier:{type:"string",description:"The unique identifier of a tag",minLength:1,maxLength:10,pattern:"^[\\w]+$",examples:["compound","stablecoin"]},ExtensionIdentifier:{type:"string",description:"The name of a token extension property",minLength:1,maxLength:40,pattern:"^[\\w]+$",examples:["color","is_fee_on_transfer","aliases"]},ExtensionMap:{type:"object",description:"An object containing any arbitrary or vendor-specific token or pair metadata",maxProperties:10,propertyNames:{$ref:"#/definitions/ExtensionIdentifier"},additionalProperties:{$ref:"#/definitions/ExtensionValue"},examples:[{color:"#000000",is_verified_by_me:!0},{"x-bridged-addresses-by-chain":{1:{bridgeAddress:"0x4200000000000000000000000000000000000010",tokenAddress:"0x4200000000000000000000000000000000000010"}}}]},ExtensionPrimitiveValue:{anyOf:[{type:"string",minLength:1,maxLength:42,examples:["#00000"]},{type:"boolean",examples:[!0]},{type:"number",examples:[15]},{type:"null"}]},ExtensionValue:{anyOf:[{$ref:"#/definitions/ExtensionPrimitiveValue"},{type:"object",maxProperties:10,propertyNames:{$ref:"#/definitions/ExtensionIdentifier"},additionalProperties:{$ref:"#/definitions/ExtensionValueInner0"}}]},ExtensionValueInner0:{anyOf:[{$ref:"#/definitions/ExtensionPrimitiveValue"},{type:"object",maxProperties:10,propertyNames:{$ref:"#/definitions/ExtensionIdentifier"},additionalProperties:{$ref:"#/definitions/ExtensionValueInner1"}}]},ExtensionValueInner1:{anyOf:[{$ref:"#/definitions/ExtensionPrimitiveValue"}]},TagDefinition:{type:"object",description:"Definition of a tag that can be associated with a token or pair via its identifier",additionalProperties:!1,properties:{name:{type:"string",description:"The name of the tag",pattern:"^[ \\w]+$",minLength:1,maxLength:20},description:{type:"string",description:"A user-friendly description of the tag",pattern:"^[ \\w\\.,:]+$",minLength:1,maxLength:200}},required:["name","description"],examples:[{name:"Stablecoin",description:"A token with value pegged to another asset"}]},TokenInfo:{type:"object",description:"Metadata for a single token in a token list",additionalProperties:!1,properties:{chainId:{type:"integer",description:"The chain ID of the Ethereum network where this token is deployed",minimum:1,examples:[1,42]},address:{type:"string",description:"The checksummed address of the token on the specified chain ID",pattern:"^0x[a-fA-F0-9]{40}$",examples:["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]},decimals:{type:"integer",description:"The number of decimals for the token balance",minimum:0,maximum:255,examples:[18]},name:{type:"string",description:"The name of the token",minLength:0,maxLength:40,anyOf:[{const:""},{pattern:"^[ \\S+]+$"}],examples:["USD Coin"]},symbol:{type:"string",description:"The symbol for the token",minLength:0,maxLength:20,anyOf:[{const:""},{pattern:"^\\S+$"}],examples:["USDC"]},logoURI:{type:"string",description:"A URI to the token logo asset; if not set, interface will attempt to find a logo based on the token address; suggest SVG or PNG of size 64x64",format:"uri",examples:["ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM"]},tags:{type:"array",description:"An array of tag identifiers associated with the token; tags are defined at the list level",items:{$ref:"#/definitions/TagIdentifier"},maxItems:10,examples:["stablecoin","compound"]},extensions:{$ref:"#/definitions/ExtensionMap"}},required:["chainId","address","decimals","name","symbol"]},PairInfo:{type:"object",description:"Metadata for a single pair in a pair list",additionalProperties:!1,properties:{base:{$ref:"#/definitions/TokenInfo"},quote:{$ref:"#/definitions/TokenInfo"},decimals:{type:"integer",description:"The number of decimals for the pair price",minimum:0,maximum:255,examples:[18]},priceOracleAddress:{type:"string",description:"The checksummed address of the token price oracle on the specified chain ID",pattern:"^0x[a-fA-F0-9]{40}$",examples:["0x5f4ec3df9cbd43714fe2740f5e3616155c5b8419"]},name:{type:"string",description:"The name of the token pair",minLength:0,maxLength:40,anyOf:[{const:""},{pattern:"^[ \\S+]+$"}],examples:["WETH/USDC - Chainlink"]},logoURI:{type:"string",description:"A URI to the pair logo asset; if not set, interface will attempt to find a logo based on the pair; suggest SVG or PNG of size 64x64",format:"uri",examples:["ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM"]},tags:{type:"array",description:"An array of tag identifiers associated with the pair; tags are defined at the list level",items:{$ref:"#/definitions/TagIdentifier"},maxItems:10,examples:["stablecoin","compound"]},extensions:{$ref:"#/definitions/ExtensionMap"}},required:["chainId","address","decimals","name","symbol","priceOracleAddress"]}},type:"object",additionalProperties:!1,properties:{name:{type:"string",description:"The name of the token pair list",minLength:1,maxLength:30,pattern:"^[\\w ]+$",examples:["My Token Pair List"]},timestamp:{type:"string",format:"date-time",description:"The timestamp of this list version; i.e. when this immutable version of the list was created"},version:{$ref:"#/definitions/Version"},pairs:{type:"array",description:"The list of token pairs included in the list",items:{$ref:"#/definitions/PairInfo"},minItems:1,maxItems:1e3},tokens:{type:"array",description:"The list of tokens included in the list",items:{$ref:"#/definitions/TokenInfo"},minItems:1,maxItems:2e3},keywords:{type:"array",description:"Keywords associated with the contents of the list; may be used in list discoverability",items:{type:"string",description:"A keyword to describe the contents of the list",minLength:1,maxLength:20,pattern:"^[\\w ]+$",examples:["compound","lending","personal tokens"]},maxItems:20,uniqueItems:!0},tags:{type:"object",description:"A mapping of tag identifiers to their name and description",propertyNames:{$ref:"#/definitions/TagIdentifier"},additionalProperties:{$ref:"#/definitions/TagDefinition"},maxProperties:20,examples:[{stablecoin:{name:"Stablecoin",description:"A token with value pegged to another asset"}}]},logoURI:{type:"string",description:"A URI for the logo of the pair list; prefer SVG or PNG of size 256x256",format:"uri",examples:["ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM"]}},required:["name","timestamp","version","tokens"]},exports.versionComparator=t; //# sourceMappingURL=pair-lists.cjs.production.min.js.map