@@ -252,63 +252,65 @@ export class Sol extends BaseCoin {
252252 return explanation . tokenEnablements ;
253253 }
254254
255- throwIfMissingEnableTokenConfigOrReturn ( txParams : TransactionParams ) : TokenEnablement {
255+ throwIfMissingEnableTokenConfigOrReturn ( txParams : TransactionParams ) : TokenEnablement [ ] {
256256 if ( ! txParams . enableTokens || txParams . enableTokens . length === 0 ) throw new Error ( 'Missing enable token config' ) ;
257- if ( txParams . enableTokens . length > 1 )
258- throw new Error ( 'Multiple token enablement not supported in a single transaction' ) ;
259- return txParams . enableTokens [ 0 ] ;
257+ return txParams . enableTokens ;
260258 }
261259
262- verifyTokenName ( tokenEnablementsPrebuild : ITokenEnablement [ ] , enableTokensConfig : TokenEnablement ) : void {
263- const expectedTokenName = enableTokensConfig . name ;
264- tokenEnablementsPrebuild . forEach ( ( tokenEnablement ) => {
265- if ( ! tokenEnablement . tokenName ) throw new Error ( 'Missing token name on token enablement tx' ) ;
266- if ( tokenEnablement . tokenName !== expectedTokenName )
267- throw new Error (
268- `Invalid token name: expected ${ expectedTokenName } , got ${ tokenEnablement . tokenName } on token enablement tx`
269- ) ;
260+ verifyTokenName ( tokenEnablementsPrebuild : ITokenEnablement [ ] , enableTokensConfig : TokenEnablement [ ] ) : void {
261+ enableTokensConfig . forEach ( ( enableTokenConfig ) => {
262+ const expectedTokenName = enableTokenConfig . name ;
263+ tokenEnablementsPrebuild . forEach ( ( tokenEnablement ) => {
264+ if ( ! tokenEnablement . tokenName ) throw new Error ( 'Missing token name on token enablement tx' ) ;
265+ if ( tokenEnablement . tokenName !== expectedTokenName )
266+ throw new Error (
267+ `Invalid token name: expected ${ expectedTokenName } , got ${ tokenEnablement . tokenName } on token enablement tx`
268+ ) ;
269+ } ) ;
270270 } ) ;
271271 }
272272
273273 async verifyTokenAddress (
274274 tokenEnablementsPrebuild : ITokenEnablement [ ] ,
275- enableTokensConfig : TokenEnablement
275+ enableTokensConfig : TokenEnablement [ ]
276276 ) : Promise < void > {
277- const expectedTokenAddress = enableTokensConfig . address ;
278- const expectedTokenName = enableTokensConfig . name ;
279-
280- if ( ! expectedTokenAddress ) throw new Error ( 'Missing token address on token enablement tx' ) ;
281- if ( ! expectedTokenName ) throw new Error ( 'Missing token name on token enablement tx' ) ;
282-
283- for ( const tokenEnablement of tokenEnablementsPrebuild ) {
284- let tokenMintAddress : Readonly < SolCoin > | undefined ;
285- try {
286- tokenMintAddress = getSolTokenFromTokenName ( expectedTokenName ) ;
287- } catch {
288- throw new Error ( `Unable to derive ATA for token address: ${ expectedTokenAddress } ` ) ;
289- }
290- if (
291- ! tokenMintAddress ||
292- tokenMintAddress . tokenAddress === undefined ||
293- tokenMintAddress . programId === undefined
294- ) {
295- throw new Error ( `Unable to get token mint address for ${ expectedTokenName } ` ) ;
296- }
297- let ata : string ;
298- try {
299- ata = await getAssociatedTokenAccountAddress (
300- tokenMintAddress . tokenAddress ,
301- expectedTokenAddress ,
302- true ,
303- tokenMintAddress . programId
304- ) ;
305- } catch {
306- throw new Error ( `Unable to derive ATA for token address: ${ expectedTokenAddress } ` ) ;
307- }
308- if ( ata !== tokenEnablement . address ) {
309- throw new Error (
310- `Invalid token address: expected ${ ata } , got ${ tokenEnablement . address } on token enablement tx`
311- ) ;
277+ for ( const enableTokenConfig of enableTokensConfig ) {
278+ const expectedTokenAddress = enableTokenConfig . address ;
279+ const expectedTokenName = enableTokenConfig . name ;
280+
281+ if ( ! expectedTokenAddress ) throw new Error ( 'Missing token address on token enablement tx' ) ;
282+ if ( ! expectedTokenName ) throw new Error ( 'Missing token name on token enablement tx' ) ;
283+
284+ for ( const tokenEnablement of tokenEnablementsPrebuild ) {
285+ let tokenMintAddress : Readonly < SolCoin > | undefined ;
286+ try {
287+ tokenMintAddress = getSolTokenFromTokenName ( expectedTokenName ) ;
288+ } catch {
289+ throw new Error ( `Unable to derive ATA for token address: ${ expectedTokenAddress } ` ) ;
290+ }
291+ if (
292+ ! tokenMintAddress ||
293+ tokenMintAddress . tokenAddress === undefined ||
294+ tokenMintAddress . programId === undefined
295+ ) {
296+ throw new Error ( `Unable to get token mint address for ${ expectedTokenName } ` ) ;
297+ }
298+ let ata : string ;
299+ try {
300+ ata = await getAssociatedTokenAccountAddress (
301+ tokenMintAddress . tokenAddress ,
302+ expectedTokenAddress ,
303+ true ,
304+ tokenMintAddress . programId
305+ ) ;
306+ } catch {
307+ throw new Error ( `Unable to derive ATA for token address: ${ expectedTokenAddress } ` ) ;
308+ }
309+ if ( ata !== tokenEnablement . address ) {
310+ throw new Error (
311+ `Invalid token address: expected ${ ata } , got ${ tokenEnablement . address } on token enablement tx`
312+ ) ;
313+ }
312314 }
313315 }
314316 }
0 commit comments