@@ -32,6 +32,10 @@ export interface Account {
3232 readonly sequence : number ;
3333}
3434
35+ export interface AccountFromAnyOption {
36+ readonly pubkeyDecoders ?: Record < string , ( pubkey : Any ) => Pubkey > ;
37+ }
38+
3539/**
3640 * Extracts a BaseAccount from simple wrapper account types using binary parsing.
3741 * This handles simple wrapper account types like ModuleAccount that contain
@@ -86,13 +90,14 @@ function extractBaseAccountFromWrapper(value: Uint8Array): BaseAccount | null {
8690 * @returns A standardized Account object
8791 * @throws Error if the account type is not supported
8892 */
89- export function accountFromAny ( accountAny : Any ) : Account {
93+ export function accountFromAny ( accountAny : Any , opts ?: AccountFromAnyOption ) : Account {
94+ const pubkeyDecoders = opts ?. pubkeyDecoders ;
9095 switch ( accountAny . typeUrl ) {
9196 case "/cosmos.auth.v1beta1.BaseAccount" : {
9297 const baseAccount = BaseAccount . decode ( accountAny . value ) ;
9398 return {
9499 address : baseAccount . address ,
95- pubkey : decodeOptionalPubkey ( baseAccount . pubKey ) ,
100+ pubkey : decodeOptionalPubkey ( baseAccount . pubKey , pubkeyDecoders ) ,
96101 accountNumber : Number ( baseAccount . accountNumber ) ,
97102 sequence : Number ( baseAccount . sequence ) ,
98103 } ;
@@ -107,7 +112,7 @@ export function accountFromAny(accountAny: Any): Account {
107112
108113 return {
109114 address : baseAccount . address ,
110- pubkey : decodeOptionalPubkey ( baseAccount . pubKey ) ,
115+ pubkey : decodeOptionalPubkey ( baseAccount . pubKey , pubkeyDecoders ) ,
111116 accountNumber : Number ( baseAccount . accountNumber ) ,
112117 sequence : Number ( baseAccount . sequence ) ,
113118 } ;
@@ -122,7 +127,7 @@ export function accountFromAny(accountAny: Any): Account {
122127
123128 return {
124129 address : baseAccount . address ,
125- pubkey : decodeOptionalPubkey ( baseAccount . pubKey ) ,
130+ pubkey : decodeOptionalPubkey ( baseAccount . pubKey , pubkeyDecoders ) ,
126131 accountNumber : Number ( baseAccount . accountNumber ) ,
127132 sequence : Number ( baseAccount . sequence ) ,
128133 } ;
@@ -137,7 +142,7 @@ export function accountFromAny(accountAny: Any): Account {
137142
138143 return {
139144 address : baseAccount . address ,
140- pubkey : decodeOptionalPubkey ( baseAccount . pubKey ) ,
145+ pubkey : decodeOptionalPubkey ( baseAccount . pubKey , pubkeyDecoders ) ,
141146 accountNumber : Number ( baseAccount . accountNumber ) ,
142147 sequence : Number ( baseAccount . sequence ) ,
143148 } ;
@@ -152,7 +157,7 @@ export function accountFromAny(accountAny: Any): Account {
152157
153158 return {
154159 address : baseAccount . address ,
155- pubkey : decodeOptionalPubkey ( baseAccount . pubKey ) ,
160+ pubkey : decodeOptionalPubkey ( baseAccount . pubKey , pubkeyDecoders ) ,
156161 accountNumber : Number ( baseAccount . accountNumber ) ,
157162 sequence : Number ( baseAccount . sequence ) ,
158163 } ;
@@ -164,7 +169,7 @@ export function accountFromAny(accountAny: Any): Account {
164169 if ( baseAccount ) {
165170 return {
166171 address : baseAccount . address ,
167- pubkey : decodeOptionalPubkey ( baseAccount . pubKey ) ,
172+ pubkey : decodeOptionalPubkey ( baseAccount . pubKey , pubkeyDecoders ) ,
168173 accountNumber : Number ( baseAccount . accountNumber ) ,
169174 sequence : Number ( baseAccount . sequence ) ,
170175 } ;
@@ -235,4 +240,3 @@ export { generateMnemonic };
235240
236241// Re-export fee helpers
237242export * from './fee' ;
238-
0 commit comments