@@ -32,10 +32,11 @@ import {
3232 serializeLayout ,
3333 signSendWait ,
3434 toChainId ,
35+ Platform ,
36+ chainToPlatform ,
3537} from "@wormhole-foundation/sdk-connect" ;
3638import "@wormhole-foundation/sdk-definitions-ntt" ;
3739import { NttRoute } from "../types.js" ;
38- import { getReferrerAddress } from "./consts.js" ;
3940import {
4041 calculateReferrerFee ,
4142 fetchCapabilities ,
@@ -53,13 +54,17 @@ import {
5354export namespace NttExecutorRoute {
5455 export type Config = {
5556 ntt : NttRoute . Config ;
57+ referrerFee ?: ReferrerFeeConfig ;
58+ } ;
59+
60+ export type ReferrerFeeConfig = {
5661 // Referrer Fee in *tenths* of basis points - e.g. 10 = 1 basis point (0.01%)
57- referrerFeeDbps ? : bigint ;
58- perTokenOverrides ?: {
59- chain : Chain ;
60- address : string ;
61- referrerFeeDbps : bigint ;
62- } [ ] ;
62+ feeDbps : bigint ;
63+ // The address to which the referrer fee will be sent
64+ referrerAddresses : Partial < Record < Platform , string > > ;
65+ perTokenOverrides ?: Partial <
66+ Record < Chain , Record < string , { referrerFeeDbps : bigint } > >
67+ > ;
6368 } ;
6469
6570 export type Options = {
@@ -191,15 +196,18 @@ export class NttExecutorRoute<N extends Network>
191196 request . destination . id
192197 ) ;
193198
194- let referrerFeeDbps = this . staticConfig . referrerFeeDbps ?? 0n ;
195- if ( this . staticConfig . perTokenOverrides ) {
196- const srcTokenAddress = canonicalAddress ( request . source . id ) ;
197- const override = this . staticConfig . perTokenOverrides . find (
198- ( o ) =>
199- o . chain === request . source . id . chain && o . address === srcTokenAddress
200- ) ;
201- if ( override ) {
202- referrerFeeDbps = override . referrerFeeDbps ;
199+ let referrerFeeDbps = 0n ;
200+ if ( this . staticConfig . referrerFee ) {
201+ referrerFeeDbps = this . staticConfig . referrerFee . feeDbps ;
202+ if ( this . staticConfig . referrerFee . perTokenOverrides ) {
203+ const srcTokenAddress = canonicalAddress ( request . source . id ) ;
204+ const override =
205+ this . staticConfig . referrerFee . perTokenOverrides [
206+ request . source . id . chain
207+ ] ?. [ srcTokenAddress ] ;
208+ if ( override ) {
209+ referrerFeeDbps = override . referrerFeeDbps ;
210+ }
203211 }
204212 }
205213
@@ -302,11 +310,17 @@ export class NttExecutorRoute<N extends Network>
302310 ) : Promise < NttWithExecutor . Quote > {
303311 const { fromChain, toChain } = request ;
304312
305- const referrerAddress = getReferrerAddress ( fromChain . chain ) ;
306- if ( ! referrerAddress ) {
307- throw new Error ( "No referrer address found" ) ;
313+ let referrer : ChainAddress | undefined = undefined ;
314+ const referrerFeeConfig = this . staticConfig . referrerFee ;
315+ if ( referrerFeeConfig && referrerFeeConfig . feeDbps > 0n ) {
316+ const platform = chainToPlatform ( fromChain . chain ) ;
317+ const referrerAddress =
318+ referrerFeeConfig . referrerAddresses ?. [ platform ] ?? "" ;
319+ if ( ! referrerAddress ) {
320+ throw new Error ( "No referrer address found" ) ;
321+ }
322+ referrer = Wormhole . chainAddress ( fromChain . chain , referrerAddress ) ;
308323 }
309- const referrer = Wormhole . chainAddress ( fromChain . chain , referrerAddress ) ;
310324
311325 const { referrerFee, remainingAmount, referrerFeeDbps } =
312326 calculateReferrerFee (
0 commit comments