@@ -20,23 +20,24 @@ import {
2020 SubAddressObj , SubAddressObjUncapitalized ,
2121} from '../types'
2222import {
23- substrateNormalizedWithMirrorIfEthereum ,
24- addressToCrossAccountId , addressToCrossAccountIdNormalized ,
25- guessAddressAndExtractItNormalized ,
26- guessAddressAndExtractItNormalizedSafe
23+ guessAddressAndExtractCrossAccountIdSafe ,
24+ guessAddressAndExtractCrossAccountIdUnsafe ,
25+ substrateOrMirrorIfEthereum
2726} from './crossAccountId'
2827
2928import * as algorithms from './imports'
3029import * as constants from './constants'
30+ import { add } from "@noble/hashes/_u64" ;
3131
3232export { constants , algorithms }
3333
3434const ETH_ADDRESS_REGEX = / ^ 0 x [ a - f A - F 0 - 9 ] { 40 } $ /
3535
3636export type DecodeSubstrateAddressResult = {
37- u8a : Uint8Array ,
38- hex : string ,
37+ u8a : Uint8Array
38+ hex : string
3939 bigint : bigint
40+ ss58Prefix : number
4041}
4142
4243export const validate = {
@@ -131,20 +132,62 @@ export const nesting = {
131132 idsToAddress : collectionIdAndTokenIdToNestingAddress ,
132133 addressToIds : nestingAddressToCollectionIdAndTokenId ,
133134}
134- export const to = {
135- crossAccountId : addressToCrossAccountId ,
136- crossAccountIdNormalized : addressToCrossAccountIdNormalized ,
137- substrateNormalizedOrMirrorIfEthereum : substrateNormalizedWithMirrorIfEthereum ,
138- }
139135
140136export const extract = {
141- normalizedAddressFromObject : guessAddressAndExtractItNormalized ,
142- normalizedAddressFromObjectSafe : guessAddressAndExtractItNormalizedSafe ,
143- crossAccountIdFromObject : ( obj : any ) : CrossAccountId => {
144- return addressToCrossAccountId ( guessAddressAndExtractItNormalized ( obj ) )
137+ address : ( addressOrCrossAccountId : string | object ) : string => {
138+ const crossAccountId = guessAddressAndExtractCrossAccountIdUnsafe ( addressOrCrossAccountId )
139+ return ( crossAccountId . Substrate || crossAccountId . Ethereum ) as string
140+ } ,
141+ addressSafe : ( addressOrCrossAccountId : string | object ) : string | null => {
142+ const crossAccountId = guessAddressAndExtractCrossAccountIdSafe ( addressOrCrossAccountId )
143+ return crossAccountId ? ( crossAccountId . Substrate || crossAccountId . Ethereum ) as string : null
144+ } ,
145+
146+ addressNormalized : ( addressOrCrossAccountId : string | object ) : string => {
147+ const crossAccountId = guessAddressAndExtractCrossAccountIdUnsafe ( addressOrCrossAccountId , true )
148+ return ( crossAccountId . Substrate || crossAccountId . Ethereum ) as string
149+ } ,
150+ addressNormalizedSafe : ( addressOrCrossAccountId : string | object ) : string | null => {
151+ const crossAccountId = guessAddressAndExtractCrossAccountIdSafe ( addressOrCrossAccountId , true )
152+ return crossAccountId ? ( crossAccountId . Substrate || crossAccountId . Ethereum ) as string : null
153+ } ,
154+
155+
156+ crossAccountId : ( addressOrCrossAccountId : string | object ) : CrossAccountId => {
157+ return guessAddressAndExtractCrossAccountIdUnsafe ( addressOrCrossAccountId )
158+ } ,
159+ crossAccountIdSafe : ( addressOrCrossAccountId : string | object ) : CrossAccountId | null => {
160+ return guessAddressAndExtractCrossAccountIdSafe ( addressOrCrossAccountId )
161+ } ,
162+
163+ crossAccountIdNormalized : ( addressOrCrossAccountId : string | object ) : CrossAccountId => {
164+ return guessAddressAndExtractCrossAccountIdUnsafe ( addressOrCrossAccountId , true )
165+ } ,
166+ crossAccountIdNormalizedSafe : ( addressOrCrossAccountId : string | object ) : CrossAccountId | null => {
167+ return guessAddressAndExtractCrossAccountIdSafe ( addressOrCrossAccountId , true )
145168 } ,
146- crossAccountIdFromObjectNormalized : ( obj : any ) : CrossAccountId => {
147- return addressToCrossAccountId ( guessAddressAndExtractItNormalized ( obj ) )
169+
170+
171+ substrateOrMirrorIfEthereum : ( addressOrCrossAccountId : string | object ) : string => {
172+ return substrateOrMirrorIfEthereum ( addressOrCrossAccountId )
173+ } ,
174+ substrateOrMirrorIfEthereumSafe : ( addressOrCrossAccountId : string | object ) : string | null => {
175+ try {
176+ return substrateOrMirrorIfEthereum ( addressOrCrossAccountId )
177+ } catch {
178+ return null
179+ }
180+ } ,
181+
182+ substrateOrMirrorIfEthereumNormalized : ( addressOrCrossAccountId : string | object ) : string => {
183+ return substrateOrMirrorIfEthereum ( addressOrCrossAccountId , true )
184+ } ,
185+ substrateOrMirrorIfEthereumNormalizedSafe : ( addressOrCrossAccountId : string | object ) : string | null => {
186+ try {
187+ return substrateOrMirrorIfEthereum ( addressOrCrossAccountId , true )
188+ } catch {
189+ return null
190+ }
148191 } ,
149192}
150193
@@ -176,7 +219,6 @@ export const Address = {
176219 validate,
177220 collection,
178221 nesting,
179- to,
180222 extract,
181223 mirror,
182224 normalize,
0 commit comments