import { HexString } from '@gear-js/api'; import { SignerOptions } from '@polkadot/api/types'; import { IKeyringPair } from '@polkadot/types/types'; import { QueryBuilder, TransactionBuilder } from 'sails-js'; type NonServiceKeys = 'api' | 'registry' | 'programId' | 'newCtorFromCode' | 'newCtorFromCodeId'; type ServiceName = Exclude; type FunctionName = { [K in keyof T]: T[K] extends (...args: any[]) => TReturn ? K : never; }[keyof T]; type GenericTransactionReturn = TransactionBuilder; type Transaction = T extends (...args: infer P) => GenericTransactionReturn ? (...args: P) => GenericTransactionReturn : never; type _TransactionReturn = ReturnType> extends GenericTransactionReturn ? R : never; type TransactionReturn = GenericTransactionReturn<_TransactionReturn>; type UseSendProgramTransactionParameters = { program: TProgram | undefined; serviceName: TServiceName; functionName: TFunctionName; }; type UsePrepareProgramTransactionParameters = UseSendProgramTransactionParameters; type CalculateGasParameters = { allowOtherPanics?: boolean; increaseGas?: number; }; type AccountParameters = { addressOrPair: string | IKeyringPair; signerOptions?: Partial; }; type SignAndSendOptions = { args: T; value?: bigint; voucherId?: HexString; gasLimit?: bigint | CalculateGasParameters; account?: AccountParameters; }; type SendTransactionParameters = { awaitFinalization?: boolean; }; type EventReturn = Promise<() => void>; type Event = T extends (...args: infer P) => EventReturn ? (...args: P) => EventReturn : never; type EventCallbackArgs = Parameters>[0] extends (...args: infer P) => void | Promise ? P : never; type GenericQueryReturn = QueryBuilder; type Query = T extends (...args: infer P) => GenericQueryReturn ? (...args: P) => GenericQueryReturn : never; type QueryArgs = Parameters>; type QueryReturn = Query extends (...args: any[]) => GenericQueryReturn ? R : never; export type { ServiceName, FunctionName, GenericTransactionReturn, Transaction, TransactionReturn, UseSendProgramTransactionParameters, UsePrepareProgramTransactionParameters, SignAndSendOptions, SendTransactionParameters, EventReturn, Event, EventCallbackArgs, GenericQueryReturn, Query, QueryArgs, QueryReturn, };