import { ChatRequestOptions } from '@aigxion/isdk'
export const functionSchemas: ChatRequestOptions['functions'] = [
  {
    name: 'deploy_contract',
    description: 'Deploy a smart contract',
    parameters: {
      type: 'object',
      description: `This function deploys a smart contract to an EVM compatible chain.  It returns the tx hash of the deployment and an IPFS url to a directory of files used for the contract.  Only call this function in a separate chat message do not call it from a message with other text.  Share the explorer url and ipfs url with the user.`,
      properties: {
        contractName: {
          type: 'string'
        },
        chainId: {
          type: 'string',
          description: `Do not use this parameter unless the user specificaly specifies a chain or chainID.
          Supported chainIds:
          5: goerli,
          84532: base sepolia,
          80001: mumbai,
          11155111: sepolia,
          5001: mantle goerli,
          `
        },
        sourceCode: {
          type: 'string',
          description:
            'Source code of the smart contract. Format as a single-line string, with all line breaks and quotes escaped to be valid stringified JSON.'
        },
        constructorArgs: {
          type: 'array',
          items: {
            oneOf: [
              {
                type: 'string'
              },
              {
                type: 'array',
                items: {
                  type: 'string'
                }
              }
            ]
          },
          description:
            "Array of arguments for the contract's constructor. Each Array item a string or an array of strings.  Empty array if the constructor has no arguments."
        }
      },
      required: ['contractName', 'sourceCode', 'constructorArgs']
    }
  },
  {
    name: 'text_to_image',
    description: `This function generates an image from text.  Only call this function in a separate chat message do not call it from a message with other text.  Show the image to the user using the default IPFS gateway ipfs.io/ipfs/{CID} in markdown.  Use the metadata as the baseTokenURI if creating an NFT.`,
    parameters: {
      type: 'object',
      properties: {
        text: {
          type: 'string',
          description: 'Text to generate an image from.'
        }
      },
      required: ['text']
    }
  }
]
