@@ -29,18 +29,26 @@ const ERROR_NO_CALL = 'Your node does not expose the contracts.call RPC. This is
2929
3030const l = logger ( 'Contract' ) ;
3131
32- function createQuery < ApiType extends ApiTypes > ( fn : ( origin : string | AccountId | Uint8Array , options : ContractOptions , params : unknown [ ] ) => ContractCallResult < ApiType , ContractCallOutcome > ) : ContractQuery < ApiType > {
33- return ( origin : string | AccountId | Uint8Array , options : bigint | string | number | BN | ContractOptions , ...params : unknown [ ] ) : ContractCallResult < ApiType , ContractCallOutcome > =>
32+ function withMeta < T extends { meta : AbiMessage } > ( meta : AbiMessage , creator : Omit < T , 'meta' > ) : T {
33+ ( creator as T ) . meta = meta ;
34+
35+ return creator as T ;
36+ }
37+
38+ function createQuery < ApiType extends ApiTypes > ( meta : AbiMessage , fn : ( origin : string | AccountId | Uint8Array , options : ContractOptions , params : unknown [ ] ) => ContractCallResult < ApiType , ContractCallOutcome > ) : ContractQuery < ApiType > {
39+ return withMeta ( meta , ( origin : string | AccountId | Uint8Array , options : bigint | string | number | BN | ContractOptions , ...params : unknown [ ] ) : ContractCallResult < ApiType , ContractCallOutcome > =>
3440 isOptions ( options )
3541 ? fn ( origin , options , params )
36- : fn ( origin , ...extractOptions < ContractOptions > ( options , params ) ) ;
42+ : fn ( origin , ...extractOptions < ContractOptions > ( options , params ) )
43+ ) ;
3744}
3845
39- function createTx < ApiType extends ApiTypes > ( fn : ( options : ContractOptions , params : unknown [ ] ) => SubmittableExtrinsic < ApiType > ) : ContractTx < ApiType > {
40- return ( options : bigint | string | number | BN | ContractOptions , ...params : unknown [ ] ) : SubmittableExtrinsic < ApiType > =>
46+ function createTx < ApiType extends ApiTypes > ( meta : AbiMessage , fn : ( options : ContractOptions , params : unknown [ ] ) => SubmittableExtrinsic < ApiType > ) : ContractTx < ApiType > {
47+ return withMeta ( meta , ( options : bigint | string | number | BN | ContractOptions , ...params : unknown [ ] ) : SubmittableExtrinsic < ApiType > =>
4148 isOptions ( options )
4249 ? fn ( options , params )
43- : fn ( ...extractOptions < ContractOptions > ( options , params ) ) ;
50+ : fn ( ...extractOptions < ContractOptions > ( options , params ) )
51+ ) ;
4452}
4553
4654export class ContractSubmittableResult extends SubmittableResult {
@@ -70,11 +78,11 @@ export class Contract<ApiType extends ApiTypes> extends Base<ApiType> {
7078
7179 this . abi . messages . forEach ( ( m ) : void => {
7280 if ( isUndefined ( this . #tx[ m . method ] ) ) {
73- this . #tx[ m . method ] = createTx ( ( o , p ) => this . #exec( m , o , p ) ) ;
81+ this . #tx[ m . method ] = createTx ( m , ( o , p ) => this . #exec( m , o , p ) ) ;
7482 }
7583
7684 if ( isUndefined ( this . #query[ m . method ] ) ) {
77- this . #query[ m . method ] = createQuery ( ( f , o , p ) => this . #read( m , o , p ) . send ( f ) ) ;
85+ this . #query[ m . method ] = createQuery ( m , ( f , o , p ) => this . #read( m , o , p ) . send ( f ) ) ;
7886 }
7987 } ) ;
8088 }
0 commit comments