declare enum Network {
    MAINNET = "mainnet",
    TESTNET = "testnet",
    ETH = "eth",
    BSC = "bsc"
}
type IInitData = {
    colorMode?: 'light' | 'dark';
    network: Network | string;
    fullnode?: string;
    indexer?: string;
    walletUrl?: string;
    prover?: string;
    callbackWalletName?: string;
    miniprogram?: Boolean;
    windowWidth?: number;
};
type ChainData = {
    targetNet: 'endless' | 'eds' | 'eth' | 'bsc';
};
declare enum UserResponseStatus {
    APPROVED = "Approved",
    REJECTED = "Rejected"
}
interface UserApproval<TResponseArgs> {
    status: UserResponseStatus.APPROVED;
    args: TResponseArgs;
}
interface UserRejection {
    status: UserResponseStatus.REJECTED;
    message?: string;
}
type UserResponse<TResponseArgs> = UserApproval<TResponseArgs> | UserRejection;
interface AccountInfo {
    account: string;
    address: string;
    authKey: string;
    ansName?: string;
}
interface NetworkInfo {
    name: Network | string;
    chainId: number;
    url?: string;
}
type EndlessSignMessageInput = {
    address?: boolean;
    application?: boolean;
    chainId?: boolean;
    message: string;
    nonce: string;
};
type EndlessSignMessageOutput = {
    address?: string;
    application?: string;
    chainId?: number;
    fullMessage: string;
    publicKey: string;
    message: string;
    nonce: string;
    prefix: 'Endless::Message';
    signature: string;
};
type AnyNumber = number | bigint;
type InputGenerateTransactionOptions = {
    maxGasAmount?: number;
    gasUnitPrice?: number;
    expireTimestamp?: number;
    accountSequenceNumber?: AnyNumber;
};
type MoveStructId = `${string}::${string}::${string}`;
type MoveFunctionId = MoveStructId;
type InputEntryFunctionData = {
    function: MoveFunctionId;
    typeArguments?: Array<string>;
    functionArguments: Array<string>;
    abi?: any;
    paymentChecksum?: string;
};
interface EndlessSignAndSubmitTransactionInput {
    payload: InputEntryFunctionData;
    options?: InputGenerateTransactionOptions;
}
declare enum EndlessSendTransactionType {
    SIGNATURE_ONLY = "signatureOnly",
    SIGN_AND_SUBMIT = "signAndSubmit"
}
declare enum EndlessWalletTransactionType {
    SIMPLE = "simple",
    MULTI_AGENT = "multiAgent"
}
declare global {
    interface Window {
        webkit: any;
        WeixinJSBridge: {
            invoke(api: string, data: any, callback: (res: any) => void): void;
            on(api: string, callback: (res: any) => void): void;
        };
        endlessWallet?: {
            sendResponse: (response: any) => void;
        };
        _endlessWallet?: {
            sendMessage: (data: any) => void;
        };
    }
}

export { type AccountInfo, type AnyNumber, type ChainData, EndlessSendTransactionType, type EndlessSignAndSubmitTransactionInput, type EndlessSignMessageInput, type EndlessSignMessageOutput, EndlessWalletTransactionType, type IInitData, type InputGenerateTransactionOptions, Network, type NetworkInfo, type UserApproval, type UserRejection, type UserResponse, UserResponseStatus };
